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

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

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

  • На сервере должна быть установлена система Linux (например, CentOS, Rocky Linux или AlmaLinux) с включённым доступом к интернету.
  • Необходим доступ к Docker Engine версии >= 20 с поддержкой docker‑compose или установленный пакет docker‑compose.
  • В сети должна быть открыта пара портов 80 и 443, чтобы Caddy мог принимать HTTP‑ и HTTPS‑запросы.
  • Для корректной работы приложения требуется пароль SSH‑ключа пользователя, используемый как пароль PostgreSQL‑пользователя.

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

После завершения установки в корневой директории пользователя появятся следующие объекты:

/opt/docuseal/
├── Caddyfile                # Конфигурация Caddy‑proxy
├── compose.yml              # Файл docker‑compose
└── <пусто> (директория для данных и логов)
/opt/docuseal/
    └── Caddyfile             – создан из шаблона
    └── compose.yml           – создан из шаблона

Параллельно создаются Docker‑volumes, которые сохраняют данные между перезапусками контейнеров:

docuseal_data   – место хранения данных приложения
postgres_data   – база данных PostgreSQL
caddy_data      – данные Caddy (сert‑store, токены)
caddy_config    – конфигурационные файлы Caddy

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

  • Все файлы в /opt/docuseal/ принадлежат пользователю root и группе root.
  • Доступ к директории и файлам ограничен правами 0755 (директория) и 0644 (файлы).
  • Docker‑контейнеры запускаются с минимальными привилегиями, привязывая только необходимые тома.
  • На сервере открыты только порты 80 и 443, остальные портов по‑умолчанию закрыты.

Базы данных

PostgreSQL запускается в отдельном контейнере postgres:15.
Ключевые параметры конфигурации задаются переменными окружения:

POSTGRES_USER=postgres
POSTGRES_PASSWORD=<ssh‑пароль>
POSTGRES_DB=docuseal

Параметр DATABASE_URL передаётся в приложение app:

DATABASE_URL=postgresql://postgres:<ssh‑пароль>@postgres:5432/docuseal

Состояние сервиса проверяется через health‑check, который запускает команду pg_isready.

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

Запуск всего стека осуществляется командой, выполняемой в каталоге /opt/docuseal:

docker compose up -d

Docker‑compose создаёт и запускает три контейнера:

Контейнер Образ Служебные порты Зависимости
app docuseal/docuseal:latest 3000 (expose) postgres
postgres postgres:15 5432
caddy caddy:latest 80, 443

Контейнер caddy использует файл /opt/docuseal/Caddyfile и обслуживает как HTTP, так и HTTPS (получает сертификаты автоматически).

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

Caddy выступает в роли обратного прокси и TLS‑terminator.
Файл Caddyfile формируется так:

<final_domain> [<temp_domain>] {
    reverse_proxy app:3000
}

Если задана временная зона (temp_domain), она добавляется как альтернативный хост.
Caddy сам управляет сертификатами Let’s Encrypt, поэтому никакого отдельного контейнера certbot не требуется.

Настройки прав, запуск, остановка и обновление

Запуск

docker compose up -d

Остановка

docker compose down

Перезапуск

docker compose restart

Обновление образов

docker compose pull
docker compose up -d

Проверка статуса

docker compose ps

Очистка неиспользуемых томов (если необходимо)

docker volume prune

Эти команды позволяют управлять жизненным циклом контейнеров без изменения конфигурационных файлов.

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