mirror of
https://github.com/buanet/ioBroker.docker.git
synced 2025-12-20 03:48:59 +02:00
multiarch
This commit is contained in:
167
amd64/scripts/iobroker_startup.sh
Normal file
167
amd64/scripts/iobroker_startup.sh
Normal file
@@ -0,0 +1,167 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Reading ENV
|
||||
packages=$PACKAGES
|
||||
avahi=$AVAHI
|
||||
uid=$SETUID
|
||||
gid=$SETGID
|
||||
|
||||
# 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."
|
||||
echo "Initializing Avahi-Daemon..."
|
||||
chmod 764 /opt/scripts/setup_avahi.sh
|
||||
sh /opt/scripts/setup_avahi.sh
|
||||
echo 'Done.'
|
||||
echo ' '
|
||||
fi
|
||||
|
||||
sleep 5
|
||||
|
||||
# Starting ioBroker
|
||||
echo "$(printf -- '-%.0s' {1..60})"
|
||||
echo "----- Step 5 of 5: ioBroker startup -----"
|
||||
echo "$(printf -- '-%.0s' {1..60})"
|
||||
echo ' '
|
||||
echo "Starting ioBroker..."
|
||||
echo ' '
|
||||
#gosu iobroker node --trace-warnings node_modules/iobroker.js-controller/controller.js > /opt/iobroker/iobroker.log 2>&1 &
|
||||
gosu iobroker node node_modules/iobroker.js-controller/controller.js
|
||||
|
||||
# Preventing container restart by keeping a process alive even if iobroker will be stopped
|
||||
tail -f /dev/null
|
||||
35
amd64/scripts/setup_avahi.sh
Normal file
35
amd64/scripts/setup_avahi.sh
Normal file
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo 'Checking avahi-daemon installation state...'
|
||||
|
||||
if [ -f /usr/sbin/avahi-daemon ]
|
||||
then
|
||||
echo 'Avahi 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
amd64/scripts/setup_packages.sh
Normal file
8
amd64/scripts/setup_packages.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
apt-get update
|
||||
apt-get install -y $(cat /opt/scripts/.packages)
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
rm -f /opt/scripts/.packages
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user