Lead Radar: исходный код

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
yuriandClaude Opus 5.5 committed 2026-10-25 23:11:04 +04:00
commit 9749da5ae7
201 files changed
+97685

No files matched your search

+47
View File
@@ -0,0 +1,47 @@
# Выкладка на 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).