Обзор развертывания DocuSeal на сервере¶
Предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с установленной операционной системой, поддерживающей Docker и Docker Compose. Требуется наличие прав суперпользователя (root) или доступа через sudo для выполнения команд установки и управления сервисами.
Система должна иметь доступ к интернету для загрузки образов контейнеров. Для работы веб-интерфейса необходимо открыть порты 80 и 443 в брандмауэре.
Структура файлов и каталогов¶
Все файлы конфигурации и управления приложением размещаются в каталоге /opt/docuseal.
Основные компоненты структуры:
-
/opt/docuseal/Caddyfile— файл конфигурации веб-сервера Caddy. -
/opt/docuseal/compose.yml— файл описания сервисов Docker Compose.
Данные приложений хранятся в изолированных томах Docker:
-
docuseal_data— данные самого приложения DocuSeal. -
postgres_data— данные базы данных PostgreSQL. -
caddy_data— данные и сертификаты веб-сервера Caddy. -
caddy_config— конфигурация веб-сервера Caddy.
Процесс установки приложения¶
Развертывание осуществляется через Docker Compose. Приложение использует следующие версии образов:
-
docuseal/docuseal:latest— основной сервис приложения. -
postgres:15— база данных. -
caddy:latest— веб-сервер и прокси.
Перед запуском необходимо создать тома для хранения данных. Это делается с помощью команд:
docker volume create docuseal_data
docker volume create postgres_data
docker volume create caddy_data
docker volume create caddy_config
После создания томов и подготовки файлов конфигурации в директории /opt/docuseal, запуск всех сервисов выполняется командой:
/opt/docuseal. Права доступа и безопасность¶
Для обеспечения безопасности трафика настроен брандмауэр firewalld. Разрешен входящий трафик только на портах 80/tcp и 443/tcp в зоне public.
Конфигурация брандмауэра включает следующие правила:
-
Порт
80/tcp— разрешен. -
Порт
443/tcp— разрешен.
Веб-сервер Caddy обрабатывает входящие запросы и перенаправляет их на внутренний порт приложения 3000.
Базы данных¶
Приложение использует базу данных PostgreSQL версии 15. Она развернута в отдельном контейнере и подключается к сервису app через внутреннюю сеть Docker.
Параметры подключения базы данных:
-
Имя пользователя:
postgres. -
Имя базы данных:
docuseal. -
Хост подключения:
postgres. -
Порт:
5432.
Данные базы данных сохраняются в томе postgres_data, который монтируется в директорию /var/lib/postgresql/data внутри контейнера.
Контейнеры Docker и их запуск¶
Система состоит из трех основных сервисов, описанных в файле compose.yml:
-
app:
-
Образ:
docuseal/docuseal:latest. -
Зависит от успешного запуска сервиса
postgres. -
Экспонирует порт
3000внутри сети Docker. -
Монтирует том
docuseal_dataв/data/docuseal. -
Переменные окружения включают
FORCE_SSLиDATABASE_URL. -
postgres:
-
Образ:
postgres:15. -
Монтирует том
postgres_dataв/var/lib/postgresql/data. -
Имеет настроенную проверку здоровья (
healthcheck) для контроля готовности. -
caddy:
-
Образ:
caddy:latest. -
Открывает порты
80и443(TCP и UDP) на хосте. -
Монтирует тома
caddy_dataиcaddy_config. -
Использует файл конфигурации
/opt/docuseal/Caddyfileдля настройки обратного прокси.
Все сервисы настроены на автоматический перезапуск (restart: always или restart: unless-stopped).
Прокси серверы¶
В качестве обратного прокси используется контейнер Caddy. Он слушает порты 80 и 443 и перенаправляет запросы на сервис app по адресу app:3000.
Файл конфигурации Caddyfile определяет доменное имя, на котором будет доступен сервис. Конфигурация поддерживает как основной домен, так и дополнительные домены.
Сертификаты SSL автоматически управляются Caddy через томы caddy_data и caddy_config.
Настройки прав¶
Файлы конфигурации в каталоге /opt/docuseal имеют следующие права доступа:
-
Директория
/opt/docuseal: владелецroot, группаroot, права0755. -
Файл
Caddyfile: владелецroot, группаroot, права0644. -
Файл
compose.yml: владелецroot, группаroot, права0644.
Тома Docker создаются с правами, необходимыми для работы соответствующих контейнеров.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через Docker Compose из каталога /opt/docuseal.
Команды управления:
-
Запуск всех сервисов в фоновом режиме:
-
Остановка всех сервисов:
-
Перезапуск сервисов с обновлением образов:
-
Просмотр логов: