# 🚀 Настройка PostgreSQL + Backend в Coolify ## 📋 Шаг 1: Создать PostgreSQL в Coolify 1. Зайти в Coolify Dashboard 2. Выбрать **Resources** → **+ New** 3. Выбрать **Database** → **PostgreSQL** 4. Настроить: - **Name:** `mnemo-postgres` - **Version:** `16` (рекомендуется) - **Database Name:** `mnemo_cards` - **Username:** `mnemo_user` - **Password:** (автогенерируется или задать свой) 5. **Нажать Create** Coolify автоматически создаст: - PostgreSQL контейнер - Internal hostname (например: `mnemo-postgres`) - Connection string ## 📋 Шаг 2: Получить connection string После создания PostgreSQL в Coolify: 1. Открыть созданную базу данных 2. Найти вкладку **Connection Details** 3. Скопировать: - **Internal URL** (для связи между сервисами в Coolify) - **Database Name** - **Username** - **Password** Пример Internal URL: ``` postgresql://mnemo_user:password@mnemo-postgres:5432/mnemo_cards ``` ## 📋 Шаг 3: Настроить Backend приложение в Coolify ### 3.1 Создать новый сервис 1. В Coolify: **Resources** → **+ New** 2. Выбрать **Application** → **Docker Compose** (или **Dockerfile**) 3. Настроить: - **Name:** `mnemo-backend` - **Git Repository:** ваш репозиторий - **Branch:** `master` (или `main`) - **Base Directory:** `/mnemo_cards_backend` - **Dockerfile Location:** `/mnemo_cards_backend/Dockerfile` ### 3.2 Настроить переменные окружения В разделе **Environment Variables** добавить: ```bash # 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 ``` **Генерация секретов:** ```bash # Сгенерировать случайные секреты (выполнить локально) 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 1. Нажать **Deploy** в Coolify 2. Следить за логами деплоя 3. Дождаться успешного запуска ## 🔍 Шаг 5: Проверка подключения ### 5.1 Проверить логи Backend В Coolify открыть **Logs** и найти: ``` ✅ Successfully connected to PostgreSQL 🌐 Starting API server... ✅ Backend started successfully! ``` Если есть ошибки подключения: ``` ❌ Error connecting to PostgreSQL: ... ``` ### 5.2 Проверить через API ```bash # Health check curl https://your-backend-url.com/health # Должен вернуть 200 OK ``` ### 5.3 Проверить подключение к PostgreSQL напрямую В Coolify можно открыть **Terminal** для PostgreSQL контейнера: ```bash psql -U mnemo_user -d mnemo_cards ``` Проверить таблицы: ```sql \dt -- список таблиц SELECT * FROM users LIMIT 1; ``` ## 🔧 Troubleshooting ### Проблема: Backend не может подключиться к PostgreSQL **Решение:** 1. Проверить что PostgreSQL запущен в Coolify 2. Проверить что используется **internal hostname** (не external URL) 3. Проверить переменные окружения `DB_HOST`, `DB_PORT` 4. Проверить что оба сервиса в одной сети Coolify ### Проблема: "Connection refused" **Решение:** 1. Убедиться что PostgreSQL health check зелёный 2. Проверить что порт `5432` правильный 3. Попробовать переподключить сервисы в Coolify ### Проблема: "Authentication failed" **Решение:** 1. Проверить `DB_USER` и `DB_PASSWORD` 2. Проверить что пароль не содержит спецсимволов (или экранировать) ### Проблема: "Database does not exist" **Решение:** 1. Проверить `DB_NAME=mnemo_cards` 2. Создать БД вручную в PostgreSQL terminal ## 📊 Мониторинг После запуска проверить: - ✅ Backend логи - нет ошибок - ✅ PostgreSQL логи - нет ошибок - ✅ API endpoints работают - ✅ Таблицы созданы автоматически (Drift миграции) ## 🎯 Следующие шаги После успешного запуска: 1. **Создать первого пользователя** (через API или напрямую в БД) 2. **Настроить бэкапы** БД в Coolify (опция в настройках PostgreSQL) 3. **Настроить мониторинг** (Coolify имеет встроенный) 4. **Настроить домен и SSL** (Coolify делает автоматически) ## 📝 Примечания - Coolify автоматически управляет Docker сетями - Coolify автоматически создаёт volumes для PostgreSQL - Coolify автоматически настраивает Traefik для SSL/HTTPS - Все переменные окружения безопасно хранятся в Coolify ## 🆘 Помощь Если что-то не работает: 1. Проверить логи Backend в Coolify 2. Проверить логи PostgreSQL в Coolify 3. Проверить переменные окружения 4. Проверить что сервисы в одной сети --- **Готово!** После этих шагов Backend будет работать с PostgreSQL в Coolify! 🎉