Skip to content

docs: add port 443 redirect and Linux setcap notes#180

Open
NHerby wants to merge 1 commit intoMVladislav:mainfrom
NHerby:docs/ozmo920-linux-setup
Open

docs: add port 443 redirect and Linux setcap notes#180
NHerby wants to merge 1 commit intoMVladislav:mainfrom
NHerby:docs/ozmo920-linux-setup

Conversation

@NHerby
Copy link

@NHerby NHerby commented Mar 4, 2026

What this adds

1. Port 443 redirect for newer robots (jmq-ngiot protocol)

Some newer robots (confirmed: Deebot OZMO 920 series) do not connect on the standard MQTT port (8883). Instead they connect on port 443 using the jmq-ngiot-{region}.area.ww.ecouser.net hostname. Without an iptables redirect, Bumper never receives the connection and the bot silently stays on the cloud.

Diagnosis: tcpdump showed the bot connecting on 443 after DNS redirection was in place, with no activity on 8883.

Fix: one iptables PREROUTING REDIRECT rule targeting the bot IP. The cert SANs (*.area.ww.ecouser.net) and DNS wildcard already cover this hostname — it is purely a port interception issue.

Added to docs/getting_started/dns.md: iptables add/remove commands, tcpdump diagnosis, iptables-persistent persistence note.

2. Linux port 443 binding without root (non-Docker)

When running Bumper directly (not via Docker), Python cannot bind port 443 without CAP_NET_BIND_SERVICE. Added to docs/usage/cli.md: setcap commands for system Python and uv-managed Python, plus the WEB_SERVER_HTTPS_PORT alternative.

Testing

  • Robot: Deebot OZMO 920 series (vi829v)
  • Protocol: MQTT
  • App: Ecovacs Home
  • Result: working after applying both fixes above

Newer robots (confirmed: Deebot OZMO 920 series) connect to Bumper on
port 443 via the jmq-ngiot protocol instead of the standard MQTT port
8883. Without an iptables PREROUTING redirect, the bot silently stays
on the cloud. The existing DNS wildcards and cert SANs already cover
the jmq-ngiot hostname — it is purely a port interception issue.

Also documents the CAP_NET_BIND_SERVICE requirement for running Bumper
directly on Linux (non-Docker), where binding port 443 requires either
setcap or the WEB_SERVER_HTTPS_PORT alternative.

- docs/getting_started/dns.md: new section with iptables rules,
  tcpdump diagnosis, iptables-persistent persistence note
- docs/usage/cli.md: new section with setcap commands and
  WEB_SERVER_HTTPS_PORT fallback
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant