Compare commits

..

46 Commits

Author SHA1 Message Date
André Germann
7c636029f9 Update CHANGELOG.md 2022-11-01 09:14:14 +01:00
buanet
c128a8fe29 fix #289 2022-11-01 09:13:10 +01:00
buanet
5bfd28927d Merge branch 'main' of https://github.com/buanet/ioBroker.docker 2022-10-31 20:37:16 +01:00
buanet
5933409df5 prepare for v7.1.0 2022-10-31 20:37:11 +01:00
André Germann
722a22f785 Merge pull request #288 from buanet/dependabot/github_actions/main/benc-uk/workflow-dispatch-1.2
Bump benc-uk/workflow-dispatch from 1.1 to 1.2
2022-10-31 20:34:28 +01:00
André Germann
d1df4ffb1a Merge pull request #287 from buanet/dependabot/github_actions/main/docker/setup-buildx-action-2.2.1
Bump docker/setup-buildx-action from 2.1.0 to 2.2.1
2022-10-31 20:34:14 +01:00
dependabot[bot]
b9d17a7bb2 Bump benc-uk/workflow-dispatch from 1.1 to 1.2
Bumps [benc-uk/workflow-dispatch](https://github.com/benc-uk/workflow-dispatch) from 1.1 to 1.2.
- [Release notes](https://github.com/benc-uk/workflow-dispatch/releases)
- [Commits](https://github.com/benc-uk/workflow-dispatch/compare/v1.1...v1.2)

---
updated-dependencies:
- dependency-name: benc-uk/workflow-dispatch
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-31 09:20:55 +00:00
buanet
c5d5d404f3 new ioBroker versions 2022-10-23 23:56:28 +00:00
dependabot[bot]
b24f70c92b Bump docker/setup-buildx-action from 2.1.0 to 2.2.1
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.1.0 to 2.2.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2.1.0...v2.2.1)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 09:29:19 +00:00
buanet
3f6ff969e6 typo 2022-10-14 21:34:21 +02:00
buanet
95647b0454 new ioBroker versions 2022-10-13 23:57:25 +00:00
André Germann
cd10532486 Merge pull request #286 from buanet/v7.1.0-beta.1
V7.1.0 beta.1
2022-10-13 15:14:20 +02:00
André Germann
5512620c07 Merge pull request #282 from buanet/dependabot/github_actions/main/docker/setup-qemu-action-2.1.0
Bump docker/setup-qemu-action from 2.0.0 to 2.1.0
2022-10-13 14:04:00 +02:00
André Germann
6064a5a5b9 Merge pull request #283 from buanet/dependabot/github_actions/main/docker/login-action-2.1.0
Bump docker/login-action from 2.0.0 to 2.1.0
2022-10-13 14:03:48 +02:00
André Germann
08de6045dc Merge pull request #284 from buanet/dependabot/github_actions/main/docker/build-push-action-3.2.0
Bump docker/build-push-action from 3.1.1 to 3.2.0
2022-10-13 14:03:35 +02:00
André Germann
c10bdb2d38 Merge pull request #285 from buanet/dependabot/github_actions/main/docker/setup-buildx-action-2.1.0
Bump docker/setup-buildx-action from 2.0.0 to 2.1.0
2022-10-13 14:03:18 +02:00
buanet
1cf44af683 change logging header 2022-10-13 14:01:02 +02:00
dependabot[bot]
ee94ac7572 Bump docker/setup-buildx-action from 2.0.0 to 2.1.0
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-13 09:26:48 +00:00
dependabot[bot]
3fd80fb374 Bump docker/build-push-action from 3.1.1 to 3.2.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3.1.1...v3.2.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-13 09:26:42 +00:00
dependabot[bot]
2749c118f5 Bump docker/login-action from 2.0.0 to 2.1.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-13 09:26:38 +00:00
dependabot[bot]
c5e1585c84 Bump docker/setup-qemu-action from 2.0.0 to 2.1.0
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-13 09:26:30 +00:00
buanet
8de1363a8a rework 2022-10-12 17:09:18 +02:00
André Germann
ce22ec340a Merge pull request #280 from buanet/dependabot/github_actions/main/docker/build-push-action-3.2.0
Bump docker/build-push-action from 3.1.1 to 3.2.0
2022-10-12 13:09:31 +02:00
André Germann
6d2ada6af1 Merge pull request #281 from buanet/dependabot/github_actions/main/docker/login-action-2.1.0
Bump docker/login-action from 2.0.0 to 2.1.0
2022-10-12 13:08:46 +02:00
dependabot[bot]
58998777b7 Bump docker/login-action from 2.0.0 to 2.1.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-12 09:50:36 +00:00
dependabot[bot]
106c38b979 Bump docker/build-push-action from 3.1.1 to 3.2.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3.1.1...v3.2.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-12 09:50:28 +00:00
buanet
3ec3c9847a rework 2022-10-12 08:49:09 +02:00
buanet
74539d586a testing 2022-10-11 18:03:44 +02:00
buanet
387317217b testing 2022-10-11 08:11:39 +02:00
buanet
d13c18f397 enhance build process 2022-10-06 11:30:45 +02:00
André Germann
d287a79e61 Merge pull request #274 from buanet/dependabot/github_actions/main/docker/build-push-action-3.1.1
Bump docker/build-push-action from 3.1.0 to 3.1.1
2022-09-19 21:57:15 +02:00
buanet
3e40d2acd1 small fixes 2022-09-19 21:54:57 +02:00
buanet
15da4a272d actions update 2022-09-19 18:34:01 +02:00
buanet
474012f3e8 testing strict mode for iobroker_startup.sh 2022-09-19 18:27:36 +02:00
dependabot[bot]
4d9bd86b05 Bump docker/build-push-action from 3.1.0 to 3.1.1
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 09:43:30 +00:00
André Germann
90a778a35f Merge pull request #272 from buanet/dependabot/github_actions/main/docker/build-push-action-3.1.0
Bump docker/build-push-action from 3.0.0 to 3.1.0
2022-07-22 20:40:50 +02:00
dependabot[bot]
a89f6cbe3d Bump docker/build-push-action from 3.0.0 to 3.1.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-20 09:38:12 +00:00
buanet
e5c301bac4 update docker hub readme 2022-07-05 20:48:11 +02:00
buanet
7394f516ee prepare v7.0.1 patch 2022-07-05 20:38:12 +02:00
buanet
f73e05c3aa backitup restore patch 2022-07-05 12:14:00 +02:00
André Germann
d1ed0a251a Merge pull request #267 from srunschke/main
typo
2022-07-05 11:54:29 +02:00
srunschke
a1cb1253d7 typo 2022-07-01 16:47:31 +02:00
buanet
efdd3d9810 fix ci 2022-06-21 18:54:22 +02:00
buanet
b046ae3654 update manifest-tool version 2022-06-21 13:29:17 +02:00
André Germann
673a0de5fa update manifest-tool version 2022-06-21 12:40:34 +02:00
buanet
c8a9a1e2db prepare v7.0.0 release 2022-06-21 11:11:28 +02:00
20 changed files with 318 additions and 494 deletions

View File

@@ -1 +1 @@
v7.0.0-beta.1 v7.1.1

1
.github/dependencies/.admin-version vendored Normal file
View File

@@ -0,0 +1 @@
6.2.23

View File

@@ -0,0 +1 @@
2.4.12

View File

@@ -0,0 +1 @@
3.0.5

View File

@@ -1,128 +0,0 @@
# Github action to build Docker image from beta branch (tag: beta)
name: Build debian beta-node16
on:
release:
types: [prereleased]
workflow_dispatch:
jobs:
build-beta-node16-image:
runs-on: ubuntu-latest
steps:
- name: Getting published prerelease tag
run: echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Checkout repo
uses: actions/checkout@v3
with:
repository: 'buanet/ioBroker.docker'
ref: ${{ env.RELEASE_TAG }}
- name: Get and write version and date
id: version
run: |
VERSION="$(cat .VERSION)"
MAJORVERSION="$(cat .VERSION | cut -c 1-2 | sed -r 's#^(.{0})#\1latest-#')"
DATI="$(date --rfc-3339=seconds | sed 's/ /T/')"
echo "This is the Version: $VERSION"
echo "version=$VERSION" >> $GITHUB_ENV
echo "This is the Major Version: $MAJORVERSION"
echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV
echo "This is the Buildnumber/Timestamp: $DATI"
echo "dati=$DATI" >> $GITHUB_ENV
# startup script
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
# amd64
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node16/Dockerfile > ./debian/node16/Dockerfile.tmp
mv -f ./debian/node16/Dockerfile.tmp ./debian/node16/Dockerfile
- name: Set up manifest tool
run: |
wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool
chmod +x manifest-tool
- name: Set up QEMU
uses: docker/setup-qemu-action@v2.0.0
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2.0.0
- name: Login to DockerHub
uses: docker/login-action@v2.0.0
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2.0.0
with:
registry: ghcr.io
username: ${{ secrets.PACKAGES_USER }}
password: ${{ secrets.PACKAGES_PASS }}
- name: Build Docker image (node16-amd64)
uses: docker/build-push-action@v3.0.0
with:
context: ./debian
file: ./debian/node16/Dockerfile
push: true
platforms: linux/amd64
tags: |
buanet/iobroker:${{ env.version }}-node16-amd64,
ghcr.io/buanet/iobroker:${{ env.version }}-node16-amd64
- name: Build Docker image (node16-arm32v7)
uses: docker/build-push-action@v3.0.0
with:
context: ./debian
file: ./debian/node16/Dockerfile
push: true
platforms: linux/arm/v7
tags: |
buanet/iobroker:${{ env.version }}-node16-arm32v7,
ghcr.io/buanet/iobroker:${{ env.version }}-node16-arm32v7
- name: Build Docker image (node16-arm64v8)
uses: docker/build-push-action@v3.0.0
with:
context: ./debian
file: ./debian/node16/Dockerfile
push: true
platforms: linux/arm64/v8
tags: |
buanet/iobroker:${{ env.version }}-node16-arm64v8,
ghcr.io/buanet/iobroker:${{ env.version }}-node16-arm64v8
- name: Create and push manifests
run: |
sed -e "s/\${VERSION}/${{ env.version }}-node16/g" -e "s/\${DOCKERTAG}/beta-node16/g" ./manifest.yml > manifest_beta-node16.yaml
./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_beta-node16.yaml
sed -e "s/\${VERSION}/${{ env.version }}-node16/g" -e "s/\${DOCKERTAG}/beta-node16/g" ./manifest_ghcr.yml > manifest_ghcr_beta-node16.yaml
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_beta-node16.yaml
sed -e "s/\${VERSION}/${{ env.version }}-node16/g" -e "s/\${DOCKERTAG}/${{ env.version }}-node16/g" ./manifest.yml > manifest_version-node16.yaml
./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_version-node16.yaml
sed -e "s/\${VERSION}/${{ env.version }}-node16/g" -e "s/\${DOCKERTAG}/${{ env.version }}-node16/g" ./manifest_ghcr.yml > manifest_ghcr_version-node16.yaml
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_version-node16.yaml
- name: Delete untagged images from GitHub packages
uses: actions/github-script@v6
with:
github-token: ${{ secrets.PACKAGES_PASS }}
script: |
const response = await github.request("GET /users/${{ env.OWNER }}/packages/container/${{ env.PACKAGE_NAME }}/versions",
{ per_page: ${{ env.PER_PAGE }}
});
for(version of response.data) {
if (version.metadata.container.tags.length == 0) {
console.log("delete " + version.id)
const deleteResponse = await github.request("DELETE /user/packages/container/${{ env.PACKAGE_NAME }}/versions/" + version.id, { });
console.log("status " + deleteResponse.status)
}
}
env:
OWNER: buanet
PACKAGE_NAME: iobroker
PER_PAGE: 100

View File

@@ -40,31 +40,31 @@ jobs:
- name: Set up manifest tool - name: Set up manifest tool
run: | run: |
wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool wget https://github.com/estesp/manifest-tool/releases/download/v1.0.3/manifest-tool-linux-amd64 -O manifest-tool
chmod +x manifest-tool chmod +x manifest-tool
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2.0.0 uses: docker/setup-qemu-action@v2.1.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v2.0.0 uses: docker/setup-buildx-action@v2.2.1
- name: Login to DockerHub - name: Login to DockerHub
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
username: ${{ secrets.DOCKER_USER }} username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }} password: ${{ secrets.DOCKER_PASS }}
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ secrets.PACKAGES_USER }} username: ${{ secrets.PACKAGES_USER }}
password: ${{ secrets.PACKAGES_PASS }} password: ${{ secrets.PACKAGES_PASS }}
- name: Build Docker image (node18-amd64) - name: Build Docker image (node18-amd64)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node18/Dockerfile file: ./debian/node18/Dockerfile
@@ -75,7 +75,7 @@ jobs:
ghcr.io/buanet/iobroker:${{ env.version }}-node18-amd64 ghcr.io/buanet/iobroker:${{ env.version }}-node18-amd64
- name: Build Docker image (node18-arm32v7) - name: Build Docker image (node18-arm32v7)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node18/Dockerfile file: ./debian/node18/Dockerfile
@@ -86,7 +86,7 @@ jobs:
ghcr.io/buanet/iobroker:${{ env.version }}-node18-arm32v7 ghcr.io/buanet/iobroker:${{ env.version }}-node18-arm32v7
- name: Build Docker image (node18-arm64v8) - name: Build Docker image (node18-arm64v8)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node18/Dockerfile file: ./debian/node18/Dockerfile

