Files
portal/docs/deploy/test-server-runbook.md
T
2026-05-21 12:05:08 +03:00

5.6 KiB
Raw Blame History

Лидерра — тест-сервер (Yandex Cloud) — runbook

Создан: 2026-05-21. Тестовое окружение для ручной проверки (заказчик + Claude). Не продакшен. Спека: docs/superpowers/specs/2026-05-21-test-deploy-yandex-cloud-design.md. План: docs/superpowers/plans/2026-05-21-test-deploy-yandex-cloud.md.

Доступ

  • URL (HTTP, временно): http://111.88.246.137 — статический IP YC.
  • HTTPS / домен: добавляется после покупки домена (см. «Включить HTTPS»).
  • Дверь сайта (HTTP Basic Auth): логин liderra — пароль в /home/ubuntu/liderra-secrets.txt на сервере (ключ basic_auth).
  • Демо-вход в портал: admin@demo.local / password (tenant demo, 3 проекта, демо-сделки).
  • SSH: ssh -i ~/.ssh/liderra_deploy ubuntu@111.88.246.137 (ключ на dev-машине; пароль входа отключён).
  • YC: облако cloud-sasha261185, каталог default, VM liderra-test (ru-central1-a, 2vCPU/2GB/20%), SG liderra-test-sg (22/80/443).

Состав

  • Ubuntu 24.04: nginx (Basic Auth, webhook /api/webhook/* без auth) → PHP-FPM 8.3 → Laravel.
  • PostgreSQL 16 (БД liderra), Redis (sessions+cache+queue, predis).
  • Код в /var/www/liderra/app; фронтенд public/build (собирается на dev, заливается scp).
  • Службы: liderra-queue.service (queue worker, systemd, enabled) + cron /etc/cron.d/liderra-scheduler (schedule:run). Все автозапускаются после ребута.

Важные отклонения от прод-дизайна (на решение позже)

  • DB-роль приложения = crm_app_user (RLS включена) — изоляция бизнес-данных между клиентами работает (deals/projects/billing/… строгие политики). Чтобы вход работал под строгой ролью, RLS-политики на таблицах users + auth_log сделаны «дружелюбными ко входу»: пропускают запрос, когда tenant-контекст ещё не установлен (auth/login), и фильтруют по тенанту после. Это server-only правка политик (не в schema.sql); для прода — кандидат в нормативную схему.
  • Админка SaaS /admin/* под crm_app_user НЕ работает (нет доступа к saas-таблицам — REVOKE). Для теста «от лица клиентов» не нужна. Понадобится — переключать admin-запросы на crm_admin_user (connection-switch в middleware EnsureSaasAdmin) — отдельная доработка.
  • SAAS_ADMIN_TEST_BYPASS=true — временный флаг (для будущей админки). Убрать после Yandex SSO (Б-1).
  • Почта = log (письма в файл). APP_DEBUG=false, APP_ENV=production.
  • Установлены dev-зависимости (faker нужен для сидов).

Тестовые клиенты

Логин Пароль Компания
admin@demo.local password Demo (3 проекта + демо-сделки)
client1@liderra.test password Компания 1 (2 проекта)
client2@liderra.test password Компания 2 (2 проекта)
client3@liderra.test password Компания 3 (2 проекта)
client4@liderra.test password Компания 4 (2 проекта)

Изоляция проверена вживую: каждый видит только свои проекты (HTTP-логин + /api/projects).

Обновить версию

На dev-машине:

npm --prefix app run build
git -C <repo> archive --format=tar HEAD app db -o $env:TEMP\liderra.tar
scp -i ~/.ssh/liderra_deploy $env:TEMP\liderra.tar ubuntu@111.88.246.137:/tmp/
scp -i ~/.ssh/liderra_deploy -r app\public\build ubuntu@111.88.246.137:/tmp/build

На сервере:

tar -xf /tmp/liderra.tar -C /var/www/liderra
rm -rf /var/www/liderra/app/public/build && cp -r /tmp/build /var/www/liderra/app/public/build
bash /var/www/liderra/redeploy.sh

Включить HTTPS (после покупки домена)

  1. DNS: A-запись test.<домен> (и/или demo.<домен> для subdomain-tenant) → 111.88.246.137.
  2. На сервере: в /etc/nginx/sites-available/liderra заменить server_name _; на домен, nginx -t && systemctl reload nginx.
  3. sudo certbot --nginx -d test.<домен> --non-interactive --agree-tos -m <email> --redirect.
  4. В .env обновить APP_URL=https://test.<домен>, затем php artisan optimize.

Остановить / удалить (прекратить оплату)

  • Остановить VM: yc compute instance stop liderra-test (диск/IP сохраняются, мелкая плата).
  • Удалить совсем: yc compute instance delete liderra-test + yc vpc address delete <id>.

После теста — обязательно

  • Отозвать OAuth-токен Yandex Cloud (Яндекс ID → Безопасность → сторонние приложения).
  • При переходе к прод-конфигу: убрать SAAS_ADMIN_TEST_BYPASS, вернуть crm_app_user (после auth-rework).