Mewujudkan kedaulatan digital dengan Nextcloud

Latar belakang

Salah satu hal yang menghalangi saya untuk menggunakan Debian sepenuhnya untuk kegiatan sehari-hari adalah karena Google tidak menyediakan aplikasi Google Drive untuk Linux.

Pada akhirnya, saya nekat untuk mulai menggunakan Debian dan mulai migrasi pelan-pelan tentang apa yang bisa saya pindahkan dulu.

Ada dua solusi untuk menyelaraskan berkas-berkas di Google Drive ke komputer di Debian.

  1. Insync dengan harga $39.99, pembayaran satu kali untuk setiap akun.
  2. rclone - Gratis. Perlu usaha untuk mengatur dan tidak berjalan otomatis di latar belakang. Saya membuat panduannya di sini.

Saya cukup nyaman menggunakan rclone karena prosesnya mudah, cukup jalankan perintah di terminal untuk menyelaraskan berkas-berkas. Sesuai dengan kebutuhan saya yang jarang memiliki perubahan berkas.

Kekurangannya adalah saya harus menjalankan perintah penyelarasan setiap menyalakan dan mematikan komputer agar data saya selalu selaras di perangkat lainnya 😅

Sebelumnya, saya pernah mendengar tentang Nextcloud. Waktu itu, saya belum tertarik untuk menggunakan karena saya pikir pemasangannya cukup ribet dan belum tahu kalau ada toko aplikasi untuk Nextcloud yang menyediakan berbagai layanan yang terintegrasi dengan Nextcloud.

Maasyaa' Allah, waktu itu ada promo VPS dari Sumopod dan saya ada proyek yang perlu demo sebelum go live, akhirnya sekalian saya coba kulik potensi Nextcloud untuk kebutuhan saya.

Simak panduan langkah demi langkah dan hasilnya pada artikel berikut.

Semoga bermanfaat 😊

Tujuan

Saya akan menggunakan Nextcloud untuk menyelaraskan hal-hal berikut:

  • dokumen dan berkas
  • kontak
  • kalender
  • tugas
  • foto
  • catatan Joplin
  • kata sandi dan kode OTP

Hal-hal tersebut harus dapat diselaraskan dengan lancar di komputer dan ponsel saya.

Arsitektur

  • VPS
    • 2 vCPU
    • 2GB RAM
    • 20GB ruang penyimpanan
    • Sistem operasi Debian 13
  • Cloudflare sebagai pengelola domain

Kebutuhan server

Pada saat artikel ini dibuat, versi Nextcloud yang terbaru adalah versi 34.

Berikut adalah kebutuhan server untuk dapat menjalankan Nextcloud 34 dengan lancar, merujuk pada dokumentasi resmi Nextcloud:

  • 512MB RAM
  • Debian 13
  • PostgreSQL 17
  • Nginx dengan php-fpm
  • PHP 8.4 dan ekstensi yang dibutuhkan:
    • ctype
    • curl
    • DOM
    • fileinfo
    • GD
    • imagick
    • intl (recommended)
    • mbstring
    • OpenSSL
    • pdo_pgsql
    • redis
    • session
    • xml
    • zip
    • zlib

Persiapan

Sebelum memasang Nextcloud, kita perlu memasang dan mengatur PHP, web server, dan database.

Pasang PostgreSQL

sudo apt install postgresql-17

Setelah itu, buat pengguna dan database untuk aplikasi Nextcloud

sudo -u postgres psql

CREATE USER username WITH PASSWORD 'password' CREATEDB;
CREATE DATABASE nextcloud OWNER username TEMPLATE template0 ENCODING 'UTF8';
GRANT CREATE ON SCHEMA public TO username;

Pasang Nginx

sudo apt install nginx

Pasang PHP

Pasang PHP beserta ekstensi yang disarankan:

