webthingsio/gateway
Docker image based on Debian Buster for running the WebThings Gateway.
1M+
Docker image based on Debian Buster for running the WebThings Gateway. The image is built for AMD64, ARMv7, and ARMv8 (AArch64).
While the gateway doesn't necessarily require full local network access, some
add-ons may. Therefore, it is best to run with the --network="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 \
-e TZ=America/Los_Angeles \
-v /path/to/shared/data:/home/node/.webthings \
--network="host" \
--log-opt max-size=1m \
--log-opt max-file=10 \
--name webthings-gateway \
webthingsio/gateway:latest
On Windows or macOS:
docker run \
-d \
-p 8080:8080 \
-p 4443:4443 \
-e TZ=America/Los_Angeles \
-v /path/to/shared/data:/home/node/.webthings \
--log-opt max-size=1m \
--log-opt max-file=10 \
--name webthings-gateway \
webthingsio/gateway:latest
-d
- Run in daemon mode (in the background)-e TZ=America/Los_Angeles
- Set the time zone to America/Los_Angeles
. The
list of names can be found
here.-v /path/to/shared/data:/home/node/.webthings
- 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.--network="host"
- Shares host networking with container (highly
recommended, needed by some addons, -p is ignored if this option is used).-p 8080:8080
/ -p 4443:4443
- Forward necessary ports to the container
(ignored if --network="host"
is present).--log-opt max-size=1m
- limit the log size to 1 MB--log-opt max-file=10
- limit the number of saved log files to 10--name webthings-gateway
- Name of the container.--network="host"
modeCreate a file local.json
and map it to
/path/to/shared/data/config/local.json
(where /path/to/shared/data
is the
volume mounted to /home/node/.webthings
). Contents of the file:
{
"ports": {
"https": 8081,
"http": 8080
}
}
Edit the ports as you like.
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/WebThingsIO/gateway
cd gateway
docker build -t gateway .
docker run \
-d \
-e TZ=America/Los_Angeles \
-v /path/to/shared/data:/home/node/.webthings \
--network="host" \
--log-opt max-size=1m \
--log-opt max-file=10 \
--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>"
--device /dev/ttyACM0:/dev/ttyACM0
. They will also need to
be owned by GID 20, which corresponds to the dialout
group in the
container. This can be done using udev rules or something else.--privileged
or share in
your sysfs filesystem with -v /sys:/sys
. The sysfs nodes will also need to
be owned by GID 997, which corresponds to the gpio
group in the container.systemctl disable bluetooth
, and you will
need to run the container in privileged mode, i.e. --privileged
.docker pull webthingsio/gateway