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
```
---
## Лицензия
Для частного использования. Распространение запрещено.

View File

@@ -1,9 +1,11 @@
# Kaskad PRO v2.0 # Kaskad PRO v2.2
**Каскадный менеджер VPN / Proxy с Telegram-ботом, мониторингом и пингом.** **Каскадный менеджер VPN / Proxy с Telegram-ботом, мониторингом, GeoIP и live ping.**
> Канал: [YouTube @antenkaru](https://www.youtube.com/@antenkaru) > Канал: [YouTube @antenkaru](https://www.youtube.com/@antenkaru)
**Не разбираетесь в серверах и терминале?** → [ИНСТРУКЦИЯ_ДЛЯ_ПОЛЬЗОВАТЕЛЯ.md](ИНСТРУКЦИЯ_ДЛЯ_ПОЛЬЗОВАТЕЛЯ.md) — пошагово простыми словами.
--- ---
## Возможности ## Возможности
@@ -14,10 +16,12 @@
| **Каскад TCP** | VLESS, XRay, VMess, Reality, Trojan | | **Каскад TCP** | VLESS, XRay, VMess, Reality, Trojan |
| **Каскад MTProto** | Telegram-прокси | | **Каскад MTProto** | Telegram-прокси |
| **Custom Rule** | Разные порты входа/выхода, SSH, RDP и т.д. | | **Custom Rule** | Разные порты входа/выхода, SSH, RDP и т.д. |
| **Live Ping** | Пинг целевого сервера в терминале (обновление 1 сек) | | **GeoIP + Ping-test** | При добавлении IP: GeoIP (страна/ISP) + 3 пинга |
| **Telegram Bot** | Полное управление через кнопки прямо из Telegram | | **Live Ping** | Пинг с ASCII-графикой (обновление 1 сек) |
| **Telegram Bot** | Полное управление через кнопки (Inline и Reply-клавиатура) |
| **Ping в боте** | 1 раз / 10 раз (среднее) / 60 секунд (непрерывно) | | **Ping в боте** | 1 раз / 10 раз (среднее) / 60 секунд (непрерывно) |
| **Мониторинг** | Автопинг каждые 10с / 1мин / 5мин с алертами в Telegram | | **Мониторинг** | Автопинг с порогом и частотой уведомлений (10с/60с/5м/15м) |
| **Имена/примечания** | Имена IP серверов + примечания, отображаются везде |
| **BBR Turbo** | Автоматическое включение Google BBR | | **BBR Turbo** | Автоматическое включение Google BBR |
| **Безопасность** | Валидация IP/портов, маркировка правил, изоляция iptables | | **Безопасность** | Валидация IP/портов, маркировка правил, изоляция iptables |
@@ -25,13 +29,21 @@
## Установка ## Установка
Подключитесь к VPS (Ubuntu/Debian/CentOS) под `root`: Подключитесь к VPS (Ubuntu/Debian/CentOS/Fedora) под `root`.
### Вариант A: репозиторий публичный
```bash ```bash
wget -O install.sh "URL_СКРИПТА" && chmod +x install.sh && ./install.sh 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
```
Далее скрипт установит зависимости, включит IP forwarding/BBR и создаст глобальную команду `gokaskad`.
```bash ```bash
gokaskad gokaskad
@@ -39,6 +51,12 @@ gokaskad
--- ---
## Документация
Полная документация: **`DOCS.md`**
---
## Быстрый старт ## Быстрый старт
### 1. Создать каскад (пример WireGuard) ### 1. Создать каскад (пример WireGuard)
@@ -89,6 +107,7 @@ IP: 45.10.20.30
11) Обновить скрипт 11) Обновить скрипт
12) PROMO 12) PROMO
13) Инструкция (7 страниц) 13) Инструкция (7 страниц)
14) Имена серверов
0) Выход 0) Выход
``` ```
@@ -106,6 +125,7 @@ IP: 45.10.20.30
📊 Мониторинг — добавить/удалить/список мониторов 📊 Мониторинг — добавить/удалить/список мониторов
❌ Удалить правило — удалить конкретный каскад ❌ Удалить правило — удалить конкретный каскад
🗑 Сбросить всё — полная очистка (с подтверждением) 🗑 Сбросить всё — полная очистка (с подтверждением)
⌨️ Reply-клавиатура — переключение типа меню
``` ```
--- ---
@@ -117,6 +137,7 @@ IP: 45.10.20.30
| `/usr/local/bin/gokaskad` | Глобальная команда запуска | | `/usr/local/bin/gokaskad` | Глобальная команда запуска |
| `/etc/kaskad/config` | Токен бота и Chat ID | | `/etc/kaskad/config` | Токен бота и Chat ID |
| `/etc/kaskad/monitors/` | Конфигурации мониторов | | `/etc/kaskad/monitors/` | Конфигурации мониторов |
| `/etc/kaskad/aliases` | Имена/примечания/GeoIP для IP |
| `/var/log/kaskad.log` | Лог всех действий | | `/var/log/kaskad.log` | Лог всех действий |
--- ---

