Перейти к содержанию

Секреты и конфигурация

Принцип: в git — только имена, значения — в Infisical. Репозиторий описывает, какие секреты нужны и откуда берутся; сами значения не коммитятся никогда (см. ../.gitignore).

Инвентарь

Переменная Назначение Тип
INNGEST_EVENT_KEY Аутентификация отправки событий в Event API секрет hex
INNGEST_SIGNING_KEY Подпись связи SDK ↔ движок (обязателен) секрет hex
INNGEST_POSTGRES_PASSWORD Пароль Postgres под Inngest секрет
NATS_INTERNAL_PASSWORD Пароль внутреннего пользователя шины (мост/ops) секрет
INNGEST_BASICAUTH_USER Логин Basic Auth дашборда (сайдкар inngest-auth) конфиг
INNGEST_BASICAUTH_HASH bcrypt-хэш пароля дашборда секрет

Генерация hex-ключей: openssl rand -hex 32 (пароли — openssl rand -hex 24).

⚠️ INNGEST_BASICAUTH_HASH (bcrypt) содержит $. Coolify прогоняет значения через интерполяцию compose (--env-file), которая съедает $<буквы>. Поэтому в Coolify каждый $ в хэше экранируй как $$ (внутри контейнера он схлопнется обратно в $). Проверено: без экранирования часть хэша теряется.

Авторизация шины включена (ws смотрит наружу), поэтому NATS_INTERNAL_PASSWORD обязателен — без него NATS не стартует. Имя подставляется в stacks/bus/nats/nats-server.conf через $NATS_INTERNAL_PASSWORD.

Будущие (по мере роста): - INFISICAL_CLIENT_ID / INFISICAL_CLIENT_SECRET / INFISICAL_PROJECT_ID — bootstrap Machine Identity (Фаза 2). - NATS_EXT_<УЧАСТНИК>_PASSWORD — по паролю на каждого внешнего участника (напр. NATS_EXT_TRANSCRIBER_PASSWORD), добавляется при онбординге (см. external-access.md).

Отдельные стеки держат свой инвентарь рядом: - stacks/windmill/.env.exampleWINDMILL_POSTGRES_PASSWORD (свой Postgres, ADR 0001). - stacks/eventgate/.env.exampleEVENTGATE_KEYS (JSON «API-ключ → subject'ы», ключи-секреты) + NATS_INTERNAL_PASSWORD.

Доставка значений — две фазы

Фаза 1 (сейчас). Источник правды значений — Infisical. В рантайм они попадают как обычные переменные окружения Coolify (заполняются из Infisical вручную при настройке ресурса). Репозиторий чист, деплой едет.

Фаза 2 (когда Infisical настроен). Ручной синк заменяется автоматической доставкой: - наш мостinfisical run -- <cmd> по Machine Identity (в Coolify живёт только bootstrap-идентичность, остальное инжектится в рантайме); - чужие образы (Postgres/Redis/Inngest/NATS) — через *_FILE-конвенцию или агент-сайдкар, т.к. оборачивать их в infisical run неудобно.

Инвентарь выше не меняется при переходе — мигрирует только способ доставки.

Правила

  • Новый секрет → сначала строка в этой таблице и в ../stacks/bus/.env.example, потом использование в коде/compose.
  • .env — только локально, в git не попадает.
  • Секрет нигде не логируется и не кладётся в subject события (см. naming.md).