Files
technitium-console/docs/compose.hub.example.yaml
T
DenozordecandClaude Opus 5.5 57e492cceb Hub stage 4: config history, rollback, drift check, baseline export and import
Every saved config, and every earlier baseline, is listed per app. You
can view it, diff it against a server's current config, and roll it back
through preview and apply. Earlier baselines can be restored.

A drift check (HUB_DRIFT_MINUTES, default 15) compares each server with
its effective config. Drift shows in the header and the matrix, with
Accept as baseline and Revert to baseline. All baselines export to one
file. Importing that file shows a dry run before it writes.

Rolling back preselects, and diffs against, the server the version came
from. The line-diff op "del" is renamed to "remove" for the language lint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 19:57:33 +07:00

64 lines
3.1 KiB
YAML

version: "3.8"
# Хаб: одна консоль со статистикой нескольких серверов Technitium (см. hub/README.md).
# Подключается к уже работающему Traefik из compose.shnt.example.yaml (сеть dns-net).
#
# На КАЖДОМ сервере Technitium, один раз:
# 1. Administration > Groups: группа hub-readers, ей право только View на Dashboard, Logs,
# Apps (список приложений логирования для Query Logs) и Settings (состояние блокировки).
# 2. Administration > Users: пользователь hub-reader в этой группе.
# 3. Войти под ним и создать токен: Administration > Sessions > Create API Token.
# Токены кладутся в .env рядом с этим файлом (не в git):
# MDNS_TOKEN=...
# NDNS_TOKEN=...
# MDNS_ADMIN_TOKEN=... # токены hub-admin (Modify и Delete только на Apps): нужны, чтобы хаб менял приложения
# NDNS_ADMIN_TOKEN=...
# HUB_USER=... # логин в сам хаб
# HUB_PASSWORD=... # первый вход; затем пользователи в /data/users.json (docs/hub-deploy.md, шаг 4a)
#
# Обновление: docker compose pull technitium-hub && docker compose up -d technitium-hub
services:
technitium-hub:
image: git.shx.one/denozord/technitium-hub:latest
container_name: technitium-hub
restart: unless-stopped
networks:
- dns-net
volumes:
- technitium-hub-data:/data
environment:
# id=адрес, по порядку; токен каждого берётся из <ID>_TOKEN
- HUB_SERVERS=mdns=https://mdns.shnt.top,ndns=https://ndns.shnt.top
- MDNS_TOKEN=${MDNS_TOKEN}
- NDNS_TOKEN=${NDNS_TOKEN}
- MDNS_ADMIN_TOKEN=${MDNS_ADMIN_TOKEN}
- NDNS_ADMIN_TOKEN=${NDNS_ADMIN_TOKEN}
# Только пока нет /data/users.json; потом пользователи создаются через users-cli (docs/hub-deploy.md)
- HUB_USER=${HUB_USER}
- HUB_PASSWORD=${HUB_PASSWORD}
- HUB_DATA=/data
# За Traefik: брать адрес клиента из X-Forwarded-For (для ограничения попыток входа и журнала)
- HUB_TRUST_PROXY=1
# Как часто проверять, что конфиги серверов не разошлись с эталоном (минуты, 0 выключает)
# - HUB_DRIFT_MINUTES=15
- HUB_DOMAIN=dnss.shnt.top
- TZ=Asia/Novosibirsk
labels:
- "traefik.enable=true"
- "traefik.docker.network=dns-net"
- "traefik.http.routers.hub.rule=Host(`dnss.shnt.top`)"
- "traefik.http.routers.hub.entrypoints=websecure"
- "traefik.http.routers.hub.tls.certresolver=myresolver"
- "traefik.http.routers.hub.service=hub-svc"
- "traefik.http.services.hub-svc.loadbalancer.server.port=8080"
volumes:
technitium-hub-data:
networks:
dns-net:
external: true
name: dns-net