Files
authschwenkonline/README.md
T
Frank Schwenk 93c78f503e feat: Authelia SSO stack for auth.schwenk.online
Compose + Traefik ForwardAuth middleware, Redis sessions, SMTP via 0012.de, TOTP and ACL for consumer apps (e.g. pi.schwenk.online).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 10:29:17 +02:00

3.7 KiB

auth.schwenk.online — Authelia

SSO + TOTP (Google Authenticator / Aegis / …) vor Traefik auf boka.

Repo: ssh://git@gitea.schwenk.online:2222/froxxxy/authschwenkonline.git

Consumer-Vertrag

Andere Projekte, die diese Instanz nutzen:

Feld Wert
Middleware-Referenz authelia@docker
Portal-URL https://auth.schwenk.online
Docker-Netz externes Netz traefik
Session-Cookie-Domain schwenk.online (deckt *.schwenk.online ab; entspr. „.schwenk.online“)
ACL (Beispiele) pi.schwenk.onlinetwo_factor; whoami-auth.schwenk.onlinetwo_factor; Portal bypass
ForwardAuth-Pfad http://authelia:9091/api/authz/forward-auth (nicht legacy /api/verify)

App schützen (Snippet)

App-Container am Netz traefik, plus Labels:

labels:
  - traefik.enable=true
  - traefik.docker.network=traefik
  - traefik.http.routers.MYAPP.rule=Host(`myapp.schwenk.online`)
  - traefik.http.routers.MYAPP.entrypoints=websecure
  - traefik.http.routers.MYAPP.tls.certresolver=myresolver
  - traefik.http.routers.MYAPP.middlewares=authelia@docker

Zusätzlich in diesem Repo unter config/configuration.ymlaccess_control.rules eine Regel für den Host (z.B. two_factor) eintragen und Authelia neu laden/compose up -d.

Layout

Pfad Zweck
compose.yml Authelia, Redis, whoami-Smoke
config/configuration.yml Authelia-Config (kein Secret-Inhalt)
config/users_database.yml.example User-Template
secrets/ jwt_secret.txt, session_secret.txt, storage_encryption_key.txt (nur auf dem Server)
.env SMTP + TZ (nur auf dem Server)

Deploy (boka)

Voraussetzungen: DNS auth.schwenk.online (und optional whoami-auth.schwenk.online) → boka; Docker-Netz traefik existiert.

ssh frank-schwenk.de
git clone ssh://git@gitea.schwenk.online:2222/froxxxy/authschwenkonline.git /home/frank/auth.schwenk.online
cd /home/frank/auth.schwenk.online
cp .env.example .env
# SMTP_PASSWORD und Sender aus 0012 server.env eintragen

Secrets erzeugen

mkdir -p secrets
chown 8000:8000 secrets && chmod 0700 secrets
docker run --rm -u 8000:8000 -v "$(pwd)/secrets:/secrets" authelia/authelia:4.39 \
  sh -c 'cd /secrets && authelia crypto rand --length 64 \
    session_secret.txt storage_encryption_key.txt jwt_secret.txt'

User-DB

cp config/users_database.yml.example config/users_database.yml
docker run --rm authelia/authelia:4.39 \
  authelia crypto hash generate argon2 --password 'YOUR_PASSWORD'
# Hash in users_database.yml bei frank.password einsetzen
# email: Postfach, das Mail von 0012.de SMTP annimmt (Tuta oft problematisch)

Start

docker compose up -d
docker compose logs -f authelia

SMTP (0012.de)

Notifier nutzt Plesk-SMTP wie in 0012 Todo 11 / server.env:

  • Host ha01s019.org-dns.com, Port 587 (STARTTLS / submission://)
  • Login admin@0012.de, From z.B. Authelia <monitor@0012.de>
  • Passwort nur in .env als AUTHELIA_NOTIFIER_SMTP_PASSWORD

TOTP-Enrollment

  1. https://auth.schwenk.online öffnen, einloggen
  2. Enrollment-Code kommt per Mail
  3. QR mit Google Authenticator (o.ä.) scannen

Verify

  1. Portal erreichbar: https://auth.schwenk.online
  2. Smoke hinter 2FA: https://whoami-auth.schwenk.online → Login + TOTP → whoami-Body
  3. Mail-Test: Passwort-Reset oder Enrollment löst SMTP aus
  4. docker compose ps — alle Services running

whoami nach dem Smoke optional aus compose.yml entfernen oder Router-Label deaktivieren.

Explizit nicht

  • Traefik / Gitea / Immich / Portainer in diesem Stack ändern
  • Fremde App-Compose hier anfassen (nur ACL + Middleware-Vertrag)