Semua Panduan VPSTutorial LinuxDocker & DevOpsOtomasi & AIWebsite & WordPressTips Hemat Server
ContaPoDβ€ΊCara Menjalankan n8n di VPS Murah Rp10.000/Bulan
Otomasi & AI

Cara Menjalankan n8n di VPS Murah Rp10.000/Bulan (Panduan 2026)

✍️ Mirda Safitriyani πŸ“… 22 Oktober 2026 ⏱️ 10 mnt baca πŸ‘οΈ 0Γ—
Cara Menjalankan n8n di VPS Murah Rp10.000/Bulan (Panduan 2026)

Berapa yang Anda bayar setiap bulan untuk alat otomasi seperti Zapier atau Make, dan berapa banyak workflow yang terpaksa Anda pangkas karena kuota eksekusi? Kalau jawabannya membuat Anda menghela napas, kabar baiknya begini: n8n, platform otomasi open-source yang kini menjadi favorit banyak tim teknis, bisa Anda jalankan sendiri di VPS seharga Rp10.000 per bulan. Tanpa batas jumlah workflow, tanpa batas eksekusi, dan data tetap berada di server Anda sendiri di Jakarta.

Namun menjalankan n8n di server berspesifikasi kecil berbeda dengan menjalankannya di laptop. Ada beberapa hal yang wajib Anda atur sejak awal agar n8n stabil, aman, dan tidak kehabisan memori di tengah malam. Panduan ini membahas semuanya langkah demi langkah, dengan konfigurasi yang mengikuti praktik terbaik industri tahun 2026.

Kenapa n8n Cocok untuk VPS Murah?

n8n berbasis Node.js dan secara bawaan memakai SQLite sebagai database. Artinya, untuk penggunaan perorangan atau tim kecil, Anda tidak perlu server database terpisah. Selama Anda membatasi penyimpanan riwayat eksekusi dan menambahkan swap, n8n bisa berjalan nyaman di VPS kelas entry.

Beberapa skenario yang realistis untuk VPS murah:

  • Meneruskan pesan formulir website ke WhatsApp, Telegram, atau email.
  • Sinkronisasi pesanan dari marketplace ke Google Sheets setiap 15 menit.
  • Ringkasan otomatis berbasis AI (misalnya memanggil API model bahasa) untuk email masuk atau laporan harian.
  • Monitoring uptime website dan notifikasi ketika ada gangguan.

Yang perlu Anda hindari di server kecil adalah workflow yang memproses ribuan baris data dalam satu eksekusi atau menyimpan file besar di memori. Untuk kasus seperti itu, Anda bisa naik paket kemudian tanpa mengubah konfigurasi yang akan kita buat.

Satu catatan lisensi: n8n Community Edition dirilis dengan Sustainable Use License. Anda bebas memakainya untuk kebutuhan internal bisnis, tetapi tidak untuk dijual kembali sebagai layanan otomasi kepada pihak lain.

Prasyarat Sebelum Mulai

  • VPS Linux dengan Ubuntu 24.04 LTS atau Debian 12. Anda bisa memakai paket entry VPS KVM NVMe ContaPoD yang aktif otomatis setelah pembayaran QRIS.
  • Akses SSH sebagai root atau user dengan hak sudo.
  • Domain atau subdomain, misalnya n8n.domainanda.com, dengan record A yang mengarah ke IP publik VPS. Ini wajib jika Anda ingin webhook bekerja dengan HTTPS.
  • Pemahaman dasar terminal: menjalankan perintah, mengedit file dengan nano, dan membaca log.
  • Sekitar 30 menit waktu luang.

Memilih Konfigurasi yang Tepat untuk Server Kecil

Sebelum masuk ke langkah teknis, pahami dulu pilihan arsitektur yang tersedia. Banyak tutorial di internet langsung menyarankan PostgreSQL dan mode queue dengan Redis, padahal untuk VPS kecil itu justru membebani.

AspekSQLite (bawaan)PostgreSQLMode Queue + Redis
Konsumsi RAM tambahanHampir nolSekitar 50 sampai 150 MBRatusan MB (worker + Redis)
Kompleksitas setupSangat rendahSedangTinggi
Cocok untukPerorangan dan tim kecil, puluhan workflowTim menengah, eksekusi paralel tinggiSkala besar, ribuan eksekusi per jam
BackupSalin satu folderpg_dumppg_dump + konfigurasi worker
Rekomendasi untuk VPS Rp10.000YaHanya jika RAM memadaiTidak

Panduan ini memakai SQLite dengan Docker Compose dan Caddy sebagai reverse proxy. Caddy dipilih karena mengurus sertifikat HTTPS Let's Encrypt secara otomatis tanpa konfigurasi tambahan, dan konsumsi memorinya kecil.

