Nextcloud adalah aplikasi sinkronisasi dan berbagi file yang dihosting sendiri dan open source (Kalender, Kontak, Dokumen, Email, dan banyak lagi). Pengembang di Nextcloud melakukan yang terbaik untuk memberi pengguna platform yang lebih aman, lebih sedikit bug, dan secara keseluruhan produk yang lebih baik.
Di sini, di LinuxAPT, sebagai bagian dari Layanan Manajemen Server kami, kami secara teratur membantu Pelanggan kami untuk melakukan kueri Instalasi Perangkat Lunak Sumber Terbuka terkait.
Dalam konteks ini, kita akan melihat cara menginstal Nextcloud di Ubuntu 20.04 LTS.
Langkah-langkah untuk Menginstal dan mengkonfigurasi Nextcloud di Ubuntu 20.04 LTS Focal Fossa
1. Lakukan Pembaruan Sistem
Pertama, pastikan bahwa semua paket sistem Anda mutakhir dengan menjalankan perintah apt berikut di terminal:
$ sudo apt update
$ sudo apt upgrade
2. Instal Nginx Webserver
Di sini, akan menggunakan server web Nginx alih-alih server web Apache. Instal server web Nginx menggunakan perintah apt:
$ sudo apt install nginx -y
Setelah instalasi selesai, mulai layanan Nginx dan aktifkan layanan untuk diluncurkan setiap kali saat boot sistem menggunakan systemctl:
$ systemctl start nginx
$ systemctl enable nginx
Layanan Nginx akan aktif dan berjalan. Anda dapat memeriksanya menggunakan perintah berikut:
$ systemctl status nginx
3. Instal dan Konfigurasi PHP
Di sini, kita akan menggunakan PHP7.4-FPM. Secara default, Ubuntu 20.04 hadir dengan versi default PHP 7.4.
Instal paket PHP dan PHP-FPM yang dibutuhkan oleh Nextcloud menggunakan perintah apt di bawah ini:
$ sudo apt install php-fpm php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 -y
Setelah instalasi selesai, kita akan mengkonfigurasi file php.ini untuk php-fpm dan php-cli.
Buka direktori '/etc/php/7.4':
$ cd /etc/php/7.4/
Edit file php.ini untuk php-fpm dan php-cli menggunakan vim:
vim fpm/php.ini
vim cli/php.ini
Batalkan komentar pada baris 'date.timezone' dan ubah nilainya dengan zona waktu Anda sendiri:
date.timezone =Australia/Sydney
Batalkan komentar pada baris 'cgi.fix_pathinfo' dan ubah nilainya menjadi '0':
cgi.fix_pathinfo=0
Simpan dan keluar.
Selanjutnya, edit konfigurasi pool php-fpm 'www.conf'.
$ vim fpm/pool.d/www.conf
Batalkan komentar pada baris di bawah ini:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Simpan dan keluar.
Mulai ulang layanan PHP7.4-FPM dan aktifkan untuk diluncurkan setiap kali sistem boot:
$ systemctl restart php7.4-fpm
$ systemctl enable php7.4-fpm
Sekarang periksa layanan PHP-FPM menggunakan perintah berikut:
$ ss -xa | grep php
$ systemctl status php7.4-fpm
Dan Anda akan mendapatkan php-fpm aktif dan berjalan di bawah file kaus kaki '/run/php/php7.4-fpm.sock'.
4. Instal dan Konfigurasi Server MariaDB
Di sini, kita akan menginstal versi MariaDB terbaru dan membuat database baru untuk instalasi cloud berikutnya. Paket MariaDB versi terbaru tersedia di repositori secara default.
Instal versi terbaru server MariaDB menggunakan perintah apt di bawah ini:
$ sudo apt install mariadb-server -y
Setelah penginstalan selesai, mulai layanan MariaDB dan aktifkan untuk diluncurkan setiap kali sistem boot:
$ systemctl start mariadb
$ systemctl enable mariadb
Sekarang periksa layanan MySQL menggunakan perintah berikut:$
$ systemctl status mariadb
Anda akan melihat bahwa server MariaDB aktif dan berjalan di sistem.
Selanjutnya, kita akan mengkonfigurasi password root MariaDB menggunakan perintah 'mysql_secure_installation'.
Jalankan perintah berikut:
$ mysql_secure_installation
Dan Anda akan diminta untuk beberapa konfigurasi Server MariaDB. Juga, ketikkan kata sandi root baru untuk Server MariaDB:
Enter current password for root (enter for none): Press Enter
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Dan kata sandi root MariaDB telah disiapkan.
Selanjutnya, kita akan membuat database baru untuk instalasi nextcloud. Kami akan membuat database baru bernama 'nextcloud_db' dengan pengguna 'nextclouduser' dan kata sandi 'Nextclouduser421@'.
Masuk ke shell MySQL sebagai pengguna root dengan perintah mysql:
$ mysql -u root -p
KETIK SANDI ROOT MYSQL
Sekarang buat database dan pengguna dengan kata sandi dengan menjalankan kueri MySQL berikut:
create database nextcloud_db;
create user nextclouduser@localhost identified by 'Nextclouduser421@';
grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by 'Nextclouduser421@';
flush privileges;
5. Hasilkan SSL Let's Encrypt
Di sini, kami akan mengamankan nextcloud menggunakan SSL gratis dari Letsencrypt, dan kami akan membuat file sertifikat menggunakan alat letsencrypt.
Jika Anda tidak memiliki nama domain atau menginstal nextcloud di komputer lokal, Anda dapat membuat sertifikat yang Ditandatangani Sendiri menggunakan OpenSSL.
Instal alat 'letsencrypt' menggunakan perintah apt di bawah ini:
$ sudo apt install certbot -y
Setelah instalasi selesai, hentikan layanan nginx:
$ systemctl stop nginx
Selanjutnya, kami akan membuat sertifikat SSL untuk nama domain kami 'nextcloud.linuxapt.com' menggunakan perintah baris perintah cerbot:
$ certbot certonly --standalone -d nextcloud.linuxapt.com
Anda akan dimintai alamat email, dan itu digunakan untuk pemberitahuan perpanjangan. Untuk perjanjian TOS Letsencrypt, ketik 'A' untuk menyetujui dan untuk alamat email berbagi, Anda dapat mengetik 'N' untuk Tidak.
Sekarang, sertifikat SSL Letsencrypt untuk nama domain netxcloud akan dibuat dengan semua file / Sertifikat SSL yang terletak di direktori '/etc/letsencrypt/live/domain-anda'.
6. Unduh Nextcloud
Sebelum mendownload source code nextcloud, pastikan paket unzip sudah terinstall di sistem. Jika Anda tidak memiliki paket, instal menggunakan perintah apt di bawah ini:
$ sudo apt install wget unzip zip -y
Sekarang buka direktori '/var/www' dan unduh versi terbaru Nextcloud menggunakan perintah berikut.
$ cd /var/www/
$ wget -q https://download.nextcloud.com/server/releases/latest.zip
Ekstrak kode sumber Nextcloud dan Anda akan mendapatkan direktori baru 'netxcloud', ubah kepemilikan direktori nextcloud menjadi pengguna 'www-data':
$ unzip -qq latest.zip
$ sudo chown -R www-data:www-data /var/www/nextcloud
Sekarang, Nextcloud telah diunduh di bawah direktori '/var/www/nextcloud', dan itu akan menjadi direktori root web.
7. Konfigurasikan Nginx Virtual Host untuk Nextcloud
Pada langkah ini, kita akan mengonfigurasi virtual host nginx untuk nextcloud. Kami akan mengonfigurasi nextcloud untuk berjalan di bawah koneksi HTTPS dan akan memaksa koneksi HTTP secara otomatis ke koneksi HTTPS yang aman.
Sekarang buka direktori '/etc/nginx/sites-available' dan buat file host virtual baru 'nextcloud':
$ cd /etc/nginx/sites-available/
$ vim nextcloud
Dalam file ini, rekatkan konfigurasi host virtual nextcloud berikut:
upstream php-handler {
#server 127.0.0.1:9000;
server unix:/var/run/php/php7.4-fpm.sock;
}
server {
listen 80;
listen [::]:80;
server_name nextcloud.linuxapt.com;
# enforce https
return 301 https://$server_name:443$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name nextcloud.linuxapt.com;
# Use Mozilla's guidelines for SSL/TLS settings
# https://mozilla.github.io/server-side-tls/ssl-config-generator/
# NOTE: some settings below might be redundant
ssl_certificate /etc/letsencrypt/live/nextcloud.linuxapt.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nextcloud.linuxapt.com/privkey.pem;
# Add headers to serve security related headers
# Before enabling Strict-Transport-Security headers please read into this
# topic first.
#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
#
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
# Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;
# Path to the root of your installation
root /var/www/nextcloud;
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;
# The following rule is only needed for the Social app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/webfinger /public.php?service=webfinger last;
location = /.well-known/carddav {
return 301 $scheme://$host:$server_port/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host:$server_port/remote.php/dav;
}
# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;
# Enable gzip but do not remove ETag headers
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;
# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;
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\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
# Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
# Enable pretty urls
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
try_files $uri/ =404;
index index.php;
}
# Adding the cache control header for js, css and map files
# Make sure it is BELOW the PHP block
location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463";
# Add headers to serve security related headers (It is intended to
# have those duplicated to the ones above)
# Before enabling Strict-Transport-Security headers please read into
# this topic first.
#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
#
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
# Optional: Don't log access to assets
access_log off;
}
location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
try_files $uri /index.php$request_uri;
# Optional: Don't log access to other assets
access_log off;
}
}
Simpan dan keluar.
Aktifkan virtual host dan uji konfigurasi, dan pastikan tidak ada kesalahan:
$ ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
$ nginx -t
Sekarang restart layanan PHP7.4-FPM dan layanan nginx menggunakan perintah systemctl di bawah ini:
$ systemctl restart nginx
$ systemctl restart php7.4-fpm
8. Konfigurasikan Firewall UFW
Di sini, kita akan menyalakan firewall, dan kita akan menggunakan firewall UFW untuk Ubuntu.
Tambahkan SSH, HTTP, dan HTTPS ke daftar firewall UFW menggunakan perintah di bawah ini:
for svc in ssh http https
do
ufw allow $svc
done
Setelah itu, aktifkan firewall UFW dan periksa layanan dan port yang diizinkan:
$ ufw enable
$ ufw status numbered
Dan Anda akan mendapatkan HTTP port 80 dan HTTPS port 443 ada dalam daftar.
Bagaimana cara mengakses Antarmuka Web Nextcloud ?
Nextcloud akan tersedia pada port HTTP 80 secara default.
Buka browser favorit Anda dan navigasikan ke https://domain-anda.com/ atau https://server-ip-address/ dan selesaikan langkah-langkah yang diperlukan untuk menyelesaikan penginstalan.
Apa yang Anda lakukan dengan Nextcloud terserah Anda.
Anda dapat menambahkan modul baru atau hanya menggunakannya sebagai sinkronisasi dan berbagi file berbasis cloud.
Anda dapat menginstal aplikasi Android dan bahkan menggunakan klien desktop ownCloud (mereka akan bekerja dengan baik dengan Nextcloud).