Zones, Cache, Blocking, DNS Client, Settings, DHCP and Logs can now be changed on one chosen server through the hub, with that server's admin token. Operators manage cache and blocking; admins also zones, settings and DHCP. Under "All servers", or on a server without an admin token, the controls are disabled with a hint. The hub refuses settings/set changes to a server's web service fields and anything about users, SSO or LDAP; backup, restore, log and stats deletion and admin/* stay refused. Non-admins get settings with secrets blanked. Write params travel in the POST body, downloads pass through with a single-use token, and the audit log names no values. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
64 lines
3.2 KiB
YAML
64 lines
3.2 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 только в разделах, которыми управляете из хаба, см. docs/hub-deploy.md): нужны, чтобы хаб менял приложения и серверы
|
|
# 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
|