This commit is contained in:
talorr
2026-03-27 03:36:08 +03:00
parent 8a97ce6d54
commit cda36918e8
225 changed files with 35641 additions and 0 deletions

194
docs/DEPLOY.md Normal file
View File

@@ -0,0 +1,194 @@
# 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 БД