refactor: реорганизация структуры проекта на логические папки

- Созданы директории: docker/, scripts/, config/
- Перемещены файлы Docker (Dockerfile, entrypoint.sh) в docker/
- Перемещены утилитарные скрипты в scripts/
- Шаблон конфигурации перенесен в config/
- Веб-сервер перемещен в web/ и переименован в server.py
- Обновлены пути в docker-compose.yml, Dockerfile и entrypoint.sh
This commit is contained in:
2025-12-23 17:51:50 +03:00
parent 3e2edc8c10
commit 2d61830d08
10 changed files with 1395 additions and 1 deletions

330
README.md
View File

@@ -1,2 +1,330 @@
# vpn-proxy
# 🌐 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`
---
_Создано для простого и безопасного доступа в интернет_ 🛡️