Compare commits

..

111 Commits

Author SHA1 Message Date
Andre
030109f260 Update README.md 2019-10-25 22:02:07 +02:00
Andre
c5c96d9f3b Update .VERSION 2019-10-25 22:00:46 +02:00
Andre
6f251e8a2d Merge pull request #39 from buanet/beta
Releasing v4
2019-10-25 22:00:06 +02:00
buanet
cc2174285e fixes output for zwave 2019-10-23 14:11:52 +02:00
buanet
90458ae6b7 small fixes 2019-10-23 11:50:31 +02:00
buanet
7b0f8f5ba9 small fix for zwave 2019-10-23 11:42:04 +02:00
buanet
b67ca2de19 added zwave support 2019-10-23 10:51:15 +02:00
buanet
7e31f7f18a Update .travis.yml 2019-10-22 19:46:12 +02:00
buanet
97a4d02f0d update manifest 2019-10-22 17:03:50 +02:00
buanet
85ffcfd00a change secure 2019-10-22 14:40:47 +02:00
buanet
c67fe82e6f changing docker repo 2019-10-22 14:30:08 +02:00
buanet
e1268aa27c multiarch 2019-10-22 14:22:27 +02:00
Andre
abbb905616 Create .VERSION 2019-09-03 09:08:43 +02:00
Andre
6b4f4277ae Update README.md 2019-09-03 09:07:40 +02:00
Andre
c4c6cdf4de Update README.md 2019-09-03 09:07:10 +02:00
Andre
2d701d02f7 Update LICENSE.md 2019-09-03 09:06:05 +02:00
Andre
9035c9e9a1 Update LICENSE.md 2019-09-03 09:04:02 +02:00
Andre
122307dd38 rename 2019-09-03 09:03:36 +02:00
Andre
7c05c29069 Update README.md 2019-09-03 08:43:58 +02:00
Andre
ebd7822e9a changing image version 2019-09-03 08:41:32 +02:00
Andre
7dc1c8e74b changing node version 2019-09-03 08:40:46 +02:00
Andre
1606dc0b97 Update Dockerfile
changed env
2019-09-02 09:05:01 +02:00
Andre
6b14bc2617 Update iobroker_startup.sh
updated logging
2019-09-02 09:03:10 +02:00
Andre
0265e12afb Merge pull request #33 from mplogas/master
Adding env for setting UID/GID
2019-09-02 08:52:43 +02:00
Andre
012a2d2363 Merge branch 'master' into master 2019-09-02 08:51:43 +02:00
Andre
b0524381ce new structure for changelog 2019-08-21 21:38:57 +02:00
buanet
74b0f246cd release new stable 2019-08-21 21:10:27 +02:00
mplogas
78399ff13b added GID support as well 2019-08-21 00:45:27 +02:00
mplogas
5b083a98bb removed debug output 2019-08-20 22:08:05 +02:00
mplogas
0d775350c5 README 2019-08-20 22:05:09 +02:00
mplogas
575050d5a4 external uid is now correctly applied 2019-08-20 21:59:42 +02:00
mplogas
9eb183d206 added uid/gid fixes 2019-08-20 20:43:24 +02:00
Andre
e0c1cec14b change image 2019-07-14 22:27:21 +02:00
buanet
79aa59cf69 deletions 2019-07-04 11:36:07 +02:00
buanet
b89ee16f44 added armv7 support 2019-07-03 16:10:17 +02:00
Andre
b74cfe57c1 fixing avahi issue 2019-06-21 23:23:37 +02:00
Andre
305a13b0b0 deletions after testing 2019-06-13 14:45:58 +02:00
Andre
c80f25cca1 some changes for new beta 2019-06-13 13:58:36 +02:00
Andre
aed7604906 Merge pull request #26 from smarthomefans/use_gosu
Try to use gosu, not sudo
2019-06-13 13:20:05 +02:00
SchumyHao
a8dd8897eb Try to use gosu, not sudo
Signed-off-by: SchumyHao <schumyhaojl@126.com>
2019-06-07 01:41:24 +08:00
andre
7736e05e08 docu 2019-05-18 22:55:03 +02:00
andre
2c2abee86a new beta 2019-05-18 22:51:38 +02:00
andre
b28250e9f8 some testing 2019-05-18 19:41:52 +02:00
Andre
8bb400270d fixing permission issues and logging 2019-05-09 20:48:44 +02:00
Andre
caa5a1f763 some testing 2019-05-09 19:50:09 +02:00
Andre
59e3c79574 Update Dockerfile 2019-05-09 18:17:03 +02:00
Andre
0fe15e0918 Update Dockerfile 2019-05-09 17:31:13 +02:00
Andre
a1cd12dbfd moving permission fixer 2019-05-09 17:28:38 +02:00
Andre
f32d26de7f Update iobroker_startup.sh 2019-05-09 16:37:51 +02:00
Andre
38d352ac9c Update README.md 2019-05-09 12:11:26 +02:00
buanet
fdb68d7ca8 optimizing dockerfile 2019-04-29 15:43:14 +02:00
andre
40abbca1a1 updated documentation 2019-04-15 23:32:43 +02:00
andre
445ad691c2 some informations for v2.0.6beta 2019-04-15 23:04:26 +02:00
andre
525d6db3f4 changes in logging 2019-04-14 01:55:46 +02:00
andre
5c43c56694 changes for locale 2019-04-14 01:36:15 +02:00
andre
94fcc3b98c fixin env 2019-04-14 00:42:06 +02:00
andre
a34e3e0549 some testing 2019-04-14 00:22:08 +02:00
andre
6d9bf4da5a some testing 2019-04-13 23:23:07 +02:00
andre
9d7d4e3cd9 some testing 2019-04-13 23:20:52 +02:00
andre
c109764694 some testing 2019-04-13 22:18:37 +02:00
buanet
6a32591da4 some renaming 2019-03-20 08:49:04 +01:00
buanet
4321bd7bfb optimized logging 2019-03-14 14:41:11 +01:00
buanet
83f3542f68 optimized logging 2019-03-14 13:54:44 +01:00
buanet
672bca2630 updating/ removing comments 2019-03-06 07:51:14 +01:00
buanet
bdc6570a71 added prerequisites 2019-03-06 07:46:06 +01:00
Andre
4010c68e20 Update Dockerfile 2019-02-28 22:39:04 +01:00
Andre
22ea1df41a Update Dockerfile 2019-02-28 22:11:05 +01:00
andre
9656527db4 Update Dockerfile 2019-02-27 20:58:18 +01:00
Andre
13a511f875 Update Dockerfile 2019-02-14 15:38:09 +01:00
andre
686b517d6f Update iobroker_startup.sh 2019-02-10 00:09:36 +01:00
andre
610deb0974 Update README.md 2019-02-09 23:46:36 +01:00
andre
c91be00fa7 Added ENV and EXPOSE 2019-02-09 23:43:04 +01:00
andre
fefe510b93 Update iobroker_startup.sh 2019-02-07 21:01:10 +01:00
Andre
8d0bb13cf2 Update README.md 2019-01-29 12:31:36 +01:00
Andre
c6d265aa1d fix logging 2019-01-29 11:25:23 +01:00
Andre
07c3fe7118 renaming logfiles 2019-01-29 11:23:15 +01:00
Andre
a9bb9aacf1 small fixes and add logging 2019-01-29 10:56:20 +01:00
Andre
3ba390277c Update iobroker_startup.sh 2019-01-29 10:48:44 +01:00
Andre
88eb4ca065 deleted optional packages from dockerfile
install optional packages by using env "PACKAGES" with value "package1 package2 package3"
2019-01-29 10:35:29 +01:00
Andre
fd72d450f1 updated iobroker docu link 2019-01-28 22:19:00 +01:00
andre
97b5641372 optimizing logging 2019-01-28 22:15:33 +01:00
buanet
eeacc6d4fb corrections 2019-01-28 16:03:30 +01:00
buanet
d50d88ddd0 additional packages setup 2019-01-28 15:12:48 +01:00
buanet
efee71f212 corrections 2019-01-28 14:23:24 +01:00
buanet
eea1c61ac5 moving avahi to script 2019-01-28 13:57:27 +01:00
buanet
75468e58d6 testing env 2019-01-28 08:57:38 +01:00
buanet
dc614879be ? 2019-01-28 08:53:24 +01:00
buanet
d03ce6d24c fix 2019-01-28 08:49:35 +01:00
Andre
98ad4e8666 Update iobroker_startup.sh 2019-01-24 21:25:30 +01:00
Andre
f3cb86cb94 Update avahi_startup.sh 2019-01-24 20:51:25 +01:00
Andre
d5a69c506f Update iobroker_startup.sh 2019-01-24 20:03:19 +01:00
Andre
f75043438c changes for first run 2019-01-24 18:11:30 +01:00
buanet
8e79ccfc2c changes for avahi-daemon 2019-01-24 13:31:02 +01:00
buanet
4908fed871 testing 2019-01-24 11:53:06 +01:00
buanet
9b6273b50f testing user option 2019-01-24 10:28:56 +01:00
buanet
4d76a05f5d some testing 2019-01-24 08:25:58 +01:00
buanet
0fcccf3b42 moved env 2019-01-23 11:58:41 +01:00
buanet
23d8b34113 optimized docker file 2019-01-23 09:30:12 +01:00
Andre
04f51a6f47 Update iobroker_startup.sh 2019-01-21 15:26:05 +01:00
Andre
3decc2fec3 added restoring if folder empty 2019-01-21 14:40:31 +01:00
Andre
e2ccabb6e2 moved initial backup 2019-01-21 14:30:54 +01:00
Andre
9b932594fa moved .install_host file 2019-01-21 13:36:24 +01:00
Andre
c3aef24ead moved .install_host file 2019-01-21 13:33:07 +01:00
Andre
9abc86ddd3 changes for new iobroker setup 2019-01-21 13:13:29 +01:00
Andre
bc41f708bf added initial backup 2019-01-21 11:24:49 +01:00
Andre
fdbde6eb15 changes for iobroker host this issues 2019-01-11 10:17:55 +01:00
Andre
4f0d07878b Update README.md 2019-01-07 14:13:14 +01:00
Andre
beb689c33c Update iobroker_startup.sh 2019-01-07 13:41:57 +01:00
Andre
e733f77253 Update iobroker_startup.sh 2019-01-07 12:46:01 +01:00
Andre
1fdce0ae78 Update iobroker_startup.sh 2019-01-07 11:52:46 +01:00
Andre
7ced614900 added output for debugging 2019-01-07 11:12:40 +01:00
26 changed files with 1208 additions and 99 deletions

1
.VERSION Normal file
View File

@@ -0,0 +1 @@
v4.0.0

105
.travis.yml Normal file
View 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

View File

@@ -1,38 +0,0 @@
FROM debian:latest
MAINTAINER Andre Germann <https://buanet.de>
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y build-essential python apt-utils curl avahi-daemon git libpcap-dev libavahi-compat-libdnssd-dev libfontconfig gnupg2 locales procps libudev-dev libpam0g-dev unzip sudo wget ffmpeg android-tools-adb android-tools-fastboot
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash
RUN apt-get install -y nodejs
RUN sed -i '/^rlimit-nproc/s/^\(.*\)/#\1/g' /etc/avahi/avahi-daemon.conf
RUN sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen && \dpkg-reconfigure --frontend=noninteractive locales && \update-locale LANG=de_DE.UTF-8
ENV LANG de_DE.UTF-8
RUN cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
ENV TZ Europe/Berlin
RUN mkdir -p /opt/iobroker/ && chmod 777 /opt/iobroker/
RUN mkdir -p /opt/scripts/ && chmod 777 /opt/scripts/
WORKDIR /opt/scripts/
ADD scripts/avahi_startup.sh avahi_startup.sh
RUN chmod +x avahi_startup.sh
RUN mkdir /var/run/dbus/
ADD scripts/iobroker_startup.sh iobroker_startup.sh
RUN chmod +x iobroker_startup.sh
WORKDIR /opt/iobroker/
RUN npm install iobroker --unsafe-perm && npm i --production --unsafe-perm
RUN update-rc.d iobroker.sh remove && echo $(hostname) > .install_host
RUN npm install node-gyp -g
CMD ["sh", "/opt/scripts/iobroker_startup.sh"]
ENV DEBIAN_FRONTEND teletype

