Go to file
Petro1990 22eda756b5 исправление: синтаксическая ошибка на строке 99 (совместимость с ash/BusyBox) и обновление текста в установщике 2026-03-13 14:37:02 +03:00
.cursorrules исправление: добавлен отсутствующий обработчик warn в установщике и описание sshpass в FAQ 2026-03-13 14:33:52 +03:00
README.md исправление: добавлен отсутствующий обработчик warn в установщике и описание sshpass в FAQ 2026-03-13 14:33:52 +03:00
S98rproxy feat: rProxy — менеджер обратного прокси для Keenetic 2026-03-13 14:20:39 +03:00
install.sh исправление: синтаксическая ошибка на строке 99 (совместимость с ash/BusyBox) и обновление текста в установщике 2026-03-13 14:37:02 +03:00
rproxy исправление: синтаксическая ошибка на строке 99 (совместимость с ash/BusyBox) и обновление текста в установщике 2026-03-13 14:37:02 +03:00

README.md

🔄 rProxy

Менеджер обратного прокси для роутеров Keenetic

Публикация локальных сервисов в интернет через VPS с nginx в качестве обратного прокси.

[LAN сервис] ← [Keenetic] ══SSH туннель══▶ [VPS:nginx] → Интернет

Быстрый старт

1. Установка (на роутере Keenetic)

Требуется Entware

curl -sSL http://5.104.75.50:3000/Petro1990/rProxy/raw/branch/main/install.sh | sh

2. Запуск

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-ключу.

🔧 Решение проблем

Туннель не подключается

rproxy  # → пункт 1 — проверить статус
rproxy  # → пункт 6 — перезапустить

Сервис не доступен по домену

  • Убедитесь, что DNS-запись домена указывает на IP VPS
  • Проверьте nginx на VPS: ssh root@VPS 'nginx -t'

Автозапуск

Туннели автоматически запускаются при старте роутера через init-скрипт S98rproxy.

📦 Требования

Роутер

  • Keenetic с Entware
  • Пакеты: openssh-client, autossh, curl, sshpass (ставятся автоматически)

VPS

  • Linux (Debian/Ubuntu/CentOS)
  • nginx (устанавливается автоматически)
  • SSH-доступ

FAQ (Часто задаваемые вопросы)

Что такое sshpass и нужен ли он?

sshpass — это утилита, которая позволяет передавать пароль SSH в автоматическом режиме.

  • Нужен ли он? Только если вы хотите заходить на VPS по паролю.
  • Если его нет? Ничего страшного. Скрипт просто потребует использовать SSH-ключ для подключения. Это намного безопаснее и является рекомендуемым способом.
  • Почему он может не ставиться? В некоторых версиях Entware для старых архитектур (например, старые Keenetic на MIPS) этого пакета просто нет в официальном репозитории. В этом случае используйте только авторизацию по ключу.

📝 Лицензия

MIT