From a9a18097e6f7b9431e5e34044afe970456faeb39 Mon Sep 17 00:00:00 2001 From: Aeon512 Date: Thu, 15 Feb 2018 21:54:34 +0100 Subject: random password provisioning on boot/startup During bootup of a new docker image, the redis password might not match the nextcloud configuration. Hence, we automatically update the nextcloud configuration. For the MariaDB password the same method is applied. Additionaly identical files have been moved to docker-common to simplify changes in the future --- docker-armhf/debian-ncp/Dockerfile | 2 +- docker-armhf/debian-ncp/run-parts.sh | 47 ------------------------------ docker-armhf/lamp/010lamp | 36 ----------------------- docker-armhf/lamp/Dockerfile | 2 +- docker-armhf/nextcloud/020nextcloud | 55 ------------------------------------ docker-armhf/nextcloud/Dockerfile | 11 ++++++-- docker-armhf/nextcloudpi/000ncp | 9 ------ docker-armhf/nextcloudpi/Dockerfile | 2 +- 8 files changed, 11 insertions(+), 153 deletions(-) delete mode 100755 docker-armhf/debian-ncp/run-parts.sh delete mode 100755 docker-armhf/lamp/010lamp delete mode 100755 docker-armhf/nextcloud/020nextcloud delete mode 100755 docker-armhf/nextcloudpi/000ncp (limited to 'docker-armhf') diff --git a/docker-armhf/debian-ncp/Dockerfile b/docker-armhf/debian-ncp/Dockerfile index c75a0edb..2e767e09 100644 --- a/docker-armhf/debian-ncp/Dockerfile +++ b/docker-armhf/debian-ncp/Dockerfile @@ -6,4 +6,4 @@ CMD /bin/bash RUN mkdir -p /etc/services-available.d /etc/services-enabled.d -COPY docker-armhf/debian-ncp/run-parts.sh / +COPY docker-common/debian-ncp/run-parts.sh / diff --git a/docker-armhf/debian-ncp/run-parts.sh b/docker-armhf/debian-ncp/run-parts.sh deleted file mode 100755 index e35ef2af..00000000 --- a/docker-armhf/debian-ncp/run-parts.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -cleanup() -{ - for file in $( ls -1rv /etc/services-enabled.d ); do - /etc/services-enabled.d/"$file" stop "$1" - done - exit -} - -trap cleanup SIGTERM - -cat > /usr/local/sbin/update-rc.d <<'EOF' -#!/bin/bash -FILE=/etc/services-available.d/???"$1" - -test -f $FILE || { - echo "$1 doesn't exist" - exit 1 -} - -[[ "$2" == "enable" ]] && { - ln -sf $FILE /etc/services-enabled.d/$( basename $FILE ) - echo "enabled $1" - exit 0 -} - -[[ "$2" == "disable" ]] && { - rm -f /etc/services-enabled.d/$( basename $FILE ) - echo "disabled $1" - exit 0 -} -EOF -chmod +x /usr/local/sbin/update-rc.d - -# Iterate only over 000* entries which might setup environment -for file in $( ls -1v /etc/services-enabled.d | grep 000* ); do - /etc/services-enabled.d/"$file" start "$1" -done - -# Iterate over remaining entries -for file in $( ls -1v -I 000* /etc/services-enabled.d ); do - /etc/services-enabled.d/"$file" start "$1" -done - -echo "Init done" -while true; do sleep 0.5; done # do nothing, just wait for trap from 'docker stop' diff --git a/docker-armhf/lamp/010lamp b/docker-armhf/lamp/010lamp deleted file mode 100755 index 9552d848..00000000 --- a/docker-armhf/lamp/010lamp +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -source /usr/local/etc/library.sh - -set -e - -[[ "$1" == "stop" ]] && { - echo "Stopping apache" - apachectl graceful-stop - echo "Stopping PHP-fpm" - killall php-fpm7.0 - echo "Stopping mariaDB" - mysqladmin -u root shutdown - echo "LAMP cleanup complete" - exit 0 -} - -# MOVE CONFIGS TO PERSISTENT VOLUME -persistent_cfg /etc/apache2 - -echo "Starting PHP-fpm" -php-fpm7.0 & - -echo "Starting Apache" -/usr/sbin/apache2ctl start - -echo "Starting mariaDB" -mysqld & - -# wait for mariadb -while :; do - [[ -S /var/run/mysqld/mysqld.sock ]] && break - sleep 0.5 -done - -exit 0 diff --git a/docker-armhf/lamp/Dockerfile b/docker-armhf/lamp/Dockerfile index 30f96f33..c1119255 100644 --- a/docker-armhf/lamp/Dockerfile +++ b/docker-armhf/lamp/Dockerfile @@ -33,7 +33,7 @@ rm -f /var/log/alternatives.log /var/log/apt/*; \ rm /data/database/ib_logfile*; \ rm /usr/local/etc/lamp.sh -COPY docker/lamp/010lamp /etc/services-enabled.d/ +COPY docker-common/lamp/010lamp /etc/services-enabled.d/ ENTRYPOINT ["/run-parts.sh"] diff --git a/docker-armhf/nextcloud/020nextcloud b/docker-armhf/nextcloud/020nextcloud deleted file mode 100755 index 0dda6b23..00000000 --- a/docker-armhf/nextcloud/020nextcloud +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash - -source /usr/local/etc/library.sh - -set -e - -NCDIR=/var/www/nextcloud -OCC="$NCDIR/occ" - -[[ "$1" == "stop" ]] && { - echo "stopping Cron..." - killall cron - echo "stopping Redis..." - killall redis-server - echo "stopping Postfix..." - postfix stop - exit 0 -} - -echo "Starting Redis" -mkdir -p /var/run/redis -chown redis /var/run/redis -sudo -u redis redis-server /etc/redis/redis.conf - -echo "Starting Cron" -cron - -echo "Starting Postfix" -postfix start - - -# INIT DATABASE AND NEXTCLOUD CONFIG (first run) -test -f /data/app/config/config.php || { - echo "Uninitialized instance, running nc-init..." - source /usr/local/etc/library.sh - cd /usr/local/etc/ - activate_script nc-init.sh -} - -# Trusted Domain ( local IP ) -IFACE=$( ip r | grep "default via" | awk '{ print $5 }' ) -IP=$( ip a show dev "$IFACE" | grep global | grep -oP '\d{1,3}(.\d{1,3}){3}' | head -1 ) -sudo -u www-data php "$OCC" config:system:set trusted_domains 1 --value="$IP" - -# Trusted Domain ( as an argument ) -[[ "$@" != "" ]] && { - IP=$( grep -oP '\d{1,3}(\.\d{1,3}){3}' <<< "$2" ) # validate that the first argument is a valid IP - if [[ "$IP" != "" ]]; then - sudo -u www-data php "$OCC" config:system:set trusted_domains 6 --value="$IP" - else - echo "First argument must be an IP address to include as a Trusted domain. Ignoring" - fi -} - -exit 0 diff --git a/docker-armhf/nextcloud/Dockerfile b/docker-armhf/nextcloud/Dockerfile index 9dc54663..f2ba077e 100644 --- a/docker-armhf/nextcloud/Dockerfile +++ b/docker-armhf/nextcloud/Dockerfile @@ -31,6 +31,11 @@ rm -f /var/log/alternatives.log /var/log/apt/*; \ # specific cleanup apt-get purge -y wget ca-certificates; \ -rm /usr/local/etc/nc-nextcloud.sh - -COPY docker/nextcloud/020nextcloud /etc/services-enabled.d/ +rm /usr/local/etc/nc-nextcloud.sh; \ +sed -i -E "s/^requirepass .*/requirepass default/" /etc/redis/redis.conf; \ +echo -e "[client]\npassword=default" > /root/.my.cnf; \ +chmod 600 /root/.my.cnf + +COPY docker-common/nextcloud/020nextcloud /etc/services-enabled.d/ +COPY docker-common/nextcloud/ncp-provisioning.sh /usr/local/bin/ +RUN chmod +x /usr/local/bin/ncp-provisioning.sh diff --git a/docker-armhf/nextcloudpi/000ncp b/docker-armhf/nextcloudpi/000ncp deleted file mode 100755 index f23f0183..00000000 --- a/docker-armhf/nextcloudpi/000ncp +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -source /usr/local/etc/library.sh - -# INIT NCP CONFIG (first run) -persistent_cfg /usr/local/etc/nextcloudpi-config.d /data/ncp -persistent_cfg /etc/services-enabled.d - -exit 0 diff --git a/docker-armhf/nextcloudpi/Dockerfile b/docker-armhf/nextcloudpi/Dockerfile index 4ea70bc1..7b2fe16a 100644 --- a/docker-armhf/nextcloudpi/Dockerfile +++ b/docker-armhf/nextcloudpi/Dockerfile @@ -73,7 +73,7 @@ rm -rf /usr/share/doc/*; \ rm -f /var/log/alternatives.log /var/log/apt/*; \ rm /var/cache/debconf/*-old; -COPY docker-armhf/nextcloudpi/000ncp /etc/services-enabled.d/ +COPY docker-common/nextcloudpi/000ncp /etc/services-enabled.d/ # 4443 - ncp-web EXPOSE 80 443 4443 -- cgit v1.2.3