Установка Nextcloud на удаленный Ubuntu 20.04 сервер — Lowendseek

Установка Nextcloud на удаленный Ubuntu 20.04 сервер

AlexanderAlexander Админ
отредактировано 7 Jul Раздел: Инструкции

Нам потребуется сайт в любой доменной зоне и KVM сервер с правами рут, выделенным IP и характеристиками не ниже этих:
1 ядро, 512 МБ ОЗУ, 10 ГБ диск

Этих характеристик вполне достаточно для комфортной работы Nextcloud, особенно если вы ставите легковесную MariaDB, а не увесистую MySQL. Но диск всё же желательно иметь куда больше, ведь чем больше диск, тем больше данных вы сможете на нем хранить.

И так у нас есть 10 шагов к успеху, которые мы должны пройти:
1. Установка Nginx
2. Установка и настройка PHP-FPM
3. Установка и настройка MariaDB
4. Установка сертификата Let’s encrypt
5. Загрузка Nextcloud
6. Конфигурация Nginx под Nextcloud
7. Настройка файервола
8. Подключение базы данных
9. Небольшие корректировки сервера
10. Устранение ошибок

Шаг 1 - установка Nginx

Вбиваем в ваш терминал следующие команды (если вы не из под рута, то добавляем в начало каждой команды sudo)
apt update -y
apt full-upgrade -y
apt install nginx -y
После того как nginx установится, запускаем эти 2 команды, первая из которых запускает Nginx, а вторая добавляет его в автозагрузку:
systemctl start nginx
systemctl enable nginx
Лично в моем случае это не понадобилось, так как всё уже было автоматически включено и добавлено сразу после установки, но вам может быть и понадобится.

Смотрим статус nginx, работает или нет:
systemctl status nginx

Active - значит всё ок. Идём дальше.

Шаг 2 - установка и настройка PHP-FPM

apt install php-fpm php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-apcu php-common php-mbstring php-zip php-soap php-bz2 -y

