Files
CRM-LeadRadar/docs/DEPLOY.md
T
yuriandClaude Opus 5.5 9749da5ae7 Lead Radar: исходный код
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 23:11:04 +04:00

48 lines
3.4 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.
# Выкладка на 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).