--- # -- -- timezone: "America/Los_Angeles" # -- -- # -- -- ansible_user: serve # -- -- # -- -- loadbalancer_ip: "10.128.0.200" homelab_network: "10.128.0.0/16" swarm_network: "10.0.0.0/8" docker_network: "172.16.0.0/12" headnet_network: "100.64.0.0/10" rfc1918_cgnat_networks: - 10.0.0.0/8 - "{{ docker_network }}" - 192.168.0.0/16 - "{{ headnet_network }}" # -- -- # -- -- domain: "liz.coffee" idm_domain: "idm.{{ domain }}" headscale_host: "vpn.{{ domain }}" headscale_nodes_domain: "in.{{ domain }}" mail_domain: "mail.{{ domain }}" oci_domain: "oci.{{ domain }}" passwd_domain: "passwd.{{ domain }}" oauth_proxy_domain: "fwdauth.{{ domain }}" outbound_domain: "outbound.{{ domain }}" # -- -- # -- -- docker_gid: 995 # -- -- # -- -- info_mail_user: "info" info_mail: "{{ info_mail_user }}@{{ domain }}" # see secret for info mail password # -- -- # -- -- traextor_base: "{{ swarm_base }}/traextor" letsencrypt_certs: "{{ traextor_base }}/volumes/certs/letsencrypt" # -- -- # -- -- # first deployment? homelab_build: false # -- -- # -- -- deployment_time: "{{ now(utc=true,fmt='%s') }}" # -- -- # -- -- admins: "coffee_admins@{{ idm_domain }}" # -- -- # -- -- me_lizcoffee_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDRHu3h9mDjQyFbojcxGKW0hPUDfgUmb2WCzd4Dv2qISM3GGt9LjD8o0IbWRNaTf5UyId5lu7wNHtygs5ZDfUVnlfxrI1CmoExuqkYFjy+R9Cu0x1J2w7+MrKPBd5akLCuKTTnXbyv79T0tLb07rCpGHojW8HH6wdDtg0siVqsPqZVTjg7WGbBYqiqlA5p8s+V9xN1q8lTOZrRI0PdgoU8W+1oIr9OHSG1ZeUBQx60izTEwMnWBxY2aA8SQolIVvsJCcMMc/EAnaz/rdJ5IkeqXGslIhUI7WCPHnPWN8CSdwMOLi5BNaOAK7Y2FkfKTUlO7I52BL87Cl3YpMxR0mTDrfSJTSp0B3ZAbUIXDA7biSh04YLwGQVI799vcyJf355A60btPaiuiBgI0am3h0WxnOACg7K6eV023EiUQ24UjlQ8pufHcJ1oDW8v6LHlp/atCWOl9KQIun9UUg8DD8/BLPprc0wzAV6Nco0ZIedouxZuUhduYYvUrLJ+ICpaZg6oPGitVJPIgyyI+WTfjRN4WTj/Z3Yhuj0RqF8b5ea4FNWuJtfF724t7SVnZsYlZGSCqL8gaEzbIATVe3THn5VwbK+S4ELD/9W6MOd6aZcTOK2yP3jlwjcjnW8sLuX+2qNwtSVVa4o5VsRZU40Da+3flzoBsyUwSE3H2PsFPH29lIQ== lizzy@yubikey" # -- -- # -- -- mesh: lucina: gateway: "10.128.0.44" domain: "lucina.cloud" forward_dns: true split_vpn_dns_to: "10.128.0.44" private_records: [] public_healthchecks: [] private_healthchecks: [] liz: gateway: "{{ loadbalancer_ip }}" domain: "{{ domain }}" forward_dns: false split_vpn_dns_to: "{{ loadbalancer_ip }}" public_healthchecks: - "https://{{ domain }}" - "https://{{ idm_domain }}/status" - "https://{{ headscale_host }}/health" - "https://fwdauth.{{ domain }}/oauth2/sign_in" - "https://test.{{ domain }}/" - "https://graph.{{ domain }}/" - "https://src.{{ domain }}/" private_healthchecks: - "https://mon.{{ domain }}" - "https://bin.{{ domain }}" - "https://ci.{{ domain }}" - "https://notes.{{ domain }}" private_records: - type: "A" name: "piplup.{{ domain }}" ip: "10.128.0.101" - type: "A" name: "borg.{{ domain }}" ip: "10.128.0.115" - type: "A" name: "togepi.{{ domain }}" ip: "10.128.0.102" - type: "A" name: "roton.{{ domain }}" ip: "10.128.0.103" - type: "A" name: "{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "oci.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "ci.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "test.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "bin.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "idm.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "kanban.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "loadbalancer.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "notes.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "passwd.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "pihole.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "proxy.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "src.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "fwdauth.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "swarm.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "traefik.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "prometheus.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "mon.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "graph.{{ domain }}" ip: "{{ loadbalancer_ip }}" - type: "A" name: "ansi.{{ domain }}" ip: "{{ loadbalancer_ip }}" # -- -- # -- -- logo: | --| |-- --| ~ welcome to ~ |-- --| |-- --| .-. _ .--. .--. |-- --| :.: :_; : .-': .-' |-- --| :.: .-..---. .--. .--. : `; : `;.--. .--. |-- --| :.:_ : :`-'_.' _ ' ..'' .; :: : : :' '_.'' '_.' |-- --| `.__;:_;`.___;:_;`.__.'`.__.':_; :_;`.__.'`.__.' |-- --| |-- --| ~₊˚⊹ ⋆˚✿˖°~ -────୨ৎ────- ~₊˚⊹ ⋆˚✿˖°~ |-- --| ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ |-- --| ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠤⠒⠉⠉⠉⣀⣂⣅⠬⡉⠭⢛⠿⢟⡶⣄⡀⠀⠀⠀⠀ we'll get brewing |-- --| ⠀⠀⠀⠀⠀⠀⠀⣠⠞⠁⠀⣄⢎⢩⢸⢉⣵⡖⢰⣶⣮⢹⣦⣡⢊⢻⡿⣦⠀⠀⠀ right away! |-- --| ⠀⠀⠀⠀⠀⠀⢠⡇⠀⠀⢎⠕⢭⢪⡶⠈⢿⣷⣿⠟⣋⣚⣯⣒⣣⡑⢨⢻⡇⠀⣀⣀⠀⠀⠀ |-- --| ⠀⠀⠀⠀⠀⣀⡼⣧⠀⠄⡊⢼⡩⣾⢌⠳⡜⣉⡠⡜⡞⣵⣊⡧⡠⠝⣣⡾⠁⠀⠻⠿⠗⠀⠀ /) /) (\ (\ |-- --| ⠀⠀⠀⣢⣾⡟⣥⠻⣷⣌⡀⠬⡘⢅⡟⡇⡮⣷⡾⡿⢋⣉⢣⢔⣎⠿⠊⠀⠀⡴⣛⠆⠌⠀⠀ ( . .) (. . ) |-- --| ⠀⢀⣶⡟⣡⣿⣿⣟⢯⣟⢿⣷⣶⣯⣬⣵⣾⣷⣶⡾⠧⠞⠓⠉⠀⠀⠀⢀⠘⠈⠀⠠⢘⡤⠀ ( づ ˚♡︎˖ ⊂ ) |-- --| ⠄⣾⠏⣐⣛⡻⢿⣿⣯⣿⣿⣿⣾⣽⣛⣍⢃⡂⢄⠀⡀⠀⡀⠄⢂⠄⠡⢈⠒⡈⢒⠘⠴⢀⠀ |-- --| ⢰⣿⠀⠈⠻⣜⣄⠈⢙⣾⢿⣿⣿⣿⡿⣜⢣⡜⢢⠁⠄⡐⢠⢉⠂⠌⠀⡀⠄⠐⡀⠄⠐⠀⢐ ___ |-- --| ⠸⣟⠀⡐⡅⠈⠑⠀⠊⠝⠈⢖⡿⠿⣿⣾⡱⢊⠅⡌⡰⢌⢆⠣⠈⢀⠐⠀⠄⠂⠠⡈⠠⣈⡧ (...) |-- --| ⠀⢿⣆⠱⣘⣧⣤⣀⣀⡀⢒⡥⣑⢨⠒⡰⠯⠾⡼⠶⠙⢈⠀⣀⠂⡄⢂⣁⢢⣑⣶⡽⣳⠟⠁ _ \ _ |-- --| ⠀⠀⠻⣧⡜⢹⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣴⡀⡀⠀⠛⠺⢿⣶⣿⣾⣷⣿⣿⣿⢟⣵⠏⠀⠀ ('> <') |-- --| ⠀⠀⠀⠈⠿⣶⣉⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣧⣤⢀⠀⠀⠈⠉⠙⠻⣯⡷⠟⠁⠀⠀⠀ (v) (v) |-- --| ⠀⠀⠀⠀⠀⠈⠙⠿⣶⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣞⣤⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\(__w w__)/ |-- --| ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠛⠛⠿⠿⠿⠿⠿⠿⠛⠛⠛⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ |-- --| |-- --| |-- colored_logo: | \033[39;49m\033[39;49m--\033[38;5;137m|\033[39;49m \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m \033[38;5;137m~\033[39;49m welcome to \033[38;5;137m~\033[39;49m \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m \033[38;5;137m.-.\033[39;49m \033[38;5;137m _\033[39;49m \033[38;5;137m.--.\033[39;49m \033[38;5;137m.--.\033[39;49m \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m :.: \033[38;5;137m:\033[39;49m_\033[38;5;137m;\033[39;49m : .-': .-' \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m :.: .-.\033[38;5;137m.---.\033[39;49m \033[38;5;137m.--.\033[39;49m \033[38;5;137m.--.\033[39;49m : `; : `;\033[38;5;137m.--.\033[39;49m \033[38;5;137m.--.\033[39;49m \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m :.:_ : :`-'_.' \033[38;5;137m_\033[39;49m ' ..'' .; :: : : :' '_.'' '_.' \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m `.__;:_;`.___;:_;`.__.'`.__.':_; :_;`.__.'`.__.' \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m \033[38;5;137m~\033[38;5;94m₊\033[38;5;137m˚\033[38;5;94m⊹\033[39;49m \033[38;5;137m⋆˚\033[38;5;94m✿˖\033[38;5;137m°~\033[39;49m \033[38;5;137m-----\033[38;5;94m୨ৎ\033[38;5;137m-----\033[39;49m \033[38;5;137m~\033[38;5;94m₊˚⊹ \033[38;5;137m⋆˚\033[38;5;94m✿˖\033[38;5;137m°~\033[39;49m \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠤⠒⠉⠉⠉\033[38;5;94m⣀⣂⣅⠬⡉⠭\033[39;49m⢛⠿⢟⡶⣄⡀⠀⠀⠀⠀ we'll get brewing \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⠀⠀⠀⠀⠀⠀⣠⠞⠁⠀\033[38;5;94m⣄⢎⢩⢸\033[38;5;137m⢉⣵⡖⢰⣶⣮\033[38;5;94m⢹⣦⣡⢊\033[39;49m⢻⡿⣦⠀⠀⠀ right away! \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⠀⠀⠀⠀⠀⢠⡇⠀⠀\033[38;5;94m⢎⠕⢭⢪⡶\033[38;5;137m⠈⢿⣷⣿⠟⣋\033[38;5;94m⣚⣯⣒⣣⡑⢨\033[39;49m⢻⡇⠀⣀⣀⠀⠀⠀ \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⠀⠀⠀⠀⣀⡼⣧⠀\033[38;5;94m⠄⡊⢼⡩⣾⢌⠳⡜\033[38;5;137m⣉⡠\033[38;5;94m⡜⡞⣵⣊⡧⡠⠝⣣\033[39;49m⡾⠁⠀⠻⠿⠗⠀⠀ /) /) (\ (\ \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⠀⠀⣢⣾⡟⣥⠻⣷⣌\033[38;5;94m⡀⠬⡘⢅⡟⡇⡮⣷⡾⡿⢋⣉⢣\033[39;49m⢔⣎⠿⠊⠀⠀⡴⣛⠆⠌⠀⠀ ( . .) (. . ) \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⢀⣶⡟⣡⣿⣿⣟⢯⣟⢿⣷⣶⣯⣬⣵⣾⣷⣶⡾⠧⠞⠓⠉⠀⠀⠀⢀⠘⠈⠀⠠⢘⡤⠀ ( づ ˚\033[38;5;201m♡\033[39;49m︎˖ ⊂ ) \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠄⣾⠏⣐⣛⡻⢿⣿⣯⣿⣿⣿⣾⣽⣛⣍⢃⡂⢄⠀⡀⠀⡀⠄⢂⠄⠡⢈⠒⡈⢒⠘⠴⢀⠀ \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⢰⣿⠀⠈⠻⣜⣄⠈⢙⣾⢿⣿⣿⣿⡿⣜⢣⡜⢢⠁⠄⡐⢠⢉⠂⠌⠀⡀⠄⠐⡀⠄⠐⠀⢐ ___ \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠸⣟⠀⡐⡅⠈⠑⠀⠊⠝⠈⢖⡿⠿⣿⣾⡱⢊⠅⡌⡰⢌⢆⠣⠈⢀⠐⠀⠄⠂⠠⡈⠠⣈⡧ (...) \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⢿⣆⠱⣘⣧⣤⣀⣀⡀⢒⡥⣑⢨⠒⡰⠯⠾⡼⠶⠙⢈⠀⣀⠂⡄⢂⣁⢢⣑⣶⡽⣳⠟⠁ _ \ _ \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⠀⠻⣧⡜⢹⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣴⡀⡀⠀⠛⠺⢿⣶⣿⣾⣷⣿⣿⣿⢟⣵⠏⠀⠀ ('> <') \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⠀⠀⠈⠿⣶⣉⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣧⣤⢀⠀⠀⠈⠉⠙⠻⣯⡷⠟⠁⠀⠀⠀ (v) (v) \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⠀⠀⠀⠀⠈⠙⠿⣶⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣞⣤⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\(__w w__)/ \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠛⠛⠿⠿⠿⠿⠿⠿⠛⠛⠛⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m --\033[38;5;137m|\033[39;49m \033[38;5;137m|\033[39;49m--\033[39;49m\033[39;49m # -- --