VPS Murah Nevacloud

Rapikan Dokumen dengan Paperless-ngx di VPS: Arsip Digital yang Bisa Dicari

Halo Sobat Online! Pernah tidak, struk belanja menumpuk di laci, faktur tercecer di berbagai folder, dan waktu butuh satu lembar dokumen penting kita harus membongkar semuanya? Menaruh Paperless-ngx di VPS adalah jalan keluarnya: setiap hasil scan diubah menjadi arsip digital yang teksnya bisa dicari, diberi label otomatis, dan bisa dibuka dari HP kapan saja. Yang kita perlukan cuma Docker Compose dan beberapa menit untuk menyalakannya.

Analogi gampangnya begini: bayangkan kita punya lemari arsip yang bisa bicara. Kita menyodorkan kertasnya, lemari itu membaca isinya, menempelkan label (tanggal, jenis dokumen, pengirim), lalu menyimpannya rapi. Ketika kita bertanya “mana faktur bulan Maret?”, jawabannya muncul dalam hitungan detik — bukan setelah mengaduk satu dus penuh kertas.

Kenapa Paperless-ngx di VPS Cocok Jadi Arsip Digital Pribadi?

  • OCR dan pencarian teks penuh. Paperless-ngx memakai OCRmyPDF dan Tesseract supaya PDF hasil scan punya lapisan teks. Artinya kita bisa mencari isi dokumen, bukan cuma nama filenya.
  • Klasifikasi otomatis. Setelah beberapa dokumen masuk, sistem belajar mencocokkan koresponden, jenis dokumen, dan tag — dokumen baru langsung diberi label yang mirip dengan yang lama.
  • Satu tempat untuk semuanya. Struk, faktur, kontrak, dan surat pajak tersimpan dalam satu antarmuka web, lengkap dengan pratinjau PDF.
  • VPS selalu menyala dan penyimpanannya lega. Kita tidak bergantung pada laptop yang kadang mati, dan kapasitas disk VPS jauh lebih mudah ditambah daripada memori HP.
  • Gratis dan open-source. Tidak ada batas jumlah dokumen dan tidak ada langganan bulanan.

Yang Perlu Disiapkan

  1. VPS Linux — Ubuntu 22.04/24.04 atau Debian 12. OCR itu pekerjaan yang rakus CPU, jadi minimal 2 vCPU dan 4 GB RAM supaya proses scan tidak menggantung. Disk 20 GB sudah cukup untuk ribuan halaman.
  2. Docker dan Docker Compose yang sudah terpasang. Cek dengan docker --version dan docker compose version.
  3. Akses root atau sudo ke VPS tersebut.
  4. Opsional tapi sangat disarankan: satu subdomain (misalnya arsip.domainku.com) supaya panelnya bisa diakses lewat HTTPS.

Langkah 1: Unduh Berkas Docker Compose Resmi

Paperless-ngx menyediakan berkas bawaan di repositori resminya. Kita unduh varian PostgreSQL karena lebih stabil untuk koleksi dokumen yang besar:


sudo mkdir -p /opt/paperless && cd /opt/paperless
sudo curl -LO https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/docker-compose.postgres.yml
sudo mv docker-compose.postgres.yml docker-compose.yml
sudo curl -LO https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/docker-compose.env
sudo curl -LO https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/.env

Tiga berkas itu punya tugas masing-masing:

  • docker-compose.yml — mendefinisikan tiga container: webserver (aplikasi Paperless-ngx), db (PostgreSQL 18), dan broker (Valkey 9, otaknya antrean tugas).
  • docker-compose.env — isi konfigurasi aplikasi.
  • .env — nama proyek Compose, yang memengaruhi nama volume.

Perhatikan baris ports: "8000:8000" pada service webserver. Port itu yang nanti kita lindungi di belakang reverse proxy.

Langkah 2: Isi Konfigurasi di docker-compose.env

Buka berkasnya, lalu sesuaikan bagian berikut:


USERMAP_UID=1000
USERMAP_GID=1000
PAPERLESS_SECRET_KEY=ganti-dengan-kunci-acak-panjang
PAPERLESS_TIME_ZONE=Asia/Jakarta
PAPERLESS_OCR_LANGUAGES=ind
PAPERLESS_OCR_LANGUAGE=ind
PAPERLESS_URL=https://arsip.domainku.com
PAPERLESS_ADMIN_USER=admin
PAPERLESS_ADMIN_PASSWORD=ganti-dengan-password-kuat

Penjelasan singkat tiap baris:

  • USERMAP_UID dan USERMAP_GID — samakan dengan hasil id -u dan id -g di VPS supaya folder consume bisa ditulis oleh user kita maupun container.
  • PAPERLESS_SECRET_KEY — kunci untuk menandatangani sesi login. Buat yang acak, misalnya dengan openssl rand -hex 32.
  • PAPERLESS_TIME_ZONE — biar tanggal dokumen mengikuti waktu kita, bukan UTC.
  • PAPERLESS_ADMIN_USER dan PAPERLESS_ADMIN_PASSWORD — kalau diisi, superuser dibuat otomatis saat container pertama kali jalan, jadi kita tidak perlu menyentuh terminal lagi.

