Ранее устанавливал Nextcloud, но если зайти в Настройки — Обзор, то можно увидеть предупреждения безопасности и производительности. Настраиваем Nextcloud.
Задача
На развернутой Ubuntu Server 18.04.1 выполнена установка Nextcloud, необходимо выполнить настройку, устранив предупреждения безопасности и производительности.
Решение
У каждого набор предупреждений может быть разным, буду разбирать имеющиеся на моем сервере. Как и в статье по установке Nextcloud, в тексте по возможности буду оставлять ссылки на соответствующие разделы документации. Полный текст сообщений приводить не буду, ибо они разнятся между версиями, вместо этого буду указывать ключевые слова.
Так же в документации есть раздел оптимизации работы Nextcloud, заодно воспользуемся некоторыми из этих советов.
Для экономии текста, в статье не буду каждый раз указывать необходимость перезагрузки Apache и PHP, ориентируйтесь по тексту.
HTTP Strict-Transport-Security
HTTP Strict-Transport-Security (HSTS) механизм, принудительно активирующий защищённое соединение через протокол HTTPS. Что в свою очередь позволяет снизить возможность атаки Человек посередине (MITM).
Раздел инструкции The “Strict-Transport-Security” HTTP header is not configured. Открываем файл .htaccess
# nano /var/www/nextcloud/.htaccess
В раздел виртуального порта на 443 порту добавляем блок
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule>
Описание виртуально порта стало таким
<VirtualHost *:443> ServerName cloud.nextcloud.com <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule> </VirtualHost>
HTTP Referrer-Policy
HTTP заголовок Referrer-Policy. При указании значения no-referrer, при переходе по ссылке с сайта никакая информация не отправляется вместе с запросами.
Согласно разделу Serve security related headers by the Web server добавим и другие рекомендуемые HTTP заголовки.
Для работы потребуются модули mod_headers и mod_env, но они уже были установлены вместе с Nextcloud.
# nano /var/www/nextcloud/.htaccess
И в существующий раздел модуля mod_headers добавить HTTP заголовки, до получения следующего:
<IfModule mod_headers.c> <IfModule mod_env.c> # Add security and privacy related headers Header set X-Content-Type-Options "nosniff" Header set X-XSS-Protection "1; mode=block" Header set X-Robots-Tag "none" Header set X-Download-Options "noopen" Header set X-Permitted-Cross-Domain-Policies "none" Header set Referrer-Policy "no-referrer" SetEnv modHeadersAvailable true </IfModule> </IfModule>
APCu
Согласно разделу документации Configuring memory caching необходимо настроить кэширование. Для личного использования достаточно настроить APCu.
# apt-get install php-apcu # phpenmod apcu
Теперь необходимо поправить конфигурационный файл Nextcloud
# nano /var/www/nextcloud/config/config.php
добавив строку
'memcache.local' => '\OC\Memcache\APCu',
И поправить конфигурационный файл самого APCu
# nano /etc/php/7.2/mods-available/apcu.ini
добавив строку
apc.enable_cli = 1
PHP-FPM
Установка PHP-FPM опциональна и данную настройку можно игнорировать, но я установил
# apt-get install php7.2-fpm
Согласно разделу документации Tune PHP-FPM необходимо оптимизировать работу PHP-FPM, разрешив выполнять несколько запросов одним процессом.
Правим конфигурационный файл
# nano /etc/php/7.2/fpm/pool.d/www.conf
добавив строки
pm = dynamic pm.max_children = 120 pm.start_servers = 12 pm.min_spare_servers = 6 pm.max_spare_servers = 18
Запустим PHP-FPM
sudo service php7.2-fpm start
OPcache
Согласно разделу документации Enable PHP OPcache, можно ускорить работу PHP. Правим конфигурационный файл PHP
# nano /etc/php/7.2/apache2/php.ini
добавив строки
opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
Результат
После выполнения всех рекомендаций на станице Настройки — Обзор видна надпись Все проверки пройдены, а Nextcloud Security Scan показывает рейтинг A+.
У меня на сервере крутится nas4free, и через плагин OneButtonInstaller установлен Nextcloud. Nas4free я устанавливал с тем учетом, чтобы объединить все 4 диска в рейд массив ZFS. На то время это было единственное решение, что я нашел с надежной и быстрой файловой системой. Всеми остальными функциями nas4free я по истечению времени так и не воспользовался. У меня вопрос. Имеет ли смысл сносить nas4free и устанавливать linux и накатывать NExtcloud для более стабильной работы / съедания меньшего количества ресурсов / расширения функционала? Или оставить nas4free, так как разницу я не замечу? Сервер крутится круглые сутки. Так же в nas4free можно посмотреть состояние бесперебойника.
Андрей, тут все очень индивидуально. Рекомендаций дать, наверное не могу.
Про nas4free только читал. Для себя выбрал полнеценный сервер, ибо нужен был не только NAS.
Про ZFS так же только читал, для себя использовать не стал. Поговаривают, что к ZFS есть вопросы по производительности на слабых железяках, и по скорости исчерпания ресурса SSD.
По файловой системе использую ext4, по дискам SSD + 4 HDD в корзине, но они не объединены в RAID или LVM. Примерно описывал в статье Linux. Монтирование дисков