Приветствую Вас, уважаемые читатели. Сегодня статья на тему: "OwnCloud и Nextcloud в Ubuntu 20.04". Рассмотрим установку облачных хранилищ OwnCloud и Nextcloud в операционной системе Ubuntu 20.04.

OwnCloud и Nextcloud – это бесплатное программное обеспечение для организации общего доступа и обмена файлами, с возможностью расширения функционала с помощью дополнительных модулей.

Для работы обоих веб-приложений требуется веб-окружение LEMP. Установку и настройку LEMP, мы рассматривали в предыдущей статье, поэтому я не буду описывать всё снова. Как и в статье по установке LEMP, я буду использовать доменное имя test.ru. Конфигурация для обоих хранилищ будет одинаковой, с той лишь разницей, что на выходе Вы получите либо одно, либо другое веб-приложение.

  • Будем отталкиваться от того, что у нас уже есть в наличии:
  1. Директории для работы сайта.
  2. Веб-сервер Nginx.
  3. Сервер баз данных MariaDB.
  4. PHP-FPM и некоторые модули (список модулей в статье о Lemp)
  5. Открыты 80 и 443 порты в системном Firewall.
  6. Установлен сертификат от Let’s Encrypt.
  7. Настроена ротация логов Nginx.

Создание базы данных для OwnCloud и Nextcloud в Ubuntu 20.04

  • Первое что нужно сделать, это создать базу данных для нашего будущего облака.

# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE cloud;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cloud.* TO 'admin'@'localhost' IDENTIFIED BY '123';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit;

  • Я создал базу данных cloud, с пользователем admin, и паролем 123.

Создание конфигурации для облака в Nginx

  • В директории /etc/nginx/sites-enabled/, создаём конфигурационный файл для нашего облачного хранилища, либо редактируем имеющийся. Назовём его по имени сайта, в моём случае это будет test.conf.

server {
     listen 80;
     server_name test.ru www.test.ru;
     index index.php index.html index.htm;
     access_log /var/www/test.ru/log/access.log;
     error_log /var/www/test.ru/log/error.log;
     root /var/www/test.ru/site/;
     return 301 https://$server_name$request_uri;

}

server {
     listen  443;
     server_name test.ru www.test.ru;
     index index.php index.html index.htm;
     access_log /var/www/test.ru/log/ssl-access.log;
     error_log /var/www/test.ru/log/ssl-error.log;
      root /var/www/test.ru/site/;
     ssl on;
     ssl_certificate /etc/letsencrypt/live/test.ru/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/test.ru/privkey.pem;
     ssl_protocols TLSv1.2;
     ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
     ssl_prefer_server_ciphers on;

     add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
     client_max_body_size 10G;
     fastcgi_buffers 64 4K;


     rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
     rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
     rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

     index index.php;
     error_page 403 = /core/templates/403.php;
     error_page 404 = /core/templates/404.php;

location = /robots.txt {
     allow all;
     log_not_found off;
     access_log off;
}

location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
      deny all;
        }

location / {
       rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
       rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
       rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
       rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
       rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
       try_files $uri $uri/ index.php;
        }

location ~ ^(.+?\.php)(/.*)?$ {
       try_files $1 = 404;
       include fastcgi_params;
       fastcgi_param SCRIPT_FILENAME $document_root$1;
       fastcgi_param PATH_INFO $2;
       fastcgi_param HTTPS on;
       fastcgi_pass  unix:/run/php/php7.4-fpm.sock;
}

location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
       expires modified +30d;
       access_log off;
}

 location = /favicon.ico {
     log_not_found off;
     access_log off;
 } 
}

  • В конфиге уже настроен доступ по HTTPS, и базовая конфигурация для работы облачных хранилищ.

Настройка PHP-FPM для OwnCloud и Nextcloud в Ubuntu 20.04

  • Находим конфигурационный файл /etc/php/7.4/fpm/pool.d/www.conf, и раскомментируем несколько строчек.
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp 
  • В статье об установке LEMP рассматривается установка всех необходимых модулей, за исключением одного. Это модуль intl, запускаем команду для установки модуля.
# apt install php-intl

Создание отдельной директории для данных

  • Создаём директорию для данных вне корневой директории хранилища, и задаём нужные права.
# mkdir -p /data
# chown www-data:www-data /data

Загрузка файлов OwnCloud и Nextcloud в Ubuntu 20.04

  • Скачать последнюю версию OwnCloud, можно по ссылке:

https://download.owncloud.org/download/community/owncloud-latest.zip

  • Для скачивания последней версии Nextcloud, нужно зайти в хранилище, и выбрать требуемый архив:

https://download.nextcloud.com/server/releases/

  • Загрузить файлы любого из хранилищ в коревую директорию, в моём случае это /var/www/test.ru/site/, можно двумя способами:
  1. Скачивание с помощью утилиты wget, и извлечение файлов в корневую директорию уже на сервере.
  2. Скачивание архива себе на компьютер, и загрузка в корневую директорию уже разархивированных файлов.
  • После добавления файлов в корневую директорию, нужно настроить требуемые разрешения.
# chown www-data:www-data -R /var/www/test.ru/site/
# chmod -R 0775 /var/www/test.ru/site/
# chown root:www-data /var/lib/php/sessions/
# chown -R www-data:www-data /var/lib/php/sessions/
  • Все настройки произведены, осталось только произвести перезагрузку Nginx и PHP-FPM, чтобы внесённые нами изменения были приняты службами.
# systemctl restart php7.4-fpm  
# systemctl restart nginx

 Установка frontend OwnCloud или Nextcloud

  • Теперь можно зайти на главную страницу Вашего сайта с помощью браузера.
  • Откроется страница инсталлятора выбранного Вами облака (поля для заполнения, идентичны у обоих приложений).
  • Вводим требуемую информацию:
  1. Учётная запись будущего администратора (логин и пароль)
  2. Указываем директорию с данными, которую мы создали для этих целей (/data)
  3. Данные подключения к базе данных, которую мы создали (пользователь, пароль, и название базы данных)
  4. Введя все требуемые данные, жмём на «Завершить установку».
установщик frontend OwnCloud
  • Через какое-то время, в зависимости от выбранного приложения, Вы попадёте либо на страницу авторизации OwnCloud…
форма авторизации frontend OwnCloud
  • Либо на страницу авторизации Nextcloud.
форма авторизации frontend Nextcloud

Если в процессе работы инсталлятора, откроется страница с ошибкой, то просто откройте новую вкладку браузера, и перейдите на главную страницу вновь. Это не проблема, просто скриптам не хватает времени на отработку.

  • Введя данные администратора, созданного на предыдущем шаге, Вы попадёте в панель управления Вашего облачного хранилища.

Сегодня мы рассмотрели тему: "OwnCloud и Nextcloud в Ubuntu 20.04". Подробно рассмотрели процесс установки веб-приложений OwnCloud и Nextcloud в операционной системе Ubuntu 20.04. Смотрите так же, видео по теме.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему "OwnCloud и Nextcloud в Ubuntu 20.04":