sudo apt install php-apcu \
    php-cli \
    php-curl \
    php-fpm \
    php-gd \
    php-imagick \
    php-intl \
    php-mbstring \
    php-mcrypt \
    php-pgsql \
    php-redis \
    php-xml \
    php-zip \
    libmagickcore-7.q16-10-extra

Pasang Nextcloud

Saya memilih untuk memasang Nextcloud dengan cara mengunduh berkas server yang diarsipkan melalui perintah curl kemudian mengekstrak berkasnya dan menjalankan perintah pemasangan.

Ini adalah cara yang paling mudah, lebih hemat sumber daya server, dan memiliki dokumentasi yang lebih lengkap dibandingkan dengan cara yang lain.

Unduh Nextcloud

# tempat memasang Nextcloud
cd /var/www

# unduh Nextcloud
curl -L -o nextcloud.zip https://download.nextcloud.com/server/releases/latest.zip

# ekstrak berkas
unzip nextcloud.zip

# beri hak akses web ke direktori Nextcloud
chown -R www-data:www-data /var/www/nextcloud

Pasang Nextcloud

cd /var/www/nextcloud/

sudo -E -u www-data php occ maintenance:install \
--database 'pgsql' \
--database-name 'nextcloud' \
--database-user 'nextcloud' \
--database-pass 'nextcloud' \
--admin-user 'admin' \
--admin-pass 'super-strong-password'

Atur Nginx

Gunakan berkas pengaturan Nginx dari dokumentasi, simpan berkas di /etc/nginx/sites-available/nextcloud.domain.com.

Sesuaikan server_name dengan nama domain:

/etc/nginx/sites-available/nextcloud.domain.com
server {
    listen 80;
    listen [::]:80;
    server_name cloud.example.com;

    ...
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    # With NGinx >= 1.25.1 you should use this instead:
    # listen 443      ssl;
    # listen [::]:443 ssl;
    # http2 on;
    server_name cloud.example.com;

    ...
}

Karena pakai Nginx dan php-fpm, maka ubah isi php-handler menjadi:

/etc/nginx/sites-available/nextcloud.domain.com
# PHP-FPM backend.
upstream php-handler {
    # Use one of the options below, not both:
    #server 127.0.0.1:9000;
    server unix:/var/run/php/php8.4-fpm.sock;
}

Nginx yang tersedia di Debian 13 adalah versi 1.26, jadi pastikan ubah juga bagian untuk mendengarkan di port 443.

/etc/nginx/sites-available/nextcloud.domain.com
server {
    #listen 443 ssl http2;
    #listen [::]:443 ssl http2;
    # With NGinx >= 1.25.1 you should use this instead:
    listen 443      ssl;
    listen [::]:443 ssl;
    http2 on;

    ...
}

Pastikan pengaturan Nginx sudah benar dan muat ulang pengaturan Nginx untuk menerapkan perubahan.

# periksa pengaturan Nginx
nginx -t

# muat ulang untuk menerapkan perubahan
systemctl reload nginx

Atur domain

Setelah Nextcloud terpasang dan siap digunakan, sekarang saatnya pointing domain ke VPS.

Tambahkan A record di pengaturan DNS Cloudflare yang merujuk ke alamat IP publik VPS dan nyalakan bagian Proxy.

Buat sertifikat SSL. Pada pengaturan SSL/TLS > Origin Server, buat sertifikat baru untuk domain.

Simpan sertifikat SSL di server dan tambahkan jalur ke sertifikat SSL di pengaturan Nginx.

/etc/nginx/sites-available/nextcloud.domain.com
# Use Mozilla's guidelines for SSL/TLS settings
# https://mozilla.github.io/server-side-tls/ssl-config-generator/
ssl_certificate     /etc/ssl/nginx/cloud.example.com.crt;
ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key;

Pastikan pengaturan Nginx sudah benar dan muat ulang pengaturan Nginx untuk menerapkan perubahan.

# periksa pengaturan Nginx
nginx -t

# muat ulang untuk menerapkan perubahan
systemctl reload nginx

Tambahkan domain ke bagian trusted_domains di config.php:

