Kaskad PRO v2.3: progress bar on startup, full uninstall with double confirmation, docs and user guide

Made-with: Cursor
This commit is contained in:
anten-ka
2026-03-07 11:52:19 +03:00
parent ae8c484416
commit 6c781a9e48
4 changed files with 674 additions and 12 deletions

310
DOCS.md Normal file
View File

@@ -0,0 +1,310 @@
# Kaskad PRO — документация (v2.2)
## Что такое Kaskad PRO
Kaskad PRO — bash-скрипт для Linux, который создаёт **каскадный “мост”** (DNAT + MASQUERADE) между клиентом и вашим зарубежным VPN/Proxy сервером.
Схема:
- **Клиент** → **RU VPS (Kaskad PRO)****Foreign VPN/Proxy** → Интернет
Скрипт:
- Добавляет правила `iptables` (NAT + FORWARD)
- Включает `net.ipv4.ip_forward=1`
- Включает BBR (fq + bbr)
- Сохраняет правила (netfilter-persistent/iptables-persistent где доступно)
---
## Требования
- **VPS с Linux** (Ubuntu/Debian/CentOS/Fedora)
- Доступ **root**
- Исходящий доступ в интернет (для установки пакетов и GeoIP)
- Пакеты (скрипт установит автоматически): `iptables`, `curl`, `jq`, `qrencode` (+ persistent для Debian/Ubuntu)
---
## Установка
### Вариант A: репозиторий публичный
```bash
curl -sL https://raw.githubusercontent.com/anten-ka/kaskad-pro/main/install.sh -o install.sh && chmod +x install.sh && ./install.sh
```
### Вариант B: репозиторий приватный (GitHub PAT)
```bash
curl -sL -H "Authorization: token YOUR_GITHUB_PAT" https://raw.githubusercontent.com/anten-ka/kaskad-pro/main/install.sh -o install.sh && chmod +x install.sh && ./install.sh
```
### Повторный запуск меню
```bash
gokaskad
```
---
## Где взять ключи/токены
### 1) Telegram Bot Token (где взять токен бота)
Нужен для запуска Telegram-бота.
1. В Telegram откройте **`@BotFather`**
2. Отправьте команду: `/newbot`
3. Введите имя бота (любое)
4. Введите username бота (должен оканчиваться на `bot`)
5. Скопируйте **token**, который выдаст BotFather (формат `123456789:AA...`)
### 2) Telegram Chat ID (как привязать доступ)
В Kaskad PRO управление ограничено **по Chat ID**.
Вариант авто:
- В меню: `8) Telegram Bot → 2) Chat ID (авто)`
- Перед этим отправьте своему боту любое сообщение (например `/start`)
Вариант вручную:
- В меню: `8) Telegram Bot → 3) Chat ID (вручную)`
- Вставьте chat id (число)
### 3) GitHub PAT (для приватного репозитория)
Нужен только если репозиторий **private**, чтобы скачивать `install.sh` по `raw.githubusercontent.com`.
Рекомендуемый вариант: **fine-grained PAT** с доступом только к репозиторию.
1. GitHub → Settings → Developer settings → **Personal access tokens****Fine-grained tokens**
2. Create token
3. Repository access: **Only select repositories** → выберите `kaskad-pro`
4. Permissions: **Contents = Read-only**
5. Сгенерируйте и сохраните токен
Использование: в команде установки или обновления через `curl -H "Authorization: token ..."`
---
## Основные функции (терминальное меню)
Ниже — что делает каждый пункт меню и когда использовать.
### 1) AmneziaWG / WireGuard (UDP)
Создаёт каскад для UDP-сервисов (AWG/WireGuard/OpenVPN-UDP).
- Вы вводите `IP` и `порт`
- Создаётся правило: `udp :порт (RU VPS) → IP:порт (Foreign)`
На клиенте (AWG/WireGuard) меняете endpoint на IP вашего RU VPS.
### 2) VLESS / XRay (TCP)
Каскад для TCP-прокси (VLESS/VMess/Trojan/Reality и т.д.).
Логика та же:
- `tcp :порт (RU VPS) → IP:порт (Foreign)`
### 3) TProxy / MTProto (TCP)
Каскад для MTProto/TProxy (обычно для Telegram).
### 4) Custom Rule (TCP/UDP, разные порты)
Позволяет пробрасывать:
- разные вход/выход порты
- любой TCP/UDP сервис
Пример: клиент подключается к `RU_VPS:2222`, а трафик уходит на `FOREIGN:22` (SSH).
### 5) Правила
Показывает активные DNAT правила (включая IP каскада) и информацию о целевом сервере:
- имя
- примечание
- GeoIP (страна/ISP), если определено
### 6) Ping (live)
Live ping выбранного целевого IP:
- обновление каждые 1 сек
- ASCII-бар + цветовая шкала
- статистика min/max/avg и потери
### 7) Мониторинг (авто)
Мониторинг целевых серверов:
- Интервал проверок: **10 сек / 1 мин / 5 мин**
- Порог задержки: в ms
- Частота уведомлений (не чаще): **10 сек / 60 сек / 5 мин / 15 мин**
- Если задержка выше порога или timeout — отправляет alert в Telegram
Служба `kaskad-monitor`:
- запускается автоматически, если есть хотя бы один монитор
- останавливается автоматически, если мониторов нет
### 8) Telegram Bot
Настройка токена/Chat ID и управление службой `kaskad-bot`.
### 9) Удалить правило
Удаляет 1 DNAT правило и связанные INPUT/FORWARD правила.
### 10) Сбросить всё
Удаляет **только** правила, созданные Kaskad (по маркеру `kaskad`).
### 11) Обновить скрипт
Скачивает свежий `install.sh` из репозитория и заменяет `/usr/local/bin/gokaskad`.
Если репозиторий приватный — обновление нужно выполнять с PAT (или настроить отдельный update-token внутри скрипта/бота).
### 12) PROMO
Партнёрские хостинги и промокоды (плюс QR).
### 13) Инструкция
Встроенная краткая инструкция (страницы).
### 14) Имена серверов
Редактор имён и примечаний для целевых IP.
Данные хранятся в `/etc/kaskad/aliases`.
---
## Telegram Bot (как пользоваться)
### Запуск
1. Создайте токен через `@BotFather`
2. На сервере:
```bash
gokaskad
```
Меню:
- `8) Telegram Bot → 1) Токен бота` — вставьте token
- `8) Telegram Bot → 2) Chat ID (авто)` — отправьте боту `/start`, затем Enter в терминале
- `8) Telegram Bot → 4) Запустить`
В Telegram:
- Отправьте боту `/start`
### Режимы меню
- **Inline** — кнопки под сообщением (по умолчанию)
- **Reply keyboard** — большие кнопки внизу экрана
Переключение:
- В inline: кнопка `⌨️ Reply-клавиатура`
- В reply: команда `/inline`
### Добавление сервера через бота
Поток:
1. Нажимаете протокол (AWG/VLESS/MTProto/Custom)
2. Вводите IP
3. Бот делает:
- GeoIP (страна/ISP)
- ping 3 раза (1 сек)
4. Просит имя
5. Просит примечание
6. Просит порт(ы)
7. Создаёт правило
### Ping в боте
- 1 раз — мгновенно
- 10 раз — показывает список и среднее
- 60 сек — обновляет прогресс каждые 10 секунд, затем итог
### Мониторинг в боте
1. `📊 Монитор`` Добавить` → выбрать сервер
2. Выбрать интервал (10с/1мин/5мин)
3. Ввести порог (мс)
4. Выбрать частоту уведомлений (10с/60с/5мин/15мин)
---
## Где хранятся данные
| Путь | Назначение |
|---|---|
| `/usr/local/bin/gokaskad` | основной скрипт/команда |
| `/etc/kaskad/config` | BOT_TOKEN, BOT_CHAT_ID, MENU_STYLE |
| `/etc/kaskad/aliases` | IP → имя/примечание/GeoIP |
| `/etc/kaskad/monitors/*.conf` | мониторы IP |
| `/var/log/kaskad.log` | лог действий |
---
## Службы systemd
```bash
systemctl status kaskad-bot
journalctl -u kaskad-bot -f
systemctl status kaskad-monitor
journalctl -u kaskad-monitor -f
```
---
## Troubleshooting
### Бот не отвечает
- Проверьте, что задан `BOT_TOKEN` и `BOT_CHAT_ID`
- Проверьте службу:
```bash
systemctl status kaskad-bot
journalctl -u kaskad-bot -f
```
### Raw GitHub не скачивается
Если репозиторий приватный — нужен PAT:
```bash
curl -sL -H "Authorization: token YOUR_GITHUB_PAT" https://raw.githubusercontent.com/anten-ka/kaskad-pro/main/install.sh
```
### Мониторинг не запускается
Мониторинг запускается автоматически, если есть конфиги в `/etc/kaskad/monitors/`.
Проверьте:
```bash
ls -la /etc/kaskad/monitors/
systemctl status kaskad-monitor
```
---
## Лицензия
Для частного использования. Распространение запрещено.