Hi,
this port describes how to quickly install an openhab instance from a docker image. In this example Openhab runs under user/group openhab and the network of the docker container is connected to the host interface.
Before starting checkout the install docker post to get the system ready for hosting openhab.
Create the user and group openhab
1 2 | root@debdev ~ # useradd -r -s /sbin/nologin openhab root@debdev ~ # usermod -a -G openhab openhab |
Create folders for holding the config on the host system ant not inside the container.
1 2 3 4 | root@debdev ~ # mkdir -p /opt/openhab/conf root@debdev ~ # mkdir -p /opt/openhab/userdata root@debdev ~ # mkdir -p /opt/openhab/addons root@debdev ~ # chown -R openhab:openhab /opt/openhab |
Get UID/GID
1 2 | root@debdev ~ # export USER_ID=$(egrep '^openhab' /etc/passwd|awk -F: '{print $3}') root@debdev ~ # export GROUP_ID=$(egrep '^openhab' /etc/group|awk -F: '{print $3}') |
If you are behind a proxy and have no direct connection to the Internet, configure the proxy server.
Create a config directory for the docker service
1 | root@debdev ~ # mkdir /etc/systemd/system/docker.service.d |
Create a file /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.254.254:888"
Environment="HTTPS_PROXY=http://192.168.254.254:888"
Environment="NO_PROXY=localhost,127.0.0.0/8"
and ~/.docker/config.json
1 2 3 4 5 6 7 8 9 10 11 | { "proxies": { "default": { "httpProxy": "http://192.168.254.254:888", "httpsProxy": "http://192.168.254.254:888", "noProxy": "localhost" } } } |
Reload config
1 2 3 | root@debdev ~ # systemctl daemon-reload root@debdev ~ # systemctl show --property Environment docker root@debdev ~ # systemctl restart docker |
To select the version you want to start look at docker hub for all startable images and tags
Run openhab. This one is for version 2.5.0-M3 on Standard PC Hardware amd64. -d means openhab detaches from the console and runs in background. For testing purposes omit the -d switch then you see all output messages at the console.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | root@debdev ~ # docker run \ --name openhab-2.5.0-M3 \ --net=host \ - v /etc/localtime : /etc/localtime :ro \ - v /etc/timezone : /etc/timezone :ro \ - v /opt/openhab/conf : /openhab/conf \ - v /opt/openhab/userdata : /openhab/userdata \ - v /opt/openhab/addons : /openhab/addons \ -d \ -e OPENHAB_HTTP_PORT=8080 \ -e OPENHAB_HTTPS_PORT=8443 \ -e USER_ID=$USER_ID \ -e GROUP_ID=$GROUP_ID \ --restart=always \ openhab /openhab :2.5.0.M3-amd64-debian |
If you are behind a proxy, pass the proxy in the run command by the EXTRA_JAVA_OPTS environment variable to the docker container
1 2 3 4 5 6 | ... -e OPENHAB_HTTP_PORT=8080 \ -e OPENHAB_HTTPS_PORT=8443 \ -e EXTRA_JAVA_OPTS= "-Dhttp.proxySet=true -Dhttp.proxyHost=192.168.254.254 -Dhttp.proxyPort=888 -Dhttps.proxySet=true -Dhttps.proxyHost=192.168.254.254 -Dhttps.proxyPort=888" \ -e USER_ID=$USER_ID \ ... |
Get a shell within the container
1 | root@debdev ~ # docker exec -it openhab-2.5.0-M3 sh -c "/bin/bash" |
Start the openhab command line (Karaf console) within the container
1 2 3 4 5 6 7 8 9 10 | root@debdev ~ # docker exec -it openhab-2.5.0-M3 sh -c "/openhab/runtime/bin/client" Logging in as openhab __ _____ ____ ____ ____ ___ ____ / / / / | / __ ) / __ \/ __ \/ _ \/ __ \/ /_/ / /| | / __ | / /_/ / /_/ / __/ / / / __ / ___ |/ /_/ / \____/ .___/\___ /_/ /_/_/ /_/_/ |_ /_____/ /_/ 2.5.0.M3 Milestone Build |
Open a browser and connect to port 8080
http://yourIPAddress:8080
Review logs by
1 | root@debdev ~ # docker logs openhab-2.5.0-M3 |
Stopping and starting the container
1 2 | root@debdev ~ # docker stop openhab-2.5.0-M3 root@debdev ~ # docker start openhab-2.5.0-M3 |
Have fun
Michael
Reference: OpenHAB