Panduan Setup n8n Self-Hosted di VPS Murah

Verdict Cepat: Menjalankan n8n self-hosted di VPS Linux dengan Docker Compose adalah cara paling hemat dan fleksibel untuk mengotomatisasi workflow bisnis atau scraping tanpa biaya langganan bulanan ratusan dolar. Setup butuh VPS minimal 1 GB RAM, Docker, domain aktif, dan reverse proxy Nginx atau Caddy untuk SSL otomatis.

Automasi workflow menjadi kebutuhan mendasar bagi freelancer, developer, dan pemilik bisnis online yang ingin menghemat waktu kerja harian. Banyak platform no-code komersial mematok biaya tinggi berdasarkan jumlah eksekusi workflow atau task bulanan. Saat volume pekerjaan bertambah, biaya operasional membengkak drastis. n8n hadir sebagai solusi automasi workflow berbasis node visual yang menyediakan lisensi fair-code, memungkinkan implementasi mandiri (self-hosted) di atas server pribadi tanpa batasan kuota task.

Saya menjalankan instance n8n mandiri di server VPS pribadi sejak lama untuk menangani integrasi webhook, notifikasi Telegram bot, hingga pipeline backup database berkala. Dalam artikel ini, saya membagikan panduan teknis langkah demi langkah mengenai cara deploy n8n self-hosted di VPS Linux secara aman, stabil, dan siap produksi.

Rak server pusat data dengan lampu indikator jaringan aktif
Infrastruktur server VPS mandiri untuk menjalankan automasi n8n secara stabil dan mandiri. (Sumber: Unsplash)

Mengapa Memilih n8n Self-Hosted Dibandingkan Cloud

Keputusan menggunakan n8n mandiri dibandingkan layanan automasi SaaS (seperti Zapier, Make, atau n8n Cloud) didasari oleh tiga pertimbangan utama: efisiensi biaya, privasi data, dan kebebasan integrasi.

Layanan cloud proprietary umumnya mengenakan biaya berjenjang per task. Misalnya, workflow pengecekan RSS atau webhook yang berjalan tiap lima menit dapat menghabiskan ribuan task dalam hitungan hari. Dengan self-hosted n8n di server VPS seharga 5 sampai 10 dolar per bulan, eksekusi workflow dapat berjalan ratusan ribu kali tanpa biaya tambahan.

Dari segi keamanan, data sensitif seperti API key, token database, kredensial pembayaran, dan data pelanggan tetap tersimpan di server pribadi, tanpa pernah melewati server pihak ketiga. Selain itu, versi self-hosted mendukung integrasi node khusus (custom nodes), eksekusi script Python atau JavaScript langsung di container, dan koneksi langsung ke database lokal di jaringan internal VPS.

Kebebasan melakukan kustomisasi kode ini memberikan keunggulan kompetitif bagi pengembang. Workflow dapat memanggil library native Linux, mengeksekusi binary command line seperti ffmpeg atau pandoc, serta memproses file berukuran gigabyte langsung di filesystem lokal tanpa terbentur batasan payload HTTP.

Spesifikasi Minimum VPS dan Kebutuhan Sistem

Untuk menjalankan n8n dengan lancar tanpa kendala memori habis (Out of Memory/OOM), berikut adalah spesifikasi server yang disarankan:

  • Sistem Operasi: Ubuntu 22.04 LTS atau Ubuntu 24.04 LTS (64-bit).
  • Processor: Minimal 1 vCPU (2 vCPU disarankan untuk concurrency tinggi).
  • RAM: Minimal 1 GB (2 GB disarankan jika workflow memproses payload JSON besar atau file media).
  • Storage: Minimal 20 GB SSD atau NVMe.
  • Domain / Subdomain: Satu subdomain aktif (misal: n8n.domainanda.com) yang sudah diarahkan DNS A record ke IP public VPS.

Penyedia VPS murah seperti Hetzner, DigitalOcean, Linode, atau Vultr menyediakan server dengan spesifikasi tersebut pada rentang harga 4 sampai 6 dolar per bulan.

Tabel Perbandingan n8n Self-Hosted vs Layanan Cloud

