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