Mobile-first web panel for Husarion ROS 2 robots — webserver image (Caddy + persistence) and the h
10K+
The browser-facing half of the Husarion Cockpit — a mobile-first web panel for driving Husarion ROS 2 robots (Panther, Lynx, ROSbot, custom UGVs) over your local Wi-Fi from any phone, tablet, or laptop.
This single Docker Hub repo ships two images, distinguished only by tag prefix:
| Tag prefix | What it is |
|---|---|
husarion/webui:webserver-X.Y.Z | Caddy + persistence-server (auth, the SPA, Manage tab, /api proxy) — the current production image |
husarion/webui:bridge-X.Y.Z | Legacy foxglove-bridge + ROS service proxy (browser ↔ ROS WebSocket transport) |
Transport note. The current cockpit's browser↔ROS transport is
husarion/rosbridge (an in-house Rust rosbridge v2 server), which replaced foxglove-bridge. Thewebserver-X.Y.Zimage at and after the cutover (1.18.x+) expectshusarion/rosbridgeon the/wsroute — pair it with that image, not thebridge-*tag. Thebridge-*(foxglove) tag is still published for older, not-yet-migrated stacks; new deployments should usehusarion/rosbridge.
Multi-arch: linux/amd64 + linux/arm64.
husarion/webui:webserver-X.Y.Z / husarion/webui:bridge-X.Y.Z — pinned production (recommended)husarion/webui:webserver / husarion/webui:bridge — track the most recent releaseEach X.Y.Z is one snapshot validated on Husarion hardware. See the Tags tab above for all available versions.
services:
webserver:
image: husarion/webui:webserver-1.18.1
network_mode: host
env_file:
- /home/husarion/config/common/.env
environment:
- WEBSERVER_PORT=80
- WEBSERVER_HTTPS_PORT=443 # HTTPS via Caddy internal CA; needed for camera audio
- ROSBRIDGE_PORT=8866 # Caddy /ws → husarion_rosbridge
- PERSISTENCE_PORT=9091
- ROBOT_MODEL=lynx # picks profiles/settings-<robot>.yaml
volumes:
- /var/lib/husarion-webui:/var/lib/husarion-webui # auth + working-copy YAML
- /run/husarion-agent:/run/husarion-agent:ro # if husarion-agent is on the host
restart: unless-stopped
# Browser↔ROS transport — replaced the legacy husarion/webui:bridge-* (foxglove) image.
husarion-rosbridge:
image: husarion/rosbridge:0.3.2
network_mode: host
ipc: host
env_file:
- /home/husarion/config/common/.env
environment:
- ROSBRIDGE_BIND=0.0.0.0:8866
- ROSBRIDGE_HEALTH_BIND=0.0.0.0:8869 # /healthz /readyz /metrics
restart: unless-stopped
Open http://<robot-ip> on a phone on the same LAN; sign in with the per-unit password (default husarion for dev; per-unit random on production stickers). For camera microphone audio, open the HTTPS URL (https://<robot-ip>) and accept the self-signed cert warning once — Caddy's internal CA mints the cert on demand. AudioWorklet is browser-gated to secure contexts; everything else works on either origin.
husarion-agent — edit ROS env (namespace, domain ID, RMW), DDS profile, and other capability-defined fields without SSHing into the robotROBOT_MODEL=panther|lynx|rosbot-xl|…) controls topic / service paths, gear ceilings, kinematics, gamepad bindings| Service | Var | Default | Notes |
|---|---|---|---|
| webserver | WEBSERVER_PORT | 80 | Caddy HTTP listen port |
| webserver | WEBSERVER_HTTPS_PORT | 443 | Caddy HTTPS listen port (internal CA — required origin for camera audio) |
| webserver | ROSBRIDGE_PORT | 8866 | husarion_rosbridge port (Caddy /ws target) |
| webserver | PERSISTENCE_PORT | 9091 | persistence-server port (proxied) |
| webserver | ROBOT_MODEL | unset → panther | Picks profiles/settings-<robot>.yaml |
| webserver | HUSARION_AGENT_SOCKET | /run/husarion-agent/agent.sock | Path to the agent's Unix socket inside the container |
| webserver | HUSARION_AGENT_MANAGE_TTL_SEC | 300 | Step-up cookie TTL for /api/agent/* |
| husarion_rosbridge | ROSBRIDGE_BIND / ROSBRIDGE_HEALTH_BIND | 0.0.0.0:8866 / :8869 | WebSocket bind + health side-server (/healthz / /readyz / /metrics) |
Per-robot defaults (gears, gamepad bindings, topic overrides, camera config) live in profiles/settings-<robot>.yaml. Customers tweak via the in-UI Settings flow; the persistence-server writes back to a working-copy YAML in /var/lib/husarion-webui/.
Built and maintained by Husarion — robotics research + commercial UGV platforms.
For pre-bundled per-robot install scripts (compose stack with this image + the camera image + the husarion-agent native binary, all pinned to a validated combination), see the public release index: https://github.com/husarion/husarion-cockpit-releases.
License: Apache-2.0.
Content type
Image
Digest
sha256:4b51eac4b…
Size
39.7 MB
Last updated
8 days ago
docker pull husarion/webui:webserver