Compare commits

..

95 Commits

Author SHA1 Message Date
buanet
c0ea8c2808 first test of gui for maintenance script 2023-12-14 17:17:49 +01:00
buanet
d1bbbfff58 add js-controller version check to restore 2023-12-14 17:16:19 +01:00
André Germann
11e30fa638 Merge pull request #409 from buanet/dependabot/github_actions/beta/docker/build-push-action-5.1.0
Bump docker/build-push-action from 5.0.0 to 5.1.0
2023-11-24 12:44:47 +01:00
André Germann
e5956c6faf Merge pull request #410 from buanet/dependabot/github_actions/beta/actions/github-script-7.0.1
Bump actions/github-script from 6.4.1 to 7.0.1
2023-11-24 12:44:31 +01:00
dependabot[bot]
feb02a7a33 Bump actions/github-script from 6.4.1 to 7.0.1
Bumps [actions/github-script](https://github.com/actions/github-script) from 6.4.1 to 7.0.1.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v6.4.1...v7.0.1)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-24 10:00:42 +00:00
dependabot[bot]
3f3cfdb077 Bump docker/build-push-action from 5.0.0 to 5.1.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5.0.0...v5.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-24 10:00:35 +00:00
André Germann
3a8e38b3ee Merge pull request #407 from buanet/dependabot/github_actions/beta/actions/checkout-4.1.1
Bump actions/checkout from 4.1.0 to 4.1.1
2023-11-23 15:59:20 +01:00
dependabot[bot]
fa9e09ed1b Bump actions/checkout from 4.1.0 to 4.1.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-23 14:57:28 +00:00
buanet
5c97b2a041 release v9.1.0-beta.3 2023-11-23 15:53:08 +01:00
buanet
c6b0d307b5 prepare new beta 2023-11-17 22:54:04 +01:00
buanet
59ffff608a change target branch for dependabot 2023-11-17 18:40:08 +01:00
buanet
6c34c0a081 add --force to restore in maintenance script 2023-11-14 20:45:10 +01:00
buanet
92821ab262 improve shebang in scripts 2023-11-14 20:29:17 +01:00
buanet
2eb7f4e71f fix typo 2023-11-06 18:14:25 +01:00
buanet
b626063647 enhance logging/ fix typos 2023-11-06 16:57:56 +01:00
buanet
cef5ed1ef5 fix typos in logging 2023-11-06 16:53:34 +01:00
buanet
68b285d55f update comment 2023-11-06 16:01:12 +01:00
buanet
e1910d6f3b add logging for new env 2023-11-06 15:55:15 +01:00
buanet
bc483cc5f0 small enhancements for beta testing 2023-11-06 15:49:22 +01:00
buanet
bf87667fc0 improve maintenance command by symlinking 2023-11-03 20:37:49 +01:00
buanet
375d192c7c fix restore/ adding backup file selection 2023-11-03 18:02:10 +01:00
André Germann
4738e035b5 Merge pull request #392 from buanet/feature-error-handling-user-scripts
add error handling for user scripts
2023-10-17 21:59:34 +02:00
buanet
814cfae657 add error handling for user scripts 2023-10-11 09:20:33 +02:00
buanet
10de4b1a55 Revert "add error handling for user scripts"
This reverts commit 760a36f72a.
2023-10-11 00:18:38 +02:00
buanet
760a36f72a add error handling for user scripts 2023-10-11 00:08:14 +02:00
buanet
55c5b44537 fix calling iob in iobroker_startup.sh 2023-10-10 22:58:03 +02:00
buanet
317264f849 update changelog 2023-10-10 22:41:27 +02:00
buanet
4614b8c41a fix issue with apt repo failing 2023-10-10 20:49:48 +02:00
buanet
d4469b80d5 change version 2023-10-10 20:06:51 +02:00
buanet
24d5f3c9ed set push to true for dev-node20 2023-10-10 19:47:37 +02:00
buanet
f01167d513 add silent cleanup to setup_avahi.sh 2023-10-10 19:01:12 +02:00
André Germann
f27a29a325 Merge pull request #385 from z1r0-/avahi-startup-fix-debian-12
updated start command for avahi-daemon to work with Debian 12 (fixes …
2023-10-10 18:42:58 +02:00
André Germann
a24628e306 Merge pull request #386 from buanet/main
rebase by merge
2023-10-10 18:39:45 +02:00
Alexander Sajzew
3553ce3a65 start without daemonize and put it into background so we can redirect logs 2023-10-10 18:37:24 +02:00
André Germann
75f6496ffe Merge pull request #383 from buanet/dependabot/github_actions/main/actions/checkout-4.1.0
Bump actions/checkout from 4.0.0 to 4.1.0
2023-10-10 18:06:13 +02:00
Alexander Sajzew
f7de2fbad2 updated start command for avahi-daemon to work with Debian 12 (fixes #384) 2023-10-10 17:24:01 +02:00
dependabot[bot]
b56d2fad26 Bump actions/checkout from 4.0.0 to 4.1.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v4.1.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 09:42:52 +00:00
buanet
51306ed80d aktivate push 2023-10-09 10:18:05 +02:00
buanet
5d382d082b fix version in log and dockerfile 2023-10-09 10:11:21 +02:00
buanet
6ec036a577 fix typo 2023-10-09 08:47:52 +02:00
buanet
4d86b980f9 update readme 2023-10-09 08:42:44 +02:00
buanet
582d604b8b update docker hub readme 2023-10-09 08:30:20 +02:00
buanet
483139b417 update workflow badge 2023-10-09 08:26:26 +02:00
André Germann
aa86db5724 Merge pull request #382 from buanet/main
update beta with changes from main
2023-10-08 23:21:39 +02:00
buanet
7a77f18fb8 delete old workflows 2023-10-08 23:20:19 +02:00
buanet
6dd6cb5c20 Merge branch 'beta' 2023-10-08 23:16:32 +02:00
buanet
77831a2edd prepare v9 release 2023-10-08 22:37:46 +02:00
buanet
88979d48b1 prepare ci for latest release 2023-10-03 22:11:19 +02:00
buanet
e305053c26 clarify warning message 2023-10-03 21:42:24 +02:00
André Germann
3e1c1fa103 Merge pull request #373 from buanet/dependabot/github_actions/main/docker/login-action-3.0.0
Bump docker/login-action from 2.2.0 to 3.0.0
2023-09-28 22:23:24 +02:00
André Germann
c6781e19e6 Merge pull request #374 from buanet/dependabot/github_actions/main/docker/setup-qemu-action-3.0.0
Bump docker/setup-qemu-action from 2.2.0 to 3.0.0
2023-09-28 22:23:14 +02:00
André Germann
9eacde484a Merge pull request #375 from buanet/dependabot/github_actions/main/docker/setup-buildx-action-3.0.0
Bump docker/setup-buildx-action from 2.10.0 to 3.0.0
2023-09-28 22:23:04 +02:00
André Germann
9ba748467e Merge pull request #376 from buanet/dependabot/github_actions/main/docker/build-push-action-5.0.0
Bump docker/build-push-action from 4.1.1 to 5.0.0
2023-09-28 22:22:38 +02:00
André Germann
9da9e91453 Merge pull request #379 from buanet/dependabot/github_actions/main/actions/checkout-4.1.0
Bump actions/checkout from 3.6.0 to 4.1.0
2023-09-28 22:22:28 +02:00
André Germann
b80e5cc26b Merge pull request #380 from dontobi/beta
BaseImage Check
2023-09-28 22:21:57 +02:00
buanet
3b3dc39bc8 prepare v9.0.0-beta.2 2023-09-28 21:48:47 +02:00
buanet
117f57aa3e fix typos 2023-09-28 20:41:36 +02:00
buanet
49f9f9ad8b small fixes in beta 2023-09-28 16:03:02 +02:00
buanet
36ac44fd5a update discord link 2023-09-26 22:16:17 +02:00
Tobias 'dontobi' Schug
3e9670b197 Merge branch 'buanet:beta' into beta 2023-09-26 15:44:15 +02:00
buanet
f3f5df4819 update license 2023-09-25 22:24:35 +02:00
dontobi
6bbdd0572a Add BaseImage Check 2023-09-24 13:21:22 +02:00
dependabot[bot]
0c27976158 Bump docker/build-push-action from 4.1.1 to 5.0.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.1.1 to 5.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4.1.1...v5.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 22:53:38 +00:00
dependabot[bot]
8ed0078dea Bump actions/checkout from 3.6.0 to 4.1.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.6.0 to 4.1.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3.6.0...v4.1.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 22:53:38 +00:00
dependabot[bot]
a374fee273 Bump docker/setup-buildx-action from 2.10.0 to 3.0.0
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.10.0 to 3.0.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2.10.0...v3.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 22:53:37 +00:00
dependabot[bot]
b0493be646 Bump docker/login-action from 2.2.0 to 3.0.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 2.2.0 to 3.0.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2.2.0...v3.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 22:53:35 +00:00
dependabot[bot]
c614aeb863 Bump docker/setup-qemu-action from 2.2.0 to 3.0.0
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2.2.0 to 3.0.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v2.2.0...v3.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 22:53:34 +00:00
buanet
3117d590b6 add ci workflow 2023-09-24 00:52:50 +02:00
buanet
45cae5a781 new ioBroker versions 2023-09-21 23:45:17 +00:00
André Germann
b1b779ac5d Update feature_request.yaml 2023-09-20 22:03:31 +02:00
André Germann
63a3491be4 Update config.yml 2023-09-20 21:59:42 +02:00
André Germann
f2aa915f71 Update problem_report.yaml 2023-09-20 21:58:20 +02:00
André Germann
2179df0893 Update feature_request.yaml 2023-09-20 21:51:48 +02:00
André Germann
e5bb412719 Update config.yml 2023-09-20 21:42:49 +02:00
André Germann
d464910e62 Update config.yml 2023-09-20 21:39:06 +02:00
buanet
d59d6f5a77 new ioBroker versions 2023-09-18 23:45:04 +00:00
buanet
a8fc42f93b new ioBroker versions 2023-09-14 23:45:11 +00:00
André Germann
ca11192265 Create build-debian12-dev.yml 2023-09-03 22:27:11 +02:00
André Germann
2907a44f46 Merge pull request #367 from buanet/dependabot/github_actions/main/actions/checkout-3.6.0
Bump actions/checkout from 3.5.3 to 3.6.0
2023-09-03 20:29:22 +02:00
André Germann
4cb4aa8cce Merge pull request #368 from buanet/dependabot/github_actions/main/docker/setup-buildx-action-2.10.0
Bump docker/setup-buildx-action from 2.9.1 to 2.10.0
2023-09-03 20:29:00 +02:00
dependabot[bot]
989fe8b03b Bump docker/setup-buildx-action from 2.9.1 to 2.10.0
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.9.1 to 2.10.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2.9.1...v2.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-28 09:42:22 +00:00
dependabot[bot]
9b384a38b5 Bump actions/checkout from 3.5.3 to 3.6.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.3 to 3.6.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3.5.3...v3.6.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-25 09:11:48 +00:00
buanet
6832057596 new ioBroker versions 2023-08-19 23:45:21 +00:00
André Germann
bbf834c218 Update README_docker_hub_iobroker.md 2023-08-17 17:48:47 +02:00
André Germann
24b76d4af7 Update README_docker_hub_buanet.md 2023-08-17 17:48:06 +02:00
André Germann
9aab0af6bd Update README.md 2023-08-17 17:46:54 +02:00
André Germann
048603b685 Merge pull request #365 from buanet/beta
beta to main
2023-08-15 22:55:51 +02:00
buanet
47bccc997a new ioBroker versions 2023-08-09 23:45:25 +00:00
André Germann
788ef45134 Update config.yml 2023-07-29 00:10:42 +02:00
André Germann
62d4fcd0c1 Update config.yml 2023-07-29 00:06:03 +02:00
André Germann
a59977101b Update config.yml 2023-07-29 00:02:27 +02:00
André Germann
12ba15b318 Update problem_report.yaml 2023-07-29 00:00:03 +02:00
André Germann
3940ea9203 Update feature_request.yaml 2023-07-28 23:59:46 +02:00
André Germann
56134b300e Update config.yml 2023-07-28 23:56:34 +02:00
buanet
ccb7d636c0 new ioBroker versions 2023-07-19 23:45:09 +00:00
30 changed files with 557 additions and 357 deletions

View File

@@ -1 +1 @@
v9.0.0-beta.1
v9.1.0-beta.3

View File

@@ -1,11 +1,14 @@
blank_issues_enabled: true
blank_issues_enabled: false
contact_links:
- name: ioBroker Docker image discussions
- name: Did you read the docs? / Hast du die Doku gelesen?
url: https://docs.buanet.de/iobroker-docker-image/docs/
about: Please make sure you read the docs before submitting any issues. / Bitte stelle sicher, dass du die Dokumentation gelesen hast bevor du einen Fehler meldest.
- name: Questions? / Fragen?
url: https://github.com/buanet/ioBroker.docker/discussions
# about: You can ask your questions here.
about: Ask your questions here! / Stell deine Fragen hier!
- name: ioBroker Community Forum
url: https://forum.iobroker.net/
- name: ioBroker Discord channel
url: https://discord.gg/Ne3y6fUac3
- name: ioBroker Facebook group
url: https://www.facebook.com/groups/440499112958264/
about: Need support? Check out our ioBroker Community Forum. / Du benötigst Unterstützung? Wirf einen Blick in unser ioBroker Community Forum.
- name: ioBroker Discord Channel
url: https://discord.gg/5jGWNKnpZ8
about: Need support? Check out our ioBroker Discord channel. / Du benötigst Unterstützung? Wirf einen Blick in unseren ioBroker Discord Channel.

View File

@@ -1,17 +1,17 @@
name: Feature Request
description: I want to request a new feature.
name: Feature Request / Verbesserungsvorschlag
description: Request a new feature here. / Schlage eine Verbesserung vor.
title: "[Feature Request]: "
labels: "enhancement"
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to give us your feedback!
Thanks for taking the time to give us your feedback! / Vielen Dank, dass du die Zeit nimmst uns Feedback zu geben!
- type: textarea
id: description
attributes:
label: Description
description: Please describe your request.
placeholder: Waht are your ideas?
label: Description / Beschreibung
description: Please describe your request. / Bitte beschreibe deine Anforderung.
placeholder: What are your ideas? / Was sind deine Ideen?
validations:
required: true

View File

@@ -1,32 +1,32 @@
name: Problem Report
description: I want to report a problem.
name: Problem Report / Fehlermeldung
description: Report a problem here. / Melde Fehler hier.
title: "[Problem]: "
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
Thanks for taking the time to fill out this bug report! / Vielen Dank, dass du dir die Zeit nimmst den Fehlerreport auszufüllen!
- type: textarea
id: description
attributes:
label: Description
description: Please describe your problem.
placeholder: What happened? What did you expect?
label: Description / Beschreibung
description: Please describe your problem. / Bitte beschreibe dein Problem.
placeholder: What happened? What did you expect? / Was ist passiert? Was hast du erwartet?
validations:
required: true
- type: input
id: version
attributes:
label: Image version
description: Which image version do you use?
description: Which image version do you use? / Welche Version des Images verwendest du?
placeholder: v1.2.3
validations:
required: true
- type: textarea
id: logs
attributes:
label: Docker logs
description: Please provide the full Docker log output from your Docker container startup.
label: Docker logs / Docker Protokoll
description: Please provide the full Docker log output from your Docker container startup. / Bitte stelle das komplette Docker Protokoll vom Start des Containers zur Verfügung.
render: shell
validations:
required: true

View File

@@ -5,4 +5,4 @@ updates:
directory: "/"
schedule:
interval: "daily"
target-branch: "main"
target-branch: "beta"

View File

@@ -1 +1 @@
6.3.5
6.10.1

View File

@@ -1 +1 @@
2.6.23
2.8.1

View File

@@ -1 +1 @@
4.0.24
5.0.12

View File

@@ -1 +1 @@
18.16.1
18.17.1

View File

@@ -1,68 +0,0 @@
# Github action to build Docker image from main branch for iobroker/iobroker (tag: latest)
name: Build debian latest (iobroker)
on:
release:
types: [released]
workflow_dispatch:
jobs:
build-latest-image:
runs-on: ubuntu-latest
steps:
- name: Fetching latest release tag
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.5.3
with:
repository: 'buanet/ioBroker.docker'
ref: ${{ env.RELEASE_TAG }}
- name: Fetching version tag and date
id: version
run: |
VERSION="$(cat .VERSION)"
MAJORVERSION="$(cat .VERSION | cut -c 1-2 | sed -r 's#^(.{0})#\1latest-#')"
DATI="$(date --rfc-3339=seconds | sed 's/ /T/')"
echo "This is the Version: $VERSION"
echo "version=$VERSION" >> $GITHUB_ENV
echo "This is the Major Version: $MAJORVERSION"
echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV
echo "This is the Buildnumber/Timestamp: $DATI"
echo "dati=$DATI" >> $GITHUB_ENV
# startup script
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
# amd64
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node18/Dockerfile > ./debian/node18/Dockerfile.tmp
mv -f ./debian/node18/Dockerfile.tmp ./debian/node18/Dockerfile
- name: Set up QEMU
uses: docker/setup-qemu-action@v2.2.0
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2.9.1
- name: Login to DockerHub (iobroker)
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKER_USER_IOB }}
password: ${{ secrets.DOCKER_PASS_IOB }}
- name: Build Docker image
uses: docker/build-push-action@v4.1.1
with:
context: ./debian
file: ./debian/node18/Dockerfile
push: true
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
tags: |
iobroker/iobroker:latest,
iobroker/iobroker:${{ env.majorversion }},
iobroker/iobroker:${{ env.version }}

View File

@@ -1,97 +0,0 @@
# Github action to build Docker image from main branch (tag: latest)
name: Build debian latest (buanet)
on:
release:
types: [released]
workflow_dispatch:
jobs:
build-latest-image:
runs-on: ubuntu-latest
steps:
- name: Fetching latest release tag
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.5.3
with:
repository: 'buanet/ioBroker.docker'
ref: ${{ env.RELEASE_TAG }}
- name: Fetching version tag and date
id: version
run: |
VERSION="$(cat .VERSION)"
MAJORVERSION="$(cat .VERSION | cut -c 1-2 | sed -r 's#^(.{0})#\1latest-#')"
DATI="$(date --rfc-3339=seconds | sed 's/ /T/')"
echo "This is the Version: $VERSION"
echo "version=$VERSION" >> $GITHUB_ENV
echo "This is the Major Version: $MAJORVERSION"
echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV
echo "This is the Buildnumber/Timestamp: $DATI"
echo "dati=$DATI" >> $GITHUB_ENV
# startup script
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian/scripts/iobroker_startup.sh > ./debian/scripts/iobroker_startup.tmp
mv -f ./debian/scripts/iobroker_startup.tmp ./debian/scripts/iobroker_startup.sh
# amd64
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./debian/node18/Dockerfile > ./debian/node18/Dockerfile.tmp
mv -f ./debian/node18/Dockerfile.tmp ./debian/node18/Dockerfile
- name: Set up QEMU
uses: docker/setup-qemu-action@v2.2.0
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2.9.1
- name: Login to DockerHub (buanet)
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ secrets.PACKAGES_USER }}
password: ${{ secrets.PACKAGES_PASS }}
- name: Build Docker image
uses: docker/build-push-action@v4.1.1
with:
context: ./debian
file: ./debian/node18/Dockerfile
#provenance: false
push: true
platforms: linux/amd64,linux/arm/v7,linux/arm64/v8
tags: |
buanet/iobroker:latest,
buanet/iobroker:${{ env.majorversion }},
buanet/iobroker:${{ env.version }},
ghcr.io/buanet/iobroker:latest,
ghcr.io/buanet/iobroker:${{ env.majorversion }},
ghcr.io/buanet/iobroker:${{ env.version }}
- name: Delete untagged images from GitHub packages
uses: actions/github-script@v6
with:
github-token: ${{ secrets.PACKAGES_PASS }}
script: |
const response = await github.request("GET /users/${{ env.OWNER }}/packages/container/${{ env.PACKAGE_NAME }}/versions",
{ per_page: ${{ env.PER_PAGE }}
});
for(version of response.data) {
if (version.metadata.container.tags.length == 0) {
console.log("delete " + version.id)
const deleteResponse = await github.request("DELETE /user/packages/container/${{ env.PACKAGE_NAME }}/versions/" + version.id, { });
console.log("status " + deleteResponse.status)
}
}
env:
OWNER: buanet
PACKAGE_NAME: iobroker
PER_PAGE: 100

