---
# 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 }}"
domain_vault:      "vault.{{ domain_base }}"
domain_dl:         "dl.{{ 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

# Gitea Actions runners (act_runner with Docker executor)
act_runner_version: "latest"
act_runner_data_dir: /opt/act_runner
act_runner_count: 3
# Secrets — store values in ansible/group_vars/all/vault.yml (Ansible Vault)
# gitea_runner_registration_token: ""  # Gitea admin → Site Administration → Runners → Create runner token

# Container registry (Docker Registry v2 + web UI)
registry_data_dir: /opt/registry
registry_ui_version: "main"
# 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

# Vaultwarden (self-hosted Bitwarden-compatible password vault)
vaultwarden_version: "latest"
vaultwarden_data_dir: /opt/vaultwarden
# Secrets — store values in ansible/group_vars/all/vault.yml (Ansible Vault)
# vaultwarden_admin_token: ""       # generate: openssl rand -hex 32
# vaultwarden_sso_client_secret: "" # added after Keycloak is configured — see runbook-configuration.md step 2.6

# Download server (nginx HTTPS + SFTP)
dl_data_dir: /opt/dl
dl_upload_user: uploader
dl_sftp_port: 2223
# Secrets — store values in ansible/group_vars/all/vault.yml (Ansible Vault)
# dl_sftp_authorized_keys: |
#   ssh-ed25519 AAAA...  gitea-actions

# Status dashboard (public — cloud.ladkau.de root)
dashboard_data_dir: /opt/dashboard

# Clay — Claude Code web interface (agent.ladkau.de)
domain_clay: "agent.{{ domain_base }}"
clay_data_dir: /opt/clay
clay_users: []   # override in vault with [{username: ..., password: ...}]
# Secrets — store values in ansible/group_vars/all/vault.yml (Ansible Vault)
# anthropic_api_key: ""           # from console.anthropic.com → API keys
# clay_users:
#   - username: admin
#     password: "your-password"
