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 ║ -╚═══════════════════════════════════════════════════════════════════╝ -``` - -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![Version](https://img.shields.io/badge/version-2.1.0-blue.svg)](https://github.com/houseassassin/proxy-core) -[![Bash](https://img.shields.io/badge/bash-5.0+-green.svg)](https://www.gnu.org/software/bash/) -[![Docker](https://img.shields.io/badge/docker-20.10+-blue.svg)](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 @@ ``` [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![Version](https://img.shields.io/badge/version-2.0.0-blue.svg)](https://github.com/houseassassin/proxy-core) +[![Version](https://img.shields.io/badge/version-2.1.0-blue.svg)](https://github.com/houseassassin/proxy-core) [![Bash](https://img.shields.io/badge/bash-5.0+-green.svg)](https://www.gnu.org/software/bash/) [![Docker](https://img.shields.io/badge/docker-20.10+-blue.svg)](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) +
+ +**Нужна помощь?** + +[![GitHub Issues](https://img.shields.io/badge/GitHub-Issues-red?style=for-the-badge&logo=github)](https://github.com/houseassassin/proxy-core/issues) +[![Telegram](https://img.shields.io/badge/Telegram-@houseassassin-blue?style=for-the-badge&logo=telegram)](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 -- Улучшенная обработка ошибок +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT) + +
--- @@ -315,6 +433,8 @@ MIT License - свободное использование и модифика **Если проект помог вам, поставьте ⭐ звезду!** +[![Star History](https://img.shields.io/github/stars/houseassassin/proxy-core?style=social)](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 <