Files
server_cloud_ladkau_de/ansible/group_vars/all/vars.yml
T
ml 187c6bdea4 Add Dovecot IMAP + Fetchmail, fix Gitea SSO, simplify credential management
- Add local Dovecot IMAP server exposed via Traefik IMAPS on port 993;
  Roundcube now connects to it internally instead of requiring manual server entry
- Add Fetchmail integration for pulling from external POP3 accounts with
  configurable per-account poll interval
- Fix Gitea SSO registration: DISABLE_REGISTRATION=false + ALLOW_ONLY_EXTERNAL_REGISTRATION
  allows Keycloak-authenticated users to get accounts while blocking public sign-up;
  disable legacy OpenID 2.0 sign-in
- Fix Keycloak post-logout redirect for Nextcloud (valid post logout redirect URI)
- Replace all pre-hashed credentials (Traefik dashboard, registry, Dovecot) with
  plaintext passwords in vault; Ansible generates deterministic bcrypt/SHA-512 hashes
  at deploy time — no more manual htpasswd commands
- Rewrite check-vault.sh with Python/PyYAML to properly validate both scalar and
  list-type secrets
- Update provisioning and configuration runbooks throughout
2026-06-28 14:13:53 +02:00

102 lines
3.4 KiB
YAML

---
# Domains
domain_base: ladkau.de
domain_cloud: "cloud.{{ domain_base }}"
domain_gitea: "gitea.{{ domain_base }}"
domain_nextcloud: "nextcloud.{{ domain_base }}"
domain_sso: "sso.{{ domain_base }}"
domain_mail: "mail.{{ domain_base }}"
domain_registry: "cr.{{ domain_base }}"
domain_k8s: "k8s.{{ domain_base }}"
# Let's Encrypt
acme_email: matthias.ladkau@gmail.com
# Non-root deploy user created by the base role
deploy_user: deploy
# System timezone
timezone: Europe/Berlin
# Docker network shared by all services and Traefik
traefik_network: traefik_public
# Traefik
traefik_version: v3.6
traefik_data_dir: /opt/traefik
# Dashboard basic-auth users — plaintext passwords, Ansible generates bcrypt hashes at deploy time
# traefik_dashboard_users:
# - username: admin
# password: "your-password"
traefik_dashboard_users: []
# Gitea
gitea_version: "1" # major-only tag — always pulls latest 1.x patch
gitea_db_version: "16" # PostgreSQL major version
gitea_data_dir: /opt/gitea
# Secrets — store values in ansible/group_vars/all/vault.yml (Ansible Vault)
# gitea_db_password: ""
# gitea_secret_key: "" # generate: openssl rand -hex 32
# gitea_internal_token: "" # generate: openssl rand -hex 32
# SSO (Keycloak)
keycloak_version: "26.2"
keycloak_db_version: "16"
sso_data_dir: /opt/sso
keycloak_admin_user: admin
# Secrets — store values in ansible/group_vars/all/vault.yml (Ansible Vault)
# keycloak_db_password: ""
# keycloak_admin_password: ""
# Nextcloud
nextcloud_version: "31-apache" # apache variant includes a working web server
nextcloud_db_version: "16"
nextcloud_data_dir: /opt/nextcloud
nextcloud_admin_user: admin
# Secrets — store values in ansible/group_vars/all/vault.yml (Ansible Vault)
# nextcloud_db_password: ""
# nextcloud_admin_password: ""
# Mail (Roundcube + Dovecot IMAP + Fetchmail)
roundcube_version: "1.6.x-apache"
roundcube_db_version: "16"
mail_data_dir: /opt/mail
# Dovecot IMAP server — Roundcube always connects to the local Dovecot container
dovecot_version: "2.3"
# SMTP — outgoing mail server for Roundcube (leave empty if not configured)
roundcube_smtp_host: ""
roundcube_smtp_port: "587"
# Fetchmail — polls external POP3 accounts and delivers to local Dovecot via LMTP
# poll_minutes is per-account (default: 10 minutes)
# Secrets — store values in ansible/group_vars/all/vault.yml (Ansible Vault)
# roundcube_db_password: ""
# roundcube_des_key: "" # generate: openssl rand -hex 12 (must be exactly 24 chars)
#
# Dovecot users — list of {username, password} pairs (plaintext, vault is encrypted)
# dovecot_users:
# - username: alice
# password: "plaintext-password"
#
# Fetchmail accounts — list of external POP3 sources to poll
# fetchmail_accounts:
# - server: pop.gmail.com
# username: user@gmail.com
# password: app-password
# local_user: alice
# protocol: pop3 # default: pop3
# ssl: true # default: true
# keep: true # default: true — set false to delete from source after fetch
# Container registry (Docker Registry v2)
registry_data_dir: /opt/registry
# Registry users — plaintext passwords, Ansible generates bcrypt hashes at deploy time
# registry_users:
# - username: alice
# password: "your-password"
# k8s (placeholder)
k8s_data_dir: /opt/k8s
# Status dashboard (public — cloud.ladkau.de root)
dashboard_data_dir: /opt/dashboard