Compare commits

..

158 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
Andre
250acdc992 workaround for install problems 2018-12-07 18:23:19 +01:00
Andre
f2e6780456 changes for iobroker setup 2018-12-07 17:10:55 +01:00
Andre
2983f1f63d Update Dockerfile 2018-12-07 14:19:26 +01:00
Andre
ddccbe7dfa Update iobroker_startup.sh 2018-12-07 14:16:08 +01:00
Andre
e99ab6fa82 Update README.md 2018-12-06 21:49:20 +01:00
Andre
16b9d318fd changes for new iobroker setup 2018-12-06 21:48:35 +01:00
Andre
13182735f8 Update README.md 2018-12-05 14:42:53 +01:00
Andre
426035fa9b Merge pull request #13 from buanet/node8
Node 8 is now required for ioBroker
2018-12-05 14:23:01 +01:00
Andre
5eb3e6ef1d Merge branch 'master' into node8 2018-12-05 14:22:40 +01:00
Andre
d56fca4074 Update iobroker_stop.sh 2018-11-08 21:35:21 +01:00
Andre
6f2eb382d5 Update iobroker_restart.sh 2018-11-08 21:34:50 +01:00
andre
82aa3f0062 changes for node 8 2018-11-05 00:33:00 +01:00
Andre
eb72bfea00 Update README.md 2018-09-12 14:03:39 +02:00
Andre
6e8f3a1448 added support for firetv-adapter 2018-09-12 14:01:42 +02:00
Andre
dc31095c1c Update README.md 2018-08-21 13:31:59 +02:00
Andre
834fd976c0 added ffmpeg-package 2018-08-21 12:20:01 +02:00
Andre
609804ea0d Update Dockerfile 2018-08-20 15:26:37 +02:00
Andre
0f39f7ae5e Update Dockerfile 2018-08-20 15:23:12 +02:00
Andre
fdfbed9846 Update README.md 2018-04-04 11:20:28 +02:00
Andre
b4f7ba98b1 added ENV for timezone issue 2018-04-04 11:15:36 +02:00
Andre
351bfddc8d Update README.md 2018-03-29 23:02:02 +02:00
andre
8a8ac64952 added package 2018-03-21 23:24:58 +01:00
andre
e015276fc4 optimizing and testing 2017-12-27 16:55:54 +01:00
andre
4f41716e77 testing 2017-12-27 15:55:51 +01:00
andre
d301f754f4 optimized dockerfile and node 8 test 2017-12-27 12:03:58 +01:00
Andre
a0adbc121e released v1.1.0 2017-12-10 14:24:10 +01:00
Andre
17ac1a5bcf added fix for avahi issue 2017-12-10 11:41:46 +01:00
Andre
f440613049 Update Dockerfile 2017-12-07 23:10:56 +01:00
Andre
7a6de5b3c5 Update Dockerfile 2017-12-07 22:17:44 +01:00
Andre
0687a2ef18 Update Dockerfile 2017-12-07 21:31:57 +01:00
Andre
3d191b9fd9 Update iobroker_startup.sh 2017-12-06 22:19:27 +01:00
Andre
0cc07e148d Update iobroker_startup.sh 2017-12-01 23:41:15 +01:00
Andre
f841ccf882 Update iobroker_startup.sh 2017-12-01 23:06:34 +01:00
Andre
b8622098b2 Update iobroker_startup.sh 2017-12-01 23:01:46 +01:00
Andre
9aab687492 Update iobroker_startup.sh 2017-11-30 23:18:45 +01:00
Andre
c69f7145b3 Update Dockerfile 2017-11-30 23:17:51 +01:00
Andre
1fbbd33979 Delete startup.sh 2017-11-30 22:39:34 +01:00
Andre
911beabb6a Update iobroker_startup.sh 2017-11-30 22:37:46 +01:00
Andre
945c7bfbaa Update Dockerfile 2017-11-30 22:34:15 +01:00
Andre
19a6eb74bb Update Dockerfile 2017-09-25 10:56:24 +02:00
Andre
1713562071 Update backup_iobroker_folder.sh 2017-09-22 23:24:58 +02:00
Andre
a34cdfe7bf Update backup_iobroker_folder.sh 2017-09-22 23:02:05 +02:00
Andre
c0eb88812f Update backup_iobroker_folder.sh 2017-09-22 22:56:52 +02:00
Andre
d3737203dc Update backup_iobroker_folder.sh 2017-09-05 21:34:22 +02:00
Andre
a87286ca08 Update backup_iobroker_folder.sh 2017-09-05 20:22:58 +02:00
Andre
220d07cf95 Update README.md 2017-08-25 20:49:21 +02:00
Andre
0d740d4626 added locales 2017-08-25 20:47:25 +02:00
27 changed files with 1232 additions and 93 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,31 +0,0 @@
FROM debian:latest
MAINTAINER Andre Germann <info@buanet.de>
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y apt-utils curl avahi-daemon git libpcap-dev libavahi-compat-libdnssd-dev libfontconfig gnupg2
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash
RUN apt-get install -y build-essential python nodejs
RUN cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
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 && echo $(hostname) > .install_host
RUN update-rc.d iobroker.sh disable
CMD ["sh", "/opt/scripts/iobroker_startup.sh"]
ENV DEBIAN_FRONTEND teletype

131
README.md
View File