Langkah-Langkah Menjalankan n8n di VPS

  1. Perbarui sistem dan aktifkan firewall

    Login ke VPS lewat SSH, lalu perbarui paket dan buka hanya port yang benar-benar dibutuhkan: SSH (22), HTTP (80), dan HTTPS (443). Port 5678 milik n8n sengaja tidak dibuka ke publik karena akses akan melewati Caddy.

    # Perbarui daftar paket dan sistem
    sudo apt update && sudo apt upgrade -y
    
    # Aktifkan firewall, izinkan SSH terlebih dahulu agar tidak terkunci
    sudo ufw allow OpenSSH
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable

    Catatan penting: Docker memodifikasi iptables secara langsung, sehingga port yang dipublikasikan container bisa melewati aturan UFW. Itulah alasan kita tidak memetakan port 5678 ke host sama sekali.

  2. Tambahkan swap untuk mencegah kehabisan memori

    Ini langkah yang paling sering dilewatkan dan paling sering menjadi penyebab n8n tiba-tiba mati. Swap berfungsi sebagai cadangan memori di disk. Karena VPS ContaPoD memakai NVMe, swap jauh lebih responsif dibanding disk HDD atau SSD SATA lama.

    # Buat file swap 2 GB
    sudo fallocate -l 2G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
    # Jadikan permanen setelah reboot
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    
    # Kurangi kecenderungan kernel memakai swap terlalu dini
    echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swap.conf
    sudo sysctl --system

    Nilai swappiness 10 membuat kernel tetap memprioritaskan RAM, dan baru memakai swap ketika memori benar-benar menipis.

  3. Instal Docker dan Docker Compose

    Menjalankan n8n lewat Docker adalah metode yang direkomendasikan tim n8n sendiri. Pembaruan versi cukup dilakukan dengan menarik image baru, dan lingkungan Node.js tidak bercampur dengan sistem.

    # Skrip instalasi resmi Docker (sudah termasuk plugin Compose)
    curl -fsSL https://get.docker.com | sudo sh
    
    # Verifikasi instalasi
    docker --version
    docker compose version
  4. Siapkan struktur folder dan kunci enkripsi

    n8n mengenkripsi semua kredensial (API key, token, password) yang Anda simpan. Kunci enkripsi ini harus Anda tentukan sendiri dan simpan di tempat aman. Jika kunci hilang, seluruh kredensial di backup Anda tidak bisa dibuka.

    mkdir -p ~/n8n && cd ~/n8n
    
    # Buat kunci acak 32 byte, lalu simpan juga di password manager Anda
    openssl rand -hex 32
  5. Buat file konfigurasi environment

    Pisahkan konfigurasi sensitif ke file .env agar file Compose tetap bersih dan bisa dibagikan tanpa membocorkan rahasia.

    nano .env

    Isi dengan konfigurasi berikut, sesuaikan domain dan kunci enkripsi:

    # Domain publik n8n
    N8N_HOST=n8n.domainanda.com
    N8N_PROTOCOL=https
    WEBHOOK_URL=https://n8n.domainanda.com/
    
    # Kunci enkripsi kredensial (hasil openssl rand -hex 32)
    N8N_ENCRYPTION_KEY=ganti_dengan_kunci_anda
    
    # Zona waktu agar Schedule Trigger sesuai WIB
    GENERIC_TIMEZONE=Asia/Jakarta
    TZ=Asia/Jakarta
    
    # Hemat disk dan RAM: hapus riwayat eksekusi lebih dari 7 hari (168 jam)
    EXECUTIONS_DATA_PRUNE=true
    EXECUTIONS_DATA_MAX_AGE=168
    EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000
    
    # Simpan detail eksekusi sukses hanya bila diperlukan
    EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
    EXECUTIONS_DATA_SAVE_ON_ERROR=all
    
    # Batasi heap Node.js agar tidak menghabiskan seluruh RAM
    NODE_OPTIONS=--max-old-space-size=512
    
    # Matikan telemetri dan perbaiki izin file konfigurasi
    N8N_DIAGNOSTICS_ENABLED=false
    N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true

    Dua pengaturan yang paling berdampak di server kecil adalah EXECUTIONS_DATA_SAVE_ON_SUCCESS=none dan pruning. Tanpa keduanya, file database SQLite bisa membengkak hingga gigabyte dalam beberapa minggu, terutama jika Anda punya workflow yang berjalan tiap menit. Eksekusi yang gagal tetap tersimpan sehingga Anda masih bisa melakukan debugging.

  6. Tulis file Docker Compose

    Buat file docker-compose.yml yang berisi dua layanan: Caddy di depan dan n8n di belakang. Keduanya berada di jaringan internal Docker yang sama.

    services:
      caddy:
        image: caddy:2
        restart: unless-stopped
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - ./Caddyfile:/etc/caddy/Caddyfile:ro
          - caddy_data:/data
          - caddy_config:/config
    
      n8n:
        image: docker.n8n.io/n8nio/n8n:stable
        restart: unless-stopped
        env_file: .env
        # Tidak ada 'ports': n8n hanya bisa diakses lewat Caddy
        volumes:
          - n8n_data:/home/node/.n8n
    
    volumes:
      caddy_data:
      caddy_config:
      n8n_data:

    Tag stable lebih aman daripada latest untuk produksi, karena latest bisa berisi rilis terbaru yang belum banyak diuji. Untuk kontrol penuh, Anda bahkan bisa mengunci ke nomor versi tertentu dan memperbaruinya secara terjadwal.

  7. Konfigurasi Caddy untuk HTTPS otomatis

    Buat file Caddyfile di folder yang sama:

    n8n.domainanda.com {
        # Teruskan semua request ke container n8n
        reverse_proxy n8n:5678
    
        # Kompresi respons agar editor lebih cepat dimuat
        encode gzip zstd
    }

    Caddy akan meminta sertifikat Let's Encrypt saat pertama kali dijalankan dan memperbaruinya otomatis. Pastikan record DNS domain sudah mengarah ke IP VPS sebelum langkah berikutnya, karena proses validasi sertifikat membutuhkan domain yang sudah aktif.

  8. Jalankan dan buat akun pemilik
    docker compose up -d
    
    # Pantau log sampai muncul pesan editor siap
    docker compose logs -f n8n

    Buka https://n8n.domainanda.com di browser. Halaman pertama akan meminta Anda membuat akun owner. Lakukan ini segera, karena siapa pun yang membuka URL tersebut lebih dulu bisa mengklaim akun owner. Setelah masuk, aktifkan autentikasi dua faktor di menu pengaturan akun.

  9. Uji dengan workflow sederhana

    Buat workflow baru berisi node Webhook (metode POST) dan node Respond to Webhook. Aktifkan workflow, lalu salin Production URL dan uji dari terminal:

    curl -X POST https://n8n.domainanda.com/webhook/uji-coba \
      -H "Content-Type: application/json" \
      -d '{"pesan":"halo dari VPS"}'

    Jika respons diterima, berarti domain, HTTPS, dan webhook sudah bekerja dengan benar. Dari sini, Anda bisa mulai membangun workflow sungguhan.

  10. Atur backup otomatis

    Praktik terbaik industri menyarankan aturan 3-2-1: tiga salinan, dua media, satu di luar server. Minimal, ekspor workflow dan kredensial setiap hari lalu salin ke penyimpanan lain.

    #!/usr/bin/env bash
    # Simpan sebagai ~/n8n/backup.sh lalu: chmod +x backup.sh
    set -euo pipefail
    
    TANGGAL=$(date +%F)
    TUJUAN=~/n8n-backup/$TANGGAL
    mkdir -p "$TUJUAN"
    
    # Ekspor workflow dan kredensial (kredensial tetap terenkripsi)
    docker compose -f ~/n8n/docker-compose.yml exec -T n8n \
      n8n export:workflow --all --separate --output=/home/node/.n8n/export/workflows
    docker compose -f ~/n8n/docker-compose.yml exec -T n8n \
      n8n export:credentials --all --separate --output=/home/node/.n8n/export/credentials
    
    # Salin hasil ekspor dari volume ke folder backup host
    docker cp "$(docker compose -f ~/n8n/docker-compose.yml ps -q n8n)":/home/node/.n8n/export "$TUJUAN"
    
    # Hapus backup lokal yang lebih tua dari 14 hari
    find ~/n8n-backup -mindepth 1 -maxdepth 1 -type d -mtime +14 -exec rm -rf {} +

    Jadwalkan lewat crontab -e dengan baris 0 2 * * * /root/n8n/backup.sh agar berjalan setiap pukul 02.00 WIB. Kemudian sinkronkan folder backup ke penyimpanan eksternal menggunakan rclone atau sejenisnya.

  11. Perbarui n8n secara berkala

    Tim n8n merilis pembaruan secara rutin, termasuk perbaikan keamanan. Sebelum update, jalankan backup terlebih dahulu.

    cd ~/n8n
    ./backup.sh
    docker compose pull
    docker compose up -d
    
    # Bersihkan image lama untuk menghemat disk
    docker image prune -f