View File

@@ -40,31 +40,31 @@ jobs:
- name: Set up manifest tool - name: Set up manifest tool
run: | run: |
wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool wget https://github.com/estesp/manifest-tool/releases/download/v1.0.3/manifest-tool-linux-amd64 -O manifest-tool
chmod +x manifest-tool chmod +x manifest-tool
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2.0.0 uses: docker/setup-qemu-action@v2.1.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v2.0.0 uses: docker/setup-buildx-action@v2.2.1
- name: Login to DockerHub - name: Login to DockerHub
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
username: ${{ secrets.DOCKER_USER }} username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }} password: ${{ secrets.DOCKER_PASS }}
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ secrets.PACKAGES_USER }} username: ${{ secrets.PACKAGES_USER }}
password: ${{ secrets.PACKAGES_PASS }} password: ${{ secrets.PACKAGES_PASS }}
- name: Build Docker image (amd64) - name: Build Docker image (amd64)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node16/Dockerfile file: ./debian/node16/Dockerfile
@@ -75,7 +75,7 @@ jobs:
ghcr.io/buanet/iobroker:${{ env.version }}-amd64 ghcr.io/buanet/iobroker:${{ env.version }}-amd64
- name: Build Docker image (arm32v7) - name: Build Docker image (arm32v7)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node16/Dockerfile file: ./debian/node16/Dockerfile
@@ -86,7 +86,7 @@ jobs:
ghcr.io/buanet/iobroker:${{ env.version }}-arm32v7 ghcr.io/buanet/iobroker:${{ env.version }}-arm32v7
- name: Build Docker image (arm64v8) - name: Build Docker image (arm64v8)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node16/Dockerfile file: ./debian/node16/Dockerfile

View File

@@ -1,119 +0,0 @@
# Github action to build Docker image from dev branch (tag: dev)
name: Build debian dev-node16
on:
workflow_dispatch:
jobs:
build-dev-node16-image:
runs-on: ubuntu-latest
steps:
- name: Checkout repo (dev)
uses: actions/checkout@v3
with:
repository: 'buanet/ioBroker.docker'
ref: 'main'
- name: Get and write version and date
id: version
run: |
VERSION="$(cat .VERSION)"
MAJORVERSION="$(cat .VERSION | cut -c 1-2 | sed -r 's#^(.{0})#\1latest-#')"
DATI="$(date --rfc-3339=seconds | sed 's/ /T/')"
echo "This is the Version: $VERSION"
echo "version=$VERSION" >> $GITHUB_ENV
echo "This is the Major Version: $MAJORVERSION"
echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV
echo "This is the Buildnumber/Timestamp: $DATI"
echo "dati=$DATI" >> $GITHUB_ENV
# startup script
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
# amd64
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${DATI}/$DATI/" ./debian/node16/Dockerfile > ./debian/node16/Dockerfile.tmp
mv -f ./debian/node16/Dockerfile.tmp ./debian/node16/Dockerfile
- name: Set up manifest tool
run: |
wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool
chmod +x manifest-tool
- name: Set up QEMU
uses: docker/setup-qemu-action@v2.0.0
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2.0.0
- name: Login to DockerHub
uses: docker/login-action@v2.0.0
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2.0.0
with:
registry: ghcr.io
username: ${{ secrets.PACKAGES_USER }}
password: ${{ secrets.PACKAGES_PASS }}
- name: Build Docker image (node16-amd64)
uses: docker/build-push-action@v3.0.0
with:
context: ./debian
file: ./debian/node16/Dockerfile
push: true
platforms: linux/amd64
tags: |
buanet/iobroker:dev-node16-amd64,
ghcr.io/buanet/iobroker:dev-node16-amd64
- name: Build Docker image (node16-arm32v7)
uses: docker/build-push-action@v3.0.0
with:
context: ./debian
file: ./debian/node16/Dockerfile
push: true
platforms: linux/arm/v7
tags: |
buanet/iobroker:dev-node16-arm32v7,
ghcr.io/buanet/iobroker:dev-node16-arm32v7
- name: Build Docker image (node16-arm64v8)
uses: docker/build-push-action@v3.0.0
with:
context: ./debian
file: ./debian/node16/Dockerfile
push: true
platforms: linux/arm64/v8
tags: |
buanet/iobroker:dev-node16-arm64v8,
ghcr.io/buanet/iobroker:dev-node16-arm64v8
- name: Create and push manifests
run: |
sed -e "s/\${VERSION}/dev-node16/g" -e "s/\${DOCKERTAG}/dev-node16/g" ./manifest.yml > manifest_dev-node16.yaml
./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_dev-node16.yaml
sed -e "s/\${VERSION}/dev-node16/g" -e "s/\${DOCKERTAG}/dev-node16/g" ./manifest_ghcr.yml > manifest_ghcr_dev-node16.yaml
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_dev-node16.yaml
- name: Delete untagged images from GitHub packages
uses: actions/github-script@v6
with:
github-token: ${{ secrets.PACKAGES_PASS }}
script: |
const response = await github.request("GET /users/${{ env.OWNER }}/packages/container/${{ env.PACKAGE_NAME }}/versions",
{ per_page: ${{ env.PER_PAGE }}
});
for(version of response.data) {
if (version.metadata.container.tags.length == 0) {
console.log("delete " + version.id)
const deleteResponse = await github.request("DELETE /user/packages/container/${{ env.PACKAGE_NAME }}/versions/" + version.id, { });
console.log("status " + deleteResponse.status)
}
}
env:
OWNER: buanet
PACKAGE_NAME: iobroker
PER_PAGE: 100