/var/www/nextcloud/config/config.php
'trusted_domains' => [
    0 => 'localhost',
    1 => '192.168.1.x', // Local IP
    2 => 'cloud.example.com', // domain Anda
],

Masuk ke Nextcloud

Setelah pemasangan selesai, cobalah untuk masuk ke Nextcloud menggunakan peramban web dan menuju ke alamat domain Nextcloud Anda.

Health check

Hal pertama yang perlu dilakukan adalah memeriksa kesehatan Nextcloud di menu Pengaturan administrasi dari tombol profil di pojok kanan atas.

Cobalah untuk memperbaiki berdasarkan saran yang diberikan pada bagian Peringatan Keamanan & Pengaturan.

Muat ulang halaman Pengaturan administrasi setelah melakukan perbaikan. Jika pesan galat hilang, maka perbaikan berhasil diterapkan.

Berikut adalah kumpulan penyelesaian masalah dari peringatan yang muncul.

Batas memori PHP

Batas memori PHP berada di bawah nilai yang direkomendasikan sebesar 512 MB. Beberapa fitur atau aplikasi - termasuk Updater - mungkin tidak berfungsi dengan semestinya.

Ubah di /etc/php/8.4/fpm/php.ini.

/etc/php/8.4/fpm/php.ini
; Maximum amount of memory a script may consume
; https://php.net/memory-limit
;memory_limit = 128M
memory_limit = 512M

Mulai ulang php-fpm untuk menerapkan perubahan.

systemctl restart php8.4-fpm.service

Mulai jendela pemeliharaan

Server tidak memiliki waktu mulai jendela pemeliharaan yang dikonfigurasi. Ini berarti job latar belakang harian yang intensif sumber daya juga akan dieksekusi selama waktu penggunaan utama Anda. Kami merekomendasikan untuk menyetelnya ke waktu penggunaan rendah, sehingga pengguna tidak terlalu terdampak oleh beban dari tugas berat ini.

Tambahkan cron untuk menjalankan program secara otomatis di latar belakang.

crontab -u www-data -e

# tambahkan baris berikut
*/5  *  *  *  * php -f /var/www/nextcloud/cron.php

Migrasi mimetype tersedia

Satu atau lebih migrasi mimetype tersedia. Sesekali mimetype baru ditambahkan untuk menangani tipe file tertentu dengan lebih baik. Migrasi mimetype memerlukan waktu lama pada instans besar sehingga tidak dilakukan secara otomatis saat peningkatan versi. Gunakan perintah occ maintenance:repair --include-expensive untuk melakukan migrasi tersebut.

Jalankan perintah occ tersebut:

# pergi ke direktori
cd /var/www/nextcloud

php occ maintenance:repair --include-expensive

Header HTTP

Beberapa header tidak disetel dengan benar pada instans Anda - Header HTTP Strict-Transport-Security tidak disetel (seharusnya setidaknya 15552000 detik). Untuk keamanan yang lebih baik, disarankan untuk mengaktifkan HSTS.

Nyalakan pengaturan HSTS di pengaturan Nginx /etc/nginx/sites-available/cloud.example.com.

/etc/nginx/sites-available/cloud.example.com
# HSTS settings
# 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 Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains;" always;

Periksa perubahan dan muat ulang Nginx:

# periksa pengaturan
nginx -t

# muat ulang nginx
systemctl reload nginx

PHP getenv

PHP tidak disetel sesuai untuk melakukan kueri system environment variables. Pengujian dengan getenv("PATH") hanya menghasilkan pesan kosong.

Ubah di berkas /etc/php/8.4/fpm/pool.d/www.conf

/etc/php/8.4/fpm/pool.d/www.conf
# hapus komentar bagian berikut
clear_env = no

## dan bagian ini
env[PATH] = /usr/local/bin:/usr/bin:/bin

Mulai ulang php-fpm untuk menerapkan perubahan:

systemctl restart php8.4-fpm.service

