From 474012f3e82795c0040ad6b7b26546af0e42958a Mon Sep 17 00:00:00 2001 From: buanet Date: Mon, 19 Sep 2022 18:27:36 +0200 Subject: [PATCH 01/11] testing strict mode for iobroker_startup.sh --- .VERSION | 2 +- CHANGELOG.md | 4 + debian/scripts/iobroker_startup.sh | 121 +++++++++++++++-------------- 3 files changed, 68 insertions(+), 59 deletions(-) diff --git a/.VERSION b/.VERSION index 50ced9c..1038974 100644 --- a/.VERSION +++ b/.VERSION @@ -1 +1 @@ -v7.0.1 \ No newline at end of file +v7.1.0-beta.1 \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 906ebf6..aa6ed72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## Changelog +### v7.1.0-beta.1 (coming soon) +* testing strict mode for iobroker-startup.sh +* fixing "unary operator expected" error + ### v7.0.1 (05.07.2022) * backitup restore patch diff --git a/debian/scripts/iobroker_startup.sh b/debian/scripts/iobroker_startup.sh index 950e684..97534c0 100644 --- a/debian/scripts/iobroker_startup.sh +++ b/debian/scripts/iobroker_startup.sh @@ -1,9 +1,13 @@ -#!/bin/bash +#!/usr/bin/env bash + +# bash strict mode +set -euo pipefail # Setting healthcheck status to "starting" echo 'starting' > /opt/scripts/.docker_config/.healthcheck # Reading ENV +set +u adminport=$IOB_ADMINPORT avahi=$AVAHI multihost=$IOB_MULTIHOST @@ -19,6 +23,7 @@ statesdbport=$IOB_STATESDB_PORT statesdbtype=$IOB_STATESDB_TYPE usbdevices=$USBDEVICES zwave=$ZWAVE +set -u pkill_timeout=10 # timeout for iobroker shutdown in seconds @@ -53,21 +58,21 @@ echo -n "----- " && echo -n "$(printf "%-20s %-28s" node: $(n echo -n "----- " && echo -n "$(printf "%-20s %-28s" npm: $(npm -v))" && echo " -----" echo "----- -----" echo "----- ENV -----" -if [ "$avahi" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" AVAHI: $avahi)" && echo " -----"; fi -if [ "$adminport" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_ADMINPORT: $adminport)" && echo " -----"; fi -if [ "$multihost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_MULTIHOST: $multihost)" && echo " -----"; fi -if [ "$objectsdbhost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_HOST: $objectsdbhost)" && echo " -----"; fi -if [ "$objectsdbport" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_PORT: $objectsdbport)" && echo " -----"; fi -if [ "$objectsdbtype" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_TYPE: $objectsdbtype)" && echo " -----"; fi -if [ "$statesdbhost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_HOST: $statesdbhost)" && echo " -----"; fi -if [ "$statesdbport" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_PORT: $statesdbport)" && echo " -----"; fi -if [ "$statesdbtype" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_TYPE: $statesdbtype)" && echo " -----"; fi -if [ "$offlinemode" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" OFFLINE_MODE: $offlinemode)" && echo " -----"; fi -if [ "$packages" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PACKAGES: "$packages")" && echo " -----"; fi -if [ "$setgid" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETGID: $setgid)" && echo " -----"; fi -if [ "$setuid" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETUID: $setuid)" && echo " -----"; fi -if [ "$usbdevices" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" USBDEVICES: $usbdevices)" && echo " -----"; fi -if [ "$zwave" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" ZWAVE: $zwave)" && echo " -----"; fi +if [[ "$avahi" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" AVAHI: $avahi)" && echo " -----"; fi +if [[ "$adminport" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_ADMINPORT: $adminport)" && echo " -----"; fi +if [[ "$multihost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_MULTIHOST: $multihost)" && echo " -----"; fi +if [[ "$objectsdbhost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_HOST: $objectsdbhost)" && echo " -----"; fi +if [[ "$objectsdbport" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_PORT: $objectsdbport)" && echo " -----"; fi +if [[ "$objectsdbtype" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_TYPE: $objectsdbtype)" && echo " -----"; fi +if [[ "$statesdbhost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_HOST: $statesdbhost)" && echo " -----"; fi +if [[ "$statesdbport" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_PORT: $statesdbport)" && echo " -----"; fi +if [[ "$statesdbtype" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_TYPE: $statesdbtype)" && echo " -----"; fi +if [[ "$offlinemode" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" OFFLINE_MODE: $offlinemode)" && echo " -----"; fi +if [[ "$packages" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PACKAGES: "$packages")" && echo " -----"; fi +if [[ "$setgid" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETGID: $setgid)" && echo " -----"; fi +if [[ "$setuid" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETUID: $setuid)" && echo " -----"; fi +if [[ "$usbdevices" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" USBDEVICES: $usbdevices)" && echo " -----"; fi +if [[ "$zwave" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" ZWAVE: $zwave)" && echo " -----"; fi echo "$(printf -- '-%.0s' {1..80})" echo ' ' @@ -80,9 +85,9 @@ echo "$(printf -- '-%.0s' {1..80})" echo ' ' # Actions running on first start only -if [ -f /opt/.firstrun ]; then +if [[ -f /opt/.firstrun ]]; then # Updating Linux packages - if [ "$offlinemode" = "true" ]; then + if [[ "$offlinemode" = "true" ]]; then echo 'Offline mode is activated by ENV. Skipping Linux package updates on first run.' echo ' ' else @@ -104,7 +109,7 @@ else fi # Installing packages from ENV -if [ "$packages" != "" ] && [ "$offlinemode" = "true" ]; then +if [[ "$packages" != "" ]] && [[ "$offlinemode" = "true" ]]; then echo 'Installing additional packages is set by ENV but offline mode is activated!' echo 'Skipping Linux packages installation.' echo ' ' @@ -118,7 +123,7 @@ else fi # Setting UID and/ or GID -if [ $(cat /etc/group | grep 'iobroker:' | cut -d':' -f3) != $setgid ] || [ $(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3) != $setuid ]; then +if [[ $(cat /etc/group | grep 'iobroker:' | cut -d':' -f3) != $setgid ]] || [[ $(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3) != $setuid ]]; then echo "Different UID and/ or GID is set by ENV." echo -n "Changing UID to "$setuid" and GID to "$setgid"... " usermod -u $setuid iobroker @@ -138,18 +143,18 @@ echo "----- Step 2 of 5: Detecting ioBroker installation echo "$(printf -- '-%.0s' {1..80})" echo ' ' -if [ `find /opt/iobroker -type f | wc -l` -lt 1 ] +if [[ `find /opt/iobroker -type f | wc -l` -lt 1 ]] then echo "There is no data detected in /opt/iobroker." echo -n "Restoring initial ioBroker installation... " tar -xf /opt/initial_iobroker.tar -C / echo 'Done.' -elif [ -f /opt/iobroker/iobroker ] +elif [[ -f /opt/iobroker/iobroker ]] then echo "Existing installation of ioBroker detected in /opt/iobroker." -elif [ $(ls *_backupiobroker.tar.gz 2> /dev/null | wc -l) != "0" ] && [ $(tar -ztvf /opt/iobroker/*_backupiobroker.tar.gz "backup/backup.json" 2> /dev/null | wc -l) != "0" ] +elif [[ $(ls *_backupiobroker.tar.gz 2> /dev/null | wc -l) != "0" ]] && [[ $(tar -ztvf /opt/iobroker/*_backupiobroker.tar.gz "backup/backup.json" 2> /dev/null | wc -l) != "0" ]] then - if [ "$multihost" = "slave" ] + if [[ "$multihost" = "slave" ]] then echo "IoBroker backup file detected in /opt/iobroker. But Multihost is set to \"slave\"." echo "Restoring a backup is not supported on Multihost slaves. Please check configuration and start over." @@ -209,7 +214,7 @@ echo 'Done.' echo ' ' # checking hostname in ioBroker to match container hostname -if [ $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ] && [ "$multihost" != "slave" ] +if [[ $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ]] && [[ "$multihost" != "slave" ]] then echo "Hostname in ioBroker does not match the hostname of this container." echo -n "Updating hostname to " $(hostname)"... " @@ -231,9 +236,9 @@ echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.d echo ' ' # Checking ENV for Adminport -if [ "$adminport" != "" ] +if [[ "$adminport" != "" ]] then - if [ "$adminport" != $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') ] + if [[ "$adminport" != $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') ]] then echo "Adminport set by ENV does not match port configured in ioBroker installation." echo -n "Setting Adminport to \""$adminport"\"... " @@ -244,10 +249,10 @@ then fi # Checking ENV for AVAHI -if [ "$avahi" = "true" ] && [ "$offlinemode" = "true" ]; then +if [[ "$avahi" = "true" ]] && [[ "$offlinemode" = "true" ]]; then echo 'Avahi-daemon is activated by ENV but offline mode is activated!' echo 'Skipping Avahi daemon setup.' -elif [ "$avahi" = "true" ]; then +elif [[ "$avahi" = "true" ]]; then echo 'Avahi-daemon is activated by ENV.' echo "Running setup script..." chmod 755 /opt/scripts/setup_avahi.sh @@ -257,10 +262,10 @@ elif [ "$avahi" = "true" ]; then fi # Checking ENV for Z-WAVE -if [ "$zwave" = "true" ] && [ "$offlinemode" = "true" ]; then +if [[ "$zwave" = "true" ]] && [[ "$offlinemode" = "true" ]]; then echo 'Z-Wave is activated by ENV but offline mode is activated!' echo 'Skipping Z-Wave setup.' -elif [ "$zwave" = "true" ]; then +elif [[ "$zwave" = "true" ]]; then echo "Z-Wave is activated by ENV." echo "Running setup script..." chmod 755 /opt/scripts/setup_zwave.sh @@ -270,7 +275,7 @@ elif [ "$zwave" = "true" ]; then fi # checking ENV for USBDEVICES -if [ "$usbdevices" != "" ] && [ "$usbdevices" != "none" ]; then +if [[ "$usbdevices" != "" ]] && [[ "$usbdevices" != "none" ]]; then echo "Usb-device-support is activated by ENV." IFS=';' read -ra devicearray <<< "$usbdevices" for i in "${devicearray[@]}" @@ -284,37 +289,37 @@ if [ "$usbdevices" != "" ] && [ "$usbdevices" != "none" ]; then fi # Checking ENV for multihost setup -if [ "$multihost" != "" ] +if [[ "$multihost" != "" ]] then echo "Checking multihost setup..." # Configuring objects db host - if [ "$multihost" = "master" ] && [ "$objectsdbtype" = "" ] && [ "$objectsdbhost" = "" ] && [ "$objectsdbport" = "" ] + if [[ "$multihost" = "master" ]] && [[ "$objectsdbtype" = "" ]] && [[ "$objectsdbhost" = "" ]] && [[ "$objectsdbport" = "" ]] then echo "Multihost is set as \"master\" by ENV and no external objects db is set." echo -n "Setting host of objects db to \"0.0.0.0\" to allow external communication... " jq --arg objectsdbhost "0.0.0.0" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json echo 'Done.' - elif [ "$multihost" = "master" ] && [ "$objectsdbhost" = "127.0.0.1" ] + elif [[ "$multihost" = "master" ]] && [[ "$objectsdbhost" = "127.0.0.1" ]] then echo "Multihost is set as \"master\" by ENV. But objects db host is set to \"127.0.0.1\" by ENV too." echo "This configuration will not allow slaves to connect the objects db! Please change or remove ENV \"IOB_OBJECTSDB_HOST\" and start over!" echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 - elif [ "$multihost" = "master" ] && [ "$objectsdbtype" != "" ] && [ "$objectsdbhost" != "" ] && [ "$objectsdbport" != "" ] + elif [[ "$multihost" = "master" ]] && [[ "$objectsdbtype" != "" ]] && [[ "$objectsdbhost" != "" ]] && [[ "$objectsdbport" != "" ]] then echo "Multihost is set as \"master\" by ENV and external objects db is set." - elif ([ "$multihost" = "slave" ] && [ "$objectsdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbport" = "" ]) + elif ([[ "$multihost" = "slave" ]] && [[ "$objectsdbtype" = "" ]]) || ([[ "$multihost" = "slave" ]] && [[ "$objectsdbhost" = "" ]]) || ([[ "$multihost" = "slave" ]] && [[ "$objectsdbport" = "" ]]) then echo "Multihost is set as \"slave\" by ENV. But no external objects db is set." echo "You have to configure ENVs \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" to connect to a maser objects db." echo "Please check your settings and start over." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 - elif [ "$multihost" = "slave" ] && [ "$objectsdbtype" != "" ] && [ "$objectsdbhost" != "" ] && [ "$objectsdbport" != "" ] + elif [[ "$multihost" = "slave" ]] && [[ "$objectsdbtype" != "" ]] && [[ "$objectsdbhost" != "" ]] && [[ "$objectsdbport" != "" ]] then echo "Multihost is set as \"slave\" by ENV and external objects db is set." - elif [ "$multihost" != "" ] + elif [[ "$multihost" != "" ]] then echo "Multihost is set but it seems like some configuration is missing." echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" correctly and start over." @@ -323,33 +328,33 @@ then fi # Configuring states db host - if [ "$multihost" = "master" ] && [ "$statesdbtype" = "" ] && [ "$statesdbhost" = "" ] && [ "$statesdbport" = "" ] + if [[ "$multihost" = "master" ]] && [[ "$statesdbtype" = "" ]] && [[ "$statesdbhost" = "" ]] && [[ "$statesdbport" = "" ]] then echo "Multihost is set as \"master\" by ENV and no external states db is set." echo -n "Setting host of states db to \"0.0.0.0\" to allow external communication... " jq --arg statesdbhost "0.0.0.0" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json echo 'Done.' - elif [ "$multihost" = "master" ] && [ "$statesdbhost" = "127.0.0.1" ] + elif [[ "$multihost" = "master" ]] && [[ "$statesdbhost" = "127.0.0.1" ]] then echo "Multihost is set as \"master\" by ENV. But states db host is set to \"127.0.0.1\" by ENV too." echo "This configuration will not work! Please change or remove ENV \"IOB_STATESDB_HOST\" and start over!" echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 - elif [ "$multihost" = "master" ] && [ "$statesdbtype" != "" ] && [ "$statesdbhost" != "" ] && [ "$statesdbport" != "" ] + elif [[ "$multihost" = "master" ]] && [[ "$statesdbtype" != "" ]] && [[ "$statesdbhost" != "" ]] && [[ "$statesdbport" != "" ]] then echo "Multihost is set as \"master\" by ENV and external states db is set." - elif ([ "$multihost" = "slave" ] && [ "$statesdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbport" = "" ]) + elif ([[ "$multihost" = "slave" ]] && [[ "$statesdbtype" = "" ]]) || ([[ "$multihost" = "slave" ]] && [[ "$statesdbhost" = "" ]]) || ([[ "$multihost" = "slave" ]] && [[ "$statesdbport" = "" ]]) then echo "Multihost is set as \"slave\" by ENV. But no external states db is set." echo "You have to configure ENVs \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESDB_PORT\" to connect to a maser states db." echo "Please check your settings and start over." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 - elif [ "$multihost" = "slave" ] && [ "$statesdbtype" != "" ] && [ "$statesdbhost" != "" ] && [ "$statesdbport" != "" ] + elif [[ "$multihost" = "slave" ]] && [[ "$statesdbtype" != "" ]] && [[ "$statesdbhost" != "" ]] && [[ "$statesdbport" != "" ]] then echo "Multihost is set as \"slave\" by ENV and external states db is set." - elif [ "$multihost" != "" ] + elif [[ "$multihost" != "" ]] then echo "Multihost is set but it seems like some configuration is missing." echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESTDB_PORT\" correctly and start over." @@ -361,10 +366,10 @@ then fi # Checking ENVs for custom setup of objects db -if [ "$objectsdbtype" != "" ] || [ "$objectsdbhost" != "" ] || [ "$objectsdbport" != "" ] +if [[ "$objectsdbtype" != "" ]] || [[ "$objectsdbhost" != "" ]] || [[ "$objectsdbport" != "" ]] then echo "Checking custom settings for objects db..." - if [ "$objectsdbtype" != $(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json) ] + if [[ "$objectsdbtype" != $(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json) ]] then echo "IOB_OBJECTSDB_TYPE is set and value is different from detected ioBroker installation." echo -n "Setting type of objects db to \""$objectsdbtype"\"... " @@ -374,7 +379,7 @@ then else echo "IOB_OBJECTSDB_TYPE is set and value meets detected ioBroker installation." fi - if [ "$objectsdbhost" != $(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json) ] + if [[ "$objectsdbhost" != $(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json) ]] then echo "IOB_OBJECTSDB_HOST is set and value is different from detected ioBroker installation." echo -n "Setting host of objects db to \""$objectsdbhost"\"... " @@ -384,7 +389,7 @@ then else echo "IOB_OBJECTSDB_HOST is set and value meets detected ioBroker installation." fi - if [ "$objectsdbport" != $(jq -r '.objects.port' /opt/iobroker/iobroker-data/iobroker.json) ] + if [[ "$objectsdbport" != $(jq -r '.objects.port' /opt/iobroker/iobroker-data/iobroker.json) ]] then echo "IOB_OBJECTSDB_PORT is set and value is different from detected ioBroker installation." echo -n "Setting port of objects db to \""$objectsdbport"\"... " @@ -399,10 +404,10 @@ then fi # Checking ENVs for custom setup of states db -if [ "$statesdbtype" != "" ] || [ "$statesdbhost" != "" ] || [ "$statesdbport" != "" ] +if [[ "$statesdbtype" != "" ]] || [[ "$statesdbhost" != "" ]] || [[ "$statesdbport" != "" ]] then echo "Checking custom settings for states db..." - if [ "$statesdbtype" != $(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json) ] + if [[ "$statesdbtype" != $(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json) ]] then echo "IOB_STATESDB_TYPE is set and value is different from detected ioBroker installation." echo -n "Setting type of states db to \""$statesdbtype"\"... " @@ -412,7 +417,7 @@ then else echo "IOB_STATESDB_TYPE is set and value meets detected ioBroker installation." fi - if [ "$statesdbhost" != $(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json) ] + if [[ "$statesdbhost" != $(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json) ]] then echo "IOB_STATESDB_HOST is set and value is different from detected ioBroker installation." echo -n "Setting host of states db to \""$statesdbhost"\"... " @@ -422,7 +427,7 @@ then else echo "IOB_STATESDB_HOST is set and value meets detected ioBroker installation." fi - if [ "$statesdbport" != $(jq -r '.states.port' /opt/iobroker/iobroker-data/iobroker.json) ] + if [[ "$statesdbport" != $(jq -r '.states.port' /opt/iobroker/iobroker-data/iobroker.json) ]] then echo "IOB_STATESDB_PORT is set and value is different from detected ioBroker installation." echo -n "Setting port of states db to \""$statesdbport"\"... " @@ -437,7 +442,7 @@ then fi # Checking for Userscripts in /opt/userscripts -if [ `find /opt/userscripts -type f | wc -l` -lt 1 ] +if [[ `find /opt/userscripts -type f | wc -l` -lt 1 ]] then echo -n "There is no data detected in /opt/userscripts. Restoring exapmple userscripts... " tar -xf /opt/initial_userscripts.tar -C / @@ -445,9 +450,9 @@ then chmod 755 /opt/userscripts/userscript_everystart_example.sh echo 'Done.' echo ' ' -elif [ -f /opt/userscripts/userscript_firststart.sh ] || [ -f /opt/userscripts/userscript_everystart.sh ] +elif [[ -f /opt/userscripts/userscript_firststart.sh ]] || [[ -f /opt/userscripts/userscript_everystart.sh ]] then - if [ -f /opt/userscripts/userscript_firststart.sh ] && [ -f /opt/.firstrun ] + if [[ -f /opt/userscripts/userscript_firststart.sh ]] && [[ -f /opt/.firstrun ]] then echo "Userscript for first start detected and this is the first start of a new container." echo "Running userscript_firststart.sh..." @@ -456,7 +461,7 @@ then echo "Done." echo ' ' fi - if [ -f /opt/userscripts/userscript_everystart.sh ] + if [[ -f /opt/userscripts/userscript_everystart.sh ]] then echo "Userscript for every start detected. Running userscript_everystart.sh..." chmod 755 /opt/userscripts/userscript_everystart.sh @@ -467,7 +472,7 @@ then fi # Removing first run marker when exists -if [ -f /opt/.firstrun ] +if [[ -f /opt/.firstrun ]] then rm -f /opt/.firstrun fi From 15da4a272dc3195d3bd6cd45da39883f2e5bb0ec Mon Sep 17 00:00:00 2001 From: buanet Date: Mon, 19 Sep 2022 18:34:01 +0200 Subject: [PATCH 02/11] actions update --- .github/workflows/build-debian-image-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-debian-image-dev.yml b/.github/workflows/build-debian-image-dev.yml index 6c85167..b728b8f 100644 --- a/.github/workflows/build-debian-image-dev.yml +++ b/.github/workflows/build-debian-image-dev.yml @@ -12,7 +12,7 @@ jobs: uses: actions/checkout@v3 with: repository: 'buanet/ioBroker.docker' - ref: 'main' + # ref: 'main' - name: Get and write version and date id: version From 3e40d2acd1e69b16258bd33a12bdb3738c5dbc71 Mon Sep 17 00:00:00 2001 From: buanet Date: Mon, 19 Sep 2022 21:54:57 +0200 Subject: [PATCH 03/11] small fixes --- CHANGELOG.md | 6 ++++-- debian/scripts/iobroker_startup.sh | 5 +++-- debian/scripts/maintenance.sh | 31 ++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa6ed72..d578e25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,10 @@ ## Changelog ### v7.1.0-beta.1 (coming soon) -* testing strict mode for iobroker-startup.sh -* fixing "unary operator expected" error +* add restart option to maintenance script +* enhance logging +* test strict mode for iobroker-startup.sh +* fix "unary operator expected" error ### v7.0.1 (05.07.2022) * backitup restore patch diff --git a/debian/scripts/iobroker_startup.sh b/debian/scripts/iobroker_startup.sh index 97534c0..5bbf941 100644 --- a/debian/scripts/iobroker_startup.sh +++ b/debian/scripts/iobroker_startup.sh @@ -37,8 +37,8 @@ echo -n "$(printf -- '-%.0s' {1..25})" && echo -n " "$dati" " && echo " echo "$(printf -- '-%.0s' {1..80})" echo ' ' echo "$(printf -- '-%.0s' {1..80})" -echo "----- Welcome to your ioBroker-container! -----" -echo "----- Startupscript is now running. -----" +echo "----- Welcome to your ioBroker Docker container! -----" +echo "----- Startupscript is now running! -----" echo "----- Please be patient! -----" echo "$(printf -- '-%.0s' {1..80})" echo ' ' @@ -486,6 +486,7 @@ echo "$(printf -- '-%.0s' {1..80})" echo ' ' echo "Starting ioBroker..." echo ' ' +echo "##### #### ### ## # iobroker.js-controller log output # ## ### #### #####" # Setting healthcheck status to "running" echo "running" > /opt/scripts/.docker_config/.healthcheck diff --git a/debian/scripts/maintenance.sh b/debian/scripts/maintenance.sh index a6c9788..13c6852 100644 --- a/debian/scripts/maintenance.sh +++ b/debian/scripts/maintenance.sh @@ -22,6 +22,7 @@ display_help() { echo ' on > switches mantenance mode ON' echo ' off > switches mantenance mode OFF and stops or restarts the container' echo ' upgrade > puts the container to maintenance mode and upgrades ioBroker' + echo ' restart > stops iobroker and stops or restarts the container' echo ' help > shows this help' echo '' echo 'OPTIONS' @@ -157,6 +158,33 @@ upgrade_jscontroller() { pkill -u root } +# restart container +restart_container() { + echo 'You are now going to call a restart of your container.' + echo 'Restarting will work depending on the configured restart policy.' + + if [[ "$autoconfirm" != yes ]]; then + local reply + + read -rp 'Do you want to continue [yes/no]? ' reply + if [[ "$reply" == y || "$reply" == Y || "$reply" == yes ]]; then + : # continue + else + return 1 + fi + else + echo 'This command was already confirmed by the -y or --yes option.' + fi + + echo -n 'Stopping ioBroker...' + stop_iob + + echo 'Container will be stopped or restarted in 5 seconds...' + sleep 5 + echo 'stopping' > "$healthcheck" + pkill -u root +} + # stop iobroker and wait until all processes stopped or pkill_timeout is reached stop_iob() { local status timeout @@ -211,6 +239,9 @@ for arg in "$@"; do upgrade) run=(upgrade_jscontroller) ;; + restart) + run=(restart_container) + ;; -y|--yes) autoconfirm=yes ;; From d13c18f397931c2f68a26ce2678a6553ba5e1f70 Mon Sep 17 00:00:00 2001 From: buanet Date: Thu, 6 Oct 2022 11:30:45 +0200 Subject: [PATCH 04/11] enhance build process --- .github/dependencies/.admin-version | 0 .github/dependencies/.backitup-version | 0 .github/dependencies/.discovery-version | 0 ...er-release.yml => check-iobroker-versions.yml} | 15 +++++++++++---- CHANGELOG.md | 1 + 5 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 .github/dependencies/.admin-version create mode 100644 .github/dependencies/.backitup-version create mode 100644 .github/dependencies/.discovery-version rename .github/workflows/{check-js-controller-release.yml => check-iobroker-versions.yml} (67%) diff --git a/.github/dependencies/.admin-version b/.github/dependencies/.admin-version new file mode 100644 index 0000000..e69de29 diff --git a/.github/dependencies/.backitup-version b/.github/dependencies/.backitup-version new file mode 100644 index 0000000..e69de29 diff --git a/.github/dependencies/.discovery-version b/.github/dependencies/.discovery-version new file mode 100644 index 0000000..e69de29 diff --git a/.github/workflows/check-js-controller-release.yml b/.github/workflows/check-iobroker-versions.yml similarity index 67% rename from .github/workflows/check-js-controller-release.yml rename to .github/workflows/check-iobroker-versions.yml index b124486..ac382c7 100644 --- a/.github/workflows/check-js-controller-release.yml +++ b/.github/workflows/check-iobroker-versions.yml @@ -1,4 +1,4 @@ -name: Check js-controller release +name: Check ioBroker versions on: schedule: @@ -15,13 +15,20 @@ jobs: repository: 'buanet/ioBroker.docker' token: ${{ secrets.ACTIONS_PAT }} - - name: Fetch js-controller release version + - name: Fetch ioBroker versions run: | curl -sL https://repo.iobroker.live/sources-dist.json | \ jq -r '."js-controller".version' > .github/dependencies/.js-controller-version - # curl -sL https://api.github.com/repos/ioBroker/ioBroker.js-controller/releases/latest | \ - # jq -r ".tag_name" > .github/dependencies/.js-controller-version echo "[LOG] Fetched js-controller version is $(cat .github/dependencies/.js-controller-version)" + curl -sL https://repo.iobroker.live/sources-dist.json | \ + jq -r '."admin".version' > .github/dependencies/.admin-version + echo "[LOG] Fetched admin version is $(cat .github/dependencies/.admin-version)" + curl -sL https://repo.iobroker.live/sources-dist.json | \ + jq -r '."backitup".version' > .github/dependencies/.backitup-version + echo "[LOG] Fetched backitup version is $(cat .github/dependencies/.backitup-version)" + curl -sL https://repo.iobroker.live/sources-dist.json | \ + jq -r '."discovery".version' > .github/dependencies/.discovery-version + echo "[LOG] Fetched discovery version is $(cat .github/dependencies/.discovery-version)" - name: Check for modified files id: git-check diff --git a/CHANGELOG.md b/CHANGELOG.md index d578e25..deacbd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## Changelog ### v7.1.0-beta.1 (coming soon) +* enhance build process * add restart option to maintenance script * enhance logging * test strict mode for iobroker-startup.sh From 387317217bb9b68a22eb193b6e4021782c13cffc Mon Sep 17 00:00:00 2001 From: buanet Date: Tue, 11 Oct 2022 08:11:39 +0200 Subject: [PATCH 05/11] testing --- .github/workflows/check-iobroker-versions.yml | 2 +- README.md | 2 +- debian/scripts/iobroker_startup.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check-iobroker-versions.yml b/.github/workflows/check-iobroker-versions.yml index ac382c7..bb76eac 100644 --- a/.github/workflows/check-iobroker-versions.yml +++ b/.github/workflows/check-iobroker-versions.yml @@ -39,7 +39,7 @@ jobs: run: | git config --global user.name 'buanet' git config --global user.email 'info@buanet.de' - git commit -am "new js-controller release" + git commit -am "new ioBroker versions" git push - name: Trigger build debian latest (buanet) diff --git a/README.md b/README.md index e3923e2..e921f35 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Please do not use the issues for support questions. Not every error message is w ### Beta testing -If you want to get the newest features and changes feel free to use/ test the beta version of the Docker image. You can find the changelog for beta versions [here](https://github.com/buanet/ioBroker.docker/blob/dev/CHANGELOG.md). For more details and beta support join us at the "docker-image" chat on the [ioBroker Discord channel](https://discord.gg/Ne3y6fUac3). +If you want to get the newest features and changes feel free to use/ test the beta version of the Docker image. For more details and beta support join us at "beta testing & feedback" > "docker-image" on the [ioBroker Discord channel](https://discord.gg/Ne3y6fUac3). ### Support the project diff --git a/debian/scripts/iobroker_startup.sh b/debian/scripts/iobroker_startup.sh index 5bbf941..8d410c4 100644 --- a/debian/scripts/iobroker_startup.sh +++ b/debian/scripts/iobroker_startup.sh @@ -214,7 +214,7 @@ echo 'Done.' echo ' ' # checking hostname in ioBroker to match container hostname -if [[ $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ]] && [[ "$multihost" != "slave" ]] +if [[ "$(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')" != "$(hostname)" ]] && [[ "$multihost" != "slave" ]] then echo "Hostname in ioBroker does not match the hostname of this container." echo -n "Updating hostname to " $(hostname)"... " From 74539d586ac4590fb0c768aed3f610a3eb0ed4d2 Mon Sep 17 00:00:00 2001 From: buanet Date: Tue, 11 Oct 2022 18:03:44 +0200 Subject: [PATCH 06/11] testing --- debian/scripts/iobroker_startup.sh | 142 ++++++++++++++--------------- 1 file changed, 66 insertions(+), 76 deletions(-) diff --git a/debian/scripts/iobroker_startup.sh b/debian/scripts/iobroker_startup.sh index 8d410c4..a8e36fd 100644 --- a/debian/scripts/iobroker_startup.sh +++ b/debian/scripts/iobroker_startup.sh @@ -10,6 +10,7 @@ echo 'starting' > /opt/scripts/.docker_config/.healthcheck set +u adminport=$IOB_ADMINPORT avahi=$AVAHI +debug=$DEBUG multihost=$IOB_MULTIHOST offlinemode=$OFFLINE_MODE objectsdbhost=$IOB_OBJECTSDB_HOST @@ -43,8 +44,6 @@ echo "----- Please be patient! echo "$(printf -- '-%.0s' {1..80})" echo ' ' echo "$(printf -- '-%.0s' {1..80})" -echo "----- Debugging information -----" -echo "----- -----" echo "----- System -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" arch: $(uname -m))" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" hostname: $(hostname))" && echo " -----" @@ -58,8 +57,9 @@ echo -n "----- " && echo -n "$(printf "%-20s %-28s" node: $(n echo -n "----- " && echo -n "$(printf "%-20s %-28s" npm: $(npm -v))" && echo " -----" echo "----- -----" echo "----- ENV -----" -if [[ "$avahi" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" AVAHI: $avahi)" && echo " -----"; fi if [[ "$adminport" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_ADMINPORT: $adminport)" && echo " -----"; fi +if [[ "$avahi" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" AVAHI: $avahi)" && echo " -----"; fi +if [[ "$debug" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" DEBUG: $debug)" && echo " -----"; fi if [[ "$multihost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_MULTIHOST: $multihost)" && echo " -----"; fi if [[ "$objectsdbhost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_HOST: $objectsdbhost)" && echo " -----"; fi if [[ "$objectsdbport" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_PORT: $objectsdbport)" && echo " -----"; fi @@ -109,13 +109,13 @@ else fi # Installing packages from ENV -if [[ "$packages" != "" ]] && [[ "$offlinemode" = "true" ]]; then +if [[ "$packages" != "" && "$offlinemode" = "true" ]]; then echo 'Installing additional packages is set by ENV but offline mode is activated!' echo 'Skipping Linux packages installation.' echo ' ' else echo 'Installing additional packages is set by ENV.' - echo "Checking the following Packages:" $packages"..." + echo "Checking the following packages:" $packages"..." echo $packages > /opt/scripts/.docker_config/.packages bash /opt/scripts/setup_packages.sh -install echo 'Done.' @@ -123,7 +123,7 @@ else fi # Setting UID and/ or GID -if [[ $(cat /etc/group | grep 'iobroker:' | cut -d':' -f3) != $setgid ]] || [[ $(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3) != $setuid ]]; then +if [[ "$setgid" != "$(cat /etc/group | grep 'iobroker:' | cut -d':' -f3)" || "$setuid" != "$(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3)" ]]; then echo "Different UID and/ or GID is set by ENV." echo -n "Changing UID to "$setuid" and GID to "$setgid"... " usermod -u $setuid iobroker @@ -143,25 +143,24 @@ echo "----- Step 2 of 5: Detecting ioBroker installation echo "$(printf -- '-%.0s' {1..80})" echo ' ' -if [[ `find /opt/iobroker -type f | wc -l` -lt 1 ]] -then +if [[ `find /opt/iobroker -type f | wc -l` -lt 1 ]]; then echo "There is no data detected in /opt/iobroker." echo -n "Restoring initial ioBroker installation... " tar -xf /opt/initial_iobroker.tar -C / echo 'Done.' -elif [[ -f /opt/iobroker/iobroker ]] -then +elif [[ -f /opt/iobroker/iobroker ]]; then echo "Existing installation of ioBroker detected in /opt/iobroker." -elif [[ $(ls *_backupiobroker.tar.gz 2> /dev/null | wc -l) != "0" ]] && [[ $(tar -ztvf /opt/iobroker/*_backupiobroker.tar.gz "backup/backup.json" 2> /dev/null | wc -l) != "0" ]] -then - if [[ "$multihost" = "slave" ]] - then +elif [[ $(ls *_backupiobroker.tar.gz 2> /dev/null | wc -l) != "0" && $(tar -ztvf /opt/iobroker/*_backupiobroker.tar.gz "backup/backup.json" 2> /dev/null | wc -l) != "0" ]]; then + if [[ "$multihost" = "slave" ]]; then echo "IoBroker backup file detected in /opt/iobroker. But Multihost is set to \"slave\"." echo "Restoring a backup is not supported on Multihost slaves. Please check configuration and start over." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 else echo "IoBroker backup file detected in /opt/iobroker." + if [[ "$debug" == "true" ]]; then + echo "[DEBUG] Backup file name: " $(ls *_backupiobroker.tar.gz) + fi echo -n "Preparing restore... " mv /opt/iobroker/*.tar.gz /opt/ tar -xf /opt/initial_iobroker.tar -C / @@ -186,6 +185,10 @@ then else echo "There is data detected in /opt/iobroker but it looks like it is no instance of ioBroker or a valid backup file!" echo "Please check/ recreate mounted folder or volume and start over." + if [[ "$debug" == "true" ]]; then + echo "[DEBUG] Detected files:" + ls -al + fi exit 1 fi echo ' ' @@ -214,13 +217,25 @@ echo 'Done.' echo ' ' # checking hostname in ioBroker to match container hostname -if [[ "$(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')" != "$(hostname)" ]] && [[ "$multihost" != "slave" ]] -then +if [[ "$(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')" != "$(hostname)" && "$multihost" != "slave" ]]; then echo "Hostname in ioBroker does not match the hostname of this container." + if [[ "$debug" == "true" ]]; then + echo "[DEBUG] Detected hostname in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') + fi echo -n "Updating hostname to " $(hostname)"... " bash iobroker host $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') echo 'Done.' echo ' ' +elif [[ "$multihost" == "slave" ]]; then + echo "IOB_MULTIHOST ist set to \"slave\". Hostname check will be skipped." + echo ' ' +else + if [[ "$debug" == "true" ]]; then + echo "[DEBUG] Hostnames match successful!" + echo "[DEBUG] Detected hostname in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') + echo "[DEBUG] Detected hostname in container: " $(hostname) + echo ' ' + fi fi ##### @@ -236,11 +251,12 @@ echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.d echo ' ' # Checking ENV for Adminport -if [[ "$adminport" != "" ]] -then - if [[ "$adminport" != $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') ]] - then +if [[ "$adminport" != "" ]]; then + if [[ "$adminport" != "$(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*')" ]]; then echo "Adminport set by ENV does not match port configured in ioBroker installation." + if [[ "$debug" == "true" ]]; then + echo "[DEBUG] Detected Admin Port in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') + fi echo -n "Setting Adminport to \""$adminport"\"... " bash iobroker set admin.0 --port $adminport echo 'Done.' @@ -249,7 +265,7 @@ then fi # Checking ENV for AVAHI -if [[ "$avahi" = "true" ]] && [[ "$offlinemode" = "true" ]]; then +if [[ "$avahi" = "true" && "$offlinemode" = "true" ]]; then echo 'Avahi-daemon is activated by ENV but offline mode is activated!' echo 'Skipping Avahi daemon setup.' elif [[ "$avahi" = "true" ]]; then @@ -262,7 +278,7 @@ elif [[ "$avahi" = "true" ]]; then fi # Checking ENV for Z-WAVE -if [[ "$zwave" = "true" ]] && [[ "$offlinemode" = "true" ]]; then +if [[ "$zwave" = "true" && "$offlinemode" = "true" ]]; then echo 'Z-Wave is activated by ENV but offline mode is activated!' echo 'Skipping Z-Wave setup.' elif [[ "$zwave" = "true" ]]; then @@ -275,7 +291,7 @@ elif [[ "$zwave" = "true" ]]; then fi # checking ENV for USBDEVICES -if [[ "$usbdevices" != "" ]] && [[ "$usbdevices" != "none" ]]; then +if [[ "$usbdevices" != "" && "$usbdevices" != "none" ]]; then echo "Usb-device-support is activated by ENV." IFS=';' read -ra devicearray <<< "$usbdevices" for i in "${devicearray[@]}" @@ -289,38 +305,31 @@ if [[ "$usbdevices" != "" ]] && [[ "$usbdevices" != "none" ]]; then fi # Checking ENV for multihost setup -if [[ "$multihost" != "" ]] -then +if [[ "$multihost" != "" ]]; then echo "Checking multihost setup..." # Configuring objects db host - if [[ "$multihost" = "master" ]] && [[ "$objectsdbtype" = "" ]] && [[ "$objectsdbhost" = "" ]] && [[ "$objectsdbport" = "" ]] - then + if [[ "$multihost" = "master" && "$objectsdbtype" = "" && "$objectsdbhost" = "" && "$objectsdbport" = "" ]]; then echo "Multihost is set as \"master\" by ENV and no external objects db is set." echo -n "Setting host of objects db to \"0.0.0.0\" to allow external communication... " jq --arg objectsdbhost "0.0.0.0" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json echo 'Done.' - elif [[ "$multihost" = "master" ]] && [[ "$objectsdbhost" = "127.0.0.1" ]] - then + elif [[ "$multihost" = "master" && "$objectsdbhost" = "127.0.0.1" ]]; then echo "Multihost is set as \"master\" by ENV. But objects db host is set to \"127.0.0.1\" by ENV too." echo "This configuration will not allow slaves to connect the objects db! Please change or remove ENV \"IOB_OBJECTSDB_HOST\" and start over!" echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 - elif [[ "$multihost" = "master" ]] && [[ "$objectsdbtype" != "" ]] && [[ "$objectsdbhost" != "" ]] && [[ "$objectsdbport" != "" ]] - then + elif [[ "$multihost" = "master" && "$objectsdbtype" != "" && "$objectsdbhost" != "" && "$objectsdbport" != "" ]]; then echo "Multihost is set as \"master\" by ENV and external objects db is set." - elif ([[ "$multihost" = "slave" ]] && [[ "$objectsdbtype" = "" ]]) || ([[ "$multihost" = "slave" ]] && [[ "$objectsdbhost" = "" ]]) || ([[ "$multihost" = "slave" ]] && [[ "$objectsdbport" = "" ]]) - then + elif ([[ "$multihost" = "slave" && "$objectsdbtype" = "" ]]) || ([[ "$multihost" = "slave" && "$objectsdbhost" = "" ]]) || ([[ "$multihost" = "slave" && "$objectsdbport" = "" ]]); then echo "Multihost is set as \"slave\" by ENV. But no external objects db is set." echo "You have to configure ENVs \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" to connect to a maser objects db." echo "Please check your settings and start over." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 - elif [[ "$multihost" = "slave" ]] && [[ "$objectsdbtype" != "" ]] && [[ "$objectsdbhost" != "" ]] && [[ "$objectsdbport" != "" ]] - then + elif [[ "$multihost" = "slave" && "$objectsdbtype" != "" && "$objectsdbhost" != "" && "$objectsdbport" != "" ]]; then echo "Multihost is set as \"slave\" by ENV and external objects db is set." - elif [[ "$multihost" != "" ]] - then + elif [[ "$multihost" != "" ]]; then echo "Multihost is set but it seems like some configuration is missing." echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" correctly and start over." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." @@ -328,34 +337,28 @@ then fi # Configuring states db host - if [[ "$multihost" = "master" ]] && [[ "$statesdbtype" = "" ]] && [[ "$statesdbhost" = "" ]] && [[ "$statesdbport" = "" ]] - then + if [[ "$multihost" = "master" && "$statesdbtype" = "" && "$statesdbhost" = "" && "$statesdbport" = "" ]]; then echo "Multihost is set as \"master\" by ENV and no external states db is set." echo -n "Setting host of states db to \"0.0.0.0\" to allow external communication... " jq --arg statesdbhost "0.0.0.0" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json echo 'Done.' - elif [[ "$multihost" = "master" ]] && [[ "$statesdbhost" = "127.0.0.1" ]] - then + elif [[ "$multihost" = "master" && "$statesdbhost" = "127.0.0.1" ]]; then echo "Multihost is set as \"master\" by ENV. But states db host is set to \"127.0.0.1\" by ENV too." echo "This configuration will not work! Please change or remove ENV \"IOB_STATESDB_HOST\" and start over!" echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 - elif [[ "$multihost" = "master" ]] && [[ "$statesdbtype" != "" ]] && [[ "$statesdbhost" != "" ]] && [[ "$statesdbport" != "" ]] - then + elif [[ "$multihost" = "master" && "$statesdbtype" != "" && "$statesdbhost" != "" && "$statesdbport" != "" ]]; then echo "Multihost is set as \"master\" by ENV and external states db is set." - elif ([[ "$multihost" = "slave" ]] && [[ "$statesdbtype" = "" ]]) || ([[ "$multihost" = "slave" ]] && [[ "$statesdbhost" = "" ]]) || ([[ "$multihost" = "slave" ]] && [[ "$statesdbport" = "" ]]) - then + elif ([[ "$multihost" = "slave" && "$statesdbtype" = "" ]]) || ([[ "$multihost" = "slave" && "$statesdbhost" = "" ]]) || ([[ "$multihost" = "slave" && "$statesdbport" = "" ]]); then echo "Multihost is set as \"slave\" by ENV. But no external states db is set." echo "You have to configure ENVs \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESDB_PORT\" to connect to a maser states db." echo "Please check your settings and start over." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 - elif [[ "$multihost" = "slave" ]] && [[ "$statesdbtype" != "" ]] && [[ "$statesdbhost" != "" ]] && [[ "$statesdbport" != "" ]] - then + elif [[ "$multihost" = "slave" && "$statesdbtype" != "" && "$statesdbhost" != "" && "$statesdbport" != "" ]]; then echo "Multihost is set as \"slave\" by ENV and external states db is set." - elif [[ "$multihost" != "" ]] - then + elif [[ "$multihost" != "" ]]; then echo "Multihost is set but it seems like some configuration is missing." echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESTDB_PORT\" correctly and start over." echo "For more information see ioBroker Docker image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." @@ -366,11 +369,9 @@ then fi # Checking ENVs for custom setup of objects db -if [[ "$objectsdbtype" != "" ]] || [[ "$objectsdbhost" != "" ]] || [[ "$objectsdbport" != "" ]] -then +if [[ "$objectsdbtype" != "" || "$objectsdbhost" != "" || "$objectsdbport" != "" ]]; then echo "Checking custom settings for objects db..." - if [[ "$objectsdbtype" != $(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json) ]] - then + if [[ "$objectsdbtype" != "$(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then echo "IOB_OBJECTSDB_TYPE is set and value is different from detected ioBroker installation." echo -n "Setting type of objects db to \""$objectsdbtype"\"... " jq --arg objectsdbtype "$objectsdbtype" '.objects.type = $objectsdbtype' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json @@ -379,8 +380,7 @@ then else echo "IOB_OBJECTSDB_TYPE is set and value meets detected ioBroker installation." fi - if [[ "$objectsdbhost" != $(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json) ]] - then + if [[ "$objectsdbhost" != "$(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then echo "IOB_OBJECTSDB_HOST is set and value is different from detected ioBroker installation." echo -n "Setting host of objects db to \""$objectsdbhost"\"... " jq --arg objectsdbhost "$objectsdbhost" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json @@ -389,8 +389,7 @@ then else echo "IOB_OBJECTSDB_HOST is set and value meets detected ioBroker installation." fi - if [[ "$objectsdbport" != $(jq -r '.objects.port' /opt/iobroker/iobroker-data/iobroker.json) ]] - then + if [[ "$objectsdbport" != "$(jq -r '.objects.port' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then echo "IOB_OBJECTSDB_PORT is set and value is different from detected ioBroker installation." echo -n "Setting port of objects db to \""$objectsdbport"\"... " jq --arg objectsdbport $objectsdbport '.objects.port = $objectsdbport' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json @@ -404,11 +403,9 @@ then fi # Checking ENVs for custom setup of states db -if [[ "$statesdbtype" != "" ]] || [[ "$statesdbhost" != "" ]] || [[ "$statesdbport" != "" ]] -then +if [[ "$statesdbtype" != "" || "$statesdbhost" != "" || "$statesdbport" != "" ]]; then echo "Checking custom settings for states db..." - if [[ "$statesdbtype" != $(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json) ]] - then + if [[ "$statesdbtype" != "$(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then echo "IOB_STATESDB_TYPE is set and value is different from detected ioBroker installation." echo -n "Setting type of states db to \""$statesdbtype"\"... " jq --arg statesdbtype "$statesdbtype" '.states.type = $statesdbtype' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json @@ -417,8 +414,7 @@ then else echo "IOB_STATESDB_TYPE is set and value meets detected ioBroker installation." fi - if [[ "$statesdbhost" != $(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json) ]] - then + if [[ "$statesdbhost" != "$(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then echo "IOB_STATESDB_HOST is set and value is different from detected ioBroker installation." echo -n "Setting host of states db to \""$statesdbhost"\"... " jq --arg statesdbhost "$statesdbhost" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json @@ -427,8 +423,7 @@ then else echo "IOB_STATESDB_HOST is set and value meets detected ioBroker installation." fi - if [[ "$statesdbport" != $(jq -r '.states.port' /opt/iobroker/iobroker-data/iobroker.json) ]] - then + if [[ "$statesdbport" != "$(jq -r '.states.port' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then echo "IOB_STATESDB_PORT is set and value is different from detected ioBroker installation." echo -n "Setting port of states db to \""$statesdbport"\"... " jq --arg statesdbport $statesdbport '.states.port = $statesdbport' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json @@ -442,18 +437,15 @@ then fi # Checking for Userscripts in /opt/userscripts -if [[ `find /opt/userscripts -type f | wc -l` -lt 1 ]] -then +if [[ `find /opt/userscripts -type f | wc -l` -lt 1 ]]; then echo -n "There is no data detected in /opt/userscripts. Restoring exapmple userscripts... " tar -xf /opt/initial_userscripts.tar -C / chmod 755 /opt/userscripts/userscript_firststart_example.sh chmod 755 /opt/userscripts/userscript_everystart_example.sh echo 'Done.' echo ' ' -elif [[ -f /opt/userscripts/userscript_firststart.sh ]] || [[ -f /opt/userscripts/userscript_everystart.sh ]] -then - if [[ -f /opt/userscripts/userscript_firststart.sh ]] && [[ -f /opt/.firstrun ]] - then +elif [[ -f /opt/userscripts/userscript_firststart.sh || -f /opt/userscripts/userscript_everystart.sh ]]; then + if [[ -f /opt/userscripts/userscript_firststart.sh && -f /opt/.firstrun ]]; then echo "Userscript for first start detected and this is the first start of a new container." echo "Running userscript_firststart.sh..." chmod 755 /opt/userscripts/userscript_firststart.sh @@ -461,8 +453,7 @@ then echo "Done." echo ' ' fi - if [[ -f /opt/userscripts/userscript_everystart.sh ]] - then + if [[ -f /opt/userscripts/userscript_everystart.sh ]]; then echo "Userscript for every start detected. Running userscript_everystart.sh..." chmod 755 /opt/userscripts/userscript_everystart.sh bash /opt/userscripts/userscript_everystart.sh @@ -472,9 +463,8 @@ then fi # Removing first run marker when exists -if [[ -f /opt/.firstrun ]] -then -rm -f /opt/.firstrun +if [[ -f /opt/.firstrun ]]; then + rm -f /opt/.firstrun fi ##### From 3ec3c9847a6c37f005cd12504bf8cfde864e978f Mon Sep 17 00:00:00 2001 From: buanet Date: Wed, 12 Oct 2022 08:49:09 +0200 Subject: [PATCH 07/11] rework --- debian/scripts/iobroker_startup.sh | 53 +++++++++++++++++------------- debian/scripts/setup_packages.sh | 11 ++----- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/debian/scripts/iobroker_startup.sh b/debian/scripts/iobroker_startup.sh index a8e36fd..80845e7 100644 --- a/debian/scripts/iobroker_startup.sh +++ b/debian/scripts/iobroker_startup.sh @@ -96,6 +96,19 @@ if [[ -f /opt/.firstrun ]]; then echo 'Done.' echo ' ' fi + # Installing packages from ENV + if [[ "$packages" != "" && "$offlinemode" = "true" ]]; then + echo 'Installing additional packages is set by ENV but offline mode is activated!' + echo 'Skipping Linux packages installation.' + echo ' ' + else + echo 'Installing additional packages is set by ENV.' + echo "Checking the following packages:" $packages"..." + echo $packages > /opt/scripts/.docker_config/.packages + bash /opt/scripts/setup_packages.sh -install + echo 'Done.' + echo ' ' + fi # Register maintenance script echo -n 'Registering maintenance script as command... ' echo "alias maintenance=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc @@ -108,20 +121,6 @@ else echo ' ' fi -# Installing packages from ENV -if [[ "$packages" != "" && "$offlinemode" = "true" ]]; then - echo 'Installing additional packages is set by ENV but offline mode is activated!' - echo 'Skipping Linux packages installation.' - echo ' ' -else - echo 'Installing additional packages is set by ENV.' - echo "Checking the following packages:" $packages"..." - echo $packages > /opt/scripts/.docker_config/.packages - bash /opt/scripts/setup_packages.sh -install - echo 'Done.' - echo ' ' -fi - # Setting UID and/ or GID if [[ "$setgid" != "$(cat /etc/group | grep 'iobroker:' | cut -d':' -f3)" || "$setuid" != "$(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3)" ]]; then echo "Different UID and/ or GID is set by ENV." @@ -149,8 +148,8 @@ if [[ `find /opt/iobroker -type f | wc -l` -lt 1 ]]; then tar -xf /opt/initial_iobroker.tar -C / echo 'Done.' elif [[ -f /opt/iobroker/iobroker ]]; then - echo "Existing installation of ioBroker detected in /opt/iobroker." -elif [[ $(ls *_backupiobroker.tar.gz 2> /dev/null | wc -l) != "0" && $(tar -ztvf /opt/iobroker/*_backupiobroker.tar.gz "backup/backup.json" 2> /dev/null | wc -l) != "0" ]]; then + echo "Existing installation of ioBroker detected in \"/opt/iobroker\"." +elif [[ "$(ls *_backupiobroker.tar.gz 2> /dev/null | wc -l)" != "0" && "$(tar -ztvf /opt/iobroker/*_backupiobroker.tar.gz "backup/backup.json" 2> /dev/null | wc -l)" != "0" ]]; then if [[ "$multihost" = "slave" ]]; then echo "IoBroker backup file detected in /opt/iobroker. But Multihost is set to \"slave\"." echo "Restoring a backup is not supported on Multihost slaves. Please check configuration and start over." @@ -202,14 +201,14 @@ echo "$(printf -- '-%.0s' {1..80})" echo ' ' # (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts" -echo -n "(Re)Setting folder permissions (This might take a while! Please be patient!)... " +echo -n "(Re)setting permissions (This might take a while! Please be patient!)... " chown -R $setuid:$setgid /opt/iobroker chown -R $setuid:$setgid /opt/scripts echo 'Done.' echo ' ' # Backing up original iobroker-file and changing sudo to gosu -echo -n "Fixing \"sudo-bug\" by replacing sudo in iobroker with gosu... " +echo -n "Fixing \"sudo-bug\" by replacing sudo 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 @@ -221,20 +220,28 @@ if [[ "$(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(? echo "Hostname in ioBroker does not match the hostname of this container." if [[ "$debug" == "true" ]]; then echo "[DEBUG] Detected hostname in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') + echo "[DEBUG] Detected hostname in container: " $(hostname) fi - echo -n "Updating hostname to " $(hostname)"... " - bash iobroker host $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') + echo -n "Updating hostname to "$(hostname)"... " + bash iobroker host $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') echo 'Done.' echo ' ' elif [[ "$multihost" == "slave" ]]; then echo "IOB_MULTIHOST ist set to \"slave\". Hostname check will be skipped." echo ' ' -else +elif [[ "$(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')" = "$(hostname)" && "$multihost" != "slave" ]]; then + echo "Hostname in ioBroker matches the hostname of this container." if [[ "$debug" == "true" ]]; then - echo "[DEBUG] Hostnames match successful!" echo "[DEBUG] Detected hostname in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') echo "[DEBUG] Detected hostname in container: " $(hostname) - echo ' ' + fi + echo "No action required." + echo ' ' +else + if [[ "$debug" == "true" ]]; then + echo "[DEBUG] There was a problem checking the hostname." + echo "[DEBUG] Detected hostname in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') + echo "[DEBUG] Detected hostname in container: " $(hostname) fi fi diff --git a/debian/scripts/setup_packages.sh b/debian/scripts/setup_packages.sh index e547cc9..da1ca2f 100644 --- a/debian/scripts/setup_packages.sh +++ b/debian/scripts/setup_packages.sh @@ -23,13 +23,8 @@ else exit 1 fi -# Cleanup -apt-get autoclean -y -apt-get autoremove -apt-get clean -rm -rf /tmp/* /var/tmp/* -rm -rf /root/.cache/* -rm -rf /var/lib/apt/lists/* -rm -f /opt/scripts/.docker_config/.packages +# Silent Cleanup +apt-get -qq autoclean -y && apt-get -qq autoremove && apt-get -qq clean +rm -rf /tmp/* /var/tmp/* && rm -rf /root/.cache/* && rm -rf /var/lib/apt/lists/* && rm -f /opt/scripts/.docker_config/.packages exit 0 From 106c38b9796aecd8bd82827369d84e52adb3618e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 09:50:28 +0000 Subject: [PATCH 08/11] Bump docker/build-push-action from 3.1.1 to 3.2.0 Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.1.1 to 3.2.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v3.1.1...v3.2.0) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build-debian-image-beta-node18.yml | 6 +++--- .github/workflows/build-debian-image-beta.yml | 6 +++--- .github/workflows/build-debian-image-dev-node18.yml | 6 +++--- .github/workflows/build-debian-image-dev.yml | 6 +++--- .github/workflows/build-debian-image-latest-iob.yml | 6 +++--- .github/workflows/build-debian-image-latest.yml | 6 +++--- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build-debian-image-beta-node18.yml b/.github/workflows/build-debian-image-beta-node18.yml index a24ba83..e4fa2ef 100644 --- a/.github/workflows/build-debian-image-beta-node18.yml +++ b/.github/workflows/build-debian-image-beta-node18.yml @@ -64,7 +64,7 @@ jobs: password: ${{ secrets.PACKAGES_PASS }} - name: Build Docker image (node18-amd64) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node18/Dockerfile @@ -75,7 +75,7 @@ jobs: ghcr.io/buanet/iobroker:${{ env.version }}-node18-amd64 - name: Build Docker image (node18-arm32v7) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node18/Dockerfile @@ -86,7 +86,7 @@ jobs: ghcr.io/buanet/iobroker:${{ env.version }}-node18-arm32v7 - name: Build Docker image (node18-arm64v8) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node18/Dockerfile diff --git a/.github/workflows/build-debian-image-beta.yml b/.github/workflows/build-debian-image-beta.yml index f8a4da7..6c8a069 100644 --- a/.github/workflows/build-debian-image-beta.yml +++ b/.github/workflows/build-debian-image-beta.yml @@ -64,7 +64,7 @@ jobs: password: ${{ secrets.PACKAGES_PASS }} - name: Build Docker image (amd64) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node16/Dockerfile @@ -75,7 +75,7 @@ jobs: ghcr.io/buanet/iobroker:${{ env.version }}-amd64 - name: Build Docker image (arm32v7) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node16/Dockerfile @@ -86,7 +86,7 @@ jobs: ghcr.io/buanet/iobroker:${{ env.version }}-arm32v7 - name: Build Docker image (arm64v8) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node16/Dockerfile diff --git a/.github/workflows/build-debian-image-dev-node18.yml b/.github/workflows/build-debian-image-dev-node18.yml index accdd1f..ffc9ecf 100644 --- a/.github/workflows/build-debian-image-dev-node18.yml +++ b/.github/workflows/build-debian-image-dev-node18.yml @@ -59,7 +59,7 @@ jobs: password: ${{ secrets.PACKAGES_PASS }} - name: Build Docker image (node18-amd64) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node18/Dockerfile @@ -70,7 +70,7 @@ jobs: ghcr.io/buanet/iobroker:dev-node18-amd64 - name: Build Docker image (node18-arm32v7) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node18/Dockerfile @@ -81,7 +81,7 @@ jobs: ghcr.io/buanet/iobroker:dev-node18-arm32v7 - name: Build Docker image (node18-arm64v8) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node18/Dockerfile diff --git a/.github/workflows/build-debian-image-dev.yml b/.github/workflows/build-debian-image-dev.yml index 1375baf..560e7b2 100644 --- a/.github/workflows/build-debian-image-dev.yml +++ b/.github/workflows/build-debian-image-dev.yml @@ -59,7 +59,7 @@ jobs: password: ${{ secrets.PACKAGES_PASS }} - name: Build Docker image (amd64) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node16/Dockerfile @@ -70,7 +70,7 @@ jobs: ghcr.io/buanet/iobroker:dev-amd64 - name: Build Docker image (arm32v7) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node16/Dockerfile @@ -81,7 +81,7 @@ jobs: ghcr.io/buanet/iobroker:dev-arm32v7 - name: Build Docker image (arm64v8) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node16/Dockerfile diff --git a/.github/workflows/build-debian-image-latest-iob.yml b/.github/workflows/build-debian-image-latest-iob.yml index ec58327..83b4fd2 100644 --- a/.github/workflows/build-debian-image-latest-iob.yml +++ b/.github/workflows/build-debian-image-latest-iob.yml @@ -61,7 +61,7 @@ jobs: password: ${{ secrets.DOCKER_PASS_IOB }} - name: Build Docker image (amd64) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node14/Dockerfile @@ -71,7 +71,7 @@ jobs: iobroker/iobroker:${{ env.version }}-amd64, - name: Build Docker image (arm32v7) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node14/Dockerfile @@ -81,7 +81,7 @@ jobs: iobroker/iobroker:${{ env.version }}-arm32v7, - name: Build Docker image (arm64v8) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node14/Dockerfile diff --git a/.github/workflows/build-debian-image-latest.yml b/.github/workflows/build-debian-image-latest.yml index 9252703..5fa3a8b 100644 --- a/.github/workflows/build-debian-image-latest.yml +++ b/.github/workflows/build-debian-image-latest.yml @@ -68,7 +68,7 @@ jobs: password: ${{ secrets.PACKAGES_PASS }} - name: Build Docker image (amd64) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node16/Dockerfile @@ -79,7 +79,7 @@ jobs: ghcr.io/buanet/iobroker:${{ env.version }}-amd64 - name: Build Docker image (arm32v7) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node16/Dockerfile @@ -90,7 +90,7 @@ jobs: ghcr.io/buanet/iobroker:${{ env.version }}-arm32v7 - name: Build Docker image (arm64v8) - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3.2.0 with: context: ./debian file: ./debian/node16/Dockerfile From 58998777b7ec09b574e05ccfb79e12e2acc5da8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 09:50:36 +0000 Subject: [PATCH 09/11] Bump docker/login-action from 2.0.0 to 2.1.0 Bumps [docker/login-action](https://github.com/docker/login-action) from 2.0.0 to 2.1.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v2.0.0...v2.1.0) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build-debian-image-beta-node18.yml | 4 ++-- .github/workflows/build-debian-image-beta.yml | 4 ++-- .github/workflows/build-debian-image-dev-node18.yml | 4 ++-- .github/workflows/build-debian-image-dev.yml | 4 ++-- .github/workflows/build-debian-image-latest-iob.yml | 2 +- .github/workflows/build-debian-image-latest.yml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-debian-image-beta-node18.yml b/.github/workflows/build-debian-image-beta-node18.yml index a24ba83..dc3dd88 100644 --- a/.github/workflows/build-debian-image-beta-node18.yml +++ b/.github/workflows/build-debian-image-beta-node18.yml @@ -51,13 +51,13 @@ jobs: uses: docker/setup-buildx-action@v2.0.0 - name: Login to DockerHub - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: registry: ghcr.io username: ${{ secrets.PACKAGES_USER }} diff --git a/.github/workflows/build-debian-image-beta.yml b/.github/workflows/build-debian-image-beta.yml index f8a4da7..8f625fa 100644 --- a/.github/workflows/build-debian-image-beta.yml +++ b/.github/workflows/build-debian-image-beta.yml @@ -51,13 +51,13 @@ jobs: uses: docker/setup-buildx-action@v2.0.0 - name: Login to DockerHub - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: registry: ghcr.io username: ${{ secrets.PACKAGES_USER }} diff --git a/.github/workflows/build-debian-image-dev-node18.yml b/.github/workflows/build-debian-image-dev-node18.yml index accdd1f..7b165d7 100644 --- a/.github/workflows/build-debian-image-dev-node18.yml +++ b/.github/workflows/build-debian-image-dev-node18.yml @@ -46,13 +46,13 @@ jobs: uses: docker/setup-buildx-action@v2.0.0 - name: Login to DockerHub - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: registry: ghcr.io username: ${{ secrets.PACKAGES_USER }} diff --git a/.github/workflows/build-debian-image-dev.yml b/.github/workflows/build-debian-image-dev.yml index 1375baf..be70077 100644 --- a/.github/workflows/build-debian-image-dev.yml +++ b/.github/workflows/build-debian-image-dev.yml @@ -46,13 +46,13 @@ jobs: uses: docker/setup-buildx-action@v2.0.0 - name: Login to DockerHub - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: registry: ghcr.io username: ${{ secrets.PACKAGES_USER }} diff --git a/.github/workflows/build-debian-image-latest-iob.yml b/.github/workflows/build-debian-image-latest-iob.yml index ec58327..9880a1a 100644 --- a/.github/workflows/build-debian-image-latest-iob.yml +++ b/.github/workflows/build-debian-image-latest-iob.yml @@ -55,7 +55,7 @@ jobs: uses: docker/setup-buildx-action@v2.0.0 - name: Login to DockerHub (iobroker) - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: username: ${{ secrets.DOCKER_USER_IOB }} password: ${{ secrets.DOCKER_PASS_IOB }} diff --git a/.github/workflows/build-debian-image-latest.yml b/.github/workflows/build-debian-image-latest.yml index 9252703..27eb5ac 100644 --- a/.github/workflows/build-debian-image-latest.yml +++ b/.github/workflows/build-debian-image-latest.yml @@ -55,13 +55,13 @@ jobs: uses: docker/setup-buildx-action@v2.0.0 - name: Login to DockerHub (buanet) - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2.1.0 with: registry: ghcr.io username: ${{ secrets.PACKAGES_USER }} From 8de1363a8a0a7e0502c80c0e6890e9852b2c458a Mon Sep 17 00:00:00 2001 From: buanet Date: Wed, 12 Oct 2022 17:09:18 +0200 Subject: [PATCH 10/11] rework --- CHANGELOG.md | 7 +-- debian/scripts/iobroker_startup.sh | 70 ++++++++++++++---------------- docs/README_docker_hub_buanet.md | 1 + docs/README_docker_hub_iobroker.md | 1 + 4 files changed, 38 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index deacbd8..fafd27f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,11 @@ ## Changelog -### v7.1.0-beta.1 (coming soon) +### v7.1.0-beta.1 (12.10.2022) +* add env DEBUG for extended debugging log +* enhance logging in iobroker-startuo.sh * enhance build process * add restart option to maintenance script -* enhance logging -* test strict mode for iobroker-startup.sh +* add strict mode for iobroker-startup.sh * fix "unary operator expected" error ### v7.0.1 (05.07.2022) diff --git a/debian/scripts/iobroker_startup.sh b/debian/scripts/iobroker_startup.sh index 80845e7..ff12ecf 100644 --- a/debian/scripts/iobroker_startup.sh +++ b/debian/scripts/iobroker_startup.sh @@ -88,7 +88,7 @@ echo ' ' if [[ -f /opt/.firstrun ]]; then # Updating Linux packages if [[ "$offlinemode" = "true" ]]; then - echo 'Offline mode is activated by ENV. Skipping Linux package updates on first run.' + echo 'OFFLINE_MODE is \"true\". Skipping Linux package updates on first run.' echo ' ' else echo 'Updating Linux packages on first run...' @@ -98,11 +98,10 @@ if [[ -f /opt/.firstrun ]]; then fi # Installing packages from ENV if [[ "$packages" != "" && "$offlinemode" = "true" ]]; then - echo 'Installing additional packages is set by ENV but offline mode is activated!' - echo 'Skipping Linux packages installation.' + echo 'PACKAGES is set, but OFFLINE_MODE is \"true\". Skipping Linux package installation.' echo ' ' else - echo 'Installing additional packages is set by ENV.' + echo 'PACKAGES is set. Installing additional Linux packages.' echo "Checking the following packages:" $packages"..." echo $packages > /opt/scripts/.docker_config/.packages bash /opt/scripts/setup_packages.sh -install @@ -123,7 +122,7 @@ fi # Setting UID and/ or GID if [[ "$setgid" != "$(cat /etc/group | grep 'iobroker:' | cut -d':' -f3)" || "$setuid" != "$(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3)" ]]; then - echo "Different UID and/ or GID is set by ENV." + echo "SETUID and/ or SETGID are set to individual values." echo -n "Changing UID to "$setuid" and GID to "$setgid"... " usermod -u $setuid iobroker groupmod -g $setgid iobroker @@ -260,7 +259,7 @@ echo ' ' # Checking ENV for Adminport if [[ "$adminport" != "" ]]; then if [[ "$adminport" != "$(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*')" ]]; then - echo "Adminport set by ENV does not match port configured in ioBroker installation." + echo "IOB_ADMINPORT is set and does not match port configured in ioBroker." if [[ "$debug" == "true" ]]; then echo "[DEBUG] Detected Admin Port in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') fi @@ -273,11 +272,9 @@ fi # Checking ENV for AVAHI if [[ "$avahi" = "true" && "$offlinemode" = "true" ]]; then - echo 'Avahi-daemon is activated by ENV but offline mode is activated!' - echo 'Skipping Avahi daemon setup.' + echo 'AVAHI is \"true\", but OFFLINE_MODE is also \"true\". Skipping Avahi daemon setup.' elif [[ "$avahi" = "true" ]]; then - echo 'Avahi-daemon is activated by ENV.' - echo "Running setup script..." + echo 'AVAHI is \"true\". Running setup script...' chmod 755 /opt/scripts/setup_avahi.sh bash /opt/scripts/setup_avahi.sh echo 'Done.' @@ -286,11 +283,9 @@ fi # Checking ENV for Z-WAVE if [[ "$zwave" = "true" && "$offlinemode" = "true" ]]; then - echo 'Z-Wave is activated by ENV but offline mode is activated!' - echo 'Skipping Z-Wave setup.' + echo 'ZWAVE is \"true\", but OFFLINE_MODE is also \"true\". Skipping Z-Wave setup.' elif [[ "$zwave" = "true" ]]; then - echo "Z-Wave is activated by ENV." - echo "Running setup script..." + echo 'ZWAVE is \"true\". Running setup script...' chmod 755 /opt/scripts/setup_zwave.sh bash /opt/scripts/setup_zwave.sh echo 'Done.' @@ -299,7 +294,7 @@ fi # checking ENV for USBDEVICES if [[ "$usbdevices" != "" && "$usbdevices" != "none" ]]; then - echo "Usb-device-support is activated by ENV." + echo 'USBDEVICES is set.' IFS=';' read -ra devicearray <<< "$usbdevices" for i in "${devicearray[@]}" do @@ -313,60 +308,59 @@ fi # Checking ENV for multihost setup if [[ "$multihost" != "" ]]; then - echo "Checking multihost setup..." + echo "Checking for multihost settings..." # Configuring objects db host if [[ "$multihost" = "master" && "$objectsdbtype" = "" && "$objectsdbhost" = "" && "$objectsdbport" = "" ]]; then - echo "Multihost is set as \"master\" by ENV and no external objects db is set." - echo -n "Setting host of objects db to \"0.0.0.0\" to allow external communication... " + echo "IOB_MULTIHOST is set to \"master\" and no external objects db is set." + echo -n "Setting host of objects db to \"0.0.0.0\" to allow external connections... " jq --arg objectsdbhost "0.0.0.0" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json echo 'Done.' elif [[ "$multihost" = "master" && "$objectsdbhost" = "127.0.0.1" ]]; then - echo "Multihost is set as \"master\" by ENV. But objects db host is set to \"127.0.0.1\" by ENV too." - echo "This configuration will not allow slaves to connect the objects db! Please change or remove ENV \"IOB_OBJECTSDB_HOST\" and start over!" + echo "IOB_MULTIHOST is set to \"master\", but IOB_OBJECTSDB_HOST is set to \"127.0.0.1\"." + echo "This configuration will not allow slaves to connect to objects db! Please change or remove \"IOB_OBJECTSDB_HOST\" and start over!" echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 elif [[ "$multihost" = "master" && "$objectsdbtype" != "" && "$objectsdbhost" != "" && "$objectsdbport" != "" ]]; then - echo "Multihost is set as \"master\" by ENV and external objects db is set." + echo "IOB_MULTIHOST is set to \"master\" and external objects db is set." elif ([[ "$multihost" = "slave" && "$objectsdbtype" = "" ]]) || ([[ "$multihost" = "slave" && "$objectsdbhost" = "" ]]) || ([[ "$multihost" = "slave" && "$objectsdbport" = "" ]]); then - echo "Multihost is set as \"slave\" by ENV. But no external objects db is set." - echo "You have to configure ENVs \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" to connect to a maser objects db." - echo "Please check your settings and start over." + echo "IOB_MULTIHOST is set to \"slave\", but no external objects db is set." + echo "You have to configure ENVs \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" to connect to a master objects db." + echo "Please check your settings and start over!" echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 elif [[ "$multihost" = "slave" && "$objectsdbtype" != "" && "$objectsdbhost" != "" && "$objectsdbport" != "" ]]; then - echo "Multihost is set as \"slave\" by ENV and external objects db is set." + echo "IOB_MULTIHOST is set to \"slave\" and external objects db is set." elif [[ "$multihost" != "" ]]; then - echo "Multihost is set but it seems like some configuration is missing." + echo "IOB_MULTIHOST is set, but it seems like some configuration is missing." echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" correctly and start over." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 fi - # Configuring states db host if [[ "$multihost" = "master" && "$statesdbtype" = "" && "$statesdbhost" = "" && "$statesdbport" = "" ]]; then - echo "Multihost is set as \"master\" by ENV and no external states db is set." - echo -n "Setting host of states db to \"0.0.0.0\" to allow external communication... " + echo "IOB_MULTIHOST is set to \"master\" and no external states db is set." + echo -n "Setting host of states db to \"0.0.0.0\" to allow external connections... " jq --arg statesdbhost "0.0.0.0" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json echo 'Done.' elif [[ "$multihost" = "master" && "$statesdbhost" = "127.0.0.1" ]]; then - echo "Multihost is set as \"master\" by ENV. But states db host is set to \"127.0.0.1\" by ENV too." - echo "This configuration will not work! Please change or remove ENV \"IOB_STATESDB_HOST\" and start over!" + echo "IOB_MULTIHOST is set to \"master\", but states db host is set to \"127.0.0.1\"." + echo "This configuration will not allow slaves to connect to objects db! Please change or remove \"IOB_STATESDB_HOST\" and start over!" echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 elif [[ "$multihost" = "master" && "$statesdbtype" != "" && "$statesdbhost" != "" && "$statesdbport" != "" ]]; then - echo "Multihost is set as \"master\" by ENV and external states db is set." + echo "IOB_MULTIHOST is set to \"master\" and external states db is set." elif ([[ "$multihost" = "slave" && "$statesdbtype" = "" ]]) || ([[ "$multihost" = "slave" && "$statesdbhost" = "" ]]) || ([[ "$multihost" = "slave" && "$statesdbport" = "" ]]); then - echo "Multihost is set as \"slave\" by ENV. But no external states db is set." + echo "IOB_MULTIHOST is set to \"slave\", but no external states db is set." echo "You have to configure ENVs \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESDB_PORT\" to connect to a maser states db." - echo "Please check your settings and start over." + echo "Please check your settings and start over!" echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 elif [[ "$multihost" = "slave" && "$statesdbtype" != "" && "$statesdbhost" != "" && "$statesdbport" != "" ]]; then - echo "Multihost is set as \"slave\" by ENV and external states db is set." + echo "IOB_MULTIHOST is set to \"slave\" and external states db is set." elif [[ "$multihost" != "" ]]; then - echo "Multihost is set but it seems like some configuration is missing." + echo "IOB_MULTIHOST is set, but it seems like some configuration is missing." echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESTDB_PORT\" correctly and start over." echo "For more information see ioBroker Docker image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." exit 1 @@ -377,7 +371,7 @@ fi # Checking ENVs for custom setup of objects db if [[ "$objectsdbtype" != "" || "$objectsdbhost" != "" || "$objectsdbport" != "" ]]; then - echo "Checking custom settings for objects db..." + echo "Checking for custom objects db settings ..." if [[ "$objectsdbtype" != "$(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then echo "IOB_OBJECTSDB_TYPE is set and value is different from detected ioBroker installation." echo -n "Setting type of objects db to \""$objectsdbtype"\"... " @@ -411,7 +405,7 @@ fi # Checking ENVs for custom setup of states db if [[ "$statesdbtype" != "" || "$statesdbhost" != "" || "$statesdbport" != "" ]]; then - echo "Checking custom settings for states db..." + echo "Checking for custom states db settings..." if [[ "$statesdbtype" != "$(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then echo "IOB_STATESDB_TYPE is set and value is different from detected ioBroker installation." echo -n "Setting type of states db to \""$statesdbtype"\"... " diff --git a/docs/README_docker_hub_buanet.md b/docs/README_docker_hub_buanet.md index f8ff613..84f49b3 100644 --- a/docs/README_docker_hub_buanet.md +++ b/docs/README_docker_hub_buanet.md @@ -110,6 +110,7 @@ You could use environment variables to auto configure your ioBroker container on ### Configure environment: +* `DEBUG` (optional, default: false) Set true to get extended logging messages on container startup * `LANG` (optional, default: de_DE.UTF‑8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 * `LANGUAGE` (optional, default: de_DE:de) The following locales are pre-generated: de_DE:de, en_US:en * `LC_ALL` (optional, default: de_DE.UTF-8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 diff --git a/docs/README_docker_hub_iobroker.md b/docs/README_docker_hub_iobroker.md index ef02725..4936209 100644 --- a/docs/README_docker_hub_iobroker.md +++ b/docs/README_docker_hub_iobroker.md @@ -111,6 +111,7 @@ You could use environment variables to auto configure your ioBroker container on ### Configure environment: +* `DEBUG` (optional, default: false) Set true to get extended logging messages on container startup * `LANG` (optional, default: de_DE.UTF‑8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 * `LANGUAGE` (optional, default: de_DE:de) The following locales are pre-generated: de_DE:de, en_US:en * `LC_ALL` (optional, default: de_DE.UTF-8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 From 1cf44af683ae4dca4bdbb68c494d79560f2936a4 Mon Sep 17 00:00:00 2001 From: buanet Date: Thu, 13 Oct 2022 14:01:02 +0200 Subject: [PATCH 11/11] change logging header --- debian/scripts/iobroker_startup.sh | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/debian/scripts/iobroker_startup.sh b/debian/scripts/iobroker_startup.sh index ff12ecf..6e1abf7 100644 --- a/debian/scripts/iobroker_startup.sh +++ b/debian/scripts/iobroker_startup.sh @@ -36,27 +36,31 @@ echo ' ' echo "$(printf -- '-%.0s' {1..80})" echo -n "$(printf -- '-%.0s' {1..25})" && echo -n " "$dati" " && echo "$(printf -- '-%.0s' {1..25})" echo "$(printf -- '-%.0s' {1..80})" -echo ' ' -echo "$(printf -- '-%.0s' {1..80})" +echo '----- -----' +echo "----- ██╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ ██████╗ -----" +echo "----- ██║ ██╔═══██╗ ██╔══██╗ ██╔══██╗ ██╔═══██╗ ██║ ██╔╝ ██╔════╝ ██╔══██╗ -----" +echo "----- ██║ ██║ ██║ ██████╔╝ ██████╔╝ ██║ ██║ █████╔╝ █████╗ ██████╔╝ -----" +echo "----- ██║ ██║ ██║ ██╔══██╗ ██╔══██╗ ██║ ██║ ██╔═██╗ ██╔══╝ ██╔══██╗ -----" +echo "----- ██║ ╚██████╔╝ ██████╔╝ ██║ ██║ ╚██████╔╝ ██║ ██╗ ███████╗ ██║ ██║ -----" +echo "----- ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ -----" +echo '----- -----' echo "----- Welcome to your ioBroker Docker container! -----" echo "----- Startupscript is now running! -----" echo "----- Please be patient! -----" echo "$(printf -- '-%.0s' {1..80})" echo ' ' echo "$(printf -- '-%.0s' {1..80})" -echo "----- System -----" +echo "----- System Information -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" arch: $(uname -m))" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" hostname: $(hostname))" && echo " -----" echo "----- -----" -echo "----- Docker-Image -----" +echo "----- Version Information -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" image: ${VERSION})" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" build: ${BUILD})" && echo " -----" -echo "----- -----" -echo "----- Versions -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" node: $(node -v))" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" npm: $(npm -v))" && echo " -----" echo "----- -----" -echo "----- ENV -----" +echo "----- Environment Variables -----" if [[ "$adminport" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_ADMINPORT: $adminport)" && echo " -----"; fi if [[ "$avahi" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" AVAHI: $avahi)" && echo " -----"; fi if [[ "$debug" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" DEBUG: $debug)" && echo " -----"; fi