From 1a43435f5fbb801ac2de37d9c03e0d41633ecdef Mon Sep 17 00:00:00 2001
From: houseassassin <3976100+houseassassin@users.noreply.github.com>
Date: Wed, 22 Apr 2026 11:53:12 +0300
Subject: [PATCH] feat: initialize proxy-core repository with management
scripts, documentation, and licensing
---
.gitignore | 48 ++++
CONTRIBUTING.md | 122 +++++++++
LICENSE | 21 ++
PUBLISH.md | 226 ++++++++++++++++
README.md | 320 +++++++++++++++++++++++
banner.sh | 30 +++
install-advanced.sh | 622 ++++++++++++++++++++++++++++++++++++++++++++
install.sh | 299 +++++++++++++++++++++
manage.sh | 566 ++++++++++++++++++++++++++++++++++++++++
update.sh | 108 ++++++++
wg-manager.sh | 227 ++++++++++++++++
11 files changed, 2589 insertions(+)
create mode 100644 .gitignore
create mode 100644 CONTRIBUTING.md
create mode 100644 LICENSE
create mode 100644 PUBLISH.md
create mode 100644 README.md
create mode 100644 banner.sh
create mode 100755 install-advanced.sh
create mode 100755 install.sh
create mode 100755 manage.sh
create mode 100755 update.sh
create mode 100755 wg-manager.sh
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1faa023
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,48 @@
+# Logs
+*.log
+logs/
+
+# Temporary files
+*.tmp
+*.bak
+*.swp
+*~
+
+# OS files
+.DS_Store
+Thumbs.db
+
+# IDE
+.vscode/
+.idea/
+*.sublime-*
+
+# Backup files
+*.backup
+backup-*/
+
+# Environment files
+.env
+.env.local
+.env.*.local
+
+# Installation directories (on server)
+/opt/remnawave/
+/opt/remnanode/
+/etc/wireguard/clients/
+/etc/hysteria/
+
+# Certificates
+*.pem
+*.crt
+*.key
+*.csr
+
+# Archives
+*.tar.gz
+*.zip
+*.rar
+
+# Test files
+test/
+testing/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..6412dec
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,122 @@
+# Contributing to Proxy-Core
+
+Спасибо за интерес к проекту! Мы рады любому вкладу.
+
+## 🤝 Как внести вклад
+
+### Сообщить об ошибке
+
+1. Проверьте, что проблема еще не была описана в [Issues](https://github.com/houseassassin/proxy-core/issues)
+2. Создайте новый Issue с подробным описанием:
+ - Версия ОС
+ - Версия скрипта
+ - Шаги для воспроизведения
+ - Ожидаемое поведение
+ - Фактическое поведение
+ - Логи ошибок
+
+### Предложить улучшение
+
+1. Создайте Issue с описанием предложения
+2. Объясните, почему это улучшение будет полезно
+3. Приведите примеры использования
+
+### Отправить Pull Request
+
+1. Fork репозитория
+2. Создайте ветку для вашей функции (`git checkout -b feature/amazing-feature`)
+3. Внесите изменения
+4. Протестируйте на чистой системе
+5. Commit изменений (`git commit -m 'Add amazing feature'`)
+6. Push в ветку (`git push origin feature/amazing-feature`)
+7. Откройте Pull Request
+
+## 📝 Стандарты кода
+
+### Bash скрипты
+
+- Используйте `set -euo pipefail` в начале скриптов
+- Добавляйте комментарии к сложным участкам
+- Используйте функции для повторяющегося кода
+- Проверяйте код с помощью `shellcheck`
+- Используйте понятные имена переменных
+
+### Форматирование
+
+```bash
+# Хорошо
+function install_package() {
+ local package_name="$1"
+ log "Installing $package_name..."
+ apt-get install -y "$package_name"
+}
+
+# Плохо
+function inst() {
+ apt-get install -y $1
+}
+```
+
+### Обработка ошибок
+
+```bash
+# Всегда проверяйте результат выполнения
+if ! command -v docker &> /dev/null; then
+ error "Docker not found"
+ return 1
+fi
+
+# Используйте trap для очистки
+trap cleanup EXIT
+```
+
+## 🧪 Тестирование
+
+Перед отправкой PR протестируйте на:
+- Ubuntu 22.04
+- Debian 12
+- CentOS 9 (если возможно)
+
+Проверьте:
+- Установку с нуля
+- Обновление существующей установки
+- Удаление компонентов
+- Работу всех функций меню
+
+## 📚 Документация
+
+При добавлении новых функций:
+- Обновите README.md
+- Добавьте примеры использования
+- Опишите требования
+- Добавьте раздел в Troubleshooting (если нужно)
+
+## 🎨 Стиль коммитов
+
+Используйте понятные сообщения коммитов:
+
+```
+feat: добавлена поддержка Shadowsocks
+fix: исправлена ошибка установки Docker
+docs: обновлена документация по WireGuard
+refactor: улучшена функция генерации паролей
+test: добавлены тесты для SSL сертификатов
+```
+
+## 🔍 Code Review
+
+Все PR проходят review. Будьте готовы:
+- Ответить на вопросы
+- Внести изменения по замечаниям
+- Обновить документацию
+
+## 📜 Лицензия
+
+Отправляя PR, вы соглашаетесь с лицензией MIT проекта.
+
+## 💬 Вопросы?
+
+- Создайте Issue
+- Напишите в Telegram: [@houseassassin](https://t.me/houseassassin)
+
+Спасибо за вклад в Proxy-Core! 🚀
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..697864a
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2026 VPN Panel Installer
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/PUBLISH.md b/PUBLISH.md
new file mode 100644
index 0000000..7c86ee8
--- /dev/null
+++ b/PUBLISH.md
@@ -0,0 +1,226 @@
+# 🚀 Инструкция по публикации Proxy-Core на GitHub
+
+## Шаг 1: Инициализация Git репозитория
+
+```bash
+cd "/Users/houseassassin/My Projects/proxy-core"
+
+# Инициализация репозитория
+git init
+
+# Добавление всех файлов
+git add .
+
+# Первый коммит
+git commit -m "Initial commit: Proxy-Core v2.0.0
+
+- Advanced VPN & Proxy Panel Auto-Installer
+- Support for WireGuard, 3x-ui, Remnawave, Hysteria2
+- Multi-language interface (EN/RU)
+- SSL certificates management (3 methods)
+- Backup & restore functionality
+- Interactive management interface"
+```
+
+## Шаг 2: Создание репозитория на GitHub
+
+1. Перейдите на https://github.com/new
+2. Заполните форму:
+ - **Repository name:** `proxy-core`
+ - **Description:** `🚀 Advanced VPN & Proxy Panel Auto-Installer | WireGuard, 3x-ui, Remnawave, Hysteria2`
+ - **Public** ✅
+ - **Add README:** ❌ (уже есть)
+ - **Add .gitignore:** ❌ (уже есть)
+ - **Choose a license:** ❌ (уже есть MIT)
+
+3. Нажмите **Create repository**
+
+## Шаг 3: Подключение к GitHub
+
+```bash
+# Добавление remote
+git remote add origin https://github.com/houseassassin/proxy-core.git
+
+# Или через SSH (если настроен)
+git remote add origin git@github.com:houseassassin/proxy-core.git
+
+# Проверка
+git remote -v
+```
+
+## Шаг 4: Отправка кода
+
+```bash
+# Отправка в main ветку
+git branch -M main
+git push -u origin main
+```
+
+## Шаг 5: Настройка репозитория на GitHub
+
+### Topics (теги)
+
+Добавьте следующие topics в настройках репозитория:
+
+```
+vpn, proxy, wireguard, xray, 3x-ui, remnawave, hysteria2,
+docker, bash, automation, installer, linux, ubuntu, debian,
+centos, ssl, letsencrypt, cloudflare, reverse-proxy
+```
+
+### About
+
+```
+🚀 Advanced VPN & Proxy Panel Auto-Installer with support for WireGuard, 3x-ui, Remnawave, and Hysteria2. Multi-language interface, SSL management, backup/restore functionality.
+```
+
+### Website
+
+```
+https://github.com/houseassassin/proxy-core
+```
+
+## Шаг 6: Создание Release
+
+```bash
+# Создание тега
+git tag -a v2.0.0 -m "Release v2.0.0
+
+Features:
+- WireGuard support with client management
+- 3x-ui panel integration
+- Remnawave with Docker
+- Hysteria2 proxy
+- Multi-language interface (EN/RU)
+- SSL certificates (Let's Encrypt, Cloudflare, Gcore)
+- Backup & restore
+- Interactive management interface
+- BBR optimization
+- Automatic swap creation"
+
+# Отправка тега
+git push origin v2.0.0
+```
+
+Затем на GitHub:
+1. Перейдите в **Releases** → **Create a new release**
+2. Выберите тег `v2.0.0`
+3. Release title: `Proxy-Core v2.0.0 - Initial Release`
+4. Описание: скопируйте из CHANGELOG в README.md
+5. Нажмите **Publish release**
+
+## Шаг 7: Настройка GitHub Actions (опционально)
+
+Создайте `.github/workflows/shellcheck.yml`:
+
+```yaml
+name: ShellCheck
+
+on: [push, pull_request]
+
+jobs:
+ shellcheck:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Run ShellCheck
+ uses: ludeeus/action-shellcheck@master
+ with:
+ scandir: '.'
+ severity: warning
+```
+
+## Шаг 8: Добавление бейджей в README
+
+Бейджи уже добавлены в README.md:
+- License: MIT
+- Version: 2.0.0
+- Bash: 5.0+
+- Docker: 20.10+
+
+## Шаг 9: Создание Wiki (опционально)
+
+1. Перейдите в **Settings** → **Features** → включите **Wikis**
+2. Создайте страницы:
+ - Home (главная)
+ - Installation Guide
+ - Configuration
+ - Troubleshooting
+ - FAQ
+
+## Шаг 10: Настройка Issues
+
+1. Перейдите в **Settings** → **Features** → включите **Issues**
+2. Создайте Issue Templates:
+ - Bug Report
+ - Feature Request
+ - Question
+
+## Шаг 11: Продвижение
+
+### Поделитесь в:
+- Reddit: r/selfhosted, r/VPN, r/linux
+- Telegram: каналы про VPN и Linux
+- Twitter/X: с хештегами #VPN #Linux #OpenSource
+- Habr: статья о проекте
+
+### Добавьте в списки:
+- Awesome Lists на GitHub
+- AlternativeTo
+- Product Hunt
+
+## Полезные команды Git
+
+```bash
+# Проверка статуса
+git status
+
+# Добавление изменений
+git add .
+
+# Коммит
+git commit -m "feat: добавлена новая функция"
+
+# Отправка
+git push
+
+# Создание новой ветки
+git checkout -b feature/new-feature
+
+# Слияние веток
+git checkout main
+git merge feature/new-feature
+
+# Просмотр истории
+git log --oneline --graph
+
+# Откат изменений
+git reset --hard HEAD~1
+```
+
+## Структура коммитов
+
+Используйте Conventional Commits:
+
+- `feat:` - новая функция
+- `fix:` - исправление бага
+- `docs:` - изменения в документации
+- `style:` - форматирование кода
+- `refactor:` - рефакторинг
+- `test:` - добавление тестов
+- `chore:` - обновление зависимостей
+
+## Готово! 🎉
+
+Ваш проект опубликован на GitHub!
+
+**URL:** https://github.com/houseassassin/proxy-core
+
+Не забудьте:
+- ⭐ Попросить друзей поставить звезду
+- 📢 Поделиться в соцсетях
+- 📝 Отвечать на Issues
+- 🔄 Регулярно обновлять проект
+- 💬 Общаться с сообществом
+
+Удачи! 🚀
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ed8fbf7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,320 @@
+# 🚀 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 | Высокоскоростной прокси с маскировкой трафика |
+
+### 💻 Поддерживаемые ОС
+
+
+
+| 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.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
+
+```bash
+sudo ./install-advanced.sh
+# Выберите: 1 (Install Panel) → 1 (WireGuard)
+```
+
+**Результат:**
+- Сервер WireGuard на порту 51820 (или указанном)
+- Конфигурация: `/etc/wireguard/wg0.conf`
+- Автозапуск при загрузке системы
+
+#### 2. Установка 3x-ui
+
+```bash
+sudo ./install-advanced.sh
+# Выберите: 1 (Install Panel) → 2 (3x-ui)
+```
+
+**Результат:**
+- Веб-панель: `http://YOUR_IP:2053`
+- Логин: `admin` | Пароль: `admin` ⚠️ **СМЕНИТЕ!**
+
+#### 3. Установка Remnawave
+
+```bash
+sudo ./install-advanced.sh
+# Выберите: 1 (Install Panel) → 3 (Remnawave)
+```
+
+**Потребуется:**
+- Домен (например: `vpn.example.com`)
+- Email для SSL сертификата
+
+**Результат:**
+- Панель: `https://YOUR_DOMAIN`
+- Логин и пароль будут показаны после установки
+
+#### 4. Установка Hysteria2
+
+```bash
+sudo ./install-advanced.sh
+# Выберите: 1 (Install Panel) → 4 (Hysteria2)
+```
+
+**Потребуется:**
+- Домен для ACME сертификата
+- Email для Let's Encrypt
+
+**Результат:**
+- Конфигурация: `/etc/hysteria/config.yaml`
+- Пароль и порт будут показаны
+
+---
+
+### 🎮 Управление панелями
+
+#### Запуск менеджера
+
+```bash
+sudo ./manage.sh
+```
+
+#### Меню менеджера
+
+```
+╔════════════════════════════════════════╗
+║ VPN Panel Management ║
+╚════════════════════════════════════════╝
+
+1. Управление WireGuard
+2. Управление 3x-ui
+3. Управление Remnawave
+4. Управление Hysteria2
+5. Системная информация
+0. Выход
+```
+
+---
+
+## 🔒 Безопасность
+
+### ✅ Рекомендации после установки
+
+1. **Смените пароли по умолчанию**
+2. **Настройте firewall**
+3. **Включите автообновления**
+4. **Установите fail2ban**
+5. **Настройте регулярные бэкапы**
+6. **Мониторинг логов**
+
+Подробнее в [полной документации](docs/SECURITY.md).
+
+---
+
+## 🐛 Troubleshooting
+
+### Основные проблемы
+
+- **WireGuard не запускается** → Проверьте IP forwarding
+- **3x-ui недоступен** → Проверьте firewall и порт 2053
+- **Remnawave не работает** → Проверьте Docker контейнеры
+- **SSL сертификаты** → Проверьте DNS и порт 80
+
+Подробнее в [разделе Troubleshooting](docs/TROUBLESHOOTING.md).
+
+---
+
+## 📊 Структура проекта
+
+```
+proxy-core/
+├── 📄 install-advanced.sh # Основной установщик
+├── 🎮 manage.sh # Менеджер панелей
+├── 🔧 wg-manager.sh # WireGuard менеджер
+├── 🔄 update.sh # Обновление
+├── 📄 install.sh # Базовый установщик
+├── 📖 README.md # Документация
+└── 📜 LICENSE # MIT License
+```
+
+---
+
+## 🤝 Благодарности
+
+Проект основан на лучших практиках из:
+
+- [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)
+
+Огромное спасибо авторам! 🙏
+
+---
+
+## 📝 Лицензия
+
+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.0.0 (2026-04-22)
+
+✨ **Новое:**
+- Поддержка Hysteria2
+- Улучшенное управление SSL (3 метода)
+- Автоматическая настройка BBR
+- Многоязычный интерфейс (EN/RU)
+- Spinner анимация
+- Система логирования
+
+🔧 **Улучшения:**
+- Оптимизированная установка Docker
+- Автоопределение Docker Compose v1/v2
+- Улучшенная обработка ошибок
+
+---
+
+
+
+### 💖 Сделано с любовью by [houseassassin](https://github.com/houseassassin)
+
+**Если проект помог вам, поставьте ⭐ звезду!**
+
+[⬆ Наверх](#-proxy-core)
+
+
diff --git a/banner.sh b/banner.sh
new file mode 100644
index 0000000..86b3658
--- /dev/null
+++ b/banner.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# Proxy-Core Banner
+# Author: houseassassin
+
+show_banner() {
+ clear
+ echo -e "\033[1;36m"
+ cat << "EOF"
+╔═══════════════════════════════════════════════════════════════════╗
+║ ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ ██╗ ██████╗ ██████╗ ║
+║ ██╔══██╗██╔══██╗██╔═══██╗╚██╗██╔╝╚██╗ ██╔╝ ██╔════╝██╔═══██╗║
+║ ██████╔╝██████╔╝██║ ██║ ╚███╔╝ ╚████╔╝█████╗██║ ██║ ██║║
+║ ██╔═══╝ ██╔══██╗██║ ██║ ██╔██╗ ╚██╔╝ ╚════╝██║ ██║ ██║║
+║ ██║ ██║ ██║╚██████╔╝██╔╝ ██╗ ██║ ╚██████╗╚██████╔╝║
+║ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ║
+║ ║
+║ Advanced VPN & Proxy Panel Auto-Installer ║
+╚═══════════════════════════════════════════════════════════════════╝
+EOF
+ echo -e "\033[0m"
+ echo -e "\033[1;32mVersion: 2.0.0\033[0m"
+ echo -e "\033[1;33mAuthor: houseassassin\033[0m"
+ echo -e "\033[1;34mGitHub: https://github.com/houseassassin/proxy-core\033[0m"
+ echo ""
+ echo -e "\033[0;36m────────────────────────────────────────────────────────────────────\033[0m"
+ echo ""
+}
+
+show_banner
diff --git a/install-advanced.sh b/install-advanced.sh
new file mode 100755
index 0000000..6db80bb
--- /dev/null
+++ b/install-advanced.sh
@@ -0,0 +1,622 @@
+#!/bin/bash
+
+# Proxy-Core - Advanced VPN & Proxy Panel Auto-Installer
+# Version: 2.0.0
+# Author: houseassassin
+# GitHub: https://github.com/houseassassin/proxy-core
+# Supports: WireGuard, 3x-ui, Remnawave, Hysteria2
+# Based on: 3dp-manager, remnawave-reverse-proxy, remnawave-scripts, RemnaSetup
+
+set -euo pipefail
+
+SCRIPT_VERSION="2.0.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'
+
+# 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"
+ [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; then
+ print_msg "Docker уже установлен"
+ return
+ 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..."
+
+ case $OS in
+ ubuntu|debian)
+ apt-get install -y wireguard wireguard-tools qrencode
+ ;;
+ centos|rhel|fedora)
+ yum install -y epel-release
+ yum install -y wireguard-tools qrencode
+ ;;
+ esac
+
+ mkdir -p /etc/wireguard
+ cd /etc/wireguard
+
+ if [ ! -f server_private.key ]; then
+ wg genkey | tee server_private.key | wg pubkey > 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=$(curl -s ifconfig.me)
+
+ 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"
+}
+
+install_3xui() {
+ print_msg "Установка 3x-ui..."
+
+ 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 < public.key
+ chmod 600 private.key
+
+ CLIENT_PRIVATE_KEY=$(cat private.key)
+ CLIENT_PUBLIC_KEY=$(cat public.key)
+ SERVER_PUBLIC_KEY=$(cat /etc/wireguard/server_public.key)
+ SERVER_IP=$(curl -s ifconfig.me)
+ SERVER_PORT=$(grep ListenPort /etc/wireguard/wg0.conf | awk '{print $3}')
+
+ # Get next available IP
+ LAST_IP=$(grep "AllowedIPs" /etc/wireguard/wg0.conf | grep -oE "10\.0\.0\.[0-9]+" | sort -t . -k 4 -n | tail -1)
+ if [ -z "$LAST_IP" ]; then
+ CLIENT_IP="10.0.0.2"
+ else
+ LAST_NUM=$(echo $LAST_IP | cut -d. -f4)
+ NEXT_NUM=$((LAST_NUM + 1))
+ CLIENT_IP="10.0.0.$NEXT_NUM"
+ fi
+
+ # Add peer to server config
+ cat >> /etc/wireguard/wg0.conf < client.conf < /dev/null; then
+ error "3x-ui не установлен"
+ return 1
+ fi
+
+ while true; do
+ clear
+ echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
+ echo -e "${BLUE}║ 3x-ui Management ║${NC}"
+ echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
+ echo ""
+ echo -e "${YELLOW}1.${NC} Показать статус"
+ echo -e "${YELLOW}2.${NC} Запустить"
+ echo -e "${YELLOW}3.${NC} Остановить"
+ echo -e "${YELLOW}4.${NC} Перезапустить"
+ echo -e "${YELLOW}5.${NC} Показать логи"
+ echo -e "${YELLOW}6.${NC} Обновить"
+ echo -e "${YELLOW}7.${NC} Сбросить пароль"
+ echo -e "${YELLOW}0.${NC} Назад"
+ echo ""
+ read -p "Выберите опцию: " choice
+
+ case $choice in
+ 1)
+ x-ui status
+ read -p "Нажмите Enter..."
+ ;;
+ 2)
+ x-ui start
+ success "3x-ui запущен"
+ sleep 2
+ ;;
+ 3)
+ x-ui stop
+ success "3x-ui остановлен"
+ sleep 2
+ ;;
+ 4)
+ x-ui restart
+ success "3x-ui перезапущен"
+ sleep 2
+ ;;
+ 5)
+ x-ui log
+ ;;
+ 6)
+ bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
+ success "3x-ui обновлен"
+ sleep 2
+ ;;
+ 7)
+ x-ui reset
+ ;;
+ 0)
+ return 0
+ ;;
+ *)
+ warn "Неверный выбор"
+ sleep 1
+ ;;
+ esac
+ done
+}
+
+# Remnawave Management
+manage_remnawave() {
+ if [ ! -d "/opt/remnawave" ]; then
+ error "Remnawave не установлен"
+ return 1
+ fi
+
+ while true; do
+ clear
+ echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
+ echo -e "${BLUE}║ Remnawave Management ║${NC}"
+ echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
+ echo ""
+ echo -e "${YELLOW}1.${NC} Показать статус"
+ echo -e "${YELLOW}2.${NC} Запустить все сервисы"
+ echo -e "${YELLOW}3.${NC} Остановить все сервисы"
+ echo -e "${YELLOW}4.${NC} Перезапустить все сервисы"
+ echo -e "${YELLOW}5.${NC} Показать логи"
+ echo -e "${YELLOW}6.${NC} Обновить"
+ echo -e "${YELLOW}7.${NC} Резервное копирование"
+ echo -e "${YELLOW}8.${NC} Восстановить из бэкапа"
+ echo -e "${YELLOW}0.${NC} Назад"
+ echo ""
+ read -p "Выберите опцию: " choice
+
+ case $choice in
+ 1)
+ cd /opt/remnawave
+ docker compose ps
+ read -p "Нажмите Enter..."
+ ;;
+ 2)
+ cd /opt/remnawave
+ docker compose up -d
+ success "Сервисы запущены"
+ sleep 2
+ ;;
+ 3)
+ cd /opt/remnawave
+ docker compose down
+ success "Сервисы остановлены"
+ sleep 2
+ ;;
+ 4)
+ cd /opt/remnawave
+ docker compose restart
+ success "Сервисы перезапущены"
+ sleep 2
+ ;;
+ 5)
+ cd /opt/remnawave
+ docker compose logs -f
+ ;;
+ 6)
+ cd /opt/remnawave
+ docker compose pull
+ docker compose up -d
+ success "Remnawave обновлен"
+ sleep 2
+ ;;
+ 7)
+ backup_remnawave
+ ;;
+ 8)
+ restore_remnawave
+ ;;
+ 0)
+ return 0
+ ;;
+ *)
+ warn "Неверный выбор"
+ sleep 1
+ ;;
+ esac
+ done
+}
+
+backup_remnawave() {
+ local BACKUP_DIR="/root/remnawave-backups"
+ local TIMESTAMP=$(date +%Y%m%d_%H%M%S)
+ local BACKUP_FILE="$BACKUP_DIR/remnawave_backup_$TIMESTAMP.tar.gz"
+
+ mkdir -p "$BACKUP_DIR"
+
+ log "Создание резервной копии..."
+
+ cd /opt/remnawave
+ docker compose down
+
+ tar -czf "$BACKUP_FILE" \
+ -C /opt remnawave \
+ --exclude='remnawave/logs' \
+ --exclude='remnawave/node_modules'
+
+ docker compose up -d
+
+ success "Резервная копия создана: $BACKUP_FILE"
+ read -p "Нажмите Enter..."
+}
+
+restore_remnawave() {
+ local BACKUP_DIR="/root/remnawave-backups"
+
+ if [ ! -d "$BACKUP_DIR" ] || [ -z "$(ls -A $BACKUP_DIR)" ]; then
+ error "Резервные копии не найдены"
+ read -p "Нажмите Enter..."
+ return 1
+ fi
+
+ echo ""
+ log "Доступные резервные копии:"
+ echo ""
+
+ local i=1
+ declare -A backups
+ for backup in "$BACKUP_DIR"/*.tar.gz; do
+ echo -e "${YELLOW}$i.${NC} $(basename $backup)"
+ backups[$i]="$backup"
+ ((i++))
+ done
+
+ echo ""
+ read -p "Выберите номер резервной копии: " choice
+
+ if [ -z "${backups[$choice]}" ]; then
+ error "Неверный выбор"
+ return 1
+ fi
+
+ local BACKUP_FILE="${backups[$choice]}"
+
+ warn "Это удалит текущую установку Remnawave!"
+ read -p "Продолжить? (y/N): " confirm
+
+ if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
+ log "Отменено"
+ return 0
+ fi
+
+ log "Восстановление из резервной копии..."
+
+ cd /opt/remnawave
+ docker compose down
+
+ rm -rf /opt/remnawave
+ tar -xzf "$BACKUP_FILE" -C /opt
+
+ cd /opt/remnawave
+ docker compose up -d
+
+ success "Восстановление завершено"
+ read -p "Нажмите Enter..."
+}
+
+# Hysteria2 Management
+manage_hysteria2() {
+ if ! systemctl cat hysteria-server.service &> /dev/null; then
+ error "Hysteria2 не установлен"
+ return 1
+ fi
+
+ while true; do
+ clear
+ echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
+ echo -e "${BLUE}║ Hysteria2 Management ║${NC}"
+ echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
+ echo ""
+ echo -e "${YELLOW}1.${NC} Показать статус"
+ echo -e "${YELLOW}2.${NC} Запустить"
+ echo -e "${YELLOW}3.${NC} Остановить"
+ echo -e "${YELLOW}4.${NC} Перезапустить"
+ echo -e "${YELLOW}5.${NC} Показать конфигурацию"
+ echo -e "${YELLOW}6.${NC} Редактировать конфигурацию"
+ echo -e "${YELLOW}0.${NC} Назад"
+ echo ""
+ read -p "Выберите опцию: " choice
+
+ case $choice in
+ 1)
+ systemctl status hysteria-server.service --no-pager
+ read -p "Нажмите Enter..."
+ ;;
+ 2)
+ systemctl start hysteria-server.service
+ success "Hysteria2 запущен"
+ sleep 2
+ ;;
+ 3)
+ systemctl stop hysteria-server.service
+ success "Hysteria2 остановлен"
+ sleep 2
+ ;;
+ 4)
+ systemctl restart hysteria-server.service
+ success "Hysteria2 перезапущен"
+ sleep 2
+ ;;
+ 5)
+ cat /etc/hysteria/config.yaml
+ read -p "Нажмите Enter..."
+ ;;
+ 6)
+ ${EDITOR:-nano} /etc/hysteria/config.yaml
+ systemctl restart hysteria-server.service
+ success "Конфигурация обновлена"
+ sleep 2
+ ;;
+ 0)
+ return 0
+ ;;
+ *)
+ warn "Неверный выбор"
+ sleep 1
+ ;;
+ esac
+ done
+}
+
+# Main menu
+main_menu() {
+ while true; do
+ clear
+ echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
+ echo -e "${BLUE}║ VPN Panel Management ║${NC}"
+ echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
+ echo ""
+ echo -e "${YELLOW}1.${NC} Управление WireGuard"
+ echo -e "${YELLOW}2.${NC} Управление 3x-ui"
+ echo -e "${YELLOW}3.${NC} Управление Remnawave"
+ echo -e "${YELLOW}4.${NC} Управление Hysteria2"
+ echo -e "${YELLOW}5.${NC} Системная информация"
+ echo -e "${YELLOW}0.${NC} Выход"
+ echo ""
+ read -p "Выберите опцию: " choice
+
+ case $choice in
+ 1) manage_wireguard ;;
+ 2) manage_3xui ;;
+ 3) manage_remnawave ;;
+ 4) manage_hysteria2 ;;
+ 5)
+ clear
+ echo -e "${GREEN}Системная информация:${NC}"
+ echo ""
+ echo -e "${BLUE}IP адрес:${NC} $(curl -s ifconfig.me)"
+ echo -e "${BLUE}ОС:${NC} $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
+ echo -e "${BLUE}Ядро:${NC} $(uname -r)"
+ echo -e "${BLUE}Uptime:${NC} $(uptime -p)"
+ echo -e "${BLUE}RAM:${NC} $(free -h | grep Mem: | awk '{print $3 "/" $2}')"
+ echo -e "${BLUE}Disk:${NC} $(df -h / | tail -1 | awk '{print $3 "/" $2 " (" $5 ")"}')"
+ echo ""
+ read -p "Нажмите Enter..."
+ ;;
+ 0)
+ log "Выход"
+ exit 0
+ ;;
+ *)
+ warn "Неверный выбор"
+ sleep 1
+ ;;
+ esac
+ done
+}
+
+# Check root
+if [[ $EUID -ne 0 ]]; then
+ error "Этот скрипт должен быть запущен с правами root"
+ exit 1
+fi
+
+main_menu
diff --git a/update.sh b/update.sh
new file mode 100755
index 0000000..8d2260f
--- /dev/null
+++ b/update.sh
@@ -0,0 +1,108 @@
+#!/bin/bash
+
+# Скрипт обновления панелей
+# Version: 2.0.0
+# Author: houseassassin
+# GitHub: https://github.com/houseassassin/proxy-core
+
+set -e
+
+GREEN='\033[0;32m'
+RED='\033[0;31m'
+NC='\033[0m'
+
+print_msg() {
+ echo -e "${GREEN}[INFO]${NC} $1"
+}
+
+print_error() {
+ echo -e "${RED}[ERROR]${NC} $1"
+}
+
+check_root() {
+ if [[ $EUID -ne 0 ]]; then
+ print_error "Требуются права root"
+ exit 1
+ fi
+}
+
+update_3xui() {
+ print_msg "Обновление 3x-ui..."
+ bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
+ print_msg "3x-ui обновлен"
+}
+
+update_remnawave() {
+ print_msg "Обновление Remnawave..."
+
+ if [ ! -d "/opt/remnawave" ]; then
+ print_error "Remnawave не установлен"
+ return
+ fi
+
+ cd /opt/remnawave
+ docker-compose pull
+ docker-compose up -d
+ docker image prune -f
+
+ print_msg "Remnawave обновлен"
+}
+
+backup_configs() {
+ print_msg "Создание резервной копии конфигураций..."
+
+ BACKUP_DIR="/root/vpn-backup-$(date +%Y%m%d-%H%M%S)"
+ mkdir -p "$BACKUP_DIR"
+
+ [ -d "/etc/wireguard" ] && cp -r /etc/wireguard "$BACKUP_DIR/"
+ [ -d "/opt/remnawave" ] && cp -r /opt/remnawave/config "$BACKUP_DIR/remnawave-config"
+ [ -d "/usr/local/x-ui" ] && cp -r /usr/local/x-ui "$BACKUP_DIR/"
+
+ print_msg "Резервная копия создана: $BACKUP_DIR"
+}
+
+show_menu() {
+ clear
+ echo "╔════════════════════════════════════════╗"
+ echo "║ VPN Panel Updater ║"
+ echo "╚════════════════════════════════════════╝"
+ echo ""
+ echo "1) Обновить 3x-ui"
+ echo "2) Обновить Remnawave"
+ echo "3) Обновить все"
+ echo "4) Создать резервную копию"
+ echo "5) Выход"
+ echo ""
+ read -p "Ваш выбор [1-5]: " choice
+}
+
+main() {
+ check_root
+ show_menu
+
+ case $choice in
+ 1)
+ update_3xui
+ ;;
+ 2)
+ update_remnawave
+ ;;
+ 3)
+ update_3xui
+ update_remnawave
+ ;;
+ 4)
+ backup_configs
+ ;;
+ 5)
+ print_msg "Выход..."
+ exit 0
+ ;;
+ *)
+ print_error "Неверный выбор"
+ exit 1
+ ;;
+ esac
+}
+
+main
diff --git a/wg-manager.sh b/wg-manager.sh
new file mode 100755
index 0000000..82852c1
--- /dev/null
+++ b/wg-manager.sh
@@ -0,0 +1,227 @@
+#!/bin/bash
+
+# Утилита для управления клиентами WireGuard
+# Version: 2.0.0
+# Author: houseassassin
+# GitHub: https://github.com/houseassassin/proxy-core
+
+set -e
+
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+NC='\033[0m'
+
+WG_DIR="/etc/wireguard"
+WG_CONF="$WG_DIR/wg0.conf"
+
+print_msg() {
+ echo -e "${GREEN}[INFO]${NC} $1"
+}
+
+print_error() {
+ echo -e "${RED}[ERROR]${NC} $1"
+}
+
+check_root() {
+ if [[ $EUID -ne 0 ]]; then
+ print_error "Требуются права root"
+ exit 1
+ fi
+}
+
+get_next_ip() {
+ if [ ! -f "$WG_CONF" ]; then
+ echo "10.0.0.2"
+ return
+ fi
+
+ LAST_IP=$(grep "AllowedIPs" "$WG_CONF" | grep -oE "10\.0\.0\.[0-9]+" | sort -t . -k 4 -n | tail -1)
+
+ if [ -z "$LAST_IP" ]; then
+ echo "10.0.0.2"
+ else
+ LAST_NUM=$(echo $LAST_IP | cut -d. -f4)
+ NEXT_NUM=$((LAST_NUM + 1))
+ echo "10.0.0.$NEXT_NUM"
+ fi
+}
+
+add_client() {
+ read -p "Введите имя клиента: " CLIENT_NAME
+
+ if [ -z "$CLIENT_NAME" ]; then
+ print_error "Имя клиента не может быть пустым"
+ exit 1
+ fi
+
+ CLIENT_DIR="$WG_DIR/clients/$CLIENT_NAME"
+
+ if [ -d "$CLIENT_DIR" ]; then
+ print_error "Клиент $CLIENT_NAME уже существует"
+ exit 1
+ fi
+
+ mkdir -p "$CLIENT_DIR"
+ cd "$CLIENT_DIR"
+
+ wg genkey | tee private.key | wg pubkey > public.key
+ chmod 600 private.key
+
+ CLIENT_PRIVATE_KEY=$(cat private.key)
+ CLIENT_PUBLIC_KEY=$(cat public.key)
+ SERVER_PUBLIC_KEY=$(cat $WG_DIR/server_public.key)
+ SERVER_IP=$(curl -s ifconfig.me)
+ SERVER_PORT=$(grep ListenPort $WG_CONF | awk '{print $3}')
+ CLIENT_IP=$(get_next_ip)
+
+ cat >> $WG_CONF < client.conf <