feat: добавить аддон authelia — SSO forward-auth и OIDC provider

Helm chart + Ansible role для Authelia 4.38:
- Forward-auth для ingress-nginx через аннотации auth-url/auth-signin
- OIDC provider: Gitea, Grafana, ArgoCD, MinIO, Vault, Nextcloud
- SQLite default или PostgreSQL; опциональный Redis для сессий
- RSA ключ OIDC генерируется автоматически если не задан в vault
- ConfigMap authelia-forward-auth с готовыми аннотациями для любого сервиса
- README: install, users, protect service, OIDC per-service, debug, test
This commit is contained in:
Sergey Antropoff
2026-04-26 18:18:46 +03:00
parent f3dfe87d03
commit 225f77598a
23 changed files with 1949 additions and 1 deletions

View File

@@ -45,6 +45,7 @@ addon_ingress_proxypass: false # External Services Ingress Proxy —
addon_ingress_add_domains: false # Ingress-only — добавить домены к существующим сервисам кластера
addon_yandex_dns_controller: false # Yandex 360 DNS controller — управление DNS через ConfigMap (safe mode)
addon_technitium_dns: false # Technitium DNS HA — Primary+Secondary с kube-vip LB, зональный sync
addon_authelia: false # Authelia SSO — Forward-auth + OIDC provider для всех сервисов
# ─── NFS Server ───────────────────────────────────────────────────────────────
nfs_exports:
@@ -381,6 +382,32 @@ minio_api_ingress_host: "s3.example.com"
# technitium_dns_externaldns_policy: "upsert-only" # sync | upsert-only
# technitium_dns_externaldns_txt_owner_id: "k3s-home"
# ─── Authelia SSO ────────────────────────────────────────────────────────────
# Централизованная аутентификация: forward-auth для ingress-nginx + OIDC provider.
# Все секреты — в vault.yml (authelia_jwt_secret, authelia_session_secret, и др.)
# authelia_host: "auth.home.local" # URL портала авторизации
# authelia_domain: "home.local" # базовый домен (session cookie domain)
# authelia_two_factor_enabled: false # включить 2FA для защищённых сервисов
# authelia_storage_type: "sqlite" # sqlite | postgresql
# authelia_redis_enabled: false # Redis для хранения сессий
# authelia_smtp_enabled: false # SMTP для сброса пароля и 2FA email
# Домены с защитой (forward-auth):
# authelia_protected_domains: [sonarr.home.local, radarr.home.local, ...]
# authelia_admin_domains: [argocd.home.local, vault.home.local, ...]
# authelia_bypass_domains: [plex.home.local]
# OIDC клиенты (включить нужные):
# authelia_oidc_gitea_enabled: true # + authelia_oidc_secret_gitea в vault
# authelia_oidc_grafana_enabled: true # + authelia_oidc_secret_grafana в vault
# authelia_oidc_argocd_enabled: false
# authelia_oidc_minio_enabled: false
# authelia_oidc_vault_enabled: false
# Пользователи (хэши паролей — в vault.yml):
# authelia_users:
# admin:
# displayname: "Administrator"
# email: "admin@home.local"
# groups: [admins, users]
# ─── etcd backup ──────────────────────────────────────────────────────────────
etcd_backup_dir: "{{ k3s_data_dir }}/server/db/snapshots"
etcd_backup_retention: 5 # сколько снимков хранить

View File

@@ -135,3 +135,26 @@ yandex_dns:
# ── Technitium DNS HA ─────────────────────────────────────────────────────────
technitium_dns_admin_password: "ЗАМЕНИ_НААРОЛЬ" # минимум 8 символов
# ── Authelia SSO ──────────────────────────────────────────────────────────────
# Generate secrets:
# openssl rand -base64 64 → jwt_secret, session_secret
# openssl rand -base64 32 → storage_encryption_key
# openssl rand -base64 48 → oidc_hmac_secret
# openssl rand -hex 32 → each OIDC client secret
# Generate password hash:
# docker run authelia/authelia:latest authelia hash-password 'yourpassword'
authelia_jwt_secret: "ЗАМЕНИ_openssl_rand_-base64_64"
authelia_session_secret: "ЗАМЕНИ_openssl_rand_-base64_64"
authelia_storage_encryption_key: "ЗАМЕНИ_openssl_rand_-base64_32"
authelia_oidc_hmac_secret: "ЗАМЕНИ_openssl_rand_-base64_48"
authelia_oidc_private_key: "" # оставь пустым — будет сгенерирован автоматически
# OIDC client secrets (генерируй для каждого включённого клиента):
authelia_oidc_secret_gitea: "ЗАМЕНИ_openssl_rand_-hex_32"
authelia_oidc_secret_grafana: "ЗАМЕНИ_openssl_rand_-hex_32"
authelia_oidc_secret_argocd: ""
authelia_oidc_secret_minio: ""
authelia_oidc_secret_vault: ""
authelia_oidc_secret_nextcloud: ""
# User password hashes (argon2id):
authelia_user_admin_password_hash: "ЗАМЕНИ_НА_ARGON2ID_ХЭШ"