Mengaktifkan OCR Bahasa Indonesia

Tesseract memakai kode bahasa tiga huruf, dan Bahasa Indonesia kodenya ind. Ada satu jebakan yang sering bikin dokumen berbahasa Indonesia hasilnya berantakan: image container secara bawaan hanya membawa paket Inggris, Jerman, Italia, Spanyol, dan Prancis.

Karena itu PAPERLESS_OCR_LANGUAGES=ind wajib diisi di samping PAPERLESS_OCR_LANGUAGE=ind. Baris pertama menyuruh container memasang paket bahasanya, baris kedua menentukan bahasa yang dipakai saat OCR. Kalau hanya mengisi PAPERLESS_OCR_LANGUAGE, OCR-nya akan gagal karena paketnya tidak ada. Boleh juga digabung, misalnya ind+eng, tapi ingat: makin banyak bahasa, makin boros CPU.

Satu hal lagi soal keamanan: berkas ini menyimpan password, jadi batasi izinnya dengan sudo chmod 600 docker-compose.env.

Langkah 3: Nyalakan Container

Sekarang saatnya menjalankan semuanya:


cd /opt/paperless
sudo docker compose pull
sudo docker compose up -d
sudo docker compose logs -f webserver

Saat pertama kali jalan, container akan mengunduh paket bahasa Indonesia dulu, jadi prosesnya lebih lama dari biasanya. Tunggu sampai log berhenti di baris kesiapan, lalu keluar dari log dengan Ctrl+C (container-nya tetap hidup).

Cek statusnya:


sudo docker compose ps

Buka http://IP-VPS:8000 di browser. Karena PAPERLESS_ADMIN_USER sudah diisi, kita bisa langsung login — kalau tidak, halaman pertama akan meminta kita membuat akun superuser lewat antarmuka web.

Langkah 4: Masukkan Dokumen Pertama

Di dalam folder /opt/paperless ada direktori consume. Semua berkas yang muncul di sana (PDF, JPG, atau PNG) diproses otomatis:


cp ~/scan/struk-januari.pdf /opt/paperless/consume/

Beberapa detik kemudian, dokumen itu muncul di antarmuka web dengan teks yang sudah bisa dicari. Beberapa catatan praktis:

  • Hasil olahan disimpan di folder media, sedangkan data aplikasi ada di volume Docker data dan pgdata.
  • Kalau folder consume ditaruh di NFS (yang tidak mendukung inotify), set PAPERLESS_CONSUMER_POLLING=true supaya Paperless-ngx memantau folder dengan cara polling.
  • Selain folder consume, dokumen bisa masuk lewat email, API unggah (/api/documents/post_document/), dan aplikasi klien pihak ketiga yang memakai API resmi tersebut.

Langkah 5: Jangan Biarkan Port 8000 Terbuka

Arsip dokumen itu isinya sensitif. Sebelum diakses dari luar rumah, taruh webserver di balik reverse proxy dengan HTTPS, lalu isi PAPERLESS_URL sesuai domain yang dipakai. Terakhir, tutup port 8000 di firewall:


sudo ufw deny 8000

Kalau hanya untuk keluarga sendiri, alternatif paling aman adalah mengaksesnya lewat VPN atau tunnel tanpa membuka port sama sekali.

Merawat Arsip: Backup dan Update

Backup aplikasi cukup satu perintah, karena document exporter menyalin dokumen, thumbnail, metadata, dan isi basis data sekaligus:


sudo docker compose exec -T webserver document_exporter ../export

Hasilnya ada di folder export dan bersifat inkremental, jadi aman dijalankan rutin. Untuk PostgreSQL, kita bisa menambah cadangan logis:


sudo docker compose exec -T db pg_dump -U paperless -d paperless -Fc > paperless.dump

Dua catatan penting: ekspor dari satu versi tidak bisa diimpor ke versi Paperless-ngx yang berbeda, dan API token tidak ikut tersalin sehingga harus dibuat ulang setelah restore. Untuk update, urutannya selalu backup dulu, baru:


sudo docker compose pull && sudo docker compose up -d

Kalau VPS-nya pas-pasan, ada beberapa setelan penghemat yang berguna: PAPERLESS_OCR_PAGES=1 (hanya halaman pertama yang di-OCR) dan PAPERLESS_WEBSERVER_WORKERS=1.

Kesimpulan

Merapikan dokumen tidak lagi berarti membeli lemari besi baru atau berlangganan penyimpanan awan. Dengan Paperless-ngx di VPS, tumpukan kertas berubah jadi arsip digital yang bisa dicari, diberi label otomatis, dan sepenuhnya milik kita sendiri — tanpa biaya bulanan.

Mulailah dari yang kecil: pasang lewat Docker Compose, masukkan 10 dokumen terpenting, dan rasakan sendiri bedanya saat mencari satu struk di antara ratusan. Selamat mencoba, dan semoga arsip digitalmu makin rapi setiap hari!

Baca juga

Nevacloud VPS Indonesia

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *