Skip to content

Окружения и конфигурация ​

Предлагается изолировать local, staging и production по данным, секретам и адресам публикаций.

Тестовая генерация не должна менять реальный сайт или использовать его закрытые материалы.

Окружения ​

ОкружениеНазначениеСтатус
LocalРазработка и проверки конкретного checkoutКоманды запуска есть в репозитории
StagingГенерация, публикация, миграции и восстановление на тестовых данныхТребуется подготовить и проверить
ProductionСайты пользователей и рабочие данныеПолный сервис в рамках этого аудита не подтверждён
ДокументацияПубличное описание продуктаРаботает отдельно на DigitalOcean

Для staging нужны отдельные database credentials, пространство файлов и тестовый домен. Тесты не используют production-ключи и не запускают массовые генерации за счёт пользователей.

Локальная работа ​

Запуск и назначение портов определяют AGENTS.md, Makefile и реестр портов текущей рабочей среды. Используем make setup, make dev, make ports. Для работы только с документацией достаточно установки её зависимостей и make dev-docs DOCS_PORT=<свободный-разрешённый-порт>.

В корневом checkout обнаружена незакоммиченная миграция локальных портов; поэтому здесь не закрепляется ещё одна конкурирующая таблица адресов. После изменения checkout проверяем фактический вывод make ports. Остановка checkout через make archive сохраняет общую базу; make down останавливает и её.

Конфигурация приложения ​

НазначениеСуществующие переменные
БазаDATABASE_URL
АвторизацияJWT_SECRET, JWT_EXPIRES_IN
Шифрование настроекSETTINGS_KEY, при ротации SETTINGS_KEY_PREVIOUS
Публичный APIPUBLIC_URL, CORS_ORIGIN
Локальные файлыSTORAGE_DRIVER=local, STORAGE_ROOT
S3-совместимые файлыSTORAGE_DRIVER=s3, S3_BUCKET, S3_ENDPOINT, S3_ACCESS_KEY, S3_SECRET_KEY
Дополнительные параметры S3S3_REGION, S3_FORCE_PATH_STYLE

Значения секретов не помещаем в документацию, клиентскую сборку или логи. Настройки интеграций в текущем приложении также могут храниться в базе; перенос окружения требует согласованного переноса зашифрованных данных и ключа, а не только изменения env.

В существующем образе публичные настройки Nuxt встраиваются при сборке. /api и /admin/ определены в Dockerfile; смена runtime-переменной не переписывает уже собранный JavaScript.

Предлагаемое размещение ​

DigitalOcean остаётся кандидатом для платформы: приложение, отдельный исполнитель, PostgreSQL и S3-совместимые файлы. Cloudflare выбран целевым механизмом доменов в разделе публикации. Размеры ресурсов, регионы, тарифы и конкретные продукты для базы/очереди ещё не утверждены и не закуплены.

Bonsite — маленькие сайты для ваших больших идей.