PHP opcache

Modul PHP OPcache tidak dikonfigurasi dengan benar. Buffer interned strings OPcache hampir penuh. Untuk memastikan string berulang dapat di-cache secara efektif, disarankan untuk menerapkan opcache.interned_strings_buffer pada konfigurasi PHP Anda dengan nilai lebih tinggi daripada 8.

Ubah nilainya di /etc/php/8.4/fpm/php.ini:

/etc/php/8.4/fpm/php.ini
; The amount of memory for interned strings in Mbytes.
;opcache.interned_strings_buffer=8
opcache.interned_strings_buffer=16

Mulai ulang php-fpm untuk menerapkan perubahan:

systemctl restart php8.4-fpm.service

Modul PHP

Instans ini tidak memiliki beberapa modul PHP yang direkomendasikan. Untuk peningkatan kinerja dan kompatibilitas yang lebih baik, sangat disarankan untuk menginstalnya: - apcu - gmp diperlukan untuk penyimpanan SFTP dan direkomendasikan untuk kinerja WebAuthn

Pasang modul PHP yang hilang:

sudo apt install php-apcu

Pasang aplikasi

Beberapa kebutuhan saya tidak disediakan secara bawaan oleh Nextcloud seperti kalender, tugas, dan pengelola sandi Passman.

Oleh karena itu, kita perlu memasangnya sendiri dari menu Aplikasi.

Untuk memasang aplikasi, pilih aplikasi yang akan dipasang kemudian tekan tombol Aktifkan (icon centang).

Selaraskan ke perangkat

Setelah Nextcloud sudah dapat digunakan dan diakses melalui peramban web, sekarang saatnya kita menyelaraskan data ke komputer dan ponsel.

Komputer

Aplikasi desktop Nextcloud sudah tersedia di repositori Debian 13 dan kita dapat memasangnya langsung dengan perintah:

sudo apt install nextcloud-desktop

Masuk ke akun Nextcloud yang sudah dibuat dan berkas-berkas akan diselaraskan secara otomatis.

Setelah terpasang, Nextcloud akan berjalan di latar belakang dan otomatis berjalan setiap kali kita menyalakan komputer.

Kita dapat mengakses antarmuka Nextcloud dari icon di menu atau dari daftar aplikasi.

Sayangnya, akun Nextcloud tidak terintegrasi dengan Akun Daring GNOME. Jadi, kita harus login lagi kalau ingin mengelola kontak, kalender, atau tugas dari aplikasi GNOME. Karena saya tidak mengelola hal-hal tersebut dengan aplikasi GNOME, jadi, ini bukan masalah yang serius untuk saya.

Foto

Kita dapat mengatur direktori tempat menyimpan foto di Nextcloud yang diselaraskan di komputer kita sebagai lokasi pustaka dengan Shotwell.

Lokasi pustaka Shotwell yang merujuk ke folder Foto di Nextcloud

Catatan Joplin

Pilih Nextcloud sebagai sasaran penyelarasan dan masukkan akun Nextcloud.

Kata sandi dan kode OTP

Unduh ekstensi Passman untuk peramban web Anda. Tersedia untuk Firefox, Chrome, dan Safari.

Ponsel

Untuk menyelaraskan berkas di ponsel, kita dapat mengunduh aplikasi Nextcloud dari Google Play, App Store, atau F-Droid.

Untuk menyelaraskan kontak, kalender, dan tugas, kita perlu menggunakan DAVx5. Aplikasi ini memiliki dua versi:

  • gratis: melalui F-Droid.
  • berbayar: Rp. 99rb melalui Play Store, Huawei AppGallery, dan Samsung Galaxy Store.

Masuk ke aplikasi Nextcloud dan DAVx5 dengan akun Nextcloud untuk mulai menyelaraskan berkas, kontak, kalender, dan tugas.

