mirror of
https://github.com/buanet/ioBroker.docker.git
synced 2025-12-17 18:39:01 +02:00
Compare commits
93 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8bb400270d | ||
|
|
caa5a1f763 | ||
|
|
59e3c79574 | ||
|
|
0fe15e0918 | ||
|
|
a1cd12dbfd | ||
|
|
f32d26de7f | ||
|
|
38d352ac9c | ||
|
|
fdb68d7ca8 | ||
|
|
40abbca1a1 | ||
|
|
445ad691c2 | ||
|
|
525d6db3f4 | ||
|
|
5c43c56694 | ||
|
|
94fcc3b98c | ||
|
|
a34e3e0549 | ||
|
|
6d9bf4da5a | ||
|
|
9d7d4e3cd9 | ||
|
|
c109764694 | ||
|
|
6a32591da4 | ||
|
|
4321bd7bfb | ||
|
|
83f3542f68 | ||
|
|
672bca2630 | ||
|
|
bdc6570a71 | ||
|
|
4010c68e20 | ||
|
|
22ea1df41a | ||
|
|
9656527db4 | ||
|
|
13a511f875 | ||
|
|
686b517d6f | ||
|
|
610deb0974 | ||
|
|
c91be00fa7 | ||
|
|
fefe510b93 | ||
|
|
8d0bb13cf2 | ||
|
|
c6d265aa1d | ||
|
|
07c3fe7118 | ||
|
|
a9bb9aacf1 | ||
|
|
3ba390277c | ||
|
|
88eb4ca065 | ||
|
|
fd72d450f1 | ||
|
|
97b5641372 | ||
|
|
eeacc6d4fb | ||
|
|
d50d88ddd0 | ||
|
|
efee71f212 | ||
|
|
eea1c61ac5 | ||
|
|
75468e58d6 | ||
|
|
dc614879be | ||
|
|
d03ce6d24c | ||
|
|
98ad4e8666 | ||
|
|
f3cb86cb94 | ||
|
|
d5a69c506f | ||
|
|
f75043438c | ||
|
|
8e79ccfc2c | ||
|
|
4908fed871 | ||
|
|
9b6273b50f | ||
|
|
4d76a05f5d | ||
|
|
0fcccf3b42 | ||
|
|
23d8b34113 | ||
|
|
04f51a6f47 | ||
|
|
3decc2fec3 | ||
|
|
e2ccabb6e2 | ||
|
|
9b932594fa | ||
|
|
c3aef24ead | ||
|
|
9abc86ddd3 | ||
|
|
bc41f708bf | ||
|
|
fdbde6eb15 | ||
|
|
4f0d07878b | ||
|
|
beb689c33c | ||
|
|
e733f77253 | ||
|
|
1fdce0ae78 | ||
|
|
7ced614900 | ||
|
|
250acdc992 | ||
|
|
f2e6780456 | ||
|
|
2983f1f63d | ||
|
|
ddccbe7dfa | ||
|
|
e99ab6fa82 | ||
|
|
16b9d318fd | ||
|
|
13182735f8 | ||
|
|
426035fa9b | ||
|
|
5eb3e6ef1d | ||
|
|
d56fca4074 | ||
|
|
6f2eb382d5 | ||
|
|
82aa3f0062 | ||
|
|
eb72bfea00 | ||
|
|
6e8f3a1448 | ||
|
|
dc31095c1c | ||
|
|
834fd976c0 | ||
|
|
609804ea0d | ||
|
|
0f39f7ae5e | ||
|
|
fdfbed9846 | ||
|
|
b4f7ba98b1 | ||
|
|
351bfddc8d | ||
|
|
8a8ac64952 | ||
|
|
e015276fc4 | ||
|
|
4f41716e77 | ||
|
|
d301f754f4 |
86
Dockerfile
86
Dockerfile
@@ -1,34 +1,80 @@
|
||||
FROM debian:latest
|
||||
|
||||
MAINTAINER Andre Germann <info@buanet.de>
|
||||
MAINTAINER Andre Germann <https://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 locales procps libudev-dev unzip sudo
|
||||
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 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
|
||||
# Install prerequisites
|
||||
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
|
||||
acl \
|
||||
apt-utils \
|
||||
build-essential \
|
||||
curl \
|
||||
git \
|
||||
gnupg2 \
|
||||
libavahi-compat-libdnssd-dev \
|
||||
libcap2-bin \
|
||||
libpam0g-dev \
|
||||
libudev-dev \
|
||||
locales \
|
||||
procps \
|
||||
python \
|
||||
sudo \
|
||||
unzip \
|
||||
wget \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN mkdir -p /opt/iobroker/ && chmod 777 /opt/iobroker/
|
||||
RUN mkdir -p /opt/scripts/ && chmod 777 /opt/scripts/
|
||||
# Install node8
|
||||
RUN curl -sL https://deb.nodesource.com/setup_8.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
|
||||
RUN chmod +x iobroker_startup.sh \
|
||||
&& chmod +x setup_avahi.sh \
|
||||
&& chmod +x setup_packages.sh
|
||||
|
||||
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
|
||||
# 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
|
||||
|
||||
RUN npm install iobroker --unsafe-perm && echo $(hostname) > .install_host
|
||||
RUN update-rc.d iobroker.sh remove
|
||||
# Backup initial ioBroker-folder
|
||||
RUN tar -cf /opt/initial_iobroker.tar /opt/iobroker
|
||||
|
||||
CMD ["sh", "/opt/scripts/iobroker_startup.sh"]
|
||||
# Setting up iobroker-user
|
||||
RUN chsh -s /bin/bash iobroker
|
||||
|
||||
ENV DEBIAN_FRONTEND teletype
|
||||
# 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"
|
||||
|
||||
# Setting up EXPOSE for Admin
|
||||
EXPOSE 8081/tcp
|
||||
|
||||
# Run startup-script
|
||||
ENTRYPOINT ["/opt/scripts/iobroker_startup.sh"]
|
||||
|
||||
96
README.md
96
README.md
@@ -1,15 +1,103 @@
|
||||
# docker-iobroker
|
||||
Docker image for ioBroker (http://iobroker.net) based on debian:latest (http://hub.docker.com/_/debian/)
|
||||
|
||||
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.
|
||||
This project creates a Docker image for running ioBroker in a Docker container. It is made for and tested on a Synology Disk Station 1515+ with DSM 6 and Docker-package installed. But it should also work on other systems with Docker (Normally I do a small additional test on my Debian-VM with Docker CE)!
|
||||
|
||||
## Important
|
||||
|
||||
Switching an existing installation from docker-iobroker-image v1 to v2 or greater means switching iobroker itself from node6 to node8! This requires additional steps inside ioBroker! After upgrading iobroker-container you have to call "reinstall.sh" for recompiling your installation for the use with node8. For Details see official ioBroker-documentation (http://www.iobroker.net/docu/?page_id=8323&lang=de). Make backup first!!!
|
||||
|
||||
At the moment v3.0.0 does no longer support running in host-mode on Synology-devices because of a kernel issue in actual DSM-kernel! Please use bridged or macvlan mode. For details see new tutorial linked in the following.
|
||||
|
||||
## Installation & Usage
|
||||
|
||||
For instructions and discussion (in german) please visit ioBroker-Forum (http://forum.iobroker.net/viewtopic.php?f=17&t=5089).
|
||||
A detailed tutorial (german, based on new v3.0.0) can be found here: [https://buanet.de](https://buanet.de/2019/05/iobroker-unter-docker-auf-der-synology-diskstation-v3/). Please notice that the old tutorial does no longer work!
|
||||
|
||||
For discussion and support please visit [ioBroker-forum-thread](http://forum.iobroker.net/viewtopic.php?f=17&t=5089) or use the comments section at the linked tutorial. Please do not contact me directly for any support-reasons. Every support-question should be answered in a public place. Thank you.
|
||||
|
||||
## Special Settings
|
||||
|
||||
In v3.0.0 I added some new features. The following will give some short information about that.
|
||||
|
||||
### Environment Variables
|
||||
|
||||
|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|
|
||||
|
||||
### Mounting Folder/ Volume
|
||||
|
||||
It is now possible to mount an empty folder to /opt/iobroker during first startup of the container. The Startupscript will check this folder and restore content if empty.
|
||||
|
||||
It is 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
|
||||
|
||||
I added some code for fixing permissions for new iobroker-user. Permission-fixing is called on first start of the container. This might take a few minutes. Please be patient!
|
||||
|
||||
## Changelog
|
||||
|
||||
### v3.0.0 (2019-05-09)
|
||||
* bringing changes since v2.0.0 to stable
|
||||
* new tutorial available
|
||||
|
||||
### 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)
|
||||
* 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)
|
||||
* after testing making 1.1.3beta to latest stable release
|
||||
|
||||
### v1.1.3beta (2018-08-21)
|
||||
* added ffmpeg-package for yahka to support webcams
|
||||
|
||||
### v1.1.2beta (2018-04-04)
|
||||
* added ENV for timezone issue
|
||||
|
||||
### v1.1.1beta (2018-03-29)
|
||||
* added wget package
|
||||
* updated readme.md
|
||||
|
||||
### v1.1.0 (2017-12-10)
|
||||
* changed startup call to fix restart issue
|
||||
* fixed avahi startup issue
|
||||
@@ -17,7 +105,7 @@ For instructions and discussion (in german) please visit ioBroker-Forum (http://
|
||||
* added z-wave support
|
||||
* added logging to /opt/scripts/docker_iobroker_log.txt
|
||||
|
||||
### v1.0.1 (2017-08-25)
|
||||
### v1.0.1beta (2017-08-25)
|
||||
* fixed locales issue
|
||||
|
||||
### v1.0.0 (2017-08-22)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -1,14 +1,83 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# Reading env-variables
|
||||
packages=$PACKAGES
|
||||
avahi=$AVAHI
|
||||
|
||||
# Getting date and time for logging
|
||||
dati=`date '+%Y-%m-%d %H:%M:%S'`
|
||||
|
||||
# Information
|
||||
echo ''
|
||||
echo '----------------------------------------'
|
||||
echo '----- Image-Version: 3.0.0 -----'
|
||||
echo '----- '$dati' -----'
|
||||
echo '----------------------------------------'
|
||||
echo ''
|
||||
echo 'Startupscript running...'
|
||||
|
||||
# Checking and installing additional packages
|
||||
if [ "$packages" != "" ]
|
||||
then
|
||||
echo ''
|
||||
echo 'Installing additional packages...'
|
||||
echo 'The following packages will be installed:' $packages
|
||||
echo $packages > /opt/scripts/.packages
|
||||
sh /opt/scripts/setup_packages.sh > /opt/scripts/setup_packages.log 2>&1
|
||||
echo 'Installing additional packages done...'
|
||||
fi
|
||||
|
||||
cd /opt/iobroker
|
||||
|
||||
if [ -f .install_host ];
|
||||
# Checking and restoring ioBroker to empty mounted folder
|
||||
if [ `ls -1a|wc -l` -lt 3 ]
|
||||
then
|
||||
./iobroker host $(cat .install_host) && echo $(hostname) > .install_host
|
||||
rm .install_host
|
||||
echo ''
|
||||
echo 'Directory /opt/iobroker is empty!'
|
||||
echo 'Restoring data from image...'
|
||||
tar -xf /opt/initial_iobroker.tar -C /
|
||||
echo 'Restoring done...'
|
||||
fi
|
||||
|
||||
# Checking for first run of a new installation and renaming ioBroker
|
||||
if [ -f /opt/iobroker/.install_host ]
|
||||
then
|
||||
echo ''
|
||||
echo 'This is the first run of an new installation...'
|
||||
echo 'Hostname given is' $(hostname)'...'
|
||||
echo 'Renaming ioBroker...'
|
||||
iobroker host $(cat /opt/iobroker/.install_host)
|
||||
rm -f /opt/iobroker/.install_host
|
||||
echo 'Renaming ioBroker done...'
|
||||
fi
|
||||
|
||||
# Checking for first run and change permissions
|
||||
if [ -f /opt/.firstrun ]
|
||||
then
|
||||
echo ''
|
||||
echo 'Changing permissions upon first run (This might take a while! Please be patient!)...'
|
||||
chown -R iobroker /opt/iobroker
|
||||
chown -R iobroker /opt/scripts
|
||||
rm -f /opt/.firstrun
|
||||
echo 'Changing permissions done...'
|
||||
fi
|
||||
|
||||
# Checking for and setting up avahi-daemon
|
||||
if [ "$avahi" = "true" ]
|
||||
then
|
||||
echo ''
|
||||
echo 'Initializing Avahi-Daemon...'
|
||||
sh /opt/scripts/setup_avahi.sh
|
||||
echo 'Initializing Avahi-Daemon done...'
|
||||
fi
|
||||
|
||||
/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
|
||||
|
||||
# Starting ioBroker
|
||||
echo ''
|
||||
echo 'Starting ioBroker...'
|
||||
sudo -u iobroker node node_modules/iobroker.js-controller/controller.js > /opt/scripts/iobroker.log 2>&1 &
|
||||
echo 'Starting ioBroker done...'
|
||||
|
||||
# Preventing container restart by keeping a process alive
|
||||
tail -f /dev/null
|
||||
|
||||
35
scripts/setup_avahi.sh
Normal file
35
scripts/setup_avahi.sh
Normal file
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo 'Checking avahi-daemon installation state...'
|
||||
|
||||
if [ -f /usr/sbin/avahi-daemon ]
|
||||
then
|
||||
echo 'Avahi already installed...'
|
||||
else
|
||||
echo 'Installing avahi-daemon...'
|
||||
apt-get update > /opt/scripts/avahi_startup.log 2>&1
|
||||
apt-get install -y libavahi-compat-libdnssd-dev avahi-daemon >> /opt/scripts/avahi_startup.log 2>&1
|
||||
rm -rf /var/lib/apt/lists/* >> /opt/scripts/avahi_startup.log 2>&1
|
||||
echo 'Configuring avahi-daemon...'
|
||||
sed -i '/^rlimit-nproc/s/^\(.*\)/#\1/g' /etc/avahi/avahi-daemon.conf
|
||||
echo 'Configuring dbus...'
|
||||
mkdir /var/run/dbus/
|
||||
fi
|
||||
|
||||
if [ -f /var/run/dbus/pid ];
|
||||
then
|
||||
rm -f /var/run/dbus/pid
|
||||
fi
|
||||
|
||||
if [ -f /var/run/avahi-daemon//pid ];
|
||||
then
|
||||
rm -f /var/run/avahi-daemon//pid
|
||||
fi
|
||||
|
||||
echo 'Starting dbus...'
|
||||
dbus-daemon --system
|
||||
|
||||
echo 'Starting avahi-daemon...'
|
||||
/etc/init.d/avahi-daemon start
|
||||
|
||||
exit 0
|
||||
8
scripts/setup_packages.sh
Normal file
8
scripts/setup_packages.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
apt-get update
|
||||
apt-get install -y $(cat /opt/scripts/.packages)
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
rm -f /opt/scripts/.packages
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user