GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal Nextcloud dengan Nginx di Ubuntu 18.04 LTS

Nextcloud adalah perangkat lunak seperti Dropbox (Open Source) gratis, cabang dari proyek ownCloud. Nextcloud ditulis dalam PHP dan JavaScript, mendukung banyak sistem database seperti MySQL/MariaDB, PostgreSQL, Oracle Database, dan SQLite. Untuk menjaga sinkronisasi file Anda antara Desktop dan server Anda sendiri, Nextcloud menyediakan aplikasi untuk desktop Windows, Linux, dan Mac dan aplikasi seluler untuk Android dan iOS. Nextcloud bukan hanya tiruan Dropbox, ia menyediakan fitur tambahan seperti Kalender, Kontak, Jadwalkan tugas, dan streaming media dengan Ampache, dll.

Dalam tutorial ini, kami akan menunjukkan cara menginstal dan mengkonfigurasi rilis Nextcloud terbaru (pada saat penulisan ini, rilis terbaru adalah 13.0.2) di server Ubuntu 18.04. Kami akan menjalankan Nextcloud dengan server web Nginx dan PHP7.1-FPM dan menggunakan server MySQL sebagai sistem database.

Prasyarat

  • Ubuntu 18.04
  • Hak istimewa root

Apa yang akan kami lakukan

  1. Instal server Web Nginx
  2. Instal dan Konfigurasi PHP7.1-FPM
  3. Instal dan Konfigurasi Server MySQL
  4. Buat SSL Letsencrypt
  5. Unduh Nextcloud 13
  6. Konfigurasi Nginx Virtual Host untuk Nextcloud
  7. Konfigurasi Firewall UFW
  8. Pasca-Instalasi Nextcloud

Langkah 1 - Instal server Web Nginx

Langkah pertama yang akan kita lakukan dalam panduan cloud selanjutnya ini adalah menginstal server web Nginx. Kami akan menggunakan server web Nginx sebagai ganti server web Apache.

Masuk ke server dan perbarui repositori, lalu instal server web Nginx menggunakan perintah apt seperti yang ditunjukkan di bawah ini.

sudo apt update
sudo apt install nginx -y

Setelah penginstalan selesai, mulai layanan Nginx dan aktifkan layanan untuk diluncurkan setiap kali saat sistem boot menggunakan systemctl.

systemctl start nginx
systemctl enable nginx

Server web Nginx telah diinstal di Ubuntu 18.04. Periksa dengan menggunakan perintah netstat atau curl di bawah ini.

netstat -plntu
curl -I localhost

Server web Nginx sekarang berjalan di bawah Ubuntu pada port HTTP standar 80.

Langkah 2 - Instal dan Konfigurasi PHP7.1-FPM

Dalam tutorial ini, kita akan menggunakan PHP7.1-FPM untuk nextcloud. Kami akan menggunakan PHP7.1-FPM dari repositori PPA, jadi kami perlu menambahkan repositori PPA baru ke sistem kami.

Instal paket 'software-properties-common' dan tambahkan repositori PPA 'ondrej PHP' dengan menjalankan perintah berikut.

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y

Catatan:

Di Ubuntu 18.04, perintah 'add-apt-repository' akan secara otomatis memperbarui repositori.

Sekarang instal PHP7.1 dan PHP7.1-FPM dengan semua ekstensi yang diperlukan menggunakan perintah apt tunggal di bawah ini.

sudo apt install php7.1-fpm php7.1-mcrypt php7.1-curl php7.1-cli php7.1-mysql php7.1-gd php7.1-iconv php7.1-xsl php7.1-json php7.1-intl php-pear php-imagick php7.1-dev php7.1-common php7.1-mbstring php7.1-zip php7.1-soap -y

Setelah instalasi selesai, kita akan mengkonfigurasi file php.ini untuk php-fpm dan php-cli.

Buka direktori '/etc/php/7.1'.

