authentik SSO/IdP на auth.dttb.ru (LXC 144): пилот OIDC Open WebUI+Gitea, обязательная 2FA
- LXC 144 Debian12/Docker, server+worker+postgres (2026.5.3, без Redis) - NPM #41 auth.dttb.ru, LE cert id133, публичная A-запись Spaceweb - OIDC: Open WebUI (chat) + Gitea (git, ROOT_URL→https) - 2FA обязательна на IdP (TOTP/WebAuthn force-enroll) - принцип «2FA через нужную дверь» (OIDC, не forward-auth) - критичную инфру не трогали; остался ручной enrollment Олега Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -156,6 +156,20 @@ cd /var/lib/rustdesk-api && /usr/bin/rustdesk-api reset-admin-pwd <new-pw>
|
||||
| systemd | `hermes-dashboard.service` = `hermes dashboard --host 0.0.0.0 --port 9119 --skip-build --no-open` |
|
||||
| ⚠️ Грабля | **БЕЗ `--insecure`!** `--insecure` отключает cookie-gate (включает легаси `_SESSION_TOKEN`) → login проходит, но всё внутри 401. Бинд `0.0.0.0` без `--insecure` = `auth_required=True` + принимает любой Host (для NPM-домена). См. [[../../decisions/2026-06-18-german-hermes-agent-deploy]] |
|
||||
|
||||
## authentik SSO/IdP (LXC 144)
|
||||
|
||||
| Параметр | Значение |
|
||||
|----------|----------|
|
||||
| URL | https://auth.dttb.ru (NPM #41 → 10.0.0.144:9000, LE cert id133) |
|
||||
| LXC root | `10.0.0.144` — root / `Authentik!2026-dttb` (LAN only, без WAN SSH) |
|
||||
| Admin панель | `akadmin` / `Auth0leg!2026-dttb` (bootstrap-пароль). **2FA обязательна** — при первом входе предложит TOTP/passkey |
|
||||
| Email admin | `it5870@yandex.ru` |
|
||||
| API-токен | `claude-bootstrap` = `z53t4jfarH69EBYuJJbY0olaak79Sf67W1EqVCCM6NVHXbQDAAuyXHfVP4VZ` (не истекает, минует login-flow — для управления/recovery) |
|
||||
| Стек | `/opt/authentik/` — `.env` хранит `PG_PASS` и `AUTHENTIK_SECRET_KEY` (сгенерированы рандомом, бэкап только в `.env` контейнера) |
|
||||
| OIDC Open WebUI | app `open-webui`, client_id `1G7PLkPUSCEK4EFyULcDbqBnADrRNnswXOHFOeEF`, secret `2vpQldlISZDGyQaTQeVZ070XkA879a0TaMCeYIPQaA0ln116sQqJNzj9AjSMjvTz4yFTXw89V0wGb5yMP1CfqVCE0UehcvI9RsgCtjrFaSp0lrDD1NCwp9SrDGtfcF2A` |
|
||||
| OIDC Gitea | app `gitea`, client_id `AYl8jNZvJF7jh4c2nPhm1nRtD2XwkUK0DPwnvQ9e`, secret `UwsqG97S5REcuSgQLFQUHGp0JDKScR7fSIuIminNaZoVKca2JQzbb0PebePeBeaQhFKPjJOlu3kEmEEzod0oGtIArHKH492SnUBMO5aa5FgnAGjGzm9BB4RRYJo7wEMQ` |
|
||||
| Recovery | сброс admin-пароля `ak change_password akadmin`; снять обяз. 2FA — PATCH стейджа `f3808685-…` `not_configured_action=skip` через API-токен. См. [[../../decisions/2026-06-26-authentik-sso-deploy]] |
|
||||
|
||||
## SSH-ключи и доступы
|
||||
|
||||
| Хост | Порт | Метод |
|
||||
|
||||
@@ -9,7 +9,7 @@ tags: [dttb, npm]
|
||||
> **NPM LXC:** 103 (10.0.0.195)
|
||||
> **Панель:** https://npm.dttb.ru
|
||||
>
|
||||
> Последнее обновление: 2026-06-26 (добавлен german.dttb.ru → Hermes Dashboard LXC 141)
|
||||
> Последнее обновление: 2026-06-26 (добавлен auth.dttb.ru → authentik SSO/IdP LXC 144)
|
||||
|
||||
---
|
||||
|
||||
@@ -17,7 +17,7 @@ tags: [dttb, npm]
|
||||
|
||||
| Всего хостов | С SSL | Без SSL | Активных |
|
||||
|--------------|-------|---------|----------|
|
||||
| 23 | 19 | 4 | 23 |
|
||||
| 24 | 20 | 4 | 24 |
|
||||
|
||||
---
|
||||
|
||||
@@ -54,6 +54,7 @@ tags: [dttb, npm]
|
||||
| 36 | `unifi.dttb.ru` | 10.0.0.196:8443 (HTTPS) | ✅ Let's Encrypt | ✅ | ✅ | ✅ | **UniFi Network Application** (LXC 140) |
|
||||
| 39 | `chat.dttb.ru` | 10.0.0.142:3000 | ✅ Let's Encrypt (id129) | ✅ | ✅ | ✅ | **Open WebUI** (LXC 142) — веб-клиент поверх OmniRoute |
|
||||
| 40 | `german.dttb.ru` | 10.0.0.141:9119 | ✅ Let's Encrypt (id130) | ✅ | ✅ | ✅ | **Hermes Dashboard** (LXC 141) — веб-панель German; basic_auth `oleg`, см. credentials |
|
||||
| 41 | `auth.dttb.ru` | 10.0.0.144:9000 | ✅ Let's Encrypt (id133) | ✅ | ✅ | ✅ | **authentik SSO/IdP** (LXC 144) — единый вход + 2FA. См. [[../../decisions/2026-06-26-authentik-sso-deploy]] |
|
||||
|
||||
---
|
||||
|
||||
@@ -94,6 +95,7 @@ location /.well-known/matrix/client {
|
||||
| 10.0.0.112 | 8840 | ip.dttb.ru |
|
||||
| 10.0.0.141 | 9119 | german.dttb.ru (Hermes Dashboard) |
|
||||
| 10.0.0.142 | 3000 | chat.dttb.ru (Open WebUI) |
|
||||
| 10.0.0.144 | 9000 | auth.dttb.ru (authentik SSO/IdP) |
|
||||
| 10.0.0.155 | 8123 | home.dttb.ru |
|
||||
| 10.0.0.169 | 8080 | office.dttb.ru |
|
||||
| 10.0.0.179 | 8080, 20128 | ai.dttb.ru, omni.dttb.ru |
|
||||
|
||||
@@ -9,7 +9,7 @@ tags: [dttb, proxmox]
|
||||
> **Основная нода:** pve (10.0.0.250) — описана ниже
|
||||
> **Вторая нода (standalone):** pve (10.0.0.147) — отдельный хост i3-2100/15GB/SSD+1.8TB HDD, см. [[proxmox-pve-147]] (VM 100 ZimaOS, LXC 101 второй NPM)
|
||||
>
|
||||
> Последнее обновление: 2026-06-23 (добавлен LXC 143 amnezia-panel — Amnezia Web Panel, control-plane VPN-нод)
|
||||
> Последнее обновление: 2026-06-26 (добавлен LXC 144 authentik — SSO/IdP, auth.dttb.ru)
|
||||
|
||||
---
|
||||
|
||||
@@ -18,8 +18,8 @@ tags: [dttb, proxmox]
|
||||
| Тип | Всего | Запущено | Остановлено |
|
||||
|-----|-------|----------|-------------|
|
||||
| QEMU VM | 15 | 5 | 10 |
|
||||
| LXC | 25 | 15 | 10 |
|
||||
| **Итого** | **40** | **20** | **20** |
|
||||
| LXC | 26 | 16 | 10 |
|
||||
| **Итого** | **41** | **21** | **20** |
|
||||
|
||||
---
|
||||
|
||||
@@ -262,6 +262,22 @@ tags: [dttb, proxmox]
|
||||
|
||||
---
|
||||
|
||||
### LXC 144 — authentik (SSO/IdP)
|
||||
| Параметр | Значение |
|
||||
|----------|----------|
|
||||
| Статус | 🟢 running |
|
||||
| IP | 10.0.0.144 (LAN, статика, nameserver 1.1.1.1) |
|
||||
| ОС/рантайм | Debian 12, unprivileged + nesting/keyctl, Docker 29.6 + compose |
|
||||
| Ресурсы | 2 vCPU / 4 GB / swap 2 GB / 20 GB (rootfs на `work`, local-lvm забит 94%) |
|
||||
| Стек | `/opt/authentik/` — `ghcr.io/goauthentik/server:2026.5.3`: **server + worker + postgresql:16** (⚠️ 2026.5.3 без Redis, postgres-backed cache) |
|
||||
| Веб | **https://auth.dttb.ru** (NPM #41 → `:9000`, LE cert id133, Force SSL+HTTP/2+WSS) — публично + LAN/NetBird |
|
||||
| Авторизация | admin `akadmin` (пароль + API-токен `claude-bootstrap` в credentials). **Обязательная 2FA** (TOTP/WebAuthn) на уровне IdP |
|
||||
| Пилот OIDC | Open WebUI (chat.dttb.ru), Gitea (git.dttb.ru). Критичную инфру (Proxmox/NPM/Vaultwarden/Nextcloud) НЕ трогали |
|
||||
| Tags | sso, idp, security |
|
||||
| Назначение | **authentik — SSO/IdP для home lab.** OIDC для совместимых сервисов + forward-auth для голых панелей. AVX не требует. См. [[../../decisions/2026-06-26-authentik-sso-deploy]] |
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Остановленные LXC
|
||||
|
||||
| VMID | Имя | Назначение |
|
||||
|
||||
@@ -13,6 +13,9 @@ tags: [dttb, dns]
|
||||
- editMain params: {domain, action:"add"/"edit", name, type:"A", value, prefix:"", index(edit)}
|
||||
- editMx params: {domain, subDomain:"", action:"add"/"edit", priority, value:"host.", index(edit)}
|
||||
- editTxt params: {domain, action:"add"/"edit", subDomain:"@"/..., value, index(edit)}
|
||||
- **Чтение зоны: метод `info`** params {domain} (опц. type:"A") → список записей name/value/index/category (zoneMain|subdom). Методы JSON-RPC: editMain, editMx, editTxt, info. Читать перед add (взять index, не угадывать).
|
||||
- Добавить одну A-запись поддомена: `editMain {action:"add", name:"<sub>", type:"A", value:"176.62.183.186", prefix:""}` → result:true. Безопасно (ломает зону только цикл editMain). Так добавлен auth.dttb.ru 2026-06-26.
|
||||
- ⚠️ LE HTTP-01 после add: подожди истечения negative-cache (SOA minimum dttb.ru = 600с) — иначе certbot ловит NXDOMAIN (LE кеширует его ~10 мин от первой попытки).
|
||||
- Капча после 2-3 запросов подряд — новая сессия сбрасывает
|
||||
|
||||
<!-- AUTO-SYNC FROM MEMORY.MD - DO NOT EDIT BELOW -->
|
||||
|
||||
Reference in New Issue
Block a user