Установка Nextcloud 15 (Debian/Ubuntu/NGINX) на свой сервер + приятный бонус

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

Исходные данные:

  1. У вас уже есть где развернуть сервер, если нет, самое время арендовать.
  2. Установленный дистрибутив Debian 9.x 64Bit / Ubuntu 18.04 TLS 64Bit
  3. Проброшенные на этот сервер порты 80 и 443
  4. Сеть в приведенном примере 192.168.0.0/24
  5. Домен в приведенном примере mydomain.com

Процесс:

Первым делом

Так, как мне удобнее пользоваться mcedit, ставим MC, везде, где требуется править конфиг, я буду использовать mcedit, если вы предпочитаете что-то другое, не забудьте поменять mcedit на предпочитаемый редактор

Устанавливаем NGINX

Debian

Ubuntu

Debian/Ubuntu

Если позже потребуется обновить NGINX, достаточно выполнить следующее:

Настройка конфигурации NGINX

сохраняем резервную копию стандартного конфига NGINX и создаем новый пустой конфиг:

Вставляем в конфиг следующее содержимое, не забыв изменить сеть на свою, если требуется и сохраняем новый конфиг:

set_real_ip_from 192.168.0.0/24;

Перезапускаем NGINX:

Создаем нужные папки и применяем права:

 

Устанавливаем PHP

Debian

Ubuntu

На этом установка PHP 7.2 закончена, остается проверить системное время:

и если вы видите не то, что ожидали, исправить это, установив нужный часовой пояс, в моем случае это Новосибирск:

Настойка конфигурации PHP:

Debian/Ubuntu

 

Изменяем /etc/fstab

Проверяем uid пользователя  www-data

если вы видите что-то. отличное от uid=33(www-data), в следующих строках меняем uid=33 на свое и выполняем их в терминале:

Дополнительно:

Подключаем tmpfs и перезапускаем PHP и NGINX:

 

Устанавливаем MariaDB

Проверяем версию DB сервера:

Должно быть что-то такое: 10.3.10-MariaDB или выше

Настраиваем MariaDB:

Enter current password for root (enter for none): <ENTER> or type the password

Set root password? [Y/n] Y

Если пароль был установлен во время установки MariaDB, то будет предложено изменить его, далее последует ряд вопросов, на которые требуется ответить утвердительно (Y):

Remove anonymous users? [Y/n] Y

Disallow root login remotely? [Y/n] Y

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y

Настройка конфигурации MariaDB:

сохраняем резервную копию стандартного конфига MariaDB и создаем новый пустой конфиг:

Вставляем в пустой конфиг следующее содержимое:

Debian

Перезапускаем и подключаем MariaDB:

Ubuntu

Перезапускаем MariaDB:

Debian/Ubuntu

Создаем базу данных и пользователя БД:

БД: nextcloud

Пользователь: nextcloud@localhost

Пароль: nextcloud

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER nextcloud@localhost identified by 'nextcloud'; GRANT ALL PRIVILEGES on nextcloud.* to nextcloud@localhost; FLUSH privileges; quit;

Проверяем уровень изоляции транзакций, должен быть READ_Commit и кодировку UTF8MB4

должны получить следующий результат:

Если у вас результат соответствует ожидаемому, с настройкой MariaDB закончили.

 

Устанавливаем Redis

Изменяем конфиг и членство в группах:

Перезагружаем сервер!

или

 

После перезагрузки приступаем к настройке и установке Nextcloud

Nextcloud

Cохраняем резервную копию стандартного конфига и создаем новый nextcloud.conf:

Debian

Ubuntu

Debian/Ubuntu

ОБЯЗАТЕЛЬНО меняем mydomain.com на свой домен

Если требуется функционал социальной сети (появился в Nextcloud 15), нужно раскомментировать строки после #SOCIAL app enabled? Please uncomment the following three rows

Если планируется запускать Nextcloud как раздел сайта (подкаталог) mydomain.com/nextcloud, используйте этот вариант nextcloud.conf:

Не забывайте заменить mydomain.com на свой домен

На этом подготовка конфига закончена, переходим к letsencrypt

КОНФИГИ

Создаем конфиг letsencrypt.conf:

и вставляем в него следующее содержимое:

Создаем конфиг ssl.conf:

