3b2096b4cb
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.4 KiB
4.4 KiB
Лидерра — тест-сервер (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(tenantdemo, 3 проекта, демо-сделки). - SSH:
ssh -i ~/.ssh/liderra_deploy ubuntu@111.88.246.137(ключ на dev-машине; пароль входа отключён). - YC: облако
cloud-sasha261185, каталогdefault, VMliderra-test(ru-central1-a, 2vCPU/2GB/20%), SGliderra-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_admin_user(BYPASSRLS), а неcrm_app_user. Причина: login делает глобальныйUser::where('email')без tenant-контекста — под RLS-ролью падает (см. спека §5.4). Следствие: изоляция компаний на уровне БД в тесте НЕ enforced (как на dev-суперюзере). Для прода нужно переработать auth-flow (pre-auth lookup через BYPASSRLS-подключение / per-subdomain login), тогда вернутьcrm_app_user. SAAS_ADMIN_TEST_BYPASS=true— временный флаг, открывает/admin/*без Yandex SSO. Убрать после SSO (Б-1).- Почта =
log(письма в файл). APP_DEBUG=false, APP_ENV=production. - Установлены dev-зависимости (faker нужен для DemoSeeder).
Обновить версию
На 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 (после покупки домена)
- DNS: A-запись
test.<домен>(и/илиdemo.<домен>для subdomain-tenant) →111.88.246.137. - На сервере: в
/etc/nginx/sites-available/liderraзаменитьserver_name _;на домен,nginx -t && systemctl reload nginx. sudo certbot --nginx -d test.<домен> --non-interactive --agree-tos -m <email> --redirect.- В
.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).