feat: Добавлен скрипт установки, документация для сервера и Docker, обновлен README.
This commit is contained in:
452
README.md
452
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]
|
||||
|
||||
---
|
||||
|
||||
|
||||
178
docs/DOCKER.md
Normal file
178
docs/DOCKER.md
Normal file
@@ -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)
|
||||
278
docs/SERVER.md
Normal file
278
docs/SERVER.md
Normal file
@@ -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)
|
||||
85
install.ps1
Normal file
85
install.ps1
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user