---
# -- --
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: |
[39;49m[39;49m--[38;5;137m|[39;49m [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m [38;5;137m~[39;49m welcome to [38;5;137m~[39;49m [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m [38;5;137m.-.[39;49m [38;5;137m _[39;49m [38;5;137m.--.[39;49m [38;5;137m.--.[39;49m [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m :.: [38;5;137m:[39;49m_[38;5;137m;[39;49m : .-': .-' [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m :.: .-.[38;5;137m.---.[39;49m [38;5;137m.--.[39;49m [38;5;137m.--.[39;49m : `; : `;[38;5;137m.--.[39;49m [38;5;137m.--.[39;49m [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m :.:_ : :`-'_.' [38;5;137m_[39;49m ' ..'' .; :: : : :' '_.'' '_.' [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m `.__;:_;`.___;:_;`.__.'`.__.':_; :_;`.__.'`.__.' [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m [38;5;137m~[38;5;94m₊[38;5;137m˚[38;5;94m⊹[39;49m [38;5;137m⋆˚[38;5;94m✿˖[38;5;137m°~[39;49m [38;5;137m-────[38;5;94m୨ৎ[38;5;137m────-[39;49m [38;5;137m~[38;5;94m₊˚⊹ [38;5;137m⋆˚[38;5;94m✿˖[38;5;137m°~[39;49m [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠤⠒⠉⠉⠉[38;5;94m⣀⣂⣅⠬⡉⠭[39;49m⢛⠿⢟⡶⣄⡀⠀⠀⠀⠀ we'll get brewing [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⠀⠀⠀⠀⠀⠀⣠⠞⠁⠀[38;5;94m⣄⢎⢩⢸[38;5;137m⢉⣵⡖⢰⣶⣮[38;5;94m⢹⣦⣡⢊[39;49m⢻⡿⣦⠀⠀⠀ right away! [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⠀⠀⠀⠀⠀⢠⡇⠀⠀[38;5;94m⢎⠕⢭⢪⡶[38;5;137m⠈⢿⣷⣿⠟⣋[38;5;94m⣚⣯⣒⣣⡑⢨[39;49m⢻⡇⠀⣀⣀⠀⠀⠀ [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⠀⠀⠀⠀⣀⡼⣧⠀[38;5;94m⠄⡊⢼⡩⣾⢌⠳⡜[38;5;137m⣉⡠[38;5;94m⡜⡞⣵⣊⡧⡠⠝⣣[39;49m⡾⠁⠀⠻⠿⠗⠀⠀ /) /) (\ (\ [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⠀⠀⣢⣾⡟⣥⠻⣷⣌[38;5;94m⡀⠬⡘⢅⡟⡇⡮⣷⡾⡿⢋⣉⢣[39;49m⢔⣎⠿⠊⠀⠀⡴⣛⠆⠌⠀⠀ ( . .) (. . ) [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⢀⣶⡟⣡⣿⣿⣟⢯⣟⢿⣷⣶⣯⣬⣵⣾⣷⣶⡾⠧⠞⠓⠉⠀⠀⠀⢀⠘⠈⠀⠠⢘⡤⠀ ( づ ˚[38;5;201m♡[39;49m︎˖ ⊂ ) [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠄⣾⠏⣐⣛⡻⢿⣿⣯⣿⣿⣿⣾⣽⣛⣍⢃⡂⢄⠀⡀⠀⡀⠄⢂⠄⠡⢈⠒⡈⢒⠘⠴⢀⠀ [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⢰⣿⠀⠈⠻⣜⣄⠈⢙⣾⢿⣿⣿⣿⡿⣜⢣⡜⢢⠁⠄⡐⢠⢉⠂⠌⠀⡀⠄⠐⡀⠄⠐⠀⢐ ___ [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠸⣟⠀⡐⡅⠈⠑⠀⠊⠝⠈⢖⡿⠿⣿⣾⡱⢊⠅⡌⡰⢌⢆⠣⠈⢀⠐⠀⠄⠂⠠⡈⠠⣈⡧ (...) [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⢿⣆⠱⣘⣧⣤⣀⣀⡀⢒⡥⣑⢨⠒⡰⠯⠾⡼⠶⠙⢈⠀⣀⠂⡄⢂⣁⢢⣑⣶⡽⣳⠟⠁ _ \ _ [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⠀⠻⣧⡜⢹⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣴⡀⡀⠀⠛⠺⢿⣶⣿⣾⣷⣿⣿⣿⢟⣵⠏⠀⠀ ('> <') [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⠀⠀⠈⠿⣶⣉⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣧⣤⢀⠀⠀⠈⠉⠙⠻⣯⡷⠟⠁⠀⠀⠀ (v) (v) [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⠀⠀⠀⠀⠈⠙⠿⣶⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣞⣤⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀\(__w w__)/ [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠛⠛⠿⠿⠿⠿⠿⠿⠛⠛⠛⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m [38;5;137m|[39;49m--[39;49m[39;49m
--[38;5;137m|[39;49m [38;5;137m|[39;49m--[39;49m[39;49m
# -- --