diff --git a/.github/workflows/docker_build_main_image.yml b/.github/workflows/build-debian-image-main.yml similarity index 78% rename from .github/workflows/docker_build_main_image.yml rename to .github/workflows/build-debian-image-main.yml index bd335df..783059a 100644 --- a/.github/workflows/docker_build_main_image.yml +++ b/.github/workflows/build-debian-image-main.yml @@ -1,24 +1,25 @@ # Github action to build Docker image from main branch (tag: latest) - -name: Build Docker image from main +name: Build debian based image (latest) on: workflow_dispatch: - #release: - # types: - # - published - + release: + types: + - published + schedule: + - cron: '42 3 * * 5' + jobs: - bulid_latest: + bulid-latest-image: runs-on: ubuntu-latest steps: - - name: Checkout (main) + - name: Checkout repo (main) uses: actions/checkout@v2.3.4 with: repository: 'buanet/ioBroker.docker' ref: 'main' - - name: Get and wirte version and date + - name: Get and write version and date id: version run: | VERSION="$(cat .VERSION)" @@ -30,83 +31,83 @@ jobs: echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV echo "This is the Buildnumber/Timestamp: $DATI" echo "dati=$DATI" >> $GITHUB_ENV - sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./amd64/Dockerfile > ./amd64/Dockerfile.tmp - mv -f ./amd64/Dockerfile.tmp ./amd64/Dockerfile - sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./arm32v7/Dockerfile > ./arm32v7/Dockerfile.tmp - mv -f ./arm32v7/Dockerfile.tmp ./arm32v7/Dockerfile - sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$DATI/" ./arm64v8/Dockerfile > ./arm64v8/Dockerfile.tmp - mv -f ./arm64v8/Dockerfile.tmp ./arm64v8/Dockerfile + # 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/node12/Dockerfile > ./debian/node12/Dockerfile.tmp + mv -f ./debian/node12/Dockerfile.tmp ./debian/node12/Dockerfile - name: Set up manifest tool run: | wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool chmod +x manifest-tool - + - name: Set up QEMU uses: docker/setup-qemu-action@v1.2.0 - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v1.3.0 + uses: docker/setup-buildx-action@v1.5.1 - - name: Login to DockerHub + - name: Login to DockerHub (buanet) uses: docker/login-action@v1.10.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - + - name: Login to GitHub Container Registry uses: docker/login-action@v1.10.0 with: registry: ghcr.io username: ${{ secrets.PACKAGES_USER }} password: ${{ secrets.PACKAGES_PASS }} - + - name: Build Docker image (amd64) uses: docker/build-push-action@v2.6.1 with: - context: ./amd64 - file: ./amd64/Dockerfile + context: ./debian + file: ./debian/node12/Dockerfile push: true platforms: linux/amd64 tags: | buanet/iobroker:${{ env.version }}-amd64, ghcr.io/buanet/iobroker:${{ env.version }}-amd64 - - - name: Build Docker image (armv32v7) + + - name: Build Docker image (arm32v7) uses: docker/build-push-action@v2.6.1 with: - context: ./arm32v7 - file: ./arm32v7/Dockerfile + context: ./debian + file: ./debian/node12/Dockerfile push: true platforms: linux/arm/v7 tags: | buanet/iobroker:${{ env.version }}-arm32v7, ghcr.io/buanet/iobroker:${{ env.version }}-arm32v7 - + - name: Build Docker image (arm64v8) uses: docker/build-push-action@v2.6.1 with: - context: ./arm64v8 - file: ./arm64v8/Dockerfile + context: ./debian + file: ./debian/node12/Dockerfile push: true - platforms: linux/arm64 + platforms: linux/arm64/v8 tags: | buanet/iobroker:${{ env.version }}-arm64v8, ghcr.io/buanet/iobroker:${{ env.version }}-arm64v8 - - - name: Create and push manifests + + - name: Create and push manifests (buanet) run: | sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/latest/g" ./manifest.yml > manifest_latest.yaml ./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_latest.yaml - sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/${{ env.majorversion }}/g" ./manifest.yml > manifest_latestmajor.yaml - ./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_latestmajor.yaml - sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/${{ env.version }}/g" ./manifest.yml > manifest_version.yaml - ./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_version.yaml sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/latest/g" ./manifest_ghcr.yml > manifest_ghcr_latest.yaml ./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_latest.yaml - sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/${{ env.majorversion }}/g" ./manifest_ghcr.yml > manifest_ghcr_latestmajor.yaml - ./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_latestmajor.yaml + sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/${{ env.majorversion }}/g" ./manifest.yml > manifest_majorversion.yaml + ./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_majorversion.yaml + sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/${{ env.majorversion }}/g" ./manifest_ghcr.yml > manifest_ghcr_majorversion.yaml + ./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_majorversion.yaml + sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/${{ env.version }}/g" ./manifest.yml > manifest_version.yaml + ./manifest-tool --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }} push from-spec manifest_version.yaml sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/${{ env.version }}/g" ./manifest_ghcr.yml > manifest_ghcr_version.yaml ./manifest-tool --username ${{ secrets.PACKAGES_USER }} --password ${{ secrets.PACKAGES_PASS }} push from-spec manifest_ghcr_version.yaml @@ -128,4 +129,4 @@ jobs: env: OWNER: buanet PACKAGE_NAME: iobroker - PER_PAGE: 100 + PER_PAGE: 100 diff --git a/.github/workflows/build-debian-image-main_iob.yml b/.github/workflows/build-debian-image-main_iob.yml new file mode 100644 index 0000000..ed4edba --- /dev/null +++ b/.github/workflows/build-debian-image-main_iob.yml @@ -0,0 +1,96 @@ +# Github action to build Docker image from main branch for iobroker/iobroker (tag: latest) +name: Build debian based image (latest) + +on: + workflow_dispatch: + release: + types: + - published + schedule: + - cron: '42 3 * * 5' + +jobs: + bulid-latest-image: + runs-on: ubuntu-latest + steps: + - name: Checkout repo (main) + uses: actions/checkout@v2.3.4 + with: + repository: 'buanet/ioBroker.docker' + ref: 'main' + + - name: Get and write version and date + id: version + run: | + VERSION="$(cat .VERSION)" + MAJORVERSION="$(cat .VERSION | cut -c 1-2 | sed -r 's#^(.{0})#\1latest-#')" + DATI="$(date --rfc-3339=seconds | sed 's/ /T/')" + echo "This is the Version: $VERSION" + echo "version=$VERSION" >> $GITHUB_ENV + echo "This is the Major Version: $MAJORVERSION" + echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV + echo "This is the Buildnumber/Timestamp: $DATI" + echo "dati=$DATI" >> $GITHUB_ENV + # startup script + sed -e "s/\${VERSION}/$VERSION/" -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/node12/Dockerfile > ./debian/node12/Dockerfile.tmp + mv -f ./debian/node12/Dockerfile.tmp ./debian/node12/Dockerfile + + - name: Set up manifest tool + run: | + wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool + chmod +x manifest-tool + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1.2.0 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1.5.1 + + - name: Login to DockerHub (iobroker) + uses: docker/login-action@v1.10.0 + with: + username: ${{ secrets.DOCKER_USER_IOB }} + password: ${{ secrets.DOCKER_PASS_IOB }} + + - name: Build Docker image (amd64) + uses: docker/build-push-action@v2.6.1 + with: + context: ./debian + file: ./debian/node12/Dockerfile + push: true + platforms: linux/amd64 + tags: | + iobroker/iobroker:${{ env.version }}-amd64, + + - name: Build Docker image (arm32v7) + uses: docker/build-push-action@v2.6.1 + with: + context: ./debian + file: ./debian/node12/Dockerfile + push: true + platforms: linux/arm/v7 + tags: | + iobroker/iobroker:${{ env.version }}-arm32v7, + + - name: Build Docker image (arm64v8) + uses: docker/build-push-action@v2.6.1 + with: + context: ./debian + file: ./debian/node12/Dockerfile + push: true + platforms: linux/arm64/v8 + tags: | + iobroker/iobroker:${{ env.version }}-arm64v8, + + - name: Create and push manifests (iobroker) + run: | + sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/latest/g" ./manifest_iob.yml > manifest_latest_iob.yaml + ./manifest-tool --username ${{ secrets.DOCKER_USER_IOB }} --password ${{ secrets.DOCKER_PASS_IOB }} push from-spec manifest_latest_iob.yaml + sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/${{ env.majorversion }}/g" ./manifest_iob.yml > manifest_majorversion_iob.yaml + ./manifest-tool --username ${{ secrets.DOCKER_USER_IOB }} --password ${{ secrets.DOCKER_PASS_IOB }} push from-spec manifest_majorversion_iob.yaml + sed -e "s/\${VERSION}/${{ env.version }}/g" -e "s/\${DOCKERTAG}/${{ env.version }}/g" ./manifest_iob.yml > manifest_version_iob.yaml + ./manifest-tool --username ${{ secrets.DOCKER_USER_IOB }} --password ${{ secrets.DOCKER_PASS_IOB }} push from-spec manifest_version_iob.yaml diff --git a/debian/node12/Dockerfile b/debian/node12/Dockerfile index d594501..ddceb6e 100644 --- a/debian/node12/Dockerfile +++ b/debian/node12/Dockerfile @@ -48,9 +48,11 @@ WORKDIR / RUN apt-get update \ && curl -sL https://iobroker.net/install.sh | bash - \ && mkdir -p /opt/scripts/.docker_config/ \ - && echo $(hostname) > /opt/scripts/.docker_config/.install_host \ && 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 \ diff --git a/debian/node14/Dockerfile b/debian/node14/Dockerfile index 6c9efb2..f565b39 100644 --- a/debian/node14/Dockerfile +++ b/debian/node14/Dockerfile @@ -48,9 +48,11 @@ WORKDIR / RUN apt-get update \ && curl -sL https://iobroker.net/install.sh | bash - \ && mkdir -p /opt/scripts/.docker_config/ \ - && echo $(hostname) > /opt/scripts/.docker_config/.install_host \ && 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 \ diff --git a/debian/scripts/iobroker_startup.sh b/debian/scripts/iobroker_startup.sh index 84e2964..643eeb8 100644 --- a/debian/scripts/iobroker_startup.sh +++ b/debian/scripts/iobroker_startup.sh @@ -74,9 +74,6 @@ echo "----- Step 1 of 5: Preparing container echo "$(printf -- '-%.0s' {1..80})" echo ' ' -# Adding ckeck file for easy docker detection by ioBroker -echo "${VERSION}" > /opt/scripts/.docker_config/.thisisdocker - # Installing/updating additional packages, registering maintenance script and setting uid/gid if [ "$packages" != "" ] || [ $(cat /etc/group | grep 'iobroker:' | cut -d':' -f3) != $setgid ] || [ $(cat /etc/passwd | grep 'iobroker:' | cut -d':' -f3) != $setuid ] || [ -f /opt/.firstrun ] then @@ -132,13 +129,10 @@ then echo "There is no data detected in /opt/iobroker." echo "Restoring initial ioBroker installation..." tar -xf /opt/initial_iobroker.tar -C / - # Removing UUID generated on docker image build - bash iobroker unsetup -y echo "Done." elif [ -f /opt/iobroker/iobroker ] then echo "Existing installation of ioBroker detected in /opt/iobroker." - rm -f /opt/scripts/.docker_config/.install_host elif [ $(ls *_backupiobroker.tar.gz 2> /dev/null | wc -l) != "0" ] && [ $(tar -ztvf /opt/iobroker/*_backupiobroker.tar.gz "backup/backup.json" 2> /dev/null | wc -l) != "0" ] then if [ "$multihost" = "slave" ] @@ -159,11 +153,6 @@ then echo "Done." echo "Restoring ioBroker..." bash iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1 - # fixing hostname issues when restoring on different host - open issue https://github.com/ioBroker/ioBroker.js-controller/issues/1450 - #if [ $(jq -r .system.hostname ./iobroker-data/iobroker.json) != $(hostname) ] - #then - # bash iobroker host $(jq -r .system.hostname ./iobroker-data/iobroker.json) - #fi echo "Done." echo ' ' echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" @@ -216,24 +205,6 @@ then echo ' ' fi -# Checking for first run of a new installation and renaming ioBroker -#if [ -f /opt/scripts/.docker_config/.install_host ] -#then -# echo "Looks like this is a new and empty installation of ioBroker." -# echo "Hostname needs to be updated to " $(hostname)"..." -# bash iobroker host $(cat /opt/scripts/.docker_config/.install_host) -# rm -f /opt/scripts/.docker_config/.install_host -# echo "Done." -# echo ' ' -#elif [ $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ] -#then -# echo "Hostname in ioBroker does not match the hostname of this container." -# echo "Updating hostname to " $(hostname)"..." -# bash iobroker host $(iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') -# echo "Done." -# echo ' ' -#fi - ##### # STEP 4 - Setting up prerequisites for some ioBroker-adapters diff --git a/manifest_iob.yml b/manifest_iob.yml new file mode 100644 index 0000000..80ddb53 --- /dev/null +++ b/manifest_iob.yml @@ -0,0 +1,19 @@ +image: iobroker/iobroker:${DOCKERTAG} +manifests: + - + image: iobroker/iobroker:${VERSION}-amd64 + platform: + architecture: amd64 + os: linux + - + image: iobroker/iobroker:${VERSION}-arm64v8 + platform: + architecture: arm64 + variant: v8 + os: linux + - + image: iobroker/iobroker:${VERSION}-arm32v7 + platform: + architecture: arm + variant: v7 + os: linux diff --git a/src/README_docker_hub_buanet.md b/src/README_docker_hub_buanet.md new file mode 100644 index 0000000..f62f20e --- /dev/null +++ b/src/README_docker_hub_buanet.md @@ -0,0 +1,122 @@ + + +[![Docker Image Size (tag)](https://img.shields.io/docker/image-size/buanet/iobroker/latest?style=flat)](https://hub.docker.com/repository/docker/buanet/iobroker) +[![Docker Pulls](https://img.shields.io/docker/pulls/buanet/iobroker?style=flat)](https://hub.docker.com/repository/docker/buanet/iobroker) +[![Docker Stars](https://img.shields.io/docker/stars/buanet/iobroker?style=flat)](https://hub.docker.com/repository/docker/buanet/iobroker)
+[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/buanet/ioBroker.docker/Build%20debian%20based%20image%20\(beta\))](https://github.com/buanet/docker.watchdog/actions/workflows/docker_build_main_image.yml) +[![Release](https://img.shields.io/github/v/release/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/releases) +[![Github Issues](https://img.shields.io/github/issues/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/issues)
+[![Source](https://img.shields.io/badge/source-github-blue?style=flat)](https://github.com/buanet/ioBroker.docker) +[![License](https://img.shields.io/github/license/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/blob/master/LICENSE.md) +[![Donate](https://img.shields.io/badge/donate-paypal-blue?style=flat)](https://paypal.me/buanet) + +**Note:** New major versions (e.g. v4, v5, v6) of the image always come with a new major verson of node (preinstalled). To avoid issues when upgrading into a new major version the best practice recommendation is to migrate using backup and restore procedure. For more details please see "Best Practices" section on official [readme.md](https://github.com/buanet/ioBroker.docker#best-practices). + +# 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/), [ioBroker Discord Channel](https://discord.gg/HwUCwsH) +* 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) +* Source code: [Github Repository](https://github.com/buanet/ioBroker.docker) +* All other questions should be answered here: [Github Repository Readme](https://github.com/buanet/ioBroker.docker#readme) or [iobroker.net](https://www.iobroker.net/) + +# Supported tags + +* `v5.2.0`, `v5.2.0-amd64`, `v5.2.0-arm32v7`, `v5.2.0-arm64v8`, `latest-v5`, `latest` +* `v5.2.0-node14`, `v5.2.0-node14-amd64`, `v5.2.0-node14-arm32v7`, `v5.2.0-node14-arm64v8`, `latest-v5-node14`, `latest-node14` +* `v5.1.0`, `v5.2.0-amd64`, `v5.2.0-armv7hf`, `v5.2.0-aarch64` + +# What is ioBroker? + +IoBroker is a open source IoT platform written in JavaScript that easily connects smarthome componets 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.
+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.
+For further details please check out [iobroker.net](https://www.iobroker.net). + +# How to use this image? + +## Running from command-line + +For taking a first look at iobroker on docker it would be enough to simply run the following basic docker run command: + +``` +docker run -p 8081:8081 --name iobroker -h iobroker iobroker/iobroker +``` + +## Running with docker-compose + +When using docker-compose define the iobroker service like this: + +``` +version: '2' + +services: + iobroker: + container_name: iobroker + image: iobroker/iobroker + hostname: iobroker + restart: always + ports: + - "8081:8081" +``` + +## Persistent data + +To make your ioBroker configuration persistent it is recommended to mount a volume or path to `/opt/iobroker`. + +On command-line add +``` +-v iobrokerdata:/opt/iobroker +``` +On docker-compose add +``` + volumes: + - iobrokerdata:/opt/iobroker +``` + +## Configuration via environment variables + +You could use environment variables to auto configure your ioBroker container on startup. + +### Configure ioBroker application: + +* `IOB_ADMINPORT`(optional, default: 8081) Sets ioBroker adminport on startup +* `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_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_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_TYPE` (optional, default: file) Sets type of ioBroker states db, could be "file" or "redis" + +### Activate special features: + +* `AVAHI` (optional, default: false) Installs and activates avahi-daemon for supporting yahka-adapter, can be "true" or "false" +* `ZWAVE` (optional, default: false) Installs openzwave to support zwave-adapter, can be "true" or "false" + +### Configure environment: + +* `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 +* `LC_ALL` (optional, default: de_DE.UTF-8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 +* `PACKAGES` (optional) Installs additional linux packages to your container, packages should be seperated 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 +* `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 +* `TZ` (optional, default: Europe/Berlin) Specifys the timeszone +* `USBDEVICES` (optional) Sets relevant permissions on mounted devices like "/dev/ttyACM0". For more than one device separate with ";". + +## Notes about Docker networks + +The examples above are dealing with the Docker default bridge network. In general there are [some reasons](https://docs.docker.com/network/bridge/#differences-between-user-defined-bridges-and-the-default-bridge) why it might be the better choice to use a user-defined bridge network. + +Using a Docker bridge network works fine for taking a first look and with most of the ioBroker adapters (if you dont forget to redirect the ports your adapers use).
+But some ioBroker adapters are using techniques like [Multicast](https://en.wikipedia.org/wiki/Multicast) or [Broadcast](https://en.wikipedia.org/wiki/Broadcasting_(networking)) for automatic detection of IoT devices
+In this case it may be useful to switch to [host](https://docs.docker.com/network/host/) or [MACVLAN](https://docs.docker.com/network/macvlan/) network. + +For more information about networking with Docker please refer to the [official Docker docs](https://docs.docker.com/network/). + +# 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. :) diff --git a/src/README_docker_hub_iobroker.md b/src/README_docker_hub_iobroker.md new file mode 100644 index 0000000..70b7b78 --- /dev/null +++ b/src/README_docker_hub_iobroker.md @@ -0,0 +1,121 @@ + + +[![Docker Image Size (tag)](https://img.shields.io/docker/image-size/buanet/iobroker/latest?style=flat)](https://hub.docker.com/repository/docker/buanet/iobroker) +[![Docker Pulls](https://img.shields.io/docker/pulls/buanet/iobroker?style=flat)](https://hub.docker.com/repository/docker/buanet/iobroker) +[![Docker Stars](https://img.shields.io/docker/stars/buanet/iobroker?style=flat)](https://hub.docker.com/repository/docker/buanet/iobroker)
+[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/buanet/ioBroker.docker/Build%20debian%20based%20image%20\(beta\))](https://github.com/buanet/docker.watchdog/actions/workflows/docker_build_main_image.yml) +[![Release](https://img.shields.io/github/v/release/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/releases) +[![Github Issues](https://img.shields.io/github/issues/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/issues)
+[![Source](https://img.shields.io/badge/source-github-blue?style=flat)](https://github.com/buanet/ioBroker.docker) +[![License](https://img.shields.io/github/license/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/blob/master/LICENSE.md) + +**Note:** New major versions (e.g. v4, v5, v6) of the image always come with a new major verson of node (preinstalled). To avoid issues when upgrading into a new major version the best practice recommendation is to migrate using backup and restore procedure. For more details please see "Best Practices" section on official [readme.md](https://github.com/buanet/ioBroker.docker#best-practices). + +# 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/), [ioBroker Discord Channel](https://discord.gg/HwUCwsH) +* 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) +* Source code: [Github Repository](https://github.com/buanet/ioBroker.docker) +* All other questions should be answered here: [Github Repository Readme](https://github.com/buanet/ioBroker.docker#readme) or [iobroker.net](https://www.iobroker.net/) + +# Supported tags + +* `v5.2.0`, `v5.2.0-amd64`, `v5.2.0-arm32v7`, `v5.2.0-arm64v8`, `latest-v5`, `latest` +* `v5.2.0-node14`, `v5.2.0-node14-amd64`, `v5.2.0-node14-arm32v7`, `v5.2.0-node14-arm64v8`, `latest-v5-node14`, `latest-node14` +* `v5.1.0`, `v5.2.0-amd64`, `v5.2.0-armv7hf`, `v5.2.0-aarch64` + +# What is ioBroker? + +IoBroker is a open source IoT platform written in JavaScript that easily connects smarthome componets 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.
+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.
+For further details please check out [iobroker.net](https://www.iobroker.net). + +# How to use this image? + +## Running from command-line + +For taking a first look at iobroker on docker it would be enough to simply run the following basic docker run command: + +``` +docker run -p 8081:8081 --name iobroker -h iobroker iobroker/iobroker +``` + +## Running with docker-compose + +When using docker-compose define the iobroker service like this: + +``` +version: '2' + +services: + iobroker: + container_name: iobroker + image: iobroker/iobroker + hostname: iobroker + restart: always + ports: + - "8081:8081" +``` + +## Persistent data + +To make your ioBroker configuration persistent it is recommended to mount a volume or path to `/opt/iobroker`. + +On command-line add +``` +-v iobrokerdata:/opt/iobroker +``` +On docker-compose add +``` + volumes: + - iobrokerdata:/opt/iobroker +``` + +## Configuration via environment variables + +You could use environment variables to auto configure your ioBroker container on startup. + +### Configure ioBroker application: + +* `IOB_ADMINPORT`(optional, default: 8081) Sets ioBroker adminport on startup +* `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_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_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_TYPE` (optional, default: file) Sets type of ioBroker states db, could be "file" or "redis" + +### Activate special features: + +* `AVAHI` (optional, default: false) Installs and activates avahi-daemon for supporting yahka-adapter, can be "true" or "false" +* `AVAHI` (optional, default: false) Installs and activates avahi-daemon for supporting yahka-adapter, can be "true" or "false" + +### Configure environment: + +* `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 +* `LC_ALL` (optional, default: de_DE.UTF-8) The following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8 +* `PACKAGES` (optional) Installs additional linux packages to your container, packages should be seperated 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 +* `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 +* `TZ` (optional, default: Europe/Berlin) Specifys the timeszone +* `USBDEVICES` (optional) Sets relevant permissions on mounted devices like "/dev/ttyACM0". For more than one device separate with ";". + +## Notes about Docker networks + +The examples above are dealing with the Docker default bridge network. In general there are [some reasons](https://docs.docker.com/network/bridge/#differences-between-user-defined-bridges-and-the-default-bridge) why it might be the better choice to use a user-defined bridge network. + +Using a Docker bridge network works fine for taking a first look and with most of the ioBroker adapters (if you dont forget to redirect the ports your adapers use).
+But some ioBroker adapters are using techniques like [Multicast](https://en.wikipedia.org/wiki/Multicast) or [Broadcast](https://en.wikipedia.org/wiki/Broadcasting_(networking)) for automatic detection of IoT devices
+In this case it may be useful to switch to [host](https://docs.docker.com/network/host/) or [MACVLAN](https://docs.docker.com/network/macvlan/) network. + +For more information about networking with Docker please refer to the [official Docker docs](https://docs.docker.com/network/). + +# 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. :) diff --git a/src/img/iobroker_logo.png b/src/img/iobroker_logo.png new file mode 100644 index 0000000..00c71bb Binary files /dev/null and b/src/img/iobroker_logo.png differ