Run the Fuuz Device Gateway on any machine with Docker in one command.
-
A working Fuuz Enterprise environment. The gateway connects to your Fuuz Enterprise tenant. You'll need either:
- a free limited trial license, or
- a full Enterprise-scale subscription (public or private cloud).
Don't have one yet? Get started with Fuuz.
-
Docker Engine with the Compose plugin (
docker compose versionshould print a version). On macOS/Windows, install Docker Desktop. -
No registry login or credentials required — the gateway image is pulled anonymously from a public registry.
curl -fsSL https://raw.githubusercontent.com/Fuuz-Platform/device-gateway-docker/main/install.sh | bashThis creates a fuuz-device-gateway/ folder in your current directory, writes the compose file, and starts the gateway.
git clone https://github.com/Fuuz-Platform/device-gateway-docker.git
cd device-gateway-docker
docker compose up -dEither way, the gateway is now running in the background.
Check that it's up:
docker compose ps
docker compose logs -fYou do not upgrade the gateway from the command line. Once it's running and connected to your Fuuz Enterprise tenant, updates are managed from within the running application at runtime — new packages and releases are delivered and applied automatically. There's no need to docker compose pull or re-run the installer to stay current.
| Task | Command |
|---|---|
| View logs | docker compose logs -f |
| Restart | docker compose restart |
| Stop & remove container | docker compose down |
| Start again | docker compose up -d |
Run these from the folder that contains docker-compose.yml.
The gateway stores its configuration and state in a .gatewaydata/ folder next to docker-compose.yml:
.gatewaydata/appData— gateway config, registration, and runtime state.gatewaydata/drivers— custom device drivers
Back up .gatewaydata/ and do not delete it — removing it wipes the gateway's configuration. It is git-ignored so your local state is never committed.
- Ports — the gateway publishes host ports
5500–5550. Make sure nothing else on the machine is using that range. - Reaching the host —
host.docker.internalresolves to the host machine from inside the container, so the gateway can talk to services (OPC-UA, Modbus, the Fuuz platform, etc.) running on the host.