Tips Menjaga n8n Tetap Ringan di Server Kecil

Konfigurasi di atas sudah cukup untuk sebagian besar kebutuhan. Agar tetap stabil dalam jangka panjang, terapkan kebiasaan berikut saat merancang workflow:

  • Gunakan pagination dan batching. Node Loop Over Items dengan ukuran batch 50 sampai 100 jauh lebih hemat memori daripada memproses 5.000 item sekaligus.
  • Jangan menyimpan file biner di memori. Jika workflow mengolah PDF atau gambar berukuran besar, atur N8N_DEFAULT_BINARY_DATA_MODE=filesystem agar data biner ditulis ke disk NVMe, bukan ke RAM.
  • Hindari polling terlalu sering. Trigger tiap menit pada puluhan workflow akan terus membangunkan proses. Gunakan webhook bila layanan sumber mendukungnya.
  • Pantau pemakaian sumber daya. Perintah docker stats menunjukkan konsumsi CPU dan RAM per container secara langsung. Jika n8n konsisten di atas 80 persen memori, saatnya upgrade paket.
  • Panggil AI lewat API, bukan model lokal. Menjalankan model bahasa lokal seperti lewat Ollama tidak realistis di VPS entry. Node AI di n8n yang memanggil API penyedia model tetap ringan karena pemrosesan berat terjadi di sisi penyedia.

