diff --git a/README-v2.md b/README-v2.md
deleted file mode 100644
index af43cad..0000000
--- a/README-v2.md
+++ /dev/null
@@ -1,418 +0,0 @@
-# 🚀 Proxy-Core
-
-
-
-```
-╔═══════════════════════════════════════════════════════════════════╗
-║ ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ ██╗ ██████╗ ██████╗ ║
-║ ██╔══██╗██╔══██╗██╔═══██╗╚██╗██╔╝╚██╗ ██╔╝ ██╔════╝██╔═══██╗║
-║ ██████╔╝██████╔╝██║ ██║ ╚███╔╝ ╚████╔╝█████╗██║ ██║ ██║║
-║ ██╔═══╝ ██╔══██╗██║ ██║ ██╔██╗ ╚██╔╝ ╚════╝██║ ██║ ██║║
-║ ██║ ██║ ██║╚██████╔╝██╔╝ ██╗ ██║ ╚██████╗╚██████╔╝║
-║ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ║
-║ ║
-║ Advanced VPN & Proxy Panel Auto-Installer ║
-╚═══════════════════════════════════════════════════════════════════╝
-```
-
-[](https://opensource.org/licenses/MIT)
-[](https://github.com/houseassassin/proxy-core)
-[](https://www.gnu.org/software/bash/)
-[](https://www.docker.com/)
-
-**Универсальный установщик и менеджер VPN/Proxy панелей с поддержкой множества протоколов**
-
-[Установка](#-быстрая-установка) • [Возможности](#-возможности) • [Документация](#-документация) • [Поддержка](#-поддержка)
-
-
-
----
-
-## 📋 О проекте
-
-**Proxy-Core** — это мощный инструмент для автоматической установки и управления VPN/Proxy панелями. Объединяет лучшие практики из популярных проектов и предоставляет единый интерфейс для работы с различными протоколами.
-
-### 🎯 Поддерживаемые панели
-
-| Панель | Протоколы | Особенности |
-|--------|-----------|-------------|
-| **WireGuard** | WireGuard | Быстрый, современный, безопасный VPN |
-| **3x-ui** | VLESS, VMess, Trojan, Shadowsocks, XTLS | Веб-панель Xray с множеством протоколов |
-| **Remnawave** | Multi-protocol | Современная панель с Docker и reverse proxy |
-| **Hysteria2** | Hysteria2 | Высокоскоростной прокси с маскировкой трафика |
-| **MTProxy** | MTProxy | Официальный прокси для Telegram |
-
-### 🔄 Reverse Proxy
-
-| Сервер | Особенности | Рекомендуется для |
-|--------|-------------|-------------------|
-| **Nginx** | Высокая производительность, стабильность | Production, высокие нагрузки |
-| **Caddy** | Автоматический HTTPS, простая конфигурация | Быстрый старт, малые проекты |
-
-### 💻 Поддерживаемые ОС
-
-
-
-| OS | Версии | Статус |
-|:--:|:------:|:------:|
-| 🐧 **Ubuntu** | 18.04, 20.04, 22.04, 24.04 | ✅ Полная поддержка |
-| 🐧 **Debian** | 10, 11, 12 | ✅ Полная поддержка |
-| 🎩 **CentOS** | 7, 8, 9 | ✅ Полная поддержка |
-| 🎩 **RHEL** | 7, 8, 9 | ✅ Полная поддержка |
-| 🎩 **Fedora** | 35+ | ✅ Полная поддержка |
-
-
-
----
-
-## ⚡ Быстрая установка
-
-### Метод 1: Одна команда (рекомендуется)
-
-```bash
-bash <(curl -Ls https://raw.githubusercontent.com/houseassassin/proxy-core/main/install-advanced-v2.sh)
-```
-
-### Метод 2: Скачать и запустить
-
-```bash
-wget https://raw.githubusercontent.com/houseassassin/proxy-core/main/install-advanced-v2.sh
-chmod +x install-advanced-v2.sh
-sudo ./install-advanced-v2.sh
-```
-
-### Метод 3: Клонировать репозиторий
-
-```bash
-git clone https://github.com/houseassassin/proxy-core.git
-cd proxy-core
-chmod +x *.sh
-sudo ./install-advanced-v2.sh
-```
-
----
-
-## 🌟 Возможности
-
-
-
-### 🔧 Автоматизация
-
-
-
-- ✅ **Автоопределение ОС** — автоматическое определение дистрибутива и версии
-- ✅ **Установка зависимостей** — Docker, Docker Compose, certbot и все необходимое
-- ✅ **Генерация паролей** — автоматическая генерация безопасных паролей и ключей
-- ✅ **Настройка firewall** — автоматическая конфигурация UFW/firewalld
-- ✅ **BBR оптимизация** — включение BBR для улучшения производительности TCP
-- ✅ **Swap управление** — автоматическое создание swap при нехватке RAM
-
-
-
-### 🔐 SSL/TLS сертификаты
-
-
-
-- 🔒 **Let's Encrypt** — HTTP-01 challenge для обычных доменов
-- 🔒 **Cloudflare DNS** — DNS-01 challenge с поддержкой wildcard сертификатов
-- 🔒 **Gcore DNS** — альтернативный DNS провайдер
-- 🔒 **Самоподписанные** — для тестирования и локальных сетей
-- 🔒 **Автообновление** — автоматическое обновление сертификатов через cron
-
-
-
-### 🎮 Управление
-
-
-
-- 📊 **Мониторинг** — статус сервисов, использование ресурсов, логи
-- 🔄 **Обновления** — простое обновление всех компонентов
-- 💾 **Резервное копирование** — ручное и автоматическое создание бэкапов
-- 🔄 **Восстановление** — быстрое восстановление из резервных копий
-- 👥 **Управление клиентами** — добавление, удаление, просмотр клиентов WireGuard
-- 📱 **QR-коды** — генерация QR-кодов для мобильных устройств
-
-
-
-### 🎨 Дополнительные функции
-
-
-
-- 🎭 **Selfsteal** — маскировка под обычный сайт
-- 🔄 **Выбор Reverse Proxy** — Nginx или Caddy на выбор
-- 📱 **MTProxy** — официальный прокси для Telegram с QR-кодами
-- 🌍 **Многоязычность** — English + Русский
-- 🎨 **Цветной вывод** — красивый и понятный интерфейс
-- ⚡ **Spinner анимация** — визуализация длительных операций
-
----
-
-## 📖 Документация
-
-### 🚀 Быстрый старт
-
-#### 1. Установка WireGuard
-
-```bash
-sudo ./install-advanced-v2.sh
-# Выберите: 1 (Install Panel) → 1 (WireGuard)
-```
-
-#### 2. Установка 3x-ui
-
-```bash
-sudo ./install-advanced-v2.sh
-# Выберите: 1 (Install Panel) → 2 (3x-ui)
-```
-
-#### 3. Установка Remnawave с выбором Reverse Proxy
-
-```bash
-sudo ./install-advanced-v2.sh
-# Выберите: 1 (Install Panel) → 3 (Remnawave)
-# Затем выберите: 1 (Nginx) или 2 (Caddy)
-```
-
-#### 4. Установка Hysteria2
-
-```bash
-sudo ./install-advanced-v2.sh
-# Выберите: 1 (Install Panel) → 4 (Hysteria2)
-```
-
-#### 5. Установка MTProxy для Telegram
-
-```bash
-sudo ./install-advanced-v2.sh
-# Выберите: 1 (Install Panel) → 5 (MTProxy)
-```
-
-**Результат:**
-- Прокси для Telegram
-- Ссылка для подключения: `tg://proxy?server=...`
-- QR-код для быстрого подключения
-- Конфигурация: `/opt/MTProxy/`
-
-**Управление:**
-```bash
-sudo ./mtproxy-manager.sh
-```
-
----
-
-### 🎭 Selfsteal - Маскировка трафика
-
-Selfsteal позволяет замаскировать ваш прокси-сервер под обычный веб-сайт.
-
-#### Установка Selfsteal
-
-```bash
-sudo ./install-advanced-v2.sh
-# Выберите: 6 (Selfsteal)
-```
-
-#### Типы Selfsteal:
-
-**1. Случайный сайт**
-- Автоматически выбирается популярный сайт
-- Wikipedia, GitHub, StackOverflow, Reddit, Medium
-
-**2. Пользовательский URL**
-- Укажите любой URL
-- Скрипт скачает и настроит страницу
-
-**3. Локальный HTML файл**
-- Используйте свой HTML файл
-- Полный контроль над содержимым
-
-#### Как это работает:
-
-1. При обращении к серверу по HTTP показывается обычный сайт
-2. Прокси работает на других портах/протоколах
-3. Для внешнего наблюдателя сервер выглядит как обычный веб-сайт
-
----
-
-### 🔄 Reverse Proxy - Nginx vs Caddy
-
-#### Когда использовать Nginx:
-
-✅ **Production окружение**
-- Высокие нагрузки (1000+ одновременных подключений)
-- Требуется максимальная производительность
-- Нужна гибкая конфигурация
-- Есть опыт работы с Nginx
-
-#### Когда использовать Caddy:
-
-✅ **Быстрый старт**
-- Автоматический HTTPS из коробки
-- Простая конфигурация
-- Малые и средние проекты
-- Нет опыта с веб-серверами
-
-#### Сравнение:
-
-| Функция | Nginx | Caddy |
-|---------|-------|-------|
-| Производительность | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
-| Простота настройки | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
-| Автоматический HTTPS | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
-| Гибкость | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
-| Документация | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
-
----
-
-### 📱 MTProxy Management
-
-#### Показать ссылку подключения
-
-```bash
-sudo ./mtproxy-manager.sh
-# Выберите: 1 (Показать ссылку подключения)
-```
-
-Получите:
-- Ссылку для Telegram: `tg://proxy?server=...`
-- QR-код для быстрого подключения
-- Параметры для ручной настройки
-
-#### Сгенерировать новый секрет
-
-```bash
-sudo ./mtproxy-manager.sh
-# Выберите: 2 (Сгенерировать новый секрет)
-```
-
-⚠️ **Внимание:** Все текущие подключения будут разорваны!
-
-#### Изменить порт
-
-```bash
-sudo ./mtproxy-manager.sh
-# Выберите: 3 (Изменить порт)
-```
-
-#### Обновить конфигурацию Telegram
-
-```bash
-sudo ./mtproxy-manager.sh
-# Выберите: 4 (Обновить конфигурацию)
-```
-
-Обновляет:
-- `proxy-secret` - секреты Telegram
-- `proxy-multi.conf` - конфигурация серверов
-
-#### Показать статистику
-
-```bash
-sudo ./mtproxy-manager.sh
-# Выберите: 5 (Показать статистику)
-```
-
-Показывает:
-- Статус сервиса
-- Использование CPU и RAM
-- Количество активных подключений
-
----
-
-## 🔒 Безопасность
-
-### ✅ Рекомендации после установки
-
-1. **Смените пароли по умолчанию**
-2. **Настройте firewall**
-3. **Включите автообновления**
-4. **Установите fail2ban**
-5. **Настройте регулярные бэкапы**
-6. **Используйте Selfsteal для маскировки**
-7. **Мониторинг логов**
-
-Подробнее в [SECURITY.md](docs/SECURITY.md).
-
----
-
-## 📊 Структура проекта
-
-```
-proxy-core/
-├── 📄 install-advanced-v2.sh # Основной установщик v2.1
-├── 📄 install-advanced.sh # Установщик v2.0
-├── 🎮 manage.sh # Менеджер панелей
-├── 🔧 wg-manager.sh # WireGuard менеджер
-├── 📱 mtproxy-manager.sh # MTProxy менеджер
-├── 🔄 update.sh # Обновление
-├── 🎨 banner.sh # ASCII баннер
-├── 📖 README.md # Документация
-├── 📖 CONTRIBUTING.md # Руководство для участников
-├── 📖 PUBLISH.md # Инструкция по публикации
-└── 📜 LICENSE # MIT License
-```
-
----
-
-## 🤝 Благодарности
-
-Проект основан на лучших практиках из:
-
-- [3dp-manager](https://github.com/denpiligrim/3dp-manager) - Docker management, Hysteria2
-- [remnawave-reverse-proxy](https://github.com/eGamesAPI/remnawave-reverse-proxy) - SSL, multi-language
-- [remnawave-scripts](https://github.com/DigneZzZ/remnawave-scripts) - Backup system
-- [RemnaSetup](https://github.com/Capybara-z/RemnaSetup) - Beautiful UI, selfsteal
-
-Огромное спасибо авторам! 🙏
-
----
-
-## 📝 Лицензия
-
-MIT License - свободное использование и модификация
-
----
-
-## 💬 Поддержка
-
-- **GitHub Issues:** [github.com/houseassassin/proxy-core/issues](https://github.com/houseassassin/proxy-core/issues)
-- **Telegram:** [@houseassassin](https://t.me/houseassassin)
-
----
-
-## 🔄 Changelog
-
-### Version 2.1.0 (2026-04-22)
-
-✨ **Новое:**
-- 📱 Поддержка MTProxy для Telegram
-- 🔄 Выбор Reverse Proxy (Nginx/Caddy)
-- 🎭 Selfsteal - маскировка под обычный сайт
-- 📱 QR-коды для MTProxy
-- 🎮 Менеджер MTProxy
-
-🔧 **Улучшения:**
-- Интерактивный выбор компонентов
-- Улучшенная система меню
-- Больше опций конфигурации
-
-### Version 2.0.0 (2026-04-22)
-
-✨ **Новое:**
-- Поддержка Hysteria2
-- Улучшенное управление SSL (3 метода)
-- Автоматическая настройка BBR
-- Многоязычный интерфейс (EN/RU)
-- Spinner анимация
-- Система логирования
-
----
-
-
-
-### 💖 Сделано с любовью by [houseassassin](https://github.com/houseassassin)
-
-**Если проект помог вам, поставьте ⭐ звезду!**
-
-[⬆ Наверх](#-proxy-core)
-
-
diff --git a/README.md b/README.md
index ed8fbf7..d0813c4 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
-# 🚀 Proxy-Core
-
+# 🚀 Proxy-Core
+
```
╔═══════════════════════════════════════════════════════════════════╗
║ ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ ██╗ ██████╗ ██████╗ ║
@@ -16,13 +16,13 @@
```
[](https://opensource.org/licenses/MIT)
-[](https://github.com/houseassassin/proxy-core)
+[](https://github.com/houseassassin/proxy-core)
[](https://www.gnu.org/software/bash/)
[](https://www.docker.com/)
**Универсальный установщик и менеджер VPN/Proxy панелей с поддержкой множества протоколов**
-[Установка](#-быстрая-установка) • [Возможности](#-возможности) • [Документация](#-документация) • [Поддержка](#-поддержка)
+[🚀 Установка](#-быстрая-установка) • [✨ Возможности](#-возможности) • [📖 Документация](#-документация) • [💬 Поддержка](#-поддержка)
@@ -30,23 +30,94 @@
## 📋 О проекте
-**Proxy-Core** — это мощный инструмент для автоматической установки и управления VPN/Proxy панелями. Объединяет лучшие практики из популярных проектов и предоставляет единый интерфейс для работы с различными протоколами.
+**Proxy-Core** — мощный инструмент для автоматической установки и управления VPN/Proxy панелями. Объединяет лучшие практики из популярных проектов и предоставляет единый интерфейс для работы с различными протоколами.
+
+
### 🎯 Поддерживаемые панели
| Панель | Протоколы | Особенности |
-|--------|-----------|-------------|
-| **WireGuard** | WireGuard | Быстрый, современный, безопасный VPN |
-| **3x-ui** | VLESS, VMess, Trojan, Shadowsocks, XTLS | Веб-панель Xray с множеством протоколов |
-| **Remnawave** | Multi-protocol | Современная панель с Docker и reverse proxy |
-| **Hysteria2** | Hysteria2 | Высокоскоростной прокси с маскировкой трафика |
+|:------:|:---------:|:-----------:|
+| **WireGuard** | WireGuard | 🚀 Быстрый, современный, безопасный VPN |
+| **3x-ui** | VLESS, VMess, Trojan, Shadowsocks | 🌐 Веб-панель Xray с множеством протоколов |
+| **Remnawave** | Multi-protocol | 🐳 Современная панель с Docker |
+| **Hysteria2** | Hysteria2 | ⚡ Высокоскоростной прокси с маскировкой |
+| **MTProxy** | MTProxy | 📱 Официальный прокси для Telegram |
-### 💻 Поддерживаемые ОС
+
+
+---
+
+## ⚡ Быстрая установка
+
+### Одна команда (рекомендуется)
+
+```bash
+bash <(curl -Ls https://raw.githubusercontent.com/houseassassin/proxy-core/main/install.sh)
+```
+
+### Альтернативный метод
+
+```bash
+git clone https://github.com/houseassassin/proxy-core.git
+cd proxy-core
+chmod +x install.sh
+sudo ./install.sh
+```
+
+---
+
+## ✨ Возможности
+
+
+
+|
+
+### 🔧 Автоматизация
+- ✅ Автоопределение ОС и версии
+- ✅ Установка Docker и зависимостей
+- ✅ Генерация безопасных паролей
+- ✅ Настройка firewall (UFW/firewalld)
+- ✅ BBR оптимизация TCP
+- ✅ Автоматическое создание swap
+
+### 🔐 SSL/TLS сертификаты
+- 🔒 Let's Encrypt (HTTP-01)
+- 🔒 Cloudflare DNS (DNS-01)
+- 🔒 Gcore DNS
+- 🔒 Самоподписанные сертификаты
+- 🔒 Автообновление через cron
+
+ |
+
+
+### 🎮 Управление
+- 📊 Мониторинг сервисов и ресурсов
+- 🔄 Простое обновление компонентов
+- 💾 Резервное копирование
+- 🔄 Восстановление из бэкапов
+- 👥 Управление клиентами WireGuard
+- 📱 Генерация QR-кодов
+
+### 🎨 Дополнительно
+- 🎭 Selfsteal маскировка трафика
+- 🔄 Выбор Reverse Proxy (Nginx/Caddy)
+- 📱 MTProxy с QR-кодами
+- 🌍 Многоязычность (EN/RU)
+- 🎨 Красивый интерфейс
+
+ |
+
+
+
+---
+
+## 💻 Поддерживаемые ОС
-| OS | Версии | Статус |
-|:--:|:------:|:------:|
+| Операционная система | Версии | Статус |
+|:-------------------:|:------:|:------:|
| 🐧 **Ubuntu** | 18.04, 20.04, 22.04, 24.04 | ✅ Полная поддержка |
| 🐧 **Debian** | 10, 11, 12 | ✅ Полная поддержка |
| 🎩 **CentOS** | 7, 8, 9 | ✅ Полная поддержка |
@@ -57,167 +128,159 @@
---
-## ⚡ Быстрая установка
-
-### Метод 1: Одна команда (рекомендуется)
-
-```bash
-bash <(curl -Ls https://raw.githubusercontent.com/houseassassin/proxy-core/main/install-advanced.sh)
-```
-
-### Метод 2: Скачать и запустить
-
-```bash
-wget https://raw.githubusercontent.com/houseassassin/proxy-core/main/install-advanced.sh
-chmod +x install-advanced.sh
-sudo ./install-advanced.sh
-```
-
-### Метод 3: Клонировать репозиторий
-
-```bash
-git clone https://github.com/houseassassin/proxy-core.git
-cd proxy-core
-chmod +x *.sh
-sudo ./install-advanced.sh
-```
-
----
-
-## 🌟 Возможности
-
-
-
-### 🔧 Автоматизация
-
-
-
-- ✅ **Автоопределение ОС** — автоматическое определение дистрибутива и версии
-- ✅ **Установка зависимостей** — Docker, Docker Compose, certbot и все необходимое
-- ✅ **Генерация паролей** — автоматическая генерация безопасных паролей и ключей
-- ✅ **Настройка firewall** — автоматическая конфигурация UFW/firewalld
-- ✅ **BBR оптимизация** — включение BBR для улучшения производительности TCP
-- ✅ **Swap управление** — автоматическое создание swap при нехватке RAM
-
-
-
-### 🔐 SSL/TLS сертификаты
-
-
-
-- 🔒 **Let's Encrypt** — HTTP-01 challenge для обычных доменов
-- 🔒 **Cloudflare DNS** — DNS-01 challenge с поддержкой wildcard сертификатов
-- 🔒 **Gcore DNS** — альтернативный DNS провайдер
-- 🔒 **Самоподписанные** — для тестирования и локальных сетей
-- 🔒 **Автообновление** — автоматическое обновление сертификатов через cron
-
-
-
-### 🎮 Управление
-
-
-
-- 📊 **Мониторинг** — статус сервисов, использование ресурсов, логи
-- 🔄 **Обновления** — простое обновление всех компонентов
-- 💾 **Резервное копирование** — ручное и автоматическое создание бэкапов
-- 🔄 **Восстановление** — быстрое восстановление из резервных копий
-- 👥 **Управление клиентами** — добавление, удаление, просмотр клиентов WireGuard
-- 📱 **QR-коды** — генерация QR-кодов для мобильных устройств
-
-
-
-### 🌍 Интерфейс
-
-
-
-- 🇬🇧 **English** — полная поддержка английского языка
-- 🇷🇺 **Русский** — полная поддержка русского языка
-- 🎨 **Цветной вывод** — красивый и понятный интерфейс
-- ⚡ **Spinner анимация** — визуализация длительных операций
-
----
-
## 📖 Документация
### 🚀 Быстрый старт
-#### 1. Установка WireGuard
+
+1️⃣ Установка WireGuard
```bash
-sudo ./install-advanced.sh
+sudo ./install.sh
# Выберите: 1 (Install Panel) → 1 (WireGuard)
```
**Результат:**
-- Сервер WireGuard на порту 51820 (или указанном)
-- Конфигурация: `/etc/wireguard/wg0.conf`
-- Автозапуск при загрузке системы
+- Установленный WireGuard сервер
+- Первый клиент с конфигурацией
+- QR-код для мобильных устройств
+- Автоматическая настройка firewall
-#### 2. Установка 3x-ui
+**Управление клиентами:**
+```bash
+sudo ./wg-manager.sh
+```
+
+
+
+
+2️⃣ Установка 3x-ui
```bash
-sudo ./install-advanced.sh
+sudo ./install.sh
# Выберите: 1 (Install Panel) → 2 (3x-ui)
```
**Результат:**
-- Веб-панель: `http://YOUR_IP:2053`
-- Логин: `admin` | Пароль: `admin` ⚠️ **СМЕНИТЕ!**
+- Веб-панель 3x-ui
+- Поддержка VLESS, VMess, Trojan, Shadowsocks
+- SSL сертификаты
+- Доступ через браузер
-#### 3. Установка Remnawave
+
+
+
+3️⃣ Установка Remnawave
```bash
-sudo ./install-advanced.sh
+sudo ./install.sh
# Выберите: 1 (Install Panel) → 3 (Remnawave)
+# Затем выберите Reverse Proxy: 1 (Nginx) или 2 (Caddy)
```
-**Потребуется:**
-- Домен (например: `vpn.example.com`)
-- Email для SSL сертификата
-
**Результат:**
-- Панель: `https://YOUR_DOMAIN`
-- Логин и пароль будут показаны после установки
+- Remnawave панель с Docker
+- Выбранный reverse proxy (Nginx/Caddy)
+- SSL сертификаты
+- Готовая к использованию панель
-#### 4. Установка Hysteria2
+
+
+
+4️⃣ Установка Hysteria2
```bash
-sudo ./install-advanced.sh
+sudo ./install.sh
# Выберите: 1 (Install Panel) → 4 (Hysteria2)
```
-**Потребуется:**
-- Домен для ACME сертификата
-- Email для Let's Encrypt
+**Результат:**
+- Высокоскоростной Hysteria2 прокси
+- Маскировка трафика
+- Оптимизированная конфигурация
+
+
+
+
+5️⃣ Установка MTProxy
+
+```bash
+sudo ./install.sh
+# Выберите: 1 (Install Panel) → 5 (MTProxy)
+```
**Результат:**
-- Конфигурация: `/etc/hysteria/config.yaml`
-- Пароль и порт будут показаны
+- Прокси для Telegram
+- Ссылка для подключения: `tg://proxy?server=...`
+- QR-код для быстрого подключения
+- Менеджер для управления
+
+**Управление MTProxy:**
+```bash
+sudo ./mtproxy-manager.sh
+```
+
+**Функции менеджера:**
+- 📱 Показать ссылку подключения и QR-код
+- 🔑 Сгенерировать новый секрет
+- 🔧 Изменить порт
+- 🔄 Обновить конфигурацию Telegram
+- 📊 Показать статистику
+- 📋 Просмотр логов
+
+
---
-### 🎮 Управление панелями
+### 🎭 Selfsteal - Маскировка трафика
-#### Запуск менеджера
+Selfsteal позволяет замаскировать ваш прокси-сервер под обычный веб-сайт.
```bash
-sudo ./manage.sh
+sudo ./install.sh
+# Выберите: 6 (Selfsteal)
```
-#### Меню менеджера
+**Типы маскировки:**
-```
-╔════════════════════════════════════════╗
-║ VPN Panel Management ║
-╚════════════════════════════════════════╝
+| Тип | Описание | Использование |
+|:---:|:--------:|:-------------:|
+| 🎲 **Случайный сайт** | Автоматический выбор популярного сайта | Wikipedia, GitHub, StackOverflow |
+| 🌐 **Пользовательский URL** | Укажите любой URL | Любой сайт на ваш выбор |
+| 📄 **Локальный HTML** | Используйте свой HTML файл | Полный контроль над содержимым |
-1. Управление WireGuard
-2. Управление 3x-ui
-3. Управление Remnawave
-4. Управление Hysteria2
-5. Системная информация
-0. Выход
-```
+**Как это работает:**
+1. При обращении к серверу по HTTP показывается обычный сайт
+2. Прокси работает на других портах/протоколах
+3. Для внешнего наблюдателя сервер выглядит как обычный веб-сайт
+
+---
+
+### 🔄 Reverse Proxy - Nginx vs Caddy
+
+
+
+| Функция | Nginx | Caddy |
+|:-------:|:-----:|:-----:|
+| **Производительность** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
+| **Простота настройки** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
+| **Автоматический HTTPS** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
+| **Гибкость** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
+| **Документация** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
+
+
+
+**Когда использовать Nginx:**
+- ✅ Production окружение с высокими нагрузками
+- ✅ Требуется максимальная производительность
+- ✅ Нужна гибкая конфигурация
+- ✅ Есть опыт работы с Nginx
+
+**Когда использовать Caddy:**
+- ✅ Быстрый старт без опыта
+- ✅ Автоматический HTTPS из коробки
+- ✅ Простая конфигурация
+- ✅ Малые и средние проекты
---
@@ -225,27 +288,53 @@ sudo ./manage.sh
### ✅ Рекомендации после установки
-1. **Смените пароли по умолчанию**
-2. **Настройте firewall**
-3. **Включите автообновления**
-4. **Установите fail2ban**
-5. **Настройте регулярные бэкапы**
-6. **Мониторинг логов**
+
+
+|
-Подробнее в [полной документации](docs/SECURITY.md).
+**Обязательно:**
+1. 🔑 Смените пароли по умолчанию
+2. 🛡️ Настройте firewall
+3. 🔄 Включите автообновления
+4. 🚫 Установите fail2ban
+5. 💾 Настройте регулярные бэкапы
+
+ |
+
+
+**Рекомендуется:**
+6. 🎭 Используйте Selfsteal для маскировки
+7. 📊 Настройте мониторинг логов
+8. 🔐 Используйте сильные пароли
+9. 🔄 Регулярно обновляйте систему
+10. 📱 Включите 2FA где возможно
+
+ |
+
+
---
-## 🐛 Troubleshooting
+## 🎮 Управление
-### Основные проблемы
+### Основные команды
-- **WireGuard не запускается** → Проверьте IP forwarding
-- **3x-ui недоступен** → Проверьте firewall и порт 2053
-- **Remnawave не работает** → Проверьте Docker контейнеры
-- **SSL сертификаты** → Проверьте DNS и порт 80
+```bash
+# Главный установщик
+sudo ./install.sh
-Подробнее в [разделе Troubleshooting](docs/TROUBLESHOOTING.md).
+# Управление WireGuard
+sudo ./wg-manager.sh
+
+# Управление MTProxy
+sudo ./mtproxy-manager.sh
+
+# Общее управление панелями
+sudo ./manage.sh
+
+# Обновление компонентов
+sudo ./update.sh
+```
---
@@ -253,12 +342,15 @@ sudo ./manage.sh
```
proxy-core/
-├── 📄 install-advanced.sh # Основной установщик
+├── 📄 install.sh # Главный установщик v2.1.0
├── 🎮 manage.sh # Менеджер панелей
├── 🔧 wg-manager.sh # WireGuard менеджер
-├── 🔄 update.sh # Обновление
-├── 📄 install.sh # Базовый установщик
+├── 📱 mtproxy-manager.sh # MTProxy менеджер
+├── 🔄 update.sh # Обновление компонентов
+├── 🎨 banner.sh # ASCII баннер
├── 📖 README.md # Документация
+├── 📖 CONTRIBUTING.md # Руководство для участников
+├── 📖 PUBLISH.md # Инструкция по публикации
└── 📜 LICENSE # MIT License
```
@@ -268,44 +360,70 @@ proxy-core/
Проект основан на лучших практиках из:
-- [3dp-manager](https://github.com/denpiligrim/3dp-manager)
-- [remnawave-reverse-proxy](https://github.com/eGamesAPI/remnawave-reverse-proxy)
-- [remnawave-scripts](https://github.com/DigneZzZ/remnawave-scripts)
-- [RemnaSetup](https://github.com/Capybara-z/RemnaSetup)
+
+
+| Проект | Вклад |
+|:------:|:-----:|
+| [3dp-manager](https://github.com/denpiligrim/3dp-manager) | Docker management, Hysteria2 |
+| [remnawave-reverse-proxy](https://github.com/eGamesAPI/remnawave-reverse-proxy) | SSL, multi-language |
+| [remnawave-scripts](https://github.com/DigneZzZ/remnawave-scripts) | Backup system |
+| [RemnaSetup](https://github.com/Capybara-z/RemnaSetup) | Beautiful UI, selfsteal |
+
+
Огромное спасибо авторам! 🙏
---
-## 📝 Лицензия
+## 🔄 Changelog
-MIT License - свободное использование и модификация
+### Version 2.1.0 (2026-04-22)
+
+
+✨ Новое
+
+- 📱 Поддержка MTProxy для Telegram
+- 🔄 Выбор Reverse Proxy (Nginx/Caddy)
+- 🎭 Selfsteal - маскировка под обычный сайт
+- 📱 QR-коды для MTProxy
+- 🎮 Менеджер MTProxy
+
+
+
+
+🔧 Улучшения
+
+- Интерактивный выбор компонентов
+- Улучшенная система меню
+- Больше опций конфигурации
+- Исправлена ошибка создания директории логов
+
+
---
## 💬 Поддержка
-- **GitHub Issues:** [github.com/houseassassin/proxy-core/issues](https://github.com/houseassassin/proxy-core/issues)
-- **Telegram:** [@houseassassin](https://t.me/houseassassin)
+
+
+**Нужна помощь?**
+
+[](https://github.com/houseassassin/proxy-core/issues)
+[](https://t.me/houseassassin)
+
+
---
-## 🔄 Changelog
+## 📝 Лицензия
-### Version 2.0.0 (2026-04-22)
+
-✨ **Новое:**
-- Поддержка Hysteria2
-- Улучшенное управление SSL (3 метода)
-- Автоматическая настройка BBR
-- Многоязычный интерфейс (EN/RU)
-- Spinner анимация
-- Система логирования
+**MIT License** - свободное использование и модификация
-🔧 **Улучшения:**
-- Оптимизированная установка Docker
-- Автоопределение Docker Compose v1/v2
-- Улучшенная обработка ошибок
+[](https://opensource.org/licenses/MIT)
+
+
---
@@ -315,6 +433,8 @@ MIT License - свободное использование и модифика
**Если проект помог вам, поставьте ⭐ звезду!**
+[](https://github.com/houseassassin/proxy-core/stargazers)
+
[⬆ Наверх](#-proxy-core)
diff --git a/install-advanced-v2.sh b/install-advanced-v2.sh
deleted file mode 100755
index d5e284e..0000000
--- a/install-advanced-v2.sh
+++ /dev/null
@@ -1,564 +0,0 @@
-#!/bin/bash
-
-# Proxy-Core - Advanced VPN & Proxy Panel Auto-Installer
-# Version: 2.1.0
-# Author: houseassassin
-# GitHub: https://github.com/houseassassin/proxy-core
-#
-# Supports: WireGuard, 3x-ui, Remnawave, Hysteria2, MTProxy
-# Reverse Proxy: Nginx, Caddy
-# Features: Selfsteal templates
-
-set -euo pipefail
-
-SCRIPT_VERSION="2.1.0"
-PROJECT_DIR="/opt/proxy-core"
-LANG_FILE="${PROJECT_DIR}/.selected_language"
-
-# Colors
-RED='\033[0;31m'
-GREEN='\033[0;32m'
-YELLOW='\033[1;33m'
-BLUE='\033[0;34m'
-MAGENTA='\033[0;35m'
-CYAN='\033[0;36m'
-GRAY='\033[0;90m'
-NC='\033[0m'
-
-# Create project directory first
-mkdir -p "$PROJECT_DIR"
-
-# Logging
-LOGFILE="${PROJECT_DIR}/installer.log"
-
-log() { echo -e "${GREEN}[INFO]${NC} $1" | tee -a "$LOGFILE"; }
-warn() { echo -e "${YELLOW}[WARN]${NC} $1" | tee -a "$LOGFILE"; }
-error() { echo -e "${RED}[ERROR]${NC} $1" | tee -a "$LOGFILE"; exit 1; }
-success() { echo -e "${GREEN}[SUCCESS]${NC} $1" | tee -a "$LOGFILE"; }
-
-# Spinner animation
-spinner() {
- local pid=$1
- local text=$2
- local spinstr='⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏'
-
- while kill -0 "$pid" 2>/dev/null; do
- for (( i=0; i<${#spinstr}; i++ )); do
- printf "\r${GREEN}[%s]${NC} %s" "${spinstr:$i:1}" "$text"
- sleep 0.1
- done
- done
- printf "\r\033[K"
-}
-
-# Language support
-declare -A LANG_EN=(
- [MENU_TITLE]="VPN Panel Installer"
- [MENU_INSTALL]="Install Panel"
- [MENU_MANAGE]="Manage Services"
- [MENU_BACKUP]="Backup & Restore"
- [MENU_UPDATE]="Update Components"
- [MENU_UNINSTALL]="Uninstall"
- [MENU_EXIT]="Exit"
- [SELECT_PANEL]="Select panel to install"
- [WIREGUARD]="WireGuard VPN"
- [3XUI]="3x-ui Panel"
- [REMNAWAVE]="Remnawave Panel"
- [HYSTERIA2]="Hysteria2 Proxy"
- [MTPROXY]="MTProxy (Telegram)"
- [SELECT_REVERSE_PROXY]="Select Reverse Proxy"
- [NGINX]="Nginx"
- [CADDY]="Caddy"
- [SELFSTEAL]="Install Selfsteal Template"
- [ALL]="Install All"
-)
-
-declare -A LANG_RU=(
- [MENU_TITLE]="Установщик VPN панелей"
- [MENU_INSTALL]="Установить панель"
- [MENU_MANAGE]="Управление сервисами"
- [MENU_BACKUP]="Резервное копирование"
- [MENU_UPDATE]="Обновить компоненты"
- [MENU_UNINSTALL]="Удалить"
- [MENU_EXIT]="Выход"
- [SELECT_PANEL]="Выберите панель для установки"
- [WIREGUARD]="WireGuard VPN"
- [3XUI]="Панель 3x-ui"
- [REMNAWAVE]="Панель Remnawave"
- [HYSTERIA2]="Прокси Hysteria2"
- [MTPROXY]="MTProxy (Telegram)"
- [SELECT_REVERSE_PROXY]="Выберите Reverse Proxy"
- [NGINX]="Nginx"
- [CADDY]="Caddy"
- [SELFSTEAL]="Установить Selfsteal шаблон"
- [ALL]="Установить всё"
-)
-
-MENU_LANG="en"
-
-load_language() {
- if [ -f "$LANG_FILE" ]; then
- MENU_LANG=$(cat "$LANG_FILE" 2>/dev/null | tr -d '[:space:]')
- fi
-}
-
-save_language() {
- mkdir -p "$(dirname "$LANG_FILE")"
- echo "$1" > "$LANG_FILE"
- MENU_LANG="$1"
-}
-
-L() {
- local key="$1"
- local var_name="LANG_${MENU_LANG^^}_${key}"
- echo "${!var_name:-$key}"
-}
-
-# System checks
-check_root() {
- if [[ $EUID -ne 0 ]]; then
- error "Этот скрипт должен быть запущен с правами root"
- fi
-}
-
-detect_os() {
- if [ -f /etc/os-release ]; then
- . /etc/os-release
- OS=$ID
- VER=$VERSION_ID
- else
- error "Не удалось определить операционную систему"
- fi
- log "Обнаружена ОС: $OS $VER"
-}
-
-check_memory() {
- local mem_mb=$(free -m | grep Mem: | awk '{print $2}')
- if [ $mem_mb -lt 2000 ]; then
- local swap_mb=$(free -m | grep Swap: | awk '{print $2}')
- if [ $swap_mb -eq 0 ]; then
- warn "Мало RAM ($mem_mb MB), создаём swap 2GB..."
- fallocate -l 2G /swapfile || dd if=/dev/zero of=/swapfile bs=1M count=2048
- chmod 600 /swapfile
- mkswap /swapfile
- swapon /swapfile
- echo '/swapfile none swap sw 0 0' >> /etc/fstab
- success "Swap создан"
- fi
- fi
-}
-
-# Network utilities
-get_server_ip() {
- curl -s -4 ifconfig.me || curl -s -4 api.ipify.org || curl -s -4 ipinfo.io/ip
-}
-
-get_random_port() {
- local MIN=${1:-3000}
- local MAX=${2:-6999}
-
- while :; do
- PORT=$(shuf -i "$MIN-$MAX" -n 1)
- if ! ss -ltun | awk '{print $4}' | grep -q ":$PORT\$"; then
- echo "$PORT"
- return
- fi
- done
-}
-
-# Docker management
-install_docker() {
- if command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; then
- log "Docker уже установлен"
- return 0
- fi
-
- log "Установка Docker..."
- curl -fsSL https://get.docker.com -o /tmp/get-docker.sh
- sh /tmp/get-docker.sh
- rm /tmp/get-docker.sh
-
- systemctl enable docker
- systemctl start docker
-
- success "Docker установлен"
-}
-
-# System packages
-install_packages() {
- log "Установка системных пакетов..."
-
- case $OS in
- ubuntu|debian)
- apt-get update -y
- apt-get install -y curl wget git sudo ufw certbot \
- ca-certificates jq openssl tar net-tools \
- qrencode python3-certbot-dns-cloudflare \
- unattended-upgrades locales dnsutils coreutils \
- grep gawk python3-pip cron nginx
- ;;
- centos|rhel|fedora)
- yum update -y
- yum install -y curl wget git sudo firewalld certbot \
- ca-certificates jq openssl tar net-tools qrencode nginx
- ;;
- esac
-
- # BBR
- if ! grep -q "net.core.default_qdisc = fq" /etc/sysctl.conf; then
- echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
- fi
- if ! grep -q "net.ipv4.tcp_congestion_control = bbr" /etc/sysctl.conf; then
- echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf
- fi
- sysctl -p >/dev/null
-
- # UFW
- if command -v ufw >/dev/null 2>&1; then
- ufw allow 22/tcp comment 'SSH' >/dev/null 2>&1
- ufw allow 443/tcp comment 'HTTPS' >/dev/null 2>&1
- ufw --force enable >/dev/null 2>&1
- fi
-
- success "Системные пакеты установлены"
-}
-
-# MTProxy installation
-install_mtproxy() {
- log "Установка MTProxy для Telegram..."
-
- # Установка зависимостей
- case $OS in
- ubuntu|debian)
- apt-get install -y git build-essential libssl-dev zlib1g-dev
- ;;
- centos|rhel|fedora)
- yum install -y git gcc make openssl-devel zlib-devel
- ;;
- esac
-
- # Клонирование репозитория
- cd /opt
- if [ -d "MTProxy" ]; then
- rm -rf MTProxy
- fi
- git clone https://github.com/TelegramMessenger/MTProxy.git
- cd MTProxy
-
- # Компиляция
- make
-
- # Получение секрета
- curl -s https://core.telegram.org/getProxySecret -o proxy-secret
- curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf
-
- # Генерация секрета для клиентов
- SECRET=$(head -c 16 /dev/urandom | xxd -ps)
-
- # Выбор порта
- read -p "Введите порт для MTProxy (по умолчанию 8443): " MTPROXY_PORT
- MTPROXY_PORT=${MTPROXY_PORT:-8443}
-
- # Создание systemd сервиса
- cat > /etc/systemd/system/mtproxy.service </dev/null || firewall-cmd --permanent --add-port=$MTPROXY_PORT/tcp 2>/dev/null
-
- SERVER_IP=$(get_server_ip)
-
- success "MTProxy установлен!"
- echo ""
- log "Ссылка для подключения:"
- echo -e "${CYAN}tg://proxy?server=${SERVER_IP}&port=${MTPROXY_PORT}&secret=${SECRET}${NC}"
- echo ""
- log "Или используйте в Telegram:"
- echo -e "${YELLOW}Server: ${SERVER_IP}${NC}"
- echo -e "${YELLOW}Port: ${MTPROXY_PORT}${NC}"
- echo -e "${YELLOW}Secret: ${SECRET}${NC}"
-}
-
-# Reverse Proxy selection
-select_reverse_proxy() {
- echo ""
- echo -e "${GREEN}$(L SELECT_REVERSE_PROXY)${NC}"
- echo ""
- echo -e "${YELLOW}1.${NC} $(L NGINX)"
- echo -e "${YELLOW}2.${NC} $(L CADDY)"
- echo ""
- read -p "Выберите / Select [1-2]: " PROXY_CHOICE
-
- case $PROXY_CHOICE in
- 1)
- REVERSE_PROXY="nginx"
- install_nginx
- ;;
- 2)
- REVERSE_PROXY="caddy"
- install_caddy
- ;;
- *)
- warn "Неверный выбор, используется Nginx"
- REVERSE_PROXY="nginx"
- install_nginx
- ;;
- esac
-}
-
-# Nginx installation
-install_nginx() {
- if command -v nginx >/dev/null 2>&1; then
- log "Nginx уже установлен"
- return 0
- fi
-
- log "Установка Nginx..."
-
- case $OS in
- ubuntu|debian)
- apt-get install -y nginx
- ;;
- centos|rhel|fedora)
- yum install -y nginx
- ;;
- esac
-
- systemctl enable nginx
- systemctl start nginx
-
- success "Nginx установлен"
-}
-
-# Caddy installation
-install_caddy() {
- if command -v caddy >/dev/null 2>&1; then
- log "Caddy уже установлен"
- return 0
- fi
-
- log "Установка Caddy..."
-
- case $OS in
- ubuntu|debian)
- apt-get install -y debian-keyring debian-archive-keyring apt-transport-https
- curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
- curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
- apt-get update
- apt-get install -y caddy
- ;;
- centos|rhel|fedora)
- yum install -y yum-plugin-copr
- yum copr enable @caddy/caddy -y
- yum install -y caddy
- ;;
- esac
-
- systemctl enable caddy
- systemctl start caddy
-
- success "Caddy установлен"
-}
-
-# Selfsteal template installation
-install_selfsteal() {
- log "Установка Selfsteal шаблона..."
-
- if [ ! -d "/opt/remnawave" ] && [ ! -d "/opt/remnanode" ]; then
- error "Remnawave или Remnanode должны быть установлены для selfsteal"
- fi
-
- # Определяем директорию
- if [ -d "/opt/remnawave" ]; then
- INSTALL_DIR="/opt/remnawave"
- else
- INSTALL_DIR="/opt/remnanode"
- fi
-
- echo ""
- echo -e "${GREEN}Выберите тип selfsteal шаблона:${NC}"
- echo ""
- echo -e "${YELLOW}1.${NC} Случайный сайт"
- echo -e "${YELLOW}2.${NC} Пользовательский URL"
- echo -e "${YELLOW}3.${NC} Локальный HTML файл"
- echo ""
- read -p "Выберите [1-3]: " SELFSTEAL_TYPE
-
- case $SELFSTEAL_TYPE in
- 1)
- # Список популярных сайтов
- SITES=(
- "https://www.wikipedia.org"
- "https://www.github.com"
- "https://www.stackoverflow.com"
- "https://www.reddit.com"
- "https://www.medium.com"
- )
- RANDOM_SITE=${SITES[$RANDOM % ${#SITES[@]}]}
- log "Используется случайный сайт: $RANDOM_SITE"
-
- # Скачиваем страницу
- curl -sL "$RANDOM_SITE" > "$INSTALL_DIR/selfsteal.html"
- ;;
- 2)
- read -p "Введите URL сайта: " CUSTOM_URL
- log "Скачивание $CUSTOM_URL..."
- curl -sL "$CUSTOM_URL" > "$INSTALL_DIR/selfsteal.html"
- ;;
- 3)
- read -p "Введите путь к HTML файлу: " HTML_PATH
- if [ -f "$HTML_PATH" ]; then
- cp "$HTML_PATH" "$INSTALL_DIR/selfsteal.html"
- else
- error "Файл не найден: $HTML_PATH"
- fi
- ;;
- *)
- warn "Неверный выбор"
- return 1
- ;;
- esac
-
- # Настройка Nginx для selfsteal
- if [ "$REVERSE_PROXY" = "nginx" ]; then
- cat > /etc/nginx/sites-available/selfsteal </dev/null; do
- for (( i=0; i<${#spinstr}; i++ )); do
- printf "\r${GREEN}[%s]${NC} %s" "${spinstr:$i:1}" "$text"
- sleep 0.1
- done
- done
- printf "\r\033[K"
-}
-
-# Language support
-declare -A LANG_EN=(
- [MENU_TITLE]="VPN Panel Installer"
- [MENU_INSTALL]="Install Panel"
- [MENU_MANAGE]="Manage Services"
- [MENU_BACKUP]="Backup & Restore"
- [MENU_UPDATE]="Update Components"
- [MENU_UNINSTALL]="Uninstall"
- [MENU_EXIT]="Exit"
- [SELECT_PANEL]="Select panel to install"
- [WIREGUARD]="WireGuard VPN"
- [3XUI]="3x-ui Panel"
- [REMNAWAVE]="Remnawave Panel"
- [HYSTERIA2]="Hysteria2 Proxy"
- [ALL]="Install All"
-)
-
-declare -A LANG_RU=(
- [MENU_TITLE]="Установщик VPN панелей"
- [MENU_INSTALL]="Установить панель"
- [MENU_MANAGE]="Управление сервисами"
- [MENU_BACKUP]="Резервное копирование"
- [MENU_UPDATE]="Обновить компоненты"
- [MENU_UNINSTALL]="Удалить"
- [MENU_EXIT]="Выход"
- [SELECT_PANEL]="Выберите панель для установки"
- [WIREGUARD]="WireGuard VPN"
- [3XUI]="Панель 3x-ui"
- [REMNAWAVE]="Панель Remnawave"
- [HYSTERIA2]="Прокси Hysteria2"
- [ALL]="Установить всё"
-)
-
-MENU_LANG="en"
-
-load_language() {
- if [ -f "$LANG_FILE" ]; then
- MENU_LANG=$(cat "$LANG_FILE" 2>/dev/null | tr -d '[:space:]')
- fi
-}
-
-save_language() {
- mkdir -p "$(dirname "$LANG_FILE")"
- echo "$1" > "$LANG_FILE"
- MENU_LANG="$1"
-}
-
-L() {
- local key="$1"
- local var_name="LANG_${MENU_LANG^^}_${key}"
- echo "${!var_name:-$key}"
-}
-
-# System checks
-check_root() {
- if [[ $EUID -ne 0 ]]; then
- error "Этот скрипт должен быть запущен с правами root"
- fi
-}
-
-detect_os() {
- if [ -f /etc/os-release ]; then
- . /etc/os-release
- OS=$ID
- VER=$VERSION_ID
- else
- error "Не удалось определить операционную систему"
- fi
- log "Обнаружена ОС: $OS $VER"
-}
-
-check_memory() {
- local mem_mb=$(free -m | grep Mem: | awk '{print $2}')
- if [ $mem_mb -lt 2000 ]; then
- local swap_mb=$(free -m | grep Swap: | awk '{print $2}')
- if [ $swap_mb -eq 0 ]; then
- warn "Мало RAM ($mem_mb MB), создаём swap 2GB..."
- fallocate -l 2G /swapfile || dd if=/dev/zero of=/swapfile bs=1M count=2048
- chmod 600 /swapfile
- mkswap /swapfile
- swapon /swapfile
- echo '/swapfile none swap sw 0 0' >> /etc/fstab
- success "Swap создан"
- fi
- fi
-}
-
-# Network utilities
-get_server_ip() {
- curl -s -4 ifconfig.me || curl -s -4 api.ipify.org || curl -s -4 ipinfo.io/ip
-}
-
-get_random_port() {
- local MIN=${1:-3000}
- local MAX=${2:-6999}
-
- while :; do
- PORT=$(shuf -i "$MIN-$MAX" -n 1)
- if ! ss -ltun | awk '{print $4}' | grep -q ":$PORT\$"; then
- echo "$PORT"
- return
- fi
- done
-}
-
-check_domain() {
- local domain="$1"
- local domain_ip=$(dig +short A "$domain" | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1)
- local server_ip=$(get_server_ip)
-
- if [ -z "$domain_ip" ] || [ -z "$server_ip" ]; then
- warn "Не удалось проверить DNS домена $domain"
- return 1
- fi
-
- if [ "$domain_ip" = "$server_ip" ]; then
- return 0
- fi
-
- warn "IP домена ($domain_ip) не совпадает с IP сервера ($server_ip)"
- return 1
-}
-
-# Docker management
-resolve_compose_cmd() {
- if docker compose version >/dev/null 2>&1; then
- COMPOSE_CMD=("docker" "compose")
- return 0
- fi
-
- if command -v docker-compose >/dev/null 2>&1; then
- COMPOSE_CMD=("docker-compose")
- return 0
- fi
-
- warn "Docker Compose не найден, устанавливаем..."
- apt-get update
- apt-get install -y docker-compose-plugin || apt-get install -y docker-compose
-
- if docker compose version >/dev/null 2>&1; then
- COMPOSE_CMD=("docker" "compose")
- return 0
- fi
-
- error "Не удалось установить Docker Compose"
-}
-
-install_docker() {
- if command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; then
- log "Docker уже установлен"
- resolve_compose_cmd
- return 0
- fi
-
- log "Установка Docker..."
- curl -fsSL https://get.docker.com -o /tmp/get-docker.sh
- sh /tmp/get-docker.sh
- rm /tmp/get-docker.sh
-
- systemctl enable docker
- systemctl start docker
-
- resolve_compose_cmd
- success "Docker установлен"
-}
-
-# System packages
-install_packages() {
- log "Установка системных пакетов..."
-
- case $OS in
- ubuntu|debian)
- apt-get update -y
- apt-get install -y curl wget git sudo ufw certbot \
- ca-certificates jq openssl tar net-tools \
- qrencode python3-certbot-dns-cloudflare \
- unattended-upgrades locales dnsutils coreutils \
- grep gawk python3-pip cron
- ;;
- centos|rhel|fedora)
- yum update -y
- yum install -y curl wget git sudo firewalld certbot \
- ca-certificates jq openssl tar net-tools qrencode
- ;;
- *)
- error "Неподдерживаемая ОС: $OS"
- ;;
- esac
-
- # BBR
- if ! grep -q "net.core.default_qdisc = fq" /etc/sysctl.conf; then
- echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
- fi
- if ! grep -q "net.ipv4.tcp_congestion_control = bbr" /etc/sysctl.conf; then
- echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf
- fi
- sysctl -p >/dev/null
-
- # UFW
- if command -v ufw >/dev/null 2>&1; then
- ufw allow 22/tcp comment 'SSH' >/dev/null 2>&1
- ufw allow 443/tcp comment 'HTTPS' >/dev/null 2>&1
- ufw --force enable >/dev/null 2>&1
- fi
-
- success "Системные пакеты установлены"
-}
-
-# SSL Certificates
-get_ssl_certificate() {
- local domain="$1"
- local email="$2"
- local method="${3:-standalone}"
-
- log "Получение SSL сертификата для $domain..."
-
- case $method in
- standalone)
- ufw allow 80/tcp >/dev/null 2>&1
- certbot certonly --standalone \
- -d "$domain" \
- --email "$email" \
- --agree-tos \
- --non-interactive \
- --http-01-port 80 \
- --key-type ecdsa \
- --elliptic-curve secp384r1
- ufw delete allow 80/tcp >/dev/null 2>&1
- ;;
- cloudflare)
- if [ -z "$CLOUDFLARE_API_KEY" ]; then
- read -p "Введите Cloudflare API Token: " CLOUDFLARE_API_KEY
- fi
-
- mkdir -p ~/.secrets/certbot
- cat > ~/.secrets/certbot/cloudflare.ini < server_public.key
- chmod 600 server_private.key
- fi
-
- read -p "Введите порт WireGuard (по умолчанию 51820): " WG_PORT
- WG_PORT=${WG_PORT:-51820}
-
- SERVER_PRIVATE_KEY=$(cat server_private.key)
- SERVER_IP=$(get_server_ip)
-
- cat > /etc/wireguard/wg0.conf <> /etc/sysctl.conf
- sysctl -p
-
- systemctl enable wg-quick@wg0
- systemctl start wg-quick@wg0
-
- ufw allow $WG_PORT/udp 2>/dev/null || firewall-cmd --permanent --add-port=$WG_PORT/udp 2>/dev/null
-
- success "WireGuard установлен на порту $WG_PORT"
- log "Конфигурация: /etc/wireguard/wg0.conf"
-}
-
-# 3x-ui installation
-install_3xui() {
- log "Установка 3x-ui..."
-
- bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
-
- success "3x-ui установлен"
- log "Панель доступна: http://$(get_server_ip):2053"
- log "Логин: admin | Пароль: admin (СМЕНИТЕ!)"
-}
-
-# Hysteria2 installation
-install_hysteria2() {
- log "Установка Hysteria2..."
-
- if systemctl cat hysteria-server.service &> /dev/null; then
- log "Hysteria2 уже установлен"
- return 0
- fi
-
- bash <(curl -fsSL https://get.hy2.sh/)
-
- local HY2_PORT=$(get_random_port 10000 20000)
- local HY2_PASSWORD=$(openssl rand -base64 16 | tr -dc 'A-Za-z0-9' | cut -c1-16)
- local HY2_OBFS=$(openssl rand -base64 16 | tr -dc 'A-Za-z0-9' | cut -c1-16)
-
- read -p "Введите домен для Hysteria2: " HY2_DOMAIN
- read -p "Введите email для Let's Encrypt: " HY2_EMAIL
-
- cat > /etc/hysteria/config.yaml < .env < docker-compose.yml < nginx.conf </dev/null; do
+ for (( i=0; i<${#spinstr}; i++ )); do
+ printf "\r${GREEN}[%s]${NC} %s" "${spinstr:$i:1}" "$text"
+ sleep 0.1
+ done
+ done
+ printf "\r\033[K"
}
-print_error() {
- echo -e "${RED}[ERROR]${NC} $1"
+# Language support
+declare -A LANG_EN=(
+ [MENU_TITLE]="VPN Panel Installer"
+ [MENU_INSTALL]="Install Panel"
+ [MENU_MANAGE]="Manage Services"
+ [MENU_BACKUP]="Backup & Restore"
+ [MENU_UPDATE]="Update Components"
+ [MENU_UNINSTALL]="Uninstall"
+ [MENU_EXIT]="Exit"
+ [SELECT_PANEL]="Select panel to install"
+ [WIREGUARD]="WireGuard VPN"
+ [3XUI]="3x-ui Panel"
+ [REMNAWAVE]="Remnawave Panel"
+ [HYSTERIA2]="Hysteria2 Proxy"
+ [MTPROXY]="MTProxy (Telegram)"
+ [SELECT_REVERSE_PROXY]="Select Reverse Proxy"
+ [NGINX]="Nginx"
+ [CADDY]="Caddy"
+ [SELFSTEAL]="Install Selfsteal Template"
+ [ALL]="Install All"
+)
+
+declare -A LANG_RU=(
+ [MENU_TITLE]="Установщик VPN панелей"
+ [MENU_INSTALL]="Установить панель"
+ [MENU_MANAGE]="Управление сервисами"
+ [MENU_BACKUP]="Резервное копирование"
+ [MENU_UPDATE]="Обновить компоненты"
+ [MENU_UNINSTALL]="Удалить"
+ [MENU_EXIT]="Выход"
+ [SELECT_PANEL]="Выберите панель для установки"
+ [WIREGUARD]="WireGuard VPN"
+ [3XUI]="Панель 3x-ui"
+ [REMNAWAVE]="Панель Remnawave"
+ [HYSTERIA2]="Прокси Hysteria2"
+ [MTPROXY]="MTProxy (Telegram)"
+ [SELECT_REVERSE_PROXY]="Выберите Reverse Proxy"
+ [NGINX]="Nginx"
+ [CADDY]="Caddy"
+ [SELFSTEAL]="Установить Selfsteal шаблон"
+ [ALL]="Установить всё"
+)
+
+MENU_LANG="en"
+
+load_language() {
+ if [ -f "$LANG_FILE" ]; then
+ MENU_LANG=$(cat "$LANG_FILE" 2>/dev/null | tr -d '[:space:]')
+ fi
}
-print_warning() {
- echo -e "${YELLOW}[WARNING]${NC} $1"
+save_language() {
+ mkdir -p "$(dirname "$LANG_FILE")"
+ echo "$1" > "$LANG_FILE"
+ MENU_LANG="$1"
}
+L() {
+ local key="$1"
+ local var_name="LANG_${MENU_LANG^^}_${key}"
+ echo "${!var_name:-$key}"
+}
+
+# System checks
check_root() {
if [[ $EUID -ne 0 ]]; then
- print_error "Этот скрипт должен быть запущен с правами root"
- exit 1
+ error "Этот скрипт должен быть запущен с правами root"
fi
}
@@ -36,264 +127,438 @@ detect_os() {
OS=$ID
VER=$VERSION_ID
else
- print_error "Не удалось определить операционную систему"
- exit 1
+ error "Не удалось определить операционную систему"
fi
-
- print_msg "Обнаружена ОС: $OS $VER"
+ log "Обнаружена ОС: $OS $VER"
}
-update_system() {
- print_msg "Обновление системы..."
+check_memory() {
+ local mem_mb=$(free -m | grep Mem: | awk '{print $2}')
+ if [ $mem_mb -lt 2000 ]; then
+ local swap_mb=$(free -m | grep Swap: | awk '{print $2}')
+ if [ $swap_mb -eq 0 ]; then
+ warn "Мало RAM ($mem_mb MB), создаём swap 2GB..."
+ fallocate -l 2G /swapfile || dd if=/dev/zero of=/swapfile bs=1M count=2048
+ chmod 600 /swapfile
+ mkswap /swapfile
+ swapon /swapfile
+ echo '/swapfile none swap sw 0 0' >> /etc/fstab
+ success "Swap создан"
+ fi
+ fi
+}
+
+# Network utilities
+get_server_ip() {
+ curl -s -4 ifconfig.me || curl -s -4 api.ipify.org || curl -s -4 ipinfo.io/ip
+}
+
+get_random_port() {
+ local MIN=${1:-3000}
+ local MAX=${2:-6999}
+
+ while :; do
+ PORT=$(shuf -i "$MIN-$MAX" -n 1)
+ if ! ss -ltun | awk '{print $4}' | grep -q ":$PORT\$"; then
+ echo "$PORT"
+ return
+ fi
+ done
+}
+
+# Docker management
+install_docker() {
+ if command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; then
+ log "Docker уже установлен"
+ return 0
+ fi
+
+ log "Установка Docker..."
+ curl -fsSL https://get.docker.com -o /tmp/get-docker.sh
+ sh /tmp/get-docker.sh
+ rm /tmp/get-docker.sh
+
+ systemctl enable docker
+ systemctl start docker
+
+ success "Docker установлен"
+}
+
+# System packages
+install_packages() {
+ log "Установка системных пакетов..."
case $OS in
ubuntu|debian)
apt-get update -y
- apt-get upgrade -y
- apt-get install -y curl wget git sudo ufw
+ apt-get install -y curl wget git sudo ufw certbot \
+ ca-certificates jq openssl tar net-tools \
+ qrencode python3-certbot-dns-cloudflare \
+ unattended-upgrades locales dnsutils coreutils \
+ grep gawk python3-pip cron nginx
;;
centos|rhel|fedora)
yum update -y
- yum install -y curl wget git sudo firewalld
+ yum install -y curl wget git sudo firewalld certbot \
+ ca-certificates jq openssl tar net-tools qrencode nginx
+ ;;
+ esac
+
+ # BBR
+ if ! grep -q "net.core.default_qdisc = fq" /etc/sysctl.conf; then
+ echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
+ fi
+ if ! grep -q "net.ipv4.tcp_congestion_control = bbr" /etc/sysctl.conf; then
+ echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf
+ fi
+ sysctl -p >/dev/null
+
+ # UFW
+ if command -v ufw >/dev/null 2>&1; then
+ ufw allow 22/tcp comment 'SSH' >/dev/null 2>&1
+ ufw allow 443/tcp comment 'HTTPS' >/dev/null 2>&1
+ ufw --force enable >/dev/null 2>&1
+ fi
+
+ success "Системные пакеты установлены"
+}
+
+# MTProxy installation
+install_mtproxy() {
+ log "Установка MTProxy для Telegram..."
+
+ # Установка зависимостей
+ case $OS in
+ ubuntu|debian)
+ apt-get install -y git build-essential libssl-dev zlib1g-dev
+ ;;
+ centos|rhel|fedora)
+ yum install -y git gcc make openssl-devel zlib-devel
+ ;;
+ esac
+
+ # Клонирование репозитория
+ cd /opt
+ if [ -d "MTProxy" ]; then
+ rm -rf MTProxy
+ fi
+ git clone https://github.com/TelegramMessenger/MTProxy.git
+ cd MTProxy
+
+ # Компиляция
+ make
+
+ # Получение секрета
+ curl -s https://core.telegram.org/getProxySecret -o proxy-secret
+ curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf
+
+ # Генерация секрета для клиентов
+ SECRET=$(head -c 16 /dev/urandom | xxd -ps)
+
+ # Выбор порта
+ read -p "Введите порт для MTProxy (по умолчанию 8443): " MTPROXY_PORT
+ MTPROXY_PORT=${MTPROXY_PORT:-8443}
+
+ # Создание systemd сервиса
+ cat > /etc/systemd/system/mtproxy.service </dev/null || firewall-cmd --permanent --add-port=$MTPROXY_PORT/tcp 2>/dev/null
+
+ SERVER_IP=$(get_server_ip)
+
+ success "MTProxy установлен!"
+ echo ""
+ log "Ссылка для подключения:"
+ echo -e "${CYAN}tg://proxy?server=${SERVER_IP}&port=${MTPROXY_PORT}&secret=${SECRET}${NC}"
+ echo ""
+ log "Или используйте в Telegram:"
+ echo -e "${YELLOW}Server: ${SERVER_IP}${NC}"
+ echo -e "${YELLOW}Port: ${MTPROXY_PORT}${NC}"
+ echo -e "${YELLOW}Secret: ${SECRET}${NC}"
+}
+
+# Reverse Proxy selection
+select_reverse_proxy() {
+ echo ""
+ echo -e "${GREEN}$(L SELECT_REVERSE_PROXY)${NC}"
+ echo ""
+ echo -e "${YELLOW}1.${NC} $(L NGINX)"
+ echo -e "${YELLOW}2.${NC} $(L CADDY)"
+ echo ""
+ read -p "Выберите / Select [1-2]: " PROXY_CHOICE
+
+ case $PROXY_CHOICE in
+ 1)
+ REVERSE_PROXY="nginx"
+ install_nginx
+ ;;
+ 2)
+ REVERSE_PROXY="caddy"
+ install_caddy
;;
*)
- print_error "Неподдерживаемая ОС: $OS"
- exit 1
+ warn "Неверный выбор, используется Nginx"
+ REVERSE_PROXY="nginx"
+ install_nginx
;;
esac
}
-install_docker() {
- if command -v docker &> /dev/null; then
- print_msg "Docker уже установлен"
- return
+# Nginx installation
+install_nginx() {
+ if command -v nginx >/dev/null 2>&1; then
+ log "Nginx уже установлен"
+ return 0
fi
- print_msg "Установка Docker..."
- curl -fsSL https://get.docker.com -o get-docker.sh
- sh get-docker.sh
- systemctl enable docker
- systemctl start docker
- rm get-docker.sh
-
- if ! command -v docker-compose &> /dev/null; then
- print_msg "Установка Docker Compose..."
- curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- chmod +x /usr/local/bin/docker-compose
- fi
-}
-
-install_wireguard() {
- print_msg "Установка WireGuard..."
+ log "Установка Nginx..."
case $OS in
ubuntu|debian)
- apt-get install -y wireguard wireguard-tools qrencode
+ apt-get install -y nginx
;;
centos|rhel|fedora)
- yum install -y epel-release
- yum install -y wireguard-tools qrencode
+ yum install -y nginx
;;
esac
- mkdir -p /etc/wireguard
- cd /etc/wireguard
+ systemctl enable nginx
+ systemctl start nginx
- if [ ! -f server_private.key ]; then
- wg genkey | tee server_private.key | wg pubkey > server_public.key
- chmod 600 server_private.key
+ success "Nginx установлен"
+}
+
+# Caddy installation
+install_caddy() {
+ if command -v caddy >/dev/null 2>&1; then
+ log "Caddy уже установлен"
+ return 0
fi
- read -p "Введите порт WireGuard (по умолчанию 51820): " WG_PORT
- WG_PORT=${WG_PORT:-51820}
+ log "Установка Caddy..."
- SERVER_PRIVATE_KEY=$(cat server_private.key)
- SERVER_IP=$(curl -s ifconfig.me)
+ case $OS in
+ ubuntu|debian)
+ apt-get install -y debian-keyring debian-archive-keyring apt-transport-https
+ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
+ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
+ apt-get update
+ apt-get install -y caddy
+ ;;
+ centos|rhel|fedora)
+ yum install -y yum-plugin-copr
+ yum copr enable @caddy/caddy -y
+ yum install -y caddy
+ ;;
+ esac
- cat > /etc/wireguard/wg0.conf <> /etc/sysctl.conf
- sysctl -p
-
- systemctl enable wg-quick@wg0
- systemctl start wg-quick@wg0
-
- ufw allow $WG_PORT/udp 2>/dev/null || firewall-cmd --permanent --add-port=$WG_PORT/udp 2>/dev/null
-
- print_msg "WireGuard установлен на порту $WG_PORT"
- print_msg "Конфигурация: /etc/wireguard/wg0.conf"
+ success "Caddy установлен"
}
-install_3xui() {
- print_msg "Установка 3x-ui..."
+# Selfsteal template installation
+install_selfsteal() {
+ log "Установка Selfsteal шаблона..."
- bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
-
- print_msg "3x-ui установлен"
- print_msg "Панель доступна по адресу: http://$(curl -s ifconfig.me):2053"
- print_msg "Логин по умолчанию: admin"
- print_msg "Пароль по умолчанию: admin"
-}
-
-install_remnawave() {
- print_msg "Установка Remnawave..."
-
- install_docker
-
- mkdir -p /opt/remnawave
- cd /opt/remnawave
-
- read -p "Введите домен для Remnawave (например, vpn.example.com): " DOMAIN
- read -p "Введите email для SSL сертификата: " EMAIL
- read -p "Введите порт панели (по умолчанию 8080): " PANEL_PORT
- PANEL_PORT=${PANEL_PORT:-8080}
-
- cat > docker-compose.yml < nginx.conf < "$INSTALL_DIR/selfsteal.html"
+ ;;
+ 2)
+ read -p "Введите URL сайта: " CUSTOM_URL
+ log "Скачивание $CUSTOM_URL..."
+ curl -sL "$CUSTOM_URL" > "$INSTALL_DIR/selfsteal.html"
+ ;;
+ 3)
+ read -p "Введите путь к HTML файлу: " HTML_PATH
+ if [ -f "$HTML_PATH" ]; then
+ cp "$HTML_PATH" "$INSTALL_DIR/selfsteal.html"
+ else
+ error "Файл не найден: $HTML_PATH"
+ fi
+ ;;
+ *)
+ warn "Неверный выбор"
+ return 1
+ ;;
+ esac
+
+ # Настройка Nginx для selfsteal
+ if [ "$REVERSE_PROXY" = "nginx" ]; then
+ cat > /etc/nginx/sites-available/selfsteal <