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=адрес, по порядку; токен каждого берётся из _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