mnemo_cards/mnemo_cards_backend/COOLIFY_SETUP.md

216 lines
6.9 KiB
Markdown
Raw Normal View History

2026-01-03 13:14:27 +00:00
# 🚀 Настройка 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! 🎉