Files
vpn-proxy/README.md
Dmitriy Petrov 2d61830d08 refactor: реорганизация структуры проекта на логические папки
- Созданы директории: docker/, scripts/, config/
- Перемещены файлы Docker (Dockerfile, entrypoint.sh) в docker/
- Перемещены утилитарные скрипты в scripts/
- Шаблон конфигурации перенесен в config/
- Веб-сервер перемещен в web/ и переименован в server.py
- Обновлены пути в docker-compose.yml, Dockerfile и entrypoint.sh
2025-12-23 17:51:50 +03:00

331 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🌐 VPN Proxy — Домашний VPN в одной программе
> **Простыми словами:** ваш компьютер подключается к удалённому VPN-серверу, и весь интернет-трафик идёт через него. Это нужно для доступа к заблокированным сайтам или для защиты данных в публичных Wi-Fi сетях.
---
## 📖 Что это такое?
Это набор инструментов, который позволяет:
1. **Запустить VPN-прокси** на вашем компьютере
2. **Управлять через веб-интерфейс** — открываете в браузере, вставляете ссылку, готово!
3. **Подключить браузер или приложения** (например, VS Code) через этот прокси
4. **Автоматически обновлять конфигурацию** с вашего VPN-провайдера
### 🎯 Для кого это?
- Пользователи, которым нужен VPN для работы или доступа к заблокированным ресурсам
- Разработчики, которые хотят направить трафик VS Code или других программ через VPN
- Люди, которые получили "ссылку подписки" от VPN-провайдера
---
## 🧩 Как это работает?
```
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Ваш браузер │────▶│ VPN Proxy │────▶│ VPN Сервер │────▶ Интернет
│ или VS Code │ │ (порт 8082) │ │ (в другой стране)│
└─────────────────┘ └──────────────────┘ └──────────────────┘
┌──────────────┐
Веб-интерфейс│
│ (порт 3456) │
└──────────────┘
```
---
## 📦 Что внутри?
| Файл | Описание простыми словами |
| ------------------------ | ------------------------------------------------------------------------ |
| `web_server.py` | Веб-интерфейс для управления через браузер |
| `web/index.html` | Страница с красивым интерфейсом |
| `client.template.json` | Шаблон настроек — как "бланк анкеты", который заполняется вашими данными |
| `gen-client-from-url.sh` | Скрипт, который берёт вашу VPN-ссылку и заполняет "анкету" |
| `menu.sh` | Интерактивное меню для выбора сервера из списка (консольная версия) |
| `entrypoint.sh` | Главный скрипт запуска с функцией авто-обновления |
| `Dockerfile.singbox` | Инструкция для создания изолированного VPN-приложения (контейнера) |
| `docker-compose.yml` | Файл для удобного запуска одной командой |
---
## 🚀 Быстрый старт
### Что вам понадобится
1. **VPN-ссылка** — получите её от вашего VPN-провайдера. Бывает двух видов:
- **Прямая ссылка**: начинается с `vless://...`
- **Ссылка подписки**: обычный URL (начинается с `https://...`), который содержит список серверов
2. **Docker** — программа для запуска изолированных приложений
- [Скачать Docker Desktop](https://www.docker.com/products/docker-desktop/) (бесплатно)
- После установки убедитесь, что Docker запущен (иконка 🐳 в трее)
---
## 📥 Первый запуск (установка с нуля)
Откройте терминал (Терминал на Mac, PowerShell на Windows) и выполните:
```bash
# 1. Перейдите в папку с проектом
cd путь/к/папке/vpn-proxy
# 2. Соберите контейнер (это нужно сделать только один раз)
docker compose build
# 3. Запустите контейнер
docker compose up -d
```
> 💡 **Что происходит:**
>
> - `docker compose build` — создаёт образ контейнера со всеми необходимыми программами
> - `docker compose up -d` — запускает контейнер в фоновом режиме
### После запуска
1. **Откройте веб-интерфейс**: http://localhost:3456
2. **Вставьте вашу VPN-ссылку** (vless:// или https://)
3. **Нажмите "Применить"**
4. Готово! Прокси работает на порту **8082**
---
## 🔄 Обновление (если уже была установлена старая версия)
Если вы обновили код из репозитория, нужно пересобрать контейнер:
```bash
# 1. Перейдите в папку с проектом
cd путь/к/папке/vpn-proxy
# 2. Остановите текущий контейнер
docker compose down
# 3. Пересоберите контейнер с новыми изменениями
docker compose build --no-cache
# 4. Запустите заново
docker compose up -d
```
> 💡 **Примечание:** после пересборки нужно снова применить VPN-ссылку через веб-интерфейс http://localhost:3456
---
## 🌐 Порты
| Порт | Для чего | URL |
| ------ | ------------------------------------------------- | ----------------------- |
| `3456` | **Веб-интерфейс** — управление через браузер | http://localhost:3456 |
| `8082` | **Прокси** — сюда подключаются браузер/приложения | `http://127.0.0.1:8082` |
| `9090` | Внутренний порт управления (обычно не нужен) | — |
---
## ✅ Проверка работы
### Через веб-интерфейс
Откройте http://localhost:3456 — если видите зелёный индикатор "Активен", значит прокси работает.
### Через терминал
```bash
# Через прокси — должен показать IP VPN-сервера
curl -x http://127.0.0.1:8082 https://ipinfo.io/json
```
Если показывает IP другой страны — VPN работает! 🎉
---
## ⚙️ Настройка приложений
### Для VS Code
Откройте настройки (Cmd+, на Mac или Ctrl+, на Windows), найдите "proxy" и добавьте:
```
http.proxy: http://127.0.0.1:8082
```
Или добавьте в `settings.json`:
```json
{
"http.proxy": "http://127.0.0.1:8082",
"http.proxyStrictSSL": true
}
```
### Для браузера
В настройках прокси вашего браузера укажите:
- **Тип**: HTTP или SOCKS5
- **Адрес**: `127.0.0.1`
- **Порт**: `8082`
---
## 🔄 Смена сервера
### Через веб-интерфейс (рекомендуется)
1. Откройте http://localhost:3456
2. Вставьте новую ссылку
3. Нажмите "Применить"
### Через консоль (если нужен выбор из списка)
Если у вас ссылка подписки с несколькими серверами:
```bash
docker exec -it sing-proxy ./menu.sh "https://ваша-ссылка-подписки..."
```
Появится список серверов для выбора.
---
## 📋 Управление контейнером
| Действие | Команда |
| ----------------------- | ---------------------------------- |
| Посмотреть статус | `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` |
---
## ❓ Часто задаваемые вопросы
### Страница localhost:3456 не открывается
**Причина**: Контейнер не запущен.
**Решение**:
```bash
# Проверьте статус
docker ps
# Если контейнера нет в списке — запустите
docker compose up -d
```
### "Connection refused" — соединение отклонено
**Причина**: Контейнер не запущен или VPN-ссылка не применена.
**Решение**:
1. Проверьте, запущен ли контейнер: `docker ps`
2. Откройте http://localhost:3456 и примените VPN-ссылку
### VS Code не подключается / очень медленно
**Причина**: Системный VPN или прокси мешает.
**Решение**:
1. Выключите системный VPN
2. Удалите переменные окружения `HTTP_PROXY` и `HTTPS_PROXY` (если есть)
3. Перезапустите VS Code
### Не открываются сайты / SSL ошибки
**Причина**: Проблемы с настройками VPN-сервера.
**Решение**:
- Попробуйте другой сервер — вставьте другую ссылку в веб-интерфейсе
- Проверьте, что ссылка подписки актуальна
### Как узнать, работает ли VPN?
```bash
# Без прокси — покажет ваш домашний IP
curl https://ipinfo.io/json
# Через прокси — должен показать IP VPN-сервера
curl -x http://127.0.0.1:8082 https://ipinfo.io/json
```
Если IP-адреса разные — VPN работает! 🎉
---
## 🔧 Для продвинутых пользователей
### Запуск с VPN-ссылкой при старте
Если хотите сразу применить ссылку при запуске (без веб-интерфейса):
```bash
VLESS_URL="vless://..." docker compose up -d
```
### Запуск без Docker
Если вы не хотите использовать Docker:
1. Установите [sing-box](https://sing-box.sagernet.org/)
2. Сгенерируйте конфигурацию:
```bash
./gen-client-from-url.sh "vless://..." client.json
```
3. Запустите:
```bash
sing-box run -c client.json
```
### Автоматическое обновление конфигурации
Контейнер автоматически обновляет конфигурацию каждые 60 минут. Чтобы изменить интервал, добавьте в `docker-compose.yml`:
```yaml
environment:
UPDATE_INTERVAL: 120 # обновлять каждые 120 минут
```
---
## 📚 Словарь терминов
| Термин | Объяснение |
| ------------------- | ----------------------------------------------------------------------------- |
| **Прокси** | Программа-посредник, которая передаёт ваши запросы в интернет от своего имени |
| **VPN** | Зашифрованный туннель между вашим компьютером и удалённым сервером |
| **Docker** | Программа для запуска приложений в изолированных "контейнерах" |
| **Контейнер** | Изолированное приложение со всеми необходимыми компонентами |
| **VLESS** | Современный протокол VPN-соединения |
| **Reality** | Технология маскировки VPN-трафика под обычный интернет-трафик |
| **Ссылка подписки** | URL, который содержит список VPN-серверов и их настройки |
| **Порт** | "Номер двери" для сетевых соединений. Прокси: 8082, Веб-интерфейс: 3456 |
---
## 🆘 Нужна помощь?
Если что-то не работает:
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`
---
_Создано для простого и безопасного доступа в интернет_ 🛡️