@@ -1,15 +1,132 @@
# 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 with DSM 6.0.2 and Docker 1.11.2. But it should also work on other systems running 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!
For instructions and discussion (in german) please visit ioBroker-Forum (http://forum.iobroker.net/viewtopic.php?f=17&t=5089).
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
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)
* added support for firetv-adapter
### v1.2.0 (2018-08-21)
* 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.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)
* fixed locales issue
### v1.0.0 (2017-08-22)
* moved and renamed iobroker startup script
* disabled iobroker deamon to (hopefully) fix restart issue
@@ -43,7 +160,7 @@ For instructions and discussion (in german) please visit ioBroker-Forum (http://
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,27 +1,27 @@
#!/bin/bash
# Backupscript für ein (wöchentliches) Backup von ioBroker unter Docker auf einer Synology Disk Station (Sicherung des ioBroker-Verzeichnises).
# Vorhaltezeit der letzten Backups: 90 Tage, ältere Backups werden automatisch gelöscht.
# Backupscript fuer ein Backup von ioBroker unter Docker auf einer Synology Disk Station (Sicherung des ioBroker-Verzeichnises).
# Vorhaltezeit der letzten Backups: 90 Tage, ältere Backups werden automatisch geloescht.
#
# By André Germann
# Version 1.0 (22.03.2017)
# By Andre Germann
# Version 1.1 (22.09.2017)
#
# ACHTUNG: Dieses Script muss vorher auf die Synology Disk Station kopiert und dann auch dort ausgeführt werden!
# Für die geplante, regelmäßige Ausführung bietet sich der Aufgabenplaner der Disk Station an.
# ACHTUNG: Dieses Script muss vorher auf die Synology Disk Station kopiert und dann auch dort ausgefuehrt werden!
# Fuer die geplante, regelmaessige Ausfuehrung bietet sich der Aufgabenplaner der Disk Station an.
#
# ACHTUNG: Dieses Script stoppt vor der Sicherung des Verzeichnises den ioBroker Container!
# Zur Sicherheit wird empfohlen ioBroker vor dem Backup innerhalb des Containers zu stoppen.
# Dieses kann zum Beispiel über den vorherigen Aufruf des Scripts iobroker_stop.sh aus ioBroker heraus erledigt werden.
# Dieses kann zum Beispiel ueber den vorherigen Aufruf des Scripts iobroker_stop.sh aus ioBroker heraus erledigt werden.
# Deklaration der Variablen. Pfade und Bezeichnungen müssen ggf. entsprechend angepasst werden.
# Deklaration der Variablen. Pfade und Bezeichnungen muessen ggf. entsprechend angepasst werden.
iobrokerPATH='/volume1/docker/mount/iobroker' # Pfad des gemounteten ioBroker-Verzeichnises (zu sicherndes Verzeichnis) auf der Synology Disk Station
backupPATH='/volume1/backup/Homeautomation/iobroker/backup.weekly' # Pfad zum Speichern des Backups
iobrokerCONTAINERNAME='iobroker' # Name des ioBroker-Containers in Docker
iobrokerPATH='/volume1/docker/iobroker_mount' # Pfad des gemounteten ioBroker-Verzeichnises (zu sicherndes Verzeichnis) auf der Synology Disk Station
backupPATH='/volume1/docker/iobroker_backup/archiv' # Pfad zum Speichern des Backups
iobrokerCONTAINERNAME='iobroker' # Name des ioBroker-Containers in Docker
# Start Script - Ab hier muss nichts mehr geändert werden!
# Start Script - Ab hier muss nichts mehr geaendert werden!
echo "#####################################################"
echo "############## Backupscript gestartet. ##############"
@@ -49,7 +49,7 @@ sleep 5
echo ""
echo "Der Ordner $iobrokerPATH wird gesichert..."
tar -czf "$backupPATH/backup-$(date +%d.%m.%y-%R).tar.gz" "$iobrokerPATH"
tar -C "$iobrokerPATH" -czf "$backupPATH/backup-$(date +%Y-%m-%d_%H-%M).tar.gz" .
echo "Sicherung des Ordners erstellt."
echo ""
@@ -57,12 +57,12 @@ echo "######################################################"
sleep 5
# Alte Backups löschen (Löscht per "rm" alle "*.tar.gz"-Dateien im Ordner, die älter als 90 Tage sind)
# Alte Backups loeschen (Loescht per "rm" alle "*.tar.gz"-Dateien im Ordner, die aelter als 90 Tage sind)
echo ""
echo "Entfernen alter Backups aus dem Verzeichnis $backupPATH..."
find -P "$backupPATH/" -maxdepth 1 -type f \( -name '*.tar.gz' \) -ctime +19 -exec rm {} \;
find -P "$backupPATH/" -maxdepth 1 -type f \( -name '*.tar.gz' \) -ctime +90 -exec rm {} \;
echo "Alte Backups wurden entfernt."
echo ""

View File

@@ -4,8 +4,8 @@
# Kann zum Beispiel aus ioBroker heraus aufgerufen werden um ioBroker neu zu starten.
cd /opt/iobroker
./iobroker stop
pkill io
sleep 5
./iobroker start
node node_modules/iobroker.js-controller/controller.js >/opt/scripts/docker_iobroker_log.txt 2>&1 &
exit 0

View File

@@ -4,6 +4,6 @@
# Kann zum Beispiel aus ioBroker heraus aufgerufen werden um ioBroker zu stoppen.
cd /opt/iobroker
./iobroker stop
pkill io
exit 0

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,14 +0,0 @@
#!/bin/sh
if [ -f .install_host ];
then
sed -i "s/$(cat .install_host)/$(hostname)/g" iobroker-data/objects.json
rm .install_host
fi
/opt/scripts/avahi_startup.sh
sleep 5
cd /opt/iobroker
./iobroker start
cd /
/bin/bash

View File

@@ -1,13 +0,0 @@
#!/bin/sh
if [ -f .install_host ];
then
sed -i "s/$(cat .install_host)/$(hostname)/g" iobroker-data/objects.json
rm .install_host
fi
/opt/scripts/avahi_startup.sh
sleep 5
./iobroker start
cd /
/bin/bash