После установки вышеперечисленных пакетов нам нужно будет кое-что подправить:
nano /etc/php/7.4/fpm/php.ini
Через CTR+W ищем строку и раскомментируем её (расскоментировать это перед строкой убрать либо ; либо #):
cgi.fix_pathinfo=
Приводим ее в такой вид:
cgi.fix_pathinfo=0
Сохраняем файлик с помощью CTR+O, подтверждаем ENTER и выходим CTR+X

Далее проделываем всё то же самое по адресу:
nano /etc/php/7.4/cli/php.ini
Сохраняем файлик с помощью CTR+O, подтверждаем ENTER и выходим CTR+X

Далее правим другой файлик:
nano /etc/php/7.4/fpm/pool.d/www.conf
Ищем через CTR+W строку env[HOSTNAME] =
Раскомментируем (убираем каждый ; перед началом нужной строки) 5 строк и приводим их в такой вид:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Сохраняем файлик с помощью CTR+O, подтверждаем ENTER и выходим CTR+X

Двумя командами перезапускаем и добавляем в автозагрузку PHP-FPM:
systemctl restart php7.4-fpm
systemctl enable php7.4-fpm

Шаг 3 - установка и настройка MariaDB

apt install mariadb-server -y

Запускаем mariadb и добавляем в автозагрузку:
systemctl start mariadb-server
systemctl enable mariadb-server

Проверяем работает ли MariaDB:

Настраиваем MariaDB:
mysql_secure_installation
После этой команды система начнет вам задавать вопросы, на которые отвечайте как представлено ниже:
Enter current password for root (enter for none): Нажимаем ENTER
Switch to unix_socket authentication [Y/n] N
Set root password? [Y/n] 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

Готово!

Создаем базу данных и пользователя:
mysql (если вы не от рута, то mysql -u root –p)
CREATE DATABASE nextcloud_db;
CREATE USER 'nextcloud_user'@'localhost' IDENTIFIED BY 'vashparol';
GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud_user'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Готово!

Шаг 4 - установка сертификата Let’s encrypt

Устанавливаем certbot:
apt install certbot -y
Останавливаем nginx:
systemctl stop nginx
Получаем сертификат для своего сайта:
certbot certonly --standalone -d yoursite.ru
Отвечаем на вопросы примерным образом:

По дефолту бот добавляет сертификаты по адресу:
/etc/letsencrypt/live/yoursite
Запускаем Nginx:
systemctl start nginx

Шаг 5 - загрузка Nextcloud

Вбиваем по очереди нижестоящие команды:
apt install wget unzip zip -y
cd /var/www/
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
rm -rf latest.zip
chown -R www-data:www-data /var/www/nextcloud

Шаг 6 - конфигурация Nginx под Nextcloud

nano /etc/nginx/sites-available/nextcloud.conf
Добавляем туда текст из файла, заменяя 2 name_server на свой домен, а 2 строки с ssl_certificate на редактируем под путь с названием вашего сайта:
https://justpaste.it/9dadk
Сохраняем CTR+O, выходим CTR+X
Добавляем:
ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/
Проверяем есть ли ошибки вот такой вот командой:
nginx -t
Если всё ок, то идём дальше и перезапускаем Nnginx и PHP-FPM:
systemctl restart nginx
systemctl restart php7.4-fpm

Шаг 7 - настройка файервола

for svc in ssh http https
do
ufw allow $svc
done
С этой командой осторожней, если ваш ssh не на дефолтном порту, то вас жду проблемы после включения ufw. Поэтому если ssh пор не дефолтный, то добавляем еще строку
ufw allow 521/tcp
Где 521 - порт вашего ssh
Посмотреть какой порт ssh у вас используется можно в sshd_config:
nano /etc/ssh/sshd_config
Затем включаем файрвол:
ufw enable
Смотрим как он работает:
ufw status numbered

Шаг 8 - подключение базы данных

Переходим на ваш сайт:
https://yoursite.ru
Перед нами должна предстать подобная картина:

Вводим свое желаемое имя или никнейм
Пароль
Data folder должна быть уже по умолчанию, но если ее нет, вбиваем как на картинке
Далее идут 4 строки
В первую вбиваем нашего пользователя базы, то есть nextcloud_user
Во вторую вбиваем пароль, в нашем случае - vashparol
В третью вбиваем названием нашей базы данных - nextcloud_db
А в четвертой строке по дефолту localhost, если нет, вбиваем localhost
Запускаем установку
Готово!

Шаг 9 - небольшие корректировки сервера

Настраиваем часовой пояс, где выбираем свой:
dpkg-reconfigure tzdata
Создаем swap, если его нет по дефолту. Если места много, создаем 1 ГБ подкачки, в нашем случае с 10 ГБ хватит не будем тратить и без того малый объем диска на большой swap, поэтому ограничимся 512 МБ:
fallocate -l 512M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
nano /etc/fstab
Добавляем сюда:
/swapfile swap swap sw 0 0
CTR+O сохраняем, CTR+X выходим
Проверяем запуская htop
htop
Готово!

Шаг 10 - устранение ошибок

Идем в Настройки --> Общие сведения
Ошибка №1. Разрешённое PHP максимальное значение использования памяти ниже рекомендуемого значения в 512 МБ
nano /etc/php/7.3/fpm/php.ini
Через CTR+W ищем memory_limit и приводим его к такому значению
memory_limit=512M
Тут же ищем upload_max_filesize, что как вы понимаете означает максимально разрешимое значения для загрузки на сервер. Выставляем его равным 5 ГБ:
upload_max_filesize = 5120M
Cохраняемся CTR+O и выходим CTR+X
Перезапускаем Nginx:
systemctl restart php7.4-fpm
Ошибка №2. Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «15552000» секунд. Для улучшения безопасности рекомендуется включить HSTS согласно нашим подсказкам по безопасности.
nano /etc/nginx/sites-available/nextcloud.conf
Где раскомментируем строку:
add_header Strict-Transport-Security «max-age=15768000; includeSubDomains; preload;»;
Затем перезапускаем Nginx:
systemctl restart nginx
Ошибка №3. Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информация доступна в документации.
nano /var/www/nextcloud/config/config.php
Добавляем вот эту строку перед );
'memcache.local' => '\OC\Memcache\APCu',
Перезагружаем сервер:
reboot
Наслаждаемся :wink:

P.S. На момент написания данной инструкции в работе по дефолту версия php 7.4. Впоследствие она может измениться и соответственно вам придется некоторые команды подработать под вашу версию php.

Войдите или Зарегистрируйтесь чтобы комментировать.