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

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

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

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

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

  • Начнём с создания базы данных для будущего облачного хранилища. Я создам базу данных baza, и пользователя admin, с паролем 123.

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

Создание конфигурации для OwnCloud и Nextcloud в 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.3-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;
 } 
}

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

  • Для правильной работы OwnCloud и Nextcloud, нужно произвести некоторые изменения в конфигурации PHP-FPM. Находим файл /etc/php/7.3/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 
  •  Для правильной работы OwnCloud и Nextcloud, требуются некоторые модули php. В статье об установке LEMP, мы произвели установку почти все из них.
  • Не установленным, но необходимым для OwnCloud и Nextcloud, остался модуль intl. Производим его установку.
# apt install php-intl
  • Перезапускаем Nginx и PHP-FPM, чтобы применились внесённые нами изменения.
# systemctl restart php7.3-fpm
# systemctl restart nginx

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

  • Для большей безопасности, создаём отдельный каталог для данных, вне корневой директории веб-приложения. И задаём нужные права.
# mkdir -p /data
# chown www-data:www-data /data

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

  • Ссылка для скачивания последней версии OwnCloud:

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

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

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

  • Можно скачать архив с нужным веб-приложением сначала на компьютер, потом извлечь файлы, и загрузить их в корневую директорию. Либо произвести скачивание архива при помощи утилиты wget, и извлечь файлы в корневую директорию, прямо на сервере.
  • В моём случае корневая директория, это /var/www/test.ru/site/.
  • После добавления файлов, задаём нужные права:
# 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/

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

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

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

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

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

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


Видео на тему "OwnCloud и Nextcloud в Debian 10":