Веб-панель на **Flask**с**HTTP Basic Auth**: дашборд в духе «каскада» — **Система**, **Сервисы**, CRUD **NAT / DNAT**, сырые **iptables**. Это **отдельная открытая реализация** под ваш GitHub: без пунктов меню PROMO/«anten-ka», без телеграм-бота и терминального `gokaskad` из коммерческого Kaskad PRO; зато установка **curl | bash**с этого репозитория и понятный NAT для AmneziaWG / TCP по схеме «RU VPS → DNAT → зарубежный сервер».
Веб-панель на **Flask**с**HTTP Basic Auth**: **каскад** (DNAT UDP/TCP с российского VPS на зарубежный узел AmneziaWG / WireGuard / TCP), блок **Система**, **Сервисы**, таблица правил и вывод **iptables**. Установка одной командой с**вашего** репозитория GitHub.
-**По умолчанию** скрипт установки **не** задаёт пароль в Docker: откройте в браузере **`http://<ваш_IP>:<порт>/setup`**, придумайте пароль (≥ 8 символов) и логин (часто оставляют `user1`). Хэш сохраняется в томе:**`/var/lib/kaskad/web_auth.json`**.
-Чтобы задать пароль сразу при установке: **`ADMIN_PASSWORD`** или файл **`PASSWORD_FILE`** — тогда шаг `/setup` не нужен.
-Как раньше (случайный пароль в файл): **`FORCE_RANDOM_PASSWORD=1`**.
- Если заданы **`BASIC_AUTH_PASSWORD`** / **`ADMIN_PASSWORD`**, используется они (перекрывают файл).
- По умолчанию пароль **не** подставляется в Docker: страница **`/setup`** (файл**`/var/lib/kaskad/web_auth.json`** на томе).
-Готовый пароль при установке: **`ADMIN_PASSWORD='…'`** или файл **`PASSWORD_FILE`**.
-Случайный пароль в файл: **`FORCE_RANDOM_PASSWORD=1`**.
## NAT и совместимость с логикой Kaskad PRO
## Как устроен NAT
Переменная **`KASKAD_IPTABLES_MODE`** (в контейнере, install передаёт **`compat`** по умолчанию):
Переменная **`KASKAD_IPTABLES_MODE`** (install передаёт **`compat`** по умолчанию):
| Значение | Поведение |
|----------|-----------|
| **`compat`** (по умолчанию) | Как в Kaskad PRO: **DNAT** в **`nat/PREROUTING`**, **INPUT** и парой правил**FORWARD**скомментарием**`kaskad:PORT:proto`**, один раз**MASQUERADE** на исходящем интерфейсе (авто через `ip route` или **`KASKAD_OUT_IFACE`**). |
| **`chain`** | Старая схема: отдельная цепочка **`nat/KASKAD_WEB`** и jump из PREROUTING. |
| Значение | Описание |
|----------|----------|
| **`compat`** | Классический каскад: **DNAT** в **`nat/PREROUTING`**, правила**INPUT** и **FORWARD**сметкой**`kaskad:PORT:proto`**, **MASQUERADE** на исходящем интерфейсе (авто или **`KASKAD_OUT_IFACE`**). |
| **`chain`** | Отдельная цепочка **`nat/KASKAD_WEB`** и переход из PREROUTING. |
Нужны**`net.ipv4.ip_forward=1`** и достаточное место на диске под Docker.
Установка по умолчанию: **`--network host`** и **`--privileged`**, чтобы правила применялись к **таблицам хоста**. Данные правил: **`KASKAD_DATA_DIR`** → `/var/lib/kaskad/rules.json`.
Попытка сохранить правила в **`netfilter-persistent`**, если установлен на хосте.
Нужно**`net.ipv4.ip_forward=1`**. Контейнер обычно с**`--network host`** и **`--privileged`**. Данные правил: **`KASKAD_DATA_DIR`** → `rules.json`.
## Требования
- Linuxс Docker (для NAT — host network + privileged).
- По желанию **`/var/run/docker.sock`** (чтобы в «Сервисах» отображался статус контейнера как `kaskad-web.service`).
- Linux, Docker, для NAT — host network и privileged (как в скрипте).
## Сборка образа: «invalid signature» / apt
См. блок в Wiki ниже — типично кэш builder, прокси, диск, время.
Режим **`chain`**: удаление jump в **`KASKAD_WEB`** см. исторический README в git.
Режим **`compat`**: проще снять правила через панель (удалить клиентов) или выборочно удалять строки с**`kaskad:`** в `iptables -S INPUT/FORWARD` и соответствующие DNAT в `iptables -t nat -S PREROUTING`.
## Локально без Docker
## Локальный запуск (без Docker)
```bash
pip install -r requirements.txt
# либо задайте BASIC_AUTH_PASSWORD, либо откройте /setup
Kaskad Web UI · <ahref="https://github.com/andrey271192/kaskad_web_vpn">kaskad_web_vpn</a> · HTTP Basic Auth · DNAT в цепочке <spanclass="mono">KASKAD_WEB</span> (nat).
{% else %}
Kaskad Web UI · <ahref="https://github.com/andrey271192/kaskad_web_vpn">kaskad_web_vpn</a> · HTTP Basic Auth · режим как у Kaskad PRO: DNAT в <spanclass="mono">PREROUTING</span>, метки <spanclass="mono">kaskad:PORT:proto</span> в INPUT/FORWARD, <spanclass="mono">MASQUERADE</span> на исходящем интерфейсе (<spanclass="mono">KASKAD_IPTABLES_MODE=compat</span>).
Kaskad Web UI · <ahref="https://github.com/andrey271192/kaskad_web_vpn">kaskad_web_vpn</a> · HTTP Basic Auth · каскад: DNAT в <spanclass="mono">PREROUTING</span>, метки <spanclass="mono">kaskad:PORT:proto</span> в INPUT/FORWARD, <spanclass="mono">MASQUERADE</span> (<spanclass="mono">KASKAD_IPTABLES_MODE=compat</span>).
{% endif %}
</footer>
</div>
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.