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 'etc/ncp-config.d/nc-datadir.sh')
-rw-r--r--etc/ncp-config.d/nc-datadir.sh116
1 files changed, 116 insertions, 0 deletions
diff --git a/etc/ncp-config.d/nc-datadir.sh b/etc/ncp-config.d/nc-datadir.sh
new file mode 100644
index 00000000..b03bc5ad
--- /dev/null
+++ b/etc/ncp-config.d/nc-datadir.sh
@@ -0,0 +1,116 @@
+#!/bin/bash
+
+# Data dir configuration script for NextCloudPlus
+#
+# 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!
+#
+# Usage:
+#
+# ./installer.sh nc-datadir.sh <IP> (<img>)
+#
+# See installer.sh instructions for details
+#
+# More at https://ownyourbits.com/2017/03/13/nextcloudpi-gets-nextcloudpi-config/
+#
+
+DATADIR_=/media/USBdrive/ncdata
+DESCRIPTION="Change your data dir to a new location, like a USB drive"
+
+INFO="Note that non Unix filesystems such as NTFS are not supported
+because they do not provide a compatible user/permissions system"
+
+is_active()
+{
+ local SRCDIR
+ [[ "$( id -u )" != 33 ]] && local SUDO="sudo -u www-data"
+ SRCDIR=$( $SUDO php /var/www/nextcloud/occ config:system:get datadirectory ) || return 1;
+ [[ "$SRCDIR" != "/var/www/nextcloud/data" ]]
+}
+
+install()
+{
+ apt-get update
+ apt-get install -y --no-install-recommends btrfs-tools
+}
+
+configure()
+{
+ ## CHECKS
+ local SRCDIR
+ SRCDIR=$( cd /var/www/nextcloud; sudo -u www-data php occ config:system:get datadirectory ) || {
+ echo -e "Error reading data directory. Is NextCloud running and configured?";
+ return 1;
+ }
+ [ -d "$SRCDIR" ] || { echo -e "data directory $SRCDIR not found"; return 1; }
+
+ [[ "$SRCDIR" == "$DATADIR_" ]] && { echo -e "INFO: data already there"; return 0; }
+
+ # check datadir exists
+ [ -d $DATADIR_ ] && {
+ local BKP="${DATADIR_}-$( date "+%m-%d-%y" )"
+ echo "INFO: $DATADIR_ is not empty. Creating backup $BKP"
+ mv "$DATADIR_" "$BKP"
+ }
+
+ local BASEDIR=$( dirname "$DATADIR_" )
+
+ [ -d "$BASEDIR" ] || { echo "$BASEDIR does not exist"; return 1; }
+
+ grep -q -e ext -e btrfs <( stat -fc%T "$BASEDIR" ) || { echo -e "Only ext/btrfs filesystems can hold the data directory"; return 1; }
+
+ sudo -u www-data test -x "$BASEDIR" || { echo -e "ERROR: the user www-data does not have access permissions over $BASEDIR"; return 1; }
+
+ [[ $( stat -fc%d / ) == $( stat -fc%d "$BASEDIR" ) ]] && {
+ echo "Refusing to move to the SD card. Abort"
+ return 1
+ }
+
+ ## COPY
+ cd /var/www/nextcloud
+ sudo -u www-data php occ maintenance:mode --on
+
+ echo "moving data dir from $SRCDIR to $DATADIR_..."
+
+ # use subvolumes, if BTRFS
+ [[ "$( stat -fc%T "$BASEDIR" )" == "btrfs" ]] && {
+ echo "BTRFS filesystem detected"
+ btrfs subvolume create "$DATADIR_" || return 1
+ }
+
+ cp --reflink=auto -raT "$SRCDIR" "$DATADIR_" || return 1
+
+ # tmp upload dir
+ mkdir -p "$DATADIR_/tmp"
+ chown www-data:www-data "$DATADIR_/tmp"
+ sed -i "s|^;\?upload_tmp_dir =.*$|upload_tmp_dir = $DATADIR_/tmp|" /etc/php/7.0/fpm/php.ini
+
+ # opcache dir
+ sed -i "s|^opcache.file_cache=.*|opcache.file_cache=$DATADIR_/.opcache|" /etc/php/7.0/mods-available/opcache.ini
+
+ # update fail2ban logpath
+ sed -i "s|logpath =.*nextcloud.log|logpath = $DATADIR_/nextcloud.log|" /etc/fail2ban/jail.conf
+
+ # datadir
+ sudo -u www-data php occ config:system:set datadirectory --value="$DATADIR_"
+ sudo -u www-data php occ config:system:set logfile --value="$DATADIR_/nextcloud.log"
+ sudo -u www-data php occ maintenance:mode --off
+}
+
+# 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
+