и вставляем следующее содержимое, не забыв поменять домен mydomain.com на свой:

Создаем конфиг header.conf:

и вставляем следующее содержимое:

Создаем конфиг optimization.conf:

и вставляем следующее содержимое:

Создаем конфиг php_optimization.conf:

и вставляем следующее содержимое:

Повышаем безопасность:

процесс не быстрый, поэтому наберитесь терпения и дождитесь окончания процесса генерации, после завершения процесса, перезапустите NGINX

 

Загрузка, распаковка и установка прав для каталогов Nextcloud

 

Запрос SSL сертификата

не забываем поменять домен mydomain.com на свой:

 

Применяем разрешения с помощью скрипта permissions.sh

Создаем скрипт permissions.sh:

и вставляем следующее содержимое, не забыв поменять домен mydomain.com на свой:

даем скрипту права на запуск и запускаем:

Вносим изменения в ssl.conf и в очередной раз перезапускаем NGINX:

ВНИМАНИЕ! Если сервис NGINX не перезапустился и вывалился с ошибкой, значит в предыдущих шагах, при настройке конфигов, вы сделали что-то не так и сейчас вам придется вернуться к их настройке.

Создаем запись в CRON для автоматического переиздания вашего SSL сертификата:

Создаем скрипт renewal.sh:

и вставляем следующее содержимое:

Даем права на запуск скрипта и добавляем в CRON:

вставляем строку. выделенную красным:

 

Установка Nextcloud в фоновом режиме с предустановленными параметрами

–database-user “nextcloud” :  Данный пользователь был указан ранее, при создании БД

–database-pass “nextcloud” : Данный пароль был указан ранее, при создании БД

–admin-user “YourNextcloudAdmin” :  Измените имя пользователя на свое, данный пользователь будет администратором вашего облака Nextcloud

–admin-pass “YourNextcloudAdminPasssword” :  установите свой пароль для администратора

 

Debian

Не забываем про mydomain.com

Отредактируем .user.ini

Настроим Nextcloud Apps:

Ubuntu

Отредактируем .user.ini

Настроим Nextcloud Apps:

 

На этом установка и настройка Nextcloud завершена, можно открыть браузер и перейти по адресу https://mydomain.com

Для Ubuntu

Если проверка целостности в Nextcloud не удалась, попробуйте изменить config.php

и установить:

перезапустите все службы:

Перезапустите проверку целостности и установите значение обратно в «false»:

и опять перезапустите все службы:

проблема должна решиться

 

 

ОПТИМИЗАЦИЯ

 

Debian

Ubuntu

 

Debian/Ubuntu

создаем скрипт optimize.sh:

и вставляем следующее содержимое:

сохраняем и даем права на запуск:

запускаем:

Добавляем в CRON задачи для www-data и root:

www-data:

и вставляем следующее:

root:

и вставляем следующее:

 

Переключаем Nextcloud на использование cron:

Debian

Перезапускаем все сервисы:

Ubuntu

на этом оптимизация завершена, можно пользоваться

 

Не забываем, что теперь на сервер может кто угодно постучаться. Если это друг, то ничего страшного, а если это вредитель, то защита не помешает. Поэтому ей и займемся в качестве завершающего этапа настройки

 

fail2ban

создаем конфиг для правил фильтрации

и вставляем следующее содержимое:

создаем fail2ban jail для Nextcloud

и вставляем следующее содержимое:

перезапускаем fail2ban

 

UFW

 

Spamhaus Project и UFW

Создаем скрипт

вставляем в него следующее содержимое:

даем права на запуск:

и добавляем задачу в cron:

запускаем скрипт:

скрипт будет некоторое время работать, добавляя правила для UFW

 

 

Ну и теперь самое интересное, приятный бонус, обещанный в заголовке!

Отправим наше облако на проверку безопасности параметров настройки

проверка SSL:

https://www.ssllabs.com/ssltest/analyze.html?d=https://mydomain.com

проверка службами Nextcloud:

https://scan.nextcloud.com

Проверка службами Mozilla:

https://observatory.mozilla.org/analyze/mydomain.com

Если вы все сделали правильно, оценка безопасности будет A+, что означает высшую оценку безопасности вашего сервера!

 

Вячеслав Ш.