Begini Rasanya Punya Awan Sendiri

29 Jan 2013

Titah itu saya terima pada hari Senin, 28 Januari 2013. Waktu itu hari menjelang senja dan dengan tiba-tiba Pak Bos memintaku untuk membuat sebuah layanan penyimpanan berkas berbasis komputasi awan. "Siap, Pak!", kataku. Mohon tunggu besok, mudah-mudahan risetnya sudah selesai jadi implementasinya bisa dilakukan dalam beberapa hari ke depan. Apa itu layanan penyimpanan berbasis komputasi awan atau cloud storage? Intinya sih layanan cloud storage itu dapat diartikan sebagai sebuah model layanan penyimpanan data yang mana data-data pelanggan disimpan di dalam sekumpulan ruang penyimpanan virtual online yang umumnya disediakan oleh pihak ketiga. Sila baca artikel di Wikipedia ini. Terlalu panjang kalau dijelaskan secara rinci. Bahkan dalam artikel tersebut disebutkan bahwa sulit sekali menetapkan definisi yang pas untuk arsitektur cloud storage. Yang jelas beberapa hal secara de facto harus tersedia pada layanan cloud storage, yaitu:

  • Tersusun dari beberapa sumber daya yang terdistribusi, tetapi beroperasi secara tunggal
  • Sangat toleran terhadap kerusakan karena ada redundansi dan distribusi data
  • Daya gunanya lama karena data disalin secara kronologis, ada versi lama sampai terbaru
  • Data-datanya sangat konsisten karena didukung oleh replikasi

Punya Awan Sendiri

Jikalau kita memiliki sebuah komputer dengan harddisk berkapasitas lumayan besar, katakanlah 1 atau 2 terabyte, tidak salahnya untuk membuat awan penyimpan milik kita sendiri. Minimal untuk mem-backup data-data kita sendiri secara otomatis dan dapat ditelusuri versi-versi perubahannya, sehingga memudahkan dalam menelusuri perubahan yang terjadi pada data.

Untuk membangun sebuah awan penyimpan sendiri, kita dapat menggunakan aplikasi cloud storage bernama OwnCloud. Aplikasi ini berbasis web dan menggunakan bahasa pemrograman PHP. Seluruh konfigurasi OwnCloud dilakukan menggunakan browser, jadi saya rasa orang yang tidak berpengalaman dengan aplikasi berbasis web-pun dapat dengan mudah memasang dan mengkonfigurasi OwnCloud.

Instalasi Owncloud sangat sederhana sehingga panduan instalasinya cukup satu halaman saja. Silakan baca dan ikuti petunjuk instalasi untuk sistem operasi atau distribusi Linux kesayangan anda yang ada di halaman panduan tersebut. Teman-teman saya para pengguna Slackware tentunya sudah dapat mencari tahu apakah sistem Slackware mendukung OwnCloud atau tidak dengan membaca panduan tersebut. Pengguna FreeBSD dapat memasang OwnCloud menggunakan ports seperti ini:

cd /usr/ports/www/owncloud && make && make install clean

Dalam panduan konfigurasi tersebut, dijelaskan juga contoh-contoh konfigurasi untuk beberapa tipe http server yaitu Apache HTTPD, NGinx, Lighttpd, Yaws, Hiawatha, dan PageKite. Jadi tidak perlulah saya melangkahi para pengembang OwnCloud dalam menjelaskan konfigurasi-konfigurasi web server untuk menjalankan layanan ini. Kalau sampeyan masih belum mengerti juga, berarti ya kebangeten.

Modifikasi Konfigurasi NGINX+PHP-FPM

Dalam artikel ini saya hanya ingin menjelaskan sedikit perubahan yang saya lakukan terhadap konfigurasi standar dari panduan instalasi OwnCloud dengan menggunakan web server nginx. Sedangkan konfigurasi OwnCloud untuk web server Apache HTTPD dapat langsung berjalan tanpa perlu modifikasi, kita tinggal copas konfigurasi standar dari panduan tersebut. Konfigurasi pada web server Apache HTTPD tersebut dapat digunakan pada kasus OwnCloud sebagai virtualhost maupun sebagai subdirektori di bawah direktori utama atau DocumentRoot. Jadi tidak ada gunanya saya bahas di sini.

