From 6afd8a3f5d19670215629e55c296e89502499097 Mon Sep 17 00:00:00 2001 From: andre <> Date: Sun, 1 Dec 2019 21:46:17 +0100 Subject: [PATCH 01/11] testing --- amd64/Dockerfile | 47 ++++++++++++++++--------------- amd64/scripts/iobroker_startup.sh | 15 ++++++---- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/amd64/Dockerfile b/amd64/Dockerfile index 8141a3b..32fc010 100644 --- a/amd64/Dockerfile +++ b/amd64/Dockerfile @@ -12,31 +12,31 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \ curl \ git \ gnupg2 \ - gosu \ - libavahi-compat-libdnssd-dev \ + gosu \ + libavahi-compat-libdnssd-dev \ libcap2-bin \ libpam0g-dev \ libudev-dev \ locales \ - pkg-config \ - procps \ + pkg-config \ + procps \ python \ - python-dev \ - sudo \ + python-dev \ + sudo \ + udev \ unzip \ wget \ && rm -rf /var/lib/apt/lists/* # Install node10 RUN curl -sL https://deb.nodesource.com/setup_10.x | bash \ - && apt-get update && apt-get install -y \ - nodejs \ + && apt-get update && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* # Generating locales RUN sed -i 's/^# *\(de_DE.UTF-8\)/\1/' /etc/locale.gen \ - && sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \ - && locale-gen + && sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \ + && locale-gen # Create scripts directory and copy scripts RUN mkdir -p /opt/scripts/ \ @@ -47,7 +47,7 @@ COPY scripts/setup_avahi.sh setup_avahi.sh COPY scripts/setup_packages.sh setup_packages.sh COPY scripts/setup_zwave.sh setup_zwave.sh RUN chmod +x iobroker_startup.sh \ - && chmod +x setup_avahi.sh \ + && chmod +x setup_avahi.sh \ && chmod +x setup_packages.sh # Install ioBroker @@ -70,18 +70,19 @@ RUN chsh -s /bin/bash iobroker \ && usermod --home /opt/iobroker iobroker # Setting up ENVs -ENV DEBIAN_FRONTEND="teletype" \ - LANG="de_DE.UTF-8" \ - LANGUAGE="de_DE:de" \ - LC_ALL="de_DE.UTF-8" \ - TZ="Europe/Berlin" \ - PACKAGES="vi" \ - ADMINPORT=8081 \ - SETUID=1000 \ - SETGID=1000 \ - AVAHI="false" \ - ZWAVE="false" \ - USBDEVICES="none" +ENV ADMINPORT=8081 \ + AVAHI="false" \ + DEBIAN_FRONTEND="teletype" \ + LANG="de_DE.UTF-8" \ + LANGUAGE="de_DE:de" \ + LC_ALL="de_DE.UTF-8" \ + PACKAGES="vi" \ + REDIS="false" + SETGID=1000 \ + SETUID=1000 \ + TZ="Europe/Berlin" \ + USBDEVICES="none" \ + ZWAVE="false" # Run startup-script ENTRYPOINT ["/opt/scripts/iobroker_startup.sh"] diff --git a/amd64/scripts/iobroker_startup.sh b/amd64/scripts/iobroker_startup.sh index 4e40f6f..6b8407e 100644 --- a/amd64/scripts/iobroker_startup.sh +++ b/amd64/scripts/iobroker_startup.sh @@ -1,13 +1,14 @@ #!/bin/bash # Reading ENV -packages=$PACKAGES adminport=$ADMINPORT -uid=$SETUID -gid=$SETGID -zwave=$ZWAVE avahi=$AVAHI +gid=$SETGID +packages=$PACKAGES +redis=$REDIS +uid=$SETUID usbdevices=$USBDEVICES +zwave=$ZWAVE # Getting date and time for logging dati=`date '+%Y-%m-%d %H:%M:%S'` @@ -36,12 +37,14 @@ echo -n "----- " && echo -n "$(printf "%-10s %-23s" node: $(node - echo -n "----- " && echo -n "$(printf "%-10s %-23s" npm: $(npm -v))" && echo " -----" echo "----- -----" echo "----- ENV -----" -echo -n "----- " && echo -n "$(printf "%-10s %-23s" PACKAGES: $PACKAGES)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" ADMINPORT: $ADMINPORT)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" AVAHI: $AVAHI)" && echo " -----" -echo -n "----- " && echo -n "$(printf "%-10s %-23s" ZWAVE: $ZWAVE)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" PACKAGES: $PACKAGES)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" REDIS: $REDIS)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETGID: $SETGID)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETUID: $SETUID)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" USBDEVICES: $USBDEVICES)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" ZWAVE: $ZWAVE)" && echo " -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' From cb1fc55235f206f82909ed6aa9951480a9c75bfa Mon Sep 17 00:00:00 2001 From: Andre Date: Sun, 1 Dec 2019 21:55:09 +0100 Subject: [PATCH 02/11] testing --- amd64/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/amd64/Dockerfile b/amd64/Dockerfile index 32fc010..1da5a9f 100644 --- a/amd64/Dockerfile +++ b/amd64/Dockerfile @@ -77,7 +77,7 @@ ENV ADMINPORT=8081 \ LANGUAGE="de_DE:de" \ LC_ALL="de_DE.UTF-8" \ PACKAGES="vi" \ - REDIS="false" + REDIS="false" \ SETGID=1000 \ SETUID=1000 \ TZ="Europe/Berlin" \ From 4376b6398152629b85cff3e16dc66627e792d637 Mon Sep 17 00:00:00 2001 From: buanet Date: Mon, 2 Dec 2019 11:48:14 +0100 Subject: [PATCH 03/11] testing --- amd64/scripts/iobroker_startup.sh | 65 ++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 23 deletions(-) diff --git a/amd64/scripts/iobroker_startup.sh b/amd64/scripts/iobroker_startup.sh index 6b8407e..f0359a7 100644 --- a/amd64/scripts/iobroker_startup.sh +++ b/amd64/scripts/iobroker_startup.sh @@ -13,7 +13,7 @@ zwave=$ZWAVE # Getting date and time for logging dati=`date '+%Y-%m-%d %H:%M:%S'` -# Header +# Logging header echo ' ' echo "$(printf -- '-%.0s' {1..60})" echo -n "$(printf -- '-%.0s' {1..15})" && echo -n " "$dati" " && echo "$(printf -- '-%.0s' {1..15})" @@ -48,14 +48,24 @@ echo -n "----- " && echo -n "$(printf "%-10s %-23s" ZWAVE: $ZWAVE) echo "$(printf -- '-%.0s' {1..60})" echo ' ' -# Checking and installing additional packages + +# Not in use +# if [ -f /opt/.firstrun ] +# rm -f /opt/.firstrun + + +##### +# STEP 1 - Preparing container +##### echo "$(printf -- '-%.0s' {1..60})" -echo "----- Step 1 of 5: Installing additional packages -----" +echo "----- Step 1 of 5: Preparing container -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' +# Installing additional packages if [ "$packages" != "" ] then + echo "Installing additional packages is set by ENV." echo "The following packages will be installed:" $packages"..." echo $packages > /opt/scripts/.packages sh /opt/scripts/setup_packages.sh > /opt/scripts/setup_packages.log 2>&1 @@ -65,10 +75,26 @@ else fi echo ' ' +# Checking and setting uid/gid +gidold=`cat /etc/group | grep "iobroker:" | cut -d":" -f3` +uidold=`cat /etc/passwd | grep "iobroker:" | cut -d":" -f3` +if [ $gidold != $gid || $uidold != $uid ] +then + echo "Different UID and/ or GID is set by ENV." + echo "Changing UID to "$uid" and GID to "$gid"..." + usermod -u $uid iobroker + groupmod -g $gid iobroker + echo "Done." + echo ' ' +fi + # Change directory for next steps cd /opt/iobroker + +##### # Detecting ioBroker-Installation +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 2 of 5: Detecting ioBroker installation -----" echo "$(printf -- '-%.0s' {1..60})" @@ -91,27 +117,15 @@ else fi echo ' ' + +##### # Checking ioBroker-Installation +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 3 of 5: Checking ioBroker installation -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' -# Checking for first run and set uid/gid -if [ -f /opt/.firstrun ] -then - echo "This is the first run of a new container. Time for some preparation." - echo ' ' - echo "Changing UID to "$uid" and GID to "$gid"..." - usermod -u $uid iobroker - groupmod -g $gid iobroker - rm -f /opt/.firstrun - echo "Done." -else - echo "This is NOT the first run of the container. Some Steps will be skipped." -fi -echo ' ' - # (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts" echo "(Re)Setting folder permissions (This might take a while! Please be patient!)..." chown -R $uid:$gid /opt/iobroker @@ -138,7 +152,10 @@ then echo ' ' fi + +##### # Setting up prerequisites for some ioBroker-adapters +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 4 of 5: Applying special settings -----" echo "$(printf -- '-%.0s' {1..60})" @@ -158,7 +175,7 @@ then echo ' ' fi -# Checking for enabled avahi-daemon +# Checking ENV for AVAHI if [ "$avahi" = "true" ] then echo "Avahi-daemon is activated by ENV." @@ -168,7 +185,7 @@ then echo ' ' fi -# Checking for enabled zwave-support +# Checking ENV for Z-WAVE if [ "$zwave" = "true" ] then echo "Z-Wave is activated by ENV." @@ -178,8 +195,7 @@ then echo ' ' fi -# checking enabled usb-devices - +# checking ENV for USBDEVICES if [ "$usbdevices" != "none" ] then echo "Usb-device-support is activated by ENV." @@ -197,14 +213,17 @@ fi sleep 5 + +##### # Starting ioBroker +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 5 of 5: ioBroker startup -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' echo "Starting ioBroker..." echo ' ' -#gosu iobroker node --trace-warnings node_modules/iobroker.js-controller/controller.js > /opt/iobroker/iobroker.log 2>&1 & + gosu iobroker node node_modules/iobroker.js-controller/controller.js # Preventing container restart by keeping a process alive even if iobroker will be stopped From f6f056d0b33bd5c4a797fa254298508f8b2ce053 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 9 Dec 2019 09:00:02 +0100 Subject: [PATCH 04/11] testing --- amd64/scripts/iobroker_startup.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/amd64/scripts/iobroker_startup.sh b/amd64/scripts/iobroker_startup.sh index f0359a7..028b158 100644 --- a/amd64/scripts/iobroker_startup.sh +++ b/amd64/scripts/iobroker_startup.sh @@ -76,9 +76,7 @@ fi echo ' ' # Checking and setting uid/gid -gidold=`cat /etc/group | grep "iobroker:" | cut -d":" -f3` -uidold=`cat /etc/passwd | grep "iobroker:" | cut -d":" -f3` -if [ $gidold != $gid || $uidold != $uid ] +if [ $(cat /etc/group | grep 'iobroker:' | cut -d':' -f3) != $gid ] || [ $(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3) != $uid ] then echo "Different UID and/ or GID is set by ENV." echo "Changing UID to "$uid" and GID to "$gid"..." From 840e35d922bd9349a8ad09d6968c613c1167c8e7 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 9 Dec 2019 12:03:04 +0100 Subject: [PATCH 05/11] testing --- amd64/scripts/iobroker_startup.sh | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/amd64/scripts/iobroker_startup.sh b/amd64/scripts/iobroker_startup.sh index 028b158..36f6ccb 100644 --- a/amd64/scripts/iobroker_startup.sh +++ b/amd64/scripts/iobroker_startup.sh @@ -83,8 +83,10 @@ then usermod -u $uid iobroker groupmod -g $gid iobroker echo "Done." - echo ' ' +else + echo "There are no changes in UID/ GID needed." fi +echo ' ' # Change directory for next steps cd /opt/iobroker @@ -100,16 +102,16 @@ echo ' ' if [ `ls -1a|wc -l` -lt 3 ] then - echo "There is no data detected in /opt/iobroker. Restoring..." + echo "There is no data detected in /opt/iobroker. Restoring initial ioBroker installation..." tar -xf /opt/initial_iobroker.tar -C / echo "Done." else if [ -f /opt/iobroker/iobroker ] then - echo "Installation of ioBroker detected in /opt/iobroker." + echo "Existing installation of ioBroker detected in /opt/iobroker." else echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!" - echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." + echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." exit 1 fi fi @@ -132,7 +134,7 @@ echo "Done." echo ' ' # Backing up original iobroker-file and changing sudo to gosu -echo "Fixing \"sudo-bug\" by replacing sudo with gosu..." +echo "Fixing \"sudo-bug\" by replacing sudo in iobroker with gosu..." cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak chmod 755 /opt/iobroker/iobroker sed -i 's/sudo -H -u/gosu/g' /opt/iobroker/iobroker @@ -148,6 +150,12 @@ then rm -f /opt/iobroker/.install_host echo 'Done.' echo ' ' +else if [ $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ] + echo "Hostname in ioBroker does not match the hostname of this container." + echo "Updating hostname to " $(hostname)"..." + sh /opt/iobroker/iobroker host $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') + echo 'Done.' + echo ' ' fi @@ -159,14 +167,14 @@ echo "----- Step 4 of 5: Applying special settings -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' -echo "Some adapters have special requirements which can be activated by the use of environment variables." -echo "For more information take a look at readme.md" +echo "Some adapters have special requirements/ settings which can be activated by the use of environment variables." +echo "For more information take a look at readme.md on Github!" echo ' ' # Checking ENV for Adminport -if [ "$adminport" != "8081" ] +if [ "$adminport" != $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') ] then - echo "Adminport is set by ENV." + echo "Adminport set by ENV does not match port configured in ioBroker installation." echo "Setting Adminport to" $adminport"..." iobroker set admin.0 --port $adminport echo 'Done.' From 5319305d0bc7c7baf6ee5bf984e3f94a5b999f1e Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 9 Dec 2019 12:20:50 +0100 Subject: [PATCH 06/11] testing --- amd64/scripts/iobroker_startup.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/amd64/scripts/iobroker_startup.sh b/amd64/scripts/iobroker_startup.sh index 36f6ccb..936170f 100644 --- a/amd64/scripts/iobroker_startup.sh +++ b/amd64/scripts/iobroker_startup.sh @@ -217,6 +217,18 @@ then echo ' ' fi +# Checking ENV for REDIS +if [ "$redis" != "false" ] +then + echo "Connection to Redis is configured by ENV." + echo "Installing prerequisites..." + apt-get update 2>&1> /dev/null && apt-get install -y jq 2>&1> /dev/null && rm -rf /var/lib/apt/lists/* + echo "Setting configuration for Redis in ioBroker..." + # missing + echo "Done." + echo ' ' +fi + sleep 5 From 44de2a1ec5209060024e7b789c413930647229c1 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 9 Dec 2019 14:48:00 +0100 Subject: [PATCH 07/11] testing --- amd64/scripts/iobroker_startup.sh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/amd64/scripts/iobroker_startup.sh b/amd64/scripts/iobroker_startup.sh index 936170f..dfa131c 100644 --- a/amd64/scripts/iobroker_startup.sh +++ b/amd64/scripts/iobroker_startup.sh @@ -150,7 +150,8 @@ then rm -f /opt/iobroker/.install_host echo 'Done.' echo ' ' -else if [ $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ] +elif [ $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ] +then echo "Hostname in ioBroker does not match the hostname of this container." echo "Updating hostname to " $(hostname)"..." sh /opt/iobroker/iobroker host $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') @@ -222,9 +223,13 @@ if [ "$redis" != "false" ] then echo "Connection to Redis is configured by ENV." echo "Installing prerequisites..." - apt-get update 2>&1> /dev/null && apt-get install -y jq 2>&1> /dev/null && rm -rf /var/lib/apt/lists/* - echo "Setting configuration for Redis in ioBroker..." - # missing + apt-get update 2>&1> /dev/null && apt-get install -y jq 2>&1> /dev/null && rm -rf /var/lib/apt/lists/* 2>&1> /dev/null + redisserver=$(echo $redis | sed -E 's/(.*):(.*)/\1/') + redisport=$(echo $redis | sed -E 's/(.*):(.*)/\2/') + echo "Setting configuration for Redis (Server: "$redisserver", Port: "$redisport") in ioBroker..." + cd /opt/iobroker/iobroker-data + jq '.states.type = "redis" | .states.host = "$redisserver" | .states.port = "$redisport"' iobroker.json > iobroker.json.tmp && mv iobroker.json.tmp iobroker.json + cd /opt/iobroker echo "Done." echo ' ' fi From b560dfa84032d9607ecee6b09c1986cd37f6b0b7 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 9 Dec 2019 15:14:39 +0100 Subject: [PATCH 08/11] testing --- amd64/scripts/iobroker_startup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/amd64/scripts/iobroker_startup.sh b/amd64/scripts/iobroker_startup.sh index dfa131c..9805355 100644 --- a/amd64/scripts/iobroker_startup.sh +++ b/amd64/scripts/iobroker_startup.sh @@ -228,7 +228,7 @@ then redisport=$(echo $redis | sed -E 's/(.*):(.*)/\2/') echo "Setting configuration for Redis (Server: "$redisserver", Port: "$redisport") in ioBroker..." cd /opt/iobroker/iobroker-data - jq '.states.type = "redis" | .states.host = "$redisserver" | .states.port = "$redisport"' iobroker.json > iobroker.json.tmp && mv iobroker.json.tmp iobroker.json + jq --arg redisserver "$redisserver" --arg redisport "$redisport" '.states.type = "redis" | .states.host = $redisserver | .states.port = $redisport' iobroker.json > iobroker.json.tmp && mv iobroker.json.tmp iobroker.json cd /opt/iobroker echo "Done." echo ' ' From bc85322275802efd5f75c7a3792442b3145c94f1 Mon Sep 17 00:00:00 2001 From: buanet Date: Tue, 10 Dec 2019 13:27:30 +0100 Subject: [PATCH 09/11] beta preparation --- .VERSION | 2 +- README.md | 40 +++++----- aarch64/Dockerfile | 47 +++++------ aarch64/scripts/iobroker_startup.sh | 119 +++++++++++++++++++--------- armv7hf/Dockerfile | 47 +++++------ armv7hf/scripts/iobroker_startup.sh | 119 +++++++++++++++++++--------- 6 files changed, 235 insertions(+), 139 deletions(-) diff --git a/.VERSION b/.VERSION index ecdba1c..97a50b0 100644 --- a/.VERSION +++ b/.VERSION @@ -1 +1 @@ -v4.0.1beta +v4.0.2beta diff --git a/README.md b/README.md index 7798035..5d1af31 100644 --- a/README.md +++ b/README.md @@ -32,19 +32,20 @@ The following will give a short overview. Since v3 is possible to set some environment variables to configure a new container. -|env|value|description| -|---|---|---| -|PACKAGES|package1 package2 package2|seperateed by whitespace; will install the listed packages on startup
(be paitient, this may take some time!)| -|AVAHI|true|will install and activate avahi-daemon for supporting yahka-adapter| -|LANGUAGE|de_DE:de|following locales are pre-generated: de_DE:de, en_US:en| -|LANG|de_DE.UTF-8|following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| -|LC_ALL|de_DE|following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| -|TZ|Europe/Berlin|all valid Linux-timezones| -|SETUID|1000|for security reasons it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host| -|SETGID|1000|for security reasons it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host| -|ZWAVE|false|will install openzwave to support zwave-adapter| -|ADMINPORT|8081|for setting iobroker adminport (beta feature!)| -|USBDEVICES|none|for automatically setting permissions on mounted devices like "/dev/ttyACM0". For more than one device separate with ";" (beta feature!)| +|env|default|values|description| +|---|---|---|---| +|ADMINPORT|8081|portnumber|Sets ioBroker-adminport on startup (beta)| +|AVAHI|false|true/false|Installs and activates avahi-daemon for supporting yahka-adapter| +|LANG|de_DE.UTF-8|locales|The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| +|LANGUAGE|de_DE:de|locales|The following locales are pre-generated: de_DE:de, en_US:en| +|LC_ALL|de_DE|locales|The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| +|PACKAGES|vi|package1 package2 package2|Installs additional packages to your container, needed by some adapters, packages should be seperated by whitespace| +|REDIS|false|false/hostname:port|Activates redis as states-db on startup, fill with "hostname:port" to set redis connection (beta)| +|SETGID|1000|idnumber|For security reasons it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host| +|SETUID|1000|idnumber|For security reasons it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host| +|TZ|Europe/Berlin|timezone|All valid Linux-timezones| +|USBDEVICES|none|none/device-path|Sets relevant permissions on mounted devices like "/dev/ttyACM0", for more than one device separate with ";" (beta)| +|ZWAVE|false|true/false|will install openzwave to support zwave-adapter| ### Mounting Folder/ Volume @@ -60,11 +61,14 @@ After some issues with permissions related to the use of a dedicated user for io ## Changelog -### v4.0.1beta (2019-11-25) -* added env for iobroker admin port -* added env for usb-devices (setting permissions) -* updateing prerequisites for iobroker installation -* some small codefixes +### v4.0.2beta (2019-12-10) +* added env for activating redis +* enhancements in startupscript and dockerfile +* v4.0.1beta (2019-11-25) + * added env for iobroker admin port + * added env for usb-devices (setting permissions) + * updateing prerequisites for iobroker installation + * some small codefixes ### v4.0.0 (2019-10-25) * v3.1.4beta (2019-10-23) diff --git a/aarch64/Dockerfile b/aarch64/Dockerfile index 4551331..8dc774e 100644 --- a/aarch64/Dockerfile +++ b/aarch64/Dockerfile @@ -12,31 +12,31 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \ curl \ git \ gnupg2 \ - gosu \ - libavahi-compat-libdnssd-dev \ + gosu \ + libavahi-compat-libdnssd-dev \ libcap2-bin \ libpam0g-dev \ libudev-dev \ locales \ - pkg-config \ - procps \ + pkg-config \ + procps \ python \ - python-dev \ - sudo \ + python-dev \ + sudo \ + udev \ unzip \ wget \ && rm -rf /var/lib/apt/lists/* # Install node10 RUN curl -sL https://deb.nodesource.com/setup_10.x | bash \ - && apt-get update && apt-get install -y \ - nodejs \ + && apt-get update && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* # Generating locales RUN sed -i 's/^# *\(de_DE.UTF-8\)/\1/' /etc/locale.gen \ - && sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \ - && locale-gen + && sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \ + && locale-gen # Create scripts directory and copy scripts RUN mkdir -p /opt/scripts/ \ @@ -47,7 +47,7 @@ COPY scripts/setup_avahi.sh setup_avahi.sh COPY scripts/setup_packages.sh setup_packages.sh COPY scripts/setup_zwave.sh setup_zwave.sh RUN chmod +x iobroker_startup.sh \ - && chmod +x setup_avahi.sh \ + && chmod +x setup_avahi.sh \ && chmod +x setup_packages.sh # Install ioBroker @@ -70,18 +70,19 @@ RUN chsh -s /bin/bash iobroker \ && usermod --home /opt/iobroker iobroker # Setting up ENVs -ENV DEBIAN_FRONTEND="teletype" \ - LANG="de_DE.UTF-8" \ - LANGUAGE="de_DE:de" \ - LC_ALL="de_DE.UTF-8" \ - TZ="Europe/Berlin" \ - PACKAGES="vi" \ - ADMINPORT=8081 \ - SETUID=1000 \ - SETGID=1000 \ - AVAHI="false" \ - ZWAVE="false" \ - USBDEVICES="none" +ENV ADMINPORT=8081 \ + AVAHI="false" \ + DEBIAN_FRONTEND="teletype" \ + LANG="de_DE.UTF-8" \ + LANGUAGE="de_DE:de" \ + LC_ALL="de_DE.UTF-8" \ + PACKAGES="vi" \ + REDIS="false" \ + SETGID=1000 \ + SETUID=1000 \ + TZ="Europe/Berlin" \ + USBDEVICES="none" \ + ZWAVE="false" # Run startup-script ENTRYPOINT ["/opt/scripts/iobroker_startup.sh"] diff --git a/aarch64/scripts/iobroker_startup.sh b/aarch64/scripts/iobroker_startup.sh index 4e40f6f..9805355 100644 --- a/aarch64/scripts/iobroker_startup.sh +++ b/aarch64/scripts/iobroker_startup.sh @@ -1,18 +1,19 @@ #!/bin/bash # Reading ENV -packages=$PACKAGES adminport=$ADMINPORT -uid=$SETUID -gid=$SETGID -zwave=$ZWAVE avahi=$AVAHI +gid=$SETGID +packages=$PACKAGES +redis=$REDIS +uid=$SETUID usbdevices=$USBDEVICES +zwave=$ZWAVE # Getting date and time for logging dati=`date '+%Y-%m-%d %H:%M:%S'` -# Header +# Logging header echo ' ' echo "$(printf -- '-%.0s' {1..60})" echo -n "$(printf -- '-%.0s' {1..15})" && echo -n " "$dati" " && echo "$(printf -- '-%.0s' {1..15})" @@ -36,23 +37,35 @@ echo -n "----- " && echo -n "$(printf "%-10s %-23s" node: $(node - echo -n "----- " && echo -n "$(printf "%-10s %-23s" npm: $(npm -v))" && echo " -----" echo "----- -----" echo "----- ENV -----" -echo -n "----- " && echo -n "$(printf "%-10s %-23s" PACKAGES: $PACKAGES)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" ADMINPORT: $ADMINPORT)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" AVAHI: $AVAHI)" && echo " -----" -echo -n "----- " && echo -n "$(printf "%-10s %-23s" ZWAVE: $ZWAVE)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" PACKAGES: $PACKAGES)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" REDIS: $REDIS)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETGID: $SETGID)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETUID: $SETUID)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" USBDEVICES: $USBDEVICES)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" ZWAVE: $ZWAVE)" && echo " -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' -# Checking and installing additional packages + +# Not in use +# if [ -f /opt/.firstrun ] +# rm -f /opt/.firstrun + + +##### +# STEP 1 - Preparing container +##### echo "$(printf -- '-%.0s' {1..60})" -echo "----- Step 1 of 5: Installing additional packages -----" +echo "----- Step 1 of 5: Preparing container -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' +# Installing additional packages if [ "$packages" != "" ] then + echo "Installing additional packages is set by ENV." echo "The following packages will be installed:" $packages"..." echo $packages > /opt/scripts/.packages sh /opt/scripts/setup_packages.sh > /opt/scripts/setup_packages.log 2>&1 @@ -62,10 +75,26 @@ else fi echo ' ' +# Checking and setting uid/gid +if [ $(cat /etc/group | grep 'iobroker:' | cut -d':' -f3) != $gid ] || [ $(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3) != $uid ] +then + echo "Different UID and/ or GID is set by ENV." + echo "Changing UID to "$uid" and GID to "$gid"..." + usermod -u $uid iobroker + groupmod -g $gid iobroker + echo "Done." +else + echo "There are no changes in UID/ GID needed." +fi +echo ' ' + # Change directory for next steps cd /opt/iobroker + +##### # Detecting ioBroker-Installation +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 2 of 5: Detecting ioBroker installation -----" echo "$(printf -- '-%.0s' {1..60})" @@ -73,42 +102,30 @@ echo ' ' if [ `ls -1a|wc -l` -lt 3 ] then - echo "There is no data detected in /opt/iobroker. Restoring..." + echo "There is no data detected in /opt/iobroker. Restoring initial ioBroker installation..." tar -xf /opt/initial_iobroker.tar -C / echo "Done." else if [ -f /opt/iobroker/iobroker ] then - echo "Installation of ioBroker detected in /opt/iobroker." + echo "Existing installation of ioBroker detected in /opt/iobroker." else echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!" - echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." + echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." exit 1 fi fi echo ' ' + +##### # Checking ioBroker-Installation +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 3 of 5: Checking ioBroker installation -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' -# Checking for first run and set uid/gid -if [ -f /opt/.firstrun ] -then - echo "This is the first run of a new container. Time for some preparation." - echo ' ' - echo "Changing UID to "$uid" and GID to "$gid"..." - usermod -u $uid iobroker - groupmod -g $gid iobroker - rm -f /opt/.firstrun - echo "Done." -else - echo "This is NOT the first run of the container. Some Steps will be skipped." -fi -echo ' ' - # (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts" echo "(Re)Setting folder permissions (This might take a while! Please be patient!)..." chown -R $uid:$gid /opt/iobroker @@ -117,7 +134,7 @@ echo "Done." echo ' ' # Backing up original iobroker-file and changing sudo to gosu -echo "Fixing \"sudo-bug\" by replacing sudo with gosu..." +echo "Fixing \"sudo-bug\" by replacing sudo in iobroker with gosu..." cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak chmod 755 /opt/iobroker/iobroker sed -i 's/sudo -H -u/gosu/g' /opt/iobroker/iobroker @@ -133,29 +150,39 @@ then rm -f /opt/iobroker/.install_host echo 'Done.' echo ' ' +elif [ $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ] +then + echo "Hostname in ioBroker does not match the hostname of this container." + echo "Updating hostname to " $(hostname)"..." + sh /opt/iobroker/iobroker host $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') + echo 'Done.' + echo ' ' fi + +##### # Setting up prerequisites for some ioBroker-adapters +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 4 of 5: Applying special settings -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' -echo "Some adapters have special requirements which can be activated by the use of environment variables." -echo "For more information take a look at readme.md" +echo "Some adapters have special requirements/ settings which can be activated by the use of environment variables." +echo "For more information take a look at readme.md on Github!" echo ' ' # Checking ENV for Adminport -if [ "$adminport" != "8081" ] +if [ "$adminport" != $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') ] then - echo "Adminport is set by ENV." + echo "Adminport set by ENV does not match port configured in ioBroker installation." echo "Setting Adminport to" $adminport"..." iobroker set admin.0 --port $adminport echo 'Done.' echo ' ' fi -# Checking for enabled avahi-daemon +# Checking ENV for AVAHI if [ "$avahi" = "true" ] then echo "Avahi-daemon is activated by ENV." @@ -165,7 +192,7 @@ then echo ' ' fi -# Checking for enabled zwave-support +# Checking ENV for Z-WAVE if [ "$zwave" = "true" ] then echo "Z-Wave is activated by ENV." @@ -175,8 +202,7 @@ then echo ' ' fi -# checking enabled usb-devices - +# checking ENV for USBDEVICES if [ "$usbdevices" != "none" ] then echo "Usb-device-support is activated by ENV." @@ -192,16 +218,35 @@ then echo ' ' fi +# Checking ENV for REDIS +if [ "$redis" != "false" ] +then + echo "Connection to Redis is configured by ENV." + echo "Installing prerequisites..." + apt-get update 2>&1> /dev/null && apt-get install -y jq 2>&1> /dev/null && rm -rf /var/lib/apt/lists/* 2>&1> /dev/null + redisserver=$(echo $redis | sed -E 's/(.*):(.*)/\1/') + redisport=$(echo $redis | sed -E 's/(.*):(.*)/\2/') + echo "Setting configuration for Redis (Server: "$redisserver", Port: "$redisport") in ioBroker..." + cd /opt/iobroker/iobroker-data + jq --arg redisserver "$redisserver" --arg redisport "$redisport" '.states.type = "redis" | .states.host = $redisserver | .states.port = $redisport' iobroker.json > iobroker.json.tmp && mv iobroker.json.tmp iobroker.json + cd /opt/iobroker + echo "Done." + echo ' ' +fi + sleep 5 + +##### # Starting ioBroker +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 5 of 5: ioBroker startup -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' echo "Starting ioBroker..." echo ' ' -#gosu iobroker node --trace-warnings node_modules/iobroker.js-controller/controller.js > /opt/iobroker/iobroker.log 2>&1 & + gosu iobroker node node_modules/iobroker.js-controller/controller.js # Preventing container restart by keeping a process alive even if iobroker will be stopped diff --git a/armv7hf/Dockerfile b/armv7hf/Dockerfile index 120093a..83e3f4a 100644 --- a/armv7hf/Dockerfile +++ b/armv7hf/Dockerfile @@ -12,31 +12,31 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \ curl \ git \ gnupg2 \ - gosu \ - libavahi-compat-libdnssd-dev \ + gosu \ + libavahi-compat-libdnssd-dev \ libcap2-bin \ libpam0g-dev \ libudev-dev \ locales \ - pkg-config \ - procps \ + pkg-config \ + procps \ python \ - python-dev \ - sudo \ + python-dev \ + sudo \ + udev \ unzip \ wget \ && rm -rf /var/lib/apt/lists/* # Install node10 RUN curl -sL https://deb.nodesource.com/setup_10.x | bash \ - && apt-get update && apt-get install -y \ - nodejs \ + && apt-get update && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* # Generating locales RUN sed -i 's/^# *\(de_DE.UTF-8\)/\1/' /etc/locale.gen \ - && sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \ - && locale-gen + && sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \ + && locale-gen # Create scripts directory and copy scripts RUN mkdir -p /opt/scripts/ \ @@ -47,7 +47,7 @@ COPY scripts/setup_avahi.sh setup_avahi.sh COPY scripts/setup_packages.sh setup_packages.sh COPY scripts/setup_zwave.sh setup_zwave.sh RUN chmod +x iobroker_startup.sh \ - && chmod +x setup_avahi.sh \ + && chmod +x setup_avahi.sh \ && chmod +x setup_packages.sh # Install ioBroker @@ -70,18 +70,19 @@ RUN chsh -s /bin/bash iobroker \ && usermod --home /opt/iobroker iobroker # Setting up ENVs -ENV DEBIAN_FRONTEND="teletype" \ - LANG="de_DE.UTF-8" \ - LANGUAGE="de_DE:de" \ - LC_ALL="de_DE.UTF-8" \ - TZ="Europe/Berlin" \ - PACKAGES="vi" \ - ADMINPORT=8081 \ - SETUID=1000 \ - SETGID=1000 \ - AVAHI="false" \ - ZWAVE="false" \ - USBDEVICES="none" +ENV ADMINPORT=8081 \ + AVAHI="false" \ + DEBIAN_FRONTEND="teletype" \ + LANG="de_DE.UTF-8" \ + LANGUAGE="de_DE:de" \ + LC_ALL="de_DE.UTF-8" \ + PACKAGES="vi" \ + REDIS="false" \ + SETGID=1000 \ + SETUID=1000 \ + TZ="Europe/Berlin" \ + USBDEVICES="none" \ + ZWAVE="false" # Run startup-script ENTRYPOINT ["/opt/scripts/iobroker_startup.sh"] diff --git a/armv7hf/scripts/iobroker_startup.sh b/armv7hf/scripts/iobroker_startup.sh index 4e40f6f..9805355 100644 --- a/armv7hf/scripts/iobroker_startup.sh +++ b/armv7hf/scripts/iobroker_startup.sh @@ -1,18 +1,19 @@ #!/bin/bash # Reading ENV -packages=$PACKAGES adminport=$ADMINPORT -uid=$SETUID -gid=$SETGID -zwave=$ZWAVE avahi=$AVAHI +gid=$SETGID +packages=$PACKAGES +redis=$REDIS +uid=$SETUID usbdevices=$USBDEVICES +zwave=$ZWAVE # Getting date and time for logging dati=`date '+%Y-%m-%d %H:%M:%S'` -# Header +# Logging header echo ' ' echo "$(printf -- '-%.0s' {1..60})" echo -n "$(printf -- '-%.0s' {1..15})" && echo -n " "$dati" " && echo "$(printf -- '-%.0s' {1..15})" @@ -36,23 +37,35 @@ echo -n "----- " && echo -n "$(printf "%-10s %-23s" node: $(node - echo -n "----- " && echo -n "$(printf "%-10s %-23s" npm: $(npm -v))" && echo " -----" echo "----- -----" echo "----- ENV -----" -echo -n "----- " && echo -n "$(printf "%-10s %-23s" PACKAGES: $PACKAGES)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" ADMINPORT: $ADMINPORT)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" AVAHI: $AVAHI)" && echo " -----" -echo -n "----- " && echo -n "$(printf "%-10s %-23s" ZWAVE: $ZWAVE)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" PACKAGES: $PACKAGES)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" REDIS: $REDIS)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETGID: $SETGID)" && echo " -----" echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETUID: $SETUID)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" USBDEVICES: $USBDEVICES)" && echo " -----" +echo -n "----- " && echo -n "$(printf "%-10s %-23s" ZWAVE: $ZWAVE)" && echo " -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' -# Checking and installing additional packages + +# Not in use +# if [ -f /opt/.firstrun ] +# rm -f /opt/.firstrun + + +##### +# STEP 1 - Preparing container +##### echo "$(printf -- '-%.0s' {1..60})" -echo "----- Step 1 of 5: Installing additional packages -----" +echo "----- Step 1 of 5: Preparing container -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' +# Installing additional packages if [ "$packages" != "" ] then + echo "Installing additional packages is set by ENV." echo "The following packages will be installed:" $packages"..." echo $packages > /opt/scripts/.packages sh /opt/scripts/setup_packages.sh > /opt/scripts/setup_packages.log 2>&1 @@ -62,10 +75,26 @@ else fi echo ' ' +# Checking and setting uid/gid +if [ $(cat /etc/group | grep 'iobroker:' | cut -d':' -f3) != $gid ] || [ $(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3) != $uid ] +then + echo "Different UID and/ or GID is set by ENV." + echo "Changing UID to "$uid" and GID to "$gid"..." + usermod -u $uid iobroker + groupmod -g $gid iobroker + echo "Done." +else + echo "There are no changes in UID/ GID needed." +fi +echo ' ' + # Change directory for next steps cd /opt/iobroker + +##### # Detecting ioBroker-Installation +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 2 of 5: Detecting ioBroker installation -----" echo "$(printf -- '-%.0s' {1..60})" @@ -73,42 +102,30 @@ echo ' ' if [ `ls -1a|wc -l` -lt 3 ] then - echo "There is no data detected in /opt/iobroker. Restoring..." + echo "There is no data detected in /opt/iobroker. Restoring initial ioBroker installation..." tar -xf /opt/initial_iobroker.tar -C / echo "Done." else if [ -f /opt/iobroker/iobroker ] then - echo "Installation of ioBroker detected in /opt/iobroker." + echo "Existing installation of ioBroker detected in /opt/iobroker." else echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!" - echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." + echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." exit 1 fi fi echo ' ' + +##### # Checking ioBroker-Installation +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 3 of 5: Checking ioBroker installation -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' -# Checking for first run and set uid/gid -if [ -f /opt/.firstrun ] -then - echo "This is the first run of a new container. Time for some preparation." - echo ' ' - echo "Changing UID to "$uid" and GID to "$gid"..." - usermod -u $uid iobroker - groupmod -g $gid iobroker - rm -f /opt/.firstrun - echo "Done." -else - echo "This is NOT the first run of the container. Some Steps will be skipped." -fi -echo ' ' - # (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts" echo "(Re)Setting folder permissions (This might take a while! Please be patient!)..." chown -R $uid:$gid /opt/iobroker @@ -117,7 +134,7 @@ echo "Done." echo ' ' # Backing up original iobroker-file and changing sudo to gosu -echo "Fixing \"sudo-bug\" by replacing sudo with gosu..." +echo "Fixing \"sudo-bug\" by replacing sudo in iobroker with gosu..." cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak chmod 755 /opt/iobroker/iobroker sed -i 's/sudo -H -u/gosu/g' /opt/iobroker/iobroker @@ -133,29 +150,39 @@ then rm -f /opt/iobroker/.install_host echo 'Done.' echo ' ' +elif [ $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ] +then + echo "Hostname in ioBroker does not match the hostname of this container." + echo "Updating hostname to " $(hostname)"..." + sh /opt/iobroker/iobroker host $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') + echo 'Done.' + echo ' ' fi + +##### # Setting up prerequisites for some ioBroker-adapters +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 4 of 5: Applying special settings -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' -echo "Some adapters have special requirements which can be activated by the use of environment variables." -echo "For more information take a look at readme.md" +echo "Some adapters have special requirements/ settings which can be activated by the use of environment variables." +echo "For more information take a look at readme.md on Github!" echo ' ' # Checking ENV for Adminport -if [ "$adminport" != "8081" ] +if [ "$adminport" != $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') ] then - echo "Adminport is set by ENV." + echo "Adminport set by ENV does not match port configured in ioBroker installation." echo "Setting Adminport to" $adminport"..." iobroker set admin.0 --port $adminport echo 'Done.' echo ' ' fi -# Checking for enabled avahi-daemon +# Checking ENV for AVAHI if [ "$avahi" = "true" ] then echo "Avahi-daemon is activated by ENV." @@ -165,7 +192,7 @@ then echo ' ' fi -# Checking for enabled zwave-support +# Checking ENV for Z-WAVE if [ "$zwave" = "true" ] then echo "Z-Wave is activated by ENV." @@ -175,8 +202,7 @@ then echo ' ' fi -# checking enabled usb-devices - +# checking ENV for USBDEVICES if [ "$usbdevices" != "none" ] then echo "Usb-device-support is activated by ENV." @@ -192,16 +218,35 @@ then echo ' ' fi +# Checking ENV for REDIS +if [ "$redis" != "false" ] +then + echo "Connection to Redis is configured by ENV." + echo "Installing prerequisites..." + apt-get update 2>&1> /dev/null && apt-get install -y jq 2>&1> /dev/null && rm -rf /var/lib/apt/lists/* 2>&1> /dev/null + redisserver=$(echo $redis | sed -E 's/(.*):(.*)/\1/') + redisport=$(echo $redis | sed -E 's/(.*):(.*)/\2/') + echo "Setting configuration for Redis (Server: "$redisserver", Port: "$redisport") in ioBroker..." + cd /opt/iobroker/iobroker-data + jq --arg redisserver "$redisserver" --arg redisport "$redisport" '.states.type = "redis" | .states.host = $redisserver | .states.port = $redisport' iobroker.json > iobroker.json.tmp && mv iobroker.json.tmp iobroker.json + cd /opt/iobroker + echo "Done." + echo ' ' +fi + sleep 5 + +##### # Starting ioBroker +##### echo "$(printf -- '-%.0s' {1..60})" echo "----- Step 5 of 5: ioBroker startup -----" echo "$(printf -- '-%.0s' {1..60})" echo ' ' echo "Starting ioBroker..." echo ' ' -#gosu iobroker node --trace-warnings node_modules/iobroker.js-controller/controller.js > /opt/iobroker/iobroker.log 2>&1 & + gosu iobroker node node_modules/iobroker.js-controller/controller.js # Preventing container restart by keeping a process alive even if iobroker will be stopped From 027e67747144442dc1135f095d3ad169e6f93990 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 12 Dec 2019 07:37:33 +0100 Subject: [PATCH 10/11] Update README.md --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 5d1af31..0cb14ea 100644 --- a/README.md +++ b/README.md @@ -32,20 +32,20 @@ The following will give a short overview. Since v3 is possible to set some environment variables to configure a new container. -|env|default|values|description| -|---|---|---|---| -|ADMINPORT|8081|portnumber|Sets ioBroker-adminport on startup (beta)| -|AVAHI|false|true/false|Installs and activates avahi-daemon for supporting yahka-adapter| -|LANG|de_DE.UTF-8|locales|The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| -|LANGUAGE|de_DE:de|locales|The following locales are pre-generated: de_DE:de, en_US:en| -|LC_ALL|de_DE|locales|The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| -|PACKAGES|vi|package1 package2 package2|Installs additional packages to your container, needed by some adapters, packages should be seperated by whitespace| -|REDIS|false|false/hostname:port|Activates redis as states-db on startup, fill with "hostname:port" to set redis connection (beta)| -|SETGID|1000|idnumber|For security reasons it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host| -|SETUID|1000|idnumber|For security reasons it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host| -|TZ|Europe/Berlin|timezone|All valid Linux-timezones| -|USBDEVICES|none|none/device-path|Sets relevant permissions on mounted devices like "/dev/ttyACM0", for more than one device separate with ";" (beta)| -|ZWAVE|false|true/false|will install openzwave to support zwave-adapter| +|env|default|description| +|---|---|---| +|ADMINPORT|8081|Sets ioBroker-adminport on startup (beta)| +|AVAHI|false|Installs and activates avahi-daemon for supporting yahka-adapter, can be "true" or "false"| +|LANG|de_DE.UTF-8|The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| +|LANGUAGE|de_DE:de|The following locales are pre-generated: de_DE:de, en_US:en| +|LC_ALL|de_DE|The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| +|PACKAGES|vi|Installs additional packages to your container, needed by some adapters, packages should be seperated by whitespace like "package1 package2 package3"| +|REDIS|false|Activates redis as states-db on startup, fill with "hostname:port" to set redis connection otherwise use "false"(beta)| +|SETGID|1000|For security reasons it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host| +|SETUID|1000|For security reasons it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host| +|TZ|Europe/Berlin|All valid Linux-timezones| +|USBDEVICES|none|Sets relevant permissions on mounted devices like "/dev/ttyACM0", for more than one device separate with ";" like "/dev/ttyACM0;/dev/ttyACM01" (beta)| +|ZWAVE|false|Will install openzwave to support zwave-adapter, can be "true" or "false"| ### Mounting Folder/ Volume From e270a46ee707a79f3161f79e9d4ed257b9990e86 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 12 Dec 2019 07:39:42 +0100 Subject: [PATCH 11/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0cb14ea..febfbff 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Since v3 is possible to set some environment variables to configure a new contai |---|---|---| |ADMINPORT|8081|Sets ioBroker-adminport on startup (beta)| |AVAHI|false|Installs and activates avahi-daemon for supporting yahka-adapter, can be "true" or "false"| -|LANG|de_DE.UTF-8|The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| +|LANG|de_DE.UTF‑8|The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| |LANGUAGE|de_DE:de|The following locales are pre-generated: de_DE:de, en_US:en| |LC_ALL|de_DE|The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8| |PACKAGES|vi|Installs additional packages to your container, needed by some adapters, packages should be seperated by whitespace like "package1 package2 package3"|