# 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 ` - 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)