#!/bin/bash # Init NextCloud database and perform initial configuration # # Copyleft 2017 by Ignacio Nunez Hernanz # GPL licensed (see end of file) * Use at your own risk! # # More at https://ownyourbits.com/2017/02/13/nextcloud-ready-raspberry-pi-image/ # DBADMIN=ncadmin configure() { source /usr/local/etc/library.sh # sets PHPVER echo "Setting up a clean Nextcloud instance... wait until message 'NC init done'" # checks local REDISPASS=$( grep "^requirepass" /etc/redis/redis.conf | cut -d' ' -f2 ) [[ "$REDISPASS" == "" ]] && { echo "redis server without a password. Abort"; return 1; } ## RE-CREATE DATABASE TABLE echo "Setting up database..." # launch mariadb if not already running if ! pgrep -c mysqld &>/dev/null; then mysqld & fi # wait for mariadb pgrep -x mysqld &>/dev/null || { echo "mariaDB process not found. Waiting..." while :; do [[ -S /run/mysqld/mysqld.sock ]] && break sleep 0.5 done } # workaround to emulate DROP USER IF EXISTS ..;) local DBPASSWD=$( grep password /root/.my.cnf | sed 's|password=||' ) mysql </dev/null; then mkdir -p /var/run/redis chown redis /var/run/redis sudo -u redis redis-server /etc/redis/redis.conf & fi while :; do [[ -S /run/redis/redis.sock ]] && break sleep 0.5 done echo "Setting up Nextcloud..." cd /var/www/nextcloud/ rm -f config/config.php ncc maintenance:install --database \ "mysql" --database-name "nextcloud" --database-user "$DBADMIN" --database-pass \ "$DBPASSWD" --admin-user "$ADMINUSER" --admin-pass "$ADMINPASS" # cron jobs ncc background:cron # redis cache sed -i '$d' config/config.php cat >> config/config.php < '\\OC\\Memcache\\Redis', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array ( 'host' => '/var/run/redis/redis.sock', 'port' => 0, 'timeout' => 0.0, 'password' => '$REDISPASS', ), ); EOF # tmp upload dir local UPLOADTMPDIR=/var/www/nextcloud/data/tmp mkdir -p "$UPLOADTMPDIR" chown www-data:www-data "$UPLOADTMPDIR" ncc config:system:set tempdirectory --value "$UPLOADTMPDIR" sed -i "s|^;\?upload_tmp_dir =.*$|upload_tmp_dir = $UPLOADTMPDIR|" /etc/php/${PHPVER}/cli/php.ini sed -i "s|^;\?upload_tmp_dir =.*$|upload_tmp_dir = $UPLOADTMPDIR|" /etc/php/${PHPVER}/fpm/php.ini sed -i "s|^;\?sys_temp_dir =.*$|sys_temp_dir = $UPLOADTMPDIR|" /etc/php/${PHPVER}/fpm/php.ini # 4 Byte UTF8 support ncc config:system:set mysql.utf8mb4 --type boolean --value="true" # Default trusted domain ( only from ncp-config ) test -f /usr/local/bin/nextcloud-domain.sh && { test -f /.ncp-image || bash /usr/local/bin/nextcloud-domain.sh } ncc config:system:set trusted_domains 5 --value="nextcloudpi.local" # trusted_domains 6 used by docker ncc config:system:set trusted_domains 7 --value="nextcloudpi" ncc config:system:set trusted_domains 8 --value="nextcloudpi.lan" # email ncc config:system:set mail_smtpmode --value="sendmail" ncc config:system:set mail_smtpauthtype --value="LOGIN" ncc config:system:set mail_from_address --value="admin" ncc config:system:set mail_domain --value="ownyourbits.com" # NCP theme [[ -e /usr/local/etc/logo ]] && { local ID=$( grep instanceid config/config.php | awk -F "=> " '{ print $2 }' | sed "s|[,']||g" ) [[ "$ID" == "" ]] && { echo "failed to get ID"; return 1; } mkdir -p data/appdata_${ID}/theming/images cp /usr/local/etc/background data/appdata_${ID}/theming/images cp /usr/local/etc/logo data/appdata_${ID}/theming/images/logo cp /usr/local/etc/logo data/appdata_${ID}/theming/images/logoheader chown -R www-data:www-data data/appdata_${ID} } mysql nextcloud <