Compare commits

..

24 Commits

Author SHA1 Message Date
André Germann
721c108742 Merge pull request #340 from buanet/feature/issue-329/add-influx-repo
Feature/issue 329/add influx repo
2023-04-26 21:48:06 +02:00
buanet
7a455952dd enhance maintenance script 2023-04-25 22:30:15 +02:00
André Germann
a04f210190 Merge pull request #339 from buanet/beta
update feature branch
2023-04-25 21:29:05 +02:00
André Germann
0f59839695 Merge pull request #338 from buanet/temp_main
moving hotfix to beta
2023-04-25 21:22:24 +02:00
André Germann
4f15a4df23 Merge branch 'beta' into temp_main 2023-04-25 21:22:05 +02:00
buanet
686b391119 docu 2023-04-25 21:15:29 +02:00
buanet
d5a6596070 update version 2023-04-25 21:07:38 +02:00
buanet
7af5507f11 update docker hub readme 2023-04-18 10:05:13 +02:00
André Germann
2e767eab3d Merge pull request #336 from buanet/hotfix/issue-335/avoid_setup_first_on_slaves
Hotfix v8.0.1
2023-04-17 20:51:07 +02:00
André Germann
97c5e4993d Update CHANGELOG.md 2023-04-17 20:50:30 +02:00
André Germann
568bfab015 Merge branch 'main' into hotfix/issue-335/avoid_setup_first_on_slaves 2023-04-17 20:48:23 +02:00
buanet
551dc98282 Hotfix v8.0.1 2023-04-17 20:13:50 +02:00
buanet
8c9279b867 enhance output 2023-04-16 23:03:23 +02:00
buanet
065d0cb4df syntax change 2023-04-16 22:14:03 +02:00
buanet
acad72922e testing 2023-04-16 21:55:23 +02:00
buanet
8fe4d775f5 testing 2023-04-16 15:16:37 +02:00
buanet
e283d25710 small fixes 2023-04-16 14:57:10 +02:00
buanet
f60c87388c remove cache 2023-04-16 13:59:37 +02:00
buanet
893908f29d fix typo 2023-04-16 13:44:18 +02:00
buanet
16e30c392d fix typo 2023-04-16 01:10:05 +02:00
buanet
a954b51223 small fixes 2023-04-16 00:54:15 +02:00
buanet
6a55923669 add check for package validity 2023-04-16 00:08:10 +02:00
buanet
bbac132f28 testing influx repo integration 2023-04-15 22:30:19 +02:00
buanet
9afa6646c2 update changelog 2023-04-14 21:59:40 +02:00
9 changed files with 101 additions and 51 deletions

View File

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

View File

