Перейти к содержанию

Обзор развертывания Nextcloud с OnlyOffice на сервере

Предпосылки и предварительные требования

Для успешного развертывания системы необходимо наличие сервера с установленным Docker и Docker Compose. Система требует прав суперпользователя для создания директорий, настройки брандмауэра и запуска контейнеров.

Необходимо обеспечить доступность следующих портов в брандмауэре: - Порт 80/tcp для HTTP-трафика и получения SSL-сертификатов. - Порт 443/tcp для защищенного HTTPS-трафика. - Порт 22/tcp для удаленного доступа по SSH (при использовании UFW).

Система использует доменное имя, которое должно быть настроено в DNS и указывать на IP-адрес сервера.

Структура файлов и каталогов

Конфигурационные файлы и данные приложения размещаются в следующих каталогах:

  • /opt/nextcloud/ — основной каталог конфигурации приложения:
  • compose.yml — файл оркестрации Docker Compose.
  • set_configuration.sh — скрипт первичной настройки Nextcloud.
  • www.conf, fpm.conf, php.ini — файлы конфигурации PHP и PHP-FPM.
  • /opt/nginx/ — каталог конфигурации веб-сервера:
  • nginx.conf — основной файл конфигурации Nginx.
  • nginx-certbot.env — переменные окружения для контейнера Nginx.
  • user_conf.d/ — каталог для пользовательских конфигураций серверов, где хранится файл {{ final_domain }}.conf.
  • Каталог данных пользователя (опционально):
  • Если переменная nextcloud_data_path не задана, данные хранятся в Docker-том app_data.
  • Если переменная задана, данные хранятся в указанной директории на хосте.

Процесс установки приложения

Развертывание осуществляется через Docker Compose. Процесс включает следующие этапы:

  1. Создание необходимых директорий на хосте:
  2. /opt/nextcloud
  3. /opt/nginx
  4. /opt/nginx/user_conf.d
  5. Директория для данных (если задана переменная nextcloud_data_path).

  6. Генерация и копирование конфигурационных файлов:

  7. Файл compose.yml создается в /opt/nextcloud/.
  8. Конфигурация Nginx копируется в /opt/nginx/.
  9. Скрипт настройки set_configuration.sh размещается в /opt/nextcloud/.

  10. Создание внешних Docker-томов для хранения данных:

  11. app_data — для файлов Nextcloud (если не используется путь на хосте).
  12. db_data — для базы данных PostgreSQL.
  13. document_data — для данных OnlyOffice.
  14. document_log — для логов OnlyOffice.
  15. nginx_secrets — для SSL-сертификатов.

  16. Запуск контейнеров командой docker compose up -d из директории /opt/nextcloud.

  17. Ожидание готовности контейнера Nginx и получение SSL-сертификата через Certbot.

  18. Запуск скрипта set_configuration.sh для инициализации базы данных и настройки администратора.

  19. Выполнение дополнительных команд для оптимизации базы данных и настройки OnlyOffice внутри контейнера app-server.

Права доступа и безопасность

Настройка брандмауэра зависит от используемого инструмента на сервере:

  • При использовании Firewalld:
  • Открываются порты 80/tcp и 443/tcp в зоне public.
  • Правила применяются немедленно и сохраняются постоянно.

  • При использовании UFW:

  • Открываются порты 80/tcp, 443/tcp и 22/tcp.

Контейнеры Nginx и OnlyOffice настроены на прослушивание портов 80 и 443 для внешнего доступа. Контейнеры базы данных и Redis не экспонируют порты наружу и доступны только внутри сети Docker.

Базы данных

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

  • Образ: postgres:alpine.
  • Имя базы данных: nextcloud.
  • Пользователь базы данных: nextcloud.
  • Пароль задается через переменную окружения POSTGRES_PASSWORD.
  • Данные хранятся в Docker-томе db_data, который монтируется в /var/lib/postgresql/data.
  • Контейнер настроен на автоматический перезапуск (restart: always).

Контейнеры Docker и их запуск

Система состоит из следующих контейнеров, описанных в файле compose.yml:

  • db:
  • Образ: postgres:alpine.
  • Хранит данные в томе db_data.
  • Экспонирует порт 5432 внутри сети.

  • redis:

  • Образ: redis:alpine.
  • Используется для кэширования.
  • Настроен на автоматический перезапуск.

  • app:

  • Имя контейнера: app-server.
  • Образ: nextcloud:fpm.
  • Использует DNS-серверы 8.8.8.8 и 8.8.4.4.
  • Монтирует конфигурационные файлы PHP (php.ini) и данные приложения.
  • Зависит от контейнеров db и redis.
  • Экспонирует порты 80 и 9000 внутри сети.

  • onlyoffice-document-server:

  • Имя контейнера: onlyoffice-document-server.
  • Образ: onlyoffice/documentserver:latest.
  • Монтирует тома document_data и document_log.
  • Экспонирует порты 80 и 443 внутри сети.

  • nginx:

  • Имя контейнера: nginx-certbot.
  • Образ: jonasal/nginx-certbot:latest.
  • Экспонирует порты 80 и 443 на хосте.
  • Монтирует тома для SSL-сертификатов, конфигураций Nginx и данных приложения.
  • Использует файл окружения /opt/nginx/nginx-certbot.env.

Прокси серверы

В качестве обратного прокси используется контейнер Nginx с поддержкой автоматического получения SSL-сертификатов через Certbot.

  • Конфигурация сервера хранится в файле /opt/nginx/user_conf.d/{{ final_domain }}.conf.
  • Сервер перенаправляет весь HTTP-трафик (порт 80) на HTTPS (порт 443).
  • SSL-сертификаты хранятся в томе nginx_secrets по пути /etc/letsencrypt/live/{{ final_domain }}/.
  • Настроены заголовки безопасности:
  • Strict-Transport-Security
  • X-Frame-Options
  • X-Content-Type-Options
  • X-XSS-Protection
  • X-Robots-Tag
  • Для OnlyOffice настроен прокси-путь /ds-vpath/, который перенаправляет запросы на контейнер onlyoffice-document-server.
  • Максимальный размер загружаемого файла установлен в 15G.

Настройки прав

Все конфигурационные файлы и директории создаются с правами владельца root и группы root.

  • Директории /opt/nextcloud, /opt/nginx, /opt/nginx/user_conf.d имеют права 0640.
  • Директория для данных (если задана) имеет права 0755.
  • Файлы конфигурации (compose.yml, nginx.conf, set_configuration.sh и др.) имеют права 0644 или 0755 для исполняемых скриптов.
  • Внутри контейнеров права на файлы данных управляются пользователем www-data (для Nextcloud) и соответствующими пользователями образов.

Запуск, остановка и обновление

Управление контейнерами осуществляется через Docker Compose в директории /opt/nextcloud.

  • Запуск всех сервисов:

    docker compose up -d
    

  • Остановка всех сервисов:

    docker compose down
    

  • Перезапуск конкретного сервиса (например, Nginx):

    docker restart nginx-certbot
    

  • Проверка статуса контейнеров:

    docker ps
    

  • Просмотр логов:

    docker logs -f app-server
    docker logs -f onlyoffice-document-server
    docker logs -f nginx-certbot
    

Для обновления конфигурации необходимо изменить соответствующие файлы в /opt/nextcloud/ или /opt/nginx/, затем выполнить команду docker compose up -d для применения изменений.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×