---
# nocheck: playwright-service-flag
logout:
bond: 1
enabled: "{{ 'web-svc-logout' in group_names }}"
shared: "{{ 'web-svc-logout' in group_names }}"
# nocheck: playwright-service-flag
dashboard:
bond: 1
enabled: "{{ 'web-app-dashboard' in group_names }}"
shared: "{{ 'web-app-dashboard' in group_names }}"
# nocheck: playwright-service-flag
matomo:
bond: 1
enabled: "{{ 'web-app-matomo' in group_names }}"
shared: "{{ 'web-app-matomo' in group_names }}"
# nocheck: dynamic-flag
# nocheck: playwright-service-flag
email:
enabled: false
shared: false
# nocheck: dynamic-flag - gated on services.sso.enabled, not on group_names
# nocheck: playwright-service-flag - runtime DOM patch (injected logout), no probe-able surface flag
javascript:
bond: 1
enabled: "{{ lookup('config', 'web-app-pihole', 'services.sso.enabled') | bool }}"
shared: "{{ lookup('config', 'web-app-pihole', 'services.sso.enabled') | bool }}"
# nocheck: playwright-service-flag
prometheus:
bond: 1
enabled: "{{ 'web-app-prometheus' in group_names }}"
shared: "{{ 'web-app-prometheus' in group_names }}"
ready_path: admin/
# nocheck: playwright-service-flag
# nocheck: variants-coverage β sso-variant-tor requires the onion on in every variant, so the false polarity has no variant left to live in
tor:
bond: 0.5
enabled: "{{ 'svc-net-tor' in group_names }}"
shared: true # nocheck: dynamic-flag
design:
bond: 1
enabled: "{{ 'web-svc-design' in group_names }}"
shared: "{{ 'web-svc-design' in group_names }}"
title: "Pi-hole"
slots:
logo:
width: 256
height: 256
# nocheck: playwright-service-flag
sso:
bond: 1
enabled: "{{ 'web-app-keycloak' in group_names }}"
shared: "{{ 'web-app-keycloak' in group_names }}"
flavor: oauth2
oauth2:
origin:
host: pihole
port: "80"
allowed_groups:
- "{{ lookup('rbac_group_path', application_id='web-app-pihole', role='administrator') }}"
pihole:
backup:
stop_required: true
healthcheck:
flavor: tcp
modes:
compose:
enabled: true
swarm:
enabled: false
image: pihole/pihole
version: "2026.10.1"
upstream_dns: "{{ NETWORK_PUBLIC_DNS_RESOLVERS }}"
cpus: "0.5"
mem_reservation: "128m"
mem_limit: "256m"
min_storage: "243MB"
pids_limit: 512
ports:
internal:
http: 80
local:
http: 8078
sso: 16508
sso_onion: 16542
run_after:
- web-app-keycloak
lifecycle: beta
# nocheck: dynamic-flag
# nocheck: playwright-service-flag, dynamic-flag infrastructure backup consumer
container_backup: # nocheck: bond-baseline backup host joins outside the variant topology
bond: 1
enabled: "{{ 'svc-bkp-volume-2-local' in group_names }}"
shared: true
docs:
bond: 0.5
enabled: "{{ 'web-app-docs' in group_names }}"
shared: "{{ 'web-app-docs' in group_names }}"