123
README.md
View File

@@ -1,47 +1,130 @@
# docker-iobroker
Docker image for ioBroker (http://iobroker.net) based on debian:latest (http://hub.docker.com/_/debian/)
# ioBroker for Docker
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!<br>
Cause the container ist based on debian:latest, it acts nearly like a full virtual machine. That makes it possible to easily add some additional dependies for some ioBroker-Adapters.
IoBroker for Docker is an Dockerimage for ioBroker (http://iobroker.net) smarthome software.
## Installation & Usage
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!
**Important Notice: Switching an existing ioBroker-installation from node6 to node8 (docker-iobroker v1 to v2) requires an additional step inside ioBroker! After Upgrade 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=5106&lang=de). Make backup first!!!**
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.
A detailed tutorial (german) can be found on my website (https://buanet.de/2017/09/iobroker-unter-docker-auf-der-synology-diskstation/).<br>
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.
## Important
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!
## 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!
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 and features
The following will give a short overview.
### Environment variables
Since v3 is possible to set some environment variables to configure a new container.
|env|value|description|
|---|---|---|
|PACKAGES|package1 package2 package2|seperateed by whitespace; will install the listed packages on startup<br>(be paitient, this may take some time!)|
|AVAHI|true|will install and activate avahi-daemon for supporting yahka-adapter|
|LANGUAGE|de_DE:de|following locales are pre-generated: de_DE:de, en_US:en|
|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|
|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
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!
This also works with mounting a folder containing an existing ioBroker-installation (e.g. when moving an existing installation to docker).
### Permission Fixer
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
### 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)
* v2.0.6beta (2019-04-14)
* added some additional logging
* fixing some issues for languag env
* added permission fixing on first start
* v2.0.5beta (2019-02-09)
* added ENV to dockerfile
* added EXPOSE for admin
* final testing
* v2.0.4beta (2019-01-28)
* added support for env variables "avahi" and "packages"
* moving avahi-daemon installation into avahi startup script
* added script for installing optional packages
* optimizing logging output
* v2.0.3beta (2019-01-24)
* added support for running ioBroker under iobroker user
* optimizing logging output
* optimizing scripts
* 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)
* v1.2.2beta (2018-12-05)
* 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
### v1.2.0 (2018-08-21)
* after testing making 1.1.3beta to latest stable release
### v1.1.3beta (2018-08-21)
* v1.1.3beta (2018-08-21)
* added ffmpeg-package for yahka to support webcams
### v1.1.2beta (2018-04-04)
* v1.1.2beta (2018-04-04)
* added ENV for timezone issue
### v1.1.1beta (2018-03-29)
* v1.1.1beta (2018-03-29)
* added wget package
* updated readme.md
### v1.1.0 (2017-12-10)
* v1.0.2beta (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)
* v1.0.1beta (2017-08-25)
* fixed locales issue
### v1.0.0 (2017-08-22)
@@ -77,7 +160,7 @@ For discussion and support please visit ioBroker-forum-thread (http://forum.iobr
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
of this software and associated documentation files (the "Software"), to deal

84
aarch64/Dockerfile Normal file
View 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"]

View 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

View 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

View 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

View 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

83
amd64/Dockerfile Normal file
View File

@@ -0,0 +1,83 @@
FROM 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 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"]

View 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

View 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

View 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

View 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
View 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"]

View 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

View 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

View 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

View 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
View 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

View File

@@ -1,10 +0,0 @@
#!/bin/sh
rm /var/run/dbus/pid
dbus-daemon --system
/etc/init.d/avahi-daemon stop
sleep 5
/etc/init.d/avahi-daemon start
exit 0

View File

@@ -1,16 +0,0 @@
#!/bin/sh
cd /opt/iobroker
if [ -f .install_host ];
then
echo $(hostname) > .install_host && ./iobroker host $(cat .install_host)
iobroker del admin.0 && iobroker del discovery.0
iobroker add admin && iobroker add discovery
rm .install_host
fi
/opt/scripts/avahi_startup.sh
sleep 5
node node_modules/iobroker.js-controller/controller.js >/opt/scripts/docker_iobroker_log.txt 2>&1 &
/bin/bash