# 🔄 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