Go to file
Christian Häussler fdb251da3b
Curl (#147)
* Add curl package for alpine

Signed-off-by: Christian Häussler <c-n-i@web.de>
2017-12-28 23:00:38 +01:00
1.8.3 Curl (#147) 2017-12-28 23:00:38 +01:00
2.0.0 Curl (#147) 2017-12-28 23:00:38 +01:00
2.1.0 Curl (#147) 2017-12-28 23:00:38 +01:00
2.2.0 Curl (#147) 2017-12-28 23:00:38 +01:00
2.3.0-snapshot Curl (#147) 2017-12-28 23:00:38 +01:00
images Change new openhab logo 2017-10-22 23:02:34 +02:00
.gitignore New Dockerfile and update on Readme 2016-04-03 10:55:53 +02:00
.travis.yml Exit container with error message when pseudo-TTY is unallocated (#141) 2017-12-22 01:19:34 +01:00
CONTRIBUTING.md initial contribution guidelines 2016-02-26 10:04:14 +01:00
LICENSE Initial commit 2016-02-26 09:53:53 +01:00
README-short.txt New Dockerfile and update on Readme 2016-04-03 10:55:53 +02:00
README.md changed config option 'net' to 'network_mode' (#145) 2017-12-28 21:25:02 +01:00
entrypoint_alpine.sh Exit container with error message when pseudo-TTY is unallocated (#141) 2017-12-22 01:19:34 +01:00
entrypoint_debian.sh Exit container with error message when pseudo-TTY is unallocated (#141) 2017-12-22 01:19:34 +01:00
update.sh Curl (#147) 2017-12-28 23:00:38 +01:00

README.md

openHAB Docker Containers

Build state Docker Label Docker Stars Docker Pulls Join the chat at https://gitter.im/openhab/openhab-docker

GitHub issues Issue Stats GitHub forks Issue Stats GitHub stars

Table of Contents

Introduction

Repository for building Docker containers for openHAB (Home Automation Server). Comments, suggestions and contributions are welcome!

Docker Image

dockeri.co

Image Variants

openhab/openhab:<version>-<architecture>-<distributions>

Version

Architecture:

  • amd64 for most desktop computer (e.g. x64, x86-64, x86_64)
  • armhf for ARMv7 devices 32 Bit (e.g. most RaspberryPi 1/2/3)
  • arm64 for ARMv8 devices 64 Bit (not RaspberryPi 3)

Distributions:

  • debian for debian jessie
  • alpine for alpine 3.6

The alpine images are substantially smaller than the debian images but may be less compatible because OpenJDK is used (see Prerequisites for known disadvantages).

If you are unsure about what your needs are, you probably want to use openhab/openhab:2.2.0-amd64-debian.

Prebuilt Docker Images can be found here: Docker Images

Usage

Important: To be able to use UPnP for discovery the container needs to be started with --net=host.

Important: In the container openHAB runs with user "openhab" (id 9001) by default. See user configuration section below!

The following will run openHAB in demo mode on the host machine:

docker run -it --name openhab --net=host openhab/openhab:2.2.0-amd64-debian

NOTE: Although this is the simplest method to getting openHAB up and running, but it is not the preferred method. To properly run the container, please specify a host volume for the directories.

Starting with Docker named volumes (for beginners)

Following configuration uses Docker named data volumes. These volumes will survive, if you delete or upgrade your container. It is a good starting point for beginners. The volumes are created in the Docker volume directory. You can use docker inspect openhab to locate the directories (e.g. /var/lib/docker/volumes) on your host system. For more information visit Manage data in containers:

Running from command line

docker run \
        --name openhab \
        --net=host \
        --tty \
        -v /etc/localtime:/etc/localtime:ro \
        -v /etc/timezone:/etc/timezone:ro \
        -v openhab_addons:/openhab/addons \
        -v openhab_conf:/openhab/conf \
        -v openhab_userdata:/openhab/userdata \
        -d \
        --restart=always \
        openhab/openhab:2.2.0-amd64-debian

Running from compose-file.yml

Create the following docker-compose.yml and start the container with docker-compose up -d

version: '2.2'

services:
  openhab:
    image: "openhab/openhab:2.2.0-amd64-debian"
    restart: always
    network_mode: host
    tty: true
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "openhab_addons:/openhab/addons"
      - "openhab_conf:/openhab/conf"
      - "openhab_userdata:/openhab/userdata"
    environment:
      OPENHAB_HTTP_PORT: "8080"
      OPENHAB_HTTPS_PORT: "8443"

Running openHAB with libpcap support

You can run all openHAB images with libpcap support. This enables you to use the Amazon Dashbutton Binding in the Docker container. For that feature to work correctly, you need to run the image as root user. Create the following docker-compose.yml and start the container with docker-compose up -d

version: '2.2'

services:
  openhab:
    container_name: openhab
    image: "openhab/openhab:2.2.0-amd64-debian"
    restart: always
    tty: true
    network_mode: host
    cap_add:
      - NET_ADMIN
      - NET_RAW
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "openhab_conf:/openhab/conf"
      - "openhab_userdata:/openhab/userdata"
      - "openhab_addons:/openhab/addons"
    # The command node is very important. It overrides
    # the "gosu openhab ./start.sh" command from Dockerfile and runs as root!
    command: "./start.sh"

If you could provide a method to run libpcap support in user mode please open a pull request.

Starting with Docker mounting a host directory (for advanced user)

You can mount a local host directory to store your configuration files. If you followed the beginners guide, you do not need to read this section. The following run command will create the folders and copy the initial configuration files for you.

docker run \
  --name openhab \
  --net=host \
  --tty \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  -v /opt/openhab/addons:/openhab/addons \
  -v /opt/openhab/conf:/openhab/conf \
  -v /opt/openhab/userdata:/openhab/userdata \
  openhab/openhab:2.2.0-amd64-debian

Accessing the console

You can connect to a console of an already running openHAB container with following command:

  • docker ps - lists all your currently running container
  • docker exec -it openhab /openhab/runtime/bin/client - connect to openHAB container by name
  • docker exec -it c4ad98f24423 /openhab/runtime/bin/client - connect to openHAB container by id
  • docker attach openhab - attach to openHAB container by name, input only works when starting the container with -i (or stdin_open: true with docker compose)

The default password for the login is habopen.

Debug Mode

You can run a new container with the command docker run -it openhab/openhab:2.2.0-amd64 ./start_debug.sh to get into the debug shell.

Environment variables

  • EXTRA_JAVA_OPTS=""
  • LC_ALL=en_US.UTF-8
  • LANG=en_US.UTF-8
  • LANGUAGE=en_US.UTF-8
  • OPENHAB_HTTP_PORT=8080
  • OPENHAB_HTTPS_PORT=8443
  • USER_ID=9001
  • GROUP_ID=9001

Group id will default to the same value as the user id. By default the openHAB user in the container is running with:

  • uid=9001(openhab) gid=9001(openhab) groups=9001(openhab)

Make sure that either

  • You create the same user with the same uid and gid on your docker host system
groupadd -g 9001 openhab
useradd -u 9001 -g openhab -r -s /sbin/nologin openhab
usermod -a -G openhab myownuser
  • Or run the docker container with your own user AND passing the userid to openHAB through env
docker run \
(...)
--user <myownuserid> \
-e USER_ID=<myownuserid>

Parameters

  • -p 8080 - the port of the webinterface
  • -v /openhab/addons - custom openhab addons
  • -v /openhab/conf - openhab configs
  • -v /openhab/userdata - openhab userdata directory
  • --device=/dev/ttyUSB0 - attach your devices like RFXCOM or Z-Wave Sticks to the container

Building the image

Checkout the github repository and then run these commands:

$ docker build -t openhab/openhab .
$ docker run -it openhab/openhab server

Contributing

Contribution guidelines

License

When not explicitly set, files are placed under Eclipse license.