mirror of
https://github.com/buanet/ioBroker.docker.git
synced 2025-12-18 19:09:02 +02:00
Compare commits
96 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c8a9a1e2db | ||
|
|
d4a2db3619 | ||
|
|
27aa771e28 | ||
|
|
5f8777b5a1 | ||
|
|
e393035845 | ||
|
|
2051a788aa | ||
|
|
de25659bcd | ||
|
|
42b1c65f15 | ||
|
|
acbee27896 | ||
|
|
6b20f622d3 | ||
|
|
2b3e6541cf | ||
|
|
b8c67b7149 | ||
|
|
45430bf512 | ||
|
|
7acdff7088 | ||
|
|
3b3b7923db | ||
|
|
8c143b7f0c | ||
|
|
3957414b2b | ||
|
|
77788afdb6 | ||
|
|
9c16454d10 | ||
|
|
9b1ea21b08 | ||
|
|
abf44c01f3 | ||
|
|
a96fd97474 | ||
|
|
228355c7e6 | ||
|
|
99bc528be9 | ||
|
|
9dcc767d7a | ||
|
|
842072d266 | ||
|
|
80fd966ca0 | ||
|
|
23a4196046 | ||
|
|
f22317e2e6 | ||
|
|
1daa4cf713 | ||
|
|
aca230a7f4 | ||
|
|
1bfcab7820 | ||
|
|
cef8433132 | ||
|
|
1242eb382f | ||
|
|
9eb70621ea | ||
|
|
7ed3224f50 | ||
|
|
a706d63e78 | ||
|
|
23fea30955 | ||
|
|
1ca34b5f73 | ||
|
|
6c819aac1c | ||
|
|
57c3fe2371 | ||
|
|
641be7cebe | ||
|
|
f00aff57a1 | ||
|
|
a5b0ab5b7a | ||
|
|
f312524d71 | ||
|
|
60b4b10965 | ||
|
|
2effdf5fea | ||
|
|
543343359e | ||
|
|
98bd35cc52 | ||
|
|
bf5288071b | ||
|
|
118892975a | ||
|
|
833ec7515e | ||
|
|
87137450db | ||
|
|
1a92ab16dd | ||
|
|
898c58ce7e | ||
|
|
9fd6c97559 | ||
|
|
30cfacd55f | ||
|
|
634d5ffb63 | ||
|
|
e41bc8af6c | ||
|
|
57c697587f | ||
|
|
c2707f3795 | ||
|
|
727d79fa2f | ||
|
|
15e87e08a0 | ||
|
|
5401fdf86c | ||
|
|
f888101d01 | ||
|
|
e286d168e1 | ||
|
|
2e5f8c9e22 | ||
|
|
2b4509d468 | ||
|
|
b5235be806 | ||
|
|
d73948e8d4 | ||
|
|
1337535351 | ||
|
|
8843ee2f68 | ||
|
|
432364f63d | ||
|
|
139a3beedd | ||
|
|
da3a998e04 | ||
|
|
182c78d72c | ||
|
|
b6bb7ed5ea | ||
|
|
a9d4f38bdb | ||
|
|
06d6421c4b | ||
|
|
296ff3c612 | ||
|
|
6ccf196ae2 | ||
|
|
e20f66ada6 | ||
|
|
e72353b3fa | ||
|
|
c70f27151e | ||
|
|
465a412bc2 | ||
|
|
93bcf7c8f7 | ||
|
|
c22873c7bf | ||
|
|
814298a795 | ||
|
|
10624f62f8 | ||
|
|
d4a31e2629 | ||
|
|
ebb3e831e7 | ||
|
|
f3861e8fb5 | ||
|
|
e7b859f22d | ||
|
|
f4d40df862 | ||
|
|
c4a34b4432 | ||
|
|
5211ef7275 |
2
.github/dependabot.yml
vendored
2
.github/dependabot.yml
vendored
@@ -5,4 +5,4 @@ updates:
|
|||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
target-branch: "dev"
|
target-branch: "main"
|
||||||
|
|||||||
1
.github/dependencies/.js-controller-version
vendored
Normal file
1
.github/dependencies/.js-controller-version
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
4.0.23
|
||||||
@@ -1,25 +1,23 @@
|
|||||||
# Github action to build Docker image from beta branch (tag: beta)
|
# Github action to build Docker image from beta branch (tag: beta)
|
||||||
name: Build debian based image (beta-node16)
|
name: Build debian beta-node18
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
release:
|
||||||
branches:
|
types: [prereleased]
|
||||||
- beta
|
|
||||||
types:
|
|
||||||
- closed
|
|
||||||
schedule:
|
|
||||||
- cron: '42 3 * * 1'
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bulid-beta-node16-image:
|
build-beta-node18-image:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo (beta)
|
- name: Getting published prerelease tag
|
||||||
uses: actions/checkout@v2.4.0
|
run: echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
ref: 'beta'
|
ref: ${{ env.RELEASE_TAG }}
|
||||||
|
|
||||||
- name: Get and write version and date
|
- name: Get and write version and date
|
||||||
id: version
|
id: version
|
||||||
@@ -37,8 +35,8 @@ jobs:
|
|||||||
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
||||||
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
||||||
# amd64
|
# amd64
|
||||||
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node16/Dockerfile > ./debian/node16/Dockerfile.tmp
|
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node18/Dockerfile > ./debian/node18/Dockerfile.tmp
|
||||||
mv -f ./debian/node16/Dockerfile.tmp ./debian/node16/Dockerfile
|
mv -f ./debian/node18/Dockerfile.tmp ./debian/node18/Dockerfile
|
||||||
|
|
||||||
- name: Set up manifest tool
|
- name: Set up manifest tool
|
||||||
run: |
|
run: |
|
||||||
@@ -46,71 +44,71 @@ jobs:
|
|||||||
chmod +x manifest-tool
|
chmod +x manifest-tool
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1.2.0
|
uses: docker/setup-qemu-action@v2.0.0
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@v1.6.0
|
uses: docker/setup-buildx-action@v2.0.0
|
||||||
|
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
uses: docker/login-action@v1.10.0
|
uses: docker/login-action@v2.0.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@v1.10.0
|
uses: docker/login-action@v2.0.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 (node16-amd64)
|
- name: Build Docker image (node18-amd64)
|
||||||
uses: docker/build-push-action@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node16/Dockerfile
|
file: ./debian/node18/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
tags: |
|
tags: |
|
||||||
buanet/iobroker:${{ env.version }}-node16-amd64,
|
buanet/iobroker:${{ env.version }}-node18-amd64,
|
||||||
ghcr.io/buanet/iobroker:${{ env.version }}-node16-amd64
|
ghcr.io/buanet/iobroker:${{ env.version }}-node18-amd64
|
||||||
|
|
||||||
- name: Build Docker image (node16-arm32v7)
|
- name: Build Docker image (node18-arm32v7)
|
||||||
uses: docker/build-push-action@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node16/Dockerfile
|
file: ./debian/node18/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/arm/v7
|
platforms: linux/arm/v7
|
||||||
tags: |
|
tags: |
|
||||||
buanet/iobroker:${{ env.version }}-node16-arm32v7,
|
buanet/iobroker:${{ env.version }}-node18-arm32v7,
|
||||||
ghcr.io/buanet/iobroker:${{ env.version }}-node16-arm32v7
|
ghcr.io/buanet/iobroker:${{ env.version }}-node18-arm32v7
|
||||||
|
|
||||||
- name: Build Docker image (node16-arm64v8)
|
- name: Build Docker image (node18-arm64v8)
|
||||||
uses: docker/build-push-action@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node16/Dockerfile
|
file: ./debian/node18/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/arm64/v8
|
platforms: linux/arm64/v8
|
||||||
tags: |
|
tags: |
|
||||||
buanet/iobroker:${{ env.version }}-node16-arm64v8,
|
buanet/iobroker:${{ env.version }}-node18-arm64v8,
|
||||||
ghcr.io/buanet/iobroker:${{ env.version }}-node16-arm64v8
|
ghcr.io/buanet/iobroker:${{ env.version }}-node18-arm64v8
|
||||||
|
|
||||||
- name: Create and push manifests
|
- name: Create and push manifests
|
||||||
run: |
|
run: |
|
||||||
sed -e "s/\${VERSION}/${{ env.version }}-node16/g" -e "s/\${DOCKERTAG}/beta-node16/g" ./manifest.yml > manifest_beta-node16.yaml
|
sed -e "s/\${VERSION}/${{ env.version }}-node18/g" -e "s/\${DOCKERTAG}/beta-node18/g" ./manifest.yml > manifest_beta-node18.yaml
|
||||||
./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_beta-node16.yaml
|
./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_beta-node18.yaml
|
||||||
sed -e "s/\${VERSION}/${{ env.version }}-node16/g" -e "s/\${DOCKERTAG}/beta-node16/g" ./manifest_ghcr.yml > manifest_ghcr_beta-node16.yaml
|
sed -e "s/\${VERSION}/${{ env.version }}-node18/g" -e "s/\${DOCKERTAG}/beta-node18/g" ./manifest_ghcr.yml > manifest_ghcr_beta-node18.yaml
|
||||||
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_beta-node16.yaml
|
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_beta-node18.yaml
|
||||||
sed -e "s/\${VERSION}/${{ env.version }}-node16/g" -e "s/\${DOCKERTAG}/${{ env.version }}-node16/g" ./manifest.yml > manifest_version-node16.yaml
|
sed -e "s/\${VERSION}/${{ env.version }}-node18/g" -e "s/\${DOCKERTAG}/${{ env.version }}-node18/g" ./manifest.yml > manifest_version-node18.yaml
|
||||||
./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_version-node16.yaml
|
./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_version-node18.yaml
|
||||||
sed -e "s/\${VERSION}/${{ env.version }}-node16/g" -e "s/\${DOCKERTAG}/${{ env.version }}-node16/g" ./manifest_ghcr.yml > manifest_ghcr_version-node16.yaml
|
sed -e "s/\${VERSION}/${{ env.version }}-node18/g" -e "s/\${DOCKERTAG}/${{ env.version }}-node18/g" ./manifest_ghcr.yml > manifest_ghcr_version-node18.yaml
|
||||||
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_version-node16.yaml
|
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_version-node18.yaml
|
||||||
|
|
||||||
- name: Delete untagged images from GitHub packages
|
- name: Delete untagged images from GitHub packages
|
||||||
uses: actions/github-script@v5
|
uses: actions/github-script@v6
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.PACKAGES_PASS }}
|
github-token: ${{ secrets.PACKAGES_PASS }}
|
||||||
script: |
|
script: |
|
||||||
48
.github/workflows/build-debian-image-beta.yml
vendored
48
.github/workflows/build-debian-image-beta.yml
vendored
@@ -1,25 +1,23 @@
|
|||||||
# Github action to build Docker image from beta branch (tag: beta)
|
# Github action to build Docker image from beta branch (tag: beta)
|
||||||
name: Build debian based image (beta)
|
name: Build debian beta
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
release:
|
||||||
|
types: [prereleased]
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- beta
|
|
||||||
types:
|
|
||||||
- closed
|
|
||||||
schedule:
|
|
||||||
- cron: '42 3 * * 1'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bulid-beta-image:
|
build-beta-image:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo (beta)
|
- name: Getting published prerelease tag
|
||||||
uses: actions/checkout@v2.4.0
|
run: echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
ref: 'beta'
|
ref: ${{ env.RELEASE_TAG }}
|
||||||
|
|
||||||
- name: Get and write version and date
|
- name: Get and write version and date
|
||||||
id: version
|
id: version
|
||||||
@@ -37,8 +35,8 @@ jobs:
|
|||||||
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
||||||
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
||||||
# amd64
|
# amd64
|
||||||
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/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: |
|
||||||
@@ -46,30 +44,30 @@ jobs:
|
|||||||
chmod +x manifest-tool
|
chmod +x manifest-tool
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1.2.0
|
uses: docker/setup-qemu-action@v2.0.0
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@v1.6.0
|
uses: docker/setup-buildx-action@v2.0.0
|
||||||
|
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
uses: docker/login-action@v1.10.0
|
uses: docker/login-action@v2.0.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@v1.10.0
|
uses: docker/login-action@v2.0.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@v2.7.0
|
uses: docker/build-push-action@v3.0.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: |
|
||||||
@@ -77,10 +75,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@v2.7.0
|
uses: docker/build-push-action@v3.0.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: |
|
||||||
@@ -88,10 +86,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@v2.7.0
|
uses: docker/build-push-action@v3.0.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: |
|
||||||
@@ -110,7 +108,7 @@ jobs:
|
|||||||
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_version.yaml
|
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_version.yaml
|
||||||
|
|
||||||
- name: Delete untagged images from GitHub packages
|
- name: Delete untagged images from GitHub packages
|
||||||
uses: actions/github-script@v5
|
uses: actions/github-script@v6
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.PACKAGES_PASS }}
|
github-token: ${{ secrets.PACKAGES_PASS }}
|
||||||
script: |
|
script: |
|
||||||
|
|||||||
@@ -1,21 +1,18 @@
|
|||||||
# Github action to build Docker image from dev branch (tag: dev)
|
# Github action to build Docker image from dev branch (tag: dev)
|
||||||
name: Build debian based image (dev-node16)
|
name: Build debian dev-node18
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- dev
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bulid-dev-node16-image:
|
build-dev-node18-image:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo (dev)
|
- name: Checkout repo (dev)
|
||||||
uses: actions/checkout@v2.4.0
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
ref: 'dev'
|
ref: 'main'
|
||||||
|
|
||||||
- name: Get and write version and date
|
- name: Get and write version and date
|
||||||
id: version
|
id: version
|
||||||
@@ -33,8 +30,8 @@ jobs:
|
|||||||
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
||||||
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
||||||
# amd64
|
# amd64
|
||||||
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${DATI}/$DATI/" ./debian/node16/Dockerfile > ./debian/node16/Dockerfile.tmp
|
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${DATI}/$DATI/" ./debian/node18/Dockerfile > ./debian/node18/Dockerfile.tmp
|
||||||
mv -f ./debian/node16/Dockerfile.tmp ./debian/node16/Dockerfile
|
mv -f ./debian/node18/Dockerfile.tmp ./debian/node18/Dockerfile
|
||||||
|
|
||||||
- name: Set up manifest tool
|
- name: Set up manifest tool
|
||||||
run: |
|
run: |
|
||||||
@@ -42,67 +39,67 @@ jobs:
|
|||||||
chmod +x manifest-tool
|
chmod +x manifest-tool
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1.2.0
|
uses: docker/setup-qemu-action@v2.0.0
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@v1.6.0
|
uses: docker/setup-buildx-action@v2.0.0
|
||||||
|
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
uses: docker/login-action@v1.10.0
|
uses: docker/login-action@v2.0.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@v1.10.0
|
uses: docker/login-action@v2.0.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 (node16-amd64)
|
- name: Build Docker image (node18-amd64)
|
||||||
uses: docker/build-push-action@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node16/Dockerfile
|
file: ./debian/node18/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
tags: |
|
tags: |
|
||||||
buanet/iobroker:dev-node16-amd64,
|
buanet/iobroker:dev-node18-amd64,
|
||||||
ghcr.io/buanet/iobroker:dev-node16-amd64
|
ghcr.io/buanet/iobroker:dev-node18-amd64
|
||||||
|
|
||||||
- name: Build Docker image (node16-arm32v7)
|
- name: Build Docker image (node18-arm32v7)
|
||||||
uses: docker/build-push-action@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node16/Dockerfile
|
file: ./debian/node18/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/arm/v7
|
platforms: linux/arm/v7
|
||||||
tags: |
|
tags: |
|
||||||
buanet/iobroker:dev-node16-arm32v7,
|
buanet/iobroker:dev-node18-arm32v7,
|
||||||
ghcr.io/buanet/iobroker:dev-node16-arm32v7
|
ghcr.io/buanet/iobroker:dev-node18-arm32v7
|
||||||
|
|
||||||
- name: Build Docker image (node16-arm64v8)
|
- name: Build Docker image (node18-arm64v8)
|
||||||
uses: docker/build-push-action@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node16/Dockerfile
|
file: ./debian/node18/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/arm64/v8
|
platforms: linux/arm64/v8
|
||||||
tags: |
|
tags: |
|
||||||
buanet/iobroker:dev-node16-arm64v8,
|
buanet/iobroker:dev-node18-arm64v8,
|
||||||
ghcr.io/buanet/iobroker:dev-node16-arm64v8
|
ghcr.io/buanet/iobroker:dev-node18-arm64v8
|
||||||
|
|
||||||
- name: Create and push manifests
|
- name: Create and push manifests
|
||||||
run: |
|
run: |
|
||||||
sed -e "s/\${VERSION}/dev-node16/g" -e "s/\${DOCKERTAG}/dev-node16/g" ./manifest.yml > manifest_dev-node16.yaml
|
sed -e "s/\${VERSION}/dev-node18/g" -e "s/\${DOCKERTAG}/dev-node18/g" ./manifest.yml > manifest_dev-node18.yaml
|
||||||
./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_dev-node16.yaml
|
./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_dev-node18.yaml
|
||||||
sed -e "s/\${VERSION}/dev-node16/g" -e "s/\${DOCKERTAG}/dev-node16/g" ./manifest_ghcr.yml > manifest_ghcr_dev-node16.yaml
|
sed -e "s/\${VERSION}/dev-node18/g" -e "s/\${DOCKERTAG}/dev-node18/g" ./manifest_ghcr.yml > manifest_ghcr_dev-node18.yaml
|
||||||
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_dev-node16.yaml
|
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_dev-node18.yaml
|
||||||
|
|
||||||
- name: Delete untagged images from GitHub packages
|
- name: Delete untagged images from GitHub packages
|
||||||
uses: actions/github-script@v5
|
uses: actions/github-script@v6
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.PACKAGES_PASS }}
|
github-token: ${{ secrets.PACKAGES_PASS }}
|
||||||
script: |
|
script: |
|
||||||
37
.github/workflows/build-debian-image-dev.yml
vendored
37
.github/workflows/build-debian-image-dev.yml
vendored
@@ -1,21 +1,18 @@
|
|||||||
# Github action to build Docker image from dev branch (tag: dev)
|
# Github action to build Docker image from dev branch (tag: dev)
|
||||||
name: Build debian based image (dev)
|
name: Build debian dev
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- dev
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bulid-dev-image:
|
build-dev-image:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo (dev)
|
- name: Checkout repo (dev)
|
||||||
uses: actions/checkout@v2.4.0
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
ref: 'dev'
|
ref: 'main'
|
||||||
|
|
||||||
- name: Get and write version and date
|
- name: Get and write version and date
|
||||||
id: version
|
id: version
|
||||||
@@ -33,8 +30,8 @@ jobs:
|
|||||||
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
|
||||||
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
|
||||||
# amd64
|
# amd64
|
||||||
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${DATI}/$DATI/" ./debian/node14/Dockerfile > ./debian/node14/Dockerfile.tmp
|
sed -e "s/\${VERSION}/$VERSION-dev/" -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: |
|
||||||
@@ -42,30 +39,30 @@ jobs:
|
|||||||
chmod +x manifest-tool
|
chmod +x manifest-tool
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1.2.0
|
uses: docker/setup-qemu-action@v2.0.0
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@v1.6.0
|
uses: docker/setup-buildx-action@v2.0.0
|
||||||
|
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
uses: docker/login-action@v1.10.0
|
uses: docker/login-action@v2.0.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@v1.10.0
|
uses: docker/login-action@v2.0.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@v2.7.0
|
uses: docker/build-push-action@v3.0.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: |
|
||||||
@@ -73,10 +70,10 @@ 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@v2.7.0
|
uses: docker/build-push-action@v3.0.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: |
|
||||||
@@ -84,10 +81,10 @@ 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@v2.7.0
|
uses: docker/build-push-action@v3.0.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: |
|
||||||
@@ -102,7 +99,7 @@ jobs:
|
|||||||
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_dev.yaml
|
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_dev.yaml
|
||||||
|
|
||||||
- name: Delete untagged images from GitHub packages
|
- name: Delete untagged images from GitHub packages
|
||||||
uses: actions/github-script@v5
|
uses: actions/github-script@v6
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.PACKAGES_PASS }}
|
github-token: ${{ secrets.PACKAGES_PASS }}
|
||||||
script: |
|
script: |
|
||||||
|
|||||||
@@ -1,25 +1,29 @@
|
|||||||
# Github action to build Docker image from main branch for iobroker/iobroker (tag: latest)
|
# Github action to build Docker image from main branch for iobroker/iobroker (tag: latest)
|
||||||
name: Build debian based image (latest)
|
name: Build debian latest (iobroker)
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
|
||||||
release:
|
release:
|
||||||
types:
|
types:
|
||||||
- published
|
- released
|
||||||
schedule:
|
workflow_dispatch:
|
||||||
- cron: '42 3 * * 5'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bulid-latest-image:
|
build-latest-image:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo (main)
|
- name: Fetching latest release tag
|
||||||
uses: actions/checkout@v2.4.0
|
run: |
|
||||||
|
LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')"
|
||||||
|
echo "Latest release tag : $LATESTRELEASE"
|
||||||
|
echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
ref: 'main'
|
ref: ${{ env.RELEASE_TAG }}
|
||||||
|
|
||||||
- name: Get and write version and date
|
- name: Fetching and adding version tag and date
|
||||||
id: version
|
id: version
|
||||||
run: |
|
run: |
|
||||||
VERSION="$(cat .VERSION)"
|
VERSION="$(cat .VERSION)"
|
||||||
@@ -44,20 +48,20 @@ jobs:
|
|||||||
chmod +x manifest-tool
|
chmod +x manifest-tool
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1.2.0
|
uses: docker/setup-qemu-action@v2.0.0
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@v1.6.0
|
uses: docker/setup-buildx-action@v2.0.0
|
||||||
|
|
||||||
- name: Login to DockerHub (iobroker)
|
- name: Login to DockerHub (iobroker)
|
||||||
uses: docker/login-action@v1.10.0
|
uses: docker/login-action@v2.0.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@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node14/Dockerfile
|
file: ./debian/node14/Dockerfile
|
||||||
@@ -67,7 +71,7 @@ jobs:
|
|||||||
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@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node14/Dockerfile
|
file: ./debian/node14/Dockerfile
|
||||||
@@ -77,7 +81,7 @@ jobs:
|
|||||||
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@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node14/Dockerfile
|
file: ./debian/node14/Dockerfile
|
||||||
@@ -1,25 +1,29 @@
|
|||||||
# Github action to build Docker image from main branch (tag: latest)
|
# Github action to build Docker image from main branch (tag: latest)
|
||||||
name: Build debian based image (latest)
|
name: Build debian latest (buanet)
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
|
||||||
release:
|
release:
|
||||||
types:
|
types:
|
||||||
- published
|
- released
|
||||||
schedule:
|
workflow_dispatch:
|
||||||
- cron: '42 3 * * 5'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bulid-latest-image:
|
build-latest-image:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo (main)
|
- name: Fetching latest release tag
|
||||||
uses: actions/checkout@v2.4.0
|
run: |
|
||||||
|
LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')"
|
||||||
|
echo "Latest release tag : $LATESTRELEASE"
|
||||||
|
echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: 'buanet/ioBroker.docker'
|
repository: 'buanet/ioBroker.docker'
|
||||||
ref: 'main'
|
ref: ${{ env.RELEASE_TAG }}
|
||||||
|
|
||||||
- name: Get and write version and date
|
- name: Fetching and adding version tag and date
|
||||||
id: version
|
id: version
|
||||||
run: |
|
run: |
|
||||||
VERSION="$(cat .VERSION)"
|
VERSION="$(cat .VERSION)"
|
||||||
@@ -44,27 +48,27 @@ jobs:
|
|||||||
chmod +x manifest-tool
|
chmod +x manifest-tool
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1.2.0
|
uses: docker/setup-qemu-action@v2.0.0
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@v1.6.0
|
uses: docker/setup-buildx-action@v2.0.0
|
||||||
|
|
||||||
- name: Login to DockerHub (buanet)
|
- name: Login to DockerHub (buanet)
|
||||||
uses: docker/login-action@v1.10.0
|
uses: docker/login-action@v2.0.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@v1.10.0
|
uses: docker/login-action@v2.0.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@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node14/Dockerfile
|
file: ./debian/node14/Dockerfile
|
||||||
@@ -75,7 +79,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@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node14/Dockerfile
|
file: ./debian/node14/Dockerfile
|
||||||
@@ -86,7 +90,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@v2.7.0
|
uses: docker/build-push-action@v3.0.0
|
||||||
with:
|
with:
|
||||||
context: ./debian
|
context: ./debian
|
||||||
file: ./debian/node14/Dockerfile
|
file: ./debian/node14/Dockerfile
|
||||||
@@ -112,7 +116,7 @@ jobs:
|
|||||||
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_version.yaml
|
./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_version.yaml
|
||||||
|
|
||||||
- name: Delete untagged images from GitHub packages
|
- name: Delete untagged images from GitHub packages
|
||||||
uses: actions/github-script@v5
|
uses: actions/github-script@v6
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.PACKAGES_PASS }}
|
github-token: ${{ secrets.PACKAGES_PASS }}
|
||||||
script: |
|
script: |
|
||||||
52
.github/workflows/check-js-controller-release.yml
vendored
Normal file
52
.github/workflows/check-js-controller-release.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
name: Check js-controller release
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '42 23 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-and-trigger:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
repository: 'buanet/ioBroker.docker'
|
||||||
|
token: ${{ secrets.ACTIONS_PAT }}
|
||||||
|
|
||||||
|
- name: Fetch js-controller release version
|
||||||
|
run: |
|
||||||
|
curl -sL https://repo.iobroker.live/sources-dist.json | \
|
||||||
|
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)"
|
||||||
|
|
||||||
|
- name: Check for modified files
|
||||||
|
id: git-check
|
||||||
|
run: echo ::set-output name=modified::$([ -z "`git status --porcelain`" ] && echo "false" || echo "true")
|
||||||
|
|
||||||
|
- name: Commit latest release version
|
||||||
|
if: steps.git-check.outputs.modified == 'true'
|
||||||
|
run: |
|
||||||
|
git config --global user.name 'buanet'
|
||||||
|
git config --global user.email 'info@buanet.de'
|
||||||
|
git commit -am "new js-controller release"
|
||||||
|
git push
|
||||||
|
|
||||||
|
- name: Trigger build debian latest (buanet)
|
||||||
|
if: steps.git-check.outputs.modified == 'true'
|
||||||
|
uses: benc-uk/workflow-dispatch@v1.1
|
||||||
|
with:
|
||||||
|
workflow: Build debian latest (buanet)
|
||||||
|
repo: buanet/ioBroker.docker
|
||||||
|
token: ${{ secrets.ACTIONS_PAT }}
|
||||||
|
|
||||||
|
- name: Trigger build debian latest (iobroker)
|
||||||
|
if: steps.git-check.outputs.modified == 'true'
|
||||||
|
uses: benc-uk/workflow-dispatch@v1.1
|
||||||
|
with:
|
||||||
|
workflow: Build debian latest (iobroker)
|
||||||
|
repo: buanet/ioBroker.docker
|
||||||
|
token: ${{ secrets.ACTIONS_PAT }}
|
||||||
33
.github/workflows/testing-docker-image.yml
vendored
Normal file
33
.github/workflows/testing-docker-image.yml
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# Github action for testing the Docker image
|
||||||
|
name: Testing Docker image
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test-docker-image:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Testing with docker run
|
||||||
|
run: |
|
||||||
|
echo "[LOG] Starting ioBroker Container..."
|
||||||
|
docker run -d -p 8081:8081 --name iobroker -v iobrokerdata:/opt/iobroker buanet/iobroker:latest
|
||||||
|
echo "[LOG] Done."
|
||||||
|
echo ' '
|
||||||
|
echo "[LOG] Waiting for Startup Script..."
|
||||||
|
sleep 30
|
||||||
|
echo "[LOG] Done."
|
||||||
|
echo ' '
|
||||||
|
echo "[LOG] Writing Logs..."
|
||||||
|
docker logs iobroker >& testrun.log
|
||||||
|
echo "[LOG] Done."
|
||||||
|
echo ' '
|
||||||
|
echo "[LOG] Checking Web UI..."
|
||||||
|
curl --insecure http://127.0.0.1:8081 2> /dev/null | grep '<title>Admin</title>' &> /dev/null || exit 1
|
||||||
|
echo "[LOG] Done."
|
||||||
|
echo ' '
|
||||||
|
echo "[LOG] Output testrun.log:"
|
||||||
|
cat testrun.log
|
||||||
|
echo ' '
|
||||||
|
echo "[LOG] Test sucesssful."
|
||||||
|
echo ' '
|
||||||
55
CHANGELOG.md
55
CHANGELOG.md
@@ -1,16 +1,37 @@
|
|||||||
## Changelog
|
## Changelog
|
||||||
|
### 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-beta.2 (2022-02-11)
|
||||||
|
* fix -kbn option in maintenance script
|
||||||
|
* enhance shutdown/ prevent warnings on upgrade
|
||||||
|
* remove hostname check for multihost slave
|
||||||
|
* enhance startup script logging
|
||||||
|
* add breaks and enhance maintenance script (fixes [#233](https://github.com/buanet/ioBroker.docker/issues/233))
|
||||||
|
* v6.1.0-beta.1 (2021-12-23)
|
||||||
|
* some more corrections in maintenance script ([#232 by @agross](https://github.com/buanet/ioBroker.docker/pull/232))
|
||||||
|
* add auto confirm parameter to upgrade function in maintenance script ([#229 by @thost96](https://github.com/buanet/ioBroker.docker/pull/229))
|
||||||
|
* add alias "m" for maintenance script
|
||||||
|
|
||||||
### v6.0.0 (2021-12-09)
|
### v6.0.0 (2021-12-09)
|
||||||
* moving docu/ restructuring readme
|
* move docs/ restructuring readme
|
||||||
* v6.0.0-beta1 (2021-10-07)
|
* v6.0.0-beta1 (2021-10-07)
|
||||||
* upgrading node version to recommended node14
|
* upgrade node version to recommended node14
|
||||||
* adding beta-node16 tag for beta testing node16
|
* add beta-node16 tag for beta testing node16
|
||||||
* updating documentation
|
* update documentation
|
||||||
* v5.3.0-beta1 (2021-10-07)
|
* v5.3.0-beta1 (2021-10-07)
|
||||||
* adding check (installed) PACKAGES on startup (#201)
|
* add check (installed) PACKAGES on startup (fixes [#201](https://github.com/buanet/ioBroker.docker/issues/201))
|
||||||
* adding packages for discovery adapter
|
* add packages for discovery adapter
|
||||||
* adding packages for backitup adapter
|
* add packages for backitup adapter
|
||||||
* reorganizing Dockerfile
|
* reorganize Dockerfile
|
||||||
|
|
||||||
### v5.2.0 (2021-09-30)
|
### v5.2.0 (2021-09-30)
|
||||||
* v5.2.0-beta4 (2021-09-10)
|
* v5.2.0-beta4 (2021-09-10)
|
||||||
@@ -21,7 +42,7 @@
|
|||||||
* v5.2.0-beta3 (2021-09-04)
|
* v5.2.0-beta3 (2021-09-04)
|
||||||
* reducing layers in dockerfile
|
* reducing layers in dockerfile
|
||||||
* making hostname check mandatory for startup
|
* making hostname check mandatory for startup
|
||||||
* optimize startup log
|
* enhance startup log
|
||||||
* v5.2.0-beta2 (2021-08-28)
|
* v5.2.0-beta2 (2021-08-28)
|
||||||
* redesign maintenance script
|
* redesign maintenance script
|
||||||
* switching amd64 base image to debian bullseye slim
|
* switching amd64 base image to debian bullseye slim
|
||||||
@@ -29,21 +50,21 @@
|
|||||||
* adding labels in OCI standard format
|
* adding labels in OCI standard format
|
||||||
* adding packages update on first start
|
* adding packages update on first start
|
||||||
* adding file for docker detection by ioBroker adapters
|
* adding file for docker detection by ioBroker adapters
|
||||||
* adding best practice for states db migation in readme
|
* adding best practice for states db migration in readme
|
||||||
* removing couchdb option for states db (no longer supported)
|
* removing couchdb option for states db (no longer supported)
|
||||||
* v5.2.0-beta1 (2021-05-04)
|
* v5.2.0-beta1 (2021-05-04)
|
||||||
* added upgrade parameter to maintenance script
|
* added upgrade parameter to maintenance script
|
||||||
* added expose for default admin ui port (#172)
|
* added expose for default admin ui port (fixes [#172](https://github.com/buanet/ioBroker.docker/issues/172))
|
||||||
* added short form for maintenance script
|
* added short form for maintenance script
|
||||||
* v5.2.0-beta (2021-04-02)
|
* v5.2.0-beta (2021-04-02)
|
||||||
* some renaming to optimize automated build
|
* some renaming to enhance automated build
|
||||||
* changes in versioning
|
* changes in versioning
|
||||||
* delete travis for automated build
|
* delete travis for automated build
|
||||||
|
|
||||||
### v5.1.0 (2020-11-05)
|
### v5.1.0 (2020-11-05)
|
||||||
* v5.0.2-beta (2020-07-28)
|
* v5.0.2-beta (2020-07-28)
|
||||||
* added docker tag for majorversion latest
|
* added docker tag for majorversion latest
|
||||||
* extend readme.md doku
|
* extend readme.md docu
|
||||||
* added maintenance script
|
* added maintenance script
|
||||||
* added container healthcheck
|
* added container healthcheck
|
||||||
* fixed configuration procedure and logging for objects and states db setup
|
* fixed configuration procedure and logging for objects and states db setup
|
||||||
@@ -51,7 +72,7 @@
|
|||||||
* fixing backup detection in startup script
|
* fixing backup detection in startup script
|
||||||
* fixing permission issue on iobroker restored
|
* fixing permission issue on iobroker restored
|
||||||
* extended Logging
|
* extended Logging
|
||||||
* optimize multihost support
|
* enhance multihost support
|
||||||
|
|
||||||
### v5.0.0 (2020-06-29)
|
### v5.0.0 (2020-06-29)
|
||||||
* v4.2.4-beta (2020-06-23)
|
* v4.2.4-beta (2020-06-23)
|
||||||
@@ -84,7 +105,7 @@
|
|||||||
### v4.1.0 (2020-01-17)
|
### v4.1.0 (2020-01-17)
|
||||||
* improved readme.md
|
* improved readme.md
|
||||||
* v4.0.3-beta (2020-01-06)
|
* v4.0.3-beta (2020-01-06)
|
||||||
* added support to restore backup on startup
|
* added support to restore backup on startup ([#56 by @duffbeer2000](https://github.com/buanet/ioBroker.docker/pull/56))
|
||||||
* small fixes according to "docker best practices"
|
* small fixes according to "docker best practices"
|
||||||
* v4.0.2-beta (2019-12-10)
|
* v4.0.2-beta (2019-12-10)
|
||||||
* ~~added env for activating redis~~
|
* ~~added env for activating redis~~
|
||||||
@@ -104,13 +125,13 @@
|
|||||||
* v3.1.2-beta (2019-09-03)
|
* v3.1.2-beta (2019-09-03)
|
||||||
* using node 10 instead of node 8
|
* using node 10 instead of node 8
|
||||||
* v3.1.1-beta (2019-09-02)
|
* v3.1.1-beta (2019-09-02)
|
||||||
* adding env for setting uid/ gid for iobroker-user
|
* adding env for setting uid/ gid for iobroker-user ([#33 by @mplogas](https://github.com/buanet/ioBroker.docker/pull/33))
|
||||||
|
|
||||||
### v3.1.0 (2019-08-21)
|
### v3.1.0 (2019-08-21)
|
||||||
* v3.0.3-beta (2019-08-21)
|
* v3.0.3-beta (2019-08-21)
|
||||||
* switching base image from "debian:latest" to "debian:stretch"
|
* switching base image from "debian:latest" to "debian:stretch"
|
||||||
* v3.0.2-beta (2019-06-13)
|
* v3.0.2-beta (2019-06-13)
|
||||||
* using gosu instead of sudo
|
* using gosu instead of sudo ([#26 by @SchumyHao](https://github.com/buanet/ioBroker.docker/pull/26))
|
||||||
* changing output of ioBroker logging
|
* changing output of ioBroker logging
|
||||||
* v3.0.1-beta (2019-05-18)
|
* v3.0.1-beta (2019-05-18)
|
||||||
* ~~switching back to iobroker-daemon for startup~~
|
* ~~switching back to iobroker-daemon for startup~~
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2017-2021 André Germann
|
Copyright (c) 2017-2022 André Germann
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
21
README.md
21
README.md
@@ -1,15 +1,20 @@
|
|||||||
# Official Docker Image for ioBroker
|
# Official Docker Image for ioBroker
|
||||||
|
|
||||||
<img src="https://github.com/buanet/ioBroker.docker/raw/main/src/img/iobroker_logo.png" width="600" title="ioBroker Logo">
|
<img src="https://github.com/buanet/ioBroker.docker/raw/main/docs/img/iobroker_logo.png" width="600" title="ioBroker Logo">
|
||||||
|
|
||||||
|
[](https://github.com/buanet/ioBroker.docker/releases)
|
||||||
|
[](https://github.com/buanet/ioBroker.docker/releases)
|
||||||
|
[)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian-image-latest.yml)
|
||||||
|
[](https://github.com/buanet/ioBroker.docker/issues)
|
||||||
|
[](https://github.com/buanet/ioBroker.docker/discussions)<br>
|
||||||
|
[](https://hub.docker.com/repository/docker/buanet/iobroker)
|
||||||
[](https://hub.docker.com/repository/docker/buanet/iobroker)
|
[](https://hub.docker.com/repository/docker/buanet/iobroker)
|
||||||
[](https://hub.docker.com/repository/docker/buanet/iobroker)
|
[](https://hub.docker.com/repository/docker/buanet/iobroker)
|
||||||
[](https://hub.docker.com/repository/docker/buanet/iobroker)<br>
|
[](https://hub.docker.com/repository/docker/buanet/iobroker)<br>
|
||||||
[)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian-image-main.yml)
|
|
||||||
[](https://github.com/buanet/ioBroker.docker/releases)
|
|
||||||
[](https://github.com/buanet/ioBroker.docker/issues)<br>
|
|
||||||
[](https://github.com/buanet/ioBroker.docker)
|
|
||||||
[](https://github.com/buanet/ioBroker.docker/blob/master/LICENSE.md)
|
[](https://github.com/buanet/ioBroker.docker/blob/master/LICENSE.md)
|
||||||
|
[](https://github.com/buanet/ioBroker.docker)
|
||||||
|
[](https://github.com/buanet/ioBroker.docker/network)
|
||||||
|
[](https://github.com/buanet/ioBroker.docker/stargazers)
|
||||||
[](https://paypal.me/buanet)
|
[](https://paypal.me/buanet)
|
||||||
|
|
||||||
The code provided in this repo is used to automatically generate the official Docker Image for ioBroker.
|
The code provided in this repo is used to automatically generate the official Docker Image for ioBroker.
|
||||||
@@ -26,7 +31,7 @@ Looking for documentation? :arrow_right: [docs.buanet.de](https://docs.buanet.de
|
|||||||
|
|
||||||
### How to run the image?
|
### How to run the image?
|
||||||
|
|
||||||
You can find some basic information about the image amd how to run it on the [Docker Hub page](https://hub.docker.com/r/buanet/iobroker) or [here](https://github.com/buanet/ioBroker.docker/blob/main/src/README_docker_hub_buanet.md).
|
You can find some basic information about the image amd how to run it on the [Docker Hub page](https://hub.docker.com/r/buanet/iobroker) or [here](https://github.com/buanet/ioBroker.docker/blob/main/docs/README_docker_hub_buanet.md).
|
||||||
|
|
||||||
### Is there a more detailed documentation?
|
### Is there a more detailed documentation?
|
||||||
|
|
||||||
@@ -61,7 +66,7 @@ If you want to get the newest features and changes feel free to use/ test the be
|
|||||||
|
|
||||||
The easiest way to support this project is to leave me some likes/ stars on Github and Docker hub!<br>
|
The easiest way to support this project is to leave me some likes/ stars on Github and Docker hub!<br>
|
||||||
If you want to give something back to the community, feel free to take a look into the [open issues](https://github.com/buanet/ioBroker.docker/issues) or the [ioBroker forum thread](http://forum.iobroker.net/viewtopic.php?f=17&t=5089) and help me answering questions, fixing bugs or adding new features!<br>
|
If you want to give something back to the community, feel free to take a look into the [open issues](https://github.com/buanet/ioBroker.docker/issues) or the [ioBroker forum thread](http://forum.iobroker.net/viewtopic.php?f=17&t=5089) and help me answering questions, fixing bugs or adding new features!<br>
|
||||||
If that doesn't work for you and you want to buy me a beer instead, you can do this here: <a href="https://www.paypal.me/buanet" target="_blank"><img src="https://github.com/buanet/ioBroker.docker/raw/main/src/img/pp_logo.png" height="15" width="15"></a><br>
|
If that doesn't work for you and you want to buy me a beer instead, you can do this here: <a href="https://www.paypal.me/buanet" target="_blank"><img src="https://github.com/buanet/ioBroker.docker/raw/main/docs/img/pp_logo.png" height="15" width="15"></a><br>
|
||||||
Thank you!
|
Thank you!
|
||||||
|
|
||||||
## :memo: Changelog
|
## :memo: Changelog
|
||||||
@@ -72,7 +77,7 @@ Moved to [CHANGELOG.md](CHANGELOG.md).
|
|||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2017-2021 André Germann
|
Copyright (c) 2017-2022 André Germann
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
97
debian/node18/Dockerfile
vendored
Normal file
97
debian/node18/Dockerfile
vendored
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
FROM debian:bullseye-slim
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.title="Official ioBroker Docker Image" \
|
||||||
|
org.opencontainers.image.description="Officical Docker image for ioBroker smarthome software (https://www.iobroker.net)" \
|
||||||
|
org.opencontainers.image.documentation="https://github.com/buanet/ioBroker.docker#readme" \
|
||||||
|
org.opencontainers.image.authors="André Germann <info@buanet.de>" \
|
||||||
|
org.opencontainers.image.url="https://github.com/buanet/ioBroker.docker" \
|
||||||
|
org.opencontainers.image.source="https://github.com/buanet/ioBroker.docker" \
|
||||||
|
org.opencontainers.image.base.name="docker.io/library/debian:bullseye-slim" \
|
||||||
|
org.opencontainers.image.version="${VERSION}" \
|
||||||
|
org.opencontainers.image.created="${DATI}"
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
# Install prerequisites (including node) and generating locales
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
apt-utils \
|
||||||
|
cifs-utils \
|
||||||
|
curl \
|
||||||
|
gosu \
|
||||||
|
iputils-ping \
|
||||||
|
jq \
|
||||||
|
locales \
|
||||||
|
nfs-common \
|
||||||
|
procps \
|
||||||
|
python3 \
|
||||||
|
python3-dev \
|
||||||
|
sudo \
|
||||||
|
tar \
|
||||||
|
tzdata \
|
||||||
|
udev \
|
||||||
|
wget \
|
||||||
|
# Install node
|
||||||
|
&& curl -sL https://deb.nodesource.com/setup_18.x | bash \
|
||||||
|
&& apt-get update && apt-get install -y nodejs \
|
||||||
|
# Install node-gyp
|
||||||
|
&& npm install -g node-gyp \
|
||||||
|
# Generating locales
|
||||||
|
&& sed -i 's/^# *\(de_DE.UTF-8\)/\1/' /etc/locale.gen \
|
||||||
|
&& sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \
|
||||||
|
&& locale-gen
|
||||||
|
|
||||||
|
# Create directorys and copy scripts
|
||||||
|
COPY scripts /opt/scripts
|
||||||
|
COPY userscripts /opt/userscripts
|
||||||
|
RUN chmod 777 /opt/scripts/ \
|
||||||
|
&& chmod 777 /opt/userscripts/ \
|
||||||
|
&& chmod +x /opt/scripts/*.sh \
|
||||||
|
&& chmod +x /opt/userscripts/*.sh
|
||||||
|
|
||||||
|
# Install ioBroker
|
||||||
|
RUN curl -sL https://iobroker.net/install.sh | bash - \
|
||||||
|
&& mkdir -p /opt/scripts/.docker_config/ \
|
||||||
|
&& echo "starting" > /opt/scripts/.docker_config/.healthcheck \
|
||||||
|
&& echo "${VERSION}" > /opt/scripts/.docker_config/.thisisdocker \
|
||||||
|
&& echo $(hostname) > /opt/.firstrun \
|
||||||
|
# Deleting UUID from build
|
||||||
|
&& iobroker unsetup -y \
|
||||||
|
# Backup initial ioBroker and userscript folder
|
||||||
|
&& tar -cf /opt/initial_iobroker.tar /opt/iobroker \
|
||||||
|
&& tar -cf /opt/initial_userscripts.tar /opt/userscripts \
|
||||||
|
# Setting up iobroker-user (shell, home dir and rights)
|
||||||
|
&& chsh -s /bin/bash iobroker \
|
||||||
|
&& usermod --home /opt/iobroker iobroker \
|
||||||
|
&& usermod -u 1000 iobroker \
|
||||||
|
&& groupmod -g 1000 iobroker \
|
||||||
|
&& chown root:iobroker /usr/sbin/gosu \
|
||||||
|
&& chmod +s /usr/sbin/gosu \
|
||||||
|
# Clean up installation cache
|
||||||
|
&& apt-get autoclean -y \
|
||||||
|
&& apt-get autoremove \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /tmp/* /var/tmp/* \
|
||||||
|
&& rm -rf /root/.cache/* /root/.npm/* \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Setting up default ENVs
|
||||||
|
ENV DEBIAN_FRONTEND="teletype" \
|
||||||
|
LANG="de_DE.UTF-8" \
|
||||||
|
LANGUAGE="de_DE:de" \
|
||||||
|
LC_ALL="de_DE.UTF-8" \
|
||||||
|
SETGID=1000 \
|
||||||
|
SETUID=1000 \
|
||||||
|
TZ="Europe/Berlin"
|
||||||
|
|
||||||
|
# Expose default admin ui port
|
||||||
|
EXPOSE 8081
|
||||||
|
|
||||||
|
# Change work dir
|
||||||
|
WORKDIR /opt/iobroker/
|
||||||
|
|
||||||
|
# Healthcheck
|
||||||
|
HEALTHCHECK --interval=15s --timeout=5s --retries=5 \
|
||||||
|
CMD ["/bin/bash", "-c", "/opt/scripts/healthcheck.sh"]
|
||||||
|
|
||||||
|
# Run startup-script
|
||||||
|
ENTRYPOINT ["/bin/bash", "-c", "/opt/scripts/iobroker_startup.sh"]
|
||||||
285
debian/scripts/iobroker_startup.sh
vendored
285
debian/scripts/iobroker_startup.sh
vendored
@@ -1,12 +1,13 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# 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
|
||||||
adminport=$IOB_ADMINPORT
|
adminport=$IOB_ADMINPORT
|
||||||
avahi=$AVAHI
|
avahi=$AVAHI
|
||||||
multihost=$IOB_MULTIHOST
|
multihost=$IOB_MULTIHOST
|
||||||
|
offlinemode=$OFFLINE_MODE
|
||||||
objectsdbhost=$IOB_OBJECTSDB_HOST
|
objectsdbhost=$IOB_OBJECTSDB_HOST
|
||||||
objectsdbport=$IOB_OBJECTSDB_PORT
|
objectsdbport=$IOB_OBJECTSDB_PORT
|
||||||
objectsdbtype=$IOB_OBJECTSDB_TYPE
|
objectsdbtype=$IOB_OBJECTSDB_TYPE
|
||||||
@@ -19,6 +20,8 @@ statesdbtype=$IOB_STATESDB_TYPE
|
|||||||
usbdevices=$USBDEVICES
|
usbdevices=$USBDEVICES
|
||||||
zwave=$ZWAVE
|
zwave=$ZWAVE
|
||||||
|
|
||||||
|
pkill_timeout=10 # timeout for iobroker shutdown in seconds
|
||||||
|
|
||||||
# Getting date and time for logging
|
# Getting date and time for logging
|
||||||
dati=`date '+%Y-%m-%d %H:%M:%S'`
|
dati=`date '+%Y-%m-%d %H:%M:%S'`
|
||||||
|
|
||||||
@@ -39,6 +42,7 @@ echo "----- Debugging information
|
|||||||
echo "----- -----"
|
echo "----- -----"
|
||||||
echo "----- System -----"
|
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 "----- -----"
|
echo "----- -----"
|
||||||
echo "----- Docker-Image -----"
|
echo "----- Docker-Image -----"
|
||||||
echo -n "----- " && echo -n "$(printf "%-20s %-28s" image: ${VERSION})" && echo " -----"
|
echo -n "----- " && echo -n "$(printf "%-20s %-28s" image: ${VERSION})" && echo " -----"
|
||||||
@@ -49,18 +53,19 @@ echo -n "----- " && echo -n "$(printf "%-20s %-28s" node: $(n
|
|||||||
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 "----- ENV -----"
|
||||||
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 [ "$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 [ "$multihost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_MULTIHOST: $multihost)" && echo " -----"; fi
|
if [ "$multihost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_MULTIHOST: $multihost)" && echo " -----"; fi
|
||||||
if [ "$objectsdbhost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_HOST: $objectsdbhost)" && echo " -----"; fi
|
if [ "$objectsdbhost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_HOST: $objectsdbhost)" && echo " -----"; fi
|
||||||
if [ "$objectsdbport" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_PORT: $objectsdbport)" && echo " -----"; fi
|
if [ "$objectsdbport" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_PORT: $objectsdbport)" && echo " -----"; fi
|
||||||
if [ "$objectsdbtype" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_TYPE: $objectsdbtype)" && echo " -----"; fi
|
if [ "$objectsdbtype" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_OBJECTSDB_TYPE: $objectsdbtype)" && echo " -----"; fi
|
||||||
if [ "$packages" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PACKAGES: $packages)" && echo " -----"; fi
|
|
||||||
if [ "$setgid" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETGID: $setgid)" && echo " -----"; fi
|
|
||||||
if [ "$setuid" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETUID: $setuid)" && echo " -----"; fi
|
|
||||||
if [ "$statesdbhost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_HOST: $statesdbhost)" && echo " -----"; fi
|
if [ "$statesdbhost" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_HOST: $statesdbhost)" && echo " -----"; fi
|
||||||
if [ "$statesdbport" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_PORT: $statesdbport)" && echo " -----"; fi
|
if [ "$statesdbport" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_PORT: $statesdbport)" && echo " -----"; fi
|
||||||
if [ "$statesdbtype" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_TYPE: $statesdbtype)" && echo " -----"; fi
|
if [ "$statesdbtype" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_TYPE: $statesdbtype)" && echo " -----"; fi
|
||||||
|
if [ "$offlinemode" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" OFFLINE_MODE: $offlinemode)" && echo " -----"; fi
|
||||||
|
if [ "$packages" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PACKAGES: "$packages")" && echo " -----"; fi
|
||||||
|
if [ "$setgid" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETGID: $setgid)" && echo " -----"; fi
|
||||||
|
if [ "$setuid" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" SETUID: $setuid)" && echo " -----"; fi
|
||||||
if [ "$usbdevices" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" USBDEVICES: $usbdevices)" && 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
|
if [ "$zwave" != "" ]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" ZWAVE: $zwave)" && echo " -----"; fi
|
||||||
echo "$(printf -- '-%.0s' {1..80})"
|
echo "$(printf -- '-%.0s' {1..80})"
|
||||||
@@ -74,48 +79,57 @@ echo "----- Step 1 of 5: Preparing container
|
|||||||
echo "$(printf -- '-%.0s' {1..80})"
|
echo "$(printf -- '-%.0s' {1..80})"
|
||||||
echo ' '
|
echo ' '
|
||||||
|
|
||||||
# Installing/updating additional packages, registering maintenance script and setting uid/gid
|
# Actions running on first start only
|
||||||
if [ "$packages" != "" ] || [ $(cat /etc/group | grep 'iobroker:' | cut -d':' -f3) != $setgid ] || [ $(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3) != $setuid ] || [ -f /opt/.firstrun ]
|
if [ -f /opt/.firstrun ]; then
|
||||||
then
|
# Updating Linux packages
|
||||||
if [ -f /opt/.firstrun ]
|
if [ "$offlinemode" = "true" ]; then
|
||||||
then
|
echo 'Offline mode is activated by ENV. Skipping Linux package updates on first run.'
|
||||||
echo "Updating Linux packages on first run..."
|
|
||||||
bash /opt/scripts/setup_packages.sh -update
|
|
||||||
echo "Done."
|
|
||||||
echo ' '
|
echo ' '
|
||||||
echo "Registering maintenance script as command..."
|
else
|
||||||
echo "alias maintenance=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc
|
echo 'Updating Linux packages on first run...'
|
||||||
echo "alias maint=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc
|
bash /opt/scripts/setup_packages.sh -update
|
||||||
echo "Done."
|
echo 'Done.'
|
||||||
echo ' '
|
echo ' '
|
||||||
fi
|
fi
|
||||||
if [ "$packages" != "" ]
|
# Register maintenance script
|
||||||
then
|
echo -n 'Registering maintenance script as command... '
|
||||||
echo "Installing additional packages is set by ENV."
|
echo "alias maintenance=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc
|
||||||
|
echo "alias maint=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc
|
||||||
|
echo "alias m=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
else
|
||||||
|
echo 'This is not the first run of this container. Skipping first run preparation.'
|
||||||
|
echo ' '
|
||||||
|
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 "Checking the following Packages:" $packages"..."
|
||||||
echo $packages > /opt/scripts/.docker_config/.packages
|
echo $packages > /opt/scripts/.docker_config/.packages
|
||||||
bash /opt/scripts/setup_packages.sh -install
|
bash /opt/scripts/setup_packages.sh -install
|
||||||
echo "Done."
|
echo 'Done.'
|
||||||
echo ' '
|
echo ' '
|
||||||
fi
|
fi
|
||||||
if [ $(cat /etc/group | grep 'iobroker:' | cut -d':' -f3) != $setgid ] || [ $(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3) != $setuid ]
|
|
||||||
then
|
# 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
|
||||||
echo "Different UID and/ or GID is set by ENV."
|
echo "Different UID and/ or GID is set by ENV."
|
||||||
echo "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 -g $setgid iobroker
|
||||||
echo "Done."
|
echo 'Done.'
|
||||||
echo ' '
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Nothing to do here."
|
|
||||||
echo ' '
|
echo ' '
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Change directory for next steps
|
# Change directory for next steps
|
||||||
cd /opt/iobroker
|
cd /opt/iobroker
|
||||||
|
|
||||||
|
|
||||||
#####
|
#####
|
||||||
# STEP 2 - Detecting ioBroker-Installation
|
# STEP 2 - Detecting ioBroker-Installation
|
||||||
#####
|
#####
|
||||||
@@ -127,9 +141,9 @@ 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 "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."
|
||||||
@@ -139,21 +153,21 @@ then
|
|||||||
then
|
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 readme.md on Github (https://github.com/buanet/ioBroker.docker)."
|
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."
|
||||||
echo "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 /
|
||||||
mkdir /opt/iobroker/backups
|
mkdir /opt/iobroker/backups
|
||||||
mv /opt/*.tar.gz /opt/iobroker/backups/
|
mv /opt/*.tar.gz /opt/iobroker/backups/
|
||||||
# fixing permission errors during restore
|
# fixing permission errors during restore
|
||||||
chown -R $setuid:$setgid /opt/iobroker
|
chown -R $setuid:$setgid /opt/iobroker
|
||||||
echo "Done."
|
echo 'Done.'
|
||||||
echo "Restoring ioBroker..."
|
echo -n "Restoring ioBroker... "
|
||||||
bash iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1
|
bash iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1
|
||||||
echo "Done."
|
echo 'Done.'
|
||||||
echo ' '
|
echo ' '
|
||||||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
||||||
echo "!!!!! IMPORTANT NOTE !!!!!"
|
echo "!!!!! IMPORTANT NOTE !!!!!"
|
||||||
@@ -171,7 +185,6 @@ else
|
|||||||
fi
|
fi
|
||||||
echo ' '
|
echo ' '
|
||||||
|
|
||||||
|
|
||||||
#####
|
#####
|
||||||
# STEP 3 - Checking ioBroker-Installation
|
# STEP 3 - Checking ioBroker-Installation
|
||||||
#####
|
#####
|
||||||
@@ -181,31 +194,30 @@ 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 "(Re)Setting folder permissions (This might take a while! Please be patient!)..."
|
echo -n "(Re)Setting folder 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 "Fixing \"sudo-bug\" by replacing sudo in iobroker with gosu..."
|
echo -n "Fixing \"sudo-bug\" by replacing sudo in iobroker 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
|
||||||
echo "Done."
|
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) ]
|
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 "Updating hostname to " $(hostname)"..."
|
echo -n "Updating hostname to " $(hostname)"... "
|
||||||
bash iobroker host $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')
|
bash iobroker host $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*')
|
||||||
echo "Done."
|
echo 'Done.'
|
||||||
echo ' '
|
echo ' '
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
#####
|
#####
|
||||||
# STEP 4 - Setting up prerequisites for some ioBroker-adapters
|
# STEP 4 - Setting up prerequisites for some ioBroker-adapters
|
||||||
#####
|
#####
|
||||||
@@ -215,238 +227,223 @@ echo "$(printf -- '-%.0s' {1..80})"
|
|||||||
echo ' '
|
echo ' '
|
||||||
|
|
||||||
echo "Some adapters have special requirements/ settings which can be activated by the use of environment variables."
|
echo "Some adapters have special requirements/ settings which can be activated by the use of environment variables."
|
||||||
echo "For more information take a look at readme.md on Github!"
|
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
|
||||||
echo ' '
|
echo ' '
|
||||||
|
|
||||||
|
|
||||||
# Checking ENV for Adminport
|
# Checking ENV for Adminport
|
||||||
if [ "$adminport" != "" ]
|
if [ "$adminport" != "" ]
|
||||||
then
|
then
|
||||||
if [ "$adminport" != $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') ]
|
if [ "$adminport" != $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="port": )[^,]*') ]
|
||||||
then
|
then
|
||||||
echo "Adminport set by ENV does not match port configured in ioBroker installation."
|
echo "Adminport set by ENV does not match port configured in ioBroker installation."
|
||||||
echo "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.'
|
||||||
echo ' '
|
echo ' '
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Checking ENV for AVAHI
|
# Checking ENV for AVAHI
|
||||||
if [ "$avahi" != "" ]
|
if [ "$avahi" = "true" ] && [ "$offlinemode" = "true" ]; then
|
||||||
then
|
echo 'Avahi-daemon is activated by ENV but offline mode is activated!'
|
||||||
if [ "$avahi" = "true" ]
|
echo 'Skipping Avahi daemon setup.'
|
||||||
then
|
elif [ "$avahi" = "true" ]; then
|
||||||
echo "Avahi-daemon is activated by ENV."
|
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.'
|
||||||
echo ' '
|
echo ' '
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Checking ENV for Z-WAVE
|
# Checking ENV for Z-WAVE
|
||||||
if [ "$zwave" != "" ]
|
if [ "$zwave" = "true" ] && [ "$offlinemode" = "true" ]; then
|
||||||
then
|
echo 'Z-Wave is activated by ENV but offline mode is activated!'
|
||||||
if [ "$zwave" = "true" ]
|
echo 'Skipping Z-Wave setup.'
|
||||||
then
|
elif [ "$zwave" = "true" ]; then
|
||||||
echo "Z-Wave is activated by ENV."
|
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.'
|
||||||
echo ' '
|
echo ' '
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# checking ENV for USBDEVICES
|
# checking ENV for USBDEVICES
|
||||||
if [ "$usbdevices" != "" ]
|
if [ "$usbdevices" != "" ] && [ "$usbdevices" != "none" ]; then
|
||||||
then
|
|
||||||
if [ "$usbdevices" != "none" ]
|
|
||||||
then
|
|
||||||
echo "Usb-device-support is activated by ENV."
|
echo "Usb-device-support is activated by ENV."
|
||||||
IFS=';' read -ra devicearray <<< "$usbdevices"
|
IFS=';' read -ra devicearray <<< "$usbdevices"
|
||||||
for i in "${devicearray[@]}"
|
for i in "${devicearray[@]}"
|
||||||
do
|
do
|
||||||
echo "Setting permissions for" $i"..."
|
echo -n "Setting permissions for "$i"... "
|
||||||
chown root:dialout $i
|
chown root:dialout $i
|
||||||
chmod g+rw $i
|
chmod g+rw $i
|
||||||
|
echo 'Done.'
|
||||||
done
|
done
|
||||||
echo "Done."
|
|
||||||
echo ' '
|
echo ' '
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Checking ENV for multihost setup
|
# Checking ENV for multihost setup
|
||||||
|
if [ "$multihost" != "" ]
|
||||||
|
then
|
||||||
|
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 "Multihost is set as \"master\" by ENV and no external objects db is set."
|
echo "Multihost is set as \"master\" by ENV and no external objects db is set."
|
||||||
echo "Setting host of objects db to \"0.0.0.0\" to allow external communication..."
|
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.'
|
||||||
echo ' '
|
|
||||||
elif [ "$multihost" = "master" ] && [ "$objectsdbhost" = "127.0.0.1" ]
|
elif [ "$multihost" = "master" ] && [ "$objectsdbhost" = "127.0.0.1" ]
|
||||||
then
|
then
|
||||||
echo "Multihost is set as \"master\" by ENV. But objects db host is set to \"127.0.0.1\" by ENV too."
|
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 work! Please change or remove ENV \"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 readme.md on Github (https://github.com/buanet/ioBroker.docker)."
|
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 "Multihost is set as \"master\" by ENV and external objects db is set."
|
echo "Multihost is set as \"master\" by ENV and external objects db is set."
|
||||||
echo "Skipping this step..."
|
|
||||||
echo "Done."
|
|
||||||
echo ' '
|
|
||||||
elif ([ "$multihost" = "slave" ] && [ "$objectsdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbport" = "" ])
|
elif ([ "$multihost" = "slave" ] && [ "$objectsdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbport" = "" ])
|
||||||
then
|
then
|
||||||
echo "Multihost is set as \"slave\" by ENV. But no external objects db is set."
|
echo "Multihost is set as \"slave\" by ENV. But no external objects db is set."
|
||||||
echo "You have to configure ENVs \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" to connect to a maser objects db."
|
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 "Please check your settings and start over."
|
||||||
echo "For more information see readme.md on Github (https://github.com/buanet/ioBroker.docker)."
|
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 "Multihost is set as \"slave\" by ENV and external objects db is set."
|
echo "Multihost is set as \"slave\" by ENV and external objects db is set."
|
||||||
echo "Skipping this step..."
|
|
||||||
echo "Done."
|
|
||||||
echo ' '
|
|
||||||
elif [ "$multihost" != "" ]
|
elif [ "$multihost" != "" ]
|
||||||
then
|
then
|
||||||
echo "Multihost is set but it seems like some configuration is missing."
|
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 readme.md on Github (https://github.com/buanet/ioBroker.docker)."
|
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 "Multihost is set as \"master\" by ENV and no external states db is set."
|
echo "Multihost is set as \"master\" by ENV and no external states db is set."
|
||||||
echo "Setting host of states db to \"0.0.0.0\" to allow external communication..."
|
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.'
|
||||||
echo ' '
|
|
||||||
elif [ "$multihost" = "master" ] && [ "$statesdbhost" = "127.0.0.1" ]
|
elif [ "$multihost" = "master" ] && [ "$statesdbhost" = "127.0.0.1" ]
|
||||||
then
|
then
|
||||||
echo "Multihost is set as \"master\" by ENV. But states db host is set to \"127.0.0.1\" by ENV too."
|
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 work! Please change or remove ENV \"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 readme.md on Github (https://github.com/buanet/ioBroker.docker)."
|
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 "Multihost is set as \"master\" by ENV and external states db is set."
|
echo "Multihost is set as \"master\" by ENV and external states db is set."
|
||||||
echo "Skipping this step..."
|
|
||||||
echo "Done."
|
|
||||||
echo ' '
|
|
||||||
elif ([ "$multihost" = "slave" ] && [ "$statesdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbport" = "" ])
|
elif ([ "$multihost" = "slave" ] && [ "$statesdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbport" = "" ])
|
||||||
then
|
then
|
||||||
echo "Multihost is set as \"slave\" by ENV. But no external states db is set."
|
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 readme.md on Github (https://github.com/buanet/ioBroker.docker)."
|
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 "Multihost is set as \"slave\" by ENV and external states db is set."
|
echo "Multihost is set as \"slave\" by ENV and external states db is set."
|
||||||
echo "Skipping this step..."
|
|
||||||
echo "Done."
|
|
||||||
echo ' '
|
|
||||||
elif [ "$multihost" != "" ]
|
elif [ "$multihost" != "" ]
|
||||||
then
|
then
|
||||||
echo "Multihost is set but it seems like some configuration is missing."
|
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 readme.md on Github (https://github.com/buanet/ioBroker.docker)."
|
echo "For more information see ioBroker Docker image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
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 custom settings for objects db..."
|
||||||
if [ "$objectsdbtype" != $(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json) ]
|
if [ "$objectsdbtype" != $(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json) ]
|
||||||
then
|
then
|
||||||
echo "ENV 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 "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
|
||||||
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.'
|
||||||
else
|
else
|
||||||
echo "ENV IOB_OBJECTSDB_TYPE is set and value meets detected ioBroker installation. Nothing to do here."
|
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 "ENV 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 "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
|
||||||
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.'
|
||||||
else
|
else
|
||||||
echo "ENV IOB_OBJECTSDB_HOST is set and value meets detected ioBroker installation. Nothing to do here."
|
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 "ENV 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 "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
|
||||||
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.'
|
||||||
else
|
else
|
||||||
echo "ENV IOB_OBJECTSDB_PORT is set and value meets detected ioBroker installation. Nothing to do here."
|
echo "IOB_OBJECTSDB_PORT is set and value meets detected ioBroker installation."
|
||||||
fi
|
fi
|
||||||
|
echo "Done."
|
||||||
echo ' '
|
echo ' '
|
||||||
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 custom settings for states db..."
|
||||||
if [ "$statesdbtype" != $(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json) ]
|
if [ "$statesdbtype" != $(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json) ]
|
||||||
then
|
then
|
||||||
echo "ENV 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 "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
|
||||||
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.'
|
||||||
else
|
else
|
||||||
echo "ENV IOB_STATESDB_TYPE is set and value meets detected ioBroker installation. Nothing to do here."
|
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 "ENV 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 "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
|
||||||
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.'
|
||||||
else
|
else
|
||||||
echo "ENV IOB_STATESDB_HOST is set and value meets detected ioBroker installation. Nothing to do here."
|
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 "ENV 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 "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
|
||||||
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.'
|
||||||
else
|
else
|
||||||
echo "ENV IOB_STATESDB_PORT is set and value meets detected ioBroker installation. Nothing to do here."
|
echo "IOB_STATESDB_PORT is set and value meets detected ioBroker installation."
|
||||||
fi
|
fi
|
||||||
|
echo "Done."
|
||||||
echo ' '
|
echo ' '
|
||||||
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 "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
|
||||||
@@ -493,8 +490,34 @@ shut_down() {
|
|||||||
echo ' '
|
echo ' '
|
||||||
echo "Recived termination signal (SIGTERM)."
|
echo "Recived termination signal (SIGTERM)."
|
||||||
echo "Shutting down ioBroker..."
|
echo "Shutting down ioBroker..."
|
||||||
pid=$(ps -ef | awk '/[j]s.controller/{print $2}')
|
|
||||||
kill -SIGTERM "$pid"
|
local status timeout
|
||||||
|
|
||||||
|
timeout="$(date --date="now + $pkill_timeout sec" +%s)"
|
||||||
|
pkill -u iobroker -f iobroker.js-controller
|
||||||
|
status=$?
|
||||||
|
if (( status >= 2 )); then # syntax error or fatal error
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( status == 1 )); then # no processes matched
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pgrep exits with status 1 when there are no matches
|
||||||
|
while pgrep -u iobroker > /dev/null; (( $? != 1 )); do
|
||||||
|
if (($(date +%s) > timeout)); then
|
||||||
|
echo -e '\nTimeout reached. Killing remaining processes...'
|
||||||
|
pkill --signal SIGKILL -u iobroker
|
||||||
|
echo 'Done. Have a nice day!'
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n '.'
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e '\nDone. Have a nice day!'
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
327
debian/scripts/maintenance.sh
vendored
327
debian/scripts/maintenance.sh
vendored
@@ -1,221 +1,228 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
############################
|
# bash strict mode
|
||||||
##### default settings #####
|
set -euo pipefail
|
||||||
############################
|
|
||||||
|
|
||||||
autoconfirm=no # could be set to true by commandline option
|
autoconfirm= # can be set to 'yes' by command line option
|
||||||
killbyname=no # could be set to true by commandline option / undocumented, only for use with backitup restore scripts
|
killbyname= # can be set to 'yes' by command line option (undocumented, only for use with backitup restore scripts)
|
||||||
|
healthcheck=/opt/scripts/.docker_config/.healthcheck # path of healthcheck file
|
||||||
####################################
|
pkill_timeout=10 # timeout for stopping iobroker in seconds
|
||||||
##### declaration of functions #####
|
|
||||||
####################################
|
|
||||||
|
|
||||||
# display help text
|
# display help text
|
||||||
display_help() {
|
display_help() {
|
||||||
echo "This script is build to manage your ioBroker container!"
|
echo 'This script helps you manage your ioBroker container!'
|
||||||
echo ''
|
echo ''
|
||||||
echo "Usage: maintenance [ COMMAND ] [ OPTION ]"
|
echo "Usage: maintenance [ COMMAND ] [ OPTION ]"
|
||||||
echo " maint [ COMMAND ] [ OPTION ]"
|
echo " maint [ COMMAND ] [ OPTION ]"
|
||||||
|
echo " m [ COMMAND ] [ OPTION ]"
|
||||||
echo ''
|
echo ''
|
||||||
echo "COMMANDS"
|
echo 'COMMANDS'
|
||||||
echo "------------------"
|
echo '------------------'
|
||||||
echo " status > gives the current state of maintenance mode"
|
echo ' status > reports the current state of maintenance mode'
|
||||||
echo " on > switches mantenance mode ON"
|
echo ' on > switches mantenance mode ON'
|
||||||
echo " off > switches mantenance mode OFF and shuts down/ restarts container"
|
echo ' off > switches mantenance mode OFF and stops or restarts the container'
|
||||||
echo " upgrade > will put container to maintenance mode and upgrade iobroker"
|
echo ' upgrade > puts the container to maintenance mode and upgrades ioBroker'
|
||||||
echo " help > shows this help"
|
echo ' help > shows this help'
|
||||||
echo ''
|
echo ''
|
||||||
echo "OPTIONS"
|
echo 'OPTIONS'
|
||||||
echo "------------------"
|
echo '------------------'
|
||||||
echo " -y|--yes > confirms the used command without asking"
|
echo ' -y|--yes > confirms the used command without asking'
|
||||||
echo " -h|--help > shows this help"
|
echo ' -h|--help > shows this help'
|
||||||
echo ''
|
echo ''
|
||||||
exit 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# checking maintenance mode status
|
# check maintenance enabled
|
||||||
check_status() {
|
maintenance_enabled() {
|
||||||
if [ $(cat /opt/scripts/.docker_config/.healthcheck) == 'maintenance' ]
|
[[ -f "$healthcheck" && "$(cat "$healthcheck")" == maintenance ]]
|
||||||
then
|
}
|
||||||
|
|
||||||
|
# display maintenance status
|
||||||
|
maintenance_status() {
|
||||||
|
if maintenance_enabled; then
|
||||||
echo 'Maintenance mode is turned ON.'
|
echo 'Maintenance mode is turned ON.'
|
||||||
elif [ $(cat /opt/scripts/.docker_config/.healthcheck) != 'maintenance' ]
|
else
|
||||||
then
|
|
||||||
echo 'Maintenance mode is turned OFF.'
|
echo 'Maintenance mode is turned OFF.'
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# turn maintenance mode ON
|
# enable maintenance mode
|
||||||
switch_on() {
|
enable_maintenance() {
|
||||||
if [ $(cat /opt/scripts/.docker_config/.healthcheck) != 'maintenance' ] && [ "$killbyname" == "yes" ] # maintenance mode OFF / killbyname = yes / undocumented, only for use with backitup restore scripts
|
if maintenance_enabled; then
|
||||||
then
|
|
||||||
echo 'This command will activate maintenance mode and stop all node processes.'
|
|
||||||
echo 'Activating maintenance mode...'
|
|
||||||
echo "maintenance" > /opt/scripts/.docker_config/.healthcheck
|
|
||||||
sleep 1
|
|
||||||
echo 'Done.'
|
|
||||||
echo 'Stopping ioBroker...'
|
|
||||||
pkill node
|
|
||||||
sleep 1
|
|
||||||
echo 'Done.'
|
|
||||||
exit 0
|
|
||||||
elif [ $(cat /opt/scripts/.docker_config/.healthcheck) != 'maintenance' ] && [ "$autoconfirm" == "no" ] # maintenance mode OFF / autoconfirm = no
|
|
||||||
then
|
|
||||||
echo 'You are now going to stop ioBroker and activating maintenance mode for this container.'
|
|
||||||
read -p 'Do you want to continue [yes/no]? ' A
|
|
||||||
if [ "$A" == "y" ] || [ "$A" == "Y" ] || [ "$A" == "yes" ]
|
|
||||||
then
|
|
||||||
echo 'Activating maintenance mode...'
|
|
||||||
echo "maintenance" > /opt/scripts/.docker_config/.healthcheck
|
|
||||||
sleep 1
|
|
||||||
echo 'Done.'
|
|
||||||
echo 'Stopping ioBroker...'
|
|
||||||
pkill -u iobroker
|
|
||||||
sleep 1
|
|
||||||
echo 'Done.'
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
elif [ $(cat /opt/scripts/.docker_config/.healthcheck) != 'maintenance' ] && [ "$autoconfirm" == "yes" ] # maintenance mode OFF / autoconfirm = yes
|
|
||||||
then
|
|
||||||
echo 'You are now going to stop ioBroker and activating maintenance mode for this container.'
|
|
||||||
echo 'This command was already confirmed by -y or --yes option.'
|
|
||||||
echo 'Activating maintenance mode...'
|
|
||||||
echo "maintenance" > /opt/scripts/.docker_config/.healthcheck
|
|
||||||
sleep 1
|
|
||||||
echo 'Done.'
|
|
||||||
echo 'Stopping ioBroker...'
|
|
||||||
pkill -u iobroker
|
|
||||||
sleep 1
|
|
||||||
echo 'Done.'
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
echo 'Maintenance mode is already turned ON.'
|
echo 'Maintenance mode is already turned ON.'
|
||||||
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "$killbyname" == yes ]]; then
|
||||||
|
# undocumented option, only for use with backitup restore scripts
|
||||||
|
echo 'This command will activate maintenance mode and stop js-controller.'
|
||||||
|
echo 'Activating maintenance mode...'
|
||||||
|
echo 'maintenance' > "$healthcheck"
|
||||||
|
sleep 1
|
||||||
|
echo 'Done.'
|
||||||
|
echo -n 'Stopping ioBroker...'
|
||||||
|
stop_iob
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 'You are now going to stop ioBroker and activate maintenance mode for this container.'
|
||||||
|
|
||||||
|
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 'Activating maintenance mode...'
|
||||||
|
echo 'maintenance' > "$healthcheck"
|
||||||
|
sleep 1
|
||||||
|
echo 'Done.'
|
||||||
|
echo -n 'Stopping ioBroker...'
|
||||||
|
stop_iob
|
||||||
}
|
}
|
||||||
|
|
||||||
# turn maintenance mode OFF
|
# disable maintenance mode
|
||||||
switch_off() {
|
disable_maintenance() {
|
||||||
if [ $(cat /opt/scripts/.docker_config/.healthcheck) == 'maintenance' ] && [ "$autoconfirm" == "no" ] # maintenance mode ON / autoconfirm = no
|
if ! maintenance_enabled; then
|
||||||
then
|
|
||||||
echo 'You are now going to deactivate maintenance mode for this container.'
|
|
||||||
echo 'Depending on the restart policy, your container will be stopped/ restarted immediately.'
|
|
||||||
read -p 'Do you want to continue [yes/no]? ' A
|
|
||||||
if [ "$A" == "y" ] || [ "$A" == "Y" ] || [ "$A" == "yes" ]
|
|
||||||
then
|
|
||||||
echo 'Deactivating maintenance mode and forcing container to stop/ restart...'
|
|
||||||
echo "stopping" > /opt/scripts/.docker_config/.healthcheck
|
|
||||||
pkill -u root
|
|
||||||
echo 'Done.'
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
elif [ $(cat /opt/scripts/.docker_config/.healthcheck) == 'maintenance' ] && [ "$autoconfirm" == "yes" ] # maintenance mode ON / autoconfirm = yes
|
|
||||||
then
|
|
||||||
echo 'You are now going to deactivate maintenance mode for this container.'
|
|
||||||
echo 'Depending on the restart policy, your container will be stopped/ restarted immediately.'
|
|
||||||
echo 'This command was already confirmed by -y or --yes option.'
|
|
||||||
echo 'Deactivating maintenance mode and forcing container to stop/ restart...'
|
|
||||||
echo "stopping" > /opt/scripts/.docker_config/.healthcheck
|
|
||||||
pkill -u root
|
|
||||||
echo 'Done.'
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
echo 'Maintenance mode is already turned OFF.'
|
echo 'Maintenance mode is already turned OFF.'
|
||||||
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo 'You are now going to deactivate maintenance mode for this container.'
|
||||||
|
echo 'Depending on the restart policy, your container will be stopped or restarted immediately.'
|
||||||
|
|
||||||
|
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 'Deactivating maintenance mode and forcing container to stop or restart...'
|
||||||
|
echo 'stopping' > "$healthcheck"
|
||||||
|
pkill -u root
|
||||||
|
echo 'Done.'
|
||||||
}
|
}
|
||||||
|
|
||||||
# upgrade js-controller
|
# upgrade js-controller
|
||||||
upgrade() {
|
upgrade_jscontroller() {
|
||||||
echo 'You are now going to upgrade your js-controller.'
|
echo 'You are now going to upgrade your js-controller.'
|
||||||
echo 'As this will change data in /opt/iobroker, make sure you have a backup!'
|
echo 'As this will change data in /opt/iobroker, make sure you have a backup!'
|
||||||
echo 'During the upgrade process the container will automatically switch into maintenance mode and stop ioBroker.'
|
echo 'During the upgrade process, the container will automatically switch into maintenance mode and stop ioBroker.'
|
||||||
echo 'Depending of the restart policy, you container will be stoped/ restarted automatically after the upgrade.'
|
echo 'Depending on the restart policy, your container will be stopped or restarted automatically after the upgrade.'
|
||||||
read -p 'Do you want to continue [yes/no]? ' A
|
|
||||||
if [ "$A" == "y" ] || [ "$A" == "Y" ] || [ "$A" == "yes" ]
|
if [[ "$autoconfirm" != yes ]]; then
|
||||||
then
|
local reply
|
||||||
echo 'Activating maintenance mode...'
|
|
||||||
echo "maintenance" > /opt/scripts/.docker_config/.healthcheck
|
read -rp 'Do you want to continue [yes/no]? ' reply
|
||||||
sleep 1
|
if [[ "$reply" == y || "$reply" == Y || "$reply" == yes ]]; then
|
||||||
echo 'Done.'
|
: # continue
|
||||||
echo 'Stopping ioBroker...'
|
else
|
||||||
pkill -u iobroker
|
return 1
|
||||||
sleep 1
|
fi
|
||||||
echo 'Done.'
|
else
|
||||||
|
echo 'This command was already confirmed by the -y or --yes option.'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! maintenance_enabled > /dev/null; then
|
||||||
|
autoconfirm=yes
|
||||||
|
enable_maintenance
|
||||||
|
fi
|
||||||
|
|
||||||
echo 'Upgrading js-controller...'
|
echo 'Upgrading js-controller...'
|
||||||
iobroker update
|
iobroker update
|
||||||
|
sleep 1
|
||||||
iobroker upgrade self
|
iobroker upgrade self
|
||||||
sleep 1
|
sleep 1
|
||||||
echo 'Done.'
|
echo 'Done.'
|
||||||
echo 'Container will be stopped/ restarted in 5 seconds...'
|
|
||||||
|
echo 'Container will be stopped or restarted in 5 seconds...'
|
||||||
sleep 5
|
sleep 5
|
||||||
echo "stopping" > /opt/scripts/.docker_config/.healthcheck
|
echo 'stopping' > "$healthcheck"
|
||||||
pkill -u root
|
pkill -u root
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
########################################
|
# stop iobroker and wait until all processes stopped or pkill_timeout is reached
|
||||||
##### parsing commands and options #####
|
stop_iob() {
|
||||||
########################################
|
local status timeout
|
||||||
|
|
||||||
# reading all arguments and putting them in reverse
|
timeout="$(date --date="now + $pkill_timeout sec" +%s)"
|
||||||
reverse=
|
pkill -u iobroker -f iobroker.js-controller
|
||||||
for i in "$@"; do
|
status=$?
|
||||||
reverse="$i $reverse"
|
if (( status >= 2 )); then # syntax error or fatal error
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( status == 1 )); then # no processes matched
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pgrep exits with status 1 when there are no matches
|
||||||
|
while pgrep -u iobroker > /dev/null; (( $? != 1 )); do
|
||||||
|
if (($(date +%s) > timeout)); then
|
||||||
|
echo -e '\nTimeout reached. Killing remaining processes...'
|
||||||
|
pgrep --list-full -u iobroker
|
||||||
|
pkill --signal SIGKILL -u iobroker
|
||||||
|
echo 'Done.'
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n '.'
|
||||||
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
# checking the arguments
|
echo -e '\nDone.'
|
||||||
for i in $reverse; do
|
}
|
||||||
case $i in
|
|
||||||
|
# parsing commands and options
|
||||||
|
|
||||||
|
# default command to run unless another was given
|
||||||
|
run=(display_help)
|
||||||
|
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $arg in
|
||||||
help|-h|--help)
|
help|-h|--help)
|
||||||
display_help # calling function to display help text
|
run=(display_help)
|
||||||
break
|
|
||||||
;;
|
;;
|
||||||
status)
|
status)
|
||||||
check_status # calling function to check maintenance mode status
|
run=(maintenance_status)
|
||||||
break
|
|
||||||
;;
|
;;
|
||||||
on)
|
on)
|
||||||
switch_on # calling function to switch maintenance mode on
|
run=(enable_maintenance)
|
||||||
break
|
|
||||||
;;
|
;;
|
||||||
off)
|
off)
|
||||||
switch_off # calling function to switch maintenance mode off
|
run=(disable_maintenance)
|
||||||
break
|
|
||||||
;;
|
;;
|
||||||
upgrade)
|
upgrade)
|
||||||
upgrade # calling function to upgrade js-controller
|
run=(upgrade_jscontroller)
|
||||||
break
|
|
||||||
;;
|
;;
|
||||||
-y|--yes)
|
-y|--yes)
|
||||||
autoconfirm=yes # setting autoconfrm option to "yes"
|
autoconfirm=yes
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
-kbn|--killbyname)
|
-kbn|--killbyname)
|
||||||
killbyname=yes # setting killbyname option to "yes"
|
killbyname=yes
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
-a=*|--argument=*) # dummy exaple for parsing option with value
|
--)
|
||||||
ARGUMENT="${i#*=}"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--) # End of all options.
|
|
||||||
shift
|
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
-?*|?*)
|
*)
|
||||||
echo 'WARN: Unknown parameter. Please try again or see help (-h|--help).'
|
>&2 echo "Unknown parameter: $arg"
|
||||||
break
|
>&2 echo 'Please try again or see help (help|-h|--help).'
|
||||||
;;
|
exit 1
|
||||||
*) # Default case: No more options, so break out of the loop.
|
|
||||||
break
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
exit 0
|
"${run[@]}"
|
||||||
23
debian/scripts/setup_avahi.sh
vendored
23
debian/scripts/setup_avahi.sh
vendored
@@ -1,19 +1,20 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
echo "Checking avahi-daemon installation state..."
|
|
||||||
|
|
||||||
if [ -e /usr/sbin/avahi-daemon ] && [ -e /var/run/dbus ]
|
if [ -e /usr/sbin/avahi-daemon ] && [ -e /var/run/dbus ]
|
||||||
then
|
then
|
||||||
echo "Avahi is already installed..."
|
echo '[setup_avahi.sh] Avahi is already installed. Nothing to do here.'
|
||||||
else
|
else
|
||||||
echo "Avahi-daemon is NOT installed. Going to install it now..."
|
echo -n '[setup_avahi.sh] Avahi-daemon is NOT installed. Going to install it now... '
|
||||||
apt-get update > /opt/scripts/avahi_startup.log 2>&1
|
apt-get update > /opt/scripts/avahi_startup.log 2>&1
|
||||||
apt-get install -y libavahi-compat-libdnssd-dev avahi-daemon >> /opt/scripts/avahi_startup.log 2>&1
|
apt-get install -y libavahi-compat-libdnssd-dev avahi-daemon >> /opt/scripts/avahi_startup.log 2>&1
|
||||||
rm -rf /var/lib/apt/lists/* >> /opt/scripts/avahi_startup.log 2>&1
|
rm -rf /var/lib/apt/lists/* >> /opt/scripts/avahi_startup.log 2>&1
|
||||||
echo "Configuring avahi-daemon..."
|
echo 'Done.'
|
||||||
|
echo -n '[setup_avahi.sh] Configuring avahi-daemon... '
|
||||||
sed -i '/^rlimit-nproc/s/^\(.*\)/#\1/g' /etc/avahi/avahi-daemon.conf
|
sed -i '/^rlimit-nproc/s/^\(.*\)/#\1/g' /etc/avahi/avahi-daemon.conf
|
||||||
echo "Configuring dbus..."
|
echo 'Done.'
|
||||||
|
echo -n '[setup_avahi.sh] Configuring dbus... '
|
||||||
mkdir /var/run/dbus/
|
mkdir /var/run/dbus/
|
||||||
|
echo 'Done.'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f /var/run/dbus/pid ];
|
if [ -f /var/run/dbus/pid ];
|
||||||
@@ -26,10 +27,12 @@ then
|
|||||||
rm -f /var/run/avahi-daemon//pid
|
rm -f /var/run/avahi-daemon//pid
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Starting dbus..."
|
echo -n '[setup_avahi.sh] Starting dbus... '
|
||||||
dbus-daemon --system
|
dbus-daemon --system >> /opt/scripts/avahi_startup.log 2>&1
|
||||||
|
echo 'Done.'
|
||||||
|
|
||||||
echo "Starting avahi-daemon..."
|
echo -n '[setup_avahi.sh] Starting avahi-daemon... '
|
||||||
/etc/init.d/avahi-daemon start
|
/etc/init.d/avahi-daemon start >> /opt/scripts/avahi_startup.log 2>&1
|
||||||
|
echo 'Done.'
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
8
debian/scripts/setup_zwave.sh
vendored
8
debian/scripts/setup_zwave.sh
vendored
@@ -1,19 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
echo "Checking openzwave installation state..."
|
|
||||||
|
|
||||||
if [ -e /usr/local/lib64 ]
|
if [ -e /usr/local/lib64 ]
|
||||||
then
|
then
|
||||||
echo "Openzwave is already installed..."
|
echo '[setup_zwave.sh] Openzwave is already installed. Nothing to do here.'
|
||||||
else
|
else
|
||||||
echo "Openzwave is NOT installed. Going to install it now..."
|
echo -n '[setup_zwave.sh] Openzwave is NOT installed. Going to install it now... '
|
||||||
cd /opt
|
cd /opt
|
||||||
curl -s -L -O http://old.openzwave.com/downloads/openzwave-1.6.1007.tar.gz
|
curl -s -L -O http://old.openzwave.com/downloads/openzwave-1.6.1007.tar.gz
|
||||||
tar -xf openzwave-1.6.1007.tar.gz && rm openzwave-1.6.1007.tar.gz
|
tar -xf openzwave-1.6.1007.tar.gz && rm openzwave-1.6.1007.tar.gz
|
||||||
cd openzwave-1.6.1007 && make > /dev/null 2>&1 && make install > /dev/null 2>&1
|
cd openzwave-1.6.1007 && make > /dev/null 2>&1 && make install > /dev/null 2>&1
|
||||||
ldconfig /usr/local/lib64
|
ldconfig /usr/local/lib64
|
||||||
cd /opt/iobroker
|
cd /opt/iobroker
|
||||||
# echo "Openzwave is now installed..."
|
echo 'Done.'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<img src="https://github.com/buanet/ioBroker.docker/raw/main/src/img/iobroker_logo.png" width="600" title="ioBroker Logo">
|
<img src="https://github.com/buanet/ioBroker.docker/raw/main/docs/img/iobroker_logo.png" width="600" title="ioBroker Logo">
|
||||||
|
|
||||||
[](https://hub.docker.com/repository/docker/buanet/iobroker)
|
[](https://hub.docker.com/r/buanet/iobroker)
|
||||||
[](https://hub.docker.com/repository/docker/buanet/iobroker)
|
[](https://hub.docker.com/r/buanet/iobroker)
|
||||||
[](https://hub.docker.com/repository/docker/buanet/iobroker)<br>
|
[](https://hub.docker.com/r/buanet/iobroker)<br>
|
||||||
[)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian-image-main.yml)
|
[)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian-image-main.yml)
|
||||||
[](https://github.com/buanet/ioBroker.docker/releases)
|
[](https://github.com/buanet/ioBroker.docker/releases)
|
||||||
[](https://github.com/buanet/ioBroker.docker/issues)<br>
|
[](https://github.com/buanet/ioBroker.docker/issues)<br>
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
[](https://github.com/buanet/ioBroker.docker/blob/master/LICENSE.md)
|
[](https://github.com/buanet/ioBroker.docker/blob/master/LICENSE.md)
|
||||||
[](https://paypal.me/buanet)
|
[](https://paypal.me/buanet)
|
||||||
|
|
||||||
# Important Note
|
# Important note
|
||||||
|
|
||||||
New major image versions (e.g. v4, v5, v6) always come with a new major version of node! This might lead to problems when you update your ioBroker container by simply recreating it from the new major version image! To avoid having trouble with recompiling adapters, it is recommended to upgrade your container manually with backup and restore procedure. For more details please see the maintenance part of the new [ioBroker Docker image docs](https://docs.buanet.de/iobroker-docker-image/docs/#maintenance).
|
New major image versions (e.g. v4, v5, v6) always come with a new major version of node! This might lead to problems when you update your ioBroker container by simply recreating it from the new major version image! To avoid having trouble with recompiling adapters, it is recommended to upgrade your container manually with backup and restore procedure. For more details please see the maintenance part of the new [ioBroker Docker image docs](https://docs.buanet.de/iobroker-docker-image/docs/#maintenance).
|
||||||
|
|
||||||
@@ -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.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), [`latest-v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile)
|
||||||
|
|
||||||
### Node 14 versions
|
### Node 14 versions
|
||||||
* [`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), [`latest-v6`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v6.0.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)
|
||||||
|
|
||||||
### Node 12 versions
|
### Node 12 versions
|
||||||
* [`v5.2.0`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`latest-v5`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile)
|
* [`v5.2.0`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`latest-v5`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile)
|
||||||
@@ -93,10 +97,10 @@ You could use environment variables to auto configure your ioBroker container on
|
|||||||
* `IOB_MULTIHOST`(optional) Sets ioBroker "master" or "slave" for multihost support (needs additional config for objectsdb and statesdb!)
|
* `IOB_MULTIHOST`(optional) Sets ioBroker "master" or "slave" for multihost support (needs additional config for objectsdb and statesdb!)
|
||||||
* `IOB_OBJECTSDB_HOST` (optional, default: 127.0.0.1) Sets host for ioBroker objects db
|
* `IOB_OBJECTSDB_HOST` (optional, default: 127.0.0.1) Sets host for ioBroker objects db
|
||||||
* `IOB_OBJECTSDB_PORT` (optional, default: 9001) Sets port for ioBroker objects db
|
* `IOB_OBJECTSDB_PORT` (optional, default: 9001) Sets port for ioBroker objects db
|
||||||
* `IOB_OBJECTSDB_TYPE` (optional, default: file) Sets type of ioBroker objects db, cloud be "file" or "redis" ([not officially supported](https://github.com/ioBroker/ioBroker#databases)).
|
* `IOB_OBJECTSDB_TYPE` (optional, default: jsonl) Sets type of ioBroker objects db, could be "jsonl", "file" (deprecated) or "redis" ([not officially supported](https://github.com/ioBroker/ioBroker#databases)).
|
||||||
* `IOB_STATESDB_HOST` (optional, default: 127.0.0.1) Sets host for ioBroker states db
|
* `IOB_STATESDB_HOST` (optional, default: 127.0.0.1) Sets host for ioBroker states db
|
||||||
* `IOB_STATESDB_PORT` (optional, default: 9000) Sets port for ioBroker states db
|
* `IOB_STATESDB_PORT` (optional, default: 9000) Sets port for ioBroker states db
|
||||||
* `IOB_STATESDB_TYPE` (optional, default: file) Sets type of ioBroker states db, could be "file" or "redis"
|
* `IOB_STATESDB_TYPE` (optional, default: jsonl) Sets type of ioBroker states db, could be "jsonl", "file" (deprecated) or "redis"
|
||||||
|
|
||||||
### Activate special features:
|
### Activate special features:
|
||||||
|
|
||||||
@@ -108,9 +112,10 @@ You could use environment variables to auto configure your ioBroker container on
|
|||||||
* `LANG` (optional, default: de_DE.UTF‑8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8
|
* `LANG` (optional, default: de_DE.UTF‑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` (optional, 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` (optional, 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
|
||||||
* `TZ` (optional, default: Europe/Berlin) Specifies the time zone
|
* `TZ` (optional, default: Europe/Berlin) Specifies the time zone
|
||||||
* `USBDEVICES` (optional) Sets relevant permissions on mounted devices like "/dev/ttyACM0". For more than one device separate with ";".
|
* `USBDEVICES` (optional) Sets relevant permissions on mounted devices like "/dev/ttyACM0". For more than one device separate with ";".
|
||||||
|
|
||||||
@@ -1,15 +1,17 @@
|
|||||||
<img src="https://github.com/buanet/ioBroker.docker/raw/main/src/img/iobroker_logo.png" width="600" title="ioBroker Logo">
|
###### [iobroker/iobroker](https://hub.docker.com/r/iobroker/iobroker) is an alias for [buanet/iobroker](https://hub.docker.com/r/buanet/iobroker)
|
||||||
|
|
||||||
[](https://hub.docker.com/repository/docker/buanet/iobroker)
|
<img src="https://github.com/buanet/ioBroker.docker/raw/main/docs/img/iobroker_logo.png" width="600" title="ioBroker Logo">
|
||||||
[](https://hub.docker.com/repository/docker/buanet/iobroker)
|
|
||||||
[](https://hub.docker.com/repository/docker/buanet/iobroker)<br>
|
[](https://hub.docker.com/r/buanet/iobroker)
|
||||||
|
[](https://hub.docker.com/r/buanet/iobroker)
|
||||||
|
[](https://hub.docker.com/r/buanet/iobroker)<br>
|
||||||
[)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian-image-main.yml)
|
[)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian-image-main.yml)
|
||||||
[](https://github.com/buanet/ioBroker.docker/releases)
|
[](https://github.com/buanet/ioBroker.docker/releases)
|
||||||
[](https://github.com/buanet/ioBroker.docker/issues)<br>
|
[](https://github.com/buanet/ioBroker.docker/issues)<br>
|
||||||
[](https://github.com/buanet/ioBroker.docker)
|
[](https://github.com/buanet/ioBroker.docker)
|
||||||
[](https://github.com/buanet/ioBroker.docker/blob/master/LICENSE.md)
|
[](https://github.com/buanet/ioBroker.docker/blob/master/LICENSE.md)
|
||||||
|
|
||||||
# Important Note
|
# Important note
|
||||||
|
|
||||||
New major image versions (e.g. v4, v5, v6) always come with a new major version of node! This might lead to problems when you update your ioBroker container by simply recreating it from the new major version image! To avoid having trouble with recompiling adapters, it is recommended to upgrade your container manually with backup and restore procedure. For more details please see the maintenance part of the new [ioBroker Docker image docs](https://docs.buanet.de/iobroker-docker-image/docs/#maintenance).
|
New major image versions (e.g. v4, v5, v6) always come with a new major version of node! This might lead to problems when you update your ioBroker container by simply recreating it from the new major version image! To avoid having trouble with recompiling adapters, it is recommended to upgrade your container manually with backup and restore procedure. For more details please see the maintenance part of the new [ioBroker Docker image docs](https://docs.buanet.de/iobroker-docker-image/docs/#maintenance).
|
||||||
|
|
||||||
@@ -25,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.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), [`latest-v7`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v7.0.0/debian/node16/Dockerfile)
|
||||||
|
|
||||||
### Node 14 versions
|
### Node 14 versions
|
||||||
* [`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), [`latest-v6`](https://github.com/buanet/ioBroker.docker/blob/v6.0.0/debian/node14/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v6.0.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)
|
||||||
|
|
||||||
### Node 12 versions
|
### Node 12 versions
|
||||||
* [`v5.2.0`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`latest-v5`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile)
|
* [`v5.2.0`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-amd64`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-arm32v7`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`v5.2.0-arm64v8`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile), [`latest-v5`](https://github.com/buanet/ioBroker.docker/blob/v5.2.0/debian/node12/Dockerfile)
|
||||||
@@ -92,10 +98,10 @@ You could use environment variables to auto configure your ioBroker container on
|
|||||||
* `IOB_MULTIHOST`(optional) Sets ioBroker "master" or "slave" for multihost support (needs additional config for objectsdb and statesdb!)
|
* `IOB_MULTIHOST`(optional) Sets ioBroker "master" or "slave" for multihost support (needs additional config for objectsdb and statesdb!)
|
||||||
* `IOB_OBJECTSDB_HOST` (optional, default: 127.0.0.1) Sets host for ioBroker objects db
|
* `IOB_OBJECTSDB_HOST` (optional, default: 127.0.0.1) Sets host for ioBroker objects db
|
||||||
* `IOB_OBJECTSDB_PORT` (optional, default: 9001) Sets port for ioBroker objects db
|
* `IOB_OBJECTSDB_PORT` (optional, default: 9001) Sets port for ioBroker objects db
|
||||||
* `IOB_OBJECTSDB_TYPE` (optional, default: file) Sets type of ioBroker objects db, cloud be "file" or "redis" ([not officially supported](https://github.com/ioBroker/ioBroker#databases)).
|
* `IOB_OBJECTSDB_TYPE` (optional, default: jsonl) Sets type of ioBroker objects db, could be "jsonl", "file" (deprecated) or "redis" ([not officially supported](https://github.com/ioBroker/ioBroker#databases)).
|
||||||
* `IOB_STATESDB_HOST` (optional, default: 127.0.0.1) Sets host for ioBroker states db
|
* `IOB_STATESDB_HOST` (optional, default: 127.0.0.1) Sets host for ioBroker states db
|
||||||
* `IOB_STATESDB_PORT` (optional, default: 9000) Sets port for ioBroker states db
|
* `IOB_STATESDB_PORT` (optional, default: 9000) Sets port for ioBroker states db
|
||||||
* `IOB_STATESDB_TYPE` (optional, default: file) Sets type of ioBroker states db, could be "file" or "redis"
|
* `IOB_STATESDB_TYPE` (optional, default: jsonl) Sets type of ioBroker states db, could be "jsonl", "file" (deprecated) or "redis"
|
||||||
|
|
||||||
### Activate special features:
|
### Activate special features:
|
||||||
|
|
||||||
@@ -107,9 +113,10 @@ You could use environment variables to auto configure your ioBroker container on
|
|||||||
* `LANG` (optional, default: de_DE.UTF‑8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8
|
* `LANG` (optional, default: de_DE.UTF‑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` (optional, 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` (optional, 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
|
||||||
* `TZ` (optional, default: Europe/Berlin) Specifies the time zone
|
* `TZ` (optional, default: Europe/Berlin) Specifies the time zone
|
||||||
* `USBDEVICES` (optional) Sets relevant permissions on mounted devices like "/dev/ttyACM0". For more than one device separate with ";".
|
* `USBDEVICES` (optional) Sets relevant permissions on mounted devices like "/dev/ttyACM0". For more than one device separate with ";".
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Reference in New Issue
Block a user