Compare commits

..

6 Commits

Author SHA1 Message Date
buanet
2eb7f4e71f fix typo 2023-11-06 18:14:25 +01:00
buanet
b626063647 enhance logging/ fix typos 2023-11-06 16:57:56 +01:00
buanet
cef5ed1ef5 fix typos in logging 2023-11-06 16:53:34 +01:00
buanet
68b285d55f update comment 2023-11-06 16:01:12 +01:00
buanet
e1910d6f3b add logging for new env 2023-11-06 15:55:15 +01:00
buanet
bc483cc5f0 small enhancements for beta testing 2023-11-06 15:49:22 +01:00
7 changed files with 43 additions and 34 deletions

View File

@@ -1 +1 @@
v9.1.0-beta.1 v9.1.0-beta.2

View File

@@ -1,11 +1,16 @@
## Changelog ## Changelog
### v9.1.0-beta.1 (03.11.2023) ### v9.1.0-beta.2 (coming soon)
* improve maintenance command by symlinking ([#390](https://github.com/buanet/ioBroker.docker/issues/390)) * enhance logging/ fix typos
* fix restore/ adding backup file selection ([#394](https://github.com/buanet/ioBroker.docker/issues/394)) * add env PACKAGES_UPDATE and remove automatic package updates on first container start
* fix calling iob start|stop with parameters * improve setuid/setgid handling during startup ([#397](https://github.com/buanet/ioBroker.docker/issues/397))
* enhance logging in iobroker_startup.sh * move maintenance script registration to dockerfile ([#390](https://github.com/buanet/ioBroker.docker/issues/390))
* add error handling for user scripts * v9.1.0-beta.1 (03.11.2023)
* improve maintenance command by symlinking ([#390](https://github.com/buanet/ioBroker.docker/issues/390))
* fix restore/ adding backup file selection ([#394](https://github.com/buanet/ioBroker.docker/issues/394))
* fix calling iob start|stop with parameters
* enhance logging in iobroker_startup.sh
* add error handling for user scripts
### v9.0.1 (10.10.2023) ### v9.0.1 (10.10.2023)
* fix issue with avahi setup ([#384](https://github.com/buanet/ioBroker.docker/issues/384); [#385 by @z1r0](https://github.com/buanet/ioBroker.docker/pull/385)) * fix issue with avahi setup ([#384](https://github.com/buanet/ioBroker.docker/issues/384); [#385 by @z1r0](https://github.com/buanet/ioBroker.docker/pull/385))

View File

@@ -75,6 +75,10 @@ RUN apt-get update && apt-get upgrade -y \
&& chown -R iobroker:iobroker /opt/scripts /opt/userscripts \ && chown -R iobroker:iobroker /opt/scripts /opt/userscripts \
&& chmod 755 /opt/scripts/*.sh \ && chmod 755 /opt/scripts/*.sh \
&& chmod 755 /opt/userscripts/*.sh \ && chmod 755 /opt/userscripts/*.sh \
# register maintenance command
&& ln -s /opt/scripts/maintenance.sh /bin/maintenance \
&& ln -s /opt/scripts/maintenance.sh /bin/maint \
&& ln -s /opt/scripts/maintenance.sh /bin/m \
# Clean up installation cache # Clean up installation cache
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& apt-get autoclean -y \ && apt-get autoclean -y \

View File

@@ -17,17 +17,18 @@ offlinemode=$OFFLINE_MODE
objectsdbhost=$IOB_OBJECTSDB_HOST objectsdbhost=$IOB_OBJECTSDB_HOST
objectsdbport=$IOB_OBJECTSDB_PORT objectsdbport=$IOB_OBJECTSDB_PORT
objectsdbtype=$IOB_OBJECTSDB_TYPE objectsdbtype=$IOB_OBJECTSDB_TYPE
objectsdbname=$IOB_OBJECTSDB_NAME # new for sentinel support objectsdbname=$IOB_OBJECTSDB_NAME
objectsdbpass=$IOB_OBJECTSDB_PASS # new for auth support objectsdbpass=$IOB_OBJECTSDB_PASS
packages=$PACKAGES packages=$PACKAGES
packagesupdate=$PACKAGES_UPDATE
permissioncheck=$PERMISSION_CHECK permissioncheck=$PERMISSION_CHECK
setgid=$SETGID setgid=$SETGID
setuid=$SETUID setuid=$SETUID
statesdbhost=$IOB_STATESDB_HOST statesdbhost=$IOB_STATESDB_HOST
statesdbport=$IOB_STATESDB_PORT statesdbport=$IOB_STATESDB_PORT
statesdbtype=$IOB_STATESDB_TYPE statesdbtype=$IOB_STATESDB_TYPE
statesdbname=$IOB_STATESDB_NAME # new for sentinel support statesdbname=$IOB_STATESDB_NAME
statesdbpass=$IOB_STATESDB_PASS # new for auth support statesdbpass=$IOB_STATESDB_PASS
usbdevices=$USBDEVICES usbdevices=$USBDEVICES
set -u set -u
@@ -99,6 +100,7 @@ if [[ "$statesdbname" != "" ]]; then echo -n "----- " && echo
if [[ "$statesdbpass" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_PASS: "***")" && echo " -----"; fi if [[ "$statesdbpass" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_PASS: "***")" && echo " -----"; fi
if [[ "$offlinemode" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" OFFLINE_MODE: "$offlinemode")" && 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 [[ "$packages" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PACKAGES: "$packages")" && echo " -----"; fi
if [[ "$packagesupdate" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PACKAGES_UPDATE: "$packagesupdate")" && echo " -----"; fi
if [[ "$permissioncheck" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PERMISSION_CHECK: "$permissioncheck")" && echo " -----"; fi if [[ "$permissioncheck" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PERMISSION_CHECK: "$permissioncheck")" && echo " -----"; fi
if [[ "$setgid" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETGID: "$setgid")" && 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 [[ "$setuid" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETUID: "$setuid")" && echo " -----"; fi
@@ -123,7 +125,7 @@ fi
# STEP 1 - Preparing container # STEP 1 - Preparing container
##### #####
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo "----- Step 1 of 5: Preparing container -----" echo "----- Step 1 of 5: Preparing Container -----"
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo " " echo " "
@@ -132,10 +134,12 @@ if [[ -f /opt/.docker_config/.first_run ]]; then
# Updating Linux packages # Updating Linux packages
if [[ "$offlinemode" = "true" ]]; then if [[ "$offlinemode" = "true" ]]; then
echo "OFFLINE_MODE is \"true\". Skipping Linux package updates on first run." echo "OFFLINE_MODE is \"true\". Skipping Linux package updates on first run."
else echo " "
elif [[ "$packagesupdate" = "true" ]]; then
if ! bash /opt/scripts/setup_packages.sh -update; then echo "Failed."; fi if ! bash /opt/scripts/setup_packages.sh -update; then echo "Failed."; fi
echo " "
fi fi
echo " "
# Installing packages from ENV # Installing packages from ENV
if [[ "$packages" != "" && "$offlinemode" = "true" ]]; then if [[ "$packages" != "" && "$offlinemode" = "true" ]]; then
echo "PACKAGES is set, but OFFLINE_MODE is \"true\". Skipping Linux package installation." echo "PACKAGES is set, but OFFLINE_MODE is \"true\". Skipping Linux package installation."
@@ -144,19 +148,13 @@ if [[ -f /opt/.docker_config/.first_run ]]; then
if ! bash /opt/scripts/setup_packages.sh -install; then echo "Failed."; fi if ! bash /opt/scripts/setup_packages.sh -install; then echo "Failed."; fi
fi fi
echo " " echo " "
# Register maintenance script
echo -n "Registering maintenance script as command... "
ln -s /opt/scripts/maintenance.sh /bin/maintenance
ln -s /opt/scripts/maintenance.sh /bin/maint
ln -s /opt/scripts/maintenance.sh /bin/m
echo "Done."
else else
echo "This is not the first run of this container. Skipping first run preparation." echo "This is not the first run of this container. Skipping first run preparation."
fi fi
echo " " echo " "
# Setting UID and/ or GID # 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 if [[ "$setgid" != "$(id -u iobroker)" || "$setuid" != "$(id -g iobroker)" ]]; then
echo "SETUID and/ or SETGID are set to custom values." echo "SETUID and/ or SETGID are set to custom values."
echo -n "Changing UID to \"""$setuid""\" and GID to \"""$setgid""\"... " echo -n "Changing UID to \"""$setuid""\" and GID to \"""$setgid""\"... "
usermod -u "$setuid" iobroker usermod -u "$setuid" iobroker
@@ -172,7 +170,7 @@ cd /opt/iobroker
# STEP 2 - Detecting ioBroker-Installation # STEP 2 - Detecting ioBroker-Installation
##### #####
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo "----- Step 2 of 5: Detecting ioBroker installation -----" echo "----- Step 2 of 5: Detecting ioBroker Installation -----"
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo " " echo " "
@@ -186,10 +184,10 @@ elif [[ -f /opt/iobroker/iobroker ]]; 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 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 "IoBroker backup file detected in /opt/iobroker." echo "IoBroker backup file detected in /opt/iobroker."
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Backup file name: " "$(ls *_backupiobroker.tar.gz)"; fi if [[ "$debug" == "true" ]]; then echo "[DEBUG] Backup file name: " "$(ls *_backupiobroker.tar.gz)"; fi
echo "Since Docker Image v8, automatic initial restore is no longer supported!" echo "Since Docker image v8, automatic initial restore is no longer supported!"
echo "IoBroker will start with a fresh installation, while your backup file will be copied into the backup directory." echo "IoBroker will start with a fresh installation, while your backup file will be copied into the backup directory."
echo "You will be able to restore your backup file manually by using the backitup adapter or the containers maintenance script." echo "You will be able to restore your backup file manually by using the backitup adapter or the containers maintenance script."
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." echo "For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
echo " " echo " "
echo -n "Copying backup file and restoring initial ioBroker installation... " echo -n "Copying backup file and restoring initial ioBroker installation... "
mv /opt/iobroker/*.tar.gz /opt/ mv /opt/iobroker/*.tar.gz /opt/
@@ -214,11 +212,11 @@ echo " "
# STEP 3 - Checking ioBroker-Installation # STEP 3 - Checking ioBroker-Installation
##### #####
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo "----- Step 3 of 5: Checking ioBroker installation -----" echo "----- Step 3 of 5: Checking ioBroker Installation -----"
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo " " echo " "
# Backing up original iobroker executable to fix sudo bug with gosu # Backing up and replace original iobroker executable to fix sudo bug with gosu
if [[ -n $(cmp /opt/scripts/iobroker.sh /opt/iobroker/iobroker) ]]; then if [[ -n $(cmp /opt/scripts/iobroker.sh /opt/iobroker/iobroker) ]]; then
echo -n "Replacing ioBroker executable to fix sudo bug... " echo -n "Replacing ioBroker executable to fix sudo bug... "
cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak
@@ -299,7 +297,7 @@ elif [[ "$multihost" == "" || "$multihost" == "false" ]]; then
else else
echo "IOB_MULTIHOST is set, but the value is not valid. Please check your configuration." echo "IOB_MULTIHOST is set, but the value is not valid. Please check your configuration."
if [[ "$debug" == "true" ]]; then echo "[DEBUG] IOB_MULTIHOST = ""$multihost"; fi if [[ "$debug" == "true" ]]; then echo "[DEBUG] IOB_MULTIHOST = ""$multihost"; fi
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/#environment-variables-env)." echo "For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/#environment-variables-env)."
stop_on_error stop_on_error
fi fi
@@ -321,7 +319,7 @@ if [[ -f /opt/iobroker/.fresh_install && "$multihost" != "slave" ]]; then
echo "Done." echo "Done."
echo " " echo " "
else else
echo -n "Checking Database connection... " echo -n "Checking database connection... "
set +e set +e
if gosu iobroker iob uuid &> /dev/null; then if gosu iobroker iob uuid &> /dev/null; then
echo "Done." echo "Done."
@@ -334,7 +332,7 @@ else
echo "$errormsg" echo "$errormsg"
fi fi
echo "Please check your configuration and try again." echo "Please check your configuration and try again."
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs)." echo "For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs)."
stop_on_error stop_on_error
fi fi
set -e set -e
@@ -421,12 +419,12 @@ fi
# STEP 4 - Setting up special sessting for ioBroker-adapters # STEP 4 - Setting up special sessting for ioBroker-adapters
##### #####
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo "----- Step 4 of 5: Applying special settings -----" echo "----- Step 4 of 5: Applying Special Settings -----"
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo " " echo " "
echo "Some adapters have special requirements/ settings which can be activated by the use of environment variables." echo "Some adapters have special requirements/ settings which can be activated by the use of environment variables."
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." echo "For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
echo " " echo " "
# Checking ENV for Adminport # Checking ENV for Adminport
@@ -478,7 +476,7 @@ if [[ "$usbdevices" != "" && "$usbdevices" != "none" ]]; then
else else
echo "Looks like the device \"""$i""\" does not exist." echo "Looks like the device \"""$i""\" does not exist."
echo "Did you mount it correctly by using the \"--device\" option?" echo "Did you mount it correctly by using the \"--device\" option?"
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/#mounting-usb-devices)." echo "For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/#mounting-usb-devices)."
stop_on_error stop_on_error
fi fi
done done
@@ -524,7 +522,7 @@ if [[ -f /opt/iobroker/.fresh_install ]]; then rm -f /opt/iobroker/.fresh_instal
# STEP 5 - Starting ioBroker # STEP 5 - Starting ioBroker
##### #####
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo "----- Step 5 of 5: ioBroker startup -----" echo "----- Step 5 of 5: ioBroker Startup -----"
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo " " echo " "
echo "Starting ioBroker... " echo "Starting ioBroker... "

View File

@@ -58,7 +58,7 @@ if [[ "$1" == "-install" ]]; then
fi fi
done done
elif [[ "$1" == "-update" ]]; then elif [[ "$1" == "-update" ]]; then
echo -n "Updating Linux packages on first run... " echo -n "PACKAGES_UPDATE is set. Updating Linux packages on first run... "
apt-get -q update >> /opt/scripts/setup_packages.log 2>&1 apt-get -q update >> /opt/scripts/setup_packages.log 2>&1
return1=$? return1=$?
apt-get -q -y upgrade >> /opt/scripts/setup_packages.log 2>&1 apt-get -q -y upgrade >> /opt/scripts/setup_packages.log 2>&1

View File

@@ -124,6 +124,7 @@ You could use environment variables to auto configure your ioBroker container on
* `LC_ALL` (optional, default: de_DE.UTF-8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 * `LC_ALL` (optional, default: de_DE.UTF-8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8
* `OFFLINE_MODE` (optional) Set `true` if your container has no or limited internet connection * `OFFLINE_MODE` (optional) Set `true` if your container has no or limited internet connection
* `PACKAGES` (optional) Install additional Linux packages to your container, packages should be separated by whitespace like this: `package1 package2 package3`. * `PACKAGES` (optional) Install additional Linux packages to your container, packages should be separated by whitespace like this: `package1 package2 package3`.
* `PACKAGES_UPDATE` (optional) Set `true` if you want to apply Linux package updates at the first start of a new container.
* `PERMISSION_CHECK` (optional, default: true) Set "false" to skip checking and correcting all relevant permissions on container startup (Use at own risk!!!) * `PERMISSION_CHECK` (optional, default: true) Set "false" to skip checking and correcting all relevant permissions on container startup (Use at own risk!!!)
* `SETGID` (default: 1000) In some cases it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host * `SETGID` (default: 1000) In some cases it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host
* `SETUID` (default: 1000) In some cases it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host * `SETUID` (default: 1000) In some cases it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host

View File

@@ -126,6 +126,7 @@ You could use environment variables to auto configure your ioBroker container on
* `LC_ALL` (optional, default: de_DE.UTF-8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 * `LC_ALL` (optional, default: de_DE.UTF-8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8
* `OFFLINE_MODE` (optional) Set `true` if your container has no or limited internet connection * `OFFLINE_MODE` (optional) Set `true` if your container has no or limited internet connection
* `PACKAGES` (optional) Install additional Linux packages to your container, packages should be separated by whitespace like this: `package1 package2 package3`. * `PACKAGES` (optional) Install additional Linux packages to your container, packages should be separated by whitespace like this: `package1 package2 package3`.
* `PACKAGES_UPDATE` (optional) Set `true` if you want to apply Linux package updates at the first start of a new container.
* `PERMISSION_CHECK` (optional, default: true) Set "false" to skip checking and correcting all relevant permissions on container startup (Use at own risk!!!) * `PERMISSION_CHECK` (optional, default: true) Set "false" to skip checking and correcting all relevant permissions on container startup (Use at own risk!!!)
* `SETGID` (default: 1000) In some cases it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host * `SETGID` (default: 1000) In some cases it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host
* `SETUID` (default: 1000) In some cases it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host * `SETUID` (default: 1000) In some cases it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host