DAVx5 hanya bertugas sebagai penyelaras data saja dan terintegrasi dengan baik dengan sistem Android untuk menyelaraskan kontak. Untuk menyelaraskan kalender dan tugas, kita perlu memasang aplikasi yang dapat terhubung ke server Nextcloud kita.

iOS Penyelarasan ke iOS dapat dilakukan secara manual. Silakan baca panduannya di sini.

Kalender

Nextcloud Calendar dari Google Play dan Etar dari F-Droid dapat digunakan untuk menyelaraskan kalender.

Tugas

Kita dapat menggunakan aplikasi Nextcloud Task dari Google Play atau Tasks.org dari F-Droid untuk menyelaraskan tugas.

Foto

Foto di ponsel akan diunggah ke server Nextcloud. Pengaturan untuk mengelola album apa saja yang akan diunggah dapat ditemukan di menu Pengaturan > Sinkron > Unggah otomatis.

Catatan Joplin

Pilih Nextcloud sebagai sasaran penyelarasan dan masukkan akun Nextcloud.

Kata sandi dan kode OTP

Unduh Passman dari Google Play atau F-Droid. Nyalakan Passman sebagai layanan pengisi otomatis (Credential Autofill Service) dari Pengaturan > Sandi dan akun > Layanan pilihan.

Hasil pengujian penggunaan Passman di Android:

  • Kita harus menggunakan URL lengkap termasuk subdomain dan port agar pengisi otomatis dapat mengisi form dengan benar.
  • Belum mendukung beberapa URL di satu akun.
  • Hanya untuk masuk ke situs web. Isi otomatis ke aplikasi Android belum didukung. Mungkin ada beberapa, tapi sejauh yang saya coba, belum ada.

Kesimpulan

Setelah mencoba solusi ini selama sekitar satu bulan untuk menguji seberapa bagus dan lancar solusi ini serta apa saja yang menjadi kendalanya, dapat saya simpulkan bahwa saya puas dengan hasilnya karena telah mencukupi kebutuhan saya.

Cukup dengan berlangganan satu VPS, saya dapat menghemat pengeluaran untuk berlangganan layanan lainnya.

KebutuhanLayananHargaNextcloudHarga
ServerGoogle0VPS40rb
Selaraskan berkasGoogle Drive0Nextcloud0
Selaraskan kontakGoogle Contacts0Nextcloud Contacts0
Selaraskan kalenderGoogle Calendar0Nextcloud Calendar0
Selaraskan tugasGoogle Tasks0Nextcloud Task0
Selaraskan fotoGoogle Photos0Nextcloud0
Selaraskan catatan JoplinJoplin Cloud, Dropbox60rb/0Nextcloud0
Selaraskan kata sandi dan kode OTPBitwarden40rbPassman0
Total-100rb/40rb-40rb

Jika kita tidak keberatan dengan usaha untuk memasang dan mengatur, serta merasa cukup dengan fitur yang sederhana, saya rasa solusi ini masih layak untuk digunakan.

Dari sini, saya mengambil kesimpulan bahwa untuk mewujudkan kedaulatan digital memang tidak mudah dan butuh biaya yang tidak murah. Menggunakan solusi berbayar jauh lebih hemat waktu, tenaga, dan biaya.

Usahakan untuk selalu punya cadangan dan rutin melakukannya. Dengan begitu, kita bisa lebih leluasa untuk berpindah layanan cloud jika sudah mulai tidak sesuai dengan kebutuhan kita.

Tujuan utamanya adalah kita yang pegang kendali atas data kita. Jangan sampai terkunci di satu penyedia layanan.

Catatan

  • Penggunaan CPU sangat minim dan RAM yang terpakai cukup stabil di kisaran 700MB.
  • Ruang penyimpanan efektif sekitar 15GB dari total 20GB. Sama seperti versi gratis dari Google dengan asumsi 5GB digunakan untuk sistem operasi Debian.
  • Harga VPS 40rb adalah harga ketika ada promo. Harga di luar promo mulai Rp. 55rb per bulan pada saat artikel ini dibuat.

Rujukan