Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Automated Nextcloud install - Ubuntu nginx+PHP7.4 (need to connect to a external DB)
- #!/bin/bash
- sudo apt update -y && sudo apt upgrade -y
- #Install nginx
- sudo apt install nginx -y
- sudo systemctl start nginx
- sudo systemctl enable nginx
- sudo chown www-data:www-data /usr/share/nginx/html -R
- #install Install PHP7.4 (might need to change version from 7.4 in the future)
- sudo apt install php7.4 php7.4-fpm php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl -y
- sudo systemctl start php7.4-fpm
- sudo systemctl enable php7.4-fpm
- #Create a Nginx Server Block and remove the default sites enabled one (might need to change version from 7.4 in the future)
- sudo touch /etc/nginx/conf.d/default.conf
- var="server {
- listen 80;
- listen [::]:80;
- server_name _;
- root /usr/share/nginx/html/;
- index index.php index.html index.htm index.nginx-debian.html;
- location / {
- try_files $uri $uri/ /index.php;
- }
- location ~ \.php$ {
- fastcgi_pass unix:/run/php/php7.4-fpm.sock;
- fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
- include fastcgi_params;
- include snippets/fastcgi-php.conf;
- }
- # A long browser cache lifetime can speed up repeat visits to your page
- location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
- access_log off;
- log_not_found off;
- expires 360d;
- }
- # disable access to hidden files
- location ~ /\.ht {
- access_log off;
- log_not_found off;
- deny all;
- }
- }";
- destdir=/etc/nginx/conf.d/default.conf
- if [ -f "$destdir" ]
- then
- echo "$var" > "$destdir"
- fi
- #reload nginx
- sudo systemctl reload nginx
- #Download Nextcloud
- wget https://download.nextcloud.com/server/releases/latest.zip
- sudo apt install unzip -y
- sudo unzip latest.zip -d /usr/share/nginx/
- sudo chown www-data:www-data /usr/share/nginx/nextcloud/ -R
- #Create a Nginx Config File for Nextcloud (change to correct domain name in the future)
- sudo touch /etc/nginx/conf.d/nextcloud.conf
- var="server {
- listen 80;
- listen [::]:80;
- server_name nextcloud.home;
- # Add headers to serve security related headers
- 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 Referrer-Policy no-referrer;
- #I found this header is needed on Ubuntu, but not on Arch Linux.
- add_header X-Frame-Options \"SAMEORIGIN\";
- # Path to the root of your installation
- root /usr/share/nginx/nextcloud/;
- access_log /var/log/nginx/nextcloud.access;
- error_log /var/log/nginx/nextcloud.error;
- location = /robots.txt {
- allow all;
- log_not_found off;
- access_log off;
- }
- # The following 2 rules are only needed for the user_webfinger app.
- # Uncomment it if you're planning to use this app.
- #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
- #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
- # last;
- location = /.well-known/carddav {
- return 301 \$scheme://\$host/remote.php/dav;
- }
- location = /.well-known/caldav {
- return 301 \$scheme://\$host/remote.php/dav;
- }
- location ~ /.well-known/acme-challenge {
- allow all;
- }
- # set max upload size
- client_max_body_size 512M;
- fastcgi_buffers 64 4K;
- # Disable gzip to avoid the removal of the ETag header
- gzip off;
- # Uncomment if your server is build with the ngx_pagespeed module
- # This module is currently not supported.
- #pagespeed off;
- error_page 403 /core/templates/403.php;
- error_page 404 /core/templates/404.php;
- location / {
- rewrite ^ /index.php;
- }
- location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
- deny all;
- }
- location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
- deny all;
- }
- location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
- include fastcgi_params;
- fastcgi_split_path_info ^(.+\.php)(/.*)$;
- try_files \$fastcgi_script_name =404;
- fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
- fastcgi_param PATH_INFO \$fastcgi_path_info;
- #Avoid sending the security headers twice
- fastcgi_param modHeadersAvailable true;
- fastcgi_param front_controller_active true;
- fastcgi_pass unix:/run/php/php7.4-fpm.sock;
- fastcgi_intercept_errors on;
- fastcgi_request_buffering off;
- }
- location ~ ^/(?:updater|ocs-provider)(?:$|/) {
- try_files \$uri/ =404;
- index index.php;
- }
- # Adding the cache control header for js and css files
- # Make sure it is BELOW the PHP block
- location ~* \.(?:css|js)$ {
- try_files \$uri /index.php\$uri\$is_args\$args;
- add_header Cache-Control \"public, max-age=7200\";
- # Add headers to serve security related headers (It is intended to
- # have those duplicated to the ones above)
- 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 Referrer-Policy no-referrer;
- # Optional: Don't log access to assets
- access_log off;
- }
- location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
- try_files \$uri /index.php\$uri\$is_args\$args;
- # Optional: Don't log access to other assets
- access_log off;
- }
- }";
- destdir=/etc/nginx/conf.d/nextcloud.conf
- if [ -f "$destdir" ]
- then
- echo "$var" > "$destdir"
- fi
- #Reload nginx
- sudo systemctl reload nginx
- # Install and Enable PHP Modules
- sudo apt install php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl
Add Comment
Please, Sign In to add comment