init
This commit is contained in:
194
docs/DEPLOY.md
Normal file
194
docs/DEPLOY.md
Normal 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 БД
|
||||
Reference in New Issue
Block a user