View File

@@ -24,7 +24,7 @@ jobs:
run: echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Checkout repo
uses: actions/checkout@v4.0.0
uses: actions/checkout@v4.1.1
with:
repository: 'buanet/ioBroker.docker'
ref: ${{ env.RELEASE_TAG }}
@@ -43,10 +43,10 @@ jobs:
echo "[LOG] Buildnumber/Timestamp: $DATI"
echo "dati=$DATI" >> $GITHUB_ENV
# Set values in iobroker_startup.sh
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${BUILD}/$DATI/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp
mv -f ./debian12/scripts/iobroker_startup.tmp ./debian12/scripts/iobroker_startup.sh
# Set values in Dockerfile
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${DATI}/$DATI/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp
mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile
- name: Set up QEMU
@@ -70,7 +70,7 @@ jobs:
password: ${{ secrets.PACKAGES_PASS }}
- name: Build and push Docker image
uses: docker/build-push-action@v5.0.0
uses: docker/build-push-action@v5.1.0
with:
context: ./debian12
file: ./debian12/Dockerfile
@@ -96,7 +96,7 @@ jobs:
run: echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Checkout repo
uses: actions/checkout@v4.0.0
uses: actions/checkout@v4.1.1
with:
repository: 'buanet/ioBroker.docker'
ref: ${{ env.RELEASE_TAG }}
@@ -115,10 +115,10 @@ jobs:
echo "[LOG] Buildnumber/Timestamp: $DATI"
echo "dati=$DATI" >> $GITHUB_ENV
# Set values in iobroker_startup.sh
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${BUILD}/$DATI/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp
mv -f ./debian12/scripts/iobroker_startup.tmp ./debian12/scripts/iobroker_startup.sh
# Set values in Dockerfile
sed -e "s/\${VERSION}/$VERSION-dev/" -e "s/\${DATI}/$DATI/" -e "s/\${NODE}/${{ vars.EXPERIMENTAL_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" -e "s/\${NODE}/${{ vars.EXPERIMENTAL_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp
mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile
- name: Set up QEMU
@@ -142,7 +142,7 @@ jobs:
password: ${{ secrets.PACKAGES_PASS }}
- name: Build and push Docker image
uses: docker/build-push-action@v5.0.0
uses: docker/build-push-action@v5.1.0
with:
context: ./debian12
file: ./debian12/Dockerfile
@@ -166,7 +166,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Delete images
uses: actions/github-script@v6.4.1
uses: actions/github-script@v7.0.1
with:
github-token: ${{ secrets.PACKAGES_PASS }}
script: |

