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

215 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 Настройка 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! 🎉