View File

@@ -2,12 +2,12 @@
set -o pipefail set -o pipefail
# ══════════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════════
# KASKAD PRO v2.2 — Cascading VPN / Proxy Manager # KASKAD PRO v2.3 — Cascading VPN / Proxy Manager
# Telegram Bot · Live Ping · Monitoring · Alerts · GeoIP · System Stats # Telegram Bot · Live Ping · Monitoring · Alerts · GeoIP · System Stats
# Channel: https://www.youtube.com/@antenkaru # Channel: https://www.youtube.com/@antenkaru
# ══════════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════════
KASKAD_VERSION="2.2" KASKAD_VERSION="2.3"
KASKAD_DIR="/etc/kaskad" KASKAD_DIR="/etc/kaskad"
KASKAD_CONF="$KASKAD_DIR/config" KASKAD_CONF="$KASKAD_DIR/config"
KASKAD_LOG="/var/log/kaskad.log" KASKAD_LOG="/var/log/kaskad.log"
@@ -547,6 +547,79 @@ flush_rules() {
read -p "Нажмите Enter..." read -p "Нажмите Enter..."
} }
full_uninstall() {
clear
echo -e "\n${RED}╔══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${RED}║ ⚠ ПОЛНОЕ УДАЛЕНИЕ KASKAD PRO ⚠ ║${NC}"
echo -e "${RED}╚══════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${WHITE}Будут удалены:${NC}"
echo -e " ${RED}${NC} Все правила каскада (iptables)"
echo -e " ${RED}${NC} Telegram-бот и мониторинг"
echo -e " ${RED}${NC} Конфигурация ${WHITE}/etc/kaskad/${NC}"
echo -e " ${RED}${NC} Команда ${WHITE}gokaskad${NC}"
echo -e " ${RED}${NC} Логи ${WHITE}/var/log/kaskad.log${NC}"
echo ""
echo -e "${GREEN}НЕ будет затронуто:${NC}"
echo -e " ${GREEN}${NC} Системные пакеты (iptables, jq, curl, qrencode)"
echo -e " ${GREEN}${NC} Ваши VPN / прокси (WireGuard, XRay и т.д.)"
echo -e " ${GREEN}${NC} Настройки sysctl (ip_forward, bbr)"
echo ""
read -p "$(echo -e "${RED}Удалить Kaskad PRO полностью? (y/n): ${NC}")" confirm1
[[ "$confirm1" != "y" ]] && { echo -e "\n${CYAN}Отменено.${NC}"; read -p "Нажмите Enter..."; return; }
local words=("УДАЛИТЬ" "СТЕРЕТЬ" "СНЕСТИ" "УНИЧТОЖИТЬ" "ПРОЩАЙ")
local word="${words[$((RANDOM % ${#words[@]}))]}"
echo ""
echo -e "${RED}Последний шанс! Введите слово ${WHITE}${word}${RED} для подтверждения:${NC}"
read -p "> " confirm2
if [[ "$confirm2" != "$word" ]]; then
echo -e "\n${CYAN}Неверное слово. Удаление отменено.${NC}"
read -p "Нажмите Enter..."
return
fi
echo ""
echo -e "${YELLOW}Удаление Kaskad PRO...${NC}\n"
if systemctl is-active kaskad-bot &>/dev/null; then
systemctl stop kaskad-bot 2>/dev/null; systemctl disable kaskad-bot 2>/dev/null
fi
[ -f "$BOT_PID_FILE" ] && { kill "$(cat "$BOT_PID_FILE")" 2>/dev/null; rm -f "$BOT_PID_FILE"; }
rm -f /etc/systemd/system/kaskad-bot.service
echo -e " ${GREEN}${NC} Telegram-бот остановлен"
if systemctl is-active kaskad-monitor &>/dev/null; then
systemctl stop kaskad-monitor 2>/dev/null; systemctl disable kaskad-monitor 2>/dev/null
fi
[ -f "$MONITOR_PID_FILE" ] && { kill "$(cat "$MONITOR_PID_FILE")" 2>/dev/null; rm -f "$MONITOR_PID_FILE"; }
rm -f /etc/systemd/system/kaskad-monitor.service
systemctl daemon-reload 2>/dev/null
echo -e " ${GREEN}${NC} Мониторинг остановлен"
while iptables -t nat -S PREROUTING 2>/dev/null | grep -q "DNAT"; do
local rule; rule=$(iptables -t nat -S PREROUTING | grep "DNAT" | head -1)
eval "iptables -t nat -D ${rule#-A }" 2>/dev/null
done
for chain in INPUT FORWARD; do
while iptables -S "$chain" 2>/dev/null | grep -q "kaskad"; do
local rule; rule=$(iptables -S "$chain" | grep "kaskad" | head -1)
eval "iptables -D ${rule#-A }" 2>/dev/null
done
done
save_iptables
echo -e " ${GREEN}${NC} Правила iptables удалены"
rm -rf "$KASKAD_DIR"
echo -e " ${GREEN}${NC} Конфигурация удалена"
rm -f "$KASKAD_LOG"
echo -e " ${GREEN}${NC} Логи удалены"
rm -f /usr/local/bin/gokaskad
echo -e " ${GREEN}${NC} Команда gokaskad удалена"
echo ""
echo -e "${GREEN}══════════════════════════════════════════${NC}"
echo -e "${GREEN} Kaskad PRO полностью удалён.${NC}"
echo -e "${WHITE} Спасибо, что пользовались!${NC}"
echo -e "${GREEN}══════════════════════════════════════════${NC}"
echo ""
read -p "Нажмите Enter..."
exit 0
}
manage_aliases_menu() { manage_aliases_menu() {
while true; do while true; do
clear clear
@@ -1428,6 +1501,7 @@ show_menu() {
echo -e "12) ${YELLOW}PROMO${NC}" echo -e "12) ${YELLOW}PROMO${NC}"
echo -e "13) ${MAGENTA}📚 Инструкция${NC}" echo -e "13) ${MAGENTA}📚 Инструкция${NC}"
echo -e "14) ${WHITE}Имена серверов${NC}" echo -e "14) ${WHITE}Имена серверов${NC}"
echo -e "15) ${RED}⚠ Удалить Kaskad PRO${NC}"
echo -e " 0) Выход" echo -e " 0) Выход"
echo -e "------------------------------------------------------" echo -e "------------------------------------------------------"
read -p "Выбор: " ch read -p "Выбор: " ch
@@ -1436,10 +1510,102 @@ show_menu() {
3) configure_rule "tcp" "MTProto/TProxy";; 4) configure_custom_rule;; 3) configure_rule "tcp" "MTProto/TProxy";; 4) configure_custom_rule;;
5) list_active_rules;; 6) ping_menu;; 7) monitoring_menu;; 8) bot_menu;; 5) list_active_rules;; 6) ping_menu;; 7) monitoring_menu;; 8) bot_menu;;
9) delete_single_rule;; 10) flush_rules;; 11) self_update;; 12) show_promo;; 9) delete_single_rule;; 10) flush_rules;; 11) self_update;; 12) show_promo;;
13) show_instructions;; 14) manage_aliases_menu;; 0) exit 0;; esac 13) show_instructions;; 14) manage_aliases_menu;; 15) full_uninstall;; 0) exit 0;; esac
done done
} }
# ═══════════════════════════════════════════════════════════════
# STARTUP WITH PROGRESS
# ═══════════════════════════════════════════════════════════════
run_startup() {
local total=7 s=0
clear; echo ""
echo -e "${MAGENTA}╔══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA}║ KASKAD PRO v${KASKAD_VERSION} — Загрузка ║${NC}"
echo -e "${MAGENTA}╚══════════════════════════════════════════════════════════════╝${NC}"
echo ""
((s++))
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}${NC} Проверка прав root..." "$s" "$total"
check_root
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}${NC} Права root подтверждены \n" "$s" "$total"
((s++))
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}${NC} Загрузка конфигурации..." "$s" "$total"
init_config
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}${NC} Конфигурация загружена \n" "$s" "$total"
((s++))
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}${NC} Установка gokaskad..." "$s" "$total"
if [ "$(readlink -f "$0" 2>/dev/null)" != "/usr/local/bin/gokaskad" ]; then
cp -f "$0" "/usr/local/bin/gokaskad"; chmod +x "/usr/local/bin/gokaskad"
fi
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}${NC} Команда gokaskad \n" "$s" "$total"
((s++))
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}${NC} IP Forwarding + BBR..." "$s" "$total"
if grep -qE '^[[:space:]]*#?[[:space:]]*net\.ipv4\.ip_forward' /etc/sysctl.conf; then
sed -i 's/^#*\s*net\.ipv4\.ip_forward.*/net.ipv4.ip_forward=1/' /etc/sysctl.conf
else
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
fi
grep -q "^net.core.default_qdisc=fq" /etc/sysctl.conf || echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
grep -q "^net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf || echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p > /dev/null 2>&1
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}${NC} IP Forwarding + BBR Turbo \n" "$s" "$total"
export DEBIAN_FRONTEND=noninteractive
local need_install=0
for cmd in iptables jq curl qrencode; do command -v "$cmd" &>/dev/null || need_install=1; done
dpkg -s iptables-persistent &>/dev/null 2>&1 || need_install=1
((s++))
if [ "$need_install" -eq 1 ]; then
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}${NC} Установка пакетов" "$s" "$total"
( while true; do printf "."; sleep 1; done ) &
local dpid=$!
if command -v apt-get &>/dev/null; then
apt-get update -y > /dev/null 2>&1
apt-get install -y iptables-persistent netfilter-persistent qrencode jq curl procps > /dev/null 2>&1
elif command -v dnf &>/dev/null; then
dnf install -y iptables-services jq qrencode curl procps-ng > /dev/null 2>&1
elif command -v yum &>/dev/null; then
yum install -y iptables-services jq qrencode curl procps-ng > /dev/null 2>&1
else
kill $dpid 2>/dev/null; wait $dpid 2>/dev/null
printf "\r ${CYAN}[%d/%d]${NC} ${RED}${NC} Пакетный менеджер не найден! \n" "$s" "$total"
exit 1
fi
kill $dpid 2>/dev/null; wait $dpid 2>/dev/null
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}${NC} Пакеты установлены \n" "$s" "$total"
else
printf " ${CYAN}[%d/%d]${NC} ${GREEN}${NC} Все зависимости на месте \n" "$s" "$total"
fi
((s++))
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}${NC} Сетевой интерфейс..." "$s" "$total"
detect_interface
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}${NC} Интерфейс: %-20s \n" "$s" "$total" "$IFACE"
((s++))
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}${NC} Внешний IP..." "$s" "$total"
get_my_ip
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}${NC} IP: %-25s \n" "$s" "$total" "$MY_IP"
echo ""
local w=40 bar=""
for ((i=0; i<w; i++)); do bar+="█"; done
echo -e " ${CYAN}[${GREEN}${bar}${CYAN}]${NC} ${GREEN}100%${NC}"
echo ""
echo -e " ${GREEN}✅ Kaskad PRO v${KASKAD_VERSION} готов к работе!${NC}"
echo ""
sleep 2
show_promo
show_menu
}
# ═══════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════
# ENTRY POINT # ENTRY POINT
# ═══════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════
@@ -1447,5 +1613,5 @@ show_menu() {
case "${1:-}" in case "${1:-}" in
--bot-daemon) init_config; bot_daemon ;; --bot-daemon) init_config; bot_daemon ;;
--monitor-daemon) init_config; monitor_daemon ;; --monitor-daemon) init_config; monitor_daemon ;;
*) check_root; init_config; prepare_system; detect_interface; get_my_ip; show_promo; show_menu ;; *) run_startup ;;
esac esac