Berikut adalah ringkasan perbandingan parameter operasional antara n8n mandiri dan alternatif berbasis cloud:

Fitur / Parameter n8n Self-Hosted Zapier / Make n8n Cloud
Biaya Dasar Hanya biaya sewa VPS ($4 sampai $10/bln) Mulai $20 sampai $100+/bln Mulai €20/bln
Batas Eksekusi Task Tanpa batas (unlimited) Dibatasi kuota bulanan Dibatasi kuota bulanan
Lokasi & Privasi Data Server pribadi Anda Server vendor pihak ketiga Server vendor n8n
Eksekusi Script Kustom Penuh (Python, JS, CLI tool) Sangat terbatas Terbatas pada sandboxed JS/Python
Pemeliharaan (Maintenance) Dikelola sendiri Dikelola penuh oleh vendor Dikelola penuh oleh vendor

Langkah 1: Persiapan Server VPS dan Konfigurasi Firewall

Masuk ke VPS melalui terminal SSH menggunakan akun root atau user dengan hak akses sudo:

ssh root@IP_VPS_ANDA

Lakukan update paket sistem operasi ke versi terbaru:

sudo apt update && sudo apt upgrade -y

Pasang paket dasar yang diperlukan seperti curl, git, ufw, dan software-properties-common:

sudo apt install -y curl git ufw htop

Konfigurasi firewall UFW untuk mengamankan port server. Buka port 22 (SSH), 80 (HTTP), dan 443 (HTTPS):

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Pastikan port SSH tetap terbuka agar koneksi tidak terputus saat firewall diaktifkan.

Langkah 2: Instalasi Docker dan Docker Compose

Cara paling stabil dan mudah untuk menjalankan n8n adalah menggunakan Docker container resmi. Pasang Docker Engine menggunakan repositori resmi Docker:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl enable --now docker

Verifikasi bahwa Docker dan Docker Compose plugin telah terpasang dengan baik:

docker --version
docker compose version

Buat direktori khusus untuk menyimpan konfigurasi dan volume data persistent n8n:

mkdir -p ~/n8n-docker
cd ~/n8n-docker

Langkah 3: Menyiapkan File docker-compose.yml dan Environment Variables

Di dalam folder ~/n8n-docker, buat file bernama docker-compose.yml. Arsitektur ini menyertakan container n8n beserta Caddy web server sebagai reverse proxy otomatis yang menangani sertifikat SSL Let’s Encrypt secara otomatis.

version: '3.8'

services:
  caddy:
    image: caddy:latest
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./caddy_data:/data
      - ./caddy_config:/config
      - ./Caddyfile:/etc/caddy/Caddyfile
    depends_on:
      - n8n

  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    restart: unless-stopped
    environment:
      - N8N_HOST=n8n.domainanda.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.domainanda.com/
      - GENERIC_TIMEZONE=Asia/Jakarta
      - TZ=Asia/Jakarta
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=168
    volumes:
      - ./n8n_data:/home/node/.n8n

Selanjutnya, buat file konfigurasi Caddyfile di direktori yang sama:

n8n.domainanda.com {
    reverse_proxy n8n:5678
}

Ganti n8n.domainanda.com dengan nama subdomain yang dimiliki. Caddy akan secara otomatis menerbitkan dan memperbarui sertifikat SSL tanpa perlu konfigurasi Certbot manual.

Langkah 4: Menjalankan Container dan Inisialisasi Akun

Jalankan container di latar belakang menggunakan perintah berikut:

docker compose up -d

Periksa status container untuk memastikan semua service berjalan normal:

docker compose ps
docker compose logs -f n8n

