Установка NextCloud на CentOS 8/RHEL 8 с использованием Nginx (LEMP Stack)

В данном руководстве описывается процесс установки NextCloud на RHEL 8 или CentOS 8 с использованием веб-сервера Nginx.

Что представляет собой NextCloud?

NextCloud — это бесплатная платформа для облачного хранения с открытым исходным кодом, которую можно установить на собственном сервере. Она по функциям схожа с Dropbox. Проприетарные облачные решения, такие как Dropbox и Google Drive, предлагают удобство, но имеют свои недостатки: они могут собирать ваши личные данные, так как файлы хранятся на их серверах. Если вы озабочены вопросами конфиденциальности, стоит обратить внимание на NextCloud, который можно установить на ваш собственный домашний сервер или виртуальный частный сервер (VPS). С помощью NextCloud вы можете загружать файлы на сервер и синхронизировать их с настольным компьютером, ноутбуком или смартфоном, получая полный контроль над своими данными.

Характеристики NextCloud

  • Безвозмездно и с открытым кодом.
  • Шифрование от начала до конца подразумевает, что файлы шифруются на клиентском устройстве перед их загрузкой на сервер. Это обеспечивает защиту, поскольку даже в случае кражи сервера, злоумышленники не смогут получить доступ к вашим файлам.
  • Можно интегрировать с онлайн офисным пакетом (Collabora, OnlyOffice), что позволяет вам создавать и редактировать документы, файлы ppt и xls непосредственно из NextCloud.
  • В магазине приложений представлено множество программ, которые позволяют увеличить возможности устройства, включая приложения для управления календарем, создания заметок, видеозвонков и многое другое.
  • Клиенты для синхронизации можно установить на Linux, MacOS, Windows, а также на устройствах iOS и Android.

Начальные условия

NextCloud разработан с использованием языка программирования PHP. Для того чтобы следовать данному руководству, необходимо сначала установить стек LEMP на RHEL 8 или CentOS 8. Если вы этого ещё не сделали, пожалуйста, ознакомьтесь с инструкциями.
Установите Nextcloud на RHEL 8.

Для скачивания из командной строки можно воспользоваться инструментом wget. Ссылка для загрузки представлена в формате, указанном ниже. Если появится новая версия, просто обновите номер версии, заменив 14.0.4 на актуальный.

yum install wget wget https://download.nextcloud.com/server/releases/nextcloud-14.0.4.zip

После загрузки распакуйте архив с помощью команды unzip.

yum install unzip unzip nextcloud-14.0.4.zip - d /usr/share/nginx/

Параметр — d задает директорию назначения. Веб-файлы NextCloud будут распакованы в /usr/share/nginx/nextcloud/. После этого необходимо сменить владельца этой папки на nginx, чтобы веб-сервер Nginx имел возможность записывать в нее.

chown nginx:nginx /usr/share/nginx/nextcloud/ - R

Настройка базы данных и учетной записи пользователя в MariaDB

Подключитесь к серверу базы данных MariaDB, используя указанную команду. Для доступа потребуется ввести пароль root для MariaDB.

mysql - u root - p

После этого создайте базу данных для Nextcloud. В данном руководстве базу данных именуют nextcloud, но вы можете выбрать любое другое название по вашему усмотрению.

Читайте также:  Как установить сервер eJabberd XMPP на Ubuntu 15.10 и 14.04

CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Создайте нового пользователя для базы данных. Вы можете выбрать любое имя для этого пользователя. Вместо your-password укажите желаемый вами пароль.

CREATE USER nextclouduser@localhost УСТАНОВЛЕН ПАРОЛЬ 'your-password';

Выдайте этому пользователю полные права на базу данных nextcloud.

GRANT ALL PRIVILEGES ON nextcloudПожалуйста, предоставьте текст, который нужно перефразировать.nextclouduser@localhost;

Отмените свои привилегии и покиньте систему.

flush privileges; exit;

Настройка конфигурационного файла Nginx для Nextcloud

Сформируйте файл nextcloud.conf в папке /etc/nginx/conf.d/. В данном материале я применяю текстовый редактор Nano в командной строке.

nano /etc/nginx/conf.d/nextcloud.conf

