mnemo_cards/mnemo_cards_backend/COOLIFY_SETUP.md
2026-01-03 16:14:27 +03:00

6.9 KiB
Raw Permalink Blame History

🚀 Настройка PostgreSQL + Backend в Coolify

📋 Шаг 1: Создать PostgreSQL в Coolify

  1. Зайти в Coolify Dashboard

  2. Выбрать Resources+ New

  3. Выбрать DatabasePostgreSQL

  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. Выбрать ApplicationDocker 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 добавить:

# 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

  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

# 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

Решение:

  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! 🎉