Первоначальная настройка NextCloud
Первоначальная настройка NextCloud
В этой краткой шпарагалке будет кратко задокументировано то, как выполняется типовая первоначальная настройка NextCloud.
Как посмотреть текущий общий статус системы NextCloud
Давайте сначала проверим текущий статус системы после того, как была выполнена установка системы NextCloud.
Для этого необходимо перейти на страницу администрирования в раздел “Overview”:
http://files.itproblog.ru/index.php/settings/admin/overview

Как видно из скриншота выше в рассматриваемом экземпляре есть ряд ошибок и информационных сообщений с рекомендациями по их устранению.
Первоначальная настройка NextCloud
Пройдемся по порядку для каждого из замечаний мастера анализатора работоспособности.
Корректировки параметров PHP
Сначала скорректируем параметры PHP.
Для ошибки “The PHP memory limit is below the recommended value of 512MB.” необходимо отредактировать файл php.ini:
sudo nano /etc/php/8.1/apache2/php.ini
Нужно скорректировать вот этот параметр:
memory_limit = 1G

И перезапустим службу apache:
systemctl restart apache2
Чтобы исправить сообщение “Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it.” установим необходимые модули:
sudo apt install -y php-imagick imagemagick
Установка SSL сертификата и настройка доступа по HTTPS
Для того, чтобы подключение к серверу было надежно защищено загрузим на сервер SSL сертификат и сконфигурируем apache таким образом, чтобы он мог принимать только HTTPS подключения.
Создадим на сервере директория для хранения сертификатов:
sudo mkdir -p /etc/nextcloud/certs
sudo chown www-data:www-data /etc/nextcloud/certs/
sudo chmod 400 /etc/nextcloud/certs/
Скопируем сертификаты в эту директорию.

Включим нужные модули:
sudo a2enmod ssl
sudo systemctl restart apache2
Создадим конфигурационный файл для поддержки HTTPS:
sudo nano /etc/apache2/sites-available/nextcloud-ssl.conf
Содержимое файла:
<VirtualHost files.itproblog.ru:443>
DocumentRoot "/data/nextcloud"
ServerName files.itproblog.ru
SSLEngine on
SSLCertificateFile /etc/nextcloud/certs/itproblog.ru.crt
SSLCertificateKeyFile /etc/nextcloud/certs/itproblog.ru.key
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
<Directory /data/nextcloud/>
Require all granted
Options FollowSymlinks MultiViews
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
ErrorLog /var/log/apache2/files.itproblog.ru.error_log
CustomLog /var/log/apache2/files.itproblog.ru.access_log common
</VirtualHost>
Активируем сайт и перезапустим сервер apache:
sudo a2ensite nextcloud-ssl.conf
systemctl reload apache2
Дополнительно скорректируем файл публикации по HTTP таким образом, чтобы сервер всегда перенаправлял HTTP запросы на HTTPS:
sudo nano /etc/apache2/sites-available/nextcloud.conf
<VirtualHost files.itproblog.ru:80>
ServerName files.itproblog.ru
Redirect permanent / https://files.itproblog.ru/
</VirtualHost>

Перезапускать сервер apache не нужно – изменения должны примениться без перезапуска службы.
Настройка кеширующего сервера
Для повешения производительности анализатор работоспособности NextCloud также рекомендует установить наш кеширующий сервер – “The database is used for transactional file locking. To enhance performance, please configure memcache, if available.” и “No memory cache has been configured. To enhance performance, please configure a memcache, if available. “.
Вариантов есть аж целых три. В статье будет использоваться вариант с локальным сервером Redis. Сначала установим сервер Redis:
sudo apt install -y redis-server php-redis
Включим аутентификацию по сокету для сервера Redis:
sudo nano /etc/redis/redis.conf
Раскомментируйте строчки с unixsocket и unixsocketperm, а также скорректируйте параметр unixsocketperm:
unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770

Для того, чтобы у пользователя www-data были разрешения на файл сокета необходимо добавить его в соответствующую группу:
sudo usermod -a -G redis www-data
Далее нужно скорректировать параметры сервер NextCloud:
sudo nano /data/nextcloud/config/config.php
Добавим в конфигурационный файл следующие строки:
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' =>'\OC\Memcache\Redis' ,
'redis' => [
'host' => '/var/run/redis/redis-server.sock',
'port' => 0,
],

Сохраните внесенные изменения и заключительным шагом перезапустите сервер redis и apache:
sudo systemctl restart apache2
sudo systemctl restart redis-server
Настройка региона
Установим значение региона для телефона. Открываем конфигурационный файл:
sudo nano /data/nextcloud/config/config.php
Добавляем вот такую строчку:
'default_phone_region' => 'RU'

Доступные коды можно посмотреть вот тут.
Сохраняем внесенные изменения и перезапускаем службу apache:
sudo systemctl restart apache2
Настройка запуска заданий
Для корректной работы сервера NextCloud ему необходимо периодически выполнять фоновые задания. В статье будут использоваться задания cron.
Сначала в веб панели администрирования в настройках NextCloud укажем, что необходимо использовать cron для запуска фоновых заданий.

Затем необходимо настроить запуск задания. Файл с параметрами задания находится в корне директории сайта NextCloud:

Создадим задание для пользователя www-data:
crontab -u www-data -e
Добавьте следующую строчку в конфигурационный файл (только скорректируйте путь):
*/5 * * * * php -f /data/nextcloud/cron.php

Сохраните внесенные изменения. Проверьте правильность настройки задания можно следующей командой:
crontab -u www-data -l
Вывод должен быть следующий (с поправкой на расположений файла cron.php):
<...>
*/5 * * * * php -f /data/nextcloud/cron.php

Настройка pretty URLs
Говоря по простому pretty URL удаляет хвостик index.php в URL адресах, что немного сокращает их и делает более презентабельными.
Убедимся, что необходимые модули включены:
sudo a2enmod env
sudo a2enmod rewrite
Теперь отредактируем конфигурационный файл config.php:
sudo nano /data/nextcloud/config/config.php
Добавим следующие строчки:
'overwrite.cli.url' => 'https://files.itproblog.ru/',
'htaccess.RewriteBase' => '/',
Сохраняем внесенные изменения и запускаем утилиту occ для изменения конфигурации htaccess:
sudo -u www-data php /data/nextcloud/occ maintenance:update:htaccess

После внесения изменений URL не будет включать index.php. Например, вместо вот такого URL:
https://files.itproblog.ru/index.php/settings/admin/overview
Будет следующий:
https://files.itproblog.ru/settings/admin/overview