浏览代码

[Nextcloud] Always install under subdomain, minor changes to site config and install script

andryyy 6 年之前
父节点
当前提交
cd88165282

+ 3 - 3
data/assets/nextcloud/nextcloud.conf

@@ -75,7 +75,7 @@ server {
     deny all;
   }
 
-  location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
+  location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[ms]-provider/.+)\.php(?:$|/) {
     fastcgi_split_path_info ^(.+\.php)(/.*)$;
     include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
@@ -90,12 +90,12 @@ server {
     fastcgi_read_timeout 1200;
   }
 
-  location ~ ^/(?:updater|ocs-provider)(?:$|/) {
+  location ~ ^/(?:updater|oc[ms]-provider)(?:$|/) {
     try_files $uri/ =404;
     index index.php;
   }
 
-  location ~ \.(?:css|js|woff|svg|gif)$ {
+  location ~ \.(?:css|js|woff2?|svg|gif)$ {
     try_files $uri /index.php$uri$is_args$args;
     add_header Cache-Control "public, max-age=15778463";
     add_header X-Content-Type-Options nosniff;

+ 1 - 1
data/assets/nextcloud/occ

@@ -1,2 +1,2 @@
 #!/bin/bash
-docker exec -it -u www-data $(docker ps -f name=php-fpm-mailcow -q) /web/nextcloud/occ ${@}
+docker exec -it -u www-data $(docker ps -f name=php-fpm-mailcow -q) php /web/nextcloud/occ ${@}

+ 0 - 44
data/assets/nextcloud/site.nextcloud.custom

@@ -1,44 +0,0 @@
-  location ^~ /nextcloud {
-    location /nextcloud {
-      rewrite ^ /nextcloud/index.php$uri;
-    }
-    location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {
-      deny all;
-    }
-    location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) {
-      deny all;
-    }
-    location ~ ^/nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
-      fastcgi_split_path_info ^(.+\.php)(/.*)$;
-      include fastcgi_params;
-      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
-      fastcgi_param PATH_INFO $fastcgi_path_info;
-      fastcgi_param HTTPS on;
-      fastcgi_param modHeadersAvailable true;
-      fastcgi_param front_controller_active true;
-      fastcgi_pass phpfpm:9002;
-      fastcgi_intercept_errors on;
-      fastcgi_request_buffering off;
-      client_max_body_size 0;
-      fastcgi_read_timeout 1200;
-    }
-    location ~ ^/nextcloud/(?:updater|ocs-provider)(?:$|/) {
-      try_files $uri/ =404;
-      index index.php;
-    }
-    location ~ \.(?:css|js|woff|svg|gif)$ {
-      try_files $uri /nextcloud/index.php$uri$is_args$args;
-      add_header Cache-Control "public, max-age=15778463";
-      add_header X-Content-Type-Options nosniff;
-      add_header X-XSS-Protection "1; mode=block";
-      add_header X-Robots-Tag none;
-      add_header X-Download-Options noopen;
-      add_header X-Permitted-Cross-Domain-Policies none;
-      add_header X-Frame-Options "SAMEORIGIN";
-      access_log off;
-    }
-    location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
-      try_files $uri /nextcloud/index.php$uri$is_args$args;
-      access_log off;
-    }
-  }

+ 17 - 25
helper-scripts/nextcloud.sh

@@ -83,20 +83,13 @@ elif [[ ${NC_UPDATE} == "y" ]]; then
   fi
 
 elif [[ ${NC_INSTALL} == "y" ]]; then
-  NC_TYPE=
-  while [[ ! ${NC_TYPE} =~ ^subfolder$|^subdomain$ ]]; do
-    read -p "Configure as subdomain or subfolder? [subdomain/subfolder] " NC_TYPE
+  NC_SUBD=
+  while [[ -z ${NC_SUBD} ]]; do
+    read -p "Subdomain to run Nextcloud from [format: nextcloud.domain.tld]: " NC_SUBD
   done
-
-  if [[ ${NC_TYPE} == "subdomain" ]]; then
-    NC_SUBD=
-      while [[ -z ${NC_SUBD} ]]; do
-          read -p "Which subdomain? [format: nextcloud.domain.tld] " NC_SUBD
-      done
-    if ! ping -q -c2 ${NC_SUBD} > /dev/null 2>&1 ; then
-      read -p "Cannot ping subdomain, continue anyway? [y|N] " NC_CONT_FAIL
-      [[ ! ${NC_CONT_FAIL,,} =~ ^(yes|y)$ ]] && { echo "Ok, exiting..."; exit 1; }
-    fi
+  if ! ping -q -c2 ${NC_SUBD} > /dev/null 2>&1 ; then
+    read -p "Cannot ping subdomain, continue anyway? [y|N] " NC_CONT_FAIL
+    [[ ! ${NC_CONT_FAIL,,} =~ ^(yes|y)$ ]] && { echo "Ok, exiting..."; exit 1; }
   fi
 
   ADMIN_NC_PASS=$(</dev/urandom tr -dc A-Za-z0-9 | head -c 28)
@@ -107,7 +100,7 @@ elif [[ ${NC_INSTALL} == "y" ]]; then
     && mkdir -p ./data/web/nextcloud/data \
     && chmod +x ./data/web/nextcloud/occ
 
-  docker exec -it $(docker ps -f name=php-fpm-mailcow -q) /bin/bash -c "chown -R www-data:www-data /web/nextcloud/data /web/nextcloud/config /web/nextcloud/apps"
+  docker exec -it $(docker ps -f name=php-fpm-mailcow -q) /bin/bash -c "chown -R www-data:www-data /web/nextcloud"
   docker exec -it -u www-data $(docker ps -f name=php-fpm-mailcow -q) /web/nextcloud/occ --no-warnings maintenance:install \
     --database mysql \
     --database-host mysql \
@@ -136,22 +129,21 @@ elif [[ ${NC_INSTALL} == "y" ]]; then
     /web/nextcloud/occ --no-warnings config:system:set mail_from_address --value=nextcloud; \
     /web/nextcloud/occ --no-warnings config:system:set mail_domain --value=${MAILCOW_HOSTNAME}; \
     /web/nextcloud/occ --no-warnings config:system:set mail_smtphost --value=postfix; \
-    /web/nextcloud/occ --no-warnings config:system:set mail_smtpport --value=588
-    /web/nextcloud/occ --no-warnings app:install user_external
-    /web/nextcloud/occ --no-warnings config:system:set user_backends 0 arguments 0 --value={dovecot:143/imap/tls/novalidate-cert}
-    /web/nextcloud/occ --no-warnings config:system:set user_backends 0 class --value=OC_User_IMAP
+    /web/nextcloud/occ --no-warnings config:system:set mail_smtpport --value=588; \
+    /web/nextcloud/occ --no-warnings config:system:set trusted_domains 1 --value=${NC_SUBD}; \
+    /web/nextcloud/occ --no-warnings config:system:set overwritewebroot --value=/; \
+    /web/nextcloud/occ --no-warnings config:system:set overwritehost --value=${NC_SUBD}; \
     /web/nextcloud/occ --no-warnings db:convert-filecache-bigint -n"
 
-  if [[ ${NC_TYPE} == "subdomain" ]]; then
-    docker exec -it -u www-data $(docker ps -f name=php-fpm-mailcow -q) /web/nextcloud/occ --no-warnings config:system:set trusted_domains 1 --value=${NC_SUBD}
-    docker exec -it -u www-data $(docker ps -f name=php-fpm-mailcow -q) /web/nextcloud/occ --no-warnings config:system:set overwritewebroot --value=/
-    docker exec -it -u www-data $(docker ps -f name=php-fpm-mailcow -q) /web/nextcloud/occ --no-warnings config:system:set overwritehost --value=${NC_SUBD}
+    # Not installing by default, broke too often
+    #/web/nextcloud/occ --no-warnings app:install user_external; \
+    #/web/nextcloud/occ --no-warnings config:system:set user_backends 0 arguments 0 --value={dovecot:143/imap/tls/novalidate-cert}; \
+    #/web/nextcloud/occ --no-warnings config:system:set user_backends 0 class --value=OC_User_IMAP; \
+
     cp ./data/assets/nextcloud/nextcloud.conf ./data/conf/nginx/
     sed -i "s/NC_SUBD/${NC_SUBD}/g" ./data/conf/nginx/nextcloud.conf
-  elif [[ ${NC_TYPE} == "subfolder" ]]; then
-    cp ./data/assets/nextcloud/site.nextcloud.custom ./data/conf/nginx/
-  fi
 
+  echo "Restarting Nginx..."
   docker restart $(docker ps -aqf name=nginx-mailcow)
 
   echo "Login as admin with password: ${ADMIN_NC_PASS}"