[SOLVED] Restart OH Docker container with OH switch item?

  • Platform information:
    • Hardware: Intel 64bit
    • OS: Debian 10
    • Java Runtime Environment: unknown (prepackaged with Docker image)
    • openHAB version: 2.5.7
  • Issue of the topic: Trying to create a Thing/Item switch that will send the command to restart the OH Docker container
  • Please post configurations (if applicable):
    • Items configuration related to the issue

exec:command:OHRestart [command="docker restart openhab", interval=0, timeout=25]

Switch OHRestart "Restart OH Container" {channel="exec:command:OHRestart:run"}
String OHOutput "OHRestart Output" {channel="exec:command:OHRestart:output"}
  • Sitemap configuration related to the issue

  • Rules code related to the issue

  • Services configuration related to the issue
    Exec whitelist IS updated to include “docker restart openhab”
    I have also installed Docker within Docker

  • If logs where generated please post these here using code fences:


I run OH via Docker from the official Docker image (openhab/openhab:latest). Every once in a while, some of my devices will disconnect (WeMo, mainly), and I can fix the system by simply restarting the container. I would like to create an Exec switch in OH that will send the restart command so that I don’t have to go to my computer, ssh into my machine, and restart from there.

I have installed Docker within Docker such that, if I run the command “docker restart openhab” from within the container (via docker exec or Portainer), the restart works flawlessly.

I have also created a Thing and Item in OH that seems to trigger fine (no log errors or warnings) to execute the same “docker restart openhab” script, but it doesn’t seem to actually execute the command. I even created a bash script to execute the same thing, and that didn’t help.

Any ideas?

Thanks.

Permission ? Is the user openhab allowed to run/execute the docker restart command ?

YES! Thank you! I was foolishly thinking that OH was running as root, and there were no error messages returned in the output of the command to tip me off otherwise.

I had to update my 50-exec-scripts to (1) install sudo, and (2) give NOPASSWD permission for user openhab to run docker (i.e., /usr/bin/docker).

Then I just had to update my Thing (and exec whitelist) to execute sudo docker restart openhab.

I have installed openhab in a docker on a qnap server and would like to be able to restart openhab through a switch item or a script. I do not understand what was used and how so would appreciate a kind of step-by-step procedure.

Use the Exec binding. It will allow you to execute arbitrary code on the host machine.

Thank you. What command shall I use to restart the container from within OH?

Most likely whatever you use to restart the container outside OH. Probably something like docker restart openhab or sudo docker restart openhab. But it could depend on your setup. Try executing the commands from inside the container (but using the shell and not oh itself) first. Find the command that works, then implement it within OH.

Thank you. Unfortunately none of those commands work.