View File

@@ -35,31 +35,31 @@ jobs:
- name: Set up manifest tool - name: Set up manifest tool
run: | run: |
wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool wget https://github.com/estesp/manifest-tool/releases/download/v1.0.3/manifest-tool-linux-amd64 -O manifest-tool
chmod +x manifest-tool chmod +x manifest-tool
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2.0.0 uses: docker/setup-qemu-action@v2.1.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v2.0.0 uses: docker/setup-buildx-action@v2.2.1
- name: Login to DockerHub - name: Login to DockerHub
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
username: ${{ secrets.DOCKER_USER }} username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }} password: ${{ secrets.DOCKER_PASS }}
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ secrets.PACKAGES_USER }} username: ${{ secrets.PACKAGES_USER }}
password: ${{ secrets.PACKAGES_PASS }} password: ${{ secrets.PACKAGES_PASS }}
- name: Build Docker image (node18-amd64) - name: Build Docker image (node18-amd64)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node18/Dockerfile file: ./debian/node18/Dockerfile
@@ -70,7 +70,7 @@ jobs:
ghcr.io/buanet/iobroker:dev-node18-amd64 ghcr.io/buanet/iobroker:dev-node18-amd64
- name: Build Docker image (node18-arm32v7) - name: Build Docker image (node18-arm32v7)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node18/Dockerfile file: ./debian/node18/Dockerfile
@@ -81,7 +81,7 @@ jobs:
ghcr.io/buanet/iobroker:dev-node18-arm32v7 ghcr.io/buanet/iobroker:dev-node18-arm32v7
- name: Build Docker image (node18-arm64v8) - name: Build Docker image (node18-arm64v8)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node18/Dockerfile file: ./debian/node18/Dockerfile

View File

@@ -12,7 +12,7 @@ jobs:
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
repository: 'buanet/ioBroker.docker' repository: 'buanet/ioBroker.docker'
ref: 'main' # ref: 'main'
- name: Get and write version and date - name: Get and write version and date
id: version id: version
@@ -35,31 +35,31 @@ jobs:
- name: Set up manifest tool - name: Set up manifest tool
run: | run: |
wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool wget https://github.com/estesp/manifest-tool/releases/download/v1.0.3/manifest-tool-linux-amd64 -O manifest-tool
chmod +x manifest-tool chmod +x manifest-tool
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2.0.0 uses: docker/setup-qemu-action@v2.1.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v2.0.0 uses: docker/setup-buildx-action@v2.2.1
- name: Login to DockerHub - name: Login to DockerHub
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
username: ${{ secrets.DOCKER_USER }} username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }} password: ${{ secrets.DOCKER_PASS }}
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ secrets.PACKAGES_USER }} username: ${{ secrets.PACKAGES_USER }}
password: ${{ secrets.PACKAGES_PASS }} password: ${{ secrets.PACKAGES_PASS }}
- name: Build Docker image (amd64) - name: Build Docker image (amd64)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node16/Dockerfile file: ./debian/node16/Dockerfile
@@ -70,7 +70,7 @@ jobs:
ghcr.io/buanet/iobroker:dev-amd64 ghcr.io/buanet/iobroker:dev-amd64
- name: Build Docker image (arm32v7) - name: Build Docker image (arm32v7)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node16/Dockerfile file: ./debian/node16/Dockerfile
@@ -81,7 +81,7 @@ jobs:
ghcr.io/buanet/iobroker:dev-arm32v7 ghcr.io/buanet/iobroker:dev-arm32v7
- name: Build Docker image (arm64v8) - name: Build Docker image (arm64v8)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node16/Dockerfile file: ./debian/node16/Dockerfile

View File

@@ -39,52 +39,52 @@ 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/node14/Dockerfile > ./debian/node14/Dockerfile.tmp sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node16/Dockerfile > ./debian/node16/Dockerfile.tmp
mv -f ./debian/node14/Dockerfile.tmp ./debian/node14/Dockerfile mv -f ./debian/node16/Dockerfile.tmp ./debian/node16/Dockerfile
- name: Set up manifest tool - name: Set up manifest tool
run: | run: |
wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool wget https://github.com/estesp/manifest-tool/releases/download/v1.0.3/manifest-tool-linux-amd64 -O manifest-tool
chmod +x manifest-tool chmod +x manifest-tool
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2.0.0 uses: docker/setup-qemu-action@v2.1.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v2.0.0 uses: docker/setup-buildx-action@v2.2.1
- name: Login to DockerHub (iobroker) - name: Login to DockerHub (iobroker)
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
username: ${{ secrets.DOCKER_USER_IOB }} username: ${{ secrets.DOCKER_USER_IOB }}
password: ${{ secrets.DOCKER_PASS_IOB }} password: ${{ secrets.DOCKER_PASS_IOB }}
- name: Build Docker image (amd64) - name: Build Docker image (amd64)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node14/Dockerfile file: ./debian/node16/Dockerfile
push: true push: true
platforms: linux/amd64 platforms: linux/amd64
tags: | tags: |
iobroker/iobroker:${{ env.version }}-amd64, iobroker/iobroker:${{ env.version }}-amd64,
- name: Build Docker image (arm32v7) - name: Build Docker image (arm32v7)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node14/Dockerfile file: ./debian/node16/Dockerfile
push: true push: true
platforms: linux/arm/v7 platforms: linux/arm/v7
tags: | tags: |
iobroker/iobroker:${{ env.version }}-arm32v7, iobroker/iobroker:${{ env.version }}-arm32v7,
- name: Build Docker image (arm64v8) - name: Build Docker image (arm64v8)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node14/Dockerfile file: ./debian/node16/Dockerfile
push: true push: true
platforms: linux/arm64/v8 platforms: linux/arm64/v8
tags: | tags: |

View File

@@ -39,39 +39,39 @@ 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/node14/Dockerfile > ./debian/node14/Dockerfile.tmp sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node16/Dockerfile > ./debian/node16/Dockerfile.tmp
mv -f ./debian/node14/Dockerfile.tmp ./debian/node14/Dockerfile mv -f ./debian/node16/Dockerfile.tmp ./debian/node16/Dockerfile
- name: Set up manifest tool - name: Set up manifest tool
run: | run: |
wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool wget https://github.com/estesp/manifest-tool/releases/download/v1.0.3/manifest-tool-linux-amd64 -O manifest-tool
chmod +x manifest-tool chmod +x manifest-tool
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2.0.0 uses: docker/setup-qemu-action@v2.1.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v2.0.0 uses: docker/setup-buildx-action@v2.2.1
- name: Login to DockerHub (buanet) - name: Login to DockerHub (buanet)
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
username: ${{ secrets.DOCKER_USER }} username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }} password: ${{ secrets.DOCKER_PASS }}
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@v2.0.0 uses: docker/login-action@v2.1.0
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ secrets.PACKAGES_USER }} username: ${{ secrets.PACKAGES_USER }}
password: ${{ secrets.PACKAGES_PASS }} password: ${{ secrets.PACKAGES_PASS }}
- name: Build Docker image (amd64) - name: Build Docker image (amd64)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node14/Dockerfile file: ./debian/node16/Dockerfile
push: true push: true
platforms: linux/amd64 platforms: linux/amd64
tags: | tags: |
@@ -79,10 +79,10 @@ jobs:
ghcr.io/buanet/iobroker:${{ env.version }}-amd64 ghcr.io/buanet/iobroker:${{ env.version }}-amd64
- name: Build Docker image (arm32v7) - name: Build Docker image (arm32v7)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node14/Dockerfile file: ./debian/node16/Dockerfile
push: true push: true
platforms: linux/arm/v7 platforms: linux/arm/v7
tags: | tags: |
@@ -90,10 +90,10 @@ jobs:
ghcr.io/buanet/iobroker:${{ env.version }}-arm32v7 ghcr.io/buanet/iobroker:${{ env.version }}-arm32v7
- name: Build Docker image (arm64v8) - name: Build Docker image (arm64v8)
uses: docker/build-push-action@v3.0.0 uses: docker/build-push-action@v3.2.0
with: with:
context: ./debian context: ./debian
file: ./debian/node14/Dockerfile file: ./debian/node16/Dockerfile
push: true push: true
platforms: linux/arm64/v8 platforms: linux/arm64/v8
tags: | tags: |

View File

