Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
3.4 KiB
Выкладка на 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).
Что нужно один раз
- Домен. В Namecheap добавить A-запись поддомена на
188.116.21.175. - Боевой бот. Создать бота в @BotFather, затем
/setdomain→ домен кабинета (нужно для входа через Telegram в браузере). Кнопку меню с Mini App сервис ставит сам при запуске. - Настройки на VPS. Создать
/opt/leadradar/.envпо образцуdeploy/.env.production.example: пароль базы, адрес кабинета сhttps://, токен и имя бота, ключ Jina. - Первая выкладка. На Mac из папки
leadradar:./deploy.sh. - Адрес в 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. - Суперадмин. На 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:
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.