Секреты и конфигурация¶
Принцип: в 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.example — WINDMILL_POSTGRES_PASSWORD (свой Postgres, ADR 0001).
- stacks/eventgate/.env.example — EVENTGATE_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).