infra_env: "{{ lookup('env', 'ENVIRONMENT') | default('production') }}"
infra_user_name: "{{ svc_user_name }}"
infra_group_name: "{{ svc_group_name }}"
infra_user_uid: "{{ svc_user_uid }}"
infra_group_gid: "{{ svc_group_gid }}"
infra_tz: Etc/UTC
infra_domain: "{{ svc_domain }}"
infra_domain_ext: ~
infra_manage_directories: true
infra_directory_path: '/opt/infra'
infra_directory_owner: "{{ infra_user_name }}"
infra_directory_group: "{{ infra_group_name }}"
infra_directory_mode: 740
infra_subdirectories:
cfg:
path: "{{ infra_directory_path }}/cfg"
log:
path: "{{ infra_directory_path }}/log"
data:
path: "{{ infra_directory_path }}/data"
infra_restart_policy: 'always'
infra_force_pull: false
infra_use_graylog: true
infra_use_pihole: true
infra_use_unifi: false
infra_use_wireguard: false
infra_use_vaultwarden: true
infra_use_authentik: true
infra_use_godns: false
infra_use_uptimekuma: true
infra_unifi_directories:
log:
path: "{{ infra_subdirectories.log.path }}/unifi"
data:
path: "{{ infra_subdirectories.data.path }}/unifi"
infra_unifi_container_hostname: unifi
infra_unifi_version: latest
infra_unifi_container_image: "ghcr.io/linuxserver/unifi-controller:{{ infra_unifi_version }}"
infra_unifi_container_memory: 4g
svc_traefik_extra_middlewares:
unifi-headers-mwr:
headers:
customRequestHeaders:
Authorization: ''
X-Forwarded-Proto: 'https'
svc_traefik_extra_hosts:
- name: unifi
subdomain: "{{ infra_unifi_container_hostname }}"
shortname: "unifi"
middlewares: [unifi-headers-mwr, lan-mwr]
protocol: https
ip_addr: "{{ ansible_default_ipv4.address }}"
port: "{{ infra_unifi_container_ports.admin }}"
infra_pihole_directories:
log:
path: "{{ infra_subdirectories.log.path }}/pihole"
data:
path: "{{ infra_subdirectories.data.path }}/pihole"
infra_pihole_container_hostname: pihole
infra_pihole_version: latest
infra_pihole_container_image: "ghcr.io/pi-hole/pihole:{{ infra_pihole_version }}"
infra_pihole_container_memory: 2g
infra_pihole_container_ports:
ui: 8053
dns: 53
infra_pihole_password: ~
infra_pihole_extra_hosts: {}
# service.domain.tld: <IP_ADDR>
# service1.domain.tld: <IP_ADDR>
infra_pihole_dnsmasq_listening: all
infra_wireguard_directories:
log:
path: "{{ infra_subdirectories.log.path }}/wireguard"
cfg:
path: "{{ infra_subdirectories.cfg.path }}/wireguard"
infra_wireguard_container_hostname: wg
infra_wireguard_version: latest
infra_wireguard_container_image: "ghcr.io/linuxserver/wireguard:{{ infra_wireguard_version }}"
infra_wireguard_container_memory: 1g
infra_wireguard_container_ports:
vpn: 51820
Peers to create. See https://github.com/linuxserver/docker-wireguardparameters
infra_wireguard_peers: []
# - laptop
# - desktop
# - phone
infra_wireguard_internal_subnet: 10.13.13.0
infra_wireguard_container_dns_servers:
- "{{ ansible_host }}"
- 1.1.1.1
- 1.0.0.1
Settings for the wireguard container. See https://github.com/linuxserver/docker-wireguardparameters
infra_wireguard_settings:
PEERS: "{{ infra_wireguard_peers | join(',') }}"
PEERDNS: auto
PERSISTENTKEEPALIVE_PEERS: all
INTERNAL_SUBNET: "{{ infra_wireguard_internal_subnet }}"
ALLOWEDIPS: '0.0.0.0/0, ::0/0'
LOG_CONFS: 'false'
infra_godns_directories:
cfg:
path: "{{ infra_subdirectories.cfg.path }}/godns"
infra_godns_container_hostname: godns
infra_godns_version: latest
infra_godns_container_image: "ghcr.io/timothyye/godns:{{ infra_godns_version }}"
infra_godns_container_memory: 1g
Settings for the godns container. See https://github.com/TimothyYe/godnsconfiguration-properties
DNS provider to use
infra_godns_provider: Cloudflare
infra_godns_email: ~
infra_godns_password: ~
infra_godns_token: ~
infra_godns_domains: []
# - domain_name: "{{ infra_domain_ext }}"
# sub_domains:
# - "{{ infra_wireguard_container_hostname }}"
infra_godns_ip_type: IPv4
infra_godns_interval: 300
infra_godns_ip4_urls:
- https://api.ipify.org
- https://api.ip.sb/ip
infra_godns_ip6_urls:
- https://ipify.org
infra_godns_resolver: 1.1.1.1
infra_godns_user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36"
infra_godns_socks5_proxy: ~
infra_godns_use_proxy: false
infra_godns_debug_info: false
infra_vaultwarden_directories:
log:
path: "{{ infra_subdirectories.log.path }}/vaultwarden"
data:
path: "{{ infra_subdirectories.data.path }}/vaultwarden"
infra_vaultwarden_container_hostname: vault
infra_vaultwarden_version: "1.29.2"
infra_vaultwarden_container_image: "ghcr.io/dani-garcia/vaultwarden:{{ infra_vaultwarden_version }}"
infra_vaultwarden_container_memory: 1g
Settings for the vaultwarden container. See https://github.com/dani-garcia/vaultwarden/wiki
infra_vaultwarden_settings:
EXTENDED_LOGGING: 'true'
LOG_FILE: /data/logs/vaultwarden.log
LOG_LEVEL: INFO
SIGNUPS_ALLOWED: 'false'
SIGNUPS_DOMAINS_WHITELIST: ''
INVITATIONS_ALLOWED: 'false'
DISABLE_ADMIN_TOKEN: 'false'
PASSWORD_ITERATIONS: '350000'
PASSWORD_HINTS_ALLOWED: 'false'
SHOW_PASSWORD_HINT: 'false'
infra_authentik_directories:
log:
path: "{{ infra_subdirectories.log.path }}/authentik"
data:
path: "{{ infra_subdirectories.data.path }}/authentik"
infra_authentik_container_hostname: authentik
infra_authentik_version: "2023.5.3"
infra_authentik_server_container_image: "ghcr.io/goauthentik/server:{{ infra_authentik_version }}"
infra_authentik_server_container_hostname: "{{ infra_authentik_container_hostname }}-server"
infra_authentik_server_container_memory: 2g
infra_authentik_worker_container_hostname: "{{ infra_authentik_container_hostname }}-worker"
infra_authentik_worker_container_memory: 2g
infra_authentik_redis_container_hostname: "{{ infra_authentik_container_hostname }}-redis"
infra_authentik_redis_version: alpine
infra_authentik_redis_container_image: "docker.io/library/redis:{{ infra_authentik_redis_version }}"
infra_authentik_redis_container_memory: 1g
infra_authentik_db_container_hostname: "{{ infra_authentik_container_hostname }}-db"
infra_authentik_db_version: 12-alpine
infra_authentik_db_container_image: "docker.io/library/postgres:{{ infra_authentik_db_version }}"
infra_authentik_db_container_memory: 1g
infra_authentik_secret_key: ""
infra_authentik_db_user: "authentik"
infra_authentik_db_password: ""
infra_authentik_db_name: "authentik"
Settings for the authentik container. See https://goauthentik.io/docs/installation/configurationauthentik-settings
infra_authentik_settings:
AUTHENTIK_COOKIE_DOMAIN: "{{ infra_domain }}"
AUTHENTIK_LOG_LEVEL: 'INFO'
AUTHENTIK_GEOIP: /geoip/GeoLite2-City.mmdb
AUTHENTIK_DISABLE_UPDATE_CHECK: 'false'
AUTHENTIK_ERROR_REPORTING__ENABLED: 'false'
AUTHENTIK_ERROR_REPORTING__SENTRY_DSN: ""
AUTHENTIK_ERROR_REPORTING__ENVIRONMENT: customer
AUTHENTIK_ERROR_REPORTING__SEND_PII: 'false'
AUTHENTIK_AVATARS: initials
AUTHENTIK_DEFAULT_USER_CHANGE_NAME: 'true'
AUTHENTIK_DEFAULT_USER_CHANGE_EMAIL: 'false'
AUTHENTIK_DEFAULT_USER_CHANGE_USERNAME: 'false'
AUTHENTIK_GDPR_COMPLIANCE: 'true'
AUTHENTIK_DEFAULT_TOKEN_LENGTH: '60'
AUTHENTIK_IMPERSONATION: 'false'
AUTHENTIK_EMAIL__HOST: 'localhost'
AUTHENTIK_EMAIL__PORT: '25'
AUTHENTIK_EMAIL__USERNAME: ""
AUTHENTIK_EMAIL__PASSWORD: ""
AUTHENTIK_EMAIL__USE_TLS: 'false'
AUTHENTIK_EMAIL__USE_SSL: 'false'
AUTHENTIK_EMAIL__TIMEOUT: '10'
AUTHENTIK_EMAIL__FROM: "authentik@{{ infra_domain }}"
infra_graylog_directories:
log:
path: "{{ infra_subdirectories.log.path }}/graylog"
data:
path: "{{ infra_subdirectories.data.path }}/graylog"
infra_graylog_container_hostname: graylog
infra_graylog_version: "5.1.7"
infra_graylog_server_container_image: "graylog/graylog:{{ infra_graylog_version }}"
infra_graylog_server_container_memory: 4g
infra_graylog_db_container_hostname: "{{ infra_graylog_container_hostname }}-db"
infra_graylog_db_version: "5.0"
infra_graylog_db_container_image: "mongo:{{ infra_graylog_db_version }}"
infra_graylog_db_container_memory: 2g
infra_graylog_opensearch_container_hostname: "{{ infra_graylog_container_hostname }}-opensearch"
infra_graylog_opensearch_version: "2.4.0"
infra_graylog_opensearch_container_image: "opensearchproject/opensearch:{{ infra_graylog_opensearch_version }}"
infra_graylog_opensearch_container_memory: 6g
infra_graylog_server_container_ports:
beats: 5044
syslog: 5140
raw: 5555
http: 9000
gelf: 12201
forwarder_data: 13301
forwarder_cfg: 13302
infra_graylog_log_driver: local
infra_graylog_log_options:
max-size: 20m
max-file: '5'
compress: 'true'
infra_graylog_password_secret: "vSQBO0P8JLC//sWG0V1JkvRycKkDXZ6WQN4eOrrALy/JYc8nWsvxMSg29Eel1fscVUfbmpxlNmJEzYf6I3pcK1iXXpdzAhoSiV18I89N7+0QzpcI1ygANBwmRYWLd4Hp"
infra_graylog_password_sha2: "f5dcec9289c446e7099d483f2ed447c990b3868a2fab4ff4a39436c63589c70e"
Settings for the Graylog config. See https://github.com/Graylog2/graylog-dockerconfiguration
infra_graylog_settings: {}
infra_uptimekuma_directories:
log:
path: "{{ infra_subdirectories.log.path }}/uptimekuma"
data:
path: "{{ infra_subdirectories.cfg.path }}/uptimekuma"
infra_uptimekuma_container_hostname: uptime
infra_uptimekuma_version: "1.23.1-alpine"
infra_uptimekuma_container_image: "louislam/uptime-kuma:{{ infra_uptimekuma_version }}"
infra_uptimekuma_container_memory: 1g
uptimekuma extra settings (env vars). See https://github.com/louislam/uptime-kuma/wiki/Environment-Variables
infra_uptimekuma_settings: {}