mirror of
https://github.com/buanet/ioBroker.docker.git
synced 2025-12-17 18:39:01 +02:00
v8.0.0-beta.1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# Github action to build Docker image from beta branch (tag: beta)
|
# Github action to build Docker image from beta branch (tag: beta)
|
||||||
name: Build debian beta-node18
|
name: Build debian beta-node20
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
@@ -7,7 +7,7 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-beta-node18-image:
|
build-beta-node20-image:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Fetching latest prerelease tag
|
- name: Fetching latest prerelease tag
|
||||||
@@ -35,8 +35,8 @@ jobs:
|
|||||||
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
||||||
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
||||||
# amd64
|
# amd64
|
||||||
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node18/Dockerfile > ./debian/node18/Dockerfile.tmp
|
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node20/Dockerfile > ./debian/node20/Dockerfile.tmp
|
||||||
mv -f ./debian/node18/Dockerfile.tmp ./debian/node18/Dockerfile
|
mv -f ./debian/node20/Dockerfile.tmp ./debian/node20/Dockerfile
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2.1.0
|
uses: docker/setup-qemu-action@v2.1.0
|
||||||
@@ -58,18 +58,18 @@ jobs:
|
|||||||
username: ${{ secrets.PACKAGES_USER }}
|
username: ${{ secrets.PACKAGES_USER }}
|
||||||
password: ${{ secrets.PACKAGES_PASS }}
|
password: ${{ secrets.PACKAGES_PASS }}
|
||||||
|
|
||||||
- name: Build Docker image (node18)
|
- name: Build Docker image (node20)
|
||||||
uses: docker/build-push-action@v4.0.0
|
uses: docker/build-push-action@v4.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node18/Dockerfile
|
file: ./debian/node20/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
|
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
|
||||||
tags: |
|
tags: |
|
||||||
buanet/iobroker:beta-node18,
|
buanet/iobroker:beta-node20,
|
||||||
buanet/iobroker:${{ env.version }}-node18,
|
buanet/iobroker:${{ env.version }}-node20,
|
||||||
ghcr.io/buanet/iobroker:beta-node18,
|
ghcr.io/buanet/iobroker:beta-node20,
|
||||||
ghcr.io/buanet/iobroker:${{ env.version }}-node18
|
ghcr.io/buanet/iobroker:${{ env.version }}-node20
|
||||||
|
|
||||||
- name: Delete untagged images from GitHub packages
|
- name: Delete untagged images from GitHub packages
|
||||||
uses: actions/github-script@v6
|
uses: actions/github-script@v6
|
||||||
@@ -35,8 +35,8 @@ jobs:
|
|||||||
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
||||||
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
||||||
# amd64
|
# amd64
|
||||||
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node16/Dockerfile > ./debian/node16/Dockerfile.tmp
|
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node18/Dockerfile > ./debian/node18/Dockerfile.tmp
|
||||||
mv -f ./debian/node16/Dockerfile.tmp ./debian/node16/Dockerfile
|
mv -f ./debian/node18/Dockerfile.tmp ./debian/node18/Dockerfile
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2.1.0
|
uses: docker/setup-qemu-action@v2.1.0
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
uses: docker/build-push-action@v4.0.0
|
uses: docker/build-push-action@v4.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node16/Dockerfile
|
file: ./debian/node18/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
|
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
|
||||||
tags: |
|
tags: |
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
# Github action to build Docker image from dev branch (tag: dev)
|
# Github action to build Docker image from dev branch (tag: dev)
|
||||||
name: Build debian dev-node18
|
name: Build debian dev-node20
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-dev-node18-image:
|
build-dev-node20-image:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
@@ -29,8 +29,8 @@ jobs:
|
|||||||
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
||||||
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
||||||
# amd64
|
# amd64
|
||||||
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${DATI}/$DATI/" ./debian/node18/Dockerfile > ./debian/node18/Dockerfile.tmp
|
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${DATI}/$DATI/" ./debian/node20/Dockerfile > ./debian/node20/Dockerfile.tmp
|
||||||
mv -f ./debian/node18/Dockerfile.tmp ./debian/node18/Dockerfile
|
mv -f ./debian/node20/Dockerfile.tmp ./debian/node20/Dockerfile
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2.1.0
|
uses: docker/setup-qemu-action@v2.1.0
|
||||||
@@ -52,16 +52,16 @@ jobs:
|
|||||||
username: ${{ secrets.PACKAGES_USER }}
|
username: ${{ secrets.PACKAGES_USER }}
|
||||||
password: ${{ secrets.PACKAGES_PASS }}
|
password: ${{ secrets.PACKAGES_PASS }}
|
||||||
|
|
||||||
- name: Build Docker image (node18)
|
- name: Build Docker image (node20)
|
||||||
uses: docker/build-push-action@v4.0.0
|
uses: docker/build-push-action@v4.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node18/Dockerfile
|
file: ./debian/node20/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
|
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
|
||||||
tags: |
|
tags: |
|
||||||
buanet/iobroker:dev-node18,
|
buanet/iobroker:dev-node20,
|
||||||
ghcr.io/buanet/iobroker:dev-node18
|
ghcr.io/buanet/iobroker:dev-node20
|
||||||
|
|
||||||
- name: Delete untagged images from GitHub packages
|
- name: Delete untagged images from GitHub packages
|
||||||
uses: actions/github-script@v6
|
uses: actions/github-script@v6
|
||||||
6
.github/workflows/build-debian-image-dev.yml
vendored
6
.github/workflows/build-debian-image-dev.yml
vendored
@@ -29,8 +29,8 @@ jobs:
|
|||||||
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
||||||
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
||||||
# amd64
|
# amd64
|
||||||
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${DATI}/$DATI/" ./debian/node16/Dockerfile > ./debian/node16/Dockerfile.tmp
|
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${DATI}/$DATI/" ./debian/node18/Dockerfile > ./debian/node18/Dockerfile.tmp
|
||||||
mv -f ./debian/node16/Dockerfile.tmp ./debian/node16/Dockerfile
|
mv -f ./debian/node18/Dockerfile.tmp ./debian/node18/Dockerfile
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2.1.0
|
uses: docker/setup-qemu-action@v2.1.0
|
||||||
@@ -56,7 +56,7 @@ jobs:
|
|||||||
uses: docker/build-push-action@v4.0.0
|
uses: docker/build-push-action@v4.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node16/Dockerfile
|
file: ./debian/node18/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
|
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
|
||||||
tags: |
|
tags: |
|
||||||
|
|||||||
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"cSpell.enableFiletypes": [
|
||||||
|
"shellscript"
|
||||||
|
]
|
||||||
|
}
|
||||||
10
CHANGELOG.md
10
CHANGELOG.md
@@ -1,4 +1,14 @@
|
|||||||
## Changelog
|
## Changelog
|
||||||
|
### v8.0.0-beta.1 (coming soon)
|
||||||
|
* upgrade node version to recommended node18
|
||||||
|
* rewrite of multihost setup handling
|
||||||
|
* rewrite of custom objects and states db setup handling
|
||||||
|
* extend logging and error handling
|
||||||
|
* add volume instruction to dockerfile
|
||||||
|
* add support for password protected custom objects and states db ([#306](https://github.com/buanet/ioBroker.docker/issues/306))
|
||||||
|
* add restore command to maintenance script
|
||||||
|
* add database connection check at startup
|
||||||
|
* remove initial restore feature
|
||||||
|
|
||||||
### v7.2.0 (12.12.2022)
|
### v7.2.0 (12.12.2022)
|
||||||
* update docs
|
* update docs
|
||||||
|
|||||||
6
debian/node18/Dockerfile
vendored
6
debian/node18/Dockerfile
vendored
@@ -52,11 +52,12 @@ RUN chmod 777 /opt/scripts/ \
|
|||||||
RUN mkdir -p /opt/scripts/.docker_config/ \
|
RUN mkdir -p /opt/scripts/.docker_config/ \
|
||||||
&& echo "starting" > /opt/scripts/.docker_config/.healthcheck \
|
&& echo "starting" > /opt/scripts/.docker_config/.healthcheck \
|
||||||
&& echo "${VERSION}" > /opt/scripts/.docker_config/.thisisdocker \
|
&& echo "${VERSION}" > /opt/scripts/.docker_config/.thisisdocker \
|
||||||
&& echo $(hostname) > /opt/.firstrun \
|
&& echo "ture" > /opt/.first_run \
|
||||||
# Run installer
|
# Run installer
|
||||||
&& curl -sL https://iobroker.net/install.sh | bash - \
|
&& curl -sL https://iobroker.net/install.sh | bash - \
|
||||||
# Deleting UUID from build
|
# Deleting UUID from build
|
||||||
&& iobroker unsetup -y \
|
&& iobroker unsetup -y \
|
||||||
|
&& echo "ture" > /opt/iobroker/.fresh_install \
|
||||||
# Backup initial ioBroker and userscript folder
|
# Backup initial ioBroker and userscript folder
|
||||||
&& tar -cf /opt/initial_iobroker.tar /opt/iobroker \
|
&& tar -cf /opt/initial_iobroker.tar /opt/iobroker \
|
||||||
&& tar -cf /opt/initial_userscripts.tar /opt/userscripts \
|
&& tar -cf /opt/initial_userscripts.tar /opt/userscripts \
|
||||||
@@ -94,5 +95,8 @@ WORKDIR /opt/iobroker/
|
|||||||
HEALTHCHECK --interval=15s --timeout=5s --retries=5 \
|
HEALTHCHECK --interval=15s --timeout=5s --retries=5 \
|
||||||
CMD ["/bin/bash", "-c", "/opt/scripts/healthcheck.sh"]
|
CMD ["/bin/bash", "-c", "/opt/scripts/healthcheck.sh"]
|
||||||
|
|
||||||
|
# Volumes for persistent data
|
||||||
|
VOLUME ["/opt/iobroker"]
|
||||||
|
|
||||||
# Run startup-script
|
# Run startup-script
|
||||||
ENTRYPOINT ["/bin/bash", "-c", "/opt/scripts/iobroker_startup.sh"]
|
ENTRYPOINT ["/bin/bash", "-c", "/opt/scripts/iobroker_startup.sh"]
|
||||||
|
|||||||
322
debian/scripts/iobroker_startup.sh
vendored
322
debian/scripts/iobroker_startup.sh
vendored
@@ -17,6 +17,8 @@ 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
|
||||||
|
objectsdbpass=$IOB_OBJECTSDB_PASS # new for auth support
|
||||||
packages=$PACKAGES
|
packages=$PACKAGES
|
||||||
permissioncheck=$PERMISSION_CHECK
|
permissioncheck=$PERMISSION_CHECK
|
||||||
setgid=$SETGID
|
setgid=$SETGID
|
||||||
@@ -24,6 +26,8 @@ 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
|
||||||
|
statesdbpass=$IOB_STATESDB_PASS # new for auth support
|
||||||
usbdevices=$USBDEVICES
|
usbdevices=$USBDEVICES
|
||||||
zwave=$ZWAVE
|
zwave=$ZWAVE
|
||||||
set -u
|
set -u
|
||||||
@@ -42,7 +46,7 @@ stop_on_error() {
|
|||||||
else
|
else
|
||||||
echo ' '
|
echo ' '
|
||||||
echo "This Script will exit now."
|
echo "This Script will exit now."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,12 +88,16 @@ if [[ "$avahi" != "" ]]; then echo -n "----- " && echo -n "$(
|
|||||||
if [[ "$debug" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" DEBUG: $debug)" && echo " -----"; fi
|
if [[ "$debug" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" DEBUG: $debug)" && echo " -----"; fi
|
||||||
if [[ "$backitup" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_BACKITUP_EXTDB: $backitup)" && echo " -----"; fi
|
if [[ "$backitup" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_BACKITUP_EXTDB: $backitup)" && echo " -----"; fi
|
||||||
if [[ "$multihost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_MULTIHOST: $multihost)" && echo " -----"; fi
|
if [[ "$multihost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_MULTIHOST: $multihost)" && echo " -----"; fi
|
||||||
|
if [[ "$objectsdbtype" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_TYPE: $objectsdbtype)" && echo " -----"; fi
|
||||||
if [[ "$objectsdbhost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_HOST: $objectsdbhost)" && 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 [[ "$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 [[ "$objectsdbname" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_NAME: $objectsdbname)" && echo " -----"; fi
|
||||||
|
if [[ "$objectsdbpass" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_PASS: $objectsdbpass)" && echo " -----"; fi
|
||||||
|
if [[ "$statesdbtype" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_TYPE: $statesdbtype)" && echo " -----"; fi
|
||||||
if [[ "$statesdbhost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_HOST: $statesdbhost)" && 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 [[ "$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 [[ "$statesdbname" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_NAME: $statesdbname)" && echo " -----"; fi
|
||||||
|
if [[ "$statesdbpass" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_PASS: $statesdbpass)" && 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 [[ "$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
|
||||||
@@ -100,7 +108,7 @@ if [[ "$zwave" != "" ]]; then echo -n "----- " && echo -n "$(
|
|||||||
echo "$(printf -- '-%.0s' {1..80})"
|
echo "$(printf -- '-%.0s' {1..80})"
|
||||||
echo ' '
|
echo ' '
|
||||||
|
|
||||||
# Debug loggin notice
|
# Debug logging notice
|
||||||
if [[ "$debug" == "true" ]]; then
|
if [[ "$debug" == "true" ]]; then
|
||||||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
||||||
echo "!!!! DEBUG LOG ACTIVE !!!!"
|
echo "!!!! DEBUG LOG ACTIVE !!!!"
|
||||||
@@ -117,12 +125,12 @@ 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 ' '
|
||||||
|
|
||||||
# Actions running on first start only
|
# Actions running on first start only
|
||||||
if [[ -f /opt/.firstrun ]]; then
|
if [[ -f /opt/.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."
|
||||||
@@ -159,7 +167,7 @@ fi
|
|||||||
|
|
||||||
# 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" != "$(cat /etc/group | grep 'iobroker:' | cut -d':' -f3)" || "$setuid" != "$(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3)" ]]; then
|
||||||
echo "SETUID and/ or SETGID are set to individual 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
|
||||||
groupmod -og $setgid iobroker
|
groupmod -og $setgid iobroker
|
||||||
@@ -186,43 +194,29 @@ if [[ `find /opt/iobroker -type f | wc -l` -lt 1 ]]; then
|
|||||||
elif [[ -f /opt/iobroker/iobroker ]]; then
|
elif [[ -f /opt/iobroker/iobroker ]]; then
|
||||||
echo "Existing installation of ioBroker detected in \"/opt/iobroker\"."
|
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
|
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."
|
||||||
echo "IoBroker backup file detected in /opt/iobroker. But Multihost is set to \"slave\"."
|
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Backup file name: " $(ls *_backupiobroker.tar.gz); fi
|
||||||
echo "Restoring a backup is not supported on Multihost slaves. Please check configuration and start over."
|
echo "Since Docker Image v8, automatic initial restore is no longer supported!"
|
||||||
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
|
echo "IoBroker will start with a fresh installation, while your backup file will be copied into the backup directory."
|
||||||
exit 1
|
echo "You will be able to restore your backup file manually by using the backitup adapter or the containers maintenance script."
|
||||||
else
|
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
|
||||||
echo "IoBroker backup file detected in /opt/iobroker."
|
echo ' '
|
||||||
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Backup file name: " $(ls *_backupiobroker.tar.gz); fi
|
echo -n "Copying backup file and restoring initial ioBroker installation... "
|
||||||
echo -n "Preparing restore... "
|
mv /opt/iobroker/*.tar.gz /opt/
|
||||||
mv /opt/iobroker/*.tar.gz /opt/
|
tar -xf /opt/initial_iobroker.tar -C /
|
||||||
tar -xf /opt/initial_iobroker.tar -C /
|
mkdir /opt/iobroker/backups
|
||||||
mkdir /opt/iobroker/backups
|
mv /opt/*.tar.gz /opt/iobroker/backups/
|
||||||
mv /opt/*.tar.gz /opt/iobroker/backups/
|
# fixing permission errors during restore
|
||||||
# fixing permission errors during restore
|
chown -R $setuid:$setgid /opt/iobroker
|
||||||
chown -R $setuid:$setgid /opt/iobroker
|
echo 'Done.'
|
||||||
echo 'Done.'
|
|
||||||
echo -n "Restoring ioBroker... "
|
|
||||||
bash iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1
|
|
||||||
echo 'Done.'
|
|
||||||
echo ' '
|
|
||||||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
||||||
echo "!!!! IMPORTANT NOTE !!!!"
|
|
||||||
echo "!!!! The startup script restored iobroker from a backup file. !!!!"
|
|
||||||
echo "!!!! Check /opt/iobroker/log/restore.log to see if restore was successful. !!!!"
|
|
||||||
echo "!!!! When ioBroker now starts it will reinstall all Adapters automatically. !!!!"
|
|
||||||
echo "!!!! This might be take a looooong time! Please be patient! !!!!"
|
|
||||||
echo "!!!! You can view installation process by taking a look at ioBroker log. !!!!"
|
|
||||||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
||||||
fi
|
|
||||||
else
|
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 "There is data detected in /opt/iobroker but it looks like it is no instance of ioBroker!"
|
||||||
echo "Please check/ recreate mounted folder or volume and start over."
|
|
||||||
if [[ "$debug" == "true" ]]; then
|
if [[ "$debug" == "true" ]]; then
|
||||||
echo "[DEBUG] Detected files:"
|
echo "[DEBUG] Detected files:"
|
||||||
ls -al
|
ls -al
|
||||||
fi
|
fi
|
||||||
exit 1
|
echo "Please check/ recreate mounted folder or volume and try again."
|
||||||
|
stop_on_error
|
||||||
fi
|
fi
|
||||||
echo ' '
|
echo ' '
|
||||||
|
|
||||||
@@ -237,14 +231,13 @@ echo ' '
|
|||||||
# (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts"
|
# (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts"
|
||||||
if [[ "$permissioncheck" == "false" ]]; then
|
if [[ "$permissioncheck" == "false" ]]; then
|
||||||
echo "PERMISSION_CHECK is set to false. Use this at your own risk!"
|
echo "PERMISSION_CHECK is set to false. Use this at your own risk!"
|
||||||
echo ' '
|
|
||||||
else
|
else
|
||||||
echo -n "(Re)setting 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/iobroker
|
||||||
chown -R $setuid:$setgid /opt/scripts
|
chown -R $setuid:$setgid /opt/scripts
|
||||||
echo 'Done.'
|
echo 'Done.'
|
||||||
echo ' '
|
|
||||||
fi
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
# Backing up original iobroker-file and changing sudo to gosu
|
# Backing up original iobroker-file and changing sudo to gosu
|
||||||
echo -n "Fixing \"sudo-bug\" by replacing sudo with gosu... "
|
echo -n "Fixing \"sudo-bug\" by replacing sudo with gosu... "
|
||||||
@@ -254,9 +247,108 @@ echo -n "Fixing \"sudo-bug\" by replacing sudo with gosu... "
|
|||||||
echo 'Done.'
|
echo 'Done.'
|
||||||
echo ' '
|
echo ' '
|
||||||
|
|
||||||
|
# Checking multihost and db setup
|
||||||
|
if [[ "$multihost" == "master" || "$multihost" == "slave" ]]; then
|
||||||
|
# multihost enabled
|
||||||
|
if [[ "$multihost" == "master" ]]; then
|
||||||
|
set +e
|
||||||
|
bash /opt/scripts/setup_iob_db.sh -master
|
||||||
|
return=$?
|
||||||
|
set -e
|
||||||
|
if [[ "$return" -ne 0 ]]; then stop_on_error; fi
|
||||||
|
elif [[ "$multihost" == "slave" ]]; then
|
||||||
|
set +e
|
||||||
|
bash /opt/scripts/setup_iob_db.sh -slave
|
||||||
|
return=$?
|
||||||
|
set -e
|
||||||
|
if [[ "$return" -ne 0 ]]; then stop_on_error; fi
|
||||||
|
fi
|
||||||
|
elif [[ "$multihost" == "" || "$multihost" == "false" ]]; then
|
||||||
|
# no multihost, only debug output
|
||||||
|
if [[ "$debug" == "true" ]]; then
|
||||||
|
echo "[DEBUG] Checking multihost settings... "
|
||||||
|
echo "[DEBUG] No multihost settings detected."
|
||||||
|
echo "[DEBUG] Done."
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
# checking custom objects db settings
|
||||||
|
if [[ "$objectsdbtype" != "" || "$objectsdbhost" != "" || "$objectsdbport" != "" ]]; then
|
||||||
|
set +e
|
||||||
|
bash /opt/scripts/setup_iob_db.sh -objectsdb
|
||||||
|
return=$?
|
||||||
|
set -e
|
||||||
|
if [[ "$return" -ne 0 ]]; then stop_on_error; fi
|
||||||
|
else
|
||||||
|
#no custom objects db settings, only debug output
|
||||||
|
if [[ "$debug" == "true" ]]; then
|
||||||
|
echo "[DEBUG] Checking custom objects db settings... "
|
||||||
|
echo "[DEBUG] No custom objects db settings detected."
|
||||||
|
echo "[DEBUG] Done."
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# checking custom states db settings
|
||||||
|
if [[ "$statesdbtype" != "" || "$statesdbhost" != "" || "$statesdbport" != "" ]]; then
|
||||||
|
set +e
|
||||||
|
bash /opt/scripts/setup_iob_db.sh -statesdb
|
||||||
|
return=$?
|
||||||
|
set -e
|
||||||
|
if [[ "$return" -ne 0 ]]; then stop_on_error; fi
|
||||||
|
else
|
||||||
|
#no custom states db settings, only debug output
|
||||||
|
if [[ "$debug" == "true" ]]; then
|
||||||
|
echo "[DEBUG] Checking custom states db settings... "
|
||||||
|
echo "[DEBUG] No custom states db settings detected."
|
||||||
|
echo "[DEBUG] Done."
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
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
|
||||||
|
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/#environment-variables-env)."
|
||||||
|
stop_on_error
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if restored a fresh install, runing "iob setup first" for database init, otherwise check database connection
|
||||||
|
if [[ -f /opt/iobroker/.fresh_install ]]; then
|
||||||
|
echo -n "Initializing a fresh installation of ioBroker... "
|
||||||
|
set +e
|
||||||
|
bash iob setup first > /opt/iobroker/log/iob_setup_first.log 2>&1
|
||||||
|
return=$?
|
||||||
|
set -e
|
||||||
|
rm -f /opt/iobroker/.fresh_install
|
||||||
|
if [[ "$return" -ne 0 ]]; then
|
||||||
|
echo "Failed."
|
||||||
|
echo "For more details see \"/opt/iobroker/log/iob_setup_first.log\"."
|
||||||
|
echo "Please check your configuration and try again."
|
||||||
|
stop_on_error
|
||||||
|
fi
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
else
|
||||||
|
echo -n "Checking Database connection... "
|
||||||
|
set +e
|
||||||
|
if iob uuid &> /dev/null; then
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
else
|
||||||
|
errormsg=$(iob uuid 2>&1 | sed 's/^/[DEBUG] /')
|
||||||
|
echo "Failed."
|
||||||
|
if [[ "$debug" == "true" ]]; then
|
||||||
|
echo "[DEBUG] Error message: "
|
||||||
|
echo "$errormsg"
|
||||||
|
fi
|
||||||
|
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)."
|
||||||
|
stop_on_error
|
||||||
|
fi
|
||||||
|
set -e
|
||||||
|
fi
|
||||||
|
|
||||||
# hostname check
|
# hostname check
|
||||||
if [[ "$multihost" == "slave" ]]; then
|
if [[ "$multihost" == "slave" ]]; then
|
||||||
echo "IOB_MULTIHOST ist set to \"slave\". Hostname check will be skipped."
|
echo "IOB_MULTIHOST is set to \"slave\". Hostname check will be skipped."
|
||||||
echo ' '
|
echo ' '
|
||||||
else
|
else
|
||||||
# get admin instance and hostname
|
# get admin instance and hostname
|
||||||
@@ -269,7 +361,7 @@ else
|
|||||||
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Detected admin hostname is:" $adminhostname; fi
|
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Detected admin hostname is:" $adminhostname; fi
|
||||||
else
|
else
|
||||||
echo "There was a problem detecting the admin instance of your iobroker."
|
echo "There was a problem detecting the admin instance of your iobroker."
|
||||||
echo "Make sure the ioBroker installation you use has an admin instance or start over with a fresh installation and restore your configuration."
|
echo "Make sure the ioBroker installation you use has an admin instance or try again with a fresh installation and restore your configuration."
|
||||||
echo "For more details see https://docs.buanet.de/iobroker-docker-image/docs/#restore"
|
echo "For more details see https://docs.buanet.de/iobroker-docker-image/docs/#restore"
|
||||||
stop_on_error
|
stop_on_error
|
||||||
fi
|
fi
|
||||||
@@ -399,137 +491,6 @@ if [[ "$usbdevices" != "" && "$usbdevices" != "none" ]]; then
|
|||||||
echo ' '
|
echo ' '
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Checking ENV for multihost setup
|
|
||||||
if [[ "$multihost" != "" ]]; then
|
|
||||||
echo "Checking for multihost settings... "
|
|
||||||
# Configuring objects db host
|
|
||||||
if [[ "$multihost" = "master" && "$objectsdbtype" = "" && "$objectsdbhost" = "" && "$objectsdbport" = "" ]]; then
|
|
||||||
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 "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 "IOB_MULTIHOST is set to \"master\" and external objects db is set."
|
|
||||||
elif ([[ "$multihost" = "slave" && "$objectsdbtype" = "" ]]) || ([[ "$multihost" = "slave" && "$objectsdbhost" = "" ]]) || ([[ "$multihost" = "slave" && "$objectsdbport" = "" ]]); then
|
|
||||||
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 "IOB_MULTIHOST is set to \"slave\" and external objects db is set."
|
|
||||||
elif [[ "$multihost" != "" ]]; then
|
|
||||||
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 "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 "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 "IOB_MULTIHOST is set to \"master\" and external states db is set."
|
|
||||||
elif ([[ "$multihost" = "slave" && "$statesdbtype" = "" ]]) || ([[ "$multihost" = "slave" && "$statesdbhost" = "" ]]) || ([[ "$multihost" = "slave" && "$statesdbport" = "" ]]); then
|
|
||||||
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 "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 "IOB_MULTIHOST is set to \"slave\" and external states db is set."
|
|
||||||
elif [[ "$multihost" != "" ]]; then
|
|
||||||
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
|
|
||||||
fi
|
|
||||||
echo 'Done.'
|
|
||||||
echo ' '
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Checking ENVs for custom setup of objects db
|
|
||||||
if [[ "$objectsdbtype" != "" || "$objectsdbhost" != "" || "$objectsdbport" != "" ]]; then
|
|
||||||
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"\"... "
|
|
||||||
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
|
|
||||||
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
|
|
||||||
echo 'Done.'
|
|
||||||
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
|
|
||||||
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
|
|
||||||
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
|
|
||||||
echo 'Done.'
|
|
||||||
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
|
|
||||||
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
|
|
||||||
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
|
|
||||||
echo 'Done.'
|
|
||||||
else
|
|
||||||
echo "IOB_OBJECTSDB_PORT is set and value meets detected ioBroker installation."
|
|
||||||
fi
|
|
||||||
echo 'Done.'
|
|
||||||
echo ' '
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Checking ENVs for custom setup of states db
|
|
||||||
if [[ "$statesdbtype" != "" || "$statesdbhost" != "" || "$statesdbport" != "" ]]; then
|
|
||||||
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"\"... "
|
|
||||||
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
|
|
||||||
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
|
|
||||||
echo 'Done.'
|
|
||||||
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
|
|
||||||
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
|
|
||||||
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
|
|
||||||
echo 'Done.'
|
|
||||||
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
|
|
||||||
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
|
|
||||||
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
|
|
||||||
echo 'Done.'
|
|
||||||
else
|
|
||||||
echo "IOB_STATESDB_PORT is set and value meets detected ioBroker installation."
|
|
||||||
fi
|
|
||||||
echo 'Done.'
|
|
||||||
echo ' '
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Checking for Userscripts in /opt/userscripts
|
# 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... "
|
echo -n "There is no data detected in /opt/userscripts. Restoring exapmple userscripts... "
|
||||||
@@ -537,29 +498,26 @@ if [[ `find /opt/userscripts -type f | wc -l` -lt 1 ]]; then
|
|||||||
chmod 755 /opt/userscripts/userscript_firststart_example.sh
|
chmod 755 /opt/userscripts/userscript_firststart_example.sh
|
||||||
chmod 755 /opt/userscripts/userscript_everystart_example.sh
|
chmod 755 /opt/userscripts/userscript_everystart_example.sh
|
||||||
echo 'Done.'
|
echo 'Done.'
|
||||||
echo ' '
|
|
||||||
elif [[ -f /opt/userscripts/userscript_firststart.sh || -f /opt/userscripts/userscript_everystart.sh ]]; 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
|
if [[ -f /opt/userscripts/userscript_firststart.sh && -f /opt/.first_run ]]; then
|
||||||
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
|
bash /opt/userscripts/userscript_firststart.sh
|
||||||
echo 'Done.'
|
echo 'Done.'
|
||||||
echo ' '
|
|
||||||
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
|
bash /opt/userscripts/userscript_everystart.sh
|
||||||
echo 'Done.'
|
echo 'Done.'
|
||||||
echo ' '
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
# Removing first run marker when exists
|
# Removing first run an fresh install markers when exists
|
||||||
if [[ -f /opt/.firstrun ]]; then
|
if [[ -f /opt/.first_run ]]; then rm -f /opt/.first_run; fi
|
||||||
rm -f /opt/.firstrun
|
if [[ -f /opt/iobroker/.fresh_install ]]; then rm -f /opt/iobroker/.fresh_install; fi
|
||||||
fi
|
|
||||||
|
|
||||||
#####
|
#####
|
||||||
# STEP 5 - Starting ioBroker
|
# STEP 5 - Starting ioBroker
|
||||||
|
|||||||
46
debian/scripts/maintenance.sh
vendored
46
debian/scripts/maintenance.sh
vendored
@@ -23,6 +23,7 @@ display_help() {
|
|||||||
echo ' off > switches mantenance mode OFF and stops or restarts the container'
|
echo ' off > switches mantenance mode OFF and stops or restarts the container'
|
||||||
echo ' upgrade > puts the container to maintenance mode and upgrades ioBroker'
|
echo ' upgrade > puts the container to maintenance mode and upgrades ioBroker'
|
||||||
echo ' restart > stops iobroker and stops or restarts the container'
|
echo ' restart > stops iobroker and stops or restarts the container'
|
||||||
|
echo ' restore > stops iobroker and restores the last backup'
|
||||||
echo ' help > shows this help'
|
echo ' help > shows this help'
|
||||||
echo ''
|
echo ''
|
||||||
echo 'OPTIONS'
|
echo 'OPTIONS'
|
||||||
@@ -217,6 +218,48 @@ restart_container() {
|
|||||||
pkill -u root
|
pkill -u root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# restore iobroker
|
||||||
|
restore_iobroker() {
|
||||||
|
echo 'You are now going to perform a restore of your iobroker.'
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
# fixing permission errors during restore
|
||||||
|
#chown -R $setuid:$setgid /opt/iobroker/backup
|
||||||
|
|
||||||
|
echo -n "Restoring ioBroker... "
|
||||||
|
bash iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
||||||
|
echo "!!!! IMPORTANT NOTE !!!!"
|
||||||
|
echo "!!!! The maintenance script restored iobroker from a backup file. !!!!"
|
||||||
|
echo "!!!! Check /opt/iobroker/log/restore.log to see if restore was successful. !!!!"
|
||||||
|
echo "!!!! When ioBroker starts it will reinstall all Adapters automatically. !!!!"
|
||||||
|
echo "!!!! This might be take a looooong time! Please be patient! !!!!"
|
||||||
|
echo "!!!! You can view installation process by taking a look at ioBroker log. !!!!"
|
||||||
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
||||||
|
sleep 10
|
||||||
|
echo 'Container will be stopped or restarted in 5 seconds...'
|
||||||
|
sleep 5
|
||||||
|
echo 'stopping' > "$healthcheck"
|
||||||
|
pkill -u root
|
||||||
|
}
|
||||||
|
|
||||||
# parsing commands and options
|
# parsing commands and options
|
||||||
|
|
||||||
# default command to run unless another was given
|
# default command to run unless another was given
|
||||||
@@ -242,6 +285,9 @@ for arg in "$@"; do
|
|||||||
restart|rest|r)
|
restart|rest|r)
|
||||||
run=(restart_container)
|
run=(restart_container)
|
||||||
;;
|
;;
|
||||||
|
restore)
|
||||||
|
run=(restore_iobroker)
|
||||||
|
;;
|
||||||
-y|--yes)
|
-y|--yes)
|
||||||
autoconfirm=yes
|
autoconfirm=yes
|
||||||
;;
|
;;
|
||||||
|
|||||||
345
debian/scripts/setup_iob_db.sh
vendored
Normal file
345
debian/scripts/setup_iob_db.sh
vendored
Normal file
@@ -0,0 +1,345 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# reading env
|
||||||
|
debug=$DEBUG
|
||||||
|
objectsdbhost=$IOB_OBJECTSDB_HOST
|
||||||
|
objectsdbport=$IOB_OBJECTSDB_PORT
|
||||||
|
objectsdbtype=$IOB_OBJECTSDB_TYPE
|
||||||
|
objectsdbname=$IOB_OBJECTSDB_NAME # new for sentinel support
|
||||||
|
objectsdbpass=$IOB_OBJECTSDB_PASS # new for auth support
|
||||||
|
setgid=$SETGID
|
||||||
|
setuid=$SETUID
|
||||||
|
statesdbhost=$IOB_STATESDB_HOST
|
||||||
|
statesdbport=$IOB_STATESDB_PORT
|
||||||
|
statesdbtype=$IOB_STATESDB_TYPE
|
||||||
|
statesdbname=$IOB_STATESDB_NAME # new for sentinel support
|
||||||
|
statesdbpass=$IOB_STATESDB_PASS # new for auth support
|
||||||
|
|
||||||
|
# functions
|
||||||
|
write_iobroker_json() {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
set_objectsdb_type() {
|
||||||
|
if [[ "$objectsdbtype" != "$(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_OBJECTSDB_TYPE is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting type of objects db to \"""$objectsdbtype""\"... "
|
||||||
|
jq --arg value "$objectsdbtype" '.objects.type = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_OBJECTSDB_TYPE is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
set_objectsdb_host() {
|
||||||
|
if [[ $objectsdbhost == *","* ]]; then
|
||||||
|
if [[ "$(jq -c -n --arg value $objectsdbhost '$value|split(",")')" != "$(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_OBJECTSDB_HOST is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting host of objects db to \"""$objectsdbhost""\"... "
|
||||||
|
jq --arg value "$objectsdbhost" '.objects.host = ($value|split(","))' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_OBJECTSDB_HOST is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
if [[ $objectsdbname != "" ]]; then
|
||||||
|
if [[ "$objectsdbname" != "$(jq -r '.objects.sentinelName' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_OBJECTSDB_NAME is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting name of objects db to \"""$objectsdbname""\"... "
|
||||||
|
jq --arg value "$objectsdbname" '.objects.sentinelName = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_OBJECTSDB_NAME is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ "$(jq -r '.objects.sentinelName' /opt/iobroker/iobroker-data/iobroker.json)" != "mymaster" ]]; then
|
||||||
|
echo "IOB_OBJECTSDB_NAME is not available. Using default value \"mymaster\" instead."
|
||||||
|
echo -n "Setting name of objects db to \"mymaster\"... "
|
||||||
|
jq --arg value "mymaster" '.objects.sentinelName = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_OBJECTSDB_NAME is not available but default value \"mymaster\" meets detected ioBroker installation.."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ "$objectsdbhost" != "$(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_OBJECTSDB_HOST is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting host of objects db to \"""$objectsdbhost""\"... "
|
||||||
|
jq --arg value "$objectsdbhost" '.objects.host = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_OBJECTSDB_HOST is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
set_objectsdb_port() {
|
||||||
|
if [[ $objectsdbport == *","* ]]; then
|
||||||
|
if [[ "$(jq -c -n --arg value $objectsdbport '$value|split(",")')" != "$(jq -r '.objects.port' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_OBJECTSDB_PORT is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting port of objects db to \"""$objectsdbport""\"... "
|
||||||
|
jq --arg value "$objectsdbport" '.objects.port = ($value|split(","))' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_OBJECTSDB_PORT is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ "$objectsdbport" != "$(jq -r '.objects.port' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_OBJECTSDB_PORT is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting port of objects db to \"""$objectsdbport""\"... "
|
||||||
|
jq --arg value "$objectsdbport" '.objects.port = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_OBJECTSDB_PORT is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
set_objectsdb_pass() {
|
||||||
|
if [[ "$objectsdbpass" != "$(jq -r '.objects.options.auth_pass' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_OBJECTSDB_PASS is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting password of objects db to \"""$objectsdbpass""\"... "
|
||||||
|
jq --arg value "$objectsdbpass" '.objects.options.auth_pass = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_OBJECTSDB_PASS is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
set_statesdb_type() {
|
||||||
|
if [[ "$statesdbtype" != "$(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_STATESDB_TYPE is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting type of states db to \"""$statesdbtype""\"... "
|
||||||
|
jq --arg value "$statesdbtype" '.states.type = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_STATESDB_TYPE is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
set_statesdb_host() {
|
||||||
|
if [[ $statesdbhost == *","* ]]; then
|
||||||
|
if [[ "$(jq -c -n --arg parm $statesdbhost '$parm|split(",")')" != "$(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_STATESDB_HOST is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting host of states db to \"""$statesdbhost""\"... "
|
||||||
|
jq --arg value "$statesdbhost" '.states.host = ($value|split(","))' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_STATESDB_HOST is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
if [[ $statesdbname != "" ]]; then
|
||||||
|
if [[ "$statesdbname" != "$(jq -r '.states.sentinelName' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_STATESDB_NAME is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting name of states db to \"""$statesdbname""\"... "
|
||||||
|
jq --arg value "$statesdbname" '.states.sentinelName = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_STATESDB_NAME is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ "$(jq -r '.states.sentinelName' /opt/iobroker/iobroker-data/iobroker.json)" != "mymaster" ]]; then
|
||||||
|
echo "IOB_STATESDB_NAME is not available. Using default value \"mymaster\" instead."
|
||||||
|
echo -n "Setting name of states db to \"mymaster\"... "
|
||||||
|
jq --arg value "mymaster" '.states.sentinelName = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_STATESDB_NAME is not available but default value \"mymaster\" meets detected ioBroker installation.."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ "$statesdbhost" != "$(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_STATESDB_HOST is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting host of states db to \"""$statesdbhost""\"... "
|
||||||
|
jq --arg value "$statesdbhost" '.states.host = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_STATESDB_HOST is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
set_statesdb_port() {
|
||||||
|
if [[ $statesdbport == *","* ]]; then
|
||||||
|
if [[ "$(jq -c -n --arg value $statesdbport '$value|split(",")')" != "$(jq -r '.states.port' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_STATESDB_PORT is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting port of states db to \"""$statesdbport""\"... "
|
||||||
|
jq --arg value "$statesdbport" '.states.port = ($value|split(","))' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_STATESDB_PORT is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ "$statesdbport" != "$(jq -r '.states.port' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_STATESDB_PORT is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting port of states db to \"""$statesdbport""\"... "
|
||||||
|
jq --arg value "$statesdbport" '.states.port = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_STATESDB_PORT is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
set_statesdb_pass() {
|
||||||
|
if [[ "$statesdbpass" != "$(jq -r '.states.options.auth_pass' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
|
||||||
|
echo "IOB_STATESDB_PASS is available but value is different from detected ioBroker installation."
|
||||||
|
echo -n "Setting password of states db to \"""$statesdbpass""\"... "
|
||||||
|
jq --arg value "$statesdbpass" '.states.options.auth_pass = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "IOB_STATESDB_PASS is available and value meets detected ioBroker installation."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
config_error_output() {
|
||||||
|
echo ' '
|
||||||
|
echo "Something went wrong. Looks like at least one parameter defining the custom db connection was not set properly or is missing."
|
||||||
|
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/)."
|
||||||
|
}
|
||||||
|
|
||||||
|
# parameter check
|
||||||
|
if [[ "$1" == "-master" ]]; then # setup master
|
||||||
|
echo "IOB_MULTIHOST is available and set to \"master\"."
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
# multihost objects db
|
||||||
|
if [[ "$objectsdbtype" != "" && "$objectsdbhost" != "" && "$objectsdbport" != "" ]]; then
|
||||||
|
echo "Configuring custom objects db..."
|
||||||
|
set_objectsdb_type
|
||||||
|
set_objectsdb_host
|
||||||
|
set_objectsdb_port
|
||||||
|
if [[ "$objectsdbpass" != "" ]]; then set_objectsdb_pass; fi
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
elif [[ "$objectsdbtype" == "" && "$objectsdbhost" == "" && "$objectsdbport" == "" ]]; then
|
||||||
|
echo "No custom objects db is set."
|
||||||
|
if [[ "$(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json)" != "0.0.0.0" ]]; then
|
||||||
|
echo -n "Configuring default objects db to accept external connections... "
|
||||||
|
jq --arg value "0.0.0.0" '.objects.host = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "Default objects db is accepting external connections."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ "$debug" == "true" ]]; then
|
||||||
|
echo "[DEBUG] IOB_OBJECTSDB_TYPE = ""$objectsdbtype"
|
||||||
|
echo "[DEBUG] IOB_OBJECTSDB_HOST = ""$objectsdbhost"
|
||||||
|
echo "[DEBUG] IOB_OBJECTSDB_PORT = ""$objectsdbport"
|
||||||
|
fi
|
||||||
|
config_error_output
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# multihost states db
|
||||||
|
if [[ "$statesdbtype" != "" && "$statesdbhost" != "" && "$statesdbport" != "" ]]; then
|
||||||
|
echo "Configuring custom states db..."
|
||||||
|
set_statesdb_type
|
||||||
|
set_statesdb_host
|
||||||
|
set_statesdb_port
|
||||||
|
if [[ "$statesdbpass" != "" ]]; then set_statesdb_pass; fi
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
elif [[ "$statesdbtype" == "" && "$statesdbhost" == "" && "$statesdbport" == "" ]]; then
|
||||||
|
echo "No custom states db is set."
|
||||||
|
if [[ "$(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json)" != "0.0.0.0" ]]; then
|
||||||
|
echo -n "Configuring default states db to accept external connections... "
|
||||||
|
jq --arg value "0.0.0.0" '.states.host = $value' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp
|
||||||
|
write_iobroker_json
|
||||||
|
echo 'Done.'
|
||||||
|
else
|
||||||
|
echo "Default states db is accepting external connections."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ "$debug" == "true" ]]; then
|
||||||
|
echo "[DEBUG] IOB_STATESDB_TYPE = ""$statesdbtype"
|
||||||
|
echo "[DEBUG] IOB_STATESDB_HOST = ""$statesdbhost"
|
||||||
|
echo "[DEBUG] IOB_STATESDB_PORT = ""$statesdbport"
|
||||||
|
fi
|
||||||
|
config_error_output
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$1" == "-slave" ]]; then # setup slave
|
||||||
|
echo "IOB_MULTIHOST is available and set to \"slave\"."
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
# multihost slave objects db connection
|
||||||
|
if [[ "$objectsdbtype" != "" && "$objectsdbhost" != "" && "$objectsdbport" != "" ]]; then
|
||||||
|
echo "Configuring objects db connection..."
|
||||||
|
set_objectsdb_type
|
||||||
|
set_objectsdb_host
|
||||||
|
set_objectsdb_port
|
||||||
|
if [[ "$objectsdbpass" != "" ]]; then set_objectsdb_pass; fi
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
else
|
||||||
|
if [[ "$debug" == "true" ]]; then
|
||||||
|
echo "[DEBUG] IOB_OBJECTSDB_TYPE = ""$objectsdbtype"
|
||||||
|
echo "[DEBUG] IOB_OBJECTSDB_HOST = ""$objectsdbhost"
|
||||||
|
echo "[DEBUG] IOB_OBJECTSDB_PORT = ""$objectsdbport"
|
||||||
|
fi
|
||||||
|
config_error_output
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# multihost slave states db connection
|
||||||
|
if [[ "$statesdbtype" != "" && "$statesdbhost" != "" && "$statesdbport" != "" ]]; then
|
||||||
|
echo "Configuring states db connection..."
|
||||||
|
set_statesdb_type
|
||||||
|
set_statesdb_host
|
||||||
|
set_statesdb_port
|
||||||
|
if [[ "$statesdbpass" != "" ]]; then set_statesdb_pass; fi
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
else
|
||||||
|
if [[ "$debug" == "true" ]]; then
|
||||||
|
echo "[DEBUG] IOB_STATESDB_TYPE = ""$statesdbtype"
|
||||||
|
echo "[DEBUG] IOB_STATESDB_HOST = ""$statesdbhost"
|
||||||
|
echo "[DEBUG] IOB_STATESDB_PORT = ""$statesdbport"
|
||||||
|
fi
|
||||||
|
config_error_output
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$1" == "-objectsdb" ]]; then # setup objects db standalone
|
||||||
|
if [[ "$objectsdbtype" != "" && "$objectsdbhost" != "" && "$objectsdbport" != "" ]]; then
|
||||||
|
echo "Configuring custom objects db..."
|
||||||
|
set_objectsdb_type
|
||||||
|
set_objectsdb_host
|
||||||
|
set_objectsdb_port
|
||||||
|
if [[ "$objectsdbpass" != "" ]]; then set_objectsdb_pass; fi
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
else
|
||||||
|
if [[ "$debug" == "true" ]]; then
|
||||||
|
echo "[DEBUG] IOB_OBJECTSDB_TYPE = ""$objectsdbtype"
|
||||||
|
echo "[DEBUG] IOB_OBJECTSDB_HOST = ""$objectsdbhost"
|
||||||
|
echo "[DEBUG] IOB_OBJECTSDB_PORT = ""$objectsdbport"
|
||||||
|
fi
|
||||||
|
config_error_output
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$1" == "-statesdb" ]]; then # setup states db standalone
|
||||||
|
if [[ "$statesdbtype" != "" && "$statesdbhost" != "" && "$statesdbport" != "" ]]; then
|
||||||
|
echo "Configuring custom states db..."
|
||||||
|
set_statesdb_type
|
||||||
|
set_statesdb_host
|
||||||
|
set_statesdb_port
|
||||||
|
if [[ "$statesdbpass" != "" ]]; then set_statesdb_pass; fi
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
else
|
||||||
|
if [[ "$debug" == "true" ]]; then
|
||||||
|
echo "[DEBUG] IOB_STATESDB_TYPE = ""$statesdbtype"
|
||||||
|
echo "[DEBUG] IOB_STATESDB_HOST = ""$statesdbhost"
|
||||||
|
echo "[DEBUG] IOB_STATESDB_PORT = ""$statesdbport"
|
||||||
|
fi
|
||||||
|
config_error_output
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user