mirror of
https://github.com/buanet/ioBroker.docker.git
synced 2025-12-17 18:39:01 +02:00
Compare commits
23 Commits
v9.0.1
...
gui_for_ma
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c0ea8c2808 | ||
|
|
d1bbbfff58 | ||
|
|
11e30fa638 | ||
|
|
e5956c6faf | ||
|
|
feb02a7a33 | ||
|
|
3f3cfdb077 | ||
|
|
3a8e38b3ee | ||
|
|
fa9e09ed1b | ||
|
|
5c97b2a041 | ||
|
|
c6b0d307b5 | ||
|
|
59ffff608a | ||
|
|
6c34c0a081 | ||
|
|
92821ab262 | ||
|
|
2eb7f4e71f | ||
|
|
b626063647 | ||
|
|
cef5ed1ef5 | ||
|
|
68b285d55f | ||
|
|
e1910d6f3b | ||
|
|
bc483cc5f0 | ||
|
|
bf87667fc0 | ||
|
|
375d192c7c | ||
|
|
4738e035b5 | ||
|
|
814cfae657 |
2
.github/dependabot.yml
vendored
2
.github/dependabot.yml
vendored
@@ -5,4 +5,4 @@ updates:
|
|||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
target-branch: "main"
|
target-branch: "beta"
|
||||||
|
|||||||
10
.github/workflows/build-debian12-beta.yml
vendored
10
.github/workflows/build-debian12-beta.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
|||||||
run: echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
run: echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@v4.1.0
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
ref: ${{ env.RELEASE_TAG }}
|
ref: ${{ env.RELEASE_TAG }}
|
||||||
@@ -70,7 +70,7 @@ jobs:
|
|||||||
password: ${{ secrets.PACKAGES_PASS }}
|
password: ${{ secrets.PACKAGES_PASS }}
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
uses: docker/build-push-action@v5.0.0
|
uses: docker/build-push-action@v5.1.0
|
||||||
with:
|
with:
|
||||||
context: ./debian12
|
context: ./debian12
|
||||||
file: ./debian12/Dockerfile
|
file: ./debian12/Dockerfile
|
||||||
@@ -96,7 +96,7 @@ jobs:
|
|||||||
run: echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
run: echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@v4.1.0
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
ref: ${{ env.RELEASE_TAG }}
|
ref: ${{ env.RELEASE_TAG }}
|
||||||
@@ -142,7 +142,7 @@ jobs:
|
|||||||
password: ${{ secrets.PACKAGES_PASS }}
|
password: ${{ secrets.PACKAGES_PASS }}
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
uses: docker/build-push-action@v5.0.0
|
uses: docker/build-push-action@v5.1.0
|
||||||
with:
|
with:
|
||||||
context: ./debian12
|
context: ./debian12
|
||||||
file: ./debian12/Dockerfile
|
file: ./debian12/Dockerfile
|
||||||
@@ -166,7 +166,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Delete images
|
- name: Delete images
|
||||||
uses: actions/github-script@v6.4.1
|
uses: actions/github-script@v7.0.1
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.PACKAGES_PASS }}
|
github-token: ${{ secrets.PACKAGES_PASS }}
|
||||||
script: |
|
script: |
|
||||||
|
|||||||
10
.github/workflows/build-debian12-dev.yml
vendored
10
.github/workflows/build-debian12-dev.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@v4.1.0
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ jobs:
|
|||||||
password: ${{ secrets.PACKAGES_PASS }}
|
password: ${{ secrets.PACKAGES_PASS }}
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
uses: docker/build-push-action@v5.0.0
|
uses: docker/build-push-action@v5.1.0
|
||||||
with:
|
with:
|
||||||
context: ./debian12
|
context: ./debian12
|
||||||
file: ./debian12/Dockerfile
|
file: ./debian12/Dockerfile
|
||||||
@@ -85,7 +85,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@v4.1.0
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ jobs:
|
|||||||
password: ${{ secrets.PACKAGES_PASS }}
|
password: ${{ secrets.PACKAGES_PASS }}
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
uses: docker/build-push-action@v5.0.0
|
uses: docker/build-push-action@v5.1.0
|
||||||
with:
|
with:
|
||||||
context: ./debian12
|
context: ./debian12
|
||||||
file: ./debian12/Dockerfile
|
file: ./debian12/Dockerfile
|
||||||
@@ -150,7 +150,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Delete images
|
- name: Delete images
|
||||||
uses: actions/github-script@v6.4.1
|
uses: actions/github-script@v7.0.1
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.PACKAGES_PASS }}
|
github-token: ${{ secrets.PACKAGES_PASS }}
|
||||||
script: |
|
script: |
|
||||||
|
|||||||
10
.github/workflows/build-debian12-latest.yml
vendored
10
.github/workflows/build-debian12-latest.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
|||||||
echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV
|
echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@v4.1.0
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
ref: ${{ env.RELEASE_TAG }}
|
ref: ${{ env.RELEASE_TAG }}
|
||||||
@@ -64,7 +64,7 @@ jobs:
|
|||||||
password: ${{ secrets.PACKAGES_PASS }}
|
password: ${{ secrets.PACKAGES_PASS }}
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
uses: docker/build-push-action@v5.0.0
|
uses: docker/build-push-action@v5.1.0
|
||||||
with:
|
with:
|
||||||
context: ./debian12
|
context: ./debian12
|
||||||
file: ./debian12/Dockerfile
|
file: ./debian12/Dockerfile
|
||||||
@@ -94,7 +94,7 @@ jobs:
|
|||||||
echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV
|
echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@v4.1.0
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
ref: ${{ env.RELEASE_TAG }}
|
ref: ${{ env.RELEASE_TAG }}
|
||||||
@@ -133,7 +133,7 @@ jobs:
|
|||||||
password: ${{ secrets.DOCKER_PASS_IOB }}
|
password: ${{ secrets.DOCKER_PASS_IOB }}
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
uses: docker/build-push-action@v5.0.0
|
uses: docker/build-push-action@v5.1.0
|
||||||
with:
|
with:
|
||||||
context: ./debian12
|
context: ./debian12
|
||||||
file: ./debian12/Dockerfile
|
file: ./debian12/Dockerfile
|
||||||
@@ -156,7 +156,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Delete images
|
- name: Delete images
|
||||||
uses: actions/github-script@v6.4.1
|
uses: actions/github-script@v7.0.1
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.PACKAGES_PASS }}
|
github-token: ${{ secrets.PACKAGES_PASS }}
|
||||||
script: |
|
script: |
|
||||||
|
|||||||
2
.github/workflows/update-docker-readme.yml
vendored
2
.github/workflows/update-docker-readme.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
|||||||
update-docker-readme:
|
update-docker-readme:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.1
|
||||||
|
|
||||||
- name: Update Docker Hub Readme (buanet)
|
- name: Update Docker Hub Readme (buanet)
|
||||||
uses: peter-evans/dockerhub-description@v3.4.2
|
uses: peter-evans/dockerhub-description@v3.4.2
|
||||||
|
|||||||
2
.github/workflows/version-checks.yml
vendored
2
.github/workflows/version-checks.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@v4.1.0
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
token: ${{ secrets.ACTIONS_PAT }}
|
token: ${{ secrets.ACTIONS_PAT }}
|
||||||
|
|||||||
15
CHANGELOG.md
15
CHANGELOG.md
@@ -1,5 +1,20 @@
|
|||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
### v9.1.0-beta.3 (23.11.2023)
|
||||||
|
* add --force to restore in maintenance script
|
||||||
|
* improve shebang in scripts for downgrade and portability
|
||||||
|
* v9.1.0-beta.2 (06.11.2023)
|
||||||
|
* enhance logging/ fix typos
|
||||||
|
* add env PACKAGES_UPDATE and remove automatic package updates on first container start
|
||||||
|
* improve setuid/setgid handling during startup ([#397](https://github.com/buanet/ioBroker.docker/issues/397))
|
||||||
|
* move maintenance script registration to dockerfile ([#390](https://github.com/buanet/ioBroker.docker/issues/390))
|
||||||
|
* 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))
|
||||||
* add silent cleanup to setup_avahi.sh
|
* add silent cleanup to setup_avahi.sh
|
||||||
|
|||||||
@@ -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 \
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Script checks health of running container
|
# Script checks health of running container
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# run iob fix
|
# run iob fix
|
||||||
iob_fix () {
|
iob_fix () {
|
||||||
@@ -39,27 +39,48 @@ iob_diag () {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ "$1" = "fix" ]; then # call iobroker fixer
|
# run iobroker maintenance script
|
||||||
iob_fix
|
iob_maint() {
|
||||||
elif [ "$1" = "node fix" ]; then # call iobroker node fixer
|
|
||||||
echo "The execution of this command is blocked as your ioBroker is running inside a Docker container!"
|
|
||||||
echo "To fix any issues with nodejs, please pull the latest version of the Docker image and recreate your container."
|
|
||||||
elif [ "$1" = "diag" ]; then # call iobroker diag script
|
|
||||||
iob_diag
|
|
||||||
elif [ "$1" = "start" ] || [ "$1" = "stop" ] || [ "$1" = "restart" ]; then # block execution of iobroker start | stop | restart
|
|
||||||
echo "The execution of this command is blocked as your ioBroker is running inside a Docker container!"
|
|
||||||
echo "For more details see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/) or use the maintenance script 'maintenance --help'."
|
|
||||||
elif [ "$1" = "m" ] || [ "$1" = "maint" ] || [ "$1" = "maintenance" ]; then # call iobroker maintenance script
|
|
||||||
shift
|
shift
|
||||||
if [ "$(id -u)" -eq 0 ]; then # check for execution as root
|
if [ "$(id -u)" -eq 0 ]; then
|
||||||
gosu iobroker bash /opt/scripts/maintenance.sh "$@"
|
gosu iobroker bash /opt/scripts/maintenance.sh "$@"
|
||||||
else
|
else
|
||||||
bash /opt/scripts/maintenance.sh "$@"
|
bash /opt/scripts/maintenance.sh "$@"
|
||||||
fi
|
fi
|
||||||
else # passing all other parameters to iobroker.js
|
}
|
||||||
if [ "$(id -u)" -eq 0 ]; then # check for execution as root
|
|
||||||
|
# pass parameters and run iobroker.js
|
||||||
|
iob_run() {
|
||||||
|
if [ "$(id -u)" -eq 0 ]; then
|
||||||
gosu iobroker node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js "$@"
|
gosu iobroker node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js "$@"
|
||||||
else
|
else
|
||||||
node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js "$@"
|
node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js "$@"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$1" = "fix" ]; then
|
||||||
|
# call iobroker fixer
|
||||||
|
iob_fix
|
||||||
|
elif [ "$1" = "node fix" ]; then
|
||||||
|
# call iobroker node fixer
|
||||||
|
echo "The execution of this command is blocked as your ioBroker is running inside a Docker container!"
|
||||||
|
echo "To fix any issues with nodejs, please pull the latest version of the Docker image and recreate your container."
|
||||||
|
elif [ "$1" = "diag" ]; then
|
||||||
|
# call iobroker diag script
|
||||||
|
iob_diag
|
||||||
|
elif [ "$1" = "start" ] || [ "$1" = "stop" ] || [ "$1" = "restart" ]; then
|
||||||
|
# block execution of iobroker start | stop | restart but pass start | stop for adapters
|
||||||
|
if [ ! "$2" ]; then
|
||||||
|
echo "The execution of this command is blocked as your ioBroker is running inside a Docker container!"
|
||||||
|
echo "For more details see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/) or use the maintenance script 'maintenance --help'."
|
||||||
|
else
|
||||||
|
# passing all other parameters to iobroker.js but check for execution as root
|
||||||
|
iob_run "$@"
|
||||||
|
fi
|
||||||
|
elif [ "$1" = "m" ] || [ "$1" = "maint" ] || [ "$1" = "maintenance" ]; then
|
||||||
|
# call iobroker maintenance script but check for execution as root
|
||||||
|
iob_maint "$@"
|
||||||
|
else
|
||||||
|
# passing all other parameters to iobroker.js but check for execution as root
|
||||||
|
iob_run "$@"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -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,39 +134,27 @@ 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
|
|
||||||
if bash /opt/scripts/setup_packages.sh -update; then
|
|
||||||
echo " "
|
echo " "
|
||||||
else
|
elif [[ "$packagesupdate" = "true" ]]; then
|
||||||
echo "Error: Updating failed."
|
if ! bash /opt/scripts/setup_packages.sh -update; then echo "Failed."; fi
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo " "
|
echo " "
|
||||||
|
fi
|
||||||
|
|
||||||
# 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."
|
||||||
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"
|
||||||
if bash /opt/scripts/setup_packages.sh -install; then
|
if ! bash /opt/scripts/setup_packages.sh -install; then echo "Failed."; fi
|
||||||
echo " "
|
|
||||||
else
|
|
||||||
echo "Error: Installation failed."
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
echo " "
|
echo " "
|
||||||
# Register maintenance script
|
|
||||||
echo -n "Registering maintenance script as command... "
|
|
||||||
echo "alias maintenance='/opt/scripts/maintenance.sh'" >> /etc/bash.bashrc
|
|
||||||
echo "alias maint='/opt/scripts/maintenance.sh'" >> /etc/bash.bashrc
|
|
||||||
echo "alias m='/opt/scripts/maintenance.sh'" >> /etc/bash.bashrc
|
|
||||||
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
|
||||||
@@ -180,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 " "
|
||||||
|
|
||||||
@@ -194,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/
|
||||||
@@ -222,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
|
||||||
@@ -307,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
|
||||||
|
|
||||||
@@ -329,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."
|
||||||
@@ -342,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
|
||||||
@@ -429,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
|
||||||
@@ -486,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
|
||||||
@@ -505,17 +495,24 @@ elif [[ -f /opt/userscripts/userscript_firststart.sh || -f /opt/userscripts/user
|
|||||||
echo "Userscript for first start detected and this is the first start of a new container."
|
echo "Userscript for first start detected and this is the first start of a new container."
|
||||||
echo "Running userscript_firststart.sh... "
|
echo "Running userscript_firststart.sh... "
|
||||||
chmod 755 /opt/userscripts/userscript_firststart.sh
|
chmod 755 /opt/userscripts/userscript_firststart.sh
|
||||||
bash /opt/userscripts/userscript_firststart.sh
|
if ! bash /opt/userscripts/userscript_firststart.sh; then
|
||||||
|
echo "Failed."
|
||||||
|
else
|
||||||
echo "Done."
|
echo "Done."
|
||||||
fi
|
fi
|
||||||
|
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... "
|
echo "Userscript for every start detected. Running userscript_everystart.sh... "
|
||||||
chmod 755 /opt/userscripts/userscript_everystart.sh
|
chmod 755 /opt/userscripts/userscript_everystart.sh
|
||||||
bash /opt/userscripts/userscript_everystart.sh
|
if ! bash /opt/userscripts/userscript_everystart.sh; then
|
||||||
|
echo "Failed."
|
||||||
|
else
|
||||||
echo "Done."
|
echo "Done."
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
echo " "
|
||||||
fi
|
fi
|
||||||
echo " "
|
|
||||||
|
|
||||||
# Removing first run an fresh install markers when exists
|
# Removing first run an fresh install markers when exists
|
||||||
if [[ -f /opt/.docker_config/.first_run ]]; then rm -f /opt/.docker_config/.first_run; fi
|
if [[ -f /opt/.docker_config/.first_run ]]; then rm -f /opt/.docker_config/.first_run; fi
|
||||||
@@ -525,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... "
|
||||||
|
|||||||
@@ -165,12 +165,12 @@ stop_iob() {
|
|||||||
|
|
||||||
if [[ "$killbyname" != yes ]]; then
|
if [[ "$killbyname" != yes ]]; then
|
||||||
# pgrep exits with status 1 when there are no matches
|
# pgrep exits with status 1 when there are no matches
|
||||||
while pgrep -u iobroker -f 'io.' > /dev/null; (( $? != 1 )); do
|
while pgrep -u iobroker -f 'io\..' > /dev/null; (( $? != 1 )); do
|
||||||
if (($(date +%s) > timeout)); then
|
if (($(date +%s) > timeout)); then
|
||||||
echo -e "\nTimeout reached. Killing remaining processes..."
|
echo -e "\nTimeout reached. Killing remaining processes..."
|
||||||
pgrep --list-full -u iobroker
|
pgrep --list-full -u iobroker -f 'io\..'
|
||||||
pkill --signal SIGKILL -u iobroker -f 'io.'
|
pkill --signal SIGKILL -u iobroker -f 'io\..'
|
||||||
echo "\nDone."
|
echo "Done."
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
@@ -184,6 +184,7 @@ stop_iob() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "Done."
|
echo -e "Done."
|
||||||
|
echo " "
|
||||||
}
|
}
|
||||||
|
|
||||||
# restart container
|
# restart container
|
||||||
@@ -219,35 +220,122 @@ restore_iobroker() {
|
|||||||
echo "During the restore process, the container will automatically switch into maintenance mode and stop 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."
|
echo "Depending on the restart policy, your container will be stopped or restarted automatically after the restore."
|
||||||
|
|
||||||
|
# check autoconfirm
|
||||||
if [[ "$autoconfirm" != yes ]]; then
|
if [[ "$autoconfirm" != yes ]]; then
|
||||||
local reply
|
local reply
|
||||||
|
|
||||||
read -rp 'Do you want to continue [yes/no]? ' reply
|
read -rp 'Do you want to continue [yes/no]? ' reply
|
||||||
if [[ "$reply" == y || "$reply" == Y || "$reply" == yes ]]; then
|
if [[ "$reply" != y && "$reply" != Y && "$reply" != yes ]]; then
|
||||||
: # continue
|
|
||||||
else
|
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
echo " "
|
||||||
|
|
||||||
|
# check startup script running
|
||||||
if check_starting > /dev/null; then
|
if check_starting > /dev/null; then
|
||||||
echo "Startup script is still running."
|
echo "Startup script is still running."
|
||||||
echo "Please check container log and wait until ioBroker is sucessfully started."
|
echo "Please check container log and wait until ioBroker is sucessfully started."
|
||||||
echo "Then try again."
|
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# check mainenance mode
|
||||||
if ! maintenance_enabled > /dev/null; then
|
if ! maintenance_enabled > /dev/null; then
|
||||||
autoconfirm=yes
|
autoconfirm=yes
|
||||||
enable_maintenance
|
enable_maintenance
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -n "Restoring ioBroker... "
|
# list backup files
|
||||||
|
backup_dir="/opt/iobroker/backups"
|
||||||
|
backup_files=($(find $backup_dir -type f))
|
||||||
|
backup_count=${#backup_files[@]}
|
||||||
|
|
||||||
|
if [[ $backup_count -eq 0 ]]; then
|
||||||
|
echo "Ther are no backup files in $backup_dir."
|
||||||
|
echo "Please check and try again."
|
||||||
|
return 1
|
||||||
|
elif [[ $backup_count -eq 1 ]]; then
|
||||||
|
selected_backup=$(basename "${backup_files[0]}")
|
||||||
|
echo "Selected backup file is \"$selected_backup\"."
|
||||||
|
else
|
||||||
|
# more than one backup file found, ask user to select
|
||||||
|
echo "There are more than one backup file in \"$backup_dir\"."
|
||||||
|
echo ' '
|
||||||
|
echo "Please select file for restore:"
|
||||||
|
for ((i=0; i<$backup_count; i++)); do
|
||||||
|
echo "$i: $(basename "${backup_files[$i]}")"
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
|
||||||
|
read -rp "Enter the number of the backup to restore (0-$((backup_count - 1))): " selected_number
|
||||||
|
selected_backup=$(basename "${backup_files[$selected_number]}")
|
||||||
|
echo ' '
|
||||||
|
echo "Selected backup file is \"$selected_backup\"."
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# extract backup.json from backup
|
||||||
|
tar -xvzf $backup_dir/$selected_backup -C $backup_dir --strip-components=1 "backup/backup.json" > /dev/null 2>&1
|
||||||
|
# write js-controller versions from backup.json into array
|
||||||
|
jq_output=$(jq --arg TITLE "JS controller" -r '.objects[] | select(.value.common.title == $TITLE)' $backup_dir/backup.json)
|
||||||
|
# remove backup.json
|
||||||
|
rm $backup_dir/backup.json
|
||||||
|
|
||||||
|
result=()
|
||||||
|
while read -r line; do
|
||||||
|
entry=$(echo "$line" | jq -r '.value.common.installedVersion')
|
||||||
|
result+=("$entry")
|
||||||
|
done <<< "$(echo "$jq_output" | jq -c '.')"
|
||||||
|
|
||||||
|
# check for empty array
|
||||||
|
if [[ "${#result[@]}" -eq 0 ]]; then
|
||||||
|
echo "There was a problem detecting the js-controller version in the seclected backup file."
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
# check if all found js-controller versions are equal (for multihost systems!)
|
||||||
|
first_version=${result[0]}
|
||||||
|
all_versions_equal=true
|
||||||
|
for i in "${result[@]}"; do
|
||||||
|
version=$i
|
||||||
|
if [[ "$version" != "$first_version" ]]; then
|
||||||
|
all_versions_equal=false
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$all_versions_equal" != true ]]; then
|
||||||
|
echo "Detected different js-controller versions in the selected backup file."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# compare installed js-controller version with version from backup file
|
||||||
|
echo -n "Checking js-controller versions... "
|
||||||
|
installed_version=$(iob version js-controller)
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
echo "Installed js-controller version: $installed_version"
|
||||||
|
echo "Backup js-controller version: $first_version"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
if [[ "$first_version" != "$installed_version" ]]; then
|
||||||
|
echo "The installed js-controller version is different from the version in the selected backup file."
|
||||||
|
echo "If you continue, the script will use the \"--force\" option to restore your backup."
|
||||||
|
echo "Although this is normally safe with small version differences, you should know,"
|
||||||
|
echo "that the recommended way is to first install the same js-controller version before restoring the backup file."
|
||||||
|
local reply
|
||||||
|
read -rp 'Do you want to continue [yes/no]? ' reply
|
||||||
|
if [[ "$reply" != y && "$reply" != Y && "$reply" != yes ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Restoring ioBroker from \"$selected_backup\"... "
|
||||||
|
|
||||||
set +e
|
set +e
|
||||||
bash iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1
|
bash iobroker restore "$selected_backup" --force > /opt/iobroker/log/restore.log 2>&1
|
||||||
return=$?
|
return_value=$?
|
||||||
set -e
|
set -e
|
||||||
if [[ "$return" -ne 0 ]]; then
|
|
||||||
|
if [[ "$return_value" -ne 0 ]]; then
|
||||||
echo "Failed."
|
echo "Failed."
|
||||||
echo "For more details see \"/opt/iobroker/log/restore.log\"."
|
echo "For more details see \"/opt/iobroker/log/restore.log\"."
|
||||||
echo "Please check backup file location and permissions and try again."
|
echo "Please check backup file location and permissions and try again."
|
||||||
@@ -265,8 +353,8 @@ restore_iobroker() {
|
|||||||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
||||||
sleep 10
|
sleep 10
|
||||||
echo "Container will be stopped or restarted in 10 seconds..."
|
echo "Container will be stopped or restarted in 10 seconds..."
|
||||||
sleep 10
|
|
||||||
echo "stopping" > "$healthcheck"
|
echo "stopping" > "$healthcheck"
|
||||||
|
sleep 10
|
||||||
pkill -u iobroker
|
pkill -u iobroker
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
32
debian12/scripts/maintenance_gui.sh
Normal file
32
debian12/scripts/maintenance_gui.sh
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
welcome () {
|
||||||
|
whiptail --title "ioBroker Docker Container Maintenance Script" --ok-button "OK" --msgbox " \
|
||||||
|
╔═══════════════════════════════════════════════════════════════════════╗\
|
||||||
|
\n ║ ██╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ ██████╗ ║\
|
||||||
|
\n ║ ██║ ██╔═══██╗ ██╔══██╗ ██╔══██╗ ██╔═══██╗ ██║ ██╔╝ ██╔════╝ ██╔══██╗ ║\
|
||||||
|
\n ║ ██║ ██║ ██║ ██████╔╝ ██████╔╝ ██║ ██║ █████╔╝ █████╗ ██████╔╝ ║\
|
||||||
|
\n ║ ██║ ██║ ██║ ██╔══██╗ ██╔══██╗ ██║ ██║ ██╔═██╗ ██╔══╝ ██╔══██╗ ║\
|
||||||
|
\n ║ ██║ ╚██████╔╝ ██████╔╝ ██║ ██║ ╚██████╔╝ ██║ ██╗ ███████╗ ██║ ██║ ║\
|
||||||
|
\n ║ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ ║\
|
||||||
|
\n ╚═══════════════════════════════════════════════════════════════════════╝\
|
||||||
|
\n This script will help you to maintain your ioBroker Docker container!\
|
||||||
|
\n" 19 79
|
||||||
|
}
|
||||||
|
|
||||||
|
if welcome; then
|
||||||
|
TO_RUN=$(whiptail --title "ioBroker Docker Container Maintenance Script" --menu "What do you want to do?" 25 78 5 \
|
||||||
|
"maintenance" "Turn Maintenance Mode on or off" \
|
||||||
|
"upgrade" "Upgrade js-controller" \
|
||||||
|
"restore" "Restore ioBroker from backup" 3>&1 1>&2 2>&3)
|
||||||
|
else
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $TO_RUN = "maintenance" ]]; then
|
||||||
|
echo "You selected maintenance"
|
||||||
|
elif [[ $TO_RUN = "upgrade" ]]; then
|
||||||
|
echo "You selected upgrade"
|
||||||
|
elif [[ $TO_RUN = "restore" ]]; then
|
||||||
|
echo "You selected restore"
|
||||||
|
fi
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
if [ -e /usr/sbin/avahi-daemon ] && [ -e /var/run/dbus ]
|
if [ -e /usr/sbin/avahi-daemon ] && [ -e /var/run/dbus ]
|
||||||
then
|
then
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# reading env
|
# reading env
|
||||||
debug=$DEBUG
|
debug=$DEBUG
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# bash strict mode
|
# bash strict mode
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user