Users in HUB_DATA/users.json with scrypt hashes and roles (viewer, operator, apps-admin, admin), managed by hub/users-cli.ts; HUB_USER/HUB_PASSWORD remain a bootstrap admin while the file does not exist. Five failed logins in 15 minutes lock the address or the name for 15 minutes. Logins, logouts and every refused request go to a JSON Lines audit log that admins read through hub/audit/list. Endpoints are listed in routes.ts with their kind and capability; writes stay refused for now. Optional <ID>_ADMIN_TOKEN is read for the coming write stages. The management plan is in docs/hub-management-plan.md. Co-Authored-By: Claude Opus 5.5 <[email protected]>
58 lines
2.6 KiB
YAML
58 lines
2.6 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=...
|
|
# 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}
|
|
# Только пока нет /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
|
|
- 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
|