Шлюз Peeklio (rproxy)¶
Peeklio — встроенный в Sapsan шлюз обратного прокси. Легкий агент, установленный рядом с камерой (за NAT), сам подключается к Sapsan и держит туннель; через этот туннель Sapsan забирает видео и трафик устройства так, как будто оно в локальной сети.
Настройка шлюза¶
rproxy:
streampoint_key: <ключ для подключения стримпоинтов>
endpoint_auth_url: http://backend.example.com/agent-auth
agents:
- agent_id: a1b2c3
password: <пароль агента>
salt: <соль>
streampoint_url: http://this-server:5080
Агентов можно авторизовать двумя способами: локальным списком agents в конфиге или внешним бекендом endpoint_auth_url. Без endpoint_auth_url шлюз работает в режиме «только streampoint» — принимает туннели, но не регистрирует новых агентов.
На стороне агента задаются адрес сервера, agent_id, пароль, интервал пингов и ACL хостов — список адресов, к которым через этого агента вообще можно подключаться; всё остальное отклоняется.
Warning
Состояние шлюза переживает перезагрузку конфигурации (агенты не отваливаются по SIGHUP), но смена streampoint_key / endpoint_auth_url требует перезапуска процесса.
Захват потока через агента¶
У входа потока указывается via_agent с идентификатором агента:
streams:
cam-behind-nat:
inputs:
- rtsp:
url: rtsp://admin:password@192.168.1.10/stream0
via_agent: "agent://a1b2c3"
Адрес в url — локальный адрес камеры в сети агента. RTSP-рукопожатие и поток идут через туннель.
Поведение при ошибках¶
Ошибки подключения через агента различимы: порт закрыт (connection refused), хост не входит в ACL агента (permission denied), имя не резолвится. Сервер может дистанционно послать агенту команды reset и reboot.
Мониторинг агентов¶
GET /streamer/api-v4/rproxy/streampoint-agents возвращает счетчики по каждому агенту: пинги, байты в обе стороны, попытки/успехи/текущее число соединений. См. Admin API.
Note
TODO: установка и конфигурирование самого агента (пакет rproxy-agent, agent.toml), выдача ключей.