Добавьте следующий текст в файл. Замените текст, выделенный красным, на ваши актуальные данные. В вашем DNS-менеджере создайте поддомен для сервера NextCloud, например nextcloud. your-domain.com, и убедитесь, что вы установили запись A для этого поддомена.

сервер < listen 80; listen [::]:80; server_name nextcloud. your-domain.comВключите заголовки для повышения безопасности

Добавьте следующие заголовки:

  • add_header X-Content-Type-Options nosniff;

  • add_header X-XSS-Protection "1; mode=block";

  • add_header X-Robots-Tag none;

  • add_header X-Download-Options noopen;

  • add_header X-Permitted-Cross-Domain-Policies none;

  • add_header Referrer-Policy no-referrer;

Я заметил, что этот заголовок необходим для систем Debian/Ubuntu/CentOS/RHEL, но не требуется в Arch Linux:

  • add_header X-Frame-Options "SAMEORIGIN";

Также укажите путь к корню вашей установки:

  • root

  • /usr/share/nginx/nextcloud/access_log /var/log/nginx/nextcloud. access; error_log /var/log/nginx/nextcloud. error; местоположение = /robots. txt< allow all; log_not_found off; access_log off; >Следующие два правила применимы исключительно для приложения user_webfinger. Раскомментируйте их, если планируете использовать это приложение.

    bash< return 301 $scheme://$host/remote.php/dav; >Местоположение = /.well-known/caldav< return 301 $scheme://$host/remote.php/dav; >location ~ /.well-known/acme-challenge < allow all; >Установите ограничение на максимальный размер загружаемого файла: client_max_body_size 512M; Настройте буферы для fastcgi: fastcgi_buffers 64 4K; Отключите сжатие gzip, чтобы сохранить заголовок ETag: gzip off; Если ваш сервер поддерживает модуль ngx_pagespeed, отключите его, так как он не поддерживается: #pagespeed off; Настройте страницы ошибок: error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; Настройка для основного пути: location /< rewrite ^ /index.php; >location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ < deny all; >location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) < deny all; >location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) < include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; try_files $fastcgi_script_name =404; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; #Избегайте отправки заголовков безопасности дважды fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass unix:/run/php-fpm/www. sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; >location ~ ^/(?:updater|ocs-provider)(?:$|/) < try_files $uri/ =404; index index.php; >Добавление заголовков для управления кэшированием файлов js и css: убедитесь, что он размещен ниже блока PHP location.~.(?< try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=7200"; # Добавьте заголовки для обеспечения связанных с безопасностью заголовков (предполагается, что # они дублируются с вышеуказанными) add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Необязательно: Не регистрировать доступ к ресурсам access_log off; >location ~.(?< try_files $uri /index.php$uri$is_args$args; # Необязательно: Не регистрировать доступ к другим ресурсам access_log off; >>

    В редакторе nano нажмите комбинацию клавиш Ctrl+O для сохранения файла. Подтвердите действие, нажав Enter. Чтобы выйти, воспользуйтесь Ctrl+X. После этого выполните проверку конфигурации Nginx.

    nginx - t

    Если проверка прошла успешно, перезапустите Nginx для применения изменений.

    systemctl reload nginx

    Произведите установку и активацию PHP-модулей.

    Для установки необходимых или рекомендуемых модулей PHP для NextCloud, выполните следующие команды.

    yum install php-common php-gd php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl

    Также необходимо уведомить SELinux (Безопасный Расширенный Линукс) о том, что PHP-FPM может использовать execmem.

    setsebool - P httpd_execmem 1

    Перезапустите PHP-FPM

    systemctl reload php-fpm

    Конфигурация прав доступа

    Сначала настройте SELinux, чтобы разрешить Nginx и PHP-FPM доступ на чтение и запись в каталог /usr/share/nginx/nextcloud/.

    chcon - t httpd_sys_rw_content_t /usr/share/nginx/nextcloud/ - R

    По умолчанию SELinux блокирует сетевые запросы Nginx к внешним серверам, однако в дальнейшем Nginx потребуется запросить статус TLS-сертификата у сервера Let’s Encrypt CA. Для этого необходимо разрешить Nginx выполнение таких запросов, используя следующую команду.

    setsebool - P httpd_can_network_connect 1

    В директории /var/lib/php/ по умолчанию находятся три файла, которые принадлежат группе apache, однако мы работаем с Nginx. Поэтому необходимо предоставить пользователю nginx права на чтение и запись в эти три директории, используя команду setfacl.

    setfacl - R - m u:nginx:rwx /var/lib/php/opcache/ setfacl - R - m u:nginx:rwx /var/lib/php/session/ setfacl - R - m u:nginx:rwx /var/lib/php/wsdlcache/

    Активация HTTPS

    Теперь можно получить доступ к веб-установщику Nextcloud через браузер, введя доменное имя вашей установки Nextcloud.

    nextcloud. your-domain.com

    Nextcloud на CentOS 8.

    Если веб-сайт не открывается, возможно, требуется разблокировать порт 80 в настройках брандмауэра.

    firewall-cmd --permanent --zone=public --add-service=http

    А также порт 443.

    firewall-cmd --permanent --zone=public --add-service=https

    Опция --permanent сохранит это правило брандмауэра после перезагрузки системы. Затем перезапустите демон брандмауэра, чтобы изменения начали действовать.

    systemctl reload firewalld

    Теперь установка NextCloud должна пройти успешно. Перед вводом любых конфиденциальных данных необходимо настроить безопасное HTTPS-соединение. Для этого мы можем воспользоваться бесплатным TLS сертификатом от Let’s Encrypt.

    Загрузите программу Let’s Encrypt certbot-auto с официального сайта EFF.

    wget https://dl. eff. org/certbot-auto

    Предоставьте разрешение для выполнения.

    chmod a+x certbot-auto

    Поместите файл в директорию PATH пользователя, например, в /usr/local/bin/ и измените его имя на certbot.

    sudo mv certbot-auto /usr/local/bin/certbot

    Назначьте пользователя root владельцем и установите права доступа на 0755.

    sudo chown root /usr/local/bin/certbot sudo chmod 0755 /usr/local/bin/certbot

    Теперь у нас есть возможность воспользоваться командой certbot для получения бесплатного TLS-сертификата с помощью плагина Nginx.

    sudo /usr/local/bin/certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email ваш-адрес-электронной-почты - d nextcloud. ваш-домен.com

    • –nginx: Применение аутентификатора и установщика для Nginx
    • – согласие с условиями использования Let’s Encrypt.
    • –redirect: Установить 301 редирект для перенаправления HTTP-запросов на HTTPS.
    • –hsts: Включить заголовок Strict-Transport-Security для всех HTTP-ответов.
    • –staple-ocsp: Активирует OCSP Stapling, что способствует повышению производительности и защиты конфиденциальности пользователей.
    • Флаг - d используется вместе с перечнем доменных имен, которые разделяются запятыми. Можно указать до 100 доменных имен.
    • –email : Адрес электронной почты, применяемый для регистрации и восстановления связи.

    При первом запуске на системах RHEL 8 или CentOS 8 может возникнуть необходимость установить несколько пакетов зависимостей. Для продолжения нажмите y.

    Установка Certbot для Nextcloud на CentOS 8.

    Вы сможете выбрать, желаете ли получать рассылки от EFF (Фонда электронной границы). После того как вы укажете Y или N, ваш TLS сертификат будет автоматически получен и настроен, о чем вы получите подтверждающее сообщение ниже.

    certbot для управления DNS Cloudflare на RHEL 8

    Завершите процесс установки в вашем интернет-браузере.

    Теперь вы можете использовать веб-майстер для установки Nextcloud через HTTPS-соединение. Для завершения установки необходимо создать учетную запись администратора, указать путь к папке данных Nextcloud и ввести данные уже созданной базы данных. В качестве адреса хоста вы можете оставить localhost по умолчанию или использовать localhost:3306, так как MariaDB работает на порту 3306.

    Директория для хранения данных — это область, где хранятся файлы пользователей. Для повышения безопасности рекомендуется располагать эту папку вне корневого каталога веб-Nextcloud. Вместо хранения пользовательских файлов по адресу /usr/share/nginx/nextcloud/data/ мы можем переместить их в /usr/share/nginx/nextcloud-data. Для этого можно использовать следующую команду:

    mkdir /usr/share/nginx/nextcloud-data

    После этого проверьте, что у пользователя Nginx есть права на запись в папку с данными.

    chown nginx:nginx /usr/share/nginx/nextcloud-data - R chcon - t httpd_sys_rw_content_t /usr/share/nginx/nextcloud-data/ - R

    nextcloud-centos-8-nginx-config

    После завершения этого процесса вам откроется веб-интерфейс Nextcloud. Поздравляем! Теперь вы можете использовать его в качестве своего личного облачного хранилища.

    Nextcloud на RHEL 8

    Как организовать уведомления на электронную почту в NextCloud

    Если вашей инстанцией NextCloud будет пользоваться более одного человека, важно, чтобы ваш сервер NextCloud мог отправлять транзакционные электронные письма, такие как письма для сброса пароля. Чтобы настроить параметры электронной почты, перейдите в Настройки ->Главные параметры. Здесь вы обнаружите настройки для конфигурации почтового сервера.

    Есть два способа отправки: sendmail и smtp. Режим sendmail можно использовать, если на вашем хосте NextCloud работает SMTP-сервер.

    сервер электронной почты Nextcloud

    Чтобы подключиться к SMTP-серверу, расположенному на другом хосте, выберите режим smtp и укажите данные для авторизации, как это указано ниже.

    Сброс пароля в Nextcloud через электронную почту.

    Не забудьте дать SELinux разрешение Nginx на отправку почты с помощью следующей команды.

    setsebool - P httpd_can_sendmail on

    Для того чтобы освоить настройку личного почтового сервера, ознакомьтесь с приведенным ниже руководством:

    • Как оперативно установить почтовый сервер на CentOS с использованием Modoboa.

    Повышение предела на размер загружаемых файлов.

    По умолчанию в Nginx установлено ограничение на размер загружаемого файла в 1 МБ. Для того чтобы позволить загружать более крупные файлы на сервер NextCloud, необходимо внести изменения в конфигурационный файл Nginx, используемый для NextCloud.

    nano /etc/nginx/conf.d/nextcloud.conf

    Максимальный размер файла для этого документа уже установлен, как показано ниже.

    client_max_body_size 512M;

    Вы можете изменить его, если есть желание, например, на 1 ГБ.

    client_max_body_size 1024M;

    Закройте файл после сохранения и перезапустите Nginx, чтобы обновления начали действовать.

    systemctl reload nginx

    В PHP также предусмотрено ограничение на размер загружаемых файлов. По умолчанию максимальный размер загружаемого файла составляет 2 МБ. Для увеличения этого лимита необходимо изменить настройки в конфигурационном файле PHP.

    nano /etc/php. ini

    Определите следующую строку (строка 827).

    upload_max_filesize = 2M

    Измените параметр следующим образом:

    upload_max_filesize = 1024M

    Сохраните файл и выйдите из него. Также, вы можете воспользоваться следующей командой, чтобы изменить значение, не открывая файл вручную.

    sed - i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php. ini

    Перезапустите PHP-FPM после этого.

    systemctl restart php-fpm

    Скачайте и установите настольное приложение Nextcloud

    CentOS Stream, Rocky Linux, AlmaLinux и Fedora:

    sudo dnf install nextcloud-client

    Автоматическое обновление сертификата Let’s Encrypt

    Измените файл crontab для пользователя root.

    sudo crontab - e

    Вставьте следующую строку в конец файла, чтобы ежедневно запускать задачу Cron. Если сертификат будет действовать еще 30 дней, certbot попытается его обновить. После этого нужно перезапустить службу Nginx, чтобы применить новый сертификат и ключ.

    @daily certbot renew --quiet && systemctl reload nginx

    Итоговое резюме

    Надеюсь, что данный учебник был полезен для вас при установке NextCloud на сервере RHEL 8/CentOS 8. Кроме того, вы можете воспользоваться Nginx Amplify для отслеживания производительности фона Nextcloud.

    • Установите Nginx Amplify на CentOS 8 или RHEL 8 для отслеживания эффективности LEMP.

    Если вам понравился этот пост и вы считаете его полезным, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций.