Cara Self-Host Paperclip di VPS (Panduan Langkah-demi-Langkah 2026)
Paperclip adalah salah satu sistem manajemen dokumen yang paling bersih yang tersedia untuk di-host sendiri. Ia berjalan sebagai satu container Docker, menyimpan file di volume lokal, dan menampilkan antarmuka web pada port 8080. Panduan ini membimbing Anda melalui instalasi lengkap yang siap produksi di VPS Linux - dari penyediaan server hingga unggahan dokumen pertama Anda.
Prasyarat
- VPS yang menjalankan Ubuntu 22.04 LTS atau Debian 12 (disarankan)
- Minimal 1 vCPU, 1GB RAM, 20GB penyimpanan (disarankan 2GB RAM untuk OCR)
- Akses root atau sudo melalui SSH
- Domain atau subdomain yang mengarah ke IP VPS Anda (opsional tapi disarankan untuk HTTPS)
Pilihan VPS yang Direkomendasikan:
- Hetzner Cloud CX22 - €4.15/bulan, 2 vCPU, 4GB RAM, 40GB NVMe
- Contabo VPS S - €5.99/bulan, 4 vCPU, 8GB RAM, 200GB NVMe
Langkah 1: Perbarui Server Anda
apt update && apt upgrade -y
Langkah 2: Instal Docker
curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker
Verifikasi Docker berjalan:
docker --version
Langkah 3: Instal Docker Compose
apt install docker-compose-plugin -y
docker compose version
Langkah 4: Buat Direktori Kerja
mkdir -p /opt/paperclip && cd /opt/paperclip
Langkah 5: Buat file docker-compose.yml
nano /opt/paperclip/docker-compose.yml
Tempelkan konfigurasi berikut:
version: "3.8"
services:
paperclip:
image: paperclip/paperclip:latest
container_name: paperclip
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- paperclip_data:/data
environment:
- PAPERCLIP_SECRET_KEY=ubah_ini_ke_secret_acak
- PAPERCLIP_OCR_ENABLED=true
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
paperclip_data:
Penting: Ganti ubah_ini_ke_secret_acak dengan string acak. Generasikan dengan:
openssl rand -hex 32
Langkah 6: (Opsional) Gunakan PostgreSQL Daripada SQLite
Untuk penggunaan multi-pengguna atau produksi, perpanjang file compose:
version: "3.8"
services:
db:
image: postgres:16-alpine
container_name: paperclip_db
restart: unless-stopped
environment:
POSTGRES_DB: paperclip
POSTGRES_USER: paperclip
POSTGRES_PASSWORD: strongpassword
volumes:
- pg_data:/var/lib/postgresql/data
paperclip:
image: paperclip/paperclip:latest
container_name: paperclip
restart: unless-stopped
depends_on:
- db
ports:
- "8080:8080"
volumes:
- paperclip_data:/data
environment:
- PAPERCLIP_SECRET_KEY=your_random_secret
- PAPERCLIP_DB_HOST=db
- PAPERCLIP_DB_NAME=paperclip
- PAPERCLIP_DB_USER=paperclip
- PAPERCLIP_DB_PASSWORD=strongpassword
- PAPERCLIP_OCR_ENABLED=true
volumes:
paperclip_data:
pg_data:
Langkah 7: Jalankan Paperclip
cd /opt/paperclip
docker compose up -d
Periksa bahwa container telah berjalan:
docker compose ps
docker compose logs -f paperclip
Langkah 8: Konfigurasi Firewall
ufw allow OpenSSH
ufw allow 80
ufw allow 443
ufw enable
Catatan: Port 8080 sengaja tidak diekspos langsung - kita akan proxy melalui Caddy/Nginx dengan HTTPS.
Langkah 9: Atur HTTPS dengan Caddy
apt install caddy -y
Edit file Caddyfile:
nano /etc/caddy/Caddyfile
docs.yourdomain.com {
reverse_proxy localhost:8080
}
Muat ulang Caddy:
systemctl reload caddy
Caddy secara otomatis mengurus sertifikat Let’s Encrypt.
Langkah 10: Login Pertama
- Buka
https://docs.yourdomain.com(atauhttp://IP_VPS_ANDA:8080jika tanpa domain) - Lengkapi wizard pengaturan awal - atur email admin dan password
- Unggah dokumen pertama Anda
- Aktifkan OCR jika Anda memerlukan pencarian teks lengkap pada file yang dipindai
Langkah 11: Siapkan Cadangan
Cadangkan volume Docker ke mesin lokal Anda atau bucket yang kompatibel S3:
# Cadangan ke file lokal
docker run --rm \
-v paperclip_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/paperclip-backup-$(date +%Y%m%d).tar.gz /data
Jadwalkan ini dengan cron job:
crontab -e
# Tambahkan:
0 3 * * * /opt/paperclip/backup.sh
Pemecahan Masalah
| Masalah | Solusi |
|---|---|
| Container keluar secara langsung | Periksa log: docker compose logs paperclip |
| OCR tidak berfungsi | Pastikan PAPERCLIP_OCR_ENABLED=true dan container memiliki RAM yang cukup |
| Tidak bisa mengakses UI | Pastikan port 8080 tidak diblokir; periksa docker compose ps |
| Pemrosesan dokumen lambat | OCR adalah proses CPU-intensif - tingkatkan ke 2+ vCPU jika perlu |
Untuk rekomendasi penyedia VPS, lihat VPS terbaik untuk Paperclip atau perbandingan lengkap VPS.