Skip to content

Шлюз 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), выдача ключей.