@@ -75,9 +75,6 @@ jobs:
ghcr.io/buanet/iobroker:${{ env.version }} ghcr.io/buanet/iobroker:${{ env.version }}
provenance: false provenance: false
outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Official Docker image for ioBroker smarthome software (https://www.iobroker.net) outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Official Docker image for ioBroker smarthome software (https://www.iobroker.net)
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Delete untagged images from GitHub packages - name: Delete untagged images from GitHub packages
uses: actions/github-script@v6 uses: actions/github-script@v6

View File

@@ -67,8 +67,6 @@ jobs:
ghcr.io/buanet/iobroker:dev ghcr.io/buanet/iobroker:dev
provenance: false provenance: false
outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Official Docker image for ioBroker smarthome software (https://www.iobroker.net) outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Official Docker image for ioBroker smarthome software (https://www.iobroker.net)
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Delete untagged images from GitHub Container Registry - name: Delete untagged images from GitHub Container Registry
uses: actions/github-script@v6.4.1 uses: actions/github-script@v6.4.1

View File

@@ -1,10 +1,16 @@
## Changelog ## Changelog
### v8.1.0-beta.1 (coming soon) ### v8.1.0-beta.2 (coming soon)
* enhance github actions * prohibit restore when startup script is still running
* enhance log output of maintenance script on restore ([#333](https://github.com/buanet/ioBroker.docker/issues/333)) * extend time before restart after restore is done
* allow iobroker admin to be disabled at startup ([#332](https://github.com/buanet/ioBroker.docker/issues/332)) * v8.1.0-beta.1 (14.04.2023)
* allow deletion of objects and states db password with value "none" ([#306](https://github.com/buanet/ioBroker.docker/issues/306)) * enhance github actions
* enhance log output of maintenance script on restore ([#333](https://github.com/buanet/ioBroker.docker/issues/333))
* allow iobroker admin to be disabled at startup ([#332](https://github.com/buanet/ioBroker.docker/issues/332))
* allow deletion of objects and states db password with value "none" ([#306](https://github.com/buanet/ioBroker.docker/issues/306))
### v8.0.1 (17.04.2023)
* fix calling of "iob setup first" on slaves ([#335](https://github.com/buanet/ioBroker.docker/issues/335))
### v8.0.0 (20.03.2023) ### v8.0.0 (20.03.2023)
* update readme and docs * update readme and docs

View File

@@ -143,9 +143,10 @@ if [[ -f /opt/.first_run ]]; 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."
elif [[ "$packages" != "" ]]; then elif [[ "$packages" != "" ]]; then
echo "PACKAGES is set. Installing the following additional Linux packages: ""$packages" echo "PACKAGES is set. Installing the following additional Linux packages: ""$packages"
echo "$packages" > /opt/scripts/.docker_config/.packages # echo "$packages" > /opt/scripts/.docker_config/.packages
bash /opt/scripts/setup_packages.sh -install bash /opt/scripts/setup_packages.sh -install
fi fi
echo ' '
# Register maintenance script # Register maintenance script
echo -n 'Registering maintenance script as command... ' echo -n 'Registering maintenance script as command... '
echo "alias maintenance=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc echo "alias maintenance=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc
@@ -302,8 +303,8 @@ else
stop_on_error stop_on_error
fi fi
# if restored a fresh install, runing "iob setup first" for database init, otherwise check database connection # if restored a fresh install, running "iob setup first" for database init (but not on slaves!), otherwise check database connection
if [[ -f /opt/iobroker/.fresh_install ]]; then if [[ -f /opt/iobroker/.fresh_install && "$multihost" != "slave" ]]; then
echo -n "Initializing a fresh installation of ioBroker... " echo -n "Initializing a fresh installation of ioBroker... "
set +e set +e
bash iob setup first > /opt/iobroker/log/iob_setup_first.log 2>&1 bash iob setup first > /opt/iobroker/log/iob_setup_first.log 2>&1

View File

@@ -38,6 +38,11 @@ maintenance_enabled() {
[[ -f "$healthcheck" && "$(cat "$healthcheck")" == maintenance ]] [[ -f "$healthcheck" && "$(cat "$healthcheck")" == maintenance ]]
} }
# check status starting
check_starting() {
[[ -f "$healthcheck" && "$(cat "$healthcheck")" == starting ]]
}
# display maintenance status # display maintenance status
maintenance_status() { maintenance_status() {
if maintenance_enabled; then if maintenance_enabled; then
@@ -221,6 +226,8 @@ restart_container() {
# restore iobroker # restore iobroker
restore_iobroker() { restore_iobroker() {
echo 'You are now going to perform a restore of your iobroker.' echo 'You are now going to perform a restore of your iobroker.'
echo 'During the restore process, the container will automatically switch into maintenance mode and stop ioBroker.'
echo 'Depending on the restart policy, your container will be stopped or restarted automatically after the restore.'
if [[ "$autoconfirm" != yes ]]; then if [[ "$autoconfirm" != yes ]]; then
local reply local reply
@@ -235,11 +242,17 @@ restore_iobroker() {
echo 'This command was already confirmed by the -y or --yes option.' echo 'This command was already confirmed by the -y or --yes option.'
fi fi
echo -n 'Stopping ioBroker...' if check_starting > /dev/null; then
stop_iob echo "Startup script is still running."
echo "Please check container log and wait until ioBroker is sucessfully started."
echo "Then try again."
return 1
fi
# fixing permission errors during restore if ! maintenance_enabled > /dev/null; then
#chown -R $setuid:$setgid /opt/iobroker/backup autoconfirm=yes
enable_maintenance
fi
echo -n "Restoring ioBroker... " echo -n "Restoring ioBroker... "
set +e set +e
@@ -263,8 +276,8 @@ restore_iobroker() {
echo "!!!! You can view installation process by taking a look at ioBroker log. !!!!" echo "!!!! You can view installation process by taking a look at ioBroker log. !!!!"
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
sleep 10 sleep 10
echo 'Container will be stopped or restarted in 5 seconds...' echo 'Container will be stopped or restarted in 10 seconds...'
sleep 5 sleep 10
echo 'stopping' > "$healthcheck" echo 'stopping' > "$healthcheck"
pkill -u root pkill -u root
} }

View File

@@ -1,36 +1,69 @@
#!/bin/bash #!/bin/bash
# bash strict mode
set -euo pipefail
# Reading ENV
set +u
packages=$PACKAGES
debug=$DEBUG
set -u
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
if [ "$1" == "-install" ] check_package_preq() {
then # check for influx packages
apt-get -q update >> /opt/scripts/setup_packages.log 2>&1 if [[ "$i" == "influxdb" || "$i" == "influxdb2-cli" ]]; then
packages=$(cat /opt/scripts/.docker_config/.packages) # add influxdata repo keys
echo ' ' wget -qO- https://repos.influxdata.com/influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
for i in $packages; do echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
if [ "$(dpkg-query -W -f='${Status}' "$i" 2>/dev/null | grep -c "ok installed")" -eq 0 ]; apt-get -q update >> /opt/scripts/setup_packages.log 2>&1
then fi
echo -n "$i is not installed. Installing... " }
DEBIAN_FRONTEND=noninteractive apt-get -q -y install "$i" >> /opt/scripts/setup_packages.log 2>&1 check_package_validity() {
return=$? # check string for double spaces
if [[ "$return" -ne 0 ]]; then while echo "$packages" | grep -q ' '; do
echo "Failed." packages=$(echo "$packages" | sed 's/ / /g')
echo "For more details see \"/opt/scripts/setup_packages.log\"."
echo ' '
else
echo "Done."
fi
else
echo "$i is already installed."
fi
done done
elif [ "$1" == "-update" ]; then # remove packages when "influxdb" AND "influxdb2-cli"
if echo "$packages" | grep -qw "influxdb" && echo "$packages" | grep -qw "influxdb2-cli"; then
echo "PACKAGES includes influxdb AND influxdb2-cli."
echo "As installing both packages together is not possible, they will be skipped."
packages=$(echo "$packages" | sed 's/influxdb2-cli//g;s/influxdb//g')
# check string for double spaces again
while echo "$packages" | grep -q ' '; do
packages=$(echo "$packages" | sed 's/ / /g')
done
if [[ $debug == "true" ]]; then echo "[DEBUG] New list of packages: ""$packages"; fi
echo ' '
fi
}
if [[ "$1" == "-install" ]]; then
echo ' '
apt-get -q update >> /opt/scripts/setup_packages.log 2>&1
check_package_validity
for i in $packages; do
if ! dpkg -s "$i" >/dev/null 2>&1; then
echo -n "$i is not installed. Installing... "
check_package_preq >> /opt/scripts/setup_packages.log 2>&1
if ! apt-get -q -y install "$i" >> /opt/scripts/setup_packages.log 2>&1; then
echo "Failed."
echo "For more details see \"/opt/scripts/setup_packages.log\"."
else
echo "Done."
fi
else
echo "$i is already installed."
fi
done
elif [[ "$1" == "-update" ]]; then
echo -n "Updating Linux packages on first run... " echo -n "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
return=$?
apt-get -q -y upgrade >> /opt/scripts/setup_packages.log 2>&1
return1=$? return1=$?
if [[ "$return" -ne 0 || "$return1" -ne 0 ]]; then apt-get -q -y upgrade >> /opt/scripts/setup_packages.log 2>&1
return2=$?
if [[ "$return1" -ne 0 || "$return2" -ne 0 ]]; then
echo "Failed." echo "Failed."
echo "For more details see \"/opt/scripts/setup_packages.log\"." echo "For more details see \"/opt/scripts/setup_packages.log\"."
echo "Make sure the container has internet access to get the latest package updates." echo "Make sure the container has internet access to get the latest package updates."

View File

@@ -35,10 +35,11 @@ New major image versions (e.g. v6, v7, v8) always include a new major version of
It is highly recommended not to use the `latest` tag for production, especially when using any kind of automated update procedure like watchtower. Please use the `latest-v[major_version]` tag instead. It is highly recommended not to use the `latest` tag for production, especially when using any kind of automated update procedure like watchtower. Please use the `latest-v[major_version]` tag instead.
### Node 18 versions ### Node 18 versions
* [`v8.0.0`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`v8.0.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`v8.0.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`v8.0.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`latest-v8`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile) * [`v8.0.1`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`latest-v8`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile)
* [`v8.0.0`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile)
### Node 16 versions ### Node 16 versions
* [`v7.2.0`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile), [`v7.2.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile), [`v7.2.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile), [`v7.2.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile), [`latest-v7`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile) * [`v7.2.0`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile), [`latest-v7`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile)
* [`v7.1.2`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile) * [`v7.1.2`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile)
* [`v7.0.1`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile) * [`v7.0.1`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile)

View File

@@ -1,4 +1,4 @@
##### Note: The image provided as [iobroker/iobroker](https://hub.docker.com/r/iobroker/iobroker) is a duplicate of [buanet/iobroker](https://hub.docker.com/r/buanet/iobroker) ##### Note: The image provided as [iobroker/iobroker](https://hub.docker.com/r/iobroker/iobroker) is a mirror of [buanet/iobroker](https://hub.docker.com/r/buanet/iobroker)
<img src="https://github.com/buanet/ioBroker.docker/raw/main/docs/img/iobroker_logo.png" width="600" title="ioBroker Logo"> <img src="https://github.com/buanet/ioBroker.docker/raw/main/docs/img/iobroker_logo.png" width="600" title="ioBroker Logo">
@@ -37,10 +37,11 @@ New major image versions (e.g. v6, v7, v8) always include a new major version of
It is highly recommended not to use the `latest` tag for production, especially when using any kind of automated update procedure like watchtower. Please use the `latest-v[major_version]` tag instead. It is highly recommended not to use the `latest` tag for production, especially when using any kind of automated update procedure like watchtower. Please use the `latest-v[major_version]` tag instead.
### Node 18 versions ### Node 18 versions
* [`v8.0.0`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`v8.0.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`v8.0.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`v8.0.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`latest-v8`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile) * [`v8.0.1`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`latest-v8`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile)
* [`v8.0.0`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile)
### Node 16 versions ### Node 16 versions
* [`v7.2.0`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile), [`v7.2.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile), [`v7.2.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile), [`v7.2.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile), [`latest-v7`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile) * [`v7.2.0`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile), [`latest-v7`](https://github.com/buanet/ioBroker.docker/blob/v7.2.0/debian/node16/Dockerfile)
* [`v7.1.2`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile) * [`v7.1.2`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile), [`v7.1.2-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.1.2/debian/node16/Dockerfile)
* [`v7.0.1`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile) * [`v7.0.1`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile)