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

178
docs/DOCKER.md Normal file
View 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
View 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
View 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