Linux. Настраиваем Nextcloud

Ранее устанавливал 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+.

Комментарии 2

  • Андрей 07.09.2019 в 19:28 Cсылка

    У меня на сервере крутится nas4free, и через плагин OneButtonInstaller установлен Nextcloud. Nas4free я устанавливал с тем учетом, чтобы объединить все 4 диска в рейд массив ZFS. На то время это было единственное решение, что я нашел с надежной и быстрой файловой системой. Всеми остальными функциями nas4free я по истечению времени так и не воспользовался. У меня вопрос. Имеет ли смысл сносить nas4free и устанавливать linux и накатывать NExtcloud для более стабильной работы / съедания меньшего количества ресурсов / расширения функционала? Или оставить nas4free, так как разницу я не замечу? Сервер крутится круглые сутки. Так же в nas4free можно посмотреть состояние бесперебойника.

    • Guesto 22.12.2019 в 15:31 Cсылка

      Андрей, тут все очень индивидуально. Рекомендаций дать, наверное не могу.

      Про nas4free только читал. Для себя выбрал полнеценный сервер, ибо нужен был не только NAS.
      Про ZFS так же только читал, для себя использовать не стал. Поговаривают, что к ZFS есть вопросы по производительности на слабых железяках, и по скорости исчерпания ресурса SSD.

      По файловой системе использую ext4, по дискам SSD + 4 HDD в корзине, но они не объединены в RAID или LVM. Примерно описывал в статье Linux. Монтирование дисков

  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *