Развёртывание в Dokploy
Production-конфигурация web, worker, PostgreSQL и secrets.
Environment
Храните реальные значения в Dokploy Environment:
CUSTOMER_SUPPORT_DATABASE_URL="postgresql://..."
CUSTOMER_SUPPORT_DATABASE_SCHEMA="customer_support"
CUSTOMER_SUPPORT_MIGRATION_DATABASE_URL="postgresql://..."
CUSTOMER_SUPPORT_BETTER_AUTH_SECRET="..."
CUSTOMER_SUPPORT_BETTER_AUTH_URL="https://support.example.com"
CUSTOMER_SUPPORT_FEEDBACK_CREDENTIALS_ENCRYPTION_KEY="..."Добавьте SMTP_* и временные AUTH_ADMIN_* для bootstrap. Build-time допустимы
только NEXT_PUBLIC_APP_NAME и необязательный NEXT_PUBLIC_API_URL.
Web Application
Создайте Application из ReactiveEngineering/re-customer-support, branch main:
| Параметр | Значение |
|---|---|
| Build type | Dockerfile |
| Dockerfile | Dockerfile |
| Context | . |
| Internal port | 3000 |
| Health endpoint | /health |
Startup sequence:
- подготовить PostgreSQL schema;
- применить Prisma migrations;
- инвалидировать существующие Better Auth sessions;
- при полном наборе
AUTH_ADMIN_*выполнить seed; - запустить Next.js и feedback worker под supervisor.
После запуска в логах должны присутствовать readiness Next.js и
[feedback-worker] Started..
Отдельный worker
Стандартный Application уже содержит worker. Для отдельного процесса:
- задайте web-процессу
FEEDBACK_WORKER_ENABLED=false; - создайте второй Application из того же image;
- уберите domain и exposed port;
- переопределите команду:
node --conditions=react-server --import tsx scripts/feedback-worker.tsWorker разворачивается после успешных web migrations. Несколько экземпляров безопасны при rolling deployment благодаря integration leases.
Первая production-проверка
Проверьте контейнер
Статус running/healthy, /health успешен, web и worker присутствуют в логах.
Войдите как Owner
Проверьте seed-аккаунт, затем удалите AUTH_ADMIN_PASSWORD из Environment.
Настройте источники
Сохраните credentials, выполните connection tests и первый ручной sync.
Проверьте email
Пройдите password recovery и тестовое operational notification.
Зафиксируйте baseline
Сохраните версию image, migration state и ожидаемое время последнего sync для последующей диагностики.