cd /etc/php/7.1/

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 = Asia/Jakarta

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.1-FPM dan aktifkan untuk diluncurkan setiap kali sistem boot.

systemctl restart php7.1-fpm
systemctl enable php7.1-fpm

Sekarang periksa menggunakan perintah netstat.

netstat -pl | grep php

Dan Anda akan mendapatkan php-fpm sekarang berjalan di bawah file sock '/run/php/php7.1-fpm.sock'.

Langkah 3 - Instal dan Konfigurasi Server MySQL

Pada langkah ini, kita akan menginstal MySQL versi terbaru dan membuat database baru untuk instalasi cloud berikutnya. Paket MySQL versi terbaru tersedia di repositori secara default.

Instal server MySQL versi terbaru menggunakan perintah apt di bawah ini.

sudo apt install mysql-server mysql-client -y

Setelah instalasi selesai, jalankan layanan MySQL dan aktifkan untuk diluncurkan setiap kali sistem boot.

systemctl start mysql
systemctl enable mysql

Sekarang kita akan mengkonfigurasi kata sandi root MySQL menggunakan perintah 'mysql_secure_installation'.

Jalankan perintah berikut.

mysql_secure_installation

Pada MySQL versi 5.8 ini terdapat peningkatan keamanan untuk kebijakan password MySQL. Anda harus memilih kebijakan sandi - 0 untuk kebijakan RENDAH, 1 untuk kebijakan SEDANG, dan 2 untuk kebijakan sandi KUAT.

Untuk panduan ini, kami akan menggunakan kebijakan sandi 'MENENGAH', dan disarankan untuk menggunakan kebijakan sandi 'KUAT' di server produksi.

Pilih nomor '1' dan tekan Enter, lalu ketik kata sandi 'root' MySQL baru Anda.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

Dan kata sandi root MySQL telah disiapkan.

Selanjutnya, kita akan membuat database baru untuk instalasi nextcloud. Kami akan membuat database baru bernama 'nextcloud_db' dengan pengguna 'nextclouduser' dan sandi '[email protected]'.

Masuk ke shell MySQL sebagai pengguna root dengan perintah mysql.

mysql -u root -p
TYPE THE MYSQL ROOT PASSWORD

Sekarang buat database dan pengguna dengan kata sandi dengan menjalankan kueri MySQL berikut.

create database nextcloud_db;
create user [email protected] identified by '[email protected]';
grant all privileges on nextcloud_db.* to [email protected] identified by '[email protected]';
flush privileges;

Dan database dan pengguna baru untuk instalasi cloud berikutnya telah dibuat.

Instalasi dan konfigurasi MySQL untuk nextcloud telah selesai.

Langkah 4 - Buat SSL Letsencrypt

Dalam tutorial ini, kita akan mengamankan nextcloud menggunakan SSL gratis dari Letsencrypt, dan kita 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 letsencrypt -y

Setelah instalasi selesai, hentikan layanan nginx.

systemctl stop nginx

Selanjutnya, kami akan membuat sertifikat SSL untuk nama domain kami 'nextcloud.hakase-labs.io' menggunakan baris perintah cerbot. Jalankan perintah di bawah ini.

certbot certonly --standalone -d nextcloud.hakase-labs.io

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.

Jika sudah selesai maka akan mendapatkan hasil seperti gambar dibawah ini.

Sertifikat SSL Letsencrypt untuk nama domain netxcloud telah dibuat, semuanya terletak di direktori '/etc/letsencrypt/live/domain'.

Langkah 5 - 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 file nextcloud-13.0.2.zip.

cd /var/www/
wget https://download.nextcloud.com/server/releases/latest.zip

Ekstrak file zip dan Anda akan mendapatkan direktori 'nextcloud', lalu buat direktori 'data' baru.

unzip latest.zip
mkdir -p nextcloud/data/

Sekarang ubah pemilik direktori 'nextcloud' menjadi pengguna dan grup 'www-data'.

chown -R www-data:www-data /var/www/nextcloud/

