Docker image based on Debian Buster for running the Mozilla WebThings Gateway.
While the gateway doesn't necessarily require full local network access, some add-ons may. Therefore, it is best to run with the --net=host
flag. Currently, this flag will not work when using Docker for Mac or Docker for Windows due to this and this.
-
On Linux:
docker run \ -d \ -v /path/to/shared/data:/home/node/.mozilla-iot \ --net=host \ --name webthings-gateway \ mozillaiot/gateway:latest
-
On Windows or macOS:
docker run \ -d \ -p 8080:8080 \ -p 4443:4443 \ -v /path/to/shared/data:/home/node/.mozilla-iot \ --name webthings-gateway \ mozillaiot/gateway:latest
Tested on Raspberry Pi 3 Model B/B+:
docker run \
-d \
-v /path/to/shared/data:/home/node/.mozilla-iot \
--net=host \
--name webthings-gateway \
mozillaiot/gateway:arm
-d
- Run in daemon mode (in the background)-v /path/to/shared/data:/home/node/.mozilla-iot
- Change/path/to/shared/data
to some local path. We are mounting a directory on the host to the container in order to store the persistent "user profile" data, e.g. add-ons, logs, configuration data, etc.--net=host
- Shares host networking with container (highly recommended)-p 8080:8080
/-p 4443:4443
- Forward necessary ports to the container--name webthings-gateway
- Name of the container
NOTE: The present docker-compose config file pulls mozillaiot/gateway:latest
. If you would like to use the ARM version, then change the image field to mozillaiot/gateway:arm
.
docker-compose up -d
After running the container, you can connect to it at: http://<host-ip-address>:8080
If you'd like to build an image yourself, run the following:
git clone https://github.com/mozilla-iot/gateway-docker
cd gateway-docker
docker build -t gateway .
docker run \
-d \
-v /path/to/shared/data:/home/node/.mozilla-iot \
--net=host \
--name webthings-gateway \
gateway
You can add the following build args:
--build-arg "gateway_url=https://github.com/<your-fork>/gateway"
--build-arg "gateway_branch=<your-branch>"
--build-arg "gateway_addon_version=<your-version>"
- If you need to use Zigbee, Z-Wave, or some other add-on which requires physically attached hardware, you will have to share your device into your container, e.g.
--device /dev/ttyACM0:/dev/ttyACM0
.