Blame

7aa3e9 Claude Code 2026-05-28 15:40:46
2026-05-28: Wiki-Aktualisierung - neue CTs, Versionen, Dienste
1
# CT 113 – Authelia
2
3
> [!NOTE]
4
> CT 113 hostet **Authelia** als zentrale vorgeschaltete Authentifizierungs- und 2FA-Schicht für ausgewählte Webdienste hinter Caddy.
5
6
## Basisdaten
7
8
| Eigenschaft | Wert |
9
|---|---|
10
| **CT-ID** | `113` |
11
| **Name** | `authelia` |
12
| **IP** | `192.168.178.64` |
13
| **OS** | Debian 13 |
14
| **Öffentliche URL** | `https://auth.ls-cloud.biz` |
15
| **Interner Port** | `9091/tcp` |
16
| **Compose-Pfad** | `/opt/authelia/compose.yml` |
17
| **Konfig-Pfad** | `/opt/authelia/config/configuration.yml` |
18
| **User-Datei** | `/opt/authelia/config/users_database.yml` |
19
| **Notification-Datei** | `/opt/authelia/config/notification.txt` |
20
21
## Zweck
22
23
Authelia sitzt vor ausgewählten Webdiensten und erzwingt dort je nach Regel:
24
- kein Login (`bypass`)
25
- Passwort-Login (`one_factor`)
26
- Passwort + zweiter Faktor (`two_factor`)
27
28
Aktuell ist Authelia bereits für folgende Dienste in Benutzung:
29
- `terminal.ls-cloud.biz``two_factor`
30
- `files.ls-cloud.biz``two_factor`
31
- `termix.ls-cloud.biz``two_factor` (Termix mit SSH/RDP)
32
33
## Architektur
34
35
```text
36
Browser
37
-> Caddy auf dem Host
38
-> forward_auth gegen Authelia (CT 113 :9091)
39
-> bei Erfolg weiter zum eigentlichen Backend-Dienst
40
```
41
42
Portal selbst:
43
44
```text
45
https://auth.ls-cloud.biz
46
-> Caddy reverse_proxy
47
-> CT 113 :9091
48
```
49
50
## Wie ein neuer Dienst geschützt wird
51
52
Es braucht immer **zwei Änderungen**:
53
54
### 1. Authelia-Regel
55
In `configuration.yml` unter `access_control.rules` eine Domain-Regel ergänzen, z. B.:
56
57
```yaml
58
- domain: 'files.ls-cloud.biz'
59
policy: two_factor
60
```
61
62
### 2. Caddy davor schalten
63
Im jeweiligen Domain-Block:
64
65
```caddy
66
forward_auth http://192.168.178.64:9091 {
67
uri /api/authz/forward-auth
68
copy_headers Remote-User Remote-Groups Remote-Email Remote-Name
69
}
70
```
71
72
Danach erst das eigentliche `reverse_proxy` zum Backend.
73
74
## Benutzerverwaltung
75
76
Aktuell wird der **file-based authentication backend** genutzt.
77
78
Benutzer stehen in:
79
80
```text
81
/opt/authelia/config/users_database.yml
82
```
83
84
Dort liegen u. a.:
85
- Benutzername
86
- Anzeige-Name
87
- Mailadresse
88
- Argon2-Passworthash
89
- Gruppen
90
91
### Aufbau eines Benutzers
92
93
Ein einzelner Benutzer sieht im aktuellen Setup z. B. so aus:
94
95
```yaml
96
users:
97
admin:
98
disabled: false
99
displayname: "Sergej"
100
password: "$argon2id$..."
101
email: "sergej@ls-cloud.biz"
102
groups:
103
- admins
104
```
105
106
### Vorlage für einen neuen Benutzer
107
108
```yaml
109
neueruser:
110
disabled: false
111
displayname: "Neuer User"
112
password: "$argon2id$HIER_DEN_HASH_EINTRAGEN"
113
email: "user@example.com"
114
groups:
115
- users
116
```
117
118
### Passwort-Hash erzeugen
119
Ein Passwort wird nicht im Klartext gespeichert, sondern als Hash.
120
Ein neuer Hash kann z. B. so erzeugt werden:
121
122
```bash
123
pct exec 113 -- docker run --rm authelia/authelia:latest \
124
authelia crypto hash generate argon2 --password 'NEUES_PASSWORT'
125
```
126
127
Den `Digest:`-Wert dann in `users_database.yml` als `password:` eintragen.
128
129
### Benutzer hinzufügen – Schritt für Schritt
130
131
1. Passwort-Hash erzeugen
132
2. Benutzerblock unter `users:` in `users_database.yml` ergänzen
133
3. Datei speichern
134
4. Authelia neu starten:
135
136
```bash
137
pct exec 113 -- bash -lc "cd /opt/authelia && docker compose -f compose.yml restart"
138
```
139
140
5. Danach mit dem neuen Benutzer an `https://auth.ls-cloud.biz` testen
141
142
### Passwort eines bestehenden Benutzers ändern
143
144
1. neuen Hash erzeugen
145
2. beim Benutzer nur den Wert von `password:` ersetzen
146
3. Authelia neu starten
147
148
### Benutzer deaktivieren
149
150
```yaml
151
neueruser:
152
disabled: true
153
```
154
155
> [!IMPORTANT]
156
> Nach Änderungen an `users_database.yml` ist ein Restart von Authelia der saubere Weg, damit die Änderung sicher übernommen wird.
157
158
## TOTP / Google Authenticator / Aegis
159
160
Für den Benutzer kann in der Weboberfläche unter Sicherheitsoptionen ein **Einmal-Passwort (TOTP)** hinzugefügt werden.
161
Das funktioniert mit:
162
- Google Authenticator
163
- Aegis
164
- Ente Auth
165
- Authy
166
- anderen TOTP-Apps
167
168
## „E-Mails“ / One-Time-Codes
169
170
Aktuell ist **kein echter SMTP-Versand** eingerichtet.
171
Stattdessen schreibt Authelia Benachrichtigungen in eine Datei auf dem Server:
172
173
```text
174
/opt/authelia/config/notification.txt
175
```
176
177
Dort landen z. B.:
178
- Identity-Confirmation-Codes
179
- One-Time-Codes
180
- Links zum Widerruf
181
- andere notifier-basierte Meldungen
182
183
### Beispiel ansehen
184
185
```bash
186
pct exec 113 -- tail -60 /opt/authelia/config/notification.txt
187
```
188
189
> [!IMPORTANT]
190
> Wenn ein Benutzer behauptet, es komme „keine Mail“, ist im aktuellen Setup zuerst **diese Datei** zu prüfen.
191
192
## Prüfung
193
194
```bash
195
pct status 113
196
pct exec 113 -- bash -lc "cd /opt/authelia && docker compose -f compose.yml ps"
197
curl -k -I https://auth.ls-cloud.biz
198
curl -k -I https://terminal.ls-cloud.biz
199
curl -k -I https://files.ls-cloud.biz
200
```
201
202
## Wichtige Dateien
203
204
| Pfad | Zweck |
205
|---|---|
206
| `/opt/authelia/compose.yml` | Docker-Compose-Definition |
207
| `/opt/authelia/config/configuration.yml` | Hauptkonfiguration |
208
| `/opt/authelia/config/users_database.yml` | Benutzer & Passwort-Hashes |
209
| `/opt/authelia/config/db.sqlite3` | lokaler Storage |
210
| `/opt/authelia/config/notification.txt` | serverseitige „E-Mails“ / Codes |
211
| `/etc/caddy/Caddyfile` (Host) | Portal + ForwardAuth vor geschützten Diensten |
212
213
## Hinweise
214
215
> [!TIP]
216
> Für neue Dienste immer in zwei Schritten denken: **Authelia-Regel** und **Caddy forward_auth**.
217
218
> [!WARNING]
219
> Nur Webdienste hinter Caddy lassen sich so sauber schützen. Nicht-HTTP-Protokolle brauchen andere Wege.