Giter Club home page Giter Club logo

gateway-docker's Introduction

Docker Mozilla WebThings Gateway

Docker image based on Debian Buster for running the Mozilla WebThings Gateway. The image is built for AMD64, ARMv7, and ARMv8 (AArch64).

Compatibility

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.

Usage

  • On Linux:

    docker run \
        -d \
        -e TZ=America/Los_Angeles \
        -v /path/to/shared/data:/home/node/.mozilla-iot \
        --network="host" \
        --log-opt max-size=1m \
        --log-opt max-file=10 \
        --name webthings-gateway \
        mozillaiot/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/.mozilla-iot \
        --log-opt max-size=1m \
        --log-opt max-file=10 \
        --name webthings-gateway \
        mozillaiot/gateway:latest

Parameters

  • -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/.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.
  • --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.

Changing ports in --network="host" mode

Create 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/.mozilla-iot). Contents of the file:

{
  "ports": {
    "https": 8081,
    "http": 8080
  }
}

Edit the ports as you like.

Using docker-compose

docker-compose up -d

Connecting

After running the container, you can connect to it at: http://<host-ip-address>:8080

Building

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 \
    -e TZ=America/Los_Angeles \
    -v /path/to/shared/data:/home/node/.mozilla-iot \
    --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>"

Notes

  • 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. 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.
  • If you need to use GPIO in the container (e.g. on a Raspberry Pi host), you will need to either run in privileged mode with --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.
  • If you need to use Bluetooth in the container, you will need to disable BlueZ on the host (if running), e.g. systemctl disable bluetooth, and you will need to run the container in privileged mode, i.e. --privileged.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.