feat: Добавлен скрипт установки, документация для сервера и Docker, обновлен README.

This commit is contained in:
2025-12-29 14:09:42 +03:00
parent 2b60df6f7f
commit 7105fdfe87
4 changed files with 758 additions and 235 deletions

452
README.md
View File

@@ -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]
---