Pada panduan saya ingin membahas mengenai bagaimana saya menjalankan layanan OwnCloud menggunakan web server nginx sebagai subdirektori menggunakan direktori alias. Prinsip direktori alias adalah memberi nama URL pada sebuah direktori di dalam filesystem (lokal) yang tidak berlokasi di bawah direktori utama web server sehingga dapat diakses dari jaringan. Jadi fungsi fitur alias adalah untuk memetakan direktori URL/ABC ke direktori XYZ di dalam filesystem. Sebuah fitur yang sangat berguna tetapi hampir tidak pernah diajarkan pada siswa-siswa yang belajar administrasi web server. Entah gurunya malas atau memang tidak tahu kalau fitur itu sebenarnya ada dan bisa digunakan serta sebuah solusi yang lebih baik daripada menyuruh siswa melakukan chmod 777 terhadap direktori utama web server supaya user dapat mengubah isi direktori utama web server. Maaf saya mengkritik, tetapi yang seperti itu memang harus saya kritik.

Kembali ke nginx. Panduan standar dari dokumentasi OwnCloud menunjukkan cara instalasi OwnCloud sebagai direktori utama web server. Jadi untuk menempatkan OwnCloud sebagai subdirektori, konfigurasi tersebut harus dimodifikasi. Berikut ini adalah hasil modifikasi saya:

# default try order
location /owncloud {
    alias /usr/local/www/owncloud;
    index index.php;
    try_files $uri $uri/ @webdav;
}
# deny direct access
location ~ ^/owncloud/(data|config|\.ht|db_structure\.xml|README) {
    deny all;
}
# owncloud webdav
    location @webdav {
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_pass  php-fpm;
    fastcgi_param SCRIPT_FILENAME /usr/local/www$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED /usr/local/www$fastcgi_path_info;
    include       fastcgi_params;
    fastcgi_param HTTPS on;
    fastcgi_intercept_errors on;
}
# enable php
location ~ ^/owncloud.+\.php$ {
    alias /usr/local/www/owncloud/$1;
    fastcgi_index index.php;
    fastcgi_pass php-fpm;
    fastcgi_param SCRIPT_FILENAME /usr/local/www$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_param HTTPS on;
    fastcgi_intercept_errors on;
}

Seperti yang kita ketahui bersama, nginx tidak menggunakan .htaccess untuk mengatur konfigurasi akses perdirektori. Fungsi dari konfigurasi ini sebenarnya mirip dengan fungsi .htaccess. Penjelasannya sebagai berikut:

  • Pada bagian pertama adalah deklarasi lokasi instalasi direktori OwnCloud /usr/local/www/owncloud, dan alias URL-nya: http://domain/owncloud. Kemudian urutan akses web untuk mengakses layanan OwnCloud, yaitu:
  • Kedua adalah soal keamanan. Direktori data (lokasi data user), config (lokasi konfigurasi owncloud), .ht (file-file tersembunyi), db_structure.xml (struktur database owncloud), dan file README disarankan untuk tidak dibuka ke publik. Jadi dengan deklarasi ini, semua akses ke direktori tersebut akan ditutup.
  • Bagian ketiga adalah deklarasi untuk lokasi akses webdav. Fitur ini memungkinan direktori user owncloud untuk di-mount secara lokal di komputer user. Kalau di Windows Explorer akan disebut sebagai web drive dan bisa diberi huruf drive tertentu sehingga bisa dikelola menggunakan Windows Explorer. Enak toh?
  • Bagian keempat adalah deklarasi aplikasi berbasis web dari OwnCloud.

Selesai sudah. Saya tinggal me-restart nginx dan login ke OwnCloud pertama kali untuk membuat user admin sekaligus mengelola OwnCloud.

OwnCloud Web GUI

OwnCloud Desktop Client

Jika sampeyan berkunjung ke website OwnCloud, anda akan menjumpai program klien OwnCloud yang bisa digunakan di lingkungan desktop yang anda cintai. Dengan program tersebut kita tidak perlu memilih satu per satu file atau folder yang akan diunggah. Cukup pasang dan jalankan program klien, kemudian pilih folder mana saja yang ingin disinkronisasi dengan gudang online kita, lalu duduk manis sambil tetap bekerja dengan komputer atau dengan cangkul mungkin? Terserah anda, jangan sampai terserah saya sampeyan mau kerja apa. Setelah beberapa saat kita bisa melihat file dan folder dari komputer kita sudah tersimpan di gudang online OwnCloud.

OwnCloud Desktop ClientOwnCloud Desktop Client - Add directory to synchronized

OwnCloud Desktop Client - Finished synchronizingOwnCloud Desktop Client - Systray menu

Program sinkronisasi akan tetap berjalan di balik layar sampai kita menghentikan prosesnya. Jika kita membuat perubahan pada file/folder yang disinkronisasi, program klien OwnCloud akan langsung memprosesnya dan mengirimkan versi terbaru ke server sekaligus mencatat versi lama dari file/folder secara otomatis. Enak toh?

Skrip SlackBuild untuk klien desktop OwnCloud akan saya upload ke repo github saya. Mohon ditunggu ya. Selamat mencoba