Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
48 lines
3.4 KiB
Markdown
48 lines
3.4 KiB
Markdown
# Выкладка на VPS
|
||
|
||
Боевой стенд — три контейнера на том же VPS, где сайт: база `leadradar-db`, сервис `leadradar-api`
|
||
(API, бот, парсер), кабинет `leadradar-web` (nginx), плюс `leadradar-backup` с ежедневной копией
|
||
базы. Наружу их публикует уже работающий Nginx Proxy Manager. Чужие контейнеры на VPS
|
||
(`brain-*`, `nepotolok*`, `yandp-site`) выкладка не трогает.
|
||
|
||
Локально сборка проверена 09.10.2026: образы собираются, миграции применяются, `/api/health`
|
||
отвечает, резервная копия создаётся. Первая выкладка на VPS — 09.10.2026: контейнеры работают,
|
||
бот `@yandpleadradar_bot` и парсер запущены. Домен в Nginx Proxy Manager нужно добавить вручную (шаг 5).
|
||
|
||
## Что нужно один раз
|
||
|
||
1. **Домен.** В Namecheap добавить A-запись поддомена на `188.116.21.175`.
|
||
2. **Боевой бот.** Создать бота в @BotFather, затем `/setdomain` → домен кабинета (нужно для
|
||
входа через Telegram в браузере). Кнопку меню с Mini App сервис ставит сам при запуске.
|
||
3. **Настройки на VPS.** Создать `/opt/leadradar/.env` по образцу
|
||
[`deploy/.env.production.example`](../deploy/.env.production.example): пароль базы, адрес
|
||
кабинета с `https://`, токен и имя бота, ключ Jina.
|
||
4. **Первая выкладка.** На Mac из папки `leadradar`: `./deploy.sh`.
|
||
5. **Адрес в Nginx Proxy Manager.** Proxy Host: домен → `leadradar-web`, порт 80, включить
|
||
Let's Encrypt и Force SSL. Панель NPM открывается через
|
||
`ssh -i ~/.ssh/yandp_vps -L 8181:127.0.0.1:81 root@188.116.21.175` → http://localhost:8181.
|
||
6. **Суперадмин.** На VPS:
|
||
`docker exec leadradar-api sh -c 'cd /app/apps/api && node --import tsx src/cli/create-superadmin.ts <email> "Имя"'`
|
||
— команда напечатает пароль.
|
||
|
||
## Обновление
|
||
|
||
На Mac: `./deploy.sh`. Скрипт прогоняет проверки и тесты, загружает исходники, пересобирает образы
|
||
на сервере и перезапускает контейнеры. Миграции базы применяются при старте `leadradar-api`.
|
||
|
||
## Резервные копии
|
||
|
||
`/opt/leadradar/backups/leadradar-ГГГГ-ММ-ДД.sql.gz`, хранятся 14 последних. Восстановление на VPS:
|
||
|
||
```bash
|
||
gunzip -c /opt/leadradar/backups/leadradar-2026-10-09.sql.gz | docker exec -i leadradar-db psql -U leadradar leadradar
|
||
```
|
||
|
||
Копии лежат на том же сервере, что и база: от поломки диска они не спасут. Вынос копий на другой
|
||
сервер или в облако не настроен.
|
||
|
||
## Что не настроено
|
||
|
||
- Почта: письма подтверждения email и сброса пароля пишутся в лог `leadradar-api`.
|
||
- Онлайн-оплата: см. [BILLING.md](BILLING.md).
|