Cara Install Nextcloud 15 Server pada Debian 9 dan Nginx Web Server
Sebelum menginstall Nextcloud Server saya lebih dulu menginstall Owncloud Server, karena dulu lagi penasaran dengan VPS (virtual private server), sehingga semua mau diinstall :D. Nextcloud merupakan fork dari Owncloud, banyak aplikasi yang saling compatible antar keduanya, bahkan saya pernah menggunakan owncloud client untuk koneksi ke nextcloud server. namun untuk sekarang saya lebih merekomendasikan menggunakan nextcloud client pada artikel Install Nextcloud Client pada Archlinux untuk nextcloud server agar tidak terjadi kegagalan yang tidak diinginkan.
Jika anda menggunakan VPS Cloud Server seperti DigitalOcean, Vultr dan lainnya, akan sangat mudah untuk install nextcloud server dengan Install One Click Apps seperti Vultr berikut :

Installasi Nextcloud 15 pada Debian 9
Namun jika server anda sudah jalan dan sudah terconfigurasi untuk website, atau anda ingin menginstall versi Nextcloud paling baru, ada baiknya diinstall secara manual. untuk installasi saya demokan dengan debian 9, untuk distro lain tidak jauh berbeda, dan web server menggunakan nginx, skip saja perintah-perintah yang sudah pernah anda jalankan, berikut langkahnya :
1. Update System
Login terlebih dahulu ke Instance anda dengan SSH, lalu lakukan Update System
apt update && apt upgrade
2. Install Nginx
Install Nginx Web Server, cara lengkap sudah ada pada artikel Install Nginx (Engine X) pada server debian 9 stretch.
#install nginx terbaru
sudo echo "deb http://nginx.org/packages/mainline/debian/ stretch nginx
deb-src http://nginx.org/packages/mainline/debian/ stretch nginx" > /etc/apt/sources.list.d/nginx.list
#add key
sudo wget -qO - http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
#update debian
sudo apt update
#remove nginx debian
sudo apt remove nginx-common
#install nginx terbaru
sudo apt install nginx
#cek versi
sudo nginx -v
3 Install PHP 7.2 FPM
Nextcloud merekomendasikan menggunakan PHP 7, untuk installasi lengkap PHP7.2-FPM sudah ada pada artikel Installasi PHP 7 dengan module PHP-FPM dan Nginx pada Debian 9 Stretch.
#pertama update dulu package repository
sudo apt-get update
#install php 7.2
sudo apt-get install php7.2
#install php-cli dan php-fpm untuk php 7.2
sudo apt-get install php7.2-cli php7.2-fpm
#biasanya letaknya pada direktori '/etc/php/7.2/' coba dicek
sudo ls /etc/php/7.2
#isi foldernya
apache2 cli fpm mods-available
4. Install MySQL server
Untuk installasi Mysql secara lengkap pada artikel Cara Install Mysql Community Server Edition 5.7 pada Debian Server 9.
#cek list apt-config terbaru
https://dev.mysql.com/downloads/repo/apt/
#download file
wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb
#install dan pilih versi mysql yang ingin diinstall
dpkg -i mysql-apt-config_0.8.10-1_all.deb
#update repository
apt-get update
#install mysql-community-server
apt-get install mysql-community-server
#install db dan secure installation
sudo mysql_install_db
sudo mysql_secure_installation
5. Download Nextcloud 15 Terbaru
Untuk installasi Nextcloud Server pada debian 9 bisa ikuti langkah berikut :
#download nextcloud
sudo wget https://download.nextcloud.com/server/releases/nextcloud-15.0.2.zip
#extract nextcloud server
sudo unzip nextcloud-15.0.2.zip -d /var/www/
#rubah owner dan group
sudo chown -R www-data:www-data /var/www/nextcloud/
#pindah ke nextcloud
cd /var/www/nextcloud
#install nextcloud via vli
sudo -u www-data php /var/www/nextcloud/occ maintenance:install --database "mysql" --database-name "nextcloud" --database-user "user_nextcloud" --database-pass "password_mysql" --admin-user "admin" --admin-pass "password_admin"
jika kesulitan install via cli, skip langkah untuk install dengan occ script, lakukan installasi Via GUI Web Interface setelah kita setting Nginx VirtualHost untuk Nextcloud pada langkah setelah ini.
6. Membuat Nginx Virtual Host untuk Nextcloud
untuk membuat virtualhost nextcloud buat file baru di nginx config, anda bisa membuat nextcloud sebagai subdomain ataupun subfolder, namun pada langkah ini saya hanya akan mencontohkan menggunakan subdomain, silahkan lihat dokumentasi lengkap nextcloud mengenai berbagai macam opsi lainnya disini. berikut langkah membuat virtualhost nginx :
#buat untuk subdomain cloud.komputerkampus.com
sudo nano /etc/nginx/sites-available/cloud.komputerkampus.com
#isikan configurasi berikut
upstream php-handler {
#jika menggunakan socket
server unix:/var/run/php/php7.2-fpm.sock;
#jika menggunakan tcp dan port
#server 127.0.0.1:9072;
}
#port 80 non https redirect ke https
server {
listen 80;
listen [::]:80;
server_name cloud.komputerkampus.com www.cloud.komputerkampus.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cloud.komputerkampus.com www.cloud.komputerkampus.com;
#tambahkan sertifikat ssl, konfigurasi dengan letsencrypt
ssl_certificate /etc/letsencrypt/live/cloud.komputerkampus.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/cloud.komputerkampus.com/privkey.pem; # managed by Certbot
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
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;
fastcgi_hide_header X-Powered-By;
root /var/www/nextcloud;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
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 {
allow all;
default_type "text/plain";
}
client_max_body_size 16G;
fastcgi_buffers 64 4K;
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
location / {
rewrite ^ /index.php$request_uri;
}
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/.+).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;
#Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}
location ~ .(?:css|js|woff|svg|gif)$ {
try_files $uri /index.php$request_uri;
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 Referrer-Policy no-referrer;
access_log off;
}
location ~ .(?:png|html|ttf|ico|jpg|jpeg)$ {
try_files $uri /index.php$request_uri;
access_log off;
}
}
Buat symbolic link pada site-available ke site-enabled
sudo ln -s /etc/nginx/sites-available/cloud.komputerkampus.com /etc/nginx/sites-enabled
selesai untuk konfigurasi nginx virtualhost, silahkan anda restart nginx service dengan perintah :
sudo service nginx restart
tambahkan trusted domain pada config di nextcloud
sudo nano /var/www/nextcloud/config/config.php
tambahkan data berikut :
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'cloud.komputerkampus.com',
),
kemudian akses laman https://cloud.komputerkampus.com namun pastikan subdomain sudah dibuat pada DNS management dan SSL Sertificate sudah terinstall untuk domain bersangkutan.