mirror of
https://github.com/buanet/ioBroker.docker.git
synced 2025-12-17 18:39:01 +02:00
Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
030109f260 | ||
|
|
c5c96d9f3b | ||
|
|
6f251e8a2d | ||
|
|
cc2174285e | ||
|
|
90458ae6b7 | ||
|
|
7b0f8f5ba9 | ||
|
|
b67ca2de19 | ||
|
|
7e31f7f18a | ||
|
|
97a4d02f0d | ||
|
|
85ffcfd00a | ||
|
|
c67fe82e6f | ||
|
|
e1268aa27c | ||
|
|
abbb905616 | ||
|
|
6b4f4277ae | ||
|
|
c4c6cdf4de | ||
|
|
2d701d02f7 | ||
|
|
9035c9e9a1 | ||
|
|
122307dd38 | ||
|
|
7c05c29069 | ||
|
|
ebd7822e9a | ||
|
|
7dc1c8e74b | ||
|
|
1606dc0b97 | ||
|
|
6b14bc2617 | ||
|
|
0265e12afb | ||
|
|
012a2d2363 | ||
|
|
b0524381ce | ||
|
|
74b0f246cd | ||
|
|
78399ff13b | ||
|
|
5b083a98bb | ||
|
|
0d775350c5 | ||
|
|
575050d5a4 | ||
|
|
9eb183d206 | ||
|
|
e0c1cec14b | ||
|
|
79aa59cf69 | ||
|
|
b89ee16f44 | ||
|
|
b74cfe57c1 | ||
|
|
305a13b0b0 | ||
|
|
c80f25cca1 | ||
|
|
aed7604906 | ||
|
|
a8dd8897eb | ||
|
|
7736e05e08 | ||
|
|
2c2abee86a | ||
|
|
b28250e9f8 |
105
.travis.yml
Normal file
105
.travis.yml
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
sudo: required
|
||||||
|
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
- beta
|
||||||
|
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
language: bash
|
||||||
|
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- secure: "iqK7JBsQiYceKOvRkmSa6okzXn3BygEPZjffby4agaVCwIt2SYLAcBOisOoKDpyAX+DUWlHz3gITImVa+uIna6Ue7k4C2AGJVDr87G6iq57Tn6yjrfhPs/TW9/CWvKg/G4uvKEnycMiLDXdcctSMwRr3ZwzJEdeEdmNZVsd2LP/5U0I/2K2Io22tNciSKhqlSaIfhK4f6Jk7xffnQFjwy+P9qPN18oI1fDyeHx6ZWyN3YhQQ4eGyxHjxZjlhCxSvu5R4DMf1jFIoLRAr6G5jrQacn0pG8PtBVLoYT4RsPy+fwUtXmnWWjeXK0IrU1njZf/DUteI9xnaDcHzZYj+d7MeSUc6BuWOyx9lO3ZwBWDNycYsKaF5so4RpdzoY/gfJMlK3uWDbADb46dWzPD5gb3pEROKau3fBDHS5eaR5e1Bxzz6FGoYWYfsQHqpg9g7v4BRFq+Jh0+v47fdyMxgK/Nm4+r7+ht77Usu29+X6X8F4iwrBJ/ix5xIf7iMoH/ZGvq6BEKi/1t9zdXMugcWOqwlYx9k6J9bQhBfw8YucLmgl3ynzrPaLlPEpY9cnb7hcOUDZoHI7KK2zF/y3yfNr2BqlRbm39HFWfnwuJPO5VLYGs5QubeVj9u1M+5Qo4erPuQBBc4mHP4eF2PmRA+wiVWki0z+U2skFQppkCfrbH8c="
|
||||||
|
- secure: "iqoZUcWgZueNQrNldF/ugwyU1LR5E+doTfjY0exQqAKjntG5n2QqYZ/+dX1gqvkfy1kuMINTBWfqSALbhfTTK7EfUjqmcnaks4CMVZQkhH/FyCOYHqSBSSN7j4XeHt1sXn1FRiSpyrZOUoOuyqoBRe3JoWhdQZAGxNzX3sJllwnKa6M0D6D2l9tUyTWO/jxhgTIoYBSrXvb68ZsCU9jlNBJbylfvEFwuSlwvfa+Mz9vAeCTuza9XDnvcxgwVq3r+YGxfmAhK9fOAvN+lPN+KA0LcIzBaW0sh24voqjfh/pLpsl03zeGNdWzS9r2qYPCP0N3asb5P6CVEbbAGYO1T5PvU78ILXGi4+/x/32O6/I9oXpMVQCFHNn0Gn/8BPRHY4ZOYI9ItnhV9Ncp7hhAWAAqf3KC5GM89l9R5KxFY3bhN/p8nuGresUDU5d57YkaV8rOhPpr0dbAyKFtuzG0+bT1N2ekXyTyMHeAGKiGwfD9bAS4qx6asFO5uw6UriBHNzJ59Cy3GT+W1CctaEuvqJlc6Iqz2KaBozEqnNFcpE2Grny4bzr5fp+b1qCO9TE2LhHU/LR5FTLjQ2wf9/raTM6yboq+guKeXxpySa2w8ABDq0OUAw4mrKqJQJohzBkl3oYTpWUG2JGEyMAJxjkmH0/3GwZESPNLaaYVjQByTDDY="
|
||||||
|
- VERSION="$(cat .VERSION)"
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- wget https://github.com/estesp/manifest-tool/releases/download/v0.7.0/manifest-tool-linux-amd64 -O manifest-tool
|
||||||
|
- chmod +x manifest-tool
|
||||||
|
- docker run --rm --privileged multiarch/qemu-user-static:register
|
||||||
|
- echo "$HUB_PASS" | docker login -u "$HUB_USER" --password-stdin
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
include:
|
||||||
|
- stage: Build images
|
||||||
|
env:
|
||||||
|
- ARCH=amd64
|
||||||
|
- JOB_NAME="Build images"
|
||||||
|
script:
|
||||||
|
- sed -i "s/\$VERSION/${VERSION}/g" $ARCH/scripts/iobroker_startup.sh
|
||||||
|
- docker build -t "buanet/iobroker:$VERSION-$ARCH" ./amd64
|
||||||
|
|
||||||
|
- stage: Build images
|
||||||
|
env:
|
||||||
|
- ARCH=aarch64
|
||||||
|
- JOB_NAME="Build images"
|
||||||
|
script:
|
||||||
|
- docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||||
|
- sed -i "s/\$VERSION/${VERSION}/g" $ARCH/scripts/iobroker_startup.sh
|
||||||
|
- docker build -t "buanet/iobroker:$VERSION-$ARCH" ./aarch64
|
||||||
|
|
||||||
|
- stage: Build images
|
||||||
|
env:
|
||||||
|
- ARCH=armv7hf
|
||||||
|
- JOB_NAME="Build images"
|
||||||
|
script:
|
||||||
|
- docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||||
|
- sed -i "s/\$VERSION/${VERSION}/g" $ARCH/scripts/iobroker_startup.sh
|
||||||
|
- docker build -t "buanet/iobroker:$VERSION-$ARCH" ./armv7hf
|
||||||
|
|
||||||
|
- stage: Manifest
|
||||||
|
env:
|
||||||
|
- JOB_NAME="Manifest"
|
||||||
|
script:
|
||||||
|
- echo Placeholder
|
||||||
|
|
||||||
|
after_success:
|
||||||
|
# tag and push built images
|
||||||
|
- >
|
||||||
|
if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$JOB_NAME" == "Build images" ] ; then
|
||||||
|
docker push buanet/iobroker:$VERSION-$ARCH
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$TRAVIS_BRANCH" == "beta" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$JOB_NAME" == "Build images" ] ; then
|
||||||
|
docker push buanet/iobroker:$VERSION-$ARCH
|
||||||
|
fi
|
||||||
|
|
||||||
|
# update repository manifest for multiarch and push to hub
|
||||||
|
- >
|
||||||
|
if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$JOB_NAME" == "Manifest" ]; then
|
||||||
|
cat manifest.yml | sed "s/\$VERSION/${VERSION}/g" > manifest.yaml
|
||||||
|
|
||||||
|
#manifest for image: buanet/iobroker:version
|
||||||
|
cat manifest.yaml | sed "s/\$DOCKERTAG/${VERSION}/g" > manifestversion.yaml
|
||||||
|
|
||||||
|
#manifest for image: buanet/iobroker:latest
|
||||||
|
cat manifest.yaml | sed "s/\$DOCKERTAG/latest/g" > manifestlatest.yaml
|
||||||
|
|
||||||
|
#push to hub
|
||||||
|
mv manifestversion.yaml iobroker.yaml
|
||||||
|
./manifest-tool --username $HUB_USER --password $HUB_PASS push from-spec iobroker.yaml
|
||||||
|
|
||||||
|
mv manifestlatest.yaml iobroker.yaml
|
||||||
|
./manifest-tool --username $HUB_USER --password $HUB_PASS push from-spec iobroker.yaml
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$TRAVIS_BRANCH" == "beta" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$JOB_NAME" == "Manifest" ]; then
|
||||||
|
|
||||||
|
cat manifest.yml | sed "s/\$VERSION/${VERSION}/g" > manifest.yaml
|
||||||
|
|
||||||
|
#manifest for image: buanet/iobroker:version
|
||||||
|
cat manifest.yaml | sed "s/\$DOCKERTAG/${VERSION}/g" > manifestversion.yaml
|
||||||
|
|
||||||
|
#manifest for image: buanet/iobroker:beta
|
||||||
|
cat manifest.yaml | sed "s/\$DOCKERTAG/beta/g" > manifestbeta.yaml
|
||||||
|
|
||||||
|
#push to hub
|
||||||
|
mv manifestversion.yaml iobroker.yaml
|
||||||
|
./manifest-tool --username $HUB_USER --password $HUB_PASS push from-spec iobroker.yaml
|
||||||
|
|
||||||
|
mv manifestbeta.yaml iobroker.yaml
|
||||||
|
./manifest-tool --username $HUB_USER --password $HUB_PASS push from-spec iobroker.yaml
|
||||||
|
fi
|
||||||
161
README.md
161
README.md
@@ -1,25 +1,33 @@
|
|||||||
# docker-iobroker
|
# ioBroker for Docker
|
||||||
Docker image for ioBroker (http://iobroker.net) based on debian:latest (http://hub.docker.com/_/debian/)
|
Source: https://github.com/buanet/docker-iobroker
|
||||||
|
|
||||||
This project creates a Docker image for running ioBroker in a Docker container. It is made for and tested on a Synology Disk Station 1515+ with DSM 6 and Docker-package installed. But it should also work on other systems with Docker (Normally I do a small additional test on my Debian-VM with Docker CE)!
|
IoBroker for Docker is an Dockerimage for ioBroker (http://iobroker.net) smarthome software.
|
||||||
|
|
||||||
|
It is originally made for, and tested on a Synology Disk Station 1515+ with DSM 6 and Docker-package installed. But it should also work on other systems with Docker installed!
|
||||||
|
|
||||||
|
Version 4 now supports running the Image in Docker on the following architectures: amd64, armv7hf, aarch64.
|
||||||
|
Feel free to ask for more architectures by opening an github-issue.
|
||||||
|
|
||||||
## Important
|
## Important
|
||||||
|
|
||||||
Switching an existing installation from docker-iobroker-image v1 to v2 or greater means switching iobroker itself from node6 to node8! This requires additional steps inside ioBroker! After upgrading iobroker-container you have to call "reinstall.sh" for recompiling your installation for the use with node8. For Details see official ioBroker-documentation (http://www.iobroker.net/docu/?page_id=8323&lang=de). Make backup first!!!
|
The new v4 comes again with a new major node-version (node10)!
|
||||||
|
If you are updating an existing Installation you have to perform some additional steps inside ioBroker!
|
||||||
|
After upgrading your iobroker-container you have to call "reinstall.sh" for recompiling your installation for the use with node10!
|
||||||
|
For Details see official ioBroker-documentation (http://www.iobroker.net/docu/?page_id=8323&lang=de). Make backup first!
|
||||||
|
|
||||||
At the moment v3.0.0 does no longer support running in host-mode on Synology-devices because of a kernel issue in actual DSM-kernel! Please use bridged or macvlan mode. For details see new tutorial linked in the following.
|
## Installation & usage
|
||||||
|
|
||||||
## Installation & Usage
|
A detailed tutorial (german, based on v3.0.0) can be found here: [https://buanet.de](https://buanet.de/2019/05/iobroker-unter-docker-auf-der-synology-diskstation-v3/). Please notice that the old tutorial is outdated and does no longer work!
|
||||||
|
|
||||||
A detailed tutorial (german, based on new v3.0.0) can be found here: [https://buanet.de](https://buanet.de/2019/05/iobroker-unter-docker-auf-der-synology-diskstation-v3/). Please notice that the old tutorial does no longer work!
|
|
||||||
|
|
||||||
For discussion and support please visit [ioBroker-forum-thread](http://forum.iobroker.net/viewtopic.php?f=17&t=5089) or use the comments section at the linked tutorial. Please do not contact me directly for any support-reasons. Every support-question should be answered in a public place. Thank you.
|
For discussion and support please visit [ioBroker-forum-thread](http://forum.iobroker.net/viewtopic.php?f=17&t=5089) or use the comments section at the linked tutorial. Please do not contact me directly for any support-reasons. Every support-question should be answered in a public place. Thank you.
|
||||||
|
|
||||||
## Special Settings
|
## Special settings and features
|
||||||
|
|
||||||
In v3.0.0 I added some new features. The following will give some short information about that.
|
The following will give a short overview.
|
||||||
|
|
||||||
### Environment Variables
|
### Environment variables
|
||||||
|
|
||||||
|
Since v3 is possible to set some environment variables to configure a new container.
|
||||||
|
|
||||||
|env|value|description|
|
|env|value|description|
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
@@ -29,10 +37,13 @@ In v3.0.0 I added some new features. The following will give some short informat
|
|||||||
|LANG|de_DE.UTF-8|following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8|
|
|LANG|de_DE.UTF-8|following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8|
|
||||||
|LC_ALL|de_DE|following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8|
|
|LC_ALL|de_DE|following locales are pre-generated: de_DE.UTF-8, en_US.UTF-8|
|
||||||
|TZ|Europe/Berlin|all valid Linux-timezones|
|
|TZ|Europe/Berlin|all valid Linux-timezones|
|
||||||
|
|SETUID|1000|for security reasons it might be useful to specify the uid of the containers iobroker user to match an existing user on the docker host|
|
||||||
|
|SETGID|1000|for security reasons it might be useful to specify the gid of the containers iobroker user to match an existing group on the docker host|
|
||||||
|
|ZWAVE|false|will install openzwave to support zwave-adapter|
|
||||||
|
|
||||||
### Mounting Folder/ Volume
|
### Mounting Folder/ Volume
|
||||||
|
|
||||||
It is now possible to mount an empty folder to /opt/iobroker during first startup of the container. The Startupscript will check this folder and restore content if empty.
|
It is now possible to mount an empty folder to /opt/iobroker during first startup of the container. The Startupscript will check this folder and restore content if it is empty.
|
||||||
|
|
||||||
It is absolutely recommended to use a mounted folder or persistent volume for /opt/iobroker folder!
|
It is absolutely recommended to use a mounted folder or persistent volume for /opt/iobroker folder!
|
||||||
|
|
||||||
@@ -40,73 +51,81 @@ This also works with mounting a folder containing an existing ioBroker-installat
|
|||||||
|
|
||||||
### Permission Fixer
|
### Permission Fixer
|
||||||
|
|
||||||
I added some code for fixing permissions for new iobroker-user. Permission-fixing is called on first start of the container. This might take a few minutes. Please be patient!
|
After some issues with permissions related to the use of a dedicated user for ioBroker, I added some code for fixing permissions on container startup. This might take a few minutes on first startup. Please take a look at the logs and be patient!
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
### v4.0.0 (2019-10-25)
|
||||||
|
* v3.1.4beta (2019-10-23)
|
||||||
|
* added env for zwave support
|
||||||
|
* v3.1.3beta (2019-10-17)
|
||||||
|
* enhanced logging of startup-script
|
||||||
|
* multiarch support (amd64, aarch64, armv7hf)
|
||||||
|
* v3.1.2beta (2019-09-03)
|
||||||
|
* using node 10 instead of node 8
|
||||||
|
* v3.1.1beta (2019-09-02)
|
||||||
|
* adding env for setting uid/ gid for iobroker-user
|
||||||
|
|
||||||
|
### v3.1.0 (2019-08-21)
|
||||||
|
* v3.0.3beta (2019-08-21)
|
||||||
|
* switching base image from "debian:latest" to "debian:stretch"
|
||||||
|
* v3.0.2beta (2019-06-13)
|
||||||
|
* using gosu instead of sudo
|
||||||
|
* changing output of ioBroker logging
|
||||||
|
* v3.0.1beta (2019-05-18)
|
||||||
|
* ~~switching back to iobroker-daemon for startup~~
|
||||||
|
|
||||||
### v3.0.0 (2019-05-09)
|
### v3.0.0 (2019-05-09)
|
||||||
* bringing changes since v2.0.0 to stable
|
* v2.0.6beta (2019-04-14)
|
||||||
* new tutorial available
|
* added some additional logging
|
||||||
|
* fixing some issues for languag env
|
||||||
### v2.0.6beta (2019-04-14)
|
* added permission fixing on first start
|
||||||
* added some additional logging
|
* v2.0.5beta (2019-02-09)
|
||||||
* fixing some issues for languag env
|
* added ENV to dockerfile
|
||||||
* added permission fixing on first start
|
* added EXPOSE for admin
|
||||||
|
* final testing
|
||||||
### v2.0.5beta (2019-02-09)
|
* v2.0.4beta (2019-01-28)
|
||||||
* added ENV to dockerfile
|
* added support for env variables "avahi" and "packages"
|
||||||
* added EXPOSE for admin
|
* moving avahi-daemon installation into avahi startup script
|
||||||
* final testing
|
* added script for installing optional packages
|
||||||
|
* optimizing logging output
|
||||||
### v2.0.4beta (2019-01-28)
|
* v2.0.3beta (2019-01-24)
|
||||||
* added support for env variables "avahi" and "packages"
|
* added support for running ioBroker under iobroker user
|
||||||
* moving avahi-daemon installation into avahi startup script
|
* optimizing logging output
|
||||||
* added script for installing optional packages
|
* optimizing scripts
|
||||||
* optimizing logging output
|
* v2.0.2beta (2019-01-23)
|
||||||
|
* optimizing and rearraged dockerfile
|
||||||
### v2.0.3beta (2019-01-24)
|
* changes for new ioBroker install script
|
||||||
* added support for running ioBroker under iobroker user
|
* added restoring for empty mounted /opt/iobroker folder
|
||||||
* optimizing logging output
|
* some more small fixes
|
||||||
* optimizing scripts
|
* v2.0.1beta (2019-01-07)
|
||||||
|
* some changes for supporting other docker-environments than synology ds
|
||||||
### v2.0.2beta (2019-01-23)
|
|
||||||
* optimizing and rearraged dockerfile
|
|
||||||
* changes for new ioBroker install script
|
|
||||||
* added restoring for empty mounted /opt/iobroker folder
|
|
||||||
* some more small fixes
|
|
||||||
|
|
||||||
### v2.0.1beta (2019-01-07)
|
|
||||||
* some changes for supporting other docker-environments than synology ds
|
|
||||||
|
|
||||||
### v2.0.0 (2018-12-05)
|
### v2.0.0 (2018-12-05)
|
||||||
* using node8 instead of node6
|
* v1.2.2beta (2018-12-05)
|
||||||
* changes for new iobroker setup
|
* using node8 instead of node6
|
||||||
|
* changes for new iobroker setup
|
||||||
### v1.2.1beta (2018-09-12)
|
* v1.2.1beta (2018-09-12)
|
||||||
* added support for firetv-adapter
|
* added support for firetv-adapter
|
||||||
|
|
||||||
### v1.2.0 (2018-08-21)
|
### v1.2.0 (2018-08-21)
|
||||||
* after testing making 1.1.3beta to latest stable release
|
* v1.1.3beta (2018-08-21)
|
||||||
|
* added ffmpeg-package for yahka to support webcams
|
||||||
|
* v1.1.2beta (2018-04-04)
|
||||||
|
* added ENV for timezone issue
|
||||||
|
* v1.1.1beta (2018-03-29)
|
||||||
|
* added wget package
|
||||||
|
* updated readme.md
|
||||||
|
|
||||||
### v1.1.3beta (2018-08-21)
|
### v1.1.0 (2017-12-10)
|
||||||
* added ffmpeg-package for yahka to support webcams
|
* v1.0.2beta (2017-12-10)
|
||||||
|
* changed startup call to fix restart issue
|
||||||
### v1.1.2beta (2018-04-04)
|
* fixed avahi startup issue
|
||||||
* added ENV for timezone issue
|
* fixed hostname issue
|
||||||
|
* added z-wave support
|
||||||
### v1.1.1beta (2018-03-29)
|
* added logging to /opt/scripts/docker_iobroker_log.txt
|
||||||
* added wget package
|
* v1.0.1beta (2017-08-25)
|
||||||
* updated readme.md
|
* fixed locales issue
|
||||||
|
|
||||||
### v1.1.0 (2017-12-10)
|
|
||||||
* changed startup call to fix restart issue
|
|
||||||
* fixed avahi startup issue
|
|
||||||
* fixed hostname issue
|
|
||||||
* added z-wave support
|
|
||||||
* added logging to /opt/scripts/docker_iobroker_log.txt
|
|
||||||
|
|
||||||
### v1.0.1beta (2017-08-25)
|
|
||||||
* fixed locales issue
|
|
||||||
|
|
||||||
### v1.0.0 (2017-08-22)
|
### v1.0.0 (2017-08-22)
|
||||||
* moved and renamed iobroker startup script
|
* moved and renamed iobroker startup script
|
||||||
@@ -141,7 +160,7 @@ I added some code for fixing permissions for new iobroker-user. Permission-fixin
|
|||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2017 Andre Germann
|
Copyright (c) 2017 [André Germann]
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
84
aarch64/Dockerfile
Normal file
84
aarch64/Dockerfile
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
FROM balenalib/aarch64-debian:stretch
|
||||||
|
|
||||||
|
MAINTAINER Andre Germann <https://buanet.de>
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
# Install prerequisites
|
||||||
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
|
||||||
|
acl \
|
||||||
|
apt-utils \
|
||||||
|
build-essential \
|
||||||
|
curl \
|
||||||
|
git \
|
||||||
|
gnupg2 \
|
||||||
|
libcap2-bin \
|
||||||
|
libpam0g-dev \
|
||||||
|
libudev-dev \
|
||||||
|
locales \
|
||||||
|
procps \
|
||||||
|
python \
|
||||||
|
gosu \
|
||||||
|
unzip \
|
||||||
|
wget \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Install node10
|
||||||
|
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash \
|
||||||
|
&& apt-get update && apt-get install -y \
|
||||||
|
nodejs \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Generating locales
|
||||||
|
RUN sed -i 's/^# *\(de_DE.UTF-8\)/\1/' /etc/locale.gen \
|
||||||
|
&& sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \
|
||||||
|
&& locale-gen
|
||||||
|
|
||||||
|
# Create scripts directory and copy scripts
|
||||||
|
RUN mkdir -p /opt/scripts/ \
|
||||||
|
&& chmod 777 /opt/scripts/
|
||||||
|
WORKDIR /opt/scripts/
|
||||||
|
COPY scripts/iobroker_startup.sh iobroker_startup.sh
|
||||||
|
COPY scripts/setup_avahi.sh setup_avahi.sh
|
||||||
|
COPY scripts/setup_packages.sh setup_packages.sh
|
||||||
|
COPY scripts/setup_zwave.sh setup_zwave.sh
|
||||||
|
RUN chmod +x iobroker_startup.sh \
|
||||||
|
&& chmod +x setup_avahi.sh \
|
||||||
|
&& chmod +x setup_packages.sh
|
||||||
|
|
||||||
|
# Install ioBroker
|
||||||
|
WORKDIR /
|
||||||
|
RUN apt-get update \
|
||||||
|
&& curl -sL https://raw.githubusercontent.com/ioBroker/ioBroker/stable-installer/installer.sh | bash - \
|
||||||
|
&& echo $(hostname) > /opt/iobroker/.install_host \
|
||||||
|
&& echo $(hostname) > /opt/.firstrun \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Install node-gyp
|
||||||
|
WORKDIR /opt/iobroker/
|
||||||
|
RUN npm config set unsafe-perm true # To fix "Error: could not get uid/gid"
|
||||||
|
RUN npm install -g node-gyp
|
||||||
|
|
||||||
|
# Backup initial ioBroker-folder
|
||||||
|
RUN tar -cf /opt/initial_iobroker.tar /opt/iobroker
|
||||||
|
|
||||||
|
# Setting up iobroker-user
|
||||||
|
RUN chsh -s /bin/bash iobroker
|
||||||
|
|
||||||
|
# Setting up ENVs
|
||||||
|
ENV DEBIAN_FRONTEND="teletype" \
|
||||||
|
LANG="de_DE.UTF-8" \
|
||||||
|
LANGUAGE="de_DE:de" \
|
||||||
|
LC_ALL="de_DE.UTF-8" \
|
||||||
|
TZ="Europe/Berlin" \
|
||||||
|
PACKAGES="nano" \
|
||||||
|
AVAHI="false" \
|
||||||
|
SETUID=1000 \
|
||||||
|
SETGID=1000 \
|
||||||
|
ZWAVE="false"
|
||||||
|
|
||||||
|
# Setting up EXPOSE for Admin
|
||||||
|
EXPOSE 8081/tcp
|
||||||
|
|
||||||
|
# Run startup-script
|
||||||
|
ENTRYPOINT ["/opt/scripts/iobroker_startup.sh"]
|
||||||
176
aarch64/scripts/iobroker_startup.sh
Normal file
176
aarch64/scripts/iobroker_startup.sh
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Reading ENV
|
||||||
|
packages=$PACKAGES
|
||||||
|
avahi=$AVAHI
|
||||||
|
uid=$SETUID
|
||||||
|
gid=$SETGID
|
||||||
|
zwave=$ZWAVE
|
||||||
|
|
||||||
|
# Getting date and time for logging
|
||||||
|
dati=`date '+%Y-%m-%d %H:%M:%S'`
|
||||||
|
|
||||||
|
# Header
|
||||||
|
echo ' '
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo -n "$(printf -- '-%.0s' {1..15})" && echo -n " "$dati" " && echo "$(printf -- '-%.0s' {1..15})"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Welcome to your ioBroker-container! -----"
|
||||||
|
echo "----- Startupscript is now running. -----"
|
||||||
|
echo "----- Please be patient! -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Debugging information -----"
|
||||||
|
echo "----- -----"
|
||||||
|
echo "----- System -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" arch: $(uname -m))" && echo " -----"
|
||||||
|
echo "----- -----"
|
||||||
|
echo "----- Versions -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" image: $VERSION)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" node: $(node -v))" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" npm: $(npm -v))" && echo " -----"
|
||||||
|
echo "----- -----"
|
||||||
|
echo "----- ENV -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" AVAHI: $AVAHI)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" PACKAGES: $PACKAGES)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETGID: $SETGID)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETUID: $SETUID)" && echo " -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking and installing additional packages
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 1 of 5: Installing additional packages -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
if [ "$packages" != "" ]
|
||||||
|
then
|
||||||
|
echo "The following packages will be installed:" $packages"..."
|
||||||
|
echo $packages > /opt/scripts/.packages
|
||||||
|
sh /opt/scripts/setup_packages.sh > /opt/scripts/setup_packages.log 2>&1
|
||||||
|
echo "Done."
|
||||||
|
else
|
||||||
|
echo "There are no additional packages defined."
|
||||||
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Change directory for next steps
|
||||||
|
cd /opt/iobroker
|
||||||
|
|
||||||
|
# Detecting ioBroker-Installation
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 2 of 5: Detecting ioBroker installation -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
if [ `ls -1a|wc -l` -lt 3 ]
|
||||||
|
then
|
||||||
|
echo "There is no data detected in /opt/iobroker. Restoring..."
|
||||||
|
tar -xf /opt/initial_iobroker.tar -C /
|
||||||
|
echo "Done."
|
||||||
|
else
|
||||||
|
if [ -f /opt/iobroker/iobroker ]
|
||||||
|
then
|
||||||
|
echo "Installation of ioBroker detected in /opt/iobroker."
|
||||||
|
else
|
||||||
|
echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!"
|
||||||
|
echo "Please check/ recreate mounted folder/ volume and restart ioBroker container."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking ioBroker-Installation
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 3 of 5: Checking ioBroker installation -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking for first run and set uid/gid
|
||||||
|
if [ -f /opt/.firstrun ]
|
||||||
|
then
|
||||||
|
echo "This is the first run of a new container. Time for some preparation."
|
||||||
|
echo ' '
|
||||||
|
echo "Changing UID to "$uid" and GID to "$gid"..."
|
||||||
|
usermod -u $uid iobroker
|
||||||
|
groupmod -g $gid iobroker
|
||||||
|
rm -f /opt/.firstrun
|
||||||
|
echo "Done."
|
||||||
|
else
|
||||||
|
echo "This is NOT the first run of the container. Some Steps will be skipped."
|
||||||
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts"
|
||||||
|
echo "(Re)Setting folder permissions (This might take a while! Please be patient!)..."
|
||||||
|
chown -R $uid:$gid /opt/iobroker
|
||||||
|
chown -R $uid:$gid /opt/scripts
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Backing up original iobroker-file and changing sudo to gosu
|
||||||
|
echo "Fixing \"sudo-bug\" by replacing sudo with gosu..."
|
||||||
|
cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak
|
||||||
|
chmod 755 /opt/iobroker/iobroker
|
||||||
|
sed -i 's/sudo -H -u/gosu/g' /opt/iobroker/iobroker
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking for first run of a new installation and renaming ioBroker
|
||||||
|
if [ -f /opt/iobroker/.install_host ]
|
||||||
|
then
|
||||||
|
echo "Looks like this is a new and empty installation of ioBroker."
|
||||||
|
echo "Hostname needs to be updated to " $(hostname)"..."
|
||||||
|
sh /opt/iobroker/iobroker host $(cat /opt/iobroker/.install_host)
|
||||||
|
rm -f /opt/iobroker/.install_host
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Setting up prerequisites for some ioBroker-adapters
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 4 of 5: Applying special settings -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
echo "Some adapters have special requirements which can be activated by the use of environment variables."
|
||||||
|
echo "For more information take a look at readme.md"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking for and setting up avahi-daemon
|
||||||
|
if [ "$avahi" = "true" ]
|
||||||
|
then
|
||||||
|
echo "Avahi-daemon is activated by ENV."
|
||||||
|
chmod 764 /opt/scripts/setup_avahi.sh
|
||||||
|
sh /opt/scripts/setup_avahi.sh
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$zwave" = "true" ]
|
||||||
|
then
|
||||||
|
echo "ZWave is activated by ENV."
|
||||||
|
chmod 764 /opt/scripts/setup_zwave.sh
|
||||||
|
sh /opt/scripts/setup_zwave.sh
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# Starting ioBroker
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 5 of 5: ioBroker startup -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
echo "Starting ioBroker..."
|
||||||
|
echo ' '
|
||||||
|
#gosu iobroker node --trace-warnings node_modules/iobroker.js-controller/controller.js > /opt/iobroker/iobroker.log 2>&1 &
|
||||||
|
gosu iobroker node node_modules/iobroker.js-controller/controller.js
|
||||||
|
|
||||||
|
# Preventing container restart by keeping a process alive even if iobroker will be stopped
|
||||||
|
tail -f /dev/null
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
echo 'Checking avahi-daemon installation state...'
|
echo "Checking avahi-daemon installation state..."
|
||||||
|
|
||||||
if [ -f /usr/sbin/avahi-daemon ]
|
if [ -f /usr/sbin/avahi-daemon ]
|
||||||
then
|
then
|
||||||
echo 'Avahi already installed...'
|
echo "Avahi is already installed..."
|
||||||
else
|
else
|
||||||
echo 'Installing avahi-daemon...'
|
echo "Avahi-daemon is NOT installed. Going to install it now..."
|
||||||
apt-get update > /opt/scripts/avahi_startup.log 2>&1
|
apt-get update > /opt/scripts/avahi_startup.log 2>&1
|
||||||
apt-get install -y libavahi-compat-libdnssd-dev avahi-daemon >> /opt/scripts/avahi_startup.log 2>&1
|
apt-get install -y libavahi-compat-libdnssd-dev avahi-daemon >> /opt/scripts/avahi_startup.log 2>&1
|
||||||
rm -rf /var/lib/apt/lists/* >> /opt/scripts/avahi_startup.log 2>&1
|
rm -rf /var/lib/apt/lists/* >> /opt/scripts/avahi_startup.log 2>&1
|
||||||
echo 'Configuring avahi-daemon...'
|
echo "Configuring avahi-daemon..."
|
||||||
sed -i '/^rlimit-nproc/s/^\(.*\)/#\1/g' /etc/avahi/avahi-daemon.conf
|
sed -i '/^rlimit-nproc/s/^\(.*\)/#\1/g' /etc/avahi/avahi-daemon.conf
|
||||||
echo 'Configuring dbus...'
|
echo "Configuring dbus..."
|
||||||
mkdir /var/run/dbus/
|
mkdir /var/run/dbus/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -26,10 +26,10 @@ then
|
|||||||
rm -f /var/run/avahi-daemon//pid
|
rm -f /var/run/avahi-daemon//pid
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo 'Starting dbus...'
|
echo "Starting dbus..."
|
||||||
dbus-daemon --system
|
dbus-daemon --system
|
||||||
|
|
||||||
echo 'Starting avahi-daemon...'
|
echo "Starting avahi-daemon..."
|
||||||
/etc/init.d/avahi-daemon start
|
/etc/init.d/avahi-daemon start
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
19
aarch64/scripts/setup_zwave.sh
Normal file
19
aarch64/scripts/setup_zwave.sh
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Checking openzwave installation state..."
|
||||||
|
|
||||||
|
if [ -f /usr/local/lib64 ]
|
||||||
|
then
|
||||||
|
echo "Openzwave is already installed..."
|
||||||
|
else
|
||||||
|
echo "Openzwave is NOT installed. Going to install it now..."
|
||||||
|
cd /opt
|
||||||
|
curl -s -L -O http://old.openzwave.com/downloads/openzwave-1.6.945.tar.gz
|
||||||
|
tar -xf openzwave-1.6.945.tar.gz && rm openzwave-1.6.945.tar.gz
|
||||||
|
cd openzwave-1.6.945 && make > /dev/null 2>&1 && make install > /dev/null 2>&1
|
||||||
|
ldconfig /usr/local/lib64
|
||||||
|
cd /opt/iobroker
|
||||||
|
# echo "Openzwave is now installed..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM debian:latest
|
FROM debian:stretch
|
||||||
|
|
||||||
MAINTAINER Andre Germann <https://buanet.de>
|
MAINTAINER Andre Germann <https://buanet.de>
|
||||||
|
|
||||||
@@ -12,20 +12,19 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \
|
|||||||
curl \
|
curl \
|
||||||
git \
|
git \
|
||||||
gnupg2 \
|
gnupg2 \
|
||||||
libavahi-compat-libdnssd-dev \
|
|
||||||
libcap2-bin \
|
libcap2-bin \
|
||||||
libpam0g-dev \
|
libpam0g-dev \
|
||||||
libudev-dev \
|
libudev-dev \
|
||||||
locales \
|
locales \
|
||||||
procps \
|
procps \
|
||||||
python \
|
python \
|
||||||
sudo \
|
gosu \
|
||||||
unzip \
|
unzip \
|
||||||
wget \
|
wget \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Install node8
|
# Install node10
|
||||||
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash \
|
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash \
|
||||||
&& apt-get update && apt-get install -y \
|
&& apt-get update && apt-get install -y \
|
||||||
nodejs \
|
nodejs \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
@@ -42,6 +41,7 @@ WORKDIR /opt/scripts/
|
|||||||
COPY scripts/iobroker_startup.sh iobroker_startup.sh
|
COPY scripts/iobroker_startup.sh iobroker_startup.sh
|
||||||
COPY scripts/setup_avahi.sh setup_avahi.sh
|
COPY scripts/setup_avahi.sh setup_avahi.sh
|
||||||
COPY scripts/setup_packages.sh setup_packages.sh
|
COPY scripts/setup_packages.sh setup_packages.sh
|
||||||
|
COPY scripts/setup_zwave.sh setup_zwave.sh
|
||||||
RUN chmod +x iobroker_startup.sh \
|
RUN chmod +x iobroker_startup.sh \
|
||||||
&& chmod +x setup_avahi.sh \
|
&& chmod +x setup_avahi.sh \
|
||||||
&& chmod +x setup_packages.sh
|
&& chmod +x setup_packages.sh
|
||||||
@@ -71,7 +71,10 @@ ENV DEBIAN_FRONTEND="teletype" \
|
|||||||
LC_ALL="de_DE.UTF-8" \
|
LC_ALL="de_DE.UTF-8" \
|
||||||
TZ="Europe/Berlin" \
|
TZ="Europe/Berlin" \
|
||||||
PACKAGES="nano" \
|
PACKAGES="nano" \
|
||||||
AVAHI="false"
|
AVAHI="false" \
|
||||||
|
SETUID=1000 \
|
||||||
|
SETGID=1000 \
|
||||||
|
ZWAVE="false"
|
||||||
|
|
||||||
# Setting up EXPOSE for Admin
|
# Setting up EXPOSE for Admin
|
||||||
EXPOSE 8081/tcp
|
EXPOSE 8081/tcp
|
||||||
176
amd64/scripts/iobroker_startup.sh
Normal file
176
amd64/scripts/iobroker_startup.sh
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Reading ENV
|
||||||
|
packages=$PACKAGES
|
||||||
|
avahi=$AVAHI
|
||||||
|
uid=$SETUID
|
||||||
|
gid=$SETGID
|
||||||
|
zwave=$ZWAVE
|
||||||
|
|
||||||
|
# Getting date and time for logging
|
||||||
|
dati=`date '+%Y-%m-%d %H:%M:%S'`
|
||||||
|
|
||||||
|
# Header
|
||||||
|
echo ' '
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo -n "$(printf -- '-%.0s' {1..15})" && echo -n " "$dati" " && echo "$(printf -- '-%.0s' {1..15})"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Welcome to your ioBroker-container! -----"
|
||||||
|
echo "----- Startupscript is now running. -----"
|
||||||
|
echo "----- Please be patient! -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Debugging information -----"
|
||||||
|
echo "----- -----"
|
||||||
|
echo "----- System -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" arch: $(uname -m))" && echo " -----"
|
||||||
|
echo "----- -----"
|
||||||
|
echo "----- Versions -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" image: $VERSION)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" node: $(node -v))" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" npm: $(npm -v))" && echo " -----"
|
||||||
|
echo "----- -----"
|
||||||
|
echo "----- ENV -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" AVAHI: $AVAHI)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" PACKAGES: $PACKAGES)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETGID: $SETGID)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETUID: $SETUID)" && echo " -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking and installing additional packages
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 1 of 5: Installing additional packages -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
if [ "$packages" != "" ]
|
||||||
|
then
|
||||||
|
echo "The following packages will be installed:" $packages"..."
|
||||||
|
echo $packages > /opt/scripts/.packages
|
||||||
|
sh /opt/scripts/setup_packages.sh > /opt/scripts/setup_packages.log 2>&1
|
||||||
|
echo "Done."
|
||||||
|
else
|
||||||
|
echo "There are no additional packages defined."
|
||||||
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Change directory for next steps
|
||||||
|
cd /opt/iobroker
|
||||||
|
|
||||||
|
# Detecting ioBroker-Installation
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 2 of 5: Detecting ioBroker installation -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
if [ `ls -1a|wc -l` -lt 3 ]
|
||||||
|
then
|
||||||
|
echo "There is no data detected in /opt/iobroker. Restoring..."
|
||||||
|
tar -xf /opt/initial_iobroker.tar -C /
|
||||||
|
echo "Done."
|
||||||
|
else
|
||||||
|
if [ -f /opt/iobroker/iobroker ]
|
||||||
|
then
|
||||||
|
echo "Installation of ioBroker detected in /opt/iobroker."
|
||||||
|
else
|
||||||
|
echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!"
|
||||||
|
echo "Please check/ recreate mounted folder/ volume and restart ioBroker container."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking ioBroker-Installation
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 3 of 5: Checking ioBroker installation -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking for first run and set uid/gid
|
||||||
|
if [ -f /opt/.firstrun ]
|
||||||
|
then
|
||||||
|
echo "This is the first run of a new container. Time for some preparation."
|
||||||
|
echo ' '
|
||||||
|
echo "Changing UID to "$uid" and GID to "$gid"..."
|
||||||
|
usermod -u $uid iobroker
|
||||||
|
groupmod -g $gid iobroker
|
||||||
|
rm -f /opt/.firstrun
|
||||||
|
echo "Done."
|
||||||
|
else
|
||||||
|
echo "This is NOT the first run of the container. Some Steps will be skipped."
|
||||||
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts"
|
||||||
|
echo "(Re)Setting folder permissions (This might take a while! Please be patient!)..."
|
||||||
|
chown -R $uid:$gid /opt/iobroker
|
||||||
|
chown -R $uid:$gid /opt/scripts
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Backing up original iobroker-file and changing sudo to gosu
|
||||||
|
echo "Fixing \"sudo-bug\" by replacing sudo with gosu..."
|
||||||
|
cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak
|
||||||
|
chmod 755 /opt/iobroker/iobroker
|
||||||
|
sed -i 's/sudo -H -u/gosu/g' /opt/iobroker/iobroker
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking for first run of a new installation and renaming ioBroker
|
||||||
|
if [ -f /opt/iobroker/.install_host ]
|
||||||
|
then
|
||||||
|
echo "Looks like this is a new and empty installation of ioBroker."
|
||||||
|
echo "Hostname needs to be updated to " $(hostname)"..."
|
||||||
|
sh /opt/iobroker/iobroker host $(cat /opt/iobroker/.install_host)
|
||||||
|
rm -f /opt/iobroker/.install_host
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Setting up prerequisites for some ioBroker-adapters
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 4 of 5: Applying special settings -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
echo "Some adapters have special requirements which can be activated by the use of environment variables."
|
||||||
|
echo "For more information take a look at readme.md"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking for and setting up avahi-daemon
|
||||||
|
if [ "$avahi" = "true" ]
|
||||||
|
then
|
||||||
|
echo "Avahi-daemon is activated by ENV."
|
||||||
|
chmod 764 /opt/scripts/setup_avahi.sh
|
||||||
|
sh /opt/scripts/setup_avahi.sh
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$zwave" = "true" ]
|
||||||
|
then
|
||||||
|
echo "ZWave is activated by ENV."
|
||||||
|
chmod 764 /opt/scripts/setup_zwave.sh
|
||||||
|
sh /opt/scripts/setup_zwave.sh
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# Starting ioBroker
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 5 of 5: ioBroker startup -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
echo "Starting ioBroker..."
|
||||||
|
echo ' '
|
||||||
|
#gosu iobroker node --trace-warnings node_modules/iobroker.js-controller/controller.js > /opt/iobroker/iobroker.log 2>&1 &
|
||||||
|
gosu iobroker node node_modules/iobroker.js-controller/controller.js
|
||||||
|
|
||||||
|
# Preventing container restart by keeping a process alive even if iobroker will be stopped
|
||||||
|
tail -f /dev/null
|
||||||
35
amd64/scripts/setup_avahi.sh
Normal file
35
amd64/scripts/setup_avahi.sh
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Checking avahi-daemon installation state..."
|
||||||
|
|
||||||
|
if [ -f /usr/sbin/avahi-daemon ]
|
||||||
|
then
|
||||||
|
echo "Avahi is already installed..."
|
||||||
|
else
|
||||||
|
echo "Avahi-daemon is NOT installed. Going to install it now..."
|
||||||
|
apt-get update > /opt/scripts/avahi_startup.log 2>&1
|
||||||
|
apt-get install -y libavahi-compat-libdnssd-dev avahi-daemon >> /opt/scripts/avahi_startup.log 2>&1
|
||||||
|
rm -rf /var/lib/apt/lists/* >> /opt/scripts/avahi_startup.log 2>&1
|
||||||
|
echo "Configuring avahi-daemon..."
|
||||||
|
sed -i '/^rlimit-nproc/s/^\(.*\)/#\1/g' /etc/avahi/avahi-daemon.conf
|
||||||
|
echo "Configuring dbus..."
|
||||||
|
mkdir /var/run/dbus/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /var/run/dbus/pid ];
|
||||||
|
then
|
||||||
|
rm -f /var/run/dbus/pid
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /var/run/avahi-daemon//pid ];
|
||||||
|
then
|
||||||
|
rm -f /var/run/avahi-daemon//pid
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Starting dbus..."
|
||||||
|
dbus-daemon --system
|
||||||
|
|
||||||
|
echo "Starting avahi-daemon..."
|
||||||
|
/etc/init.d/avahi-daemon start
|
||||||
|
|
||||||
|
exit 0
|
||||||
8
amd64/scripts/setup_packages.sh
Normal file
8
amd64/scripts/setup_packages.sh
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y $(cat /opt/scripts/.packages)
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
rm -f /opt/scripts/.packages
|
||||||
|
|
||||||
|
exit 0
|
||||||
19
amd64/scripts/setup_zwave.sh
Normal file
19
amd64/scripts/setup_zwave.sh
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Checking openzwave installation state..."
|
||||||
|
|
||||||
|
if [ -f /usr/local/lib64 ]
|
||||||
|
then
|
||||||
|
echo "Openzwave is already installed..."
|
||||||
|
else
|
||||||
|
echo "Openzwave is NOT installed. Going to install it now..."
|
||||||
|
cd /opt
|
||||||
|
curl -s -L -O http://old.openzwave.com/downloads/openzwave-1.6.945.tar.gz
|
||||||
|
tar -xf openzwave-1.6.945.tar.gz && rm openzwave-1.6.945.tar.gz
|
||||||
|
cd openzwave-1.6.945 && make > /dev/null 2>&1 && make install > /dev/null 2>&1
|
||||||
|
ldconfig /usr/local/lib64
|
||||||
|
cd /opt/iobroker
|
||||||
|
# echo "Openzwave is now installed..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
84
armv7hf/Dockerfile
Normal file
84
armv7hf/Dockerfile
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
FROM balenalib/armv7hf-debian:stretch
|
||||||
|
|
||||||
|
MAINTAINER Andre Germann <https://buanet.de>
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
# Install prerequisites
|
||||||
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
|
||||||
|
acl \
|
||||||
|
apt-utils \
|
||||||
|
build-essential \
|
||||||
|
curl \
|
||||||
|
git \
|
||||||
|
gnupg2 \
|
||||||
|
libcap2-bin \
|
||||||
|
libpam0g-dev \
|
||||||
|
libudev-dev \
|
||||||
|
locales \
|
||||||
|
procps \
|
||||||
|
python \
|
||||||
|
gosu \
|
||||||
|
unzip \
|
||||||
|
wget \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Install node8
|
||||||
|
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash \
|
||||||
|
&& apt-get update && apt-get install -y \
|
||||||
|
nodejs \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Generating locales
|
||||||
|
RUN sed -i 's/^# *\(de_DE.UTF-8\)/\1/' /etc/locale.gen \
|
||||||
|
&& sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \
|
||||||
|
&& locale-gen
|
||||||
|
|
||||||
|
# Create scripts directory and copy scripts
|
||||||
|
RUN mkdir -p /opt/scripts/ \
|
||||||
|
&& chmod 777 /opt/scripts/
|
||||||
|
WORKDIR /opt/scripts/
|
||||||
|
COPY scripts/iobroker_startup.sh iobroker_startup.sh
|
||||||
|
COPY scripts/setup_avahi.sh setup_avahi.sh
|
||||||
|
COPY scripts/setup_packages.sh setup_packages.sh
|
||||||
|
COPY scripts/setup_zwave.sh setup_zwave.sh
|
||||||
|
RUN chmod +x iobroker_startup.sh \
|
||||||
|
&& chmod +x setup_avahi.sh \
|
||||||
|
&& chmod +x setup_packages.sh
|
||||||
|
|
||||||
|
# Install ioBroker
|
||||||
|
WORKDIR /
|
||||||
|
RUN apt-get update \
|
||||||
|
&& curl -sL https://raw.githubusercontent.com/ioBroker/ioBroker/stable-installer/installer.sh | bash - \
|
||||||
|
&& echo $(hostname) > /opt/iobroker/.install_host \
|
||||||
|
&& echo $(hostname) > /opt/.firstrun \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Install node-gyp
|
||||||
|
WORKDIR /opt/iobroker/
|
||||||
|
RUN npm config set unsafe-perm true # To fix "Error: could not get uid/gid"
|
||||||
|
RUN npm install -g node-gyp
|
||||||
|
|
||||||
|
# Backup initial ioBroker-folder
|
||||||
|
RUN tar -cf /opt/initial_iobroker.tar /opt/iobroker
|
||||||
|
|
||||||
|
# Setting up iobroker-user
|
||||||
|
RUN chsh -s /bin/bash iobroker
|
||||||
|
|
||||||
|
# Setting up ENVs
|
||||||
|
ENV DEBIAN_FRONTEND="teletype" \
|
||||||
|
LANG="de_DE.UTF-8" \
|
||||||
|
LANGUAGE="de_DE:de" \
|
||||||
|
LC_ALL="de_DE.UTF-8" \
|
||||||
|
TZ="Europe/Berlin" \
|
||||||
|
PACKAGES="nano" \
|
||||||
|
AVAHI="false" \
|
||||||
|
SETUID=1000 \
|
||||||
|
SETGID=1000 \
|
||||||
|
ZWAVE="false"
|
||||||
|
|
||||||
|
# Setting up EXPOSE for Admin
|
||||||
|
EXPOSE 8081/tcp
|
||||||
|
|
||||||
|
# Run startup-script
|
||||||
|
ENTRYPOINT ["/opt/scripts/iobroker_startup.sh"]
|
||||||
176
armv7hf/scripts/iobroker_startup.sh
Normal file
176
armv7hf/scripts/iobroker_startup.sh
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Reading ENV
|
||||||
|
packages=$PACKAGES
|
||||||
|
avahi=$AVAHI
|
||||||
|
uid=$SETUID
|
||||||
|
gid=$SETGID
|
||||||
|
zwave=$ZWAVE
|
||||||
|
|
||||||
|
# Getting date and time for logging
|
||||||
|
dati=`date '+%Y-%m-%d %H:%M:%S'`
|
||||||
|
|
||||||
|
# Header
|
||||||
|
echo ' '
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo -n "$(printf -- '-%.0s' {1..15})" && echo -n " "$dati" " && echo "$(printf -- '-%.0s' {1..15})"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Welcome to your ioBroker-container! -----"
|
||||||
|
echo "----- Startupscript is now running. -----"
|
||||||
|
echo "----- Please be patient! -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Debugging information -----"
|
||||||
|
echo "----- -----"
|
||||||
|
echo "----- System -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" arch: $(uname -m))" && echo " -----"
|
||||||
|
echo "----- -----"
|
||||||
|
echo "----- Versions -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" image: $VERSION)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" node: $(node -v))" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" npm: $(npm -v))" && echo " -----"
|
||||||
|
echo "----- -----"
|
||||||
|
echo "----- ENV -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" AVAHI: $AVAHI)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" PACKAGES: $PACKAGES)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETGID: $SETGID)" && echo " -----"
|
||||||
|
echo -n "----- " && echo -n "$(printf "%-10s %-23s" SETUID: $SETUID)" && echo " -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking and installing additional packages
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 1 of 5: Installing additional packages -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
if [ "$packages" != "" ]
|
||||||
|
then
|
||||||
|
echo "The following packages will be installed:" $packages"..."
|
||||||
|
echo $packages > /opt/scripts/.packages
|
||||||
|
sh /opt/scripts/setup_packages.sh > /opt/scripts/setup_packages.log 2>&1
|
||||||
|
echo "Done."
|
||||||
|
else
|
||||||
|
echo "There are no additional packages defined."
|
||||||
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Change directory for next steps
|
||||||
|
cd /opt/iobroker
|
||||||
|
|
||||||
|
# Detecting ioBroker-Installation
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 2 of 5: Detecting ioBroker installation -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
if [ `ls -1a|wc -l` -lt 3 ]
|
||||||
|
then
|
||||||
|
echo "There is no data detected in /opt/iobroker. Restoring..."
|
||||||
|
tar -xf /opt/initial_iobroker.tar -C /
|
||||||
|
echo "Done."
|
||||||
|
else
|
||||||
|
if [ -f /opt/iobroker/iobroker ]
|
||||||
|
then
|
||||||
|
echo "Installation of ioBroker detected in /opt/iobroker."
|
||||||
|
else
|
||||||
|
echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!"
|
||||||
|
echo "Please check/ recreate mounted folder/ volume and restart ioBroker container."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking ioBroker-Installation
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 3 of 5: Checking ioBroker installation -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking for first run and set uid/gid
|
||||||
|
if [ -f /opt/.firstrun ]
|
||||||
|
then
|
||||||
|
echo "This is the first run of a new container. Time for some preparation."
|
||||||
|
echo ' '
|
||||||
|
echo "Changing UID to "$uid" and GID to "$gid"..."
|
||||||
|
usermod -u $uid iobroker
|
||||||
|
groupmod -g $gid iobroker
|
||||||
|
rm -f /opt/.firstrun
|
||||||
|
echo "Done."
|
||||||
|
else
|
||||||
|
echo "This is NOT the first run of the container. Some Steps will be skipped."
|
||||||
|
fi
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# (Re)Setting permissions to "/opt/iobroker" and "/opt/scripts"
|
||||||
|
echo "(Re)Setting folder permissions (This might take a while! Please be patient!)..."
|
||||||
|
chown -R $uid:$gid /opt/iobroker
|
||||||
|
chown -R $uid:$gid /opt/scripts
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Backing up original iobroker-file and changing sudo to gosu
|
||||||
|
echo "Fixing \"sudo-bug\" by replacing sudo with gosu..."
|
||||||
|
cp -a /opt/iobroker/iobroker /opt/iobroker/iobroker.bak
|
||||||
|
chmod 755 /opt/iobroker/iobroker
|
||||||
|
sed -i 's/sudo -H -u/gosu/g' /opt/iobroker/iobroker
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking for first run of a new installation and renaming ioBroker
|
||||||
|
if [ -f /opt/iobroker/.install_host ]
|
||||||
|
then
|
||||||
|
echo "Looks like this is a new and empty installation of ioBroker."
|
||||||
|
echo "Hostname needs to be updated to " $(hostname)"..."
|
||||||
|
sh /opt/iobroker/iobroker host $(cat /opt/iobroker/.install_host)
|
||||||
|
rm -f /opt/iobroker/.install_host
|
||||||
|
echo 'Done.'
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Setting up prerequisites for some ioBroker-adapters
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 4 of 5: Applying special settings -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
echo "Some adapters have special requirements which can be activated by the use of environment variables."
|
||||||
|
echo "For more information take a look at readme.md"
|
||||||
|
echo ' '
|
||||||
|
|
||||||
|
# Checking for and setting up avahi-daemon
|
||||||
|
if [ "$avahi" = "true" ]
|
||||||
|
then
|
||||||
|
echo "Avahi-daemon is activated by ENV."
|
||||||
|
chmod 764 /opt/scripts/setup_avahi.sh
|
||||||
|
sh /opt/scripts/setup_avahi.sh
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$zwave" = "true" ]
|
||||||
|
then
|
||||||
|
echo "ZWave is activated by ENV."
|
||||||
|
chmod 764 /opt/scripts/setup_zwave.sh
|
||||||
|
sh /opt/scripts/setup_zwave.sh
|
||||||
|
echo "Done."
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# Starting ioBroker
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo "----- Step 5 of 5: ioBroker startup -----"
|
||||||
|
echo "$(printf -- '-%.0s' {1..60})"
|
||||||
|
echo ' '
|
||||||
|
echo "Starting ioBroker..."
|
||||||
|
echo ' '
|
||||||
|
#gosu iobroker node --trace-warnings node_modules/iobroker.js-controller/controller.js > /opt/iobroker/iobroker.log 2>&1 &
|
||||||
|
gosu iobroker node node_modules/iobroker.js-controller/controller.js
|
||||||
|
|
||||||
|
# Preventing container restart by keeping a process alive even if iobroker will be stopped
|
||||||
|
tail -f /dev/null
|
||||||
35
armv7hf/scripts/setup_avahi.sh
Normal file
35
armv7hf/scripts/setup_avahi.sh
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Checking avahi-daemon installation state..."
|
||||||
|
|
||||||
|
if [ -f /usr/sbin/avahi-daemon ]
|
||||||
|
then
|
||||||
|
echo "Avahi is already installed..."
|
||||||
|
else
|
||||||
|
echo "Avahi-daemon is NOT installed. Going to install it now..."
|
||||||
|
apt-get update > /opt/scripts/avahi_startup.log 2>&1
|
||||||
|
apt-get install -y libavahi-compat-libdnssd-dev avahi-daemon >> /opt/scripts/avahi_startup.log 2>&1
|
||||||
|
rm -rf /var/lib/apt/lists/* >> /opt/scripts/avahi_startup.log 2>&1
|
||||||
|
echo "Configuring avahi-daemon..."
|
||||||
|
sed -i '/^rlimit-nproc/s/^\(.*\)/#\1/g' /etc/avahi/avahi-daemon.conf
|
||||||
|
echo "Configuring dbus..."
|
||||||
|
mkdir /var/run/dbus/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /var/run/dbus/pid ];
|
||||||
|
then
|
||||||
|
rm -f /var/run/dbus/pid
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /var/run/avahi-daemon//pid ];
|
||||||
|
then
|
||||||
|
rm -f /var/run/avahi-daemon//pid
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Starting dbus..."
|
||||||
|
dbus-daemon --system
|
||||||
|
|
||||||
|
echo "Starting avahi-daemon..."
|
||||||
|
/etc/init.d/avahi-daemon start
|
||||||
|
|
||||||
|
exit 0
|
||||||
8
armv7hf/scripts/setup_packages.sh
Normal file
8
armv7hf/scripts/setup_packages.sh
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y $(cat /opt/scripts/.packages)
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
rm -f /opt/scripts/.packages
|
||||||
|
|
||||||
|
exit 0
|
||||||
19
armv7hf/scripts/setup_zwave.sh
Normal file
19
armv7hf/scripts/setup_zwave.sh
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Checking openzwave installation state..."
|
||||||
|
|
||||||
|
if [ -f /usr/local/lib64 ]
|
||||||
|
then
|
||||||
|
echo "Openzwave is already installed..."
|
||||||
|
else
|
||||||
|
echo "Openzwave is NOT installed. Going to install it now..."
|
||||||
|
cd /opt
|
||||||
|
curl -s -L -O http://old.openzwave.com/downloads/openzwave-1.6.945.tar.gz
|
||||||
|
tar -xf openzwave-1.6.945.tar.gz && rm openzwave-1.6.945.tar.gz
|
||||||
|
cd openzwave-1.6.945 && make > /dev/null 2>&1 && make install > /dev/null 2>&1
|
||||||
|
ldconfig /usr/local/lib64
|
||||||
|
cd /opt/iobroker
|
||||||
|
# echo "Openzwave is now installed..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
19
manifest.yml
Normal file
19
manifest.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
image: buanet/iobroker:$DOCKERTAG
|
||||||
|
manifests:
|
||||||
|
-
|
||||||
|
image: buanet/iobroker:$VERSION-amd64
|
||||||
|
platform:
|
||||||
|
architecture: amd64
|
||||||
|
os: linux
|
||||||
|
-
|
||||||
|
image: buanet/iobroker:$VERSION-aarch64
|
||||||
|
platform:
|
||||||
|
architecture: arm64
|
||||||
|
variant: v8
|
||||||
|
os: linux
|
||||||
|
-
|
||||||
|
image: buanet/iobroker:$VERSION-armv7hf
|
||||||
|
platform:
|
||||||
|
architecture: arm
|
||||||
|
variant: v7
|
||||||
|
os: linux
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Reading env-variables
|
|
||||||
packages=$PACKAGES
|
|
||||||
avahi=$AVAHI
|
|
||||||
|
|
||||||
# Getting date and time for logging
|
|
||||||
dati=`date '+%Y-%m-%d %H:%M:%S'`
|
|
||||||
|
|
||||||
# Information
|
|
||||||
echo ''
|
|
||||||
echo '----------------------------------------'
|
|
||||||
echo '----- Image-Version: 3.0.0 -----'
|
|
||||||
echo '----- '$dati' -----'
|
|
||||||
echo '----------------------------------------'
|
|
||||||
echo ''
|
|
||||||
echo 'Startupscript running...'
|
|
||||||
|
|
||||||
# Checking and installing additional packages
|
|
||||||
if [ "$packages" != "" ]
|
|
||||||
then
|
|
||||||
echo ''
|
|
||||||
echo 'Installing additional packages...'
|
|
||||||
echo 'The following packages will be installed:' $packages
|
|
||||||
echo $packages > /opt/scripts/.packages
|
|
||||||
sh /opt/scripts/setup_packages.sh > /opt/scripts/setup_packages.log 2>&1
|
|
||||||
echo 'Installing additional packages done...'
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd /opt/iobroker
|
|
||||||
|
|
||||||
# Checking and restoring ioBroker to empty mounted folder
|
|
||||||
if [ `ls -1a|wc -l` -lt 3 ]
|
|
||||||
then
|
|
||||||
echo ''
|
|
||||||
echo 'Directory /opt/iobroker is empty!'
|
|
||||||
echo 'Restoring data from image...'
|
|
||||||
tar -xf /opt/initial_iobroker.tar -C /
|
|
||||||
echo 'Restoring done...'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Checking for first run of a new installation and renaming ioBroker
|
|
||||||
if [ -f /opt/iobroker/.install_host ]
|
|
||||||
then
|
|
||||||
echo ''
|
|
||||||
echo 'This is the first run of an new installation...'
|
|
||||||
echo 'Hostname given is' $(hostname)'...'
|
|
||||||
echo 'Renaming ioBroker...'
|
|
||||||
iobroker host $(cat /opt/iobroker/.install_host)
|
|
||||||
rm -f /opt/iobroker/.install_host
|
|
||||||
echo 'Renaming ioBroker done...'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Checking for first run and change permissions
|
|
||||||
if [ -f /opt/.firstrun ]
|
|
||||||
then
|
|
||||||
echo ''
|
|
||||||
echo 'Changing permissions upon first run (This might take a while! Please be patient!)...'
|
|
||||||
chown -R iobroker /opt/iobroker
|
|
||||||
chown -R iobroker /opt/scripts
|
|
||||||
rm -f /opt/.firstrun
|
|
||||||
echo 'Changing permissions done...'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Checking for and setting up avahi-daemon
|
|
||||||
if [ "$avahi" = "true" ]
|
|
||||||
then
|
|
||||||
echo ''
|
|
||||||
echo 'Initializing Avahi-Daemon...'
|
|
||||||
sh /opt/scripts/setup_avahi.sh
|
|
||||||
echo 'Initializing Avahi-Daemon done...'
|
|
||||||
fi
|
|
||||||
|
|
||||||
sleep 5
|
|
||||||
|
|
||||||
# Starting ioBroker
|
|
||||||
echo ''
|
|
||||||
echo 'Starting ioBroker...'
|
|
||||||
sudo -u iobroker node node_modules/iobroker.js-controller/controller.js > /opt/scripts/iobroker.log 2>&1 &
|
|
||||||
echo 'Starting ioBroker done...'
|
|
||||||
|
|
||||||
# Preventing container restart by keeping a process alive
|
|
||||||
tail -f /dev/null
|
|
||||||
Reference in New Issue
Block a user