Files
homelab/ansible/roles/traefik/templates/routes.yml.j2
T
Adyrem 7ba749c620
Ansible Lint / lint (push) Successful in 4s
Add Proxmox host role, WireGuard VPN, and public Gitea via Traefik HTTPS
Proxmox host role:
- Admin user setup, SSH hardening (port 2222, no root login)
- claude-code SFTP chroot user
- Unattended upgrades, DuckDNS dynamic DNS updater (vault-encrypted token)
- WireGuard VPN server (10.10.10.0/24) with Fedora client registered
- Proxmox firewall management via pvesh API (idempotent Python script)

Public Gitea exposure:
- Traefik: add HTTPS entrypoint, Let's Encrypt ACME (HTTP-01), StripPrefix
  middleware for /git subpath, HTTP→HTTPS redirect
- Gitea ROOT_URL updated to https://adyrem.duckdns.org/git/
- Pi-hole split DNS: adyrem.duckdns.org → 10.10.1.3 for internal hairpin bypass

SSH config fixes:
- StrictHostKeyChecking no → accept-new across all hosts
- Proxmox jump host: port 2222, user adyrem (root login disabled)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 04:06:56 +02:00

52 lines
1.3 KiB
Django/Jinja

http:
routers:
{% for svc in traefik_services %}
{{ svc.name }}-internal:
rule: "Host(`{{ svc.host }}`)"
service: {{ svc.name }}
entryPoints:
- web
{% if svc.public_host is defined %}
{{ svc.name }}-public-redirect:
rule: "Host(`{{ svc.public_host }}`){% if svc.public_path is defined %} && PathPrefix(`{{ svc.public_path }}`){% endif %}"
service: {{ svc.name }}
entryPoints:
- web
middlewares:
- redirect-https
{{ svc.name }}-public:
rule: "Host(`{{ svc.public_host }}`){% if svc.public_path is defined %} && PathPrefix(`{{ svc.public_path }}`){% endif %}"
service: {{ svc.name }}
entryPoints:
- websecure
tls:
certResolver: letsencrypt
{% if svc.strip_prefix is defined %}
middlewares:
- {{ svc.name }}-strip-prefix
{% endif %}
{% endif %}
{% endfor %}
middlewares:
redirect-https:
redirectScheme:
scheme: https
permanent: true
{% for svc in traefik_services %}
{% if svc.strip_prefix is defined %}
{{ svc.name }}-strip-prefix:
stripPrefix:
prefixes:
- "{{ svc.strip_prefix }}"
{% endif %}
{% endfor %}
services:
{% for svc in traefik_services %}
{{ svc.name }}:
loadBalancer:
servers:
- url: "{{ svc.backend }}"
{% endfor %}