Env-based notifier creds were unreliable; use secrets/smtp_*.txt, RFC5322 sender, and implicit TLS to 0012.de Plesk. Co-authored-by: Cursor <cursoragent@cursor.com>
4.4 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.online → two_factor; whoami-auth.schwenk.online → two_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.yml → access_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, smtp_username.txt, smtp_password.txt, smtp_sender.txt (nur auf dem Server) |
.env |
TZ (+ optional Log-Level); SMTP-Passwort gehört in secrets/smtp_*.txt |
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'
SMTP (0012.de) — Dateien unter secrets/ (UID 8000):
# as root / via docker if secrets/ is 0700 for uid 8000
printf '%s\n' 'auth@0012.de' > secrets/smtp_username.txt
printf '%s\n' 'YOUR_SMTP_PASSWORD' > secrets/smtp_password.txt
printf '%s\n' 'Authelia <auth@0012.de>' > secrets/smtp_sender.txt
chown 8000:8000 secrets/smtp_*.txt && chmod 600 secrets/smtp_*.txt
Notifier: submissions://ha01s019.org-dns.com:465 (implizites TLS). Sender-Format muss RFC5322 sein: Name <user@domain> — kein unquoted foo.bar.baz <…>.
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)
- Host
ha01s019.org-dns.com, Port 465 (submissions://), Auth z.B.auth@0012.de - Credentials nur in
secrets/smtp_*.txt(siehe oben) - Startup-Check sendet keine Mail — nur Verbindungs-Check
- Test von boka: Python/
swaksancuidas@gmail.com; Authelia-Logs bei Erfolg: TraceTiming Attack Delay successful: truenach „Sending an email…“
TOTP-Enrollment
https://auth.schwenk.onlineöffnen, einloggen- Enrollment-Code kommt per Mail
- QR mit Google Authenticator (o.ä.) scannen
Verify
- Portal erreichbar:
https://auth.schwenk.online - Smoke hinter 2FA:
https://whoami-auth.schwenk.online→ Login + TOTP → whoami-Body - Mail-Test: Passwort-Reset oder Enrollment löst SMTP aus
docker compose ps— alle Servicesrunning
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)