Docs / Генератор конфига
Генератор конфигурации
Форма работает целиком в браузере: пароль и токены не отправляются на сервер.
На выходе — два файла для установки: зашифрованный конфиг и .env.
Пароль — это PORTAL_TOKEN. Он же ключ шифрования конфига.
Запишите его в .env контура и портала и не теряйте: без него конфиг
не расшифровать, а токены не восстановить.
Параметры
Готово
Скачайте compose для нужного стека и digraph.config.enc.
В контур идут docker-compose.contour.yml и конфиг, в портал —
docker-compose.portal.yml и тот же конфиг. Ключ уже вписан
в compose, отдельные .env или файлы ключей не нужны.
Скачанный compose содержит ключ в открытом виде: храните его как секрет и не коммитьте в git.
AUTH_TOKEN контура:
Он понадобится, чтобы добавить контур в портал. Сохраните его в менеджере секретов.
Пароль и файлы
Пароль портала хранится внутри зашифрованного конфига и в поле
DIGRAPH_CONFIG_KEY скачанного compose. Менять вручную ничего
не нужно.
Команды
# в каталоге с docker-compose.contour.yml и digraph.config.enc
# контур
docker compose -f docker-compose.contour.yml pull
docker compose -f docker-compose.contour.yml up -d
# портал — в своём каталоге, с docker-compose.portal.yml и тем же конфигом
docker compose -f docker-compose.portal.yml pull
docker compose -f docker-compose.portal.yml up -d
Показать зашифрованный конфиг
Как это устроено
- Токены создаются через
crypto.getRandomValues; пароль вводится вами. - Ключ:
PBKDF2-SHA256, 600 000 итераций, 16-байтовая соль. - Шифрование:
AES-256-GCM, AADDG1. - Формат:
DG1.<base64url(salt|nonce|ciphertext)>; blob лежит в файлеdigraph.config.enc. - Compose подключает его через
configs.fileи монтирует в/etc/digraph/config.enc. - Генератор загружает базовый compose с этого сайта и подставляет ключ в
DIGRAPH_CONFIG_KEY. - Сервисы расшифровывают его при старте и читают свою секцию; без файла работает старый режим env/файлов.
Один пароль — один ключ. Все сервисы стека получают один и тот же blob и один ключ, поэтому портал и sidecar'ы технически могут расшифровать весь конфиг. Если нужна изоляция, позже добавим отдельные blob'ы по ролям.