Membuat Private Cloud File Sharing menggunakan NextCloud

Hallo sobat beril.id, Pada pembahasan kali ini kita akan membahas tentang Membuat Private Cloud File Sharing menggunakan NextCloud. Apakah sobat tau apa itu cloud file sharing?

Sobat pasti tau kan google drive, dropbox, onedrive dan lain sebagainya. Nah, Itu salah satu contoh dari public cloud file sharing. Terkadang kita saat menggunakan aplikasi tersebut, kita terkendala quota yang diberikan (Mau banyak ya bikin sendiri), keamanan data kita di server tersebut (kali aja server google di hack. wkakakak), kita tidak mengetahui data kita di enkripsi atau tidak (ntar ketauan folder rahasianya >.<).

Maka dari itu, kali ini kita akan membahas tentang membuat private cloud file sharing menggunakan NextCloud. Nextcloud adalah paket software client-server yang dibuat untuk digunakan sebagai layanan file hosting. Kalau sobat pernah denger OwnCloud, pembuatnya juga sama yaitu Frank Karlitschek dan kawan-kawannya. Pada April 2016, mereka meninggalkan OwnCloud karena perbedaan pendapat di internal perusahaan.

Meskipun NextCloud merupakan hasil kopian dari projek OwnCloud, terdapat beberapa perbedaan diantaranya menawarkan edisi untuk komunitas open-source. Mereka juga menawarkan edisi esklusif untuk Enterprise dengan fitur tambahan dan support berlangganan.

Langsung kita mulai, Apa aja yang dibutuhkan untuk membuatnya?

  • Tempat untuk jalanin aplikasinya (web server (apache, nginx, IIS,etc), web hosting, atau images buat di virtual machines)
  • Niat yang kuat, karena memakan banyak waktu berharga sobat
  • Kopi atau susu dan cemilan biar ngga ngantuk

Berikut rekomendasi platform yang dapat berjalan agar mendapat performa terbaik dan stabil:

  • Server: GNU/Linux (Debian 8 (Jessie), 9 (Stretch), SUSE Linux Enterprise Server 11 SP3 & 12, openSUSE LEAP 42.1 atau yang terbaru, Red Hat Enterprise Linux/CentOS 6.5 dan 7 (7 hanya untuk 64-bit), Ubuntu 14.04 (Trusty) LTS, 16.04 (Xenial) LTS, 18.04 (Bionic) LTS)
  • Web server: Apache 2.4 (mod_php, php-fpm) atau Nginx (php-fpm)
  • Databases: MySQL atau MariaDB 5.5+; PostgreSQL 9, 10; Oracle 11g (Hanya dimungkinkan untuk perusahaan yang berlangganan)
  • PHP 5.6, 7.0, 7.1 atau 7.2 (wajib ada)
  • Hypervisors: Hyper-V, VMware ESX, Xen atau KVM
  • Desktop: Windows 7+, Mac OS X 10.7+ (hanya 64-bit), Linux (CentOS 6.5, 7 – hanya 64-bit), Ubuntu 14.04 LTS, 16.04 LTS, 16.10+, Fedora 21+, openSUSE 13+ dan LEAP 41.1+, SLE 11 SP3+ Debian 8+).
  • Mobile apps: iOS 9+ (10+ untuk Talk), Android 4.x+ (5.0+ untuk Talk)
  • Web browser: Versi terakhir IE11+, Microsoft Edge, Firefox, Chrome, Safari atau yang berbasiskan browser tersebut. Talk membutuhkan Firefox 31+ dan Chrome38+
Baca Juga  Perpanjang Certificate SSL Expired di Zimbra

Oke, disini kita siapkan terlebih dahulu bahan-bahannya. Disini Mimin install di virtual machine dengan spesifikasi sebagai berikut:

  • CPU 2 Core
  • RAM 4 GB
  • Hardisk 20 GB
  • OS Server : Linux CentOS 7 64-bit
  • Storage NAS : 10 TB x 10 RAID 5

  1. Tahap pertama