View File

@@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4.0.0
uses: actions/checkout@v4.1.1
with:
repository: 'buanet/ioBroker.docker'
@@ -64,7 +64,7 @@ jobs:
password: ${{ secrets.PACKAGES_PASS }}
- name: Build and push Docker image
uses: docker/build-push-action@v5.0.0
uses: docker/build-push-action@v5.1.0
with:
context: ./debian12
file: ./debian12/Dockerfile
@@ -85,7 +85,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4.0.0
uses: actions/checkout@v4.1.1
with:
repository: 'buanet/ioBroker.docker'
@@ -130,11 +130,11 @@ jobs:
password: ${{ secrets.PACKAGES_PASS }}
- name: Build and push Docker image
uses: docker/build-push-action@v5.0.0
uses: docker/build-push-action@v5.1.0
with:
context: ./debian12
file: ./debian12/Dockerfile
push: false
push: true
platforms: |
linux/amd64
linux/arm64
@@ -150,7 +150,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Delete images
uses: actions/github-script@v6.4.1
uses: actions/github-script@v7.0.1
with:
github-token: ${{ secrets.PACKAGES_PASS }}
script: |

View File

@@ -0,0 +1,176 @@
# Github action to build Debian12 image (Tag: latest)
name: Build Debian 12 Image (latest)
on:
release:
types: [released]
workflow_dispatch:
jobs:
build-latest-for-buanet:
name: Build latest image for buanet
runs-on: ubuntu-latest
steps:
- name: Fetch latest release tag
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@v4.1.1
with:
repository: 'buanet/ioBroker.docker'
ref: ${{ env.RELEASE_TAG }}
- name: Set job variables
run: |
VERSION="$(cat .VERSION)"
MAJORVERSION="$(cat .VERSION | cut -c 1-2 | sed -r 's#^(.{0})#\1latest-#')"
DATI="$(date --rfc-3339=seconds | sed 's/ /T/')"
# Log output and export as Github environment variable
echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION }}"
echo "[LOG] Image Version: $VERSION"
echo "version=$VERSION" >> $GITHUB_ENV
echo "[LOG] Major Image Version: $MAJORVERSION"
echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV
echo "[LOG] Buildnumber/Timestamp: $DATI"
echo "dati=$DATI" >> $GITHUB_ENV
# Set values in iobroker_startup.sh
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp
mv -f ./debian12/scripts/iobroker_startup.tmp ./debian12/scripts/iobroker_startup.sh
# Set values in Dockerfile
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp
mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.0.0
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3.0.0
- name: Login to DockerHub (buanet)
uses: docker/login-action@v3.0.0
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3.0.0
with:
registry: ghcr.io
username: ${{ secrets.PACKAGES_USER }}
password: ${{ secrets.PACKAGES_PASS }}
- name: Build and push Docker image
uses: docker/build-push-action@v5.1.0
with:
context: ./debian12
file: ./debian12/Dockerfile
push: true
platforms: |
linux/amd64
linux/arm/v7
linux/arm64/v8
tags: |
buanet/iobroker:latest,
buanet/iobroker:${{ env.majorversion }},
buanet/iobroker:${{ env.version }},
ghcr.io/buanet/iobroker:latest,
ghcr.io/buanet/iobroker:${{ env.majorversion }},
ghcr.io/buanet/iobroker:${{ env.version }}
provenance: false
outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Official Docker image for ioBroker smarthome software (https://www.iobroker.net)
build-latest-for-iobroker:
name: Build latest image for iobroker
runs-on: ubuntu-latest
steps:
- name: Fetch latest release tag
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@v4.1.1
with:
repository: 'buanet/ioBroker.docker'
ref: ${{ env.RELEASE_TAG }}
- name: Set job variables
run: |
VERSION="$(cat .VERSION)"
MAJORVERSION="$(cat .VERSION | cut -c 1-2 | sed -r 's#^(.{0})#\1latest-#')"
DATI="$(date --rfc-3339=seconds | sed 's/ /T/')"
# Log output and export as Github environment variable
echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION }}"
echo "[LOG] Image Version: $VERSION"
echo "version=$VERSION" >> $GITHUB_ENV
echo "[LOG] Major Image Version: $MAJORVERSION"
echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV
echo "[LOG] Buildnumber/Timestamp: $DATI"
echo "dati=$DATI" >> $GITHUB_ENV
# Set values in iobroker_startup.sh
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$DATI/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp
mv -f ./debian12/scripts/iobroker_startup.tmp ./debian12/scripts/iobroker_startup.sh
# Set values in Dockerfile
sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp
mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.0.0
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3.0.0
- name: Login to DockerHub (buanet)
uses: docker/login-action@v3.0.0
with:
username: ${{ secrets.DOCKER_USER_IOB }}
password: ${{ secrets.DOCKER_PASS_IOB }}
- name: Build and push Docker image
uses: docker/build-push-action@v5.1.0
with:
context: ./debian12
file: ./debian12/Dockerfile
push: true
platforms: |
linux/amd64
linux/arm/v7
linux/arm64/v8
tags: |
iobroker/iobroker:latest,
iobroker/iobroker:${{ env.majorversion }},
iobroker/iobroker:${{ env.version }},
provenance: false
outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Official Docker image for ioBroker smarthome software (https://www.iobroker.net)
delete-untagged-images:
if: ${{ always() }}
needs: [build-latest-for-buanet, build-latest-for-iobroker]
name: Delete untagged images from GitHub Container Registry
runs-on: ubuntu-latest
steps:
- name: Delete images
uses: actions/github-script@v7.0.1
with:
github-token: ${{ secrets.PACKAGES_PASS }}
script: |
const response = await github.request("GET /users/${{ env.OWNER }}/packages/container/${{ env.PACKAGE_NAME }}/versions",
{ per_page: ${{ env.PER_PAGE }}
});
for(version of response.data) {
if (version.metadata.container.tags.length == 0) {
console.log("delete " + version.id)
const deleteResponse = await github.request("DELETE /user/packages/container/${{ env.PACKAGE_NAME }}/versions/" + version.id, { });
console.log("status " + deleteResponse.status)
}
}
env:
OWNER: buanet
PACKAGE_NAME: iobroker
PER_PAGE: 100

View File

@@ -12,7 +12,7 @@ jobs:
update-docker-readme:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.0.0
- uses: actions/checkout@v4.1.1
- name: Update Docker Hub Readme (buanet)
uses: peter-evans/dockerhub-description@v3.4.2

View File

@@ -1,4 +1,4 @@
name: Check ioBroker versions
name: Version Checks
on:
schedule:
@@ -10,12 +10,26 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4.0.0
uses: actions/checkout@v4.1.1
with:
repository: 'buanet/ioBroker.docker'
token: ${{ secrets.ACTIONS_PAT }}
- name: Fetch ioBroker versions
- name: Get and write version
id: version
run: |
LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')"
echo "iobroker=iobroker/iobroker:$LATESTRELEASE" >> $GITHUB_ENV
echo "baseimage=library/debian:bookworm-slim" >> $GITHUB_ENV
- name: Docker Baseimage Checker
id: baseimage
uses: mkumatag/container-image-updater-action@v1.0.5
with:
base-image: '${{ env.baseimage }}'
image: '${{ env.iobroker }}'
- name: Fetch ioBroker and nodejs versions
run: |
curl -sL https://repo.iobroker.live/sources-dist.json | \
jq -r '."js-controller".version' > .github/dependencies/.js-controller-version
@@ -45,18 +59,10 @@ jobs:
git commit -am "new ioBroker versions"
git push
- name: Trigger build debian latest (buanet)
if: steps.git-check.outputs.modified == 'true'
- name: Trigger Build Debian 12 Image (latest)
if: steps.baseimage.outputs.needs-update == 'true' || steps.git-check.outputs.modified == 'true'
uses: benc-uk/workflow-dispatch@v1.2
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.2
with:
workflow: Build debian latest (iobroker)
workflow: Build Debian 12 Image (latest)
repo: buanet/ioBroker.docker
token: ${{ secrets.ACTIONS_PAT }}

View File

@@ -1,16 +1,42 @@
## Changelog
### v9.0.0-beta.1 (24.09.2023)
* remove special settings script and env for zwave ([#377](https://github.com/buanet/ioBroker.docker/issues/377))
* simplify ci/ reduce gh actions
* ignore errors in "silent cleanup" on first start ([#369](https://github.com/buanet/ioBroker.docker/issues/369))
* cleanup/ restructure repo
* update nodejs setup process
* update base image to debian 12 (bookworm)
* improve security by avoiding root (exept startup script itself)
* restrict iobroker commanline commands (start/ stop/ node fix)
* integrate maintenance script into iobroker command
* move container config files location
### v9.1.0-beta.3 (23.11.2023)
* add --force to restore in maintenance script
* improve shebang in scripts for downgrade and portability
* v9.1.0-beta.2 (06.11.2023)
* enhance logging/ fix typos
* add env PACKAGES_UPDATE and remove automatic package updates on first container start
* improve setuid/setgid handling during startup ([#397](https://github.com/buanet/ioBroker.docker/issues/397))
* move maintenance script registration to dockerfile ([#390](https://github.com/buanet/ioBroker.docker/issues/390))
* v9.1.0-beta.1 (03.11.2023)
* improve maintenance command by symlinking ([#390](https://github.com/buanet/ioBroker.docker/issues/390))
* fix restore/ adding backup file selection ([#394](https://github.com/buanet/ioBroker.docker/issues/394))
* fix calling iob start|stop with parameters
* enhance logging in iobroker_startup.sh
* add error handling for user scripts
### v9.0.1 (10.10.2023)
* fix issue with avahi setup ([#384](https://github.com/buanet/ioBroker.docker/issues/384); [#385 by @z1r0](https://github.com/buanet/ioBroker.docker/pull/385))
* add silent cleanup to setup_avahi.sh
* add error handling for package updates/ install
* fix calling iob in iobroker_startup.sh ([#388](https://github.com/buanet/ioBroker.docker/issues/388))
### v9.0.0 (09.10.2023)
* update official docs
* v9.0.0-beta.2 (28.09.2023)
* fix issue with unlocking features in backitup ([#381](https://github.com/buanet/ioBroker.docker/issues/381))
* fix issue with fresh initializing iobroker
* v9.0.0-beta.1 (24.09.2023)
* remove special settings script and env for zwave ([#377](https://github.com/buanet/ioBroker.docker/issues/377))
* simplify ci/ reduce gh actions
* ignore errors in "silent cleanup" on first start ([#369](https://github.com/buanet/ioBroker.docker/issues/369))
* cleanup/ restructure repo
* update nodejs setup process
* update base image to debian 12 (bookworm)
* improve security by avoiding root (except startup script itself)
* restrict iobroker command line commands (start/ stop/ node fix)
* integrate maintenance script into iobroker command
* move container config files location
### v8.1.0 (15.08.2023)
* repo cleanup
@@ -121,7 +147,7 @@
* v5.2.0-beta4 (2021-09-10)
* adding iobroker user rights for "gosu"
* adding more labels in OCI standard format
* fixing workdir bug
* fixing work dir bug
* adding backitup compatibility
* v5.2.0-beta3 (2021-09-04)
* reducing layers in dockerfile
@@ -147,10 +173,10 @@
### v5.1.0 (2020-11-05)
* v5.0.2-beta (2020-07-28)
* added docker tag for majorversion latest
* extend readme.md docu
* added docker tag for major version latest
* extend readme.md docs
* added maintenance script
* added container healthcheck
* added container health check
* fixed configuration procedure and logging for objects and states db setup
* v5.0.1-beta (2020-07-01)
* fixing backup detection in startup script
@@ -177,7 +203,7 @@
* switching base image to buster
* optimizing installation of packages defined by ENV "PACKAGES"
* v4.1.3-beta (2020-02-08)
* renamed ENV for adminport (new "IOB_ADMINPORT)")
* renamed ENV for admin port (new "IOB_ADMINPORT)")
* added new ENVs for "iobroker setup custom" (replacing "REDIS")
* enhancements in startup script logging
* v4.1.2-beta (2020-02-02)
@@ -197,7 +223,7 @@
* v4.0.1-beta (2019-11-25)
* added env for iobroker admin port
* added env for usb-devices (setting permissions)
* updateing prerequisites for iobroker installation
* updating prerequisites for iobroker installation
* some small code fixes
### v4.0.0 (2019-10-25)
@@ -292,7 +318,7 @@
* added git package
### v0.1.0 (2017-03-08)
* moved avahi-start.sh to seperate directory
* moved avahi-start.sh to separate directory
* fixed timezone issue (sets now timezone to Europe/Berlin)
### v0.0.2 (2017-03-06)

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2017-2022 André Germann
Copyright (c) 2017-2023 André Germann
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -4,7 +4,7 @@
[![Release](https://img.shields.io/github/v/release/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/releases)
[![Pre-Release)](https://img.shields.io/github/v/tag/buanet/ioBroker.docker?include_prereleases&label=pre-release)](https://github.com/buanet/ioBroker.docker/releases)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian-image-latest.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian-image-latest.yml)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian12-latest.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian12-latest.yml)
[![Github Issues](https://img.shields.io/github/issues/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/issues)
[![Github Pull Requests](https://img.shields.io/github/issues-pr/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/pulls)
[![GitHub Discussions](https://img.shields.io/github/discussions/buanet/ioBroker.docker)](https://github.com/buanet/ioBroker.docker/discussions)<br>
@@ -47,22 +47,21 @@ You can pull the Docker image from:
### Where can I get help?
If you have any questions or need help please visit the ioBroker community:
If you have any questions or need help take a look at the [Discussions](https://github.com/buanet/ioBroker.docker/discussions) or join the ioBroker community:
* [ioBroker forum](https://forum.iobroker.net/)
* [Discord channel](https://discord.gg/Ne3y6fUac3)
* [Discord channel](https://discord.gg/5jGWNKnpZ8)
* [Facebook group](https://www.facebook.com/groups/440499112958264/)
* [Telegram channel](https://t.me/+Xfjuou6-LztkOTBi)
### How to report an issue or request a feature?
If you think you found an issue let us know by opening a [GitHub issue](https://github.com/buanet/ioBroker.docker/issues). Make sure you have googled it before.
Please do not use the issues for support questions. Not every error message is worth a new report. Use [discussions](https://github.com/buanet/ioBroker.docker/discussions) if you are not sure.
If you think you found an issue let us know by opening a [GitHub Issue](https://github.com/buanet/ioBroker.docker/issues).
Please do not use the issues for support questions. Not every error message is worth a new report. Use [Discussions](https://github.com/buanet/ioBroker.docker/discussions) if you are not sure.
## :eyes: Miscellaneous
### Beta testing
If you want to get the newest features and changes feel free to use/ test the beta version of the Docker image. For more details and beta support join us at "beta testing & feedback" > "docker-image" on the [ioBroker Discord channel](https://discord.gg/Ne3y6fUac3).
If you want to get the newest features and changes feel free to use/ test the beta version of the Docker image. For more details and beta support join us at "beta testing & feedback" > "docker-image" at the [ioBroker Discord channel](https://discord.gg/5jGWNKnpZ8).
### Support the project
@@ -79,7 +78,7 @@ Moved to [CHANGELOG.md](CHANGELOG.md).
MIT License
Copyright (c) 2017-2022 André Germann
Copyright (c) 2017-2023 André Germann
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -71,11 +71,14 @@ RUN apt-get update && apt-get upgrade -y \
&& usermod -u 1000 iobroker \
&& groupmod -g 1000 iobroker \
&& chown root:iobroker /usr/sbin/gosu \
#&& chmod +s /usr/sbin/gosu \
# Set permissions and ownership
&& chown -R iobroker:iobroker /opt/scripts /opt/userscripts \
&& chmod 755 /opt/scripts/*.sh \
&& chmod 755 /opt/userscripts/*.sh \
# register maintenance command
&& ln -s /opt/scripts/maintenance.sh /bin/maintenance \
&& ln -s /opt/scripts/maintenance.sh /bin/maint \
&& ln -s /opt/scripts/maintenance.sh /bin/m \
# Clean up installation cache
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& apt-get autoclean -y \

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# Script checks health of running container

View File

@@ -1,4 +1,4 @@
#!/usr/bin/bash
#!/usr/bin/env bash
# run iob fix
iob_fix () {
@@ -39,27 +39,48 @@ iob_diag () {
fi
}
if [ "$1" = "fix" ]; then # call iobroker fixer
iob_fix
elif [ "$1" = "node fix" ]; then # call iobroker node fixer
echo "The execution of this command is blocked as your ioBroker is running inside a Docker container!"
echo "To fix any issues with nodejs, please pull the latest version of the Docker image and recreate your container."
elif [ "$1" = "diag" ]; then # call iobroker diag script
iob_diag
elif [ "$1" = "start" ] || [ "$1" = "stop" ] || [ "$1" = "restart" ]; then # block execution of iobroker start | stop | restart
echo "The execution of this command is blocked as your ioBroker is running inside a Docker container!"
echo "For more details see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/) or use the maintenance script 'maintenance --help'."
elif [ "$1" = "m" ] || [ "$1" = "maint" ] || [ "$1" = "maintenance" ]; then # call iobroker maintenance script
# run iobroker maintenance script
iob_maint() {
shift
if [ "$(id -u)" -eq 0 ]; then # check for execution as root
if [ "$(id -u)" -eq 0 ]; then
gosu iobroker bash /opt/scripts/maintenance.sh "$@"
else
bash /opt/scripts/maintenance.sh "$@"
fi
else # passing all other parameters to iobroker.js
if [ "$(id -u)" -eq 0 ]; then # check for execution as root
}
# pass parameters and run iobroker.js
iob_run() {
if [ "$(id -u)" -eq 0 ]; then
gosu iobroker node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js "$@"
else
node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js "$@"
fi
}
if [ "$1" = "fix" ]; then
# call iobroker fixer
iob_fix
elif [ "$1" = "node fix" ]; then
# call iobroker node fixer
echo "The execution of this command is blocked as your ioBroker is running inside a Docker container!"
echo "To fix any issues with nodejs, please pull the latest version of the Docker image and recreate your container."
elif [ "$1" = "diag" ]; then
# call iobroker diag script
iob_diag
elif [ "$1" = "start" ] || [ "$1" = "stop" ] || [ "$1" = "restart" ]; then
# block execution of iobroker start | stop | restart but pass start | stop for adapters
if [ ! "$2" ]; then
echo "The execution of this command is blocked as your ioBroker is running inside a Docker container!"
echo "For more details see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/) or use the maintenance script 'maintenance --help'."
else
# passing all other parameters to iobroker.js but check for execution as root
iob_run "$@"
fi
elif [ "$1" = "m" ] || [ "$1" = "maint" ] || [ "$1" = "maintenance" ]; then
# call iobroker maintenance script but check for execution as root
iob_maint "$@"
else
# passing all other parameters to iobroker.js but check for execution as root
iob_run "$@"
fi

View File

@@ -17,17 +17,18 @@ offlinemode=$OFFLINE_MODE
objectsdbhost=$IOB_OBJECTSDB_HOST
objectsdbport=$IOB_OBJECTSDB_PORT
objectsdbtype=$IOB_OBJECTSDB_TYPE
objectsdbname=$IOB_OBJECTSDB_NAME # new for sentinel support
objectsdbpass=$IOB_OBJECTSDB_PASS # new for auth support
objectsdbname=$IOB_OBJECTSDB_NAME
objectsdbpass=$IOB_OBJECTSDB_PASS
packages=$PACKAGES
packagesupdate=$PACKAGES_UPDATE
permissioncheck=$PERMISSION_CHECK
setgid=$SETGID
setuid=$SETUID
statesdbhost=$IOB_STATESDB_HOST
statesdbport=$IOB_STATESDB_PORT
statesdbtype=$IOB_STATESDB_TYPE
statesdbname=$IOB_STATESDB_NAME # new for sentinel support
statesdbpass=$IOB_STATESDB_PASS # new for auth support
statesdbname=$IOB_STATESDB_NAME
statesdbpass=$IOB_STATESDB_PASS
usbdevices=$USBDEVICES
set -u
@@ -99,6 +100,7 @@ if [[ "$statesdbname" != "" ]]; then echo -n "----- " && echo
if [[ "$statesdbpass" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" IOB_STATESDB_PASS: "***")" && echo " -----"; fi
if [[ "$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 [[ "$packagesupdate" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PACKAGES_UPDATE: "$packagesupdate")" && echo " -----"; fi
if [[ "$permissioncheck" != "" ]]; then echo -n "----- " && echo -n "$(printf "%-20s %-28s" PERMISSION_CHECK: "$permissioncheck")" && echo " -----"; fi
if [[ "$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
@@ -123,7 +125,7 @@ fi
# STEP 1 - Preparing container
#####
echo "$(printf -- '-%.0s' {1..80})"
echo "----- Step 1 of 5: Preparing container -----"
echo "----- Step 1 of 5: Preparing Container -----"
echo "$(printf -- '-%.0s' {1..80})"
echo " "
@@ -132,31 +134,27 @@ if [[ -f /opt/.docker_config/.first_run ]]; then
# Updating Linux packages
if [[ "$offlinemode" = "true" ]]; then
echo "OFFLINE_MODE is \"true\". Skipping Linux package updates on first run."
else
bash /opt/scripts/setup_packages.sh -update
echo " "
elif [[ "$packagesupdate" = "true" ]]; then
if ! bash /opt/scripts/setup_packages.sh -update; then echo "Failed."; fi
echo " "
fi
echo " "
# Installing packages from ENV
if [[ "$packages" != "" && "$offlinemode" = "true" ]]; then
echo "PACKAGES is set, but OFFLINE_MODE is \"true\". Skipping Linux package installation."
elif [[ "$packages" != "" ]]; then
echo "PACKAGES is set. Installing the following additional Linux packages: ""$packages"
bash /opt/scripts/setup_packages.sh -install
if ! bash /opt/scripts/setup_packages.sh -install; then echo "Failed."; fi
fi
echo " "
# Register maintenance script
echo -n "Registering maintenance script as command... "
echo "alias maintenance='/opt/scripts/maintenance.sh'" >> /etc/bash.bashrc
echo "alias maint='/opt/scripts/maintenance.sh'" >> /etc/bash.bashrc
echo "alias m='/opt/scripts/maintenance.sh'" >> /etc/bash.bashrc
echo "Done."
else
echo "This is not the first run of this container. Skipping first run preparation."
fi
echo " "
# Setting UID and/ or GID
if [[ "$setgid" != "$(cat /etc/group | grep 'iobroker:' | cut -d':' -f3)" || "$setuid" != "$(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3)" ]]; then
if [[ "$setgid" != "$(id -u iobroker)" || "$setuid" != "$(id -g iobroker)" ]]; then
echo "SETUID and/ or SETGID are set to custom values."
echo -n "Changing UID to \"""$setuid""\" and GID to \"""$setgid""\"... "
usermod -u "$setuid" iobroker
@@ -172,7 +170,7 @@ cd /opt/iobroker
# STEP 2 - Detecting ioBroker-Installation
#####
echo "$(printf -- '-%.0s' {1..80})"
echo "----- Step 2 of 5: Detecting ioBroker installation -----"
echo "----- Step 2 of 5: Detecting ioBroker Installation -----"
echo "$(printf -- '-%.0s' {1..80})"
echo " "
@@ -186,10 +184,10 @@ elif [[ -f /opt/iobroker/iobroker ]]; then
elif [[ "$(ls *_backupiobroker.tar.gz 2> /dev/null | wc -l)" != "0" && "$(tar -ztvf /opt/iobroker/*_backupiobroker.tar.gz "backup/backup.json" 2> /dev/null | wc -l)" != "0" ]]; then
echo "IoBroker backup file detected in /opt/iobroker."
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Backup file name: " "$(ls *_backupiobroker.tar.gz)"; fi
echo "Since Docker Image v8, automatic initial restore is no longer supported!"
echo "Since Docker image v8, automatic initial restore is no longer supported!"
echo "IoBroker will start with a fresh installation, while your backup file will be copied into the backup directory."
echo "You will be able to restore your backup file manually by using the backitup adapter or the containers maintenance script."
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
echo "For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
echo " "
echo -n "Copying backup file and restoring initial ioBroker installation... "
mv /opt/iobroker/*.tar.gz /opt/
@@ -214,11 +212,11 @@ echo " "
# STEP 3 - Checking ioBroker-Installation
#####
echo "$(printf -- '-%.0s' {1..80})"
echo "----- Step 3 of 5: Checking ioBroker installation -----"
echo "----- Step 3 of 5: Checking ioBroker Installation -----"
echo "$(printf -- '-%.0s' {1..80})"
echo " "
# Backing up original iobroker executable to fix sudo bug with gosu
# Backing up and replace original iobroker executable to fix sudo bug with gosu
if [[ -n $(cmp /opt/scripts/iobroker.sh /opt/iobroker/iobroker) ]]; then
echo -n "Replacing ioBroker executable to fix sudo bug... "
cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak
@@ -299,15 +297,16 @@ elif [[ "$multihost" == "" || "$multihost" == "false" ]]; then
else
echo "IOB_MULTIHOST is set, but the value is not valid. Please check your configuration."
if [[ "$debug" == "true" ]]; then echo "[DEBUG] IOB_MULTIHOST = ""$multihost"; fi
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/#environment-variables-env)."
echo "For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/#environment-variables-env)."
stop_on_error
fi
# if restored a fresh install, running "iob setup first" for database init (but not on slaves!), otherwise check database connection
if [[ -f /opt/iobroker/.fresh_install && "$multihost" != "slave" ]]; then
echo -n "Initializing a fresh installation of ioBroker... "
if [[ ! -d "/opt/iobroker/log" ]]; then gosu iobroker mkdir "/opt/iobroker/log"; fi
set +e
bash iob setup first > /opt/iobroker/log/iob_setup_first.log 2>&1
gosu iobroker iob setup first > /opt/iobroker/log/iob_setup_first.log 2>&1
return=$?
set -e
rm -f /opt/iobroker/.fresh_install
@@ -320,20 +319,20 @@ if [[ -f /opt/iobroker/.fresh_install && "$multihost" != "slave" ]]; then
echo "Done."
echo " "
else
echo -n "Checking Database connection... "
echo -n "Checking database connection... "
set +e
if iob uuid &> /dev/null; then
if gosu iobroker iob uuid &> /dev/null; then
echo "Done."
echo " "
else
errormsg=$(iob uuid 2>&1 | sed 's/^/[DEBUG] /')
errormsg=$(gosu iobroker iob uuid 2>&1 | sed 's/^/[DEBUG] /')
echo "Failed."
if [[ "$debug" == "true" ]]; then
echo "[DEBUG] Error message: "
echo "$errormsg"
fi
echo "Please check your configuration and try again."
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs)."
echo "For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs)."
stop_on_error
fi
set -e
@@ -346,20 +345,20 @@ if [[ "$multihost" == "slave" ]]; then
else
# get admin instance and hostname
set +e
admininstance=$(bash iobroker list instances | grep 'enabled' | grep -m 1 -o 'system.adapter.admin..')
admininstance=$(gosu iobroker iob list instances | grep 'enabled' | grep -m 1 -o 'system.adapter.admin..')
set -e
if [[ "$admininstance" != "" ]]; then
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Detected admin instance is:" "$admininstance"; fi
adminhostname=$(bash iobroker object get "$admininstance" --pretty | grep -oP '(?<="host": ")[^"]*')
adminhostname=$(gosu iobroker iob object get "$admininstance" --pretty | grep -oP '(?<="host": ")[^"]*')
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Detected admin hostname is:" "$adminhostname"; fi
else
set +e
admininstance=$(bash iobroker list instances | grep 'disabled' | grep -m 1 -o 'system.adapter.admin..')
admininstance=$(gosu iobroker iob list instances | grep 'disabled' | grep -m 1 -o 'system.adapter.admin..')
set -e
if [[ "$admininstance" != "" ]]; then
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Detected admin instance is disabled."; fi
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Detected admin instance is:" "$admininstance"; fi
adminhostname=$(bash iobroker object get "$admininstance" --pretty | grep -oP '(?<="host": ")[^"]*')
adminhostname=$(gosu iobroker iob object get "$admininstance" --pretty | grep -oP '(?<="host": ")[^"]*')
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Detected admin hostname is:" "$adminhostname"; fi
else
echo "There was a problem detecting the admin instance of your iobroker."
@@ -372,7 +371,7 @@ else
if [[ "$adminhostname" != "" && "$adminhostname" != "$(hostname)" ]]; then
echo "Hostname in ioBroker does not match the hostname of this container."
echo -n "Updating hostname to \"""$(hostname)""\"... "
bash iobroker host "$adminhostname"
gosu iobroker iob host "$adminhostname"
echo "Done."
echo " "
elif [[ "$adminhostname" = "$(hostname)" ]]; then
@@ -420,23 +419,23 @@ fi
# STEP 4 - Setting up special sessting for ioBroker-adapters
#####
echo "$(printf -- '-%.0s' {1..80})"
echo "----- Step 4 of 5: Applying special settings -----"
echo "----- Step 4 of 5: Applying Special Settings -----"
echo "$(printf -- '-%.0s' {1..80})"
echo " "
echo "Some adapters have special requirements/ settings which can be activated by the use of environment variables."
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
echo "For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
echo " "
# Checking ENV for Adminport
if [[ "$adminport" != "" && "$multihost" != "slave" ]]; then
adminportold=$(bash iobroker object get "$admininstance" --pretty | grep -oP '(?<="port": )[^,]*')
adminportold=$(gosu iobroker iob object get "$admininstance" --pretty | grep -oP '(?<="port": )[^,]*')
admininstanceshort=$(echo "$admininstance" | grep -m 1 -o 'admin..')
if [[ "$adminport" != "$adminportold" ]]; then
echo "IOB_ADMINPORT is set and does not match port configured in ioBroker."
if [[ "$debug" == "true" ]]; then echo "[DEBUG] Detected Admin Port in ioBroker: " "$adminportold"; fi
echo "Setting Adminport to \"""$adminport""\"... "
bash iobroker set "$admininstanceshort" --port "$adminport"
gosu iobroker iob set "$admininstanceshort" --port "$adminport"
echo "Done."
echo " "
fi
@@ -446,6 +445,7 @@ fi
if [[ "$backitup" == "true" ]]; then
echo -n "IOB_BACKITUP_EXTDB is \"true\". Unlocking features..."
echo "true" > /opt/.docker_config/.backitup
echo "true" > /opt/scripts/.docker_config/.backitup # old path, needed until changed in backitup
echo "Done."
echo " "
fi
@@ -476,7 +476,7 @@ if [[ "$usbdevices" != "" && "$usbdevices" != "none" ]]; then
else
echo "Looks like the device \"""$i""\" does not exist."
echo "Did you mount it correctly by using the \"--device\" option?"
echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/#mounting-usb-devices)."
echo "For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs/#mounting-usb-devices)."
stop_on_error
fi
done
@@ -495,17 +495,24 @@ elif [[ -f /opt/userscripts/userscript_firststart.sh || -f /opt/userscripts/user
echo "Userscript for first start detected and this is the first start of a new container."
echo "Running userscript_firststart.sh... "
chmod 755 /opt/userscripts/userscript_firststart.sh
bash /opt/userscripts/userscript_firststart.sh
echo "Done."
if ! bash /opt/userscripts/userscript_firststart.sh; then
echo "Failed."
else
echo "Done."
fi
fi
if [[ -f /opt/userscripts/userscript_everystart.sh ]]; then
echo "Userscript for every start detected. Running userscript_everystart.sh... "
chmod 755 /opt/userscripts/userscript_everystart.sh
bash /opt/userscripts/userscript_everystart.sh
echo "Done."
if ! bash /opt/userscripts/userscript_everystart.sh; then
echo "Failed."
else
echo "Done."
fi
fi
echo " "
fi
echo " "
# Removing first run an fresh install markers when exists
if [[ -f /opt/.docker_config/.first_run ]]; then rm -f /opt/.docker_config/.first_run; fi
@@ -515,7 +522,7 @@ if [[ -f /opt/iobroker/.fresh_install ]]; then rm -f /opt/iobroker/.fresh_instal
# STEP 5 - Starting ioBroker
#####
echo "$(printf -- '-%.0s' {1..80})"
echo "----- Step 5 of 5: ioBroker startup -----"
echo "----- Step 5 of 5: ioBroker Startup -----"
echo "$(printf -- '-%.0s' {1..80})"
echo " "
echo "Starting ioBroker... "

View File

@@ -10,7 +10,7 @@ pkill_timeout=10 # timeout for stopping iobroker in seconds
# check for user root
if [ "$(id -u)" -eq 0 ]; then
echo "WARNING! This script should be executed as iobroker user! Please change user and try again."
echo "WARNING! This script should be executed as user "iobroker"! Please switch user and try again."
exit 1
fi
@@ -165,12 +165,12 @@ stop_iob() {
if [[ "$killbyname" != yes ]]; then
# pgrep exits with status 1 when there are no matches
while pgrep -u iobroker -f 'io.' > /dev/null; (( $? != 1 )); do
while pgrep -u iobroker -f 'io\..' > /dev/null; (( $? != 1 )); do
if (($(date +%s) > timeout)); then
echo -e "\nTimeout reached. Killing remaining processes..."
pgrep --list-full -u iobroker
pkill --signal SIGKILL -u iobroker -f 'io.'
echo "\nDone."
pgrep --list-full -u iobroker -f 'io\..'
pkill --signal SIGKILL -u iobroker -f 'io\..'
echo "Done."
return
fi
sleep 1
@@ -184,6 +184,7 @@ stop_iob() {
fi
echo -e "Done."
echo " "
}
# restart container
@@ -218,40 +219,127 @@ restore_iobroker() {
echo "You are now going to perform a restore of your iobroker."
echo "During the restore process, the container will automatically switch into maintenance mode and stop ioBroker."
echo "Depending on the restart policy, your container will be stopped or restarted automatically after the restore."
# check autoconfirm
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
if [[ "$reply" != y && "$reply" != Y && "$reply" != yes ]]; then
return 1
fi
fi
echo " "
# check startup script running
if check_starting > /dev/null; then
echo "Startup script is still running."
echo "Please check container log and wait until ioBroker is sucessfully started."
echo "Then try again."
return 1
fi
# check mainenance mode
if ! maintenance_enabled > /dev/null; then
autoconfirm=yes
enable_maintenance
fi
echo -n "Restoring ioBroker... "
set +e
bash iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1
return=$?
set -e
if [[ "$return" -ne 0 ]]; then
echo "Failed."
echo "For more details see \"/opt/iobroker/log/restore.log\"."
echo "Please check backup file location and permissions and try again."
# list backup files
backup_dir="/opt/iobroker/backups"
backup_files=($(find $backup_dir -type f))
backup_count=${#backup_files[@]}
if [[ $backup_count -eq 0 ]]; then
echo "Ther are no backup files in $backup_dir."
echo "Please check and try again."
return 1
elif [[ $backup_count -eq 1 ]]; then
selected_backup=$(basename "${backup_files[0]}")
echo "Selected backup file is \"$selected_backup\"."
else
# more than one backup file found, ask user to select
echo "There are more than one backup file in \"$backup_dir\"."
echo ' '
echo "Please select file for restore:"
for ((i=0; i<$backup_count; i++)); do
echo "$i: $(basename "${backup_files[$i]}")"
done
echo
read -rp "Enter the number of the backup to restore (0-$((backup_count - 1))): " selected_number
selected_backup=$(basename "${backup_files[$selected_number]}")
echo ' '
echo "Selected backup file is \"$selected_backup\"."
echo ' '
fi
# extract backup.json from backup
tar -xvzf $backup_dir/$selected_backup -C $backup_dir --strip-components=1 "backup/backup.json" > /dev/null 2>&1
# write js-controller versions from backup.json into array
jq_output=$(jq --arg TITLE "JS controller" -r '.objects[] | select(.value.common.title == $TITLE)' $backup_dir/backup.json)
# remove backup.json
rm $backup_dir/backup.json
result=()
while read -r line; do
entry=$(echo "$line" | jq -r '.value.common.installedVersion')
result+=("$entry")
done <<< "$(echo "$jq_output" | jq -c '.')"
# check for empty array
if [[ "${#result[@]}" -eq 0 ]]; then
echo "There was a problem detecting the js-controller version in the seclected backup file."
return 1
else
# check if all found js-controller versions are equal (for multihost systems!)
first_version=${result[0]}
all_versions_equal=true
for i in "${result[@]}"; do
version=$i
if [[ "$version" != "$first_version" ]]; then
all_versions_equal=false
break
fi
done
if [[ "$all_versions_equal" != true ]]; then
echo "Detected different js-controller versions in the selected backup file."
return 1
fi
fi
# compare installed js-controller version with version from backup file
echo -n "Checking js-controller versions... "
installed_version=$(iob version js-controller)
echo "Done."
echo ' '
echo "Installed js-controller version: $installed_version"
echo "Backup js-controller version: $first_version"
echo ' '
if [[ "$first_version" != "$installed_version" ]]; then
echo "The installed js-controller version is different from the version in the selected backup file."
echo "If you continue, the script will use the \"--force\" option to restore your backup."
echo "Although this is normally safe with small version differences, you should know,"
echo "that the recommended way is to first install the same js-controller version before restoring the backup file."
local reply
read -rp 'Do you want to continue [yes/no]? ' reply
if [[ "$reply" != y && "$reply" != Y && "$reply" != yes ]]; then
return 1
fi
fi
echo -n "Restoring ioBroker from \"$selected_backup\"... "
set +e
bash iobroker restore "$selected_backup" --force > /opt/iobroker/log/restore.log 2>&1
return_value=$?
set -e
if [[ "$return_value" -ne 0 ]]; then
echo "Failed."
echo "For more details see \"/opt/iobroker/log/restore.log\"."
echo "Please check backup file location and permissions and try again."
return 1
fi
echo "Done."
echo " "
@@ -265,8 +353,8 @@ restore_iobroker() {
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
sleep 10
echo "Container will be stopped or restarted in 10 seconds..."
sleep 10
echo "stopping" > "$healthcheck"
sleep 10
pkill -u iobroker
}
@@ -315,4 +403,4 @@ for arg in "$@"; do
esac
done
"${run[@]}"
"${run[@]}"

View File

@@ -0,0 +1,32 @@
#!/usr/bin/env bash
welcome () {
whiptail --title "ioBroker Docker Container Maintenance Script" --ok-button "OK" --msgbox " \
╔═══════════════════════════════════════════════════════════════════════╗\
\n ║ ██╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ ██████╗ ║\
\n ║ ██║ ██╔═══██╗ ██╔══██╗ ██╔══██╗ ██╔═══██╗ ██║ ██╔╝ ██╔════╝ ██╔══██╗ ║\
\n ║ ██║ ██║ ██║ ██████╔╝ ██████╔╝ ██║ ██║ █████╔╝ █████╗ ██████╔╝ ║\
\n ║ ██║ ██║ ██║ ██╔══██╗ ██╔══██╗ ██║ ██║ ██╔═██╗ ██╔══╝ ██╔══██╗ ║\
\n ║ ██║ ╚██████╔╝ ██████╔╝ ██║ ██║ ╚██████╔╝ ██║ ██╗ ███████╗ ██║ ██║ ║\
\n ║ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ ║\
\n ╚═══════════════════════════════════════════════════════════════════════╝\
\n This script will help you to maintain your ioBroker Docker container!\
\n" 19 79
}
if welcome; then
TO_RUN=$(whiptail --title "ioBroker Docker Container Maintenance Script" --menu "What do you want to do?" 25 78 5 \
"maintenance" "Turn Maintenance Mode on or off" \
"upgrade" "Upgrade js-controller" \
"restore" "Restore ioBroker from backup" 3>&1 1>&2 2>&3)
else
exit 0
fi
if [[ $TO_RUN = "maintenance" ]]; then
echo "You selected maintenance"
elif [[ $TO_RUN = "upgrade" ]]; then
echo "You selected upgrade"
elif [[ $TO_RUN = "restore" ]]; then
echo "You selected restore"
fi

View File

@@ -1,13 +1,15 @@
#!/bin/bash
#!/usr/bin/env bash
if [ -e /usr/sbin/avahi-daemon ] && [ -e /var/run/dbus ]
then
echo "[setup_avahi.sh] Avahi is already installed. Nothing to do here."
else
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 install -y --no-install-recommends 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
apt-get -q update > /opt/scripts/avahi_startup.log 2>&1
apt-get -q -y --no-install-recommends install libavahi-compat-libdnssd-dev avahi-daemon >> /opt/scripts/avahi_startup.log 2>&1
# Silent Cleanup
apt-get -qq autoclean -y && apt-get -qq autoremove && apt-get -qq clean
rm -rf /tmp/* /var/tmp/* /root/.cache/* /var/lib/apt/lists/* || true
echo "Done."
echo -n "[setup_avahi.sh] Configuring avahi-daemon... "
sed -i '/^rlimit-nproc/s/^\(.*\)/#\1/g' /etc/avahi/avahi-daemon.conf
@@ -32,7 +34,7 @@ echo -n "[setup_avahi.sh] Starting dbus... "
echo "Done."
echo -n "[setup_avahi.sh] Starting avahi-daemon... "
/etc/init.d/avahi-daemon start >> /opt/scripts/avahi_startup.log 2>&1
avahi-daemon >> /opt/scripts/avahi_startup.log 2>&1 &
echo "Done."
exit 0

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# reading env
debug=$DEBUG

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# bash strict mode
set -euo pipefail
@@ -58,7 +58,7 @@ if [[ "$1" == "-install" ]]; then
fi
done
elif [[ "$1" == "-update" ]]; then
echo -n "Updating Linux packages on first run... "
echo -n "PACKAGES_UPDATE is set. Updating Linux packages on first run... "
apt-get -q update >> /opt/scripts/setup_packages.log 2>&1
return1=$?
apt-get -q -y upgrade >> /opt/scripts/setup_packages.log 2>&1

View File

@@ -2,7 +2,7 @@
[![Release](https://img.shields.io/github/v/release/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/releases)
[![Pre-Release)](https://img.shields.io/github/v/tag/buanet/ioBroker.docker?include_prereleases&label=pre-release)](https://github.com/buanet/ioBroker.docker/releases)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian-image-latest.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian-image-latest.yml)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian12-latest.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian12-latest.yml)
[![Github Issues](https://img.shields.io/github/issues/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/issues)
[![Github Pull Requests](https://img.shields.io/github/issues-pr/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/pulls)
[![GitHub Discussions](https://img.shields.io/github/discussions/buanet/ioBroker.docker)](https://github.com/buanet/ioBroker.docker/discussions)<br>
@@ -18,12 +18,12 @@
# Important note
New major image versions (e.g. v6, v7, v8) always include a new major version of node! Although js-controller should handle this kind of upgrade fine, in some cases this still results in problems with some adapters. To avoid having trouble with this major version upgrades, it is always a good move to upgrade your container manually with backup and restore procedure. For more details please see the maintenance part of the [ioBroker Docker image docs](https://docs.buanet.de/iobroker-docker-image/docs/#maintenance).
New major image versions (e.g. v6, v7, v8) usually include a new major version of node! Although js-controller should handle this kind of upgrade fine, in some cases this still results in problems with some adapters. To avoid having trouble with this major version upgrades, it is always a good move to upgrade your container manually with backup and restore procedure. For more details please see the maintenance part of the [ioBroker Docker image docs](https://docs.buanet.de/iobroker-docker-image/docs/#maintenance).
# Quick reference
* Maintained by: [buanet](https://github.com/buanet) and [ioBroker](https://github.com/ioBroker)
* Where to get support: [ioBroker forum](https://forum.iobroker.net/), [Discord channel](https://discord.gg/HwUCwsH), [Telegram channel](https://t.me/+Xfjuou6-LztkOTBi), [Facebook group](https://www.facebook.com/groups/440499112958264)
* Where to get support: [ioBroker forum](https://forum.iobroker.net/), [Discord channel](https://discord.gg/5jGWNKnpZ8), [Facebook group](https://www.facebook.com/groups/440499112958264)
* Where to report issues: [Github Repository Issues](https://github.com/buanet/ioBroker.docker/issues)
* Supported architectures: amd64, arm32v7, arm64v8
* Changelog: [Github Repository Changelog](https://github.com/buanet/ioBroker.docker/blob/main/CHANGELOG.md)
@@ -35,7 +35,8 @@ New major image versions (e.g. v6, v7, v8) always include a new major version of
It is highly recommended not to use the `latest` tag for production, especially when using any kind of automated update procedure like watchtower. Please use the `latest-v[major_version]` tag instead.
### Node 18 versions
* [`v8.1.0`](https://github.com/buanet/ioBroker.docker/blob/v8.1.0/debian/node18/Dockerfile), [`latest-v8`](https://github.com/buanet/ioBroker.docker/blob/v8.1.0/debian/node18/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v8.1.0/debian/node18/Dockerfile)
* [`v9.0.0`](https://github.com/buanet/ioBroker.docker/blob/v9.0.0/debian12/Dockerfile), [`latest-v9`](https://github.com/buanet/ioBroker.docker/blob/v9.0.0/debian12/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v9.0.0/debian12/Dockerfile)
* [`v8.1.0`](https://github.com/buanet/ioBroker.docker/blob/v8.1.0/debian/node18/Dockerfile), [`latest-v8`](https://github.com/buanet/ioBroker.docker/blob/v8.1.0/debian/node18/Dockerfile),
* [`v8.0.1`](https://github.com/buanet/ioBroker.docker/blob/v8.0.1/debian/node18/Dockerfile)
* [`v8.0.0`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile)
@@ -47,7 +48,7 @@ It is highly recommended not to use the `latest` tag for production, especially
# What is ioBroker?
IoBroker is a open source IoT platform written in JavaScript that easily connects smarthome components from different manufactures. With the help of plugins (called: "adapters") ioBroker is able to communicate with a big variety of IoT hardware and services using different protocols and APIs.<br>
All data is stored in a central database that all adapters can access. With this it is very easy to build up logical connections, automation scripts and beautiful visualisations.<br>
All data is stored in a central database that all adapters can access. With this it is very easy to build up logical connections, automation scripts and beautiful visualizations.<br>
For further details please check out [iobroker.net](https://www.iobroker.net).
# How to use this image?
@@ -114,7 +115,6 @@ You could use environment variables to auto configure your ioBroker container on
### Activate special features:
* `AVAHI` (optional) Set `true` to install and activate avahi-daemon for supporting yahka adapter
* `ZWAVE` (optional) Set `true` to install openzwave to support zwave adapter
### Configure environment:
@@ -123,7 +123,8 @@ You could use environment variables to auto configure your ioBroker container on
* `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
* `OFFLINE_MODE` (optional) Set `true` if your container has no or limited internet connection
* `PACKAGES` (optional) Install additional linux packages to your container, packages should be separated by whitespace like this: `package1 package2 package3`.
* `PACKAGES` (optional) Install additional Linux packages to your container, packages should be separated by whitespace like this: `package1 package2 package3`.
* `PACKAGES_UPDATE` (optional) Set `true` if you want to apply Linux package updates at the first start of a new container.
* `PERMISSION_CHECK` (optional, default: true) Set "false" to skip checking and correcting all relevant permissions on container startup (Use at own risk!!!)
* `SETGID` (default: 1000) In some cases it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host
* `SETUID` (default: 1000) In some cases it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host
@@ -142,5 +143,5 @@ For more information about networking with Docker please refer to the [official
# Support the Project
If you like what you see please leave us stars and likes on our repos and join our growing community.
If you like what you see please leave us stars and likes on our repos and join our growing community.<br>
See you soon. :)

View File

@@ -4,7 +4,7 @@
[![Release](https://img.shields.io/github/v/release/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/releases)
[![Pre-Release)](https://img.shields.io/github/v/tag/buanet/ioBroker.docker?include_prereleases&label=pre-release)](https://github.com/buanet/ioBroker.docker/releases)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian-image-latest.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian-image-latest.yml)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian12-latest.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian12-latest.yml)
[![Github Issues](https://img.shields.io/github/issues/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/issues)
[![Github Pull Requests](https://img.shields.io/github/issues-pr/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/pulls)
[![GitHub Discussions](https://img.shields.io/github/discussions/buanet/ioBroker.docker)](https://github.com/buanet/ioBroker.docker/discussions)<br>
@@ -20,12 +20,12 @@
# Important note
New major image versions (e.g. v6, v7, v8) always include a new major version of node! Although js-controller should handle this kind of upgrade fine, in some cases this still results in problems with some adapters. To avoid having trouble with this major version upgrades, it is always a good move to upgrade your container manually with backup and restore procedure. For more details please see the maintenance part of the [ioBroker Docker image docs](https://docs.buanet.de/iobroker-docker-image/docs/#maintenance).
New major image versions (e.g. v6, v7, v8) usually include a new major version of node! Although js-controller should handle this kind of upgrade fine, in some cases this still results in problems with some adapters. To avoid having trouble with this major version upgrades, it is always a good move to upgrade your container manually with backup and restore procedure. For more details please see the maintenance part of the [ioBroker Docker image docs](https://docs.buanet.de/iobroker-docker-image/docs/#maintenance).
# Quick reference
* Maintained by: [buanet](https://github.com/buanet) and [ioBroker](https://github.com/ioBroker)
* Where to get support: [ioBroker forum](https://forum.iobroker.net/), [Discord channel](https://discord.gg/HwUCwsH), [Telegram channel](https://t.me/+Xfjuou6-LztkOTBi), [Facebook group](https://www.facebook.com/groups/440499112958264)
* Where to get support: [ioBroker forum](https://forum.iobroker.net/), [Discord channel](https://discord.gg/5jGWNKnpZ8), [Facebook group](https://www.facebook.com/groups/440499112958264)
* Where to report issues: [Github Repository Issues](https://github.com/buanet/ioBroker.docker/issues)
* Supported architectures: amd64, arm32v7, arm64v8
* Changelog: [Github Repository Changelog](https://github.com/buanet/ioBroker.docker/blob/main/CHANGELOG.md)
@@ -37,7 +37,8 @@ New major image versions (e.g. v6, v7, v8) always include a new major version of
It is highly recommended not to use the `latest` tag for production, especially when using any kind of automated update procedure like watchtower. Please use the `latest-v[major_version]` tag instead.
### Node 18 versions
* [`v8.1.0`](https://github.com/buanet/ioBroker.docker/blob/v8.1.0/debian/node18/Dockerfile), [`latest-v8`](https://github.com/buanet/ioBroker.docker/blob/v8.1.0/debian/node18/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v8.1.0/debian/node18/Dockerfile)
* [`v9.0.0`](https://github.com/buanet/ioBroker.docker/blob/v9.0.0/debian12/Dockerfile), [`latest-v9`](https://github.com/buanet/ioBroker.docker/blob/v9.0.0/debian12/Dockerfile), [`latest`](https://github.com/buanet/ioBroker.docker/blob/v9.0.0/debian12/Dockerfile)
* [`v8.1.0`](https://github.com/buanet/ioBroker.docker/blob/v8.1.0/debian/node18/Dockerfile), [`latest-v8`](https://github.com/buanet/ioBroker.docker/blob/v8.1.0/debian/node18/Dockerfile),
* [`v8.0.1`](https://github.com/buanet/ioBroker.docker/blob/v8.0.1/debian/node18/Dockerfile)
* [`v8.0.0`](https://github.com/buanet/ioBroker.docker/blob/v8.0.0/debian/node18/Dockerfile)
@@ -49,7 +50,7 @@ It is highly recommended not to use the `latest` tag for production, especially
# What is ioBroker?
IoBroker is a open source IoT platform written in JavaScript that easily connects smarthome components from different manufactures. With the help of plugins (called: "adapters") ioBroker is able to communicate with a big variety of IoT hardware and services using different protocols and APIs.<br>
All data is stored in a central database that all adapters can access. With this it is very easy to build up logical connections, automation scripts and beautiful visualisations.<br>
All data is stored in a central database that all adapters can access. With this it is very easy to build up logical connections, automation scripts and beautiful visualizations.<br>
For further details please check out [iobroker.net](https://www.iobroker.net).
# How to use this image?
@@ -116,7 +117,6 @@ You could use environment variables to auto configure your ioBroker container on
### Activate special features:
* `AVAHI` (optional) Set `true` to install and activate avahi-daemon for supporting yahka adapter
* `ZWAVE` (optional) Set `true` to install openzwave to support zwave adapter
### Configure environment:
@@ -125,7 +125,8 @@ You could use environment variables to auto configure your ioBroker container on
* `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
* `OFFLINE_MODE` (optional) Set `true` if your container has no or limited internet connection
* `PACKAGES` (optional) Install additional linux packages to your container, packages should be separated by whitespace like this: `package1 package2 package3`.
* `PACKAGES` (optional) Install additional Linux packages to your container, packages should be separated by whitespace like this: `package1 package2 package3`.
* `PACKAGES_UPDATE` (optional) Set `true` if you want to apply Linux package updates at the first start of a new container.
* `PERMISSION_CHECK` (optional, default: true) Set "false" to skip checking and correcting all relevant permissions on container startup (Use at own risk!!!)
* `SETGID` (default: 1000) In some cases it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host
* `SETUID` (default: 1000) In some cases it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host
@@ -145,4 +146,4 @@ For more information about networking with Docker please refer to the [official
# Support the Project
If you like what you see please leave us stars and likes on our repos and join our growing community.
See you soon. :)
See you soon. :)