Nextcloud telah diunduh di bawah direktori '/var/www/nextcloud', dan itu akan menjadi direktori root web.

Langkah 6 - Konfigurasikan Virtual Host Nginx 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

Di sana, rekatkan konfigurasi host virtual nextcloud berikut.

upstream php-handler {
    #server 127.0.0.1:9000;
    server unix:/run/php/php7.1-fpm.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name nextcloud.hakase-labs.pw;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name nextcloud.hakase-labs.pw;

    ssl_certificate /etc/letsencrypt/live/nextcloud.hakase-labs.pw/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nextcloud.hakase-labs.pw/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=15552000;
    # includeSubDomains; preload;";
    #
    # 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 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;

    # 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;

    location = /.well-known/carddav {
      return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host/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 built with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    location / {
        rewrite ^ /index.php$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;
    }

    # Adding the cache control header for js and css files
    # Make sure it is BELOW the PHP block
    location ~ \.(?:css|js|woff|svg|gif)$ {
        try_files $uri /index.php$uri$is_args$args;
        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;";
        #
        # 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 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;
        # Optional: Don't log access to assets
        access_log off;
    }

    location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # 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.1-FPM dan layanan nginx menggunakan perintah systemctl di bawah ini.

systemctl restart nginx
systemctl restart php7.1-fpm

Konfigurasi virtual host Nginx untuk nextcloud telah dibuat.

Langkah 7 - Konfigurasi Firewall UFW

Dalam tutorial ini, kita akan mengaktifkan firewall, dan kita akan menggunakan firewall UFW untuk Ubuntu.

Aktifkan firewall ufw.

ufw enable

Ketik 'y' dan tekan Enter untuk memulai dan mengaktifkan firewall UFW.

Sekarang tambahkan SSH, HTTP, dan HTTPS baru ke daftar firewall UFW.

ufw allow ssh

ufw allow http
ufw allow https

Periksa port daftar yang diizinkan pada firewall UFW menggunakan perintah di bawah ini.

ufw status

Dan Anda akan mendapatkan HTTP port 80 dan HTTPS port 443 ada dalam daftar.

Langkah 8 - Pasca-Instalasi Nextcloud

Buka browser web Anda dan ketik alamat URL nextcloud.

http://nextcloud.hakase-labs.io/

Dan Anda akan diarahkan ke koneksi HTTPS yang aman.

Di halaman Atas, kita perlu membuat pengguna admin untuk cloud berikutnya, ketikkan kata sandi pengguna admin. Pada konfigurasi 'Data folder', ketik path lengkap direktori 'data' '/var/www/nextcloud/data'.

Gulir halaman ke bawah, dan Anda akan mendapatkan konfigurasi database. Ketik info database yang telah kita buat di langkah 3 lalu klik tombol 'Finish Setup'.

Dan setelah instalasi selesai, Anda akan mendapatkan Dashboard Nextcloud seperti di bawah ini.

Instalasi Nextcloud 13 dengan server web Nginx dan database MySQL di Ubuntu 18.04 telah berhasil diselesaikan.


Ubuntu
  1. Cara Menginstal Nginx di Ubuntu 20.04

  2. Cara Menginstal Seafile dengan Nginx di Ubuntu 20.04 LTS

  3. Cara Menginstal HTTP Git Server Dengan Nginx di Ubuntu 16.04

  1. Cara Menginstal SuiteCRM dengan Nginx di Ubuntu 16.04

  2. Cara Menginstal Seafile dengan Nginx di Ubuntu 18.04 LTS

  3. Cara Menginstal Magento dengan Nginx di Ubuntu 16.04

  1. Cara Menginstal Laravel 5 PHP Framework dengan Nginx di Ubuntu 16.04 LTS

  2. Cara Menginstal OroCRM dengan Nginx di Ubuntu 16.04 LTS

  3. Cara Menginstal Bludit CMS dengan NGINX di Ubuntu 18.04 LTS