3.8 KiB
3.8 KiB
date, type, tags
| date | type | tags | ||||||
|---|---|---|---|---|---|---|---|---|
| 2026-06-23 | decision |
|
Amnezia Web Panel — control-plane VPN-нод на home lab (LXC 143)
Контекст
Олег арендует HOSTKEY Finland (151.241.234.241, Ubuntu 22.04, 2 vCPU/3.9 GB) как основной VPN-хаб для всех проектов, старый финский VPS — горячий резерв. Управлять нодами решено через Amnezia-Web-Panel (FastAPI/Python, paramiko-SSH; рулит AmneziaWG/WG/Xray-Reality/MTProxy на удалённых Ubuntu).
Решение: панель — ДОМА, не на VPS
Панель = control-plane с SSH-ключами ко всем нодам сразу. Держим её на home lab (LXC 143), VPS оставляем чистым data-plane.
Почему не на VPS:
- Безопасность. Финский VPS уже ломали через RCE в amnezia-panel (XorDDoS, чистили 2026-04-24). Панель на публичной коробке = ключи ко всему контуру под ударом.
- Никакого публичного
:5000+ дефолтadmin/admin+ открытый Swagger/docs. - Переживает пересборку VPS —
data.json(вся клиентская база) живёт дома. - Один пульт на все ноды (Finland + Paris/Singapore + будущие).
Что развёрнуто (LXC 143, 10.0.0.143)
- Debian 12, unprivileged + nesting/keyctl, rootfs на
work(local-lvm забит на 94%), ns 1.1.1.1. - Docker 29.6 + compose, контейнер
prvtpro/amnezia-panel:1.4.4,-p 5000:5000, restart=unless-stopped, onboot=1. - NetBird
100.70.9.163/amnezia-panel.netbird.cloud(группа Claude-Diag, ключ1558712D-…,--disable-dns). - Доступ: LAN
10.0.0.143:5000+ NetBird100.70.9.163:5000. Без NPM, без проброса портов — не публично. - Логин
admin/AmnPanel!2026-fi(дефолт сменён; проверено: old→401, new→200).
Грабли
- Персистентность (важно). Upstream
docker-compose.ymlмонтируетamnezia_data:/app/data, но приложение пишет в/app/data.jsonи/app/tunnels_state.json(в WORKDIR/app). Т.е. дефолтный volume — пустышка, при пересоздании контейнера терялась бы вся база. Починено bind-mount'ом конкретных файлов в/opt/amnezia-panel/. - Базовый Debian-шаблон без
curl— ставить перед get.docker.com. - Хеш пароля:
pbkdf2_hmac('sha256', pwd, salt_hex16, 100000)→ форматsalt$hex. Смена пароля скриптом — воспроизвести этот алгоритм (/opt/amnezia-panel/setpw.py).
Дальше (TODO)
- Завести финский VPS в панель (Servers → SSH-креды) и поднять AmneziaWG.
- VPS: SSH key-only, fw только VPN-порты, fail2ban (не повторить 2026-04-24).
- Резервный финский VPS: переустановить ОС начисто перед использованием, подцепить к панели.
- Решить failover (AWG сам не переключается): второй endpoint в конфигах клиентов либо переключение через панель/DNS.
- Проверить лимит трафика HOSTKEY (3 TB/мес) — под «все проекты» может быть тесно.
- Бэкап
/opt/amnezia-panel/data.json(вся клиентская база).