@@ -1,8 +1,8 @@
name: Check js-controller release name: Check ioBroker versions
on: on:
schedule: schedule:
- cron: '42 23 * * *' - cron: '42 23 * * *'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -15,13 +15,20 @@ jobs:
repository: 'buanet/ioBroker.docker' repository: 'buanet/ioBroker.docker'
token: ${{ secrets.ACTIONS_PAT }} token: ${{ secrets.ACTIONS_PAT }}
- name: Fetch js-controller release version - name: Fetch ioBroker versions
run: | run: |
curl -sL https://repo.iobroker.live/sources-dist.json | \ curl -sL https://repo.iobroker.live/sources-dist.json | \
jq -r '."js-controller".version' > .github/dependencies/.js-controller-version jq -r '."js-controller".version' > .github/dependencies/.js-controller-version
# curl -sL https://api.github.com/repos/ioBroker/ioBroker.js-controller/releases/latest | \
# jq -r ".tag_name" > .github/dependencies/.js-controller-version
echo "[LOG] Fetched js-controller version is $(cat .github/dependencies/.js-controller-version)" echo "[LOG] Fetched js-controller version is $(cat .github/dependencies/.js-controller-version)"
curl -sL https://repo.iobroker.live/sources-dist.json | \
jq -r '."admin".version' > .github/dependencies/.admin-version
echo "[LOG] Fetched admin version is $(cat .github/dependencies/.admin-version)"
curl -sL https://repo.iobroker.live/sources-dist.json | \
jq -r '."backitup".version' > .github/dependencies/.backitup-version
echo "[LOG] Fetched backitup version is $(cat .github/dependencies/.backitup-version)"
curl -sL https://repo.iobroker.live/sources-dist.json | \
jq -r '."discovery".version' > .github/dependencies/.discovery-version
echo "[LOG] Fetched discovery version is $(cat .github/dependencies/.discovery-version)"
- name: Check for modified files - name: Check for modified files
id: git-check id: git-check
@@ -32,12 +39,12 @@ jobs:
run: | run: |
git config --global user.name 'buanet' git config --global user.name 'buanet'
git config --global user.email 'info@buanet.de' git config --global user.email 'info@buanet.de'
git commit -am "new js-controller release" git commit -am "new ioBroker versions"
git push git push
- name: Trigger build debian latest (buanet) - name: Trigger build debian latest (buanet)
if: steps.git-check.outputs.modified == 'true' if: steps.git-check.outputs.modified == 'true'
uses: benc-uk/workflow-dispatch@v1.1 uses: benc-uk/workflow-dispatch@v1.2
with: with:
workflow: Build debian latest (buanet) workflow: Build debian latest (buanet)
repo: buanet/ioBroker.docker repo: buanet/ioBroker.docker
@@ -45,7 +52,7 @@ jobs:
- name: Trigger build debian latest (iobroker) - name: Trigger build debian latest (iobroker)
if: steps.git-check.outputs.modified == 'true' if: steps.git-check.outputs.modified == 'true'
uses: benc-uk/workflow-dispatch@v1.1 uses: benc-uk/workflow-dispatch@v1.2
with: with:
workflow: Build debian latest (iobroker) workflow: Build debian latest (iobroker)
repo: buanet/ioBroker.docker repo: buanet/ioBroker.docker

View File

