Чтобы начать полноценно использоваться облачный сервер nextcloud нужно его настроить, давайте разберем все предупреждения, которые выдал нам внутренний сканер.
Проверка безопасности и параметров nextcloud
Пройдемся по порядку по этим пунктам
- Доступ к сайту осуществляется с использованием небезопасного протокола HTTP
- Некоторые заголовки в вашем экземпляре установлены неправильно — Заголовок HTTP
- Разрешённое максимальное значение использования памяти php
- Не настроено время начала окна обслуживания
- One or more mimetype migrations are available
- Обнаружено отсутствие некоторых отсутствующих индексов
- Не настроен механзм кеширования. Для повышения производительности рекомендуется настроить memcache
- Для хранения записей о транзакционном блокировании файлов сейчас используется база данных. Для повышения производительности рекомендуется настроить memcache
- Модуль PHP OPcache настроен неправильно. Буфер встроенных строк OPcache почти заполнен
- На этом сервере не установлены некоторые рекомендуемые модули PHP
- В вашей установке не установлен телефонный регион по умолчанию
- Журнал содержит 25 записей об произошедших ошибках начиная
Перевести сайт на работу по HTTPS
Доступ к сайту осуществляется с использованием небезопасного протокола HTTP. Настоятельно рекомендуется вместо этого настроить использование протокола HTTPS, т.к. без него не будут работать некоторые важные веб-функции, такие, как копирование в буфер обмена и обработчики служб. За дополнительными сведениями обратитесь к документации ↗
Установка бесплатных ssl сертификатов от Let’s Encrypt — в этой статье
Установка модуля SSL для Apache
sudo a2enmod ssl
Создадим файл конфигурации для https
sudo mcedit /etc/apache2/sites-available/nc-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost 192.168.1.90:443>
ServerAdmin vadim@wadis.ru
ServerName cloud.wadis.ru
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
DocumentRoot /var/www/nextcloud
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/nextcloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/wadis.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/wadis.ru/privkey.pem
</VirtualHost>
</IfModule>
Включить HTTP Strict Transport Security
Некоторые заголовки в вашем экземпляре установлены неправильно — Заголовок HTTP «Strict-Transport-Security» не установлен (должен быть настроен как минимум на `15552000` секунд. Для улучшения безопасности рекомендуется включить HSTS. За дополнительными сведениями обратитесь к документации ↗.
Для этого в наш конфигурационный файл ns-ssl.conf добавим следующую строку
mcedit /etc/apache2/sites-enabled/nc-ssl.conf
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
Установим модуль headers
Увеличить размера php.ini
Разрешённое максимальное значение использования памяти php
cd /etc/php/8.2/apache2/
mcedit php.ini
memory_limit = 512M
service apache2 reload
Настройка планировщика для выбора времени обслуживания
Не настроено время начала окна обслуживания. Это означает, что ресурсоемкие ежедневные фоновые задачи будут выполняться во время основного использования. Рекомендуется установить время в период низкой активности, чтобы снизить влияние выполнения ресурсоемких процедур на пользователей. За дополнительными сведениями обратитесь к документации ↗.
cd /var/www/nextcloud/
sudo -u www-data /usr/bin/php occ config:system:set maintenance_window_start —type=integer —value=1
crontab -u www-data -e
*/5 * * * * php -f /var/www/nextcloud/cron.php
You can verify if the cron job has been added and scheduled by executing:
Обработка различных типов файлов
One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command occ maintenance:repair --include-expensive
to perform the migrations.
MIME типы — это основа веб-разработки, позволяющая определить, как веб-серверы и браузеры должны обрабатывать различные типы файлов
cd /var/www/nextcloud/
sudo -u www-data /usr/bin/php occ maintenance:repair —include-expensive
Создание индексов для ускорения запросов к таблицам
Обнаружено отсутствие некоторых отсутствующих индексов. При разработке Nextcloud или приложений для увеличения производительности,
разработчики добавляют новые индексы в базы данных. Новые индексы не создаются автоматически, так как создание индексов может занять продолжительное время, и в это время производительность системы будет снижена. После того как индексы созданы, запросы к таблицам будут выполняться быстрее.
sudo -u www-data /usr/bin/php occ db:add-missing-indices
Настройка memcache для Nextcloud
Не настроен механизм кеширования. Для увеличения производительности сервера, по возможности, настройте memcache
Установим memcached
apt install php-memcached memcached
Проверим запустился ли сервис
ps ax | grep memcached
Для проверки работы memcach создадим файл memcache_test.php
<?php
$mem = new Memcached();
$mem->addServer("127.0.0.1", 11211);
$result = $mem->get("key_name");
if ($result) {
echo $result;
} else {
echo "No key found. Adding key to cache.";
$mem->set("key_name", "Key_name's value from memcached!") or die ("Couldn't save anything to memcached...");
}
?>
<?php
$mem = new Memcached();
$mem->addServer("127.0.0.1", 11211);
$result = $mem->get("key_name");
if ($result) {
echo $result;
} else {
echo "No key found. Adding key to cache.";
$mem->set("key_name", "Key_name's value from memcached!") or die ("Couldn't save anything to memcached...");
}
?>
php memcache_test.php
Запустим проверку, в первый раз будет ошибка, а на второй раз все ок.
Теперь изменим config.php
mcedit /var/www/nextcloud/config/config.php
'memcache.local' => '\OC\Memcache\Memcached',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => [
[ '127.0.0.1', 11211 ],
],
Добавим распределенное кэширования redis
Для хранения записей о транзакционном блокировании файлов сейчас используется база данных. Для повышения производительности рекомендуется настроить memcache. За дополнительными сведениями обратитесь к документации ↗.
Memcached — надежный старожил для общего кэширования на распределенных серверах, который хорошо работает с Nextcloud, за одним исключением: его не следует использовать с транзакционной блокировкой файлов , поскольку он не сохраняет блокировки, а данные могут исчезнуть из кэша в любой момент (лучшим memcache для этого является Redis).
Установим redis
apt install redis-server php-redis
Проверяем, что он запустился
Поправим конфигурацию
mcedit /var/www/nextcloud/config/config.php
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
),
Модуль PHP OPcache настроен неправильно
Модуль PHP OPcache настроен неправильно. Буфер встроенных строк OPcache почти заполнен. Чтобы гарантировать эффективное кэширование повторяющихся строк, рекомендуется применить «opcache.interned_strings_buffer» к вашей конфигурации PHP со значением выше, чем «8».. За дополнительными сведениями обратитесь к документации ↗.
Для этого правим php.ini
mcedit /etc/php/8.2/apache2/php.ini
service apache2 reload
Установка дополнительных рекомендуемых модулей PHP
На этом сервере не установлены некоторые рекомендуемые модули PHP. Для улучшения производительности и совместимости рекомендуется установить следующие модули: — bcmath для входа без использования пароля по протоколу WebAuthn — gmp для входа в систему без пароля WebAuthn и хранения данных по протоколу SFTP За дополнительными сведениями обратитесь к документации ↗.
Проверим есть ли такие модули: bcmath, gmp, magick imagemagick
php -m | grep -i bcmath
php -m | grep -i gmp
php-m | grep -i php-imagick
apt install php-imagick imagemagick
С модулями закончили, переходим дальше.
Установить телефонный регион по умолчанию
В вашей установке не установлен телефонный регион по умолчанию. Это необходимо для проверки телефонных номеров в настройках профиля без указания кода страны. Чтобы разрешить использование номеров без кода страны, пожалуйста, добавьте «default_phone_region» с соответствующим кодом региона ISO 3166-1 в свой конфигурационный файл. За дополнительными сведениями обратитесь к документации ↗.
Для исправления этой ошибки снова обратимся к нашему конфигурационному файлу config.php и добавим следующую строку:
‘default_phone_region’ => ‘RU’,
Журнал ошибок Nextcloud
Журнал содержит 25 записей об произошедших ошибках начиная с 27 декабря 2024 г., 18:06:11
И на последок удалить записи журнала ошибок, которые успели накопиться с момента установки сервера
cat /dev/null > nextcloud.log
Проверим сканер ошибок
Все, мы большие молодцы, можно приступить к полноценному использованию нашего облака!