Setelah siap, pertama kita terlebih dahulu buat user agar lebih aman (tidak menggunakan root):

#Bikin user baru, contoh: NextCloud

adduser NextCloud
passwd NextCloud

#Masukkan user tersebut ke group sudo dan pindah ke user tersebut

usermod -aG wheel NextCloud
sudo su - NextCloud
  1. Tahap kedua

install nginx, mariadb10 dan php 7.1. Sebelum diinstall, kita ubah terlebih dahulu repositorynya agar menginstall dengan versi yang kita inginkan:

#pastiin sudah install nano  dan sudah update epel-release

yum install –y nano epel-release yum-utils
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php71

#setalah diupdate reponya, update centOSnya juga

yum –y update

#Setelah selesai, kita install aplikasi nginx, mariadb10 dan aplikasi pendukungnya

yum -y install nginx wget unzip mariadb mariadb-server
yum --disableexcludes=main install libxslt.x86_64

##Install juga PHP 7.1. Untuk mengetahui fungsi dan PHP yang kita install, bisa lihat disini

yum -y install nginx php php-fpm php-mysqlnd php-ldap php-ctype php-dom php-gd php-iconv php-json php-libxml php-mbstring php-posix php-xml php-zip php-openssl php-zlib php-curl php-fileinfo php-bz2 php-intl php-mcrypt php-ftp php-exif php-gmp php-memcached php-imagick

Tahap ketiga

Setelah sobat install PHP,edit file konfigurasi PHP di /etc/php.ini:

nano /etc/php.ini
memory_limit = 512M
date.timezone =Asia/Jakarta
cgi.fix_pathinfo=0
post_max_size = 512M
upload_max_filesize = 512M

#Kita juga edit file konfigurasi PHP-FPM di /etc/php-fpm.d/www.conf:

nano /etc/php-fpm.d/www.conf
user = nginx
group = nginx
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

#Kita lanjut untuk membuat direktori baru untuk menyimpan session data PHP:

mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/

#Jangan lupa permissionnya juga

chown nginx:nginx /var/run/php-fpm/php-fpm.sock
chmod 660 /var/run/php-fpm/php-fpm.sock

#Konfigurasi mariadbnya,ketik:

mysql_secure_installation

#masukkan password untuk root user
Set root password? [Y/n] Y
New password:
Re-enter new password:
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

#Jangan lupa buat user baru untuk mysqlnya sesuai selera:

CREATE USER 'beril'@'localhost' IDENTIFIED BY 'BerilMantab';

#Setelah itu restart services dan buat autostart PHP-FPMnya:

systemctl restart php-fpm
systemctl enable php-fpm

#untuk webservernya dan mysql juga dilakukan seperti itu:

systemctl restart nginx
systemctl enable nginx
systemctl restart mysql
systemctl enable mysql
  1. Tahap keempat

#Download aplikasi NextCloud ke servernya, samakan urlnya dengan versi terakhir disini:

wget https://download.NextCloud.com/server/releases/NextCloud-XXXXX.zip

#Ekstrak hasil downloadnya tersebut:

unzip NextCloud-*.zip -d /usr/share/nginx/html/

#Buat folder dan set ownership untuk data penyimpanan aplikasi tersebut

mkdir /usr/share/nginx/NextCloud/data
chown -R nginx:nginx /usr/share/nginx/html/NextCloud

#Sampai sini aplikasi NextCloud sudah berhasil berada di server

  1. Tahap kelima

Di tutorial ini, kita menggunakan SSL certificate gratis dari Let’s Encrypt CA. Jika aplikasi sobat digunakan untuk user bisnis, lebih baik sobat menggunakan SSL certificate berbayar untuk level keamanan yang lebih tinggi dan juga agar lebih handal. Pastikan juga jika sobat ingin membuat SSL, sobat harus mempunyai domain serta akses ke server dengan domain tersebut.
Kita install cerbot untuk generate Let’s Encrypt SSL certificate:

wget https://dl.eff.org/certbot-auto -O /usr/bin/certbot
chmod a+x /usr/bin/certbot

#Ubah domain drive.beril.id sesuai dengan domain sobat ya:

certbot certonly --webroot -w /usr/share/nginx/html -d drive.beril.id

#jika tahap tersebut berhasil, sobat akan menerima notifikasi seperti dibawah ini:
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/drive.beril.id/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/ drive.beril.id /privkey.pem
Your cert will expire on 2019-05-21. . . . . . . . .

#Sampai sini kita sudah membuat SSL untuk meningkatkan keamanan pada aplikasi sobat nih

  1. Tahap keenam
Baca Juga  Install dan konfigurasi MariaDB 10 pada Centos 6

Pada tahap ke enam, kita buat virtual hosting untuk NextCloud di nginx server yang telah kita install:

nano /etc/nginx/conf.d/NextCloud.conf

#masukkan konfigurasi dibawah pada file tersebut:

upstream php-handler {
#server 127.0.0.1:9000;
server unix:/var/run/php-fpm/php-fpm.sock;
}
server {
listen 80;
listen [::]:80;
#enforce https
server_name drive.beril.id;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name drive.beril.id;
keepalive_timeout 70;

#ubah ssl certificate sesuai lokasi sobat membuatnya

ssl_certificate&nbsp; /etc/letsencrypt/live/drive.beril.id/fullchain.pem;
ssl_certificate_key&nbsp; /etc/letsencrypt/live/drive.beril.id/privkey.pem;
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
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;

#ubah direktori tersebut sesuai lokasi aplikasi NextCloud

root /usr/share/nginx/html/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;
}
client_max_body_size 512M;
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;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
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/.+|core/templates/40[34])\.php(?:$|/) {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
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 php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}
location ~* \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
add_header Strict-Transport-Security "max-age=15768000;
includeSubDomains; preload;";
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;
access_log off;
}
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
access_log off;
}
}

#setelah itu restart services dari web server nginx:

systemctl restart nginx
  1. Tahap ketujuh

