6.9 KiB
6.9 KiB
🚀 Настройка PostgreSQL + Backend в Coolify
📋 Шаг 1: Создать PostgreSQL в Coolify
-
Зайти в Coolify Dashboard
-
Выбрать Resources → + New
-
Выбрать Database → PostgreSQL
-
Настроить:
- Name:
mnemo-postgres - Version:
16(рекомендуется) - Database Name:
mnemo_cards - Username:
mnemo_user - Password: (автогенерируется или задать свой)
- Name:
-
Нажать Create
Coolify автоматически создаст:
- PostgreSQL контейнер
- Internal hostname (например:
mnemo-postgres) - Connection string
📋 Шаг 2: Получить connection string
После создания PostgreSQL в Coolify:
- Открыть созданную базу данных
- Найти вкладку Connection Details
- Скопировать:
- Internal URL (для связи между сервисами в Coolify)
- Database Name
- Username
- Password
Пример Internal URL:
postgresql://mnemo_user:password@mnemo-postgres:5432/mnemo_cards
📋 Шаг 3: Настроить Backend приложение в Coolify
3.1 Создать новый сервис
- В Coolify: Resources → + New
- Выбрать Application → Docker Compose (или Dockerfile)
- Настроить:
- Name:
mnemo-backend - Git Repository: ваш репозиторий
- Branch:
master(илиmain) - Base Directory:
/mnemo_cards_backend - Dockerfile Location:
/mnemo_cards_backend/Dockerfile
- Name:
3.2 Настроить переменные окружения
В разделе Environment Variables добавить:
# PostgreSQL (используем internal hostname от Coolify)
DB_HOST=mnemo-postgres # или internal hostname из Coolify
DB_PORT=5432
DB_NAME=mnemo_cards
DB_USER=mnemo_user
DB_PASSWORD=<пароль из Coolify>
DB_SSL_MODE=disable # или 'require' для продакшена
# Backend settings
PORT=3000
SERVER_ADDRESS=0.0.0.0
WORK_DIR=/app
DEBUG=false
# Admin IDs (через запятую)
ADMIN_IDS=1,2,3
# JWT secrets (ОБЯЗАТЕЛЬНО изменить на случайные!)
JWT_SECRET=<сгенерировать случайную строку>
JWT_REFRESH_SECRET=<сгенерировать другую случайную строку>
# YooKassa (если используется)
YOOKASSA_SHOP_ID=<ваш shop id>
YOOKASSA_SECRET_KEY=<ваш secret key>
# Backup (опционально)
BACKUP_DIR=/app/backups
Генерация секретов:
# Сгенерировать случайные секреты (выполнить локально)
openssl rand -base64 32 # для JWT_SECRET
openssl rand -base64 32 # для JWT_REFRESH_SECRET
3.3 Настроить порты
В разделе Ports:
- Container Port:
3000 - Public Port:
3000(или другой)
3.4 Настроить health check (опционально)
В Coolify можно настроить health check:
- Path:
/health - Port:
3000 - Interval:
30s
📋 Шаг 4: Deploy
- Нажать Deploy в Coolify
- Следить за логами деплоя
- Дождаться успешного запуска
🔍 Шаг 5: Проверка подключения
5.1 Проверить логи Backend
В Coolify открыть Logs и найти:
✅ Successfully connected to PostgreSQL
🌐 Starting API server...
✅ Backend started successfully!
Если есть ошибки подключения:
❌ Error connecting to PostgreSQL: ...
5.2 Проверить через API
# Health check
curl https://your-backend-url.com/health
# Должен вернуть 200 OK
5.3 Проверить подключение к PostgreSQL напрямую
В Coolify можно открыть Terminal для PostgreSQL контейнера:
psql -U mnemo_user -d mnemo_cards
Проверить таблицы:
\dt -- список таблиц
SELECT * FROM users LIMIT 1;
🔧 Troubleshooting
Проблема: Backend не может подключиться к PostgreSQL
Решение:
- Проверить что PostgreSQL запущен в Coolify
- Проверить что используется internal hostname (не external URL)
- Проверить переменные окружения
DB_HOST,DB_PORT - Проверить что оба сервиса в одной сети Coolify
Проблема: "Connection refused"
Решение:
- Убедиться что PostgreSQL health check зелёный
- Проверить что порт
5432правильный - Попробовать переподключить сервисы в Coolify
Проблема: "Authentication failed"
Решение:
- Проверить
DB_USERиDB_PASSWORD - Проверить что пароль не содержит спецсимволов (или экранировать)
Проблема: "Database does not exist"
Решение:
- Проверить
DB_NAME=mnemo_cards - Создать БД вручную в PostgreSQL terminal
📊 Мониторинг
После запуска проверить:
- ✅ Backend логи - нет ошибок
- ✅ PostgreSQL логи - нет ошибок
- ✅ API endpoints работают
- ✅ Таблицы созданы автоматически (Drift миграции)
🎯 Следующие шаги
После успешного запуска:
- Создать первого пользователя (через API или напрямую в БД)
- Настроить бэкапы БД в Coolify (опция в настройках PostgreSQL)
- Настроить мониторинг (Coolify имеет встроенный)
- Настроить домен и SSL (Coolify делает автоматически)
📝 Примечания
- Coolify автоматически управляет Docker сетями
- Coolify автоматически создаёт volumes для PostgreSQL
- Coolify автоматически настраивает Traefik для SSL/HTTPS
- Все переменные окружения безопасно хранятся в Coolify
🆘 Помощь
Если что-то не работает:
- Проверить логи Backend в Coolify
- Проверить логи PostgreSQL в Coolify
- Проверить переменные окружения
- Проверить что сервисы в одной сети
Готово! После этих шагов Backend будет работать с PostgreSQL в Coolify! 🎉