Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/nextcloudpi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ncp/CONFIG/nc-nextcloud.sh')
-rw-r--r--bin/ncp/CONFIG/nc-nextcloud.sh248
1 files changed, 248 insertions, 0 deletions
diff --git a/bin/ncp/CONFIG/nc-nextcloud.sh b/bin/ncp/CONFIG/nc-nextcloud.sh
new file mode 100644
index 00000000..960e5a4b
--- /dev/null
+++ b/bin/ncp/CONFIG/nc-nextcloud.sh
@@ -0,0 +1,248 @@
+#!/bin/bash
+
+# Nextcloud installation on Raspbian over LAMP base
+#
+# Copyleft 2017 by Ignacio Nunez Hernanz <nacho _a_t_ ownyourbits _d_o_t_ com>
+# 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
+REDIS_MEM=3gb
+PHPVER=7.2
+
+APTINSTALL="apt-get install -y --no-install-recommends"
+export DEBIAN_FRONTEND=noninteractive
+
+install()
+{
+ # During build, this step is run before ncp.sh. Avoid executing twice
+ [[ -f /usr/lib/systemd/system/nc-provisioning.service ]] && return 0
+
+ local RELEASE=stretch
+
+ # Optional packets for Nextcloud and Apps
+ apt-get update
+ $APTINSTALL lbzip2 iputils-ping
+ $APTINSTALL -t $RELEASE php-smbclient # for external storage
+ $APTINSTALL -t $RELEASE imagemagick php${PHPVER}-imagick php${PHPVER}-exif # for gallery
+
+
+ # POSTFIX
+ $APTINSTALL postfix || {
+ # [armbian] workaround for bug - https://bugs.launchpad.net/ubuntu/+source/postfix/+bug/1531299
+ echo "[NCP] Please, ignore the previous postfix installation error ..."
+ mv /usr/bin/newaliases /
+ ln -s /bin/true /usr/bin/newaliases
+ $APTINSTALL postfix
+ rm /usr/bin/newaliases
+ mv /newaliases /usr/bin/newaliases
+ }
+
+ $APTINSTALL redis-server
+ $APTINSTALL -t $RELEASE php${PHPVER}-redis
+
+ local REDIS_CONF=/etc/redis/redis.conf
+ local REDISPASS="default"
+ sed -i "s|# unixsocket .*|unixsocket /var/run/redis/redis.sock|" $REDIS_CONF
+ sed -i "s|# unixsocketperm .*|unixsocketperm 770|" $REDIS_CONF
+ sed -i "s|# requirepass .*|requirepass $REDISPASS|" $REDIS_CONF
+ sed -i 's|# maxmemory-policy .*|maxmemory-policy allkeys-lru|' $REDIS_CONF
+ sed -i 's|# rename-command CONFIG ""|rename-command CONFIG ""|' $REDIS_CONF
+ sed -i "s|^port.*|port 0|" $REDIS_CONF
+ echo "maxmemory $REDIS_MEM" >> $REDIS_CONF
+ echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
+
+ usermod -a -G redis www-data
+
+ service redis-server restart
+ update-rc.d redis-server enable
+ service php${PHPVER}-fpm restart
+
+ # service to randomize passwords on first boot
+ mkdir -p /usr/lib/systemd/system
+ cat > /usr/lib/systemd/system/nc-provisioning.service <<'EOF'
+[Unit]
+Description=Randomize passwords on first boot
+Requires=network.target
+After=mysql.service redis.service
+
+[Service]
+ExecStart=/bin/bash /usr/local/bin/ncp-provisioning.sh
+
+[Install]
+WantedBy=multi-user.target
+EOF
+ [[ "$DOCKERBUILD" != 1 ]] && systemctl enable nc-provisioning
+ return 0
+}
+
+configure()
+{
+ ## IF BETA SELECTED ADD "pre" to DOWNLOAD PATH
+ [[ "$BETA" == yes ]] && local PREFIX="pre"
+
+ ## DOWNLOAD AND (OVER)WRITE NEXTCLOUD
+ cd /var/www/
+
+ local URL="https://download.nextcloud.com/server/${PREFIX}releases/nextcloud-$VER.tar.bz2"
+ echo "Downloading Nextcloud $VER..."
+ wget -q "$URL" -O nextcloud.tar.bz2 || {
+ echo "couldn't download $URL"
+ return 1
+ }
+ rm -rf nextcloud
+
+ echo "Installing Nextcloud $VER..."
+ tar -xf nextcloud.tar.bz2
+ rm nextcloud.tar.bz2
+
+ ## CONFIGURE FILE PERMISSIONS
+ local ocpath='/var/www/nextcloud'
+ local htuser='www-data'
+ local htgroup='www-data'
+ local rootuser='root'
+
+ printf "Creating possible missing Directories\n"
+ mkdir -p $ocpath/data
+ mkdir -p $ocpath/updater
+
+ printf "chmod Files and Directories\n"
+ find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
+ find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
+
+ printf "chown Directories\n"
+
+ chown -R ${htuser}:${htgroup} ${ocpath}/
+ chown -R ${htuser}:${htgroup} ${ocpath}/apps/
+ chown -R ${htuser}:${htgroup} ${ocpath}/config/
+ chown -R ${htuser}:${htgroup} ${ocpath}/data/
+ chown -R ${htuser}:${htgroup} ${ocpath}/themes/
+ chown -R ${htuser}:${htgroup} ${ocpath}/updater/
+
+ chmod +x ${ocpath}/occ
+
+ printf "chmod/chown .htaccess\n"
+ if [ -f ${ocpath}/.htaccess ]; then
+ chmod 0644 ${ocpath}/.htaccess
+ chown ${htuser}:${htgroup} ${ocpath}/.htaccess
+ fi
+ if [ -f ${ocpath}/data/.htaccess ]; then
+ chmod 0644 ${ocpath}/data/.htaccess
+ chown ${htuser}:${htgroup} ${ocpath}/data/.htaccess
+ fi
+
+ # create and configure opcache dir
+ local OPCACHEDIR=/var/www/nextcloud/data/.opcache
+ sed -i "s|^opcache.file_cache=.*|opcache.file_cache=$OPCACHEDIR|" /etc/php/${PHPVER}/mods-available/opcache.ini
+ mkdir -p $OPCACHEDIR
+ chown -R www-data:www-data $OPCACHEDIR
+
+ ## RE-CREATE DATABASE TABLE
+ # launch mariadb if not already running (for docker build)
+ if ! pgrep -c mysqld &>/dev/null; then
+ echo "Starting mariaDB"
+ mysqld &
+ fi
+
+ # wait for mariadb
+ pgrep -x mysqld &>/dev/null || echo "mariaDB process not found"
+
+ while :; do
+ [[ -S /var/run/mysqld/mysqld.sock ]] && break
+ sleep 0.5
+ done
+
+ echo "Setting up database..."
+
+ # workaround to emulate DROP USER IF EXISTS ..;)
+ local DBPASSWD=$( grep password /root/.my.cnf | sed 's|password=||' )
+ mysql <<EOF
+DROP DATABASE IF EXISTS nextcloud;
+CREATE DATABASE nextcloud
+ CHARACTER SET utf8mb4
+ COLLATE utf8mb4_unicode_ci;
+GRANT USAGE ON *.* TO '$DBADMIN'@'localhost' IDENTIFIED BY '$DBPASSWD';
+DROP USER '$DBADMIN'@'localhost';
+CREATE USER '$DBADMIN'@'localhost' IDENTIFIED BY '$DBPASSWD';
+GRANT ALL PRIVILEGES ON nextcloud.* TO $DBADMIN@localhost;
+EXIT
+EOF
+
+## SET APACHE VHOST
+ echo "Setting up Apache..."
+ cat > /etc/apache2/sites-available/nextcloud.conf <<'EOF'
+<IfModule mod_ssl.c>
+ <VirtualHost _default_:443>
+ DocumentRoot /var/www/nextcloud
+ CustomLog /var/log/apache2/nc-access.log combined
+ ErrorLog /var/log/apache2/nc-error.log
+ SSLEngine on
+ SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
+ SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
+ </VirtualHost>
+ <Directory /var/www/nextcloud/>
+ Options +FollowSymlinks
+ AllowOverride All
+ <IfModule mod_dav.c>
+ Dav off
+ </IfModule>
+ LimitRequestBody 0
+ SSLRenegBufferSize 10486000
+ </Directory>
+</IfModule>
+EOF
+ a2ensite nextcloud
+
+ cat > /etc/apache2/sites-available/000-default.conf <<'EOF'
+<VirtualHost _default_:80>
+ DocumentRoot /var/www/nextcloud
+ <IfModule mod_rewrite.c>
+ RewriteEngine On
+ RewriteCond %{HTTPS} !=on
+ RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
+ </IfModule>
+</VirtualHost>
+EOF
+
+ # some added security
+ sed -i 's|^ServerSignature .*|ServerSignature Off|' /etc/apache2/conf-enabled/security.conf
+ sed -i 's|^ServerTokens .*|ServerTokens Prod|' /etc/apache2/conf-enabled/security.conf
+
+ echo "Setting up system..."
+
+ ## SET LIMITS
+ sed -i "s/post_max_size=.*/post_max_size=$MAXFILESIZE/" /var/www/nextcloud/.user.ini
+ sed -i "s/upload_max_filesize=.*/upload_max_filesize=$MAXFILESIZE/" /var/www/nextcloud/.user.ini
+ sed -i "s/memory_limit=.*/memory_limit=$MEMORYLIMIT/" /var/www/nextcloud/.user.ini
+
+ # slow transfers will be killed after this time
+ cat >> /var/www/nextcloud/.user.ini <<< "max_execution_time=$MAXTRANSFERTIME"
+ cat >> /var/www/nextcloud/.user.ini <<< "max_input_time=$MAXTRANSFERTIME"
+
+ ## SET CRON
+ echo "*/15 * * * * php -f /var/www/nextcloud/cron.php" > /tmp/crontab_http
+ crontab -u www-data /tmp/crontab_http
+ rm /tmp/crontab_http
+
+ echo "Don't forget to run nc-init"
+}
+
+# License
+#
+# This script is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This script is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this script; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+# Boston, MA 02111-1307 USA
+