View File

@@ -0,0 +1,165 @@
# Kaskad PRO v2.3 — инструкция простыми словами
Эта инструкция для тех, кто не разбирается в компьютерах. Всё по шагам, без сложных слов.
---
## Что это такое?
**Kaskad PRO** — это программа для сервера. Она делает так: вы подключаетесь к **вашему серверу в России**, а он незаметно отправляет ваш трафик на **зарубежный VPN или прокси**. Провайдер видит только подключение к российскому серверу.
**Проще:** вы заходите на российский сервер, а он сам «дозванивается» до зарубежного. Вы этим не занимаетесь — всё настроено один раз.
---
## Что вам понадобится
1. **Сервер (VPS)** — арендованный компьютер в интернете с Linux. Обычно у хостера есть адрес сервера (IP), логин и пароль. Без сервера программа некуда ставить.
2. **Программа для входа на сервер** — например **Termius** (телефон/планшет) или **PuTTY** (компьютер). В ней вы вводите IP сервера, логин и пароль и попадаете в «чёрное окно» — это и есть доступ к серверу.
3. **Данные вашего зарубежного VPN/прокси** — IP-адрес и порт. Их даёт тот, у кого вы купили VPN или прокси (или вы их видите в приложении Amnezia, v2rayNG и т.п.).
---
## Шаг 1. Войти на сервер
1. Откройте Termius (или PuTTY).
2. Создайте новое подключение: укажите **IP-адрес** сервера, **логин** (часто `root`) и **пароль**.
3. Подключитесь. Откроется окно с чёрным фоном и текстом — это терминал.
Дальше все команды нужно **вводить в это окно** и нажимать **Enter**.
---
## Шаг 2. Установить Kaskad PRO
Вам дадут **одну длинную команду**. Её нужно:
1. **Скопировать целиком** (от начала до конца).
2. **Вставить** в чёрное окно (правой кнопкой мыши или долгим нажатием → Вставить).
3. Нажать **Enter**.
Пример команды (вам могут дать другую, с вашей ссылкой или токеном):
```
curl -sL https://raw.githubusercontent.com/anten-ka/kaskad-pro/main/install.sh -o install.sh && chmod +x install.sh && ./install.sh
```
Что будет: появятся надписи, возможно попросят нажать Enter. В конце откроется **меню с цифрами** — это главное меню Kaskad PRO. Установка закончена.
---
## Шаг 3. Открыть меню в следующий раз
Когда вы снова зайдёте на сервер, чтобы что-то изменить, в чёрном окне нужно просто напечатать:
```
gokaskad
```
и нажать **Enter**. Снова откроется меню с цифрами.
---
## Шаг 4. Добавить «мост» (каскад)
В меню есть пункты **1, 2, 3, 4** — это разные типы подключений.
- **1** — для AmneziaWG, WireGuard (обычно для телефона/планшета).
- **2** — для VLESS, XRay (часто в приложениях типа v2rayNG, NekoBox).
- **3** — для прокси Telegram (MTProto).
- **4** — для всего остального (разные порты, SSH, RDP и т.д.).
**Что делать:**
1. Введите цифру (например **1**) и нажмите Enter.
2. Программа спросит **IP-адрес**. Введите адрес вашего **зарубежного** сервера (четыре числа через точку, например `45.10.20.30`). Enter.
3. Потом покажется проверка (страна, пинг) и попросят **имя** — можно написать любое, например «Мой VPN», или нажать Enter и пропустить.
4. Попросят **примечание** — тоже по желанию, можно Enter.
5. Попросят **порт** — введите число (например `51820`). Enter.
6. Покажут, что будет сделано, и спросят «Применить? (y/n)». Напечатайте **y** и Enter.
Готово. Теперь в **приложении на телефоне или компьютере** (Amnezia, v2rayNG и т.д.) нужно в настройках соединения **поменять адрес сервера**: вместо зарубежного IP указать **IP этого (российского) сервера**. Порт оставить тот же. Тогда трафик пойдёт: вы → российский сервер → зарубежный VPN.
---
## Шаг 5. Настроить бота в Telegram
Бот в Telegram позволяет управлять сервером с телефона: смотреть правила, пинг, добавлять мосты и т.д.
### 5.1. Создать бота и получить токен
1. Откройте **Telegram**.
2. В поиске введите: **@BotFather** (один бот, с галочкой).
3. Нажмите «Запустить» или напишите **/start**.
4. Напишите **/newbot**.
5. BotFather спросит **имя** бота — любое (например: «Мой Kaskad»). Отправьте.
6. Потом попросит **username** — должно заканчиваться на **bot** (например: `my_kaskad_bot`). Отправьте.
7. В ответ BotFather пришлёт **длинную строку** (токен). Она выглядит так: `7123456789:AAH...` — это **токен бота**. Скопируйте её целиком и сохраните.
### 5.2. Вставить токен в Kaskad PRO
1. На сервере откройте меню: введите **gokaskad** и Enter.
2. В меню выберите **8** (Telegram Bot). Enter.
3. Выберите **1** (Установить токен бота). Enter.
4. Вставьте скопированный токен и нажмите Enter.
5. Напишут, что сохранено. Нажмите Enter.
### 5.3. Привязать свой Telegram (Chat ID)
Чтобы бот слушал только вас, нужно «познакомить» его с вашим аккаунтом.
1. В меню бота на сервере выберите **2** (Получить Chat ID). Enter.
2. **Не нажимая пока Enter в терминале**, откройте Telegram, найдите **вашего бота** (по имени, которое вы дали) и напишите ему любое сообщение, например **Привет** или **/start**.
3. Вернитесь в чёрное окно на сервере и нажмите **Enter**.
4. Программа покажет ваш Chat ID и сохранит его. Готово.
### 5.4. Включить бота
В том же меню (8 — Telegram Bot) выберите **4** (Запустить бота). Enter. Должно написать, что бот запущен.
Теперь откройте бота в Telegram и напишите **/start** — появится меню с кнопками.
---
## Как пользоваться ботом в Telegram
- **Кнопки внизу сообщения** — нажимайте на них, бот будет показывать новые сообщения и новые кнопки.
- **Добавить мост:** нажмите нужный тип (AWG, VLESS, MTProto или Custom). Бот попросит ввести IP — напишите в чат и отправьте. Дальше он будет просить порт, имя и т.д. — просто отвечайте в чате.
- **Посмотреть правила:** кнопка «Правила» — покажет список настроенных мостов.
- **Пинг:** кнопка «Ping» — выберите сервер, потом «1 раз», «10 раз» или «60 сек» — бот пришлёт результат.
- **Мониторинг:** кнопка «Монитор» — можно добавить проверку сервера; если связь станет плохой, бот пришлёт уведомление.
- **Большие кнопки внизу экрана:** если нажали «Reply-клавиатура», под полем ввода появятся большие кнопки. Нажимайте их как меню. Чтобы вернуть обычные кнопки под сообщениями, напишите боту **/inline**.
---
## Что делать, если не получается
- **«Запустите с правами root»** — вы зашли на сервер не под главным пользователем. Обычно нужно подключаться с логином **root** и паролем, который дал хостинг.
- **Бот не отвечает** — проверьте: токен вставлен (п. 5.2), Chat ID получен (п. 5.3), бот запущен (п. 5.4). Если всё сделали — перезапустите бота: меню 8 → пункт 5 (Остановить), потом пункт 4 (Запустить).
- **Не знаю IP сервера** — IP арендованного сервера (VPS) пишет хостинг в панели управления. Это четыре числа через точку.
- **Не знаю порт VPN** — смотрите в приложении, где подключаетесь к VPN (Amnezia, v2rayNG и т.д.), в настройках сервера обычно указан порт (например 51820, 443).
---
## Кратко: что нажимать в меню
| Цифра | Что это |
|-------|--------|
| 1 | Настроить WireGuard/Amnezia (UDP) |
| 2 | Настроить VLESS (TCP) |
| 3 | Настроить прокси Telegram |
| 4 | Настроить своё правило (разные порты) |
| 5 | Показать все мои правила |
| 6 | Проверить пинг сервера (живой график) |
| 7 | Мониторинг (уведомления в Telegram) |
| 8 | Настройка Telegram-бота |
| 9 | Удалить одно правило |
| 10 | Сбросить все правила |
| 11 | Обновить программу |
| 12 | Промо хостингов |
| 13 | Инструкция в программе |
| 14 | Имена и примечания серверов |
| 15 | Полностью удалить Kaskad PRO с сервера |
| 0 | Выход |
Если что-то непонятно — выбирайте в меню **13** (Инструкция): там короткая подсказка по шагам прямо в программе.