@@ -1,11 +1,30 @@
## Changelog ## Changelog
### v7.0.0-beta.1 (16.06.2022)
* upgrade node version to recommended node16 ### v7.1.1 (01.11.2022)
* rewrite maintenance script ([#243 by @agross](https://github.com/buanet/ioBroker.docker/pull/243)) * fix setting gid of iobroker group ([#289](https://github.com/buanet/ioBroker.docker/issues/289))
* enhance container shutdown on SIGTERM ([as requested with #264 by @buzz0r](https://github.com/buanet/ioBroker.docker/pull/264))
* enhance startup script logging ### v7.1.0 (31.10.2022)
* enhance logging for avahi & zwave install scripts * fix [build action node issue](https://forum.iobroker.net/topic/59518/docker-image-7-0-1-auf-node-js-14/14?_=1667244004952) for iobroker/iobroker repo
* add new env for offline mode (fixes [#255](https://github.com/buanet/ioBroker.docker/issues/255)) * v7.1.0-beta.1 (12.10.2022)
* add env DEBUG for extended debugging log
* enhance logging in iobroker-startup.sh
* enhance build process
* add restart option to maintenance script
* add strict mode for iobroker-startup.sh
* fix "unary operator expected" error
### v7.0.1 (05.07.2022)
* backitup restore patch
### v7.0.0 (21.06.2022)
* update docs & ci
* v7.0.0-beta.1 (16.06.2022)
* upgrade node version to recommended node16
* rewrite maintenance script ([#243 by @agross](https://github.com/buanet/ioBroker.docker/pull/243))
* enhance container shutdown on SIGTERM ([as requested with #264 by @buzz0r](https://github.com/buanet/ioBroker.docker/pull/264))
* enhance startup script logging
* enhance logging for avahi & zwave install scripts
* add new env for offline mode (fixes [#255](https://github.com/buanet/ioBroker.docker/issues/255))
### v6.1.0 (2022-03-01) ### v6.1.0 (2022-03-01)
* v6.1.0-beta.2 (2022-02-11) * v6.1.0-beta.2 (2022-02-11)
@@ -20,7 +39,7 @@
* add alias "m" for maintenance script * add alias "m" for maintenance script
### v6.0.0 (2021-12-09) ### v6.0.0 (2021-12-09)
* move docu/ restructuring readme * move docs/ restructuring readme
* v6.0.0-beta1 (2021-10-07) * v6.0.0-beta1 (2021-10-07)
* upgrade node version to recommended node14 * upgrade node version to recommended node14
* add beta-node16 tag for beta testing node16 * add beta-node16 tag for beta testing node16

View File

@@ -60,7 +60,7 @@ Please do not use the issues for support questions. Not every error message is w
### Beta testing ### Beta testing
If you want to get the newest features and changes feel free to use/ test the beta version of the Docker image. You can find the changelog for beta versions [here](https://github.com/buanet/ioBroker.docker/blob/dev/CHANGELOG.md). For more details and beta support join us at the "docker-image" chat on the [ioBroker Discord channel](https://discord.gg/Ne3y6fUac3). If you want to get the newest features and changes feel free to use/ test the beta version of the Docker image. For more details and beta support join us at "beta testing & feedback" > "docker-image" on the [ioBroker Discord channel](https://discord.gg/Ne3y6fUac3).
### Support the project ### Support the project

View File

@@ -1,11 +1,16 @@
#!/bin/bash #!/usr/bin/env bash
# bash strict mode
set -euo pipefail
# Setting healthcheck status to "starting" # Setting healthcheck status to "starting"
echo 'starting' > /opt/scripts/.docker_config/.healthcheck echo 'starting' > /opt/scripts/.docker_config/.healthcheck
# Reading ENV # Reading ENV
set +u
adminport=$IOB_ADMINPORT adminport=$IOB_ADMINPORT
avahi=$AVAHI avahi=$AVAHI
debug=$DEBUG
multihost=$IOB_MULTIHOST multihost=$IOB_MULTIHOST
offlinemode=$OFFLINE_MODE offlinemode=$OFFLINE_MODE
objectsdbhost=$IOB_OBJECTSDB_HOST objectsdbhost=$IOB_OBJECTSDB_HOST
@@ -19,6 +24,7 @@ statesdbport=$IOB_STATESDB_PORT
statesdbtype=$IOB_STATESDB_TYPE statesdbtype=$IOB_STATESDB_TYPE
usbdevices=$USBDEVICES usbdevices=$USBDEVICES
zwave=$ZWAVE zwave=$ZWAVE
set -u
pkill_timeout=10 # timeout for iobroker shutdown in seconds pkill_timeout=10 # timeout for iobroker shutdown in seconds
@@ -30,44 +36,47 @@ echo ' '
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo -n "$(printf -- '-%.0s' {1..25})" && echo -n " "$dati" " && echo "$(printf -- '-%.0s' {1..25})" echo -n "$(printf -- '-%.0s' {1..25})" && echo -n " "$dati" " && echo "$(printf -- '-%.0s' {1..25})"
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo ' ' echo '----- -----'
echo "$(printf -- '-%.0s' {1..80})" echo "----- ██╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ ██████╗ -----"
echo "----- Welcome to your ioBroker-container! -----" echo "----- ██║ ██╔═══██╗ ██╔══██╗ ██╔══██╗ ██╔═══██╗ ██║ ██╔╝ ██╔════╝ ██╔══██╗ -----"
echo "----- Startupscript is now running. -----" echo "----- ██║ ██║ ██║ ██████╔╝ ██████╔╝ ██║ ██║ █████╔╝ █████╗ ██████╔╝ -----"
echo "----- ██║ ██║ ██║ ██╔══██╗ ██╔══██╗ ██║ ██║ ██╔═██╗ ██╔══╝ ██╔══██╗ -----"
echo "----- ██║ ╚██████╔╝ ██████╔╝ ██║ ██║ ╚██████╔╝ ██║ ██╗ ███████╗ ██║ ██║ -----"
echo "----- ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ -----"
echo '----- -----'
echo "----- Welcome to your ioBroker Docker container! -----"
echo "----- Startupscript is now running! -----"
echo "----- Please be patient! -----" echo "----- Please be patient! -----"
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo ' ' echo ' '
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo "----- Debugging information -----" echo "----- System Information -----"
echo "----- -----"
echo "----- System -----"
echo -n "----- " && echo -n "$(printf "%-20s %-28s" arch: $(uname -m))" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" arch: $(uname -m))" && echo " -----"
echo -n "----- " && echo -n "$(printf "%-20s %-28s" hostname: $(hostname))" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" hostname: $(hostname))" && echo " -----"
echo "----- -----" echo "----- -----"
echo "----- Docker-Image -----" echo "----- Version Information -----"
echo -n "----- " && echo -n "$(printf "%-20s %-28s" image: ${VERSION})" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" image: ${VERSION})" && echo " -----"
echo -n "----- " && echo -n "$(printf "%-20s %-28s" build: ${BUILD})" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" build: ${BUILD})" && echo " -----"
echo "----- -----"
echo "----- Versions -----"
echo -n "----- " && echo -n "$(printf "%-20s %-28s" node: $(node -v))" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" node: $(node -v))" && echo " -----"
echo -n "----- " && echo -n "$(printf "%-20s %-28s" npm: $(npm -v))" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" npm: $(npm -v))" && echo " -----"
echo "----- -----" echo "----- -----"
echo "----- ENV -----" echo "----- Environment Variables -----"
if [ "$avahi" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" AVAHI: $avahi)" && echo " -----"; fi if [[ "$adminport" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_ADMINPORT: $adminport)" && echo " -----"; fi
if [ "$adminport" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_ADMINPORT: $adminport)" && echo " -----"; fi if [[ "$avahi" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" AVAHI: $avahi)" && echo " -----"; fi
if [ "$multihost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_MULTIHOST: $multihost)" && echo " -----"; fi if [[ "$debug" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" DEBUG: $debug)" && echo " -----"; fi
if [ "$objectsdbhost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_HOST: $objectsdbhost)" && echo " -----"; fi if [[ "$multihost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_MULTIHOST: $multihost)" && echo " -----"; fi
if [ "$objectsdbport" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_PORT: $objectsdbport)" && echo " -----"; fi if [[ "$objectsdbhost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_HOST: $objectsdbhost)" && echo " -----"; fi
if [ "$objectsdbtype" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_TYPE: $objectsdbtype)" && echo " -----"; fi if [[ "$objectsdbport" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_PORT: $objectsdbport)" && echo " -----"; fi
if [ "$statesdbhost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_HOST: $statesdbhost)" && echo " -----"; fi if [[ "$objectsdbtype" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_TYPE: $objectsdbtype)" && echo " -----"; fi
if [ "$statesdbport" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_PORT: $statesdbport)" && echo " -----"; fi if [[ "$statesdbhost" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_HOST: $statesdbhost)" && echo " -----"; fi
if [ "$statesdbtype" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_TYPE: $statesdbtype)" && echo " -----"; fi if [[ "$statesdbport" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_PORT: $statesdbport)" && echo " -----"; fi
if [ "$offlinemode" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" OFFLINE_MODE: $offlinemode)" && echo " -----"; fi if [[ "$statesdbtype" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_TYPE: $statesdbtype)" && echo " -----"; fi
if [ "$packages" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PACKAGES: "$packages")" && echo " -----"; fi if [[ "$offlinemode" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" OFFLINE_MODE: $offlinemode)" && echo " -----"; fi
if [ "$setgid" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETGID: $setgid)" && echo " -----"; fi if [[ "$packages" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PACKAGES: "$packages")" && echo " -----"; fi
if [ "$setuid" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETUID: $setuid)" && echo " -----"; fi if [[ "$setgid" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETGID: $setgid)" && echo " -----"; fi
if [ "$usbdevices" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" USBDEVICES: $usbdevices)" && echo " -----"; fi if [[ "$setuid" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETUID: $setuid)" && echo " -----"; fi
if [ "$zwave" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" ZWAVE: $zwave)" && echo " -----"; fi if [[ "$usbdevices" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" USBDEVICES: $usbdevices)" && echo " -----"; fi
if [[ "$zwave" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" ZWAVE: $zwave)" && echo " -----"; fi
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo ' ' echo ' '
@@ -80,10 +89,10 @@ 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/.firstrun ]]; then
# Updating Linux packages # Updating Linux packages
if [ "$offlinemode" = "true" ]; then if [[ "$offlinemode" = "true" ]]; then
echo 'Offline mode is activated by ENV. Skipping Linux package updates on first run.' echo 'OFFLINE_MODE is \"true\". Skipping Linux package updates on first run.'
echo ' ' echo ' '
else else
echo 'Updating Linux packages on first run...' echo 'Updating Linux packages on first run...'
@@ -91,6 +100,18 @@ if [ -f /opt/.firstrun ]; then
echo 'Done.' echo 'Done.'
echo ' ' echo ' '
fi fi
# Installing packages from ENV
if [[ "$packages" != "" && "$offlinemode" = "true" ]]; then
echo 'PACKAGES is set, but OFFLINE_MODE is \"true\". Skipping Linux package installation.'
echo ' '
else
echo 'PACKAGES is set. Installing additional Linux packages.'
echo "Checking the following packages:" $packages"..."
echo $packages > /opt/scripts/.docker_config/.packages
bash /opt/scripts/setup_packages.sh -install
echo 'Done.'
echo ' '
fi
# Register maintenance script # Register maintenance script
echo -n 'Registering maintenance script as command... ' echo -n 'Registering maintenance script as command... '
echo "alias maintenance=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc echo "alias maintenance=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc
@@ -103,26 +124,12 @@ else
echo ' ' echo ' '
fi fi
# Installing packages from ENV
if [ "$packages" != "" ] && [ "$offlinemode" = "true" ]; then
echo 'Installing additional packages is set by ENV but offline mode is activated!'
echo 'Skipping Linux packages installation.'
echo ' '
else
echo 'Installing additional packages is set by ENV.'
echo "Checking the following Packages:" $packages"..."
echo $packages > /opt/scripts/.docker_config/.packages
bash /opt/scripts/setup_packages.sh -install
echo 'Done.'
echo ' '
fi
# Setting UID and/ or GID # Setting UID and/ or GID
if [ $(cat /etc/group | grep 'iobroker:' | cut -d':' -f3) != $setgid ] || [ $(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3) != $setuid ]; then if [[ "$setgid" != "$(cat /etc/group | grep 'iobroker:' | cut -d':' -f3)" || "$setuid" != "$(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3)" ]]; then
echo "Different UID and/ or GID is set by ENV." echo "SETUID and/ or SETGID are set to individual 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 -g $setgid iobroker groupmod -og $setgid iobroker
echo 'Done.' echo 'Done.'
echo ' ' echo ' '
fi fi
@@ -138,25 +145,24 @@ echo "----- Step 2 of 5: Detecting ioBroker installation
echo "$(printf -- '-%.0s' {1..80})" echo "$(printf -- '-%.0s' {1..80})"
echo ' ' echo ' '
if [ `find /opt/iobroker -type f | wc -l` -lt 1 ] if [[ `find /opt/iobroker -type f | wc -l` -lt 1 ]]; then
then
echo "There is no data detected in /opt/iobroker." echo "There is no data detected in /opt/iobroker."
echo -n "Restoring initial ioBroker installation... " echo -n "Restoring initial ioBroker installation... "
tar -xf /opt/initial_iobroker.tar -C / tar -xf /opt/initial_iobroker.tar -C /
echo 'Done.' echo 'Done.'
elif [ -f /opt/iobroker/iobroker ] elif [[ -f /opt/iobroker/iobroker ]]; then
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" ] if [[ "$multihost" = "slave" ]]; then
then
if [ "$multihost" = "slave" ]
then
echo "IoBroker backup file detected in /opt/iobroker. But Multihost is set to \"slave\"." echo "IoBroker backup file detected in /opt/iobroker. But Multihost is set to \"slave\"."
echo "Restoring a backup is not supported on Multihost slaves. Please check configuration and start over." echo "Restoring a backup is not supported on Multihost slaves. Please check configuration and start over."
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
else else
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
echo -n "Preparing restore... " 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 /
@@ -171,7 +177,7 @@ then
echo ' ' echo ' '
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "!!!!! IMPORTANT NOTE !!!!!" echo "!!!!! IMPORTANT NOTE !!!!!"
echo "!!!!! The sartup script restored iobroker from a backup file. !!!!!" echo "!!!!! The startup script restored iobroker from a backup file. !!!!!"
echo "!!!!! Check /opt/iobroker/log/restore.log to see if restore was successful. !!!!!" 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 "!!!!! When ioBroker now starts it will reinstall all Adapters automatically. !!!!!"
echo "!!!!! This might be take a looooong time! Please be patient! !!!!!" echo "!!!!! This might be take a looooong time! Please be patient! !!!!!"
@@ -181,6 +187,10 @@ then
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 or a valid backup file!"
echo "Please check/ recreate mounted folder or volume and start over." echo "Please check/ recreate mounted folder or volume and start over."
if [[ "$debug" == "true" ]]; then
echo "[DEBUG] Detected files:"
ls -al
fi
exit 1 exit 1
fi fi
echo ' ' echo ' '
@@ -194,14 +204,14 @@ echo "$(printf -- '-%.0s' {1..80})"
echo ' ' echo ' '
# (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts" # (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts"
echo -n "(Re)Setting folder permissions (This might take a while! Please be patient!)... " echo -n "(Re)setting permissions (This might take a while! Please be patient!)... "
chown -R $setuid:$setgid /opt/iobroker chown -R $setuid:$setgid /opt/iobroker
chown -R $setuid:$setgid /opt/scripts chown -R $setuid:$setgid /opt/scripts
echo 'Done.' echo 'Done.'
echo ' ' 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 in iobroker with gosu... " echo -n "Fixing \"sudo-bug\" by replacing sudo with gosu... "
cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak
chmod 755 /opt/iobroker/iobroker chmod 755 /opt/iobroker/iobroker
sed -i 's/sudo -H -u/gosu/g' /opt/iobroker/iobroker sed -i 's/sudo -H -u/gosu/g' /opt/iobroker/iobroker
@@ -209,13 +219,33 @@ echo 'Done.'
echo ' ' echo ' '
# checking hostname in ioBroker to match container hostname # checking hostname in ioBroker to match container hostname
if [ $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ] && [ "$multihost" != "slave" ] if [[ "$(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')" != "$(hostname)" && "$multihost" != "slave" ]]; then
then
echo "Hostname in ioBroker does not match the hostname of this container." echo "Hostname in ioBroker does not match the hostname of this container."
echo -n "Updating hostname to " $(hostname)"... " if [[ "$debug" == "true" ]]; then
bash iobroker host $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') echo "[DEBUG] Detected hostname in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')
echo "[DEBUG] Detected hostname in container: " $(hostname)
fi
echo -n "Updating hostname to "$(hostname)"... "
bash iobroker host $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')
echo 'Done.' echo 'Done.'
echo ' ' echo ' '
elif [[ "$multihost" == "slave" ]]; then
echo "IOB_MULTIHOST ist set to \"slave\". Hostname check will be skipped."
echo ' '
elif [[ "$(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')" = "$(hostname)" && "$multihost" != "slave" ]]; then
echo "Hostname in ioBroker matches the hostname of this container."
if [[ "$debug" == "true" ]]; then
echo "[DEBUG] Detected hostname in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')
echo "[DEBUG] Detected hostname in container: " $(hostname)
fi
echo "No action required."
echo ' '
else
if [[ "$debug" == "true" ]]; then
echo "[DEBUG] There was a problem checking the hostname."
echo "[DEBUG] Detected hostname in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')
echo "[DEBUG] Detected hostname in container: " $(hostname)
fi
fi fi
##### #####
@@ -231,11 +261,12 @@ echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.d
echo ' ' echo ' '
# Checking ENV for Adminport # Checking ENV for Adminport
if [ "$adminport" != "" ] if [[ "$adminport" != "" ]]; then
then if [[ "$adminport" != "$(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*')" ]]; then
if [ "$adminport" != $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') ] echo "IOB_ADMINPORT is set and does not match port configured in ioBroker."
then if [[ "$debug" == "true" ]]; then
echo "Adminport set by ENV does not match port configured in ioBroker installation." echo "[DEBUG] Detected Admin Port in ioBroker: " $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*')
fi
echo -n "Setting Adminport to \""$adminport"\"... " echo -n "Setting Adminport to \""$adminport"\"... "
bash iobroker set admin.0 --port $adminport bash iobroker set admin.0 --port $adminport
echo 'Done.' echo 'Done.'
@@ -244,12 +275,10 @@ then
fi fi
# Checking ENV for AVAHI # Checking ENV for AVAHI
if [ "$avahi" = "true" ] && [ "$offlinemode" = "true" ]; then if [[ "$avahi" = "true" && "$offlinemode" = "true" ]]; then
echo 'Avahi-daemon is activated by ENV but offline mode is activated!' echo 'AVAHI is \"true\", but OFFLINE_MODE is also \"true\". Skipping Avahi daemon setup.'
echo 'Skipping Avahi daemon setup.' elif [[ "$avahi" = "true" ]]; then
elif [ "$avahi" = "true" ]; then echo 'AVAHI is \"true\". Running setup script...'
echo 'Avahi-daemon is activated by ENV.'
echo "Running setup script..."
chmod 755 /opt/scripts/setup_avahi.sh chmod 755 /opt/scripts/setup_avahi.sh
bash /opt/scripts/setup_avahi.sh bash /opt/scripts/setup_avahi.sh
echo 'Done.' echo 'Done.'
@@ -257,12 +286,10 @@ elif [ "$avahi" = "true" ]; then
fi fi
# Checking ENV for Z-WAVE # Checking ENV for Z-WAVE
if [ "$zwave" = "true" ] && [ "$offlinemode" = "true" ]; then if [[ "$zwave" = "true" && "$offlinemode" = "true" ]]; then
echo 'Z-Wave is activated by ENV but offline mode is activated!' echo 'ZWAVE is \"true\", but OFFLINE_MODE is also \"true\". Skipping Z-Wave setup.'
echo 'Skipping Z-Wave setup.' elif [[ "$zwave" = "true" ]]; then
elif [ "$zwave" = "true" ]; then echo 'ZWAVE is \"true\". Running setup script...'
echo "Z-Wave is activated by ENV."
echo "Running setup script..."
chmod 755 /opt/scripts/setup_zwave.sh chmod 755 /opt/scripts/setup_zwave.sh
bash /opt/scripts/setup_zwave.sh bash /opt/scripts/setup_zwave.sh
echo 'Done.' echo 'Done.'
@@ -270,8 +297,8 @@ elif [ "$zwave" = "true" ]; then
fi fi
# checking ENV for USBDEVICES # checking ENV for USBDEVICES
if [ "$usbdevices" != "" ] && [ "$usbdevices" != "none" ]; then if [[ "$usbdevices" != "" && "$usbdevices" != "none" ]]; then
echo "Usb-device-support is activated by ENV." echo 'USBDEVICES is set.'
IFS=';' read -ra devicearray <<< "$usbdevices" IFS=';' read -ra devicearray <<< "$usbdevices"
for i in "${devicearray[@]}" for i in "${devicearray[@]}"
do do
@@ -284,74 +311,60 @@ if [ "$usbdevices" != "" ] && [ "$usbdevices" != "none" ]; then
fi fi
# Checking ENV for multihost setup # Checking ENV for multihost setup
if [ "$multihost" != "" ] if [[ "$multihost" != "" ]]; then
then echo "Checking for multihost settings..."
echo "Checking multihost setup..."
# Configuring objects db host # Configuring objects db host
if [ "$multihost" = "master" ] && [ "$objectsdbtype" = "" ] && [ "$objectsdbhost" = "" ] && [ "$objectsdbport" = "" ] if [[ "$multihost" = "master" && "$objectsdbtype" = "" && "$objectsdbhost" = "" && "$objectsdbport" = "" ]]; then
then echo "IOB_MULTIHOST is set to \"master\" and no external objects db is set."
echo "Multihost is set as \"master\" by ENV and no external objects db is set." echo -n "Setting host of objects db to \"0.0.0.0\" to allow external connections... "
echo -n "Setting host of objects db to \"0.0.0.0\" to allow external communication... "
jq --arg objectsdbhost "0.0.0.0" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json 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 chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
echo 'Done.' echo 'Done.'
elif [ "$multihost" = "master" ] && [ "$objectsdbhost" = "127.0.0.1" ] elif [[ "$multihost" = "master" && "$objectsdbhost" = "127.0.0.1" ]]; then
then echo "IOB_MULTIHOST is set to \"master\", but IOB_OBJECTSDB_HOST is set to \"127.0.0.1\"."
echo "Multihost is set as \"master\" by ENV. But objects db host is set to \"127.0.0.1\" by ENV too." echo "This configuration will not allow slaves to connect to objects db! Please change or remove \"IOB_OBJECTSDB_HOST\" and start over!"
echo "This configuration will not allow slaves to connect the objects db! Please change or remove ENV \"IOB_OBJECTSDB_HOST\" and start over!"
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
elif [ "$multihost" = "master" ] && [ "$objectsdbtype" != "" ] && [ "$objectsdbhost" != "" ] && [ "$objectsdbport" != "" ] elif [[ "$multihost" = "master" && "$objectsdbtype" != "" && "$objectsdbhost" != "" && "$objectsdbport" != "" ]]; then
then echo "IOB_MULTIHOST is set to \"master\" and external objects db is set."
echo "Multihost is set as \"master\" by ENV and external objects db is set." elif ([[ "$multihost" = "slave" && "$objectsdbtype" = "" ]]) || ([[ "$multihost" = "slave" && "$objectsdbhost" = "" ]]) || ([[ "$multihost" = "slave" && "$objectsdbport" = "" ]]); then
elif ([ "$multihost" = "slave" ] && [ "$objectsdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbport" = "" ]) echo "IOB_MULTIHOST is set to \"slave\", but no external objects db is set."
then echo "You have to configure ENVs \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" to connect to a master objects db."
echo "Multihost is set as \"slave\" by ENV. But no external objects db is set." echo "Please check your settings and start over!"
echo "You have to configure ENVs \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" to connect to a maser objects db."
echo "Please check your settings and start over."
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
elif [ "$multihost" = "slave" ] && [ "$objectsdbtype" != "" ] && [ "$objectsdbhost" != "" ] && [ "$objectsdbport" != "" ] elif [[ "$multihost" = "slave" && "$objectsdbtype" != "" && "$objectsdbhost" != "" && "$objectsdbport" != "" ]]; then
then echo "IOB_MULTIHOST is set to \"slave\" and external objects db is set."
echo "Multihost is set as \"slave\" by ENV and external objects db is set." elif [[ "$multihost" != "" ]]; then
elif [ "$multihost" != "" ] echo "IOB_MULTIHOST is set, but it seems like some configuration is missing."
then
echo "Multihost is set but it seems like some configuration is missing."
echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" correctly and start over." echo "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/)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
fi fi
# Configuring states db host # Configuring states db host
if [ "$multihost" = "master" ] && [ "$statesdbtype" = "" ] && [ "$statesdbhost" = "" ] && [ "$statesdbport" = "" ] if [[ "$multihost" = "master" && "$statesdbtype" = "" && "$statesdbhost" = "" && "$statesdbport" = "" ]]; then
then echo "IOB_MULTIHOST is set to \"master\" and no external states db is set."
echo "Multihost is set as \"master\" by ENV and no external states db is set." echo -n "Setting host of states db to \"0.0.0.0\" to allow external connections... "
echo -n "Setting host of states db to \"0.0.0.0\" to allow external communication... "
jq --arg statesdbhost "0.0.0.0" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json 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 chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
echo 'Done.' echo 'Done.'
elif [ "$multihost" = "master" ] && [ "$statesdbhost" = "127.0.0.1" ] elif [[ "$multihost" = "master" && "$statesdbhost" = "127.0.0.1" ]]; then
then echo "IOB_MULTIHOST is set to \"master\", but states db host is set to \"127.0.0.1\"."
echo "Multihost is set as \"master\" by ENV. But states db host is set to \"127.0.0.1\" by ENV too." echo "This configuration will not allow slaves to connect to objects db! Please change or remove \"IOB_STATESDB_HOST\" and start over!"
echo "This configuration will not work! Please change or remove ENV \"IOB_STATESDB_HOST\" and start over!"
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
elif [ "$multihost" = "master" ] && [ "$statesdbtype" != "" ] && [ "$statesdbhost" != "" ] && [ "$statesdbport" != "" ] elif [[ "$multihost" = "master" && "$statesdbtype" != "" && "$statesdbhost" != "" && "$statesdbport" != "" ]]; then
then echo "IOB_MULTIHOST is set to \"master\" and external states db is set."
echo "Multihost is set as \"master\" by ENV and external states db is set." elif ([[ "$multihost" = "slave" && "$statesdbtype" = "" ]]) || ([[ "$multihost" = "slave" && "$statesdbhost" = "" ]]) || ([[ "$multihost" = "slave" && "$statesdbport" = "" ]]); then
elif ([ "$multihost" = "slave" ] && [ "$statesdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbport" = "" ]) echo "IOB_MULTIHOST is set to \"slave\", but no external states db is set."
then
echo "Multihost is set as \"slave\" by ENV. But no external states db is set."
echo "You have to configure ENVs \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESDB_PORT\" to connect to a maser states db." echo "You have to configure ENVs \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESDB_PORT\" to connect to a maser states db."
echo "Please check your settings and start over." echo "Please check your settings and start over!"
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
elif [ "$multihost" = "slave" ] && [ "$statesdbtype" != "" ] && [ "$statesdbhost" != "" ] && [ "$statesdbport" != "" ] elif [[ "$multihost" = "slave" && "$statesdbtype" != "" && "$statesdbhost" != "" && "$statesdbport" != "" ]]; then
then echo "IOB_MULTIHOST is set to \"slave\" and external states db is set."
echo "Multihost is set as \"slave\" by ENV and external states db is set." elif [[ "$multihost" != "" ]]; then
elif [ "$multihost" != "" ] echo "IOB_MULTIHOST is set, but it seems like some configuration is missing."
then
echo "Multihost is set but it seems like some configuration is missing."
echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESTDB_PORT\" correctly and start over." echo "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/)." echo "For more information see ioBroker Docker image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
@@ -361,11 +374,9 @@ then
fi fi
# Checking ENVs for custom setup of objects db # Checking ENVs for custom setup of objects db
if [ "$objectsdbtype" != "" ] || [ "$objectsdbhost" != "" ] || [ "$objectsdbport" != "" ] if [[ "$objectsdbtype" != "" || "$objectsdbhost" != "" || "$objectsdbport" != "" ]]; then
then echo "Checking for custom objects db settings ..."
echo "Checking custom settings for objects db..." if [[ "$objectsdbtype" != "$(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
if [ "$objectsdbtype" != $(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json) ]
then
echo "IOB_OBJECTSDB_TYPE is set and value is different from detected ioBroker installation." echo "IOB_OBJECTSDB_TYPE is set and value is different from detected ioBroker installation."
echo -n "Setting type of objects db to \""$objectsdbtype"\"... " 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 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
@@ -374,8 +385,7 @@ then
else else
echo "IOB_OBJECTSDB_TYPE is set and value meets detected ioBroker installation." echo "IOB_OBJECTSDB_TYPE is set and value meets detected ioBroker installation."
fi fi
if [ "$objectsdbhost" != $(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json) ] if [[ "$objectsdbhost" != "$(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
then
echo "IOB_OBJECTSDB_HOST is set and value is different from detected ioBroker installation." echo "IOB_OBJECTSDB_HOST is set and value is different from detected ioBroker installation."
echo -n "Setting host of objects db to \""$objectsdbhost"\"... " 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 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
@@ -384,8 +394,7 @@ then
else else
echo "IOB_OBJECTSDB_HOST is set and value meets detected ioBroker installation." echo "IOB_OBJECTSDB_HOST is set and value meets detected ioBroker installation."
fi fi
if [ "$objectsdbport" != $(jq -r '.objects.port' /opt/iobroker/iobroker-data/iobroker.json) ] if [[ "$objectsdbport" != "$(jq -r '.objects.port' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
then
echo "IOB_OBJECTSDB_PORT is set and value is different from detected ioBroker installation." echo "IOB_OBJECTSDB_PORT is set and value is different from detected ioBroker installation."
echo -n "Setting port of objects db to \""$objectsdbport"\"... " 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 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
@@ -399,11 +408,9 @@ then
fi fi
# Checking ENVs for custom setup of states db # Checking ENVs for custom setup of states db
if [ "$statesdbtype" != "" ] || [ "$statesdbhost" != "" ] || [ "$statesdbport" != "" ] if [[ "$statesdbtype" != "" || "$statesdbhost" != "" || "$statesdbport" != "" ]]; then
then echo "Checking for custom states db settings..."
echo "Checking custom settings for states db..." if [[ "$statesdbtype" != "$(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
if [ "$statesdbtype" != $(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json) ]
then
echo "IOB_STATESDB_TYPE is set and value is different from detected ioBroker installation." echo "IOB_STATESDB_TYPE is set and value is different from detected ioBroker installation."
echo -n "Setting type of states db to \""$statesdbtype"\"... " 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 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
@@ -412,8 +419,7 @@ then
else else
echo "IOB_STATESDB_TYPE is set and value meets detected ioBroker installation." echo "IOB_STATESDB_TYPE is set and value meets detected ioBroker installation."
fi fi
if [ "$statesdbhost" != $(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json) ] if [[ "$statesdbhost" != "$(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
then
echo "IOB_STATESDB_HOST is set and value is different from detected ioBroker installation." echo "IOB_STATESDB_HOST is set and value is different from detected ioBroker installation."
echo -n "Setting host of states db to \""$statesdbhost"\"... " 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 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
@@ -422,8 +428,7 @@ then
else else
echo "IOB_STATESDB_HOST is set and value meets detected ioBroker installation." echo "IOB_STATESDB_HOST is set and value meets detected ioBroker installation."
fi fi
if [ "$statesdbport" != $(jq -r '.states.port' /opt/iobroker/iobroker-data/iobroker.json) ] if [[ "$statesdbport" != "$(jq -r '.states.port' /opt/iobroker/iobroker-data/iobroker.json)" ]]; then
then
echo "IOB_STATESDB_PORT is set and value is different from detected ioBroker installation." echo "IOB_STATESDB_PORT is set and value is different from detected ioBroker installation."
echo -n "Setting port of states db to \""$statesdbport"\"... " 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 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
@@ -437,18 +442,15 @@ then
fi fi
# Checking for Userscripts in /opt/userscripts # Checking for Userscripts in /opt/userscripts
if [ `find /opt/userscripts -type f | wc -l` -lt 1 ] if [[ `find /opt/userscripts -type f | wc -l` -lt 1 ]]; then
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... "
tar -xf /opt/initial_userscripts.tar -C / tar -xf /opt/initial_userscripts.tar -C /
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 ' ' echo ' '
elif [ -f /opt/userscripts/userscript_firststart.sh ] || [ -f /opt/userscripts/userscript_everystart.sh ] elif [[ -f /opt/userscripts/userscript_firststart.sh || -f /opt/userscripts/userscript_everystart.sh ]]; then
then if [[ -f /opt/userscripts/userscript_firststart.sh && -f /opt/.firstrun ]]; then
if [ -f /opt/userscripts/userscript_firststart.sh ] && [ -f /opt/.firstrun ]
then
echo "Userscript for first start detected and this is the first start of a new container." echo "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
@@ -456,8 +458,7 @@ then
echo "Done." echo "Done."
echo ' ' echo ' '
fi fi
if [ -f /opt/userscripts/userscript_everystart.sh ] if [[ -f /opt/userscripts/userscript_everystart.sh ]]; then
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
@@ -467,9 +468,8 @@ then
fi fi
# Removing first run marker when exists # Removing first run marker when exists
if [ -f /opt/.firstrun ] if [[ -f /opt/.firstrun ]]; then
then rm -f /opt/.firstrun
rm -f /opt/.firstrun
fi fi
##### #####
@@ -481,6 +481,7 @@ echo "$(printf -- '-%.0s' {1..80})"
echo ' ' echo ' '
echo "Starting ioBroker..." echo "Starting ioBroker..."
echo ' ' echo ' '
echo "##### #### ### ## # iobroker.js-controller log output # ## ### #### #####"
# Setting healthcheck status to "running" # Setting healthcheck status to "running"
echo "running" > /opt/scripts/.docker_config/.healthcheck echo "running" > /opt/scripts/.docker_config/.healthcheck

View File

@@ -22,6 +22,7 @@ display_help() {
echo ' on > switches mantenance mode ON' echo ' on > switches mantenance mode ON'
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 ' help > shows this help' echo ' help > shows this help'
echo '' echo ''
echo 'OPTIONS' echo 'OPTIONS'
@@ -54,13 +55,16 @@ enable_maintenance() {
if [[ "$killbyname" == yes ]]; then if [[ "$killbyname" == yes ]]; then
# undocumented option, only for use with backitup restore scripts # undocumented option, only for use with backitup restore scripts
# stops iobroker by terminating js-controller process by name (the old way)
echo 'This command will activate maintenance mode and stop js-controller.' echo 'This command will activate maintenance mode and stop js-controller.'
echo 'Activating maintenance mode...' echo 'Activating maintenance mode...'
echo 'maintenance' > "$healthcheck" echo 'maintenance' > "$healthcheck"
sleep 1 sleep 1
echo 'Done.' echo 'Done.'
echo -n 'Stopping ioBroker...' echo -n 'Stopping ioBroker...'
stop_iob pkill -u iobroker -f iobroker.js-controller
sleep 5
echo 'Done.'
return return
fi fi
@@ -154,6 +158,33 @@ upgrade_jscontroller() {
pkill -u root pkill -u root
} }
# restart container
restart_container() {
echo 'You are now going to call a restart of your container.'
echo 'Restarting will work depending on the configured restart policy.'
if [[ "$autoconfirm" != yes ]]; then
local reply
read -rp 'Do you want to continue [yes/no]? ' reply
if [[ "$reply" == y || "$reply" == Y || "$reply" == yes ]]; then
: # continue
else
return 1
fi
else
echo 'This command was already confirmed by the -y or --yes option.'
fi
echo -n 'Stopping ioBroker...'
stop_iob
echo 'Container will be stopped or restarted in 5 seconds...'
sleep 5
echo 'stopping' > "$healthcheck"
pkill -u root
}
# stop iobroker and wait until all processes stopped or pkill_timeout is reached # stop iobroker and wait until all processes stopped or pkill_timeout is reached
stop_iob() { stop_iob() {
local status timeout local status timeout
@@ -208,6 +239,9 @@ for arg in "$@"; do
upgrade) upgrade)
run=(upgrade_jscontroller) run=(upgrade_jscontroller)
;; ;;
restart)
run=(restart_container)
;;
-y|--yes) -y|--yes)
autoconfirm=yes autoconfirm=yes
;; ;;

View File

@@ -23,13 +23,8 @@ else
exit 1 exit 1
fi fi
# Cleanup # Silent Cleanup
apt-get autoclean -y apt-get -qq autoclean -y && apt-get -qq autoremove && apt-get -qq clean
apt-get autoremove rm -rf /tmp/* /var/tmp/* && rm -rf /root/.cache/* && rm -rf /var/lib/apt/lists/* && rm -f /opt/scripts/.docker_config/.packages
apt-get clean
rm -rf /tmp/* /var/tmp/*
rm -rf /root/.cache/*
rm -rf /var/lib/apt/lists/*
rm -f /opt/scripts/.docker_config/.packages
exit 0 exit 0

View File

@@ -26,10 +26,14 @@ New major image versions (e.g. v4, v5, v6) always come with a new major version
# Supported tags # Supported tags
It is highly recommended not to use the `latest` tag for production, especially when using any kind of automated update procedure like watchtower. Please use the `latest-vX` tag instead. It is highly recommended not to use the `latest` tag for production, especially when using any kind of automated update procedure like watchtower. Please use the `latest-v[X]` tag instead.
### Node 16 versions
* [`v7.0.1`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`latest-v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile)
* [`v7.0.0`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile), [`v7.0.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile), [`v7.0.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile), [`v7.0.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile)
### Node 14 versions ### Node 14 versions
* [`v6.1.0`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`latest-v6`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile) * [`v6.1.0`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`latest-v6`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile)
* [`v6.0.0`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile) * [`v6.0.0`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile)
### Node 12 versions ### Node 12 versions
@@ -106,9 +110,11 @@ You could use environment variables to auto configure your ioBroker container on
### Configure environment: ### Configure environment:
* `DEBUG` (optional, default: false) Set true to get extended logging messages on container startup
* `LANG` (optional, default: de_DE.UTF&#x2011;8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 * `LANG` (optional, default: de_DE.UTF&#x2011;8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8
* `LANGUAGE` (optional, default: de_DE:de) The following locales are pre-generated: de_DE:de, en_US:en * `LANGUAGE` (optional, default: de_DE:de) The following locales are pre-generated: de_DE:de, en_US:en
* `LC_ALL` (optional, default: de_DE.UTF-8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 * `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 & experimental, default: false) Set true if you container has no or limited internet connection
* `PACKAGES` (optional) Installs additional linux packages to your container, packages should be separated by whitespace like this: "package1 package2 package3". * `PACKAGES` (optional) Installs additional linux packages to your container, packages should be separated by whitespace like this: "package1 package2 package3".
* `SETGID` (default: 1000) In some cases it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host * `SETGID` (default: 1000) In some cases it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host
* `SETUID` (default: 1000) In some cases it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host * `SETUID` (default: 1000) In some cases it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host

View File

@@ -27,10 +27,14 @@ New major image versions (e.g. v4, v5, v6) always come with a new major version
# Supported tags # Supported tags
It is highly recommended not to use the `latest` tag for production, especially when using any kind of automated update procedure like watchtower. Please use the `latest-vX` tag instead. It is highly recommended not to use the `latest` tag for production, especially when using any kind of automated update procedure like watchtower. Please use the `latest-v[X]` tag instead.
### Node 16 versions
* [`v7.0.1`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`v7.0.1-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`latest-v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v7.0.1/debian/node16/Dockerfile)
* [`v7.0.0`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile), [`v7.0.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile), [`v7.0.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile), [`v7.0.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile)
### Node 14 versions ### Node 14 versions
* [`v6.1.0`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`latest-v6`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile) * [`v6.1.0`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`v6.1.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile), [`latest-v6`](https://github.com/buanet/ioBroker.docker/blob/v6.1.0/debian/node14/Dockerfile)
* [`v6.0.0`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile) * [`v6.0.0`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`v6.0.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile)
### Node 12 versions ### Node 12 versions
@@ -107,9 +111,11 @@ You could use environment variables to auto configure your ioBroker container on
### Configure environment: ### Configure environment:
* `DEBUG` (optional, default: false) Set true to get extended logging messages on container startup
* `LANG` (optional, default: de_DE.UTF&#x2011;8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 * `LANG` (optional, default: de_DE.UTF&#x2011;8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8
* `LANGUAGE` (optional, default: de_DE:de) The following locales are pre-generated: de_DE:de, en_US:en * `LANGUAGE` (optional, default: de_DE:de) The following locales are pre-generated: de_DE:de, en_US:en
* `LC_ALL` (optional, default: de_DE.UTF-8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 * `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 & experimental, default: false) Set true if you container has no or limited internet connection
* `PACKAGES` (optional) Installs additional linux packages to your container, packages should be separated by whitespace like this: "package1 package2 package3". * `PACKAGES` (optional) Installs additional linux packages to your container, packages should be separated by whitespace like this: "package1 package2 package3".
* `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