Руководства по развёртыванию, секретам, доменам и управлению контейнерами.

Переменные окружения и секреты

Почему токены хранятся в машине, а не в панели, и как их передать приложению. · обновлено 2026-10-06

Главное решение платформы: секреты приложения живут на машине клиента, а не в панели. Панель передаёт их агенту по защищённому каналу в момент создания или изменения, а хранит только отпечаток (sha256). Поэтому утечка базы панели не раскрывает ни один токен.

Где что лежит

Данные Где хранятся Права
секреты приложения (токены, пароли, строки подключения) на вашей машине, вне панели закрыты для посторонних
манифест приложения (имя, репозиторий, ветка, тип сборки) на вашей машине доступен только root
отпечаток секрета база панели —

Как задать секреты

Секреты задаются в карточке приложения в панели: панель отправляет их агенту, агент записывает файл и подставляет переменные в окружение контейнеров. Формат — пары «имя=значение», по одной на строку.

DATABASE_URL=postgres://user:password@db:5432/app
APP_KEY=base64:случайная-строка
SMTP_PASSWORD=пароль-от-почты

Правила, которые стоит соблюдать

  1. Не коммитьте секреты в репозиторий. Даже приватный репозиторий читают CI, коллеги и вы сами через год — токен всё равно утечёт.
  2. Один секрет — одно место. Если значение меняется в панели, не дублируйте его в compose-файле: иначе получится «какой из двух настоящий».
  3. Ротируйте токены. При смене значения в панели агент перезаписывает файл и перезапускает приложение — старый токен перестаёт действовать.
  4. Смотрите, что печатаете. В журналах приложения значения переменных маскируются, но print(env) в собственном коде — самый частый способ утечь самому.

Проверка

Убедиться, что секреты дошли, можно в карточке приложения: панель показывает список имён (без значений) и время последнего обновления.

Значения в панели не показываются никогда — если токен потерян, его нужно заменить новым.