# 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 БД