Обзор развертывания Nextcloud на сервере¶
Предварительные требования и основные условия¶
Для успешного развертывания приложения Nextcloud с интеграцией OnlyOffice целевой сервер должен соответствовать следующим требованиям:
-
Операционная система: Сервер на базе Linux с установленными Docker и Docker Compose.
-
Права доступа: Для управления системными службами, создания томов и настройки межсетевого экрана требуются права root или
sudo. -
Настройка межсетевого экрана (Firewall): Межсетевой экран сервера должен разрешать входящий трафик на определенных TCP-портах. Скрипт развертывания настраивает правила для:
-
Порт
80(HTTP) -
Порт
443(HTTPS) -
Порт
22(SSH — требуется для доступа к системе)
-
-
Домен: Полное доменное имя (FQDN) должно разрешаться в IP-адрес сервера для генерации SSL-сертификата через Certbot.
FQDN развернутого приложения¶
Приложение доступно через домен hostkey.in с использованием конкретного префикса и идентификатора сервера. Стандартный формат FQDN:
nextcloud<ServerID>.hostkey.in
-
Протокол: HTTPS
-
Порт:
443 -
Пример:
nextcloud123.hostkey.in
Примечание: Скрипт развертывания автоматически настраивает систему для перенаправления HTTP-трафика (порт 80) на HTTPS (порт 443).
Структура файлов и каталогов¶
Развертывание организует файлы конфигурации, сертификаты и данные приложения в следующих каталогах:
-
Конфигурация и скрипты приложения:
-
/opt/nextcloud/: Содержит файл Docker Compose, скрипты конфигурации и настройки PHP.-
/opt/nextcloud/compose.yml: Основное определение Docker Compose. -
/opt/nextcloud/set_configuration.sh: Скрипт инициализации настроек Nextcloud и интеграции OnlyOffice. -
/opt/nextcloud/www.conf,/opt/nextcloud/fpm.conf,/opt/nextcloud/php.ini: Конфигурации PHP-FPM и среды выполнения.
-
-
-
Конфигурация Nginx:
-
/opt/nginx/: Содержит основную конфигурацию Nginx и файлы окружения.-
/opt/nginx/nginx.conf: Основной файл конфигурации Nginx. -
/opt/nginx/nginx-certbot.env: Переменные окружения для службы Certbot. -
/opt/nginx/user_conf.d/: Каталог для пользовательских конфигураций сервера./opt/nginx/user_conf.d/<final_domain>.conf: Конкретная конфигурация блока сервера для развернутого домена.
-
-
-
Хранение данных:
-
Данные приложения Nextcloud по умолчанию хранятся в Docker-томе с именем
app_data. Если во время развертывания указан пользовательский путь, он сопоставляется с указанным каталогом на хосте (например,/opt/nextcloud_data). -
Данные базы данных хранятся в Docker-томе
db_data. -
Данные OnlyOffice хранятся в томе
document_data. -
Логи OnlyOffice хранятся в томе
document_log. -
SSL-сертификаты хранятся в томе
nginx_secrets, сопоставленном с/etc/letsencryptвнутри контейнера Nginx.
-
Процесс установки приложения¶
Приложение развертывается с использованием Docker Compose, который оркестрирует множество контейнеров для запуска стека Nextcloud, базы данных PostgreSQL, Redis, сервера документов OnlyOffice и прокси Nginx.
Процесс развертывания выполняет следующие шаги:
-
Создание каталогов: Создает необходимые каталоги для файлов конфигурации и путей данных.
-
Инициализация томов: Создает следующие Docker-томы, если они еще не существуют:
-
app_data -
db_data -
document_data -
document_log -
nginx_secrets
-
-
Запуск служб: Выполняет команду
docker compose up -dиз каталога/opt/nextcloudдля запуска всех служб. -
Предоставление SSL-сертификата: Развертывание инициирует Certbot внутри контейнера Nginx для получения или продления SSL-сертификата для домена с использованием метода проверки webroot challenge.
-
Инициализация конфигурации: Запускает скрипт
set_configuration.shдля:-
Инициализации базы данных Nextcloud и учетной записи администратора.
-
Настройки доверенных доменов (trusted domains).
-
Установки и настройки приложения OnlyOffice внутри Nextcloud.
-
-
Оптимизация базы данных: Выполняет специфические команды Nextcloud для добавления отсутствующих индексов базы данных и столбцов.
Файл Docker Compose указывает следующие образы:
-
postgres:alpine -
redis:alpine -
nextcloud:fpm -
onlyoffice/documentserver:latest -
jonasal/nginx-certbot:latest
Контейнеры Docker и их развертывание¶
Для развертывания используются следующие контейнеры, определенные в файле /opt/nextcloud/compose.yml:
-
db
-
Образ:
postgres:alpine -
Назначение: Хостит базу данных PostgreSQL.
-
Окружение: Настроено с именем базы данных
nextcloudи пользователемnextcloud. -
Том: Монтирует
db_dataв/var/lib/postgresql/data. -
Порты: Открывает
5432во внутренней сети.
-
-
redis
-
Образ:
redis:alpine -
Назначение: Слой кэширования для Nextcloud.
-
Порты: Порты не открываются наружу.
-
-
app (Имя контейнера:
app-server)-
Образ:
nextcloud:fpm -
Назначение: Ядро приложения Nextcloud на базе PHP-FPM.
-
Окружение: Подключается к службам
dbиredis. Настраивает переменныеOVERWRITEHOST,OVERWRITEPROTOCOLиOVERWRITECLIURL. -
Томы: Монтирует
app_data(или пользовательский путь хоста) в/var/www/htmlи сопоставляет локальные файлы конфигурации PHP. -
Порты: Открывает
80и9000во внутренней сети.
-
-
onlyoffice-document-server
-
Образ:
onlyoffice/documentserver:latest -
Назначение: Обеспечивает возможности редактирования документов.
-
Томы: Монтирует
document_dataв/var/www/onlyoffice/Dataиdocument_logв/var/log/onlyoffice. -
Порты: Открывает
80и443во внутренней сети.
-
-
nginx (Имя контейнера:
nginx-certbot)-
Образ:
jonasal/nginx-certbot:latest -
Назначение: Выступает в роли обратного прокси-сервера и обрабатывает завершение SSL-сессий через Certbot.
-
Порты: Сопоставляет порты хоста
80и443на контейнер. -
Томы: Монтирует
nginx_secretsдля сертификатов, том данных приложения и каталог пользовательской конфигурации.
-
Прокси-серверы¶
Система использует Nginx в качестве обратного прокси-сервера и точки завершения SSL.
-
Образ:
jonasal/nginx-certbot:latest -
Конфигурация:
-
Основная конфигурация:
/opt/nginx/nginx.conf -
Пользовательская конфигурация:
/opt/nginx/user_conf.d/<final_domain>.conf
-
-
Обработка SSL:
-
Контейнер Nginx автоматически получает и продлевает SSL-сертификаты с помощью Certbot.
-
Сертификаты хранятся в
/etc/letsencrypt/live/<final_domain>/внутри контейнера. -
Конфигурация принудительно перенаправляет HTTP-запросы на HTTPS (HTTP возвращает перенаправление 301 на HTTPS).
-
По умолчанию добавляются заголовки безопасности, такие как
Strict-Transport-Security,X-Frame-OptionsиX-Content-Type-Options.
-
-
Маршрутизация (Routing):
-
Запросы к
/проксируются к контейнеруapp(Nextcloud). -
Запросы к
/ds-vpath/проксируются к контейнеруonlyoffice-document-server.
-
Базы данных¶
-
Тип базы данных: PostgreSQL
-
Контейнер:
db -
Местоположение хранения: Docker-том
db_data, сопоставленный с/var/lib/postgresql/data. -
Параметры подключения:
-
Хост:
db(внутреннее имя хоста Docker-сети) -
Порт:
5432 -
Имя базы данных:
nextcloud -
Пользователь:
nextcloud -
Пароль: Определяется в переменных развертывания (доступен через
nextcloud_admin_pwd).
-
Права доступа и безопасность¶
-
Правила межсетевого экрана:
-
Если присутствует
firewalld, порты80и443включаются в зонеpublic. -
Если присутствует
ufw, включаются порты22,80и443.
-
-
Безопасность контейнеров:
-
Конфигурация Nginx включает заголовки безопасности для предотвращения распространенных веб-уязвимостей.
-
Доступ к чувствительным каталогам внутри приложения Nextcloud (например,
/build,/tests,/config,/lib,/3rdparty,/templates,/data) блокируется Nginx. -
Доступ к определенным путям, начинающимся с
.,autotest,occ,issue,indie,db_иconsole, запрещен.
-
-
Права доступа к файлам:
-
Каталоги конфигурации (
/opt/nextcloud,/opt/nginx) принадлежат пользователюrootс правами0640или0755. -
Docker-контейнеры работают с правами пользователя по умолчанию, определенными в образах (приложение Nextcloud работает как
www-dataвнутри контейнера).
-
Доступные порты для подключения¶
На сервере для внешнего доступа настроены следующие порты:
| Порт | Протокол | Служба | Описание |
|---|---|---|---|
| 80 | TCP | Nginx | HTTP-трафик (перенаправление на HTTPS) |
| 443 | TCP | Nginx | HTTPS-трафик (основной доступ) |
| 22 | TCP | SSH | Администрирование системы |
Внутренние порты, открытые контейнерами (недоступны напрямую через межсетевой экран хоста):
-
5432: PostgreSQL -
80,9000: Nextcloud FPM -
80,443: OnlyOffice Document Server
Запуск, остановка и обновление¶
Весь стек управляется через Docker Compose, расположенный в /opt/nextcloud.
-
Запуск стека:
-
Остановка стека:
-
Перезапуск стека:
-
Обновление образов: Чтобы загрузить последние версии образов контейнеров и перезапустить службы:
-
Просмотр логов:
Примечание: После обновления или перезапуска скрипт set_configuration.sh может потребовать ручного повторного запуска, если изменения схемы базы данных требуют миграции, хотя стандартные обновления обычно обрабатывают это автоматически при запуске контейнера.