Sampai sini kita sudah selesai konfigurasi dari sisi terminal linux. Sekarang kita buka browser (terserah sesuai favorit sobat, tetapi sesuai dengan rekomendasi diatas ya), dan buka url dari lokasi hostname server sobat (Misalnya sebelumnya kita buat dengan nama https://drive.beril.id) maka tampilannya akan seperti gambar dibawah ini:

Masukkan dengan keterangan sebagai berikut:
Akun user admin : Bebas sesuai selera
Password admin : Bebas sesuai selera
Data folder : Sesuaikan lokasi data folder yang sudah sobat buat sebelumnya
Configure database : Karena kita menggunakan mariaDB, maka pilih MySQL/MariaDB
User database : Isikan sesuai user yang telah sobat buat sebelumnya
Password database : Isikan sesuai password yang telah sobat buat sebelumnya
Nama database : Bebas sesuai selera
Lokasi database :Karena kita menginstall database di satu server, kita isi dengan “localhost”

#note: Jika kita menggunakan database diserver lainnya,masukkan ip address atau hostname dari server tersebut. Pastikan web server bisa melakukan koneksi ke database server (misalnya dengan melakukan ping)

Baca Juga  Install Nagios on Centos6

Sampai sini kita telah berhasil melakukan instalasi aplikasi NextCloud

  1. Tahap kedelapan

Setelah semua tahapan kita lewati, sekarang adalah tahapan terakhir untuk mengoptimalkan dari aplikasi NextCloud. Diantaranya yaitu:

Cron Job

Cron job berfungsi untuk menjalankan command sesuai waktu yang kita tentukan secara regular

#Masuk crontab untuk user nginx:

crontab -u nginx –e

#Kita buat terlebih dahulu crontab untuk user nginx:

*/15  *  *  *  * php -f /usr/share/nginx/html/NextCloud/cron.php > /dev/null 2>&1
5 1 * * * php -f /usr/share/nginx/html/NextCloud/occ files:scan-app-data > /dev/null 2>&1

#Seletah itu, masuk crontab untuk user root:

crontab –e

#Kita buat crontab untuk user root:

0 12 * * 1 /usr/bin/certbot renew –quiet
09,39 * * * * /usr/lib/php/sessionclean 2>&1
0 2 * * * /bin/bash /mnt/backup-cron-mysql-NextCloud.sh
0 12 * * 1 /usr/bin/certbot renew –quiet
09,39 * * * * /usr/lib/php/sessionclean 2>&1
0 2 * * * /bin/bash /mnt/backup-cron-mysql-NextCloud.sh

Config.php

Config.php berfungsi untuk mengontrol operasional server dengan melakukan list semua parameter konfigurasi yang ada di NextCloud, baik dengan contoh maupun dengan nilai default.
#Masuk ke direktori config.php:

Nano /usr/share/nginx/html/NextCloud/config/config.php

#Setelah itu, tambahkan konfigurasi dibawah ini:

‘loglevel’ => 2,
‘logfile’ => ‘/media/HDD2/NextCloud/data/NextCloud.log’,
‘logdateformat’ => ‘F d, Y H:i:s’,
‘cron_log’ => true,
‘memcache.local’ => ‘\OC\Memcache\APCu’,
‘auth.bruteforce.protection.enabled’ => true,
‘updatechecker’ => true,
‘updater.server.url’ => ‘https://updates.NextCloud.com/updater_server/’,
‘updater.release.channel’ => ‘stable’,

#Lalu restart services nginx dan PHP-FPM:

systemctl restart nginx php-fpm

LDAP/AD Integration

Saat sobat install PHP 7.1, sobat menginstall PHP untuk fungsi LDAP. Untuk mengaktifkannya dari bisa dari Menu – Apps – LDAP user and group backend – Enable – Selesai. Untuk konfigurasi LDAPnya, sobat bisa masuk ke Menu – Settings – LDAP/AD Integration – lalu setting sesuai dengan LDAP/AD yang sobat miliki.

Encryption

Untuk mengaktifkannya dari bisa dari Menu – Apps – Default encryption module – Enable – Selesai. Untuk konfigurasi Encryptionnya, sobat bisa masuk ke Menu – Settings – Encryption – Enable server-side-encryption.

Email Server

Email Server dipergunakan untuk mempermudah user dalam memanage akunnya. Seperti untuk mendapatkan notifikasi semua update yang terjadi. Untuk konfigurasinya, buka Menu – Settings – Additional Settings dan silahkan ikuti sesuai dengan gambar dibawah ini (sesuaikan dengan nama mail server sobat ya):

File Handling

Jika sobat mempergunakan NextCloud untuk upload file yang besar, sobat bisa tambahkan Maximum upload size pada Menu – Settings – Additional Settings.

Draw.io

Apa aplikasi yang biasa sobat gunakan untuk membuat flow diagram? Visio?

Sekarang sobat bisa menggunakan aplikasi Draw.io pada aplikasi NextCloud yang lebih banyak featurenya. Sobat cukup aktifkan featurenya pada Menu – Apps – Draw.io – Enable – Selesai. Untuk membuatnya sobat tinggal memilih tanda plus pada menu Files dan pilih Diagram.

Oke deh sobat, Sekian pembahasan panjang kali ini tentang Membuat Private Cloud File Sharing menggunakan NextCloud. Silahkan tunggu updatean artikel selanjutnya dari beril.id . Jika artikel ini menurut sobat bermanfaat, silahkan sobat share. Jangan lupa untuk follow sosial media kami  pada link disamping ya. Terima Kasih…

Referensi:

Nextcloud.com

Bagikan :