Buka browser dan akses URL subdomain (misalnya: https://n8n.domainanda.com). Halaman setup pertama kali akan meminta pembuatan akun admin n8n (Owner Account). Masukkan email dan password yang kuat, lalu simpan kredensial tersebut dengan aman.

Dashboard analitik data dan grafik performa sistem pada monitor komputer
Monitoring alur eksekusi dan integrasi visual data pada dashboard automasi. (Sumber: Unsplash)

Langkah 5: Konfigurasi Keamanan dan Optimasi Kinerja

Ada beberapa konfigurasi penting yang wajib diterapkan untuk menjaga instance n8n tetap cepat dan terhindar dari kebocoran memori:

1. Pruning Data Eksekusi (Execution Data Pruning)

Setiap eksekusi workflow secara default menyimpan log dan payload data di database SQLite bawaan. Jika dibiarkan, ukuran database akan membesar hingga puluhan gigabyte dan memperlambat VPS. Parameter berikut pada environment n8n membersihkan data eksekusi lama secara otomatis:

  • EXECUTIONS_DATA_PRUNE=true: Mengaktifkan pembersihan log otomatis.
  • EXECUTIONS_DATA_MAX_AGE=168: Menghapus log eksekusi yang lebih tua dari 168 jam (7 hari).

2. Konfigurasi Swap Memory di VPS

Jika VPS hanya memiliki 1 GB RAM, buat 2 GB Swap file untuk mencegah container n8n crash saat terjadi lonjakan traffic webhook:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

3. Backup Rutin Direktori Data

Semua workflow, kredensial terenkripsi, dan setting disimpan dalam folder ./n8n_data. Lakukan backup berkala folder tersebut ke cloud storage atau server lain menggunakan cron job:

tar -czf ~/backup-n8n-$(date +%F).tar.gz ~/n8n-docker/n8n_data

Strategi Migrasi dari SQLite ke PostgreSQL

Untuk penggunaan berskala produksi dengan ribuan workflow harian, database SQLite bawaan n8n memiliki keterbatasan konkurensi (database locking). Saya menyarankan peningkatan ke PostgreSQL jika tim menjalankan proses batch paralel intensif.

Tambahkan service PostgreSQL pada file docker-compose.yml:

  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=password_rahasia_db
      - POSTGRES_DB=n8n_db
    volumes:
      - ./postgres_data:/var/lib/postgresql/data

Lalu arahkan environment n8n ke database tersebut:

      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5422
      - DB_POSTGRESDB_DATABASE=n8n_db
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=password_rahasia_db

Langkah ini memastikan stabilitas data terjaga saat memproses transaksi data simultan dengan throughput tinggi.

Kesalahan Umum yang Sering Terjadi (Common Mistakes)

Berdasarkan pengalaman mengelola instance automasi Linux, berikut adalah beberapa kendala yang kerap dialami pemula beserta solusinya:

  • Lupa Menetapkan WEBHOOK_URL: Jika environment WEBHOOK_URL tidak diatur ke domain HTTPS lengkap, webhook n8n akan menghasilkan URL internal (seperti localhost:5678) yang tidak bisa diakses oleh layanan eksternal seperti Stripe, GitHub, atau Telegram.
  • Masalah Permission Folder Data: Container n8n berjalan di bawah user ID non-root (UID 1000). Jika folder n8n_data dibuat oleh root dan tidak memiliki izin tulis, n8n akan gagal start dengan error EACCES: permission denied. Jalankan sudo chown -R 1000:1000 ./n8n_data untuk memperbaikinya.
  • Membiarkan Log Eksekusi Sukses Menumpuk: Pada workflow yang berjalan tiap menit, matikan opsi Save successful production executions pada menu Workflow Settings agar database tidak terbebani data yang tidak diperlukan.
  • Tidak Mengamankan Port Internal: Jangan membuka port 5678 langsung di firewall publik. Selalu lewatkan traffic melalui reverse proxy port 80/443 dengan enkripsi TLS.

Panduan Workflow dan Ekosistem Terkait

Untuk melengkapi pipeline otomatisasi digital Anda, pelajari juga referensi arsitektur teknis lainnya di Grafisify:

Kesimpulan

Deploy n8n self-hosted di VPS murah memberikan kontrol penuh terhadap ekosistem automasi data tanpa terikat batasan biaya platform komersial. Kombinasi Docker Compose dan reverse proxy Caddy memungkinkan proses instalasi selesai dalam hitungan menit dengan dukungan SSL otomatis. Dengan menerapkan pruning data eksekusi dan alokasi swap memory yang tepat, VPS berbiaya rendah sekalipun mampu melayani ratusan workflow produktivitas secara stabil dan handal untuk jangka panjang.

Leave a Reply

You might