Mengatasi Masalah Umum

Container n8n berulang kali restart atau mati tiba-tiba

Penyebab utama: kehabisan memori (OOM killer). Periksa dengan dmesg | grep -i oom atau docker inspect untuk melihat status OOMKilled.

Solusi: pastikan swap aktif (cek dengan free -h), turunkan nilai --max-old-space-size, dan pecah workflow besar menjadi beberapa batch. Periksa juga apakah ada workflow yang memuat data sangat besar dalam satu eksekusi.

URL webhook menampilkan localhost:5678

Penyebab utama: variabel WEBHOOK_URL tidak terbaca atau keliru.

Solusi: periksa file .env, pastikan WEBHOOK_URL diakhiri garis miring dan memakai https, lalu jalankan ulang dengan docker compose up -d agar container dibuat ulang. Perintah restart saja tidak memuat ulang file environment.

Muncul peringatan secure cookie saat membuka editor

Penyebab utama: Anda mengakses n8n lewat HTTP biasa, sementara n8n secara bawaan mewajibkan cookie aman.

Solusi: akses lewat domain HTTPS melalui Caddy. Jangan mematikan N8N_SECURE_COOKIE di server publik, karena sesi login bisa disadap.

Caddy gagal mendapatkan sertifikat HTTPS

Penyebab utama: DNS belum mengarah ke IP VPS, atau port 80 dan 443 tertutup.

Solusi: verifikasi dengan dig n8n.domainanda.com, pastikan hasilnya IP VPS Anda. Cek log dengan docker compose logs caddy. Jika memakai proxy CDN, nonaktifkan dulu mode proxy sampai sertifikat berhasil terbit.

Jadwal workflow meleset beberapa jam

Penyebab utama: zona waktu masih UTC.

Solusi: pastikan GENERIC_TIMEZONE=Asia/Jakarta di .env, lalu periksa juga pengaturan zona waktu per workflow di menu Settings. Pengaturan per workflow akan menimpa pengaturan global.

Kredensial tidak bisa dibuka setelah migrasi server

Penyebab utama: N8N_ENCRYPTION_KEY di server baru berbeda dengan server lama.

Solusi: gunakan kunci enkripsi yang sama persis. Inilah alasan kunci tersebut wajib disimpan di password manager sejak langkah keempat.

Disk penuh dalam beberapa minggu

Penyebab utama: riwayat eksekusi menumpuk atau image Docker lama tidak dibersihkan.

Solusi: aktifkan pruning seperti di file .env di atas, jalankan docker system df untuk melihat pemakaian, dan bersihkan dengan docker image prune -f. Setelah pruning, file SQLite tidak otomatis mengecil; atur DB_SQLITE_VACUUM_ON_STARTUP=true lalu restart sekali untuk merapikannya.

Penutup: Otomasi Tanpa Kuota, Biaya Setara Segelas Kopi

Dengan Docker, Caddy, swap, dan pruning eksekusi yang terkonfigurasi benar, n8n bisa berjalan stabil di VPS seharga Rp10.000 per bulan. Anda mendapatkan workflow tanpa batas, data yang tetap di server Indonesia, dan kendali penuh atas pembaruan serta backup.

Kuncinya bukan pada besarnya server, melainkan pada disiplin konfigurasi: batasi memori, buang riwayat eksekusi yang tidak perlu, amankan kunci enkripsi, dan backup secara rutin. Ketika kebutuhan Anda bertambah, cukup naikkan paket tanpa mengubah satu baris pun dari konfigurasi di atas.

Siap mencoba? Aktifkan VPS NVMe Jakarta di ContaPoD, bayar dengan QRIS, dan server Anda langsung aktif otomatis sehingga Anda bisa mulai dari langkah pertama panduan ini dalam hitungan menit.

Pesan VPS mulai Rp10.000
Terapkan yang Anda baca langsung di ContaPoD.
Kunjungi ContaPoD β†—