From 7105fdfe87493255a54ad5aa721da91bedf4d07b Mon Sep 17 00:00:00 2001 From: Dokril Date: Mon, 29 Dec 2025 14:09:42 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D1=83?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8,=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=20=D0=B8=20Docker,=20=D0=BE=D0=B1=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=20README.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 452 ++++++++++++++++++++++++------------------------- docs/DOCKER.md | 178 +++++++++++++++++++ docs/SERVER.md | 278 ++++++++++++++++++++++++++++++ install.ps1 | 85 ++++++++++ 4 files changed, 758 insertions(+), 235 deletions(-) create mode 100644 docs/DOCKER.md create mode 100644 docs/SERVER.md create mode 100644 install.ps1 diff --git a/README.md b/README.md index 5a5458f..7006193 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,15 @@ Это набор инструментов, который позволяет: 1. **Запустить VPN-прокси** на вашем компьютере -2. **Управлять через веб-интерфейс** — открываете в браузере, вставляете ссылку, готово! -3. **Подключить браузер или приложения** (например, VS Code) через этот прокси -4. **Автоматически обновлять конфигурацию** с вашего VPN-провайдера +2. **Управлять через удобное меню** — всё настраивается автоматически +3. **Подключить браузер или приложения** (например, VS Code, Discord) через этот прокси +4. **Работает с UDP** — голосовые звонки и игры тоже работают! ### 🎯 Для кого это? - Пользователи, которым нужен VPN для работы или доступа к заблокированным ресурсам - Разработчики, которые хотят направить трафик VS Code или других программ через VPN +- Геймеры, которым нужно запустить игры или Discord через VPN - Люди, которые получили VLESS ссылку от VPN-провайдера --- @@ -26,154 +27,190 @@ ``` ┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ Ваш браузер │────▶│ VPN Proxy │────▶│ VPN Сервер │────▶ Интернет -│ или VS Code │ │ (порт 8080) │ │ (в другой стране)│ +│ или Discord │ │ (порт 1080) │ │ (в другой стране)│ └─────────────────┘ └──────────────────┘ └──────────────────┘ - ▲ - │ - ┌──────────────┐ - │ Веб-интерфейс│ - │ (порт 3456) │ - └──────────────┘ ``` --- -## 📦 Что внутри? +## 🔧 Перед началом: Требования -| Файл | Описание простыми словами | -| --------------------------- | ------------------------------------------------------------------ | -| `manage.ps1` | 🚀 **Главный скрипт** — меню управления всеми компонентами | -| `scripts/setup-singbox.ps1` | 📦 Установка и настройка VPN клиента (sing-box) | -| `scripts/setup-discord.ps1` | 🎮 Настройка ProxiFyre для Discord/Vesktop | -| `scripts/uninstall-all.ps1` | 🗑️ Полное удаление всех компонентов | -| `web/server.py` | Веб-интерфейс для управления через браузер | -| `web/index.html` | Страница с красивым интерфейсом | -| `docker/entrypoint.sh` | Главный скрипт запуска контейнера | -| `docker/Dockerfile.singbox` | Инструкция для создания изолированного VPN-приложения (контейнера) | -| `docker-compose.yml` | Файл для удобного запуска одной командой | +### ✅ PowerShell 7 (Обязательно!) ---- +> ⚠️ **Важно:** Скрипты требуют PowerShell 7. Стандартный Windows PowerShell 5.1 **не подойдёт!** +#### Проверьте вашу версию -## 🚀 Быстрый старт - -### Что вам понадобится - -1. **URL подписки** или **VLESS-ссылка** — получите её от вашего VPN-провайдера - - Подписка: формат sing-box - - VLESS: начинается с `vless://...` - -2. **Docker** — программа для запуска изолированных приложений - - [Скачать Docker Desktop](https://www.docker.com/products/docker-desktop/) (бесплатно) - - После установки убедитесь, что Docker запущен (иконка 🐳 в трее) - ---- - -## 📥 Установка (Windows — самый простой способ) - -Откройте **PowerShell от имени Администратора** и выполните: +Откройте любой PowerShell и выполните: ```powershell -# Перейдите в папку с проектом -cd путь\к\папке\vpn-proxy +$PSVersionTable.PSVersion.Major +``` -# Запустите главное меню управления +- Если результат **7 или выше** — всё хорошо, переходите к установке ✅ +- Если **5 или ниже** — нужно установить PowerShell 7 👇 + +#### Установка PowerShell 7 + +**Способ 1: Через winget (самый простой)** + +Откройте обычный PowerShell или Командную строку и выполните: + +```powershell +winget install Microsoft.PowerShell +``` + +После установки закройте окно и откройте **PowerShell 7** (он появится в меню Пуск). + +**Способ 2: Скачать вручную** + +1. Перейдите: https://github.com/PowerShell/PowerShell/releases/latest +2. Скачайте файл `PowerShell-7.x.x-win-x64.msi` (где x.x.x — версия) +3. Запустите установщик и следуйте инструкциям +4. После установки используйте **PowerShell 7** из меню Пуск + +> 💡 **Как отличить?** PowerShell 7 имеет чёрный фон и надпись "pwsh" или "PowerShell 7". Старый PowerShell — синий фон. + +--- + +### ✅ URL Подписки или VLESS-ссылка + +Получите от вашего VPN-провайдера: +- **Подписку**: URL, который начинается с `http://` или `https://` +- **VLESS-ссылку**: начинается с `vless://...` + +--- + +## 🚀 Установка на Windows + +### ⚡ Быстрая установка (Одной командой) + +Самый быстрый способ — использовать наш автоматический установщик. Он сам скачает проект, распакует его в `C:\Tools\vpn-proxy` и запустит. + +1. Откройте **PowerShell 7** от имени **Администратора** +2. Скопируйте и вставьте команду: + +```powershell +Set-ExecutionPolicy RemoteSigned -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iwr https://git.dokops.ru/dokril/vpn-proxy/raw/branch/master/install.ps1 | iex +``` + +> 💡 Если команда выдаст ошибку 404, попробуйте заменить `master` на `main` в ссылке, или используйте ручную установку ниже. + +--- + +### 📦 Ручная установка (если авто-установка не работает) + +Если вы предпочитаете всё делать сами: + +#### Шаг 1: Скачайте проект + +Мы рекомендуем использовать папку `C:\Tools`. + +```powershell +# 1. Создаем папку и переходим +New-Item -ItemType Directory -Force -Path "C:\Tools" | Out-Null +cd C:\Tools + +# 2. Клонируем или скачиваем архив +git clone https://git.dokops.ru/dokril/vpn-proxy + +# (Или скачайте ZIP вручную и распакуйте в C:\Tools\vpn-proxy) +``` + +#### Шаг 2: Запустите + +```powershell +cd C:\Tools\vpn-proxy .\manage.ps1 ``` -> 💡 **Что умеет главное меню:** -> -> - Устанавливает и настраивает VPN клиент (sing-box) — **рекомендуется** -> - Показывает статус всех компонентов -> - Показывает IP-адреса для подключения из локальной сети -> - Настраивает ProxiFyre для Discord/Vesktop -> - Полностью удаляет все установленные компоненты +### Шаг 3: Выберите пункт [1] — VPN Клиент -### Если уже установлено +``` + [1] 📦 VPN Клиент (Sing-box) [НЕ УСТАНОВЛЕН] + Основной способ. Поддерживает UDP и игры. -При повторном запуске скрипт покажет: -- Статус контейнера (работает/остановлен) -- Адреса подключения -- Меню с действиями (запуск, перезапуск, логи, переустановка) + [2] 🎮 Настройка Discord/Vesktop [НЕ АКТИВЕН] + Маршрутизация приложений через прокси. ---- + --------------------------------------- + [3] 🔄 Обновить статус + [U] ❌ Удалить всё (Uninstall) + [q] Выход -## 📥 Ручная установка (Mac/Linux) - -```bash -# 1. Перейдите в папку с проектом -cd путь/к/папке/vpn-proxy - -# 2. Соберите контейнер (это нужно сделать только один раз) -docker compose build - -# 3. Запустите контейнер -docker compose up -d +👉 Ваш выбор: 1 ``` -> 💡 **Что происходит:** -> -> - `docker compose build` — создаёт образ контейнера со всеми необходимыми программами -> - `docker compose up -d` — запускает контейнер в фоновом режиме +### Шаг 4: Введите VLESS-ссылку или URL подписки -### После запуска +Скрипт попросит ввести ссылку. Вставьте и нажмите Enter. -1. **Откройте веб-интерфейс**: http://localhost:3456 -2. **Выберите режим**: - - **📡 Подписка**: вставьте URL подписки, нажмите «Загрузить серверы», выберите сервер и нажмите «Применить» - - **🔑 VLESS Ключ**: вставьте VLESS-ссылку и нажмите «Применить» -3. Готово! Прокси работает на порту **8080** +**Готово!** 🎉 Прокси запущен на `127.0.0.1:1080` -> 💡 **Подписка сохраняется** между перезагрузками контейнера — URL и выбранный сервер хранятся в папке `data/` +### 📂 Где всё хранится? ---- +Всё организовано в папке `C:\Tools`: -## 🔄 Обновление (если уже была установлена старая версия) - -Если вы обновили код из репозитория, нужно пересобрать контейнер: - -```bash -# 1. Перейдите в папку с проектом -cd путь/к/папке/vpn-proxy - -# 2. Остановите текущий контейнер -docker compose down - -# 3. Пересоберите контейнер с новыми изменениями -docker compose build --no-cache - -# 4. Запустите заново -docker compose up -d -``` - -> 💡 **Примечание:** подписка сохраняется и будет автоматически загружена при открытии веб-интерфейса http://localhost:3456 - ---- - -## 🌐 Порты - -| Порт | Для чего | URL | -| ------ | ------------------------------------------------- | ----------------------- | -| `3456` | **Веб-интерфейс** — управление через браузер | http://localhost:3456 | -| `8080` | **Прокси** — сюда подключаются браузер/приложения | `http://127.0.0.1:8080` | -| `9090` | Внутренний порт управления (обычно не нужен) | — | +1. **Сам проект:** `C:\Tools\vpn-proxy` + - Скрипты управления и настройки +2. **Sing-box (VPN клиент):** `C:\Tools\sing-box` + - Здесь лежит `config.json` с вашими настройками и сам исполняемый файл +3. **ProxiFyre (для Discord):** `C:\Program Files\ProxiFyre` (системная служба) --- ## ✅ Проверка работы -### Через веб-интерфейс +После установки меню покажет статус и адреса подключения: -Откройте http://localhost:3456 — если видите зелёный индикатор "Активен", значит прокси работает. +``` + [1] 📦 VPN Клиент (Sing-box) [РАБОТАЕТ] + Основной способ. Поддерживает UDP и игры. -### Через терминал - -```bash -# Через прокси — должен показать IP VPN-сервера -curl -x http://127.0.0.1:8080 https://ipinfo.io/json + 📡 ПОДКЛЮЧЕНИЕ К ПРОКСИ + ───────────────────────────── + Локально: 127.0.0.1:1080 + Из сети: + 192.168.1.100:1080 ``` -Если показывает IP другой страны — VPN работает! 🎉 +### Проверка через терминал + +```powershell +# Без прокси — покажет ваш домашний IP +Invoke-WebRequest -Uri "https://ipinfo.io/ip" | Select-Object -ExpandProperty Content + +# Через прокси — должен показать IP VPN-сервера +Invoke-WebRequest -Proxy "http://127.0.0.1:1080" -Uri "https://ipinfo.io/ip" | Select-Object -ExpandProperty Content +``` + +Если IP-адреса разные — VPN работает! 🎉 + +--- + +## 🎮 Настройка Discord / Vesktop + +Discord не поддерживает системные настройки прокси, поэтому нужна дополнительная настройка. + +### Требования + +- ✅ Установленный VPN клиент (пункт [1] в меню) +- ✅ VPN клиент должен быть запущен (статус "РАБОТАЕТ") + +### Установка + +1. Запустите `.\manage.ps1` +2. Выберите пункт **[2] — Настройка Discord/Vesktop** +3. Выберите какое приложение настроить: + - Discord + - Vesktop + - Оба + +**Что устанавливается:** +- Windows Packet Filter — драйвер для перехвата трафика +- ProxiFyre — служба, которая направляет трафик Discord через прокси + +После установки Discord/Vesktop будут автоматически работать через VPN! --- @@ -181,17 +218,17 @@ curl -x http://127.0.0.1:8080 https://ipinfo.io/json ### Для VS Code -Откройте настройки (Cmd+, на Mac или Ctrl+, на Windows), найдите "proxy" и добавьте: +Откройте настройки (Ctrl + ,), найдите "proxy" и добавьте: ``` -http.proxy: http://127.0.0.1:8080 +http.proxy: http://127.0.0.1:1080 ``` Или добавьте в `settings.json`: ```json { - "http.proxy": "http://127.0.0.1:8080", + "http.proxy": "http://127.0.0.1:1080", "http.proxyStrictSSL": true } ``` @@ -202,158 +239,103 @@ http.proxy: http://127.0.0.1:8080 - **Тип**: HTTP или SOCKS5 - **Адрес**: `127.0.0.1` -- **Порт**: `8080` +- **Порт**: `1080` -### Для Discord / Vesktop (Windows) +> 💡 **Совет:** Используйте расширение [Proxy SwitchyOmega](https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif) для удобного переключения прокси в Chrome. -Discord не поддерживает системные настройки прокси, поэтому нужен ProxiFyre: +### Для других программ -```powershell -# Запустите от имени Администратора -.\manage.ps1 -# Выберите пункт [2] — Настройка Discord/Vesktop -``` - -**Что делает скрипт:** -- Устанавливает драйвер Windows Packet Filter -- Устанавливает ProxiFyre как службу Windows -- Настраивает перехват трафика для Discord/Vesktop -- Направляет его через локальный прокси `127.0.0.1:1080` - -> ⚠️ **Важно:** Для работы Discord требуется установленный VPN клиент (пункт [1] в меню). - -### 🎯 VPN Клиент (sing-box) — Рекомендуемый способ - -Нативный VPN клиент с поддержкой UDP для игр и голосовых звонков: - -```powershell -# Запустите от имени Администратора -.\manage.ps1 -# Выберите пункт [1] — VPN Клиент (Sing-box) -``` - -**Что делает скрипт:** -- Загружает sing-box v1.11.4 для Windows -- Работает с подписками и VLESS ссылками -- Создаёт задачу автозапуска в Планировщике Windows -- Открывает порт 1080 для SOCKS5 прокси -- Показывает IP-адреса для использования в локальной сети - -**При повторном запуске скрипт покажет:** -- Текущий статус службы -- Меню управления (смена сервера, перезапуск, остановка) +Укажите SOCKS5 прокси: `127.0.0.1:1080` --- +## 📋 Управление +При повторном запуске `.\manage.ps1` скрипт покажет меню управления: -### Через веб-интерфейс - -1. Откройте http://localhost:3456 -2. Вставьте новую VLESS ссылку -3. Нажмите "Применить" +| Действие | Как сделать | +|----------|-------------| +| Посмотреть статус | Запустить `.\manage.ps1` | +| Сменить сервер | Пункт [1] → "Сменить VLESS/Подписку" | +| Перезапустить | Пункт [1] → "Перезапустить" | +| Остановить | Пункт [1] → "Остановить" | +| Полностью удалить | Пункт [U] | --- -## 📋 Управление контейнером +## 🌍 Подключение из локальной сети -| Действие | Команда | -| ----------------------- | ---------------------------------- | -| Посмотреть статус | `docker ps` | -| Посмотреть логи | `docker logs --tail 50 sing-proxy` | -| Остановить | `docker compose stop` | -| Запустить снова | `docker compose start` | -| Перезапустить | `docker compose restart` | -| Полностью удалить | `docker compose down` | -| Пересобрать и запустить | `docker compose up -d --build` | +Если вы хотите использовать прокси с других устройств (телефон, планшет): + +1. Посмотрите IP-адрес в меню (раздел "Из сети:") +2. На другом устройстве настройте прокси: `IP_ВАШЕГО_ПК:1080` + +Например: `192.168.1.100:1080` --- ## ❓ Часто задаваемые вопросы -### Страница localhost:3456 не открывается +### Ошибка "Файл не может быть загружен, так как выполнение сценариев отключено" -**Причина**: Контейнер не запущен. +**Решение:** Включите выполнение скриптов: -**Решение**: - -```bash -# Проверьте статус -docker ps - -# Если контейнера нет в списке — запустите -docker compose up -d +```powershell +Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser ``` -### "Connection refused" — соединение отклонено +### Ошибка при запуске — непонятные символы или синтаксис -**Причина**: Контейнер не запущен или VPN-ссылка не применена. +**Причина:** Вы используете старый PowerShell 5.1 -**Решение**: +**Решение:** Установите PowerShell 7 (см. раздел "Перед началом") -1. Проверьте, запущен ли контейнер: `docker ps` -2. Откройте http://localhost:3456 и примените VPN-ссылку +### Discord не подключается к голосовым каналам -### VS Code не подключается / очень медленно +**Причина:** ProxiFyre не запущен или VPN клиент остановлен -**Причина**: Системный VPN или прокси мешает. - -**Решение**: - -1. Выключите системный VPN -2. Удалите переменные окружения `HTTP_PROXY` и `HTTPS_PROXY` (если есть) -3. Перезапустите VS Code - -### Не открываются сайты / SSL ошибки - -**Причина**: Проблемы с настройками VPN-сервера. - -**Решение**: - -- Попробуйте другой сервер — вставьте другую ссылку в веб-интерфейсе -- Проверьте, что VLESS ссылка актуальна +**Решение:** +1. Запустите `.\manage.ps1` +2. Убедитесь что пункт [1] показывает "РАБОТАЕТ" +3. Убедитесь что пункт [2] показывает "АКТИВЕН" ### Как узнать, работает ли VPN? -```bash -# Без прокси — покажет ваш домашний IP -curl https://ipinfo.io/json - -# Через прокси — должен показать IP VPN-сервера -curl -x http://127.0.0.1:8080 https://ipinfo.io/json -``` - -Если IP-адреса разные — VPN работает! 🎉 +1. Откройте https://ipinfo.io в браузере — это ваш реальный IP +2. Настройте прокси в браузере +3. Откройте https://ipinfo.io снова — должен показать другой IP --- -## 🔧 Для продвинутых пользователей +## 🔧 Продвинутые варианты -### Запуск без Docker +### Docker с веб-интерфейсом -Если вы не хотите использовать Docker: +Если вы предпочитаете управлять через браузер с красивым интерфейсом: -1. Установите [sing-box](https://sing-box.sagernet.org/) -2. Скопируйте конфигурацию из веб-интерфейса подписки и сохраните в `client.json` -3. Запустите: - ```bash - sing-box run -c client.json - ``` +> ⚠️ **Внимание:** В этом режиме **Discord работать не будет**! +> Docker на Windows не поддерживает UDP-проксирование, которое необходимо для голосовых чатов. Если вам нужен рабочий Discord — используйте **основной способ** (пункт [1] в меню). + +📖 **[Инструкция по Docker](docs/DOCKER.md)** + +### Установка на удалённый сервер (VPS) + +Если вы хотите развернуть прокси на своём сервере в другой стране: + +📖 **[Инструкция по установке на сервер](docs/SERVER.md)** --- ## 📚 Словарь терминов -| Термин | Объяснение | -| ------------------- | ----------------------------------------------------------------------------- | -| **Прокси** | Программа-посредник, которая передаёт ваши запросы в интернет от своего имени | -| **VPN** | Зашифрованный туннель между вашим компьютером и удалённым сервером | -| **Docker** | Программа для запуска приложений в изолированных "контейнерах" | -| **Контейнер** | Изолированное приложение со всеми необходимыми компонентами | -| **VLESS** | Современный протокол VPN-соединения | -| **Reality** | Технология маскировки VPN-трафика под обычный интернет-трафик | - -| **Порт** | "Номер двери" для сетевых соединений. Прокси: 8080, Веб-интерфейс: 3456 | +| Термин | Объяснение | +|--------|------------| +| **Прокси** | Программа-посредник, которая передаёт ваши запросы в интернет от своего имени | +| **VPN** | Зашифрованный туннель между вашим компьютером и удалённым сервером | +| **VLESS** | Современный протокол VPN-соединения | +| **sing-box** | Программа-клиент для подключения к VPN | +| **SOCKS5** | Тип прокси, поддерживающий любой трафик (включая UDP для игр) | +| **Порт** | "Номер двери" для сетевых соединений | --- @@ -361,10 +343,10 @@ curl -x http://127.0.0.1:8080 https://ipinfo.io/json Если что-то не работает: -1. Проверьте статус: `docker ps` -2. Проверьте логи: `docker logs --tail 100 sing-proxy` -3. Убедитесь, что VPN-ссылка актуальна -4. Попробуйте пересобрать: `docker compose down && docker compose build --no-cache && docker compose up -d` +1. Убедитесь что используете **PowerShell 7** +2. Запустите от имени **Администратора** +3. Проверьте статус в главном меню +4. Попробуйте переустановить: пункт [U], затем пункт [1] --- diff --git a/docs/DOCKER.md b/docs/DOCKER.md new file mode 100644 index 0000000..ad29a07 --- /dev/null +++ b/docs/DOCKER.md @@ -0,0 +1,178 @@ +# 🐳 Docker — Веб-интерфейс для управления VPN + +> **Это продвинутый способ** установки с красивым веб-интерфейсом. Для большинства пользователей рекомендуется использовать [основной способ через PowerShell](../README.md). + +--- + +## 📖 Что это даёт? + +- 🌐 **Веб-интерфейс** — управление через браузер на http://localhost:3456 +- 📡 **Подписки** — автоматическое получение списка серверов +- 🔄 **Переключение серверов** — в один клик +- 💾 **Сохранение настроек** — URL и выбранный сервер сохраняются + + + +--- + +## 🔧 Требования + +### Docker Desktop + +1. Скачайте: https://www.docker.com/products/docker-desktop/ +2. Установите и запустите +3. Убедитесь, что иконка 🐳 есть в трее (панель задач) + +> 💡 На Windows может потребоваться WSL2. Docker Desktop предложит его установить автоматически. + +--- + +## 🚀 Установка + +### Шаг 1: Откройте терминал + +Откройте PowerShell или Командную строку и перейдите в папку проекта: + +```powershell +cd путь\к\папке\vpn-proxy +``` + +### Шаг 2: Соберите контейнер + +```powershell +docker compose build +``` + +Это создаст образ со всеми необходимыми компонентами. Выполняется один раз. + +### Шаг 3: Запустите + +```powershell +docker compose up -d +``` + +Флаг `-d` запускает контейнер в фоновом режиме. + +### Шаг 4: Откройте веб-интерфейс + +Перейдите в браузере: **http://localhost:3456** + +--- + +## 🌐 Использование веб-интерфейса + +### Режим подписки + +1. Вставьте URL подписки в поле "Подписка" +2. Нажмите **"Загрузить серверы"** +3. Выберите сервер из списка +4. Нажмите **"Применить"** + +### Режим VLESS + +1. Перейдите на вкладку "VLESS Ключ" +2. Вставьте VLESS-ссылку (`vless://...`) +3. Нажмите **"Применить"** + +> 💡 Настройки сохраняются в папке `data/` и восстанавливаются при перезапуске. + +--- + +## 🌐 Порты + +| Порт | Назначение | URL | +|------|------------|-----| +| `3456` | Веб-интерфейс | http://localhost:3456 | +| `8080` | HTTP/SOCKS5 прокси | `127.0.0.1:8080` | +| `9090` | API управления (внутренний) | — | + +--- + +## 📋 Управление контейнером + +| Действие | Команда | +|----------|---------| +| Посмотреть статус | `docker ps` | +| Посмотреть логи | `docker logs --tail 50 sing-proxy` | +| Остановить | `docker compose stop` | +| Запустить снова | `docker compose start` | +| Перезапустить | `docker compose restart` | +| Полностью удалить | `docker compose down` | +| Пересобрать | `docker compose up -d --build` | + +--- + +## 🔄 Обновление + +Если вы обновили код из репозитория: + +```powershell +# Остановить текущий контейнер +docker compose down + +# Пересобрать с новыми изменениями +docker compose build --no-cache + +# Запустить заново +docker compose up -d +``` + +> 💡 Подписка и настройки сохраняются в папке `data/` и не потеряются. + +--- + +## ⚙️ Настройка приложений + +### Для VS Code + +```json +{ + "http.proxy": "http://127.0.0.1:8080", + "http.proxyStrictSSL": true +} +``` + +### Для браузера + +- **Адрес**: `127.0.0.1` +- **Порт**: `8080` +- **Тип**: HTTP или SOCKS5 + +--- + +## ❓ Проблемы и решения + +### Страница localhost:3456 не открывается + +**Причина:** Контейнер не запущен. + +```powershell +# Проверьте статус +docker ps + +# Если контейнера нет — запустите +docker compose up -d +``` + +### "Connection refused" + +**Причина:** VPN-ссылка не применена. + +1. Откройте http://localhost:3456 +2. Примените VLESS-ссылку или загрузите подписку + +### Медленное подключение + +Попробуйте другой сервер в веб-интерфейсе — некоторые серверы могут быть перегружены. + +--- + +## ⚠️ Ограничения Docker на Windows + +- **UDP для Discord:** Docker на Windows/macOS имеет проблемы с UDP ASSOCIATE для SOCKS5. Для Discord рекомендуется использовать [нативную установку](../README.md). + +- **Для полной поддержки UDP** используйте [установку на Linux сервер](SERVER.md) с `network_mode: host`. + +--- + +[← Вернуться к основной инструкции](../README.md) diff --git a/docs/SERVER.md b/docs/SERVER.md new file mode 100644 index 0000000..c89ad3d --- /dev/null +++ b/docs/SERVER.md @@ -0,0 +1,278 @@ +# 🌍 Установка на Сервер (Linux VPS) + +> Эта инструкция для установки прокси на удалённый сервер. После установки вы сможете подключаться к нему с любого устройства. + +--- + +## 📖 Зачем это нужно? + +- 🌐 **Один прокси для всех устройств** — компьютер, телефон, планшет +- 🔒 **Работает 24/7** — не нужно держать компьютер включённым +- 📡 **Полная поддержка UDP** — голосовые звонки и игры работают отлично +- 🏠 **Доступ из любого места** — дома, на работе, в поездке + +--- + +## 🔧 Требования к серверу + +- **ОС:** Ubuntu 20.04+, Debian 11+, или любой современный Linux +- **Ресурсы:** Минимум 512 MB RAM, 1 CPU +- **Порты:** 3456 (веб-интерфейс), 8080 (прокси) +- **Доступ:** SSH подключение + +> 💡 Подойдёт любой VPS за $3-5/месяц от DigitalOcean, Vultr, Hetzner и др. + +--- + +## 🚀 Установка + +### Шаг 1: Подключитесь к серверу + +Откройте терминал (PowerShell на Windows, Terminal на Mac/Linux): + +```bash +ssh root@ваш_сервер_ip +``` + +Введите пароль когда попросят. + +> 💡 **Совет:** Если вы на Windows и нет ssh команды, используйте PuTTY или Windows Terminal. + +--- + +### Шаг 2: Установите Docker + +Если Docker ещё не установлен: + +```bash +# Автоматическая установка Docker +curl -fsSL https://get.docker.com | sh + +# Проверка что Docker работает +docker --version +``` + +--- + +### Шаг 3: Загрузите проект + +**Вариант A: Через Git** + +```bash +git clone https://github.com/your-repo/vpn-proxy.git +cd vpn-proxy +``` + +**Вариант B: Загрузка файлов вручную** + +Если git недоступен, скачайте ZIP архив и распакуйте на сервере. + +--- + +### Шаг 4: Запустите контейнер + +> ⚠️ **Важно:** Используйте `docker-compose.server.yml` — он настроен для серверов! + +```bash +docker compose -f docker-compose.server.yml up -d +``` + +Это запустит контейнер с `network_mode: host`, что решает проблемы с UDP. + +--- + +### Шаг 5: Откройте порты в файрволе + +**Для UFW (Ubuntu/Debian):** + +```bash +ufw allow 3456/tcp # Веб-интерфейс +ufw allow 8080/tcp # Прокси TCP +ufw allow 8080/udp # Прокси UDP (для голоса/игр) +ufw reload +``` + +**Для firewalld (CentOS/RHEL):** + +```bash +firewall-cmd --permanent --add-port=3456/tcp +firewall-cmd --permanent --add-port=8080/tcp +firewall-cmd --permanent --add-port=8080/udp +firewall-cmd --reload +``` + +**Для iptables:** + +```bash +iptables -A INPUT -p tcp --dport 3456 -j ACCEPT +iptables -A INPUT -p tcp --dport 8080 -j ACCEPT +iptables -A INPUT -p udp --dport 8080 -j ACCEPT +``` + +--- + +### Шаг 6: Настройте VPN через веб-интерфейс + +1. Откройте в браузере: `http://ваш_сервер_ip:3456` +2. Вставьте VLESS-ссылку или URL подписки +3. Нажмите "Применить" + +--- + +## ✅ Проверка работы + +На сервере: + +```bash +# Проверить что контейнер запущен +docker ps + +# Посмотреть логи +docker logs --tail 20 sing-proxy +``` + +С вашего компьютера: + +```bash +# Проверить прокси +curl -x http://ваш_сервер_ip:8080 https://ipinfo.io/ip +``` + +Должен показать IP VPN-сервера (не IP вашего VPS). + +--- + +## 🖥️ Подключение с Windows + +### Настройка в manage.ps1 + +При настройке Discord (пункт [2]) вы можете указать адрес удалённого прокси: + +``` +Введите адрес прокси (IP:порт): ваш_сервер_ip:8080 +``` + +### Настройка в браузере/приложениях + +- **Адрес:** `ваш_сервер_ip` +- **Порт:** `8080` +- **Тип:** HTTP или SOCKS5 + +--- + +## 📋 Управление + +| Действие | Команда | +|----------|---------| +| Посмотреть статус | `docker ps` | +| Логи | `docker logs --tail 50 sing-proxy` | +| Остановить | `docker compose -f docker-compose.server.yml stop` | +| Запустить | `docker compose -f docker-compose.server.yml start` | +| Перезапустить | `docker compose -f docker-compose.server.yml restart` | +| Удалить | `docker compose -f docker-compose.server.yml down` | + +--- + +## 🔐 Рекомендации по безопасности + +### 1. Смените стандартные порты + +Отредактируйте `docker-compose.server.yml`: + +```yaml +environment: + - PORT=54321 # Вместо 3456 + - PROXY_PORT=12345 # Вместо 8080 +``` + +### 2. Ограничьте доступ к веб-интерфейсу + +Если веб-интерфейс нужен только для первоначальной настройки: + +```bash +# Закрыть веб-порт после настройки +ufw delete allow 3456/tcp +``` + +### 3. Используйте SSH туннель + +Для безопасного доступа к веб-интерфейсу: + +```bash +ssh -L 3456:localhost:3456 root@ваш_сервер_ip +``` + +Затем откройте http://localhost:3456 в браузере. + +--- + +## 🔄 Обновление + +```bash +cd vpn-proxy + +# Получить обновления +git pull + +# Пересобрать контейнер +docker compose -f docker-compose.server.yml down +docker compose -f docker-compose.server.yml build --no-cache +docker compose -f docker-compose.server.yml up -d +``` + +--- + +## ❓ Проблемы и решения + +### Порт 3456 не открывается + +**Причина:** Файрвол блокирует подключения. + +**Решение:** Проверьте настройки файрвола, см. Шаг 5. + +### "Permission denied" при запуске Docker + +**Решение:** + +```bash +# Добавить пользователя в группу docker +sudo usermod -aG docker $USER + +# Перезайти +exit +ssh root@ваш_сервер_ip +``` + +### Контейнер постоянно перезапускается + +```bash +# Посмотреть логи ошибок +docker logs sing-proxy +``` + +Обычно проблема в неверной VLESS-ссылке. + +--- + +## 📐 Изменение портов + +По умолчанию: +- **3456** — веб-интерфейс +- **8080** — прокси + +Для изменения создайте файл `.env` в папке проекта: + +```env +PORT=54321 +PROXY_PORT=12345 +``` + +И перезапустите: + +```bash +docker compose -f docker-compose.server.yml up -d +``` + +--- + +[← Вернуться к основной инструкции](../README.md) diff --git a/install.ps1 b/install.ps1 new file mode 100644 index 0000000..dac3551 --- /dev/null +++ b/install.ps1 @@ -0,0 +1,85 @@ +# ========================================== +# 🚀 VPN PROXY INSTALLER +# ========================================== +# Этот скрипт автоматически скачивает и устанавливает VPN Proxy +# Использование: +# iwr https://git.dokops.ru/dokril/vpn-proxy/raw/branch/master/install.ps1 | iex + +$ErrorActionPreference = "Stop" + +# --- 1. Проверка прав администратора --- +if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator")) { + Write-Warning "⚠️ Требуются права администратора!" + Write-Host "🔄 Перезапускаю скрипт с правами администратора..." -ForegroundColor Cyan + + # Сохраняем скрипт во временный файл, если он запущен из памяти (iex) + if ($MyInvocation.MyCommand.CommandType -eq 'Script') { + Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$($MyInvocation.MyCommand.Path)`"" -Verb RunAs + } + else { + # Если запущено через IEX, мы не можем просто перезапустить файл. + # Поэтому мы просто просим пользователя запустить терминал от админа. + Write-Error "Пожалуйста, запустите PowerShell от имени Администратора и попробуйте снова." + } + exit +} + +# --- 2. Настройки --- +$InstallRoot = "C:\Tools" +$InstallDir = "$InstallRoot\vpn-proxy" +# Точная ссылка предоставленная пользователем +$ZipUrl = "https://git.dokops.ru/dokril/vpn-proxy/archive/master.zip" +$TempZip = "$env:TEMP\vpn-proxy-install.zip" + +Write-Host "🚀 Начинаем установку VPN Proxy..." -ForegroundColor Green +Write-Host "📂 Путь установки: $InstallDir" -ForegroundColor Gray + +# --- 3. Подготовка папки --- +if (-not (Test-Path $InstallRoot)) { + New-Item -ItemType Directory -Path $InstallRoot -Force | Out-Null +} + +# --- 4. Скачивание --- +Write-Host "⬇️ Скачивание архива обновления..." -ForegroundColor Cyan +try { + Invoke-WebRequest -Uri $ZipUrl -OutFile $TempZip +} +catch { + Write-Error "❌ Ошибка скачивания с $ZipUrl`nПроверьте подключение к интернету." + exit 1 +} + +# --- 5. Распаковка --- +Write-Host "📦 Распаковка..." -ForegroundColor Cyan + +# Если папка уже есть, удаляем старую (делаем бэкап конфигов если нужно, но пока просто clean install) +if (Test-Path $InstallDir) { + # Можно добавить логику сохранения client.json, если нужно + Remove-Item $InstallDir -Recurse -Force +} + +Expand-Archive -Path $TempZip -DestinationPath $InstallRoot -Force + +# Архивы обычно распаковываются в папку vpn-proxy-master или vpn-proxy-main +# Нам нужно переименовать её в vpn-proxy +$ExtractedFolder = Get-ChildItem -Path $InstallRoot -Directory | Where-Object { $_.Name -match "vpn-proxy-(master|main)" } | Select-Object -First 1 + +if ($ExtractedFolder) { + Rename-Item -Path $ExtractedFolder.FullName -NewName "vpn-proxy" -Force +} + +# Удаляем временный архив +Remove-Item $TempZip -Force + +if (-not (Test-Path "$InstallDir\manage.ps1")) { + Write-Error "❌ Ошибка установки: файл manage.ps1 не найден в $InstallDir" + exit 1 +} + +# --- 6. Запуск --- +Write-Host "✅ Установка завершена!" -ForegroundColor Green +Write-Host "🚀 Запускаем меню управления..." -ForegroundColor Cyan +Start-Sleep -Seconds 1 + +Set-Location $InstallDir +.\manage.ps1