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

112 lines
3.7 KiB
Markdown

# 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:
```yaml
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` (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.
```bash
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
```bash
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
```bash
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
```bash
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)