145 lines
6.4 KiB
Markdown
145 lines
6.4 KiB
Markdown
# 🔄 rProxy
|
||
|
||
**Менеджер обратного прокси для роутеров Keenetic**
|
||
|
||
Публикация локальных сервисов в интернет через VPS с nginx в качестве обратного прокси.
|
||
|
||
```
|
||
[LAN сервис] ← [Keenetic] ══SSH туннель══▶ [VPS:nginx] → Интернет
|
||
```
|
||
|
||
## ⚡ Быстрый старт
|
||
|
||
### 1. Установка (на роутере Keenetic)
|
||
|
||
> Требуется [Entware](https://help.keenetic.com/hc/ru/articles/360021214160)
|
||
|
||
```bash
|
||
curl -sSL http://5.104.75.50:3000/Petro1990/rProxy/raw/branch/main/install.sh | sh
|
||
```
|
||
|
||
### 2. Запуск
|
||
|
||
```bash
|
||
rproxy
|
||
```
|
||
|
||
Откроется интерактивное меню:
|
||
|
||
```
|
||
╔══════════════════════════════════════════════╗
|
||
║ rProxy v1.0.0 ║
|
||
╚══════════════════════════════════════════════╝
|
||
|
||
VPS: 5.104.75.50 Сервисов: 2 Онлайн: 1
|
||
──────────────────────────────────────────────────
|
||
|
||
1) 📋 Список сервисов и статус
|
||
2) ➕ Добавить сервис
|
||
3) ❌ Удалить сервис
|
||
──────────────────────────────────────────────────
|
||
4) ▶️ Запустить туннель
|
||
5) ⏹️ Остановить туннель
|
||
6) 🔄 Перезапустить туннель
|
||
──────────────────────────────────────────────────
|
||
7) ⚙️ Настройки VPS
|
||
0) 🚪 Выход
|
||
|
||
▸ Выберите действие:
|
||
```
|
||
|
||
### 3. Первый запуск
|
||
|
||
При первом запуске скрипт предложит настроить подключение к VPS:
|
||
- **IP-адрес VPS**
|
||
- **SSH порт** (по умолчанию 22)
|
||
- **Пользователь** (по умолчанию root)
|
||
- **Авторизация** — SSH-ключ или пароль
|
||
|
||
### 4. Добавление сервиса
|
||
|
||
Выберите пункт **2** в меню. Скрипт пошагово спросит:
|
||
- Название сервиса
|
||
- Адрес локального сервиса (IP:порт)
|
||
- Привязка к домену или внешнему порту
|
||
|
||
**Если указан домен** — nginx будет слушать порт 80 с этим доменом.
|
||
**Если без домена** — nginx будет слушать указанный внешний порт.
|
||
|
||
## 🏗 Архитектура
|
||
|
||
### На роутере (Keenetic + Entware)
|
||
- **autossh** — устанавливает устойчивые обратные SSH-туннели до VPS
|
||
- Каждый сервис = отдельный туннель
|
||
- Конфигурация: `/opt/etc/rproxy/`
|
||
- PID-файлы: `/opt/var/run/rproxy/`
|
||
|
||
### На VPS
|
||
- **nginx** — принимает входящие запросы и проксирует в SSH-туннели
|
||
- Конфиги сервисов: `/etc/nginx/sites-enabled/rproxy_*.conf`
|
||
|
||
### Файлы
|
||
|
||
```
|
||
/opt/etc/rproxy/
|
||
├── rproxy.conf # Параметры подключения к VPS
|
||
├── id_rsa # SSH-ключ (если выбран)
|
||
└── services/
|
||
├── nas.conf # Конфиг сервиса
|
||
├── camera.conf
|
||
└── ...
|
||
```
|
||
|
||
## 🔒 Безопасность
|
||
|
||
- SSH-ключ и конфиг хранятся с правами 600
|
||
- Все соединения зашифрованы через SSH
|
||
|
||
> **Рекомендация:** используйте авторизацию по SSH-ключу.
|
||
|
||
## 🔧 Решение проблем
|
||
|
||
### Туннель не подключается
|
||
```bash
|
||
rproxy # → пункт 1 — проверить статус
|
||
rproxy # → пункт 6 — перезапустить
|
||
```
|
||
|
||
### Сервис не доступен по домену
|
||
- Убедитесь, что DNS-запись домена указывает на IP VPS
|
||
- Проверьте nginx на VPS: `ssh root@VPS 'nginx -t'`
|
||
|
||
### Возможности
|
||
- Полноценное интерактивное меню (TUI)
|
||
- Поддержка SSH-ключей и паролей (автоматическая настройка)
|
||
- Автоматическая конфигурация Nginx на VPS
|
||
- **Поддержка HTTPS (SSL) через Certbot**
|
||
- Управление состоянием сервисов (Start/Stop/Reload)
|
||
- Автозапуск туннелей при загрузке роутера
|
||
|
||
### Автозапуск
|
||
Туннели автоматически запускаются при старте роутера через init-скрипт `S98rproxy`.
|
||
|
||
## 📦 Требования
|
||
|
||
### Роутер
|
||
- Keenetic с [Entware](https://help.keenetic.com/hc/ru/articles/360021214160)
|
||
- Пакеты: `openssh-client`, `autossh`, `curl`, `sshpass` (ставятся автоматически)
|
||
|
||
### VPS
|
||
- Linux (Debian/Ubuntu/CentOS)
|
||
- nginx (устанавливается автоматически)
|
||
- SSH-доступ
|
||
|
||
## ❓ FAQ (Часто задаваемые вопросы)
|
||
|
||
### Что такое `sshpass` и нужен ли он?
|
||
`sshpass` — это утилита, которая позволяет передавать пароль SSH в автоматическом режиме.
|
||
- **Нужен ли он?** Только если вы хотите заходить на VPS по паролю.
|
||
- **Если его нет?** Ничего страшного. Скрипт просто потребует использовать SSH-ключ для подключения. Это **намного безопаснее** и является рекомендуемым способом.
|
||
- **Почему он может не ставиться?** В некоторых версиях Entware для старых архитектур (например, старые Keenetic на MIPS) этого пакета просто нет в официальном репозитории. В этом случае используйте только авторизацию по ключу.
|
||
|
||
## 📝 Лицензия
|
||
|
||
MIT
|