Files
antigol-service/docs/DEPLOY.md
talorr cda36918e8 init
2026-03-27 03:36:08 +03:00

195 lines
4.3 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.
# Deploy Runbook
Короткая инструкция по выкладке проекта на сервер.
## 1. Подготовка сервера
- Установить `git`, `docker`, `docker compose`.
- Открыть наружу только порты `80` и `443`.
- Закрыть наружу `5432`, `6379`, `3000`, `4000`, `4010`, `8080`.
- Создать каталог проекта, например:
```bash
mkdir -p ~/alpinbet-parser
cd ~/alpinbet-parser
```
## 2. Получение кода
Если репозиторий уже инициализирован:
```bash
git remote -v
git pull
```
Если это первый деплой:
```bash
git clone git@gitlab.com:talorr/alpinbet-parser.git ~/alpinbet-parser
cd ~/alpinbet-parser
```
## 3. Настройка секретов
Скопировать шаблон env:
```bash
cp .env.example .env
```
Заполнить в `.env`:
- `POSTGRES_DB`
- `POSTGRES_USER`
- `POSTGRES_PASSWORD`
- `JWT_SECRET`
- `PARSER_INTERNAL_SECRET`
- `NUXT_PUBLIC_API_BASE`
- `APP_PUBLIC_URL`
- `CORS_ORIGIN`
- `SMTP_*`
- `VAPID_*`
- `FIREBASE_*`
Важно:
- Не оставлять `change_me_*`.
- Использовать длинные случайные значения для `JWT_SECRET` и `PARSER_INTERNAL_SECRET`.
- `adminer` и `dockmon` должны оставаться закомментированными в `docker-compose.yml`.
## 4. Доступ к Traefik Dashboard
Создать файл с логином и паролем:
```bash
mkdir -p traefik/secrets
cp traefik/secrets/dashboard-users.example traefik/secrets/dashboard-users
```
Сгенерировать `htpasswd`:
```bash
htpasswd -nb admin 'CHANGE_ME_STRONG_PASSWORD' > traefik/secrets/dashboard-users
```
## 5. Проверка конфига
Перед запуском проверить итоговый compose:
```bash
docker compose config
```
Если здесь ошибка, не запускать деплой, пока она не исправлена.
## 6. Первый запуск
Собрать и поднять стек:
```bash
docker compose up -d --build
```
Применить схему базы:
```bash
docker compose exec backend npx prisma db push
```
Проверить статус:
```bash
docker compose ps
docker compose logs --tail=100 backend
docker compose logs --tail=100 frontend
docker compose logs --tail=100 parser
```
## 7. Smoke Check После Деплоя
Проверить:
```bash
curl https://api.antigol.ru/health
```
И вручную в браузере:
- `https://antigol.ru`
- логин
- открытие сигналов
- админка, если нужна
## 8. Бэкап Базы
Создать sql-бэкап:
```bash
docker compose exec -T postgres pg_dump -U postgres -d betting_signals > backup_$(date +%F_%H-%M-%S).sql
```
Или сразу архив:
```bash
docker compose exec -T postgres pg_dump -U postgres -d betting_signals | gzip > backup_$(date +%F_%H-%M-%S).sql.gz
```
Если имена БД и пользователя другие, подставить свои значения из `.env`.
Скачать бэкап на локальную машину:
```bash
scp root@your-server:~/alpinbet-parser/backup_2026-03-25_20-30-00.sql.gz .
```
## 9. Обновление Проекта
Обычный порядок после `git pull`:
```bash
git pull
docker compose build backend frontend parser forecast-ocr
docker compose up -d
docker compose exec backend npx prisma db push
```
Если менялись только env или Traefik:
```bash
docker compose up -d
```
## 10. Полезные Команды
Логи:
```bash
docker compose logs -f backend
docker compose logs -f parser
docker compose logs -f traefik
```
Перезапуск одного сервиса:
```bash
docker compose restart backend
docker compose restart parser
```
Остановить проект:
```bash
docker compose down
```
## 11. Минимальный Продовый Чеклист
- `.env` заполнен реальными значениями
- `dashboard-users` создан
- `docker compose config` проходит без ошибок
- наружу открыты только `80` и `443`
- `adminer` и `dockmon` не включены
- после запуска проходит `/health`
- сделан свежий backup БД