Files
knowledge-base/projects/dttb/credentials.md
dttb d39ddb989d 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>
2026-06-26 19:17:10 +03:00

243 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
date: 2026-02-26
type: project
tags: [dttb]
---
# 🔐 Credentials — DTTB HomeLab
> ⚠️ **КОНФИДЕНЦИАЛЬНО** — не распространять за пределы команды
>
> Последнее обновление: 2026-03-03
---
## Proxmox VE (10.0.0.250)
| Параметр | Значение |
|----------|----------|
| URL | https://10.0.0.250:8006 / https://pve.dttb.ru |
| Логин | `root` |
| Пароль | `1qaz!QAZ` |
| Realm | PAM |
## Amnezia Web Panel (LXC 143)
| Параметр | Значение |
|----------|----------|
| Веб (LAN) | http://10.0.0.143:5000 |
| Веб (NetBird) | http://100.70.9.163:5000 (`amnezia-panel.netbird.cloud`) |
| Логин | `admin` |
| Пароль | `AmnPanel!2026-fi` (дефолт admin/admin сменён; pbkdf2_hmac-sha256) |
| Root LXC 143 | `root` / `1qaz!QAZ` (консоль/SSH через pve) |
| Данные | bind-mount `/opt/amnezia-panel/{data.json,tunnels_state.json}` |
| Назначение | Control-plane VPN-нод (AWG/WG/Xray/MTProxy), управляет серверами по SSH. Приватно, без NPM/публичного доступа. См. [[../../decisions/2026-06-23-amnezia-web-panel-lxc143]] |
## VPN-ноды (управляются панелью)
### HOSTKEY Finland — основной хаб (заказан 2026-06-23)
| Параметр | Значение |
|----------|----------|
| IP | `151.241.234.241` |
| SSH | **key-only** (пароль по SSH отключён): `ssh awg-fi` с Mac, ключ `~/.ssh/awg_fi_key` (ed25519). Панель LXC 143 ходит тем же ключом |
| Пароль root | `v_6hH9JuH_`**только для веб-консоли HOSTKEY** (по SSH не работает) |
| ОС | Ubuntu 22.04.5 LTS · 2 vCPU / 3.9 GB / 60 GB NVMe · 3 TB трафик @1Gbps · `fi-vmv2-nano` |
| AmneziaWG | **AWG 2.0** · контейнер `amnezia-awg2` · UDP **41624** · subnet `10.8.1.0/24`. Управляется панелью (server_id 0) |
| Защита | ufw (наружу только 22/tcp + 41624/udp) · fail2ban (sshd, backend=systemd) · SSH key-only · root prohibit-password |
| Роль | Основной AmneziaWG-выход. Резерв — старый финский VPS (переустановить ОС перед использованием: был XorDDoS/RCE) |
## MikroTik Router (НИИКН — 192.168.1.1)
| Параметр | Значение |
|----------|----------|
| IP | 192.168.1.1 |
| Модель | hAP ac³ |
| Логин | `AI` |
| Пароль | `OL260380eg` |
| Версия | RouterOS 7.20.6 |
## Gitea (10.0.0.189:3000)
| Параметр | Значение |
|----------|----------|
| URL | http://10.0.0.189:3000 / http://git.dttb.ru |
| Логин | `oleg` |
| Пароль | `OL260380eg` |
| Git Remote | `http://oleg:OL260380eg@10.0.0.189:3000/oleg/knowledge-base.git` |
## Nginx Proxy Manager (LXC 103 — 10.0.0.195:81)
| Параметр | Значение |
|----------|----------|
| URL | http://10.0.0.195:81 / https://npm.dttb.ru |
| Email | `it5870@yandex.ru` |
| Пароль | `1qaz!QAZ` |
## RustDesk Server (LXC 116 — 10.0.0.244)
| Параметр | Значение |
|----------|----------|
| Web admin URL | https://remot.dttb.ru/_admin/ |
| Swagger | https://remot.dttb.ru/swagger/index.html |
| Логин | `admin` |
| Пароль | `1qaz!QAZ` *(сменён на стандартный 2026-04-29)* |
| Public key (для RustDesk2.toml) | `R0lA4r77hAGw6YRL1qG3JioVqQ0Q0fJfzkwlAGqR6jU=` |
| JWT key (config.yaml `jwt.key`) | `mrQPMJh6QBGp93aVqv14IG4R5g4zjxNRs3gLHtjJr4rqgGm164ciMVrQJDP2GIQh` |
| Бэкап ключей и БД | `/root/rustdesk-backup-20260428-1134/` (на LXC 116) |
| Rollback к OSS | `bash /root/rustdesk-rollback.sh` (на LXC 116) |
Сервер — `lejianwen-pro` 1.1.14 (`hbbs`/`hbbr` с `MUST_LOGIN=Y`) + `rustdesk-api` 2.7. Подробности: [[rustdesk]] и [[../../decisions/2026-04-28-rustdesk-lejianwen-pro-migration]].
CLI смены пароля admin (на LXC 116):
```bash
cd /var/lib/rustdesk-api && /usr/bin/rustdesk-api reset-admin-pwd <new-pw>
```
## Nextcloud AIO (VM 250 — 10.0.0.230:11001)
| Параметр | Значение |
|----------|----------|
| URL | https://dttb.ru |
| Версия | Nextcloud 32.0.6 (AIO) |
| Логин | `admin` |
| Пароль | `1qaz!QAZ` |
| WebDAV | `https://dttb.ru/remote.php/dav/files/admin/` |
| App password Mac sync | `~/.config/nextcloud-kb/app-password` (chmod 600) |
Подробности sync-схемы: [[../../decisions/2026-04-17-nextcloud-sync-schema|decision 2026-04-17]].
## ZimaOS NAS (VM 130 — 10.0.0.221)
| Параметр | Значение |
|----------|----------|
| Веб | http://10.0.0.221 (Caddy/ZimaOS-Gateway) |
| Логин | `dttb` |
| Пароль | `1qaz!QAZ` (восстановлен 2026-06-19 из md5-хеша в `user.db`) |
| SSH | ❌ выключен; Linux root **locked** (без пароля) |
| Shell | ttyd `http://10.0.0.221:7681` (просит login, нужен Linux-юзер) или offline-mount диска на Proxmox |
**Сброс веб-пароля offline** (если снова потеряется): `qm stop 130``losetup -fP /dev/pve/vm-130-disk-0` → смонтировать раздел p8 `casaos-data` → в `.casaos/db/user.db` (sqlite, табл. `o_users`) `UPDATE o_users SET password='<md5 нового>' WHERE username='dttb'` (хеш = **md5 без соли**) → umount + `losetup -d` + `lvchange -an pve/vm-130-disk-0``qm start 130`. ZimaOS immutable A/B: system = squashfs (RO), изменения в overlay (p7), данные/конфиги в casaos-data (p8).
## Spaceweb (DNS-хостинг: niikn.com, dttb.ru, itilegent.ru)
| Параметр | Значение |
|----------|----------|
| URL | https://vps.sweb.ru |
| Логин | `it5870yand` |
| Пароль | `1qaz!QAZ` |
| API | `https://api.sweb.ru/domains/dns` (JSON-RPC) |
| Домены | niikn.com, dttb.ru, itilegent.ru |
## Mailcow НИИКН (VM106 — 192.168.1.128)
| Параметр | Значение |
|----------|----------|
| URL | https://mail.niikn.com |
| Admin | `admin` / `1qaz!QAZ` |
| API Key | `niikn-mailcow-api-2026` |
| DBPASS | `8VcUSgpKEOoxNojIZBRJx0FzMxzm` |
| Ящик | `noreply@niikn.com` / `NiIkN-NoReply-2026!` |
## NPM НИИКН (LXC 102 — 192.168.1.22:81)
| Параметр | Значение |
|----------|----------|
| URL | http://192.168.1.22:81 |
| Email | `it5870@yandex.ru` |
| Пароль | `1qaz!QAZ` |
## German Hermes Dashboard (LXC 141)
| Параметр | Значение |
|----------|----------|
| URL | https://german.dttb.ru (NPM #40 → 10.0.0.141:9119) |
| Логин | `oleg` / `German-ecddc1edea-2026` |
| Механизм | `dashboard.basic_auth` в `/root/.hermes/config.yaml` (scrypt `password_hash` + `secret`, plaintext не хранится) |
| 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-ключи и доступы
| Хост | Порт | Метод |
|------|------|-------|
| 10.0.0.250 (Proxmox) | 22 | root / `1qaz!QAZ` |
| VPS swtest.ru (`89.111.140.86` / `100.70.93.36`) | 22 | root / ключ `~/.ssh/vps_znam_key` (RSA). Алиас SSH: `ssh vps-znam` (через Netbird) или `ssh vps-znam-public`. Ключ развёрнут на Mac и openclaw LXC 137. Подробности: [vps-swtest.md](vps-swtest.md) |
## Apple ID (США)
| Параметр | Значение |
|----------|----------|
| Apple ID | `hbuggle819@icloud.com` |
| Пароль | `App5870w` |
| Регион | United States |
| 2FA trusted phone | номер Олега, заканчивается на `...70` (при входе выбирать его, код приходит к Олегу по SMS) |
| Назначение | скачивание приложений из US App Store (AmneziaVPN, Happ, Instagram и т.п.) для себя и клиентов |
| Инструкция для клиента | [snippets/apple-id-us-on-russia.md](../../snippets/apple-id-us-on-russia.md) |
⚠️ Входить **только в App Store → Медиа и покупки**, НЕ в iCloud (иначе риск смешения данных).
## Telegra.ph (для инструкций клиентам)
| Параметр | Значение |
|----------|----------|
| Account short_name | `dttb` |
| Author | `Oleg Batlaev` |
| Access token | `c38dcadb86e6edd7efc76496d9171d38beef6dc0f6a7ef2cd79bbae70e46` |
| Auth URL (вход в редактор) | https://edit.telegra.ph/auth/f1tfgzYpPpGlAr7cYHRzSeH59fYuNVB2V3fbCdypDc |
Назначение: публиковать подробные инструкции (VPN, онбординг) как Telegra.ph-страницы — Telegram рендерит их через Instant View, markdown не ломается. Создание страницы: `POST https://api.telegra.ph/createPage` с этим access_token. Редактирование: `POST https://api.telegra.ph/editPage` или через Auth URL в браузере.
**Скрипты в vault:**
- [snippets/telegraph-publish-client-instruction.py](../../snippets/telegraph-publish-client-instruction.py) — создаёт новую страницу из Python-кода (содержимое прописано в самом скрипте)
- [snippets/telegraph-md-to-page.py](../../snippets/telegraph-md-to-page.py) — **конвертер markdown → Telegraph Node**, редактирует `Nastrojka-VPN-04-24-2`. Поддерживает вложенные списки, inline code/links/bold/italic, защищает code-spans от italic-парсинга. Чтобы опубликовать новый md: поменять PATH/TITLE/источник файла в `main()`.
**Созданные страницы:**
- https://telegra.ph/Nastrojka-VPN-04-24-2 — VPN + US Apple ID для Ярослава (без ключа — ключ отдаётся отдельным сообщением)
## Netbird (netbird.io cloud)
| Параметр | Значение |
|----------|----------|
| API Token | `nbp_YTEmAVpS0hLhnTeJ09q3wYaC0AAXjN21NPvM` |
| API URL | `https://api.netbird.io` |
| SSO | `batlaew@yandex.ru` |
### Setup keys
| Назначение | Ключ | Группа | Истекает | Тип |
|------------|------|--------|----------|-----|
| **Claude-Diag** (временные подключения Claude для диагностики) — скрипт: [snippets/netbird-claude-install.ps1](../../snippets/netbird-claude-install.ps1) | `83301E74-6F86-4CBD-AF77-0C65730103CA` | Claude-Diag (`d7jra32fadhs73dmqv5g`) | 2026-05-21 | reusable, unlimited |
| Glavtorg | `5D1E3507-6F1C-41FC-B86F-05C60364A146` | Glavtorg | — | — |
| **SwarmClaw** (LXC 135, доступ агентов к 100.70.x) | `1558712D-03E8-41DF-B48F-C44DFD3BE31F` (reusable, полный — для переподключения/новых хостов в эту группу) | Claude-Diag (`d7jra32fadhs73dmqv5g`) | 2027-06-09 | reusable, unlimited | created 2026-06-09 via API. LXC 135 уже подключён (IP `100.70.95.183`, `swarmclaw.netbird.cloud`). |
| **German** (LXC 141, ассистент — доступ к 100.70.x) | `64DF527E-31F0-46E5-8E31-311325F9AEC5` | Claude-Diag (`d7jra32fadhs73dmqv5g`) | 2027-06-18 | reusable, unlimited | created 2026-06-18 via API (id `d8q4maqfadhs73aakqrg`). LXC 141 подключён: IP `100.70.99.82`, `german.netbird.cloud`. ⚠️ ставить через **apt-репозиторий** `pkgs.netbird.io` (`install.sh` редиректит на GitHub releases → таймаут из RU). Enroll с `--disable-dns` (свой resolv.conf 1.1.1.1). |
**Продление Claude-Diag ключа** (через API при истечении):
```bash
curl -s -X POST -H "Authorization: Token nbp_YTEmAVpS0hLhnTeJ09q3wYaC0AAXjN21NPvM" \
-H "Content-Type: application/json" \
-d '{"name":"Claude Diagnostic","type":"reusable","expires_in":2592000,"auto_groups":["d7jra32fadhs73dmqv5g"],"usage_limit":0,"ephemeral":false}' \
https://api.netbird.io/api/setup-keys
```
---
## Заметки
- Пароль `1qaz!QAZ` используется на Proxmox, NPM, Nextcloud
- Пароль `OL260380eg` используется на MikroTik и Gitea
- LXC 129 (Clawdbot) удалён ~апрель 2026. LXC 139 (yaroslav-assistant, тестовый openclaw для Ярослава, не использовался) удалён 2026-04-29 — backup md-конфигов в `projects/dttb/archive/lxc-139-yaroslav-assistant/`. Актуальные LXC по `pct list` на Proxmox: 132 code-server, 136 gitea, 137 openclaw, 138 vpn-proxy, 103 NPM, 113 VaultWarden, 114 LinkWarden, 115 watchyourlan, 116 rustdeskserver, 134 ZnamSecurityBot