Semua Panduan VPSHosting & cPanelTutorial LinuxDocker & DeployWordPressDomain & DNSKeamanan ServerVPS Windows & Forex
VPSHosting.ID›Install n8n di VPS dengan Docker: Panduan Otomas
Docker & Deploy

Install n8n di VPS dengan Docker: Panduan Otomasi Bisnis 2026

✍️ Bagus Santoso 📅 5 November 2026 ⏱️ 7 mnt baca 👁️ 3×
Install n8n di VPS dengan Docker: Panduan Otomasi Bisnis 2026

Menjalankan n8n di VPS itu mudah. Mempertahankannya tetap hidup, aman, dan tidak kehilangan data setelah tiga bulan, itulah yang jarang berhasil. Sebagian besar kegagalan bukan karena n8n-nya rusak, melainkan karena kesalahan kecil di awal: data tidak disimpan di volume, kunci enkripsi hilang, webhook tidak bisa diakses, atau port dibuka telanjang tanpa HTTPS.

Artikel ini mengajak Anda menginstal n8n dengan Docker Compose, sambil menandai setiap jebakan yang biasa menjebak pemula. Hasil akhirnya: n8n berjalan di domain Anda sendiri, memakai HTTPS, datanya persisten, dan siap dipakai untuk mengotomasi pesanan, notifikasi, rekap laporan, sampai bot WhatsApp atau Telegram tanpa menulis kode.

Mengapa n8n di VPS, bukan di laptop atau layanan cloud bawaan?

Otomasi bisnis harus berjalan 24 jam. Jika n8n ada di laptop, workflow berhenti saat laptop tidur. Layanan cloud resmi praktis, tetapi biaya biasanya mengikuti jumlah eksekusi, sehingga makin ramai bisnis Anda, makin mahal tagihannya. Dengan self-hosting di VPS, Anda mengontrol batas eksekusi, data, dan integrasi.

Bayangkan toko online dengan 300 pesanan per hari. Setiap pesanan memicu empat langkah: catat ke spreadsheet, kirim notifikasi ke pembeli, kabari tim gudang, dan perbarui stok. Itu sekitar 1.200 eksekusi per hari. Di VPS, angka ini sekadar beban ringan.

Prasyarat sebelum mulai

  • Satu VPS Linux (Ubuntu 22.04 atau 24.04 direkomendasikan) dengan akses root atau pengguna sudo. Untuk lingkungan yang sudah siap pakai, lihat opsi vps docker kami; detail paket ada di vpshosting.id/harga.
  • Satu domain atau subdomain, misalnya otomasi.contohbisnis.id, dengan akses ke pengaturan DNS.
  • Klien SSH: Terminal bawaan di macOS/Linux, atau PowerShell dan PuTTY di Windows.
  • RAM minimal 2 GB agar nyaman; n8n sendiri ringan, tetapi workflow dengan banyak data akan membutuhkan ruang napas.
  • Alamat email aktif untuk pendaftaran sertifikat HTTPS.

Langkah-langkah instalasi

  1. Arahkan domain ke VPS

    Masuk ke pengelola DNS domain Anda dan buat A record untuk subdomain (misalnya otomasi) yang menunjuk ke alamat IP publik VPS. Lakukan ini paling awal karena propagasi DNS kadang memakan waktu beberapa menit hingga satu jam.

    Cek hasilnya dengan perintah berikut dari komputer Anda:

    nslookup otomasi.contohbisnis.id

    Jika IP yang muncul sudah sesuai, lanjut.

  2. Masuk ke VPS lewat SSH dan perbarui sistem

    Hubungkan ke server, lalu perbarui paket:

    ssh root@IP_VPS_ANDA
    apt update && apt upgrade -y

    Disarankan membuat pengguna non-root untuk operasional harian agar risiko salah ketik berkurang:

    adduser deploy
    usermod -aG sudo deploy
  3. Pasang Docker dan Docker Compose

    Gunakan skrip resmi Docker agar mendapat versi stabil terbaru:

    curl -fsSL https://get.docker.com | sh
    usermod -aG docker deploy
    docker --version
    docker compose version

    Keluar lalu masuk lagi sebagai pengguna deploy supaya hak akses grup Docker aktif. Jika Anda memakai template VPS yang sudah menyertakan Docker, langkah ini bisa dilewati.

  4. Siapkan firewall

    Buka hanya port yang diperlukan: SSH, HTTP, dan HTTPS. Port 5678 milik n8n tidak perlu dibuka ke publik karena akan diakses lewat reverse proxy.

    sudo ufw allow OpenSSH
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable

    Ini kesalahan klasik pertama: membuka 5678 langsung ke internet tanpa enkripsi, sehingga kredensial login terkirim polos.

  5. Buat folder proyek dan berkas environment

    Pisahkan konfigurasi dari kompose agar rapi dan mudah dicadangkan.

    mkdir -p ~/n8n && cd ~/n8n
    nano .env

    Isi berkas .env:

    DOMAIN=contohbisnis.id
    SUBDOMAIN=otomasi
    GENERIC_TIMEZONE=Asia/Jakarta
    [email protected]
    N8N_ENCRYPTION_KEY=ISI_DENGAN_STRING_ACAK_PANJANG

    Buat kunci acak dengan openssl rand -hex 32. Simpan kunci ini di password manager. Kunci inilah yang mengenkripsi kredensial integrasi Anda (API key, token, password). Jika hilang saat Anda memindahkan server, semua kredensial di workflow tidak bisa dibaca lagi.

  6. Tulis docker-compose.yml dengan Traefik dan n8n

    Traefik berfungsi sebagai reverse proxy sekaligus mengurus sertifikat HTTPS Let's Encrypt secara otomatis. Buat berkas docker-compose.yml:

    services:
      traefik:
        image: traefik:v3.1
        restart: always
        command:
          - "--providers.docker=true"
          - "--providers.docker.exposedbydefault=false"
          - "--entrypoints.web.address=:80"
          - "--entrypoints.websecure.address=:443"
          - "--entrypoints.web.http.redirections.entrypoint.to=websecure"
          - "--certificatesresolvers.le.acme.tlschallenge=true"
          - "--certificatesresolvers.le.acme.email=${SSL_EMAIL}"
          - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - traefik_data:/letsencrypt
          - /var/run/docker.sock:/var/run/docker.sock:ro
    
      n8n:
        image: docker.n8n.io/n8nio/n8n:latest
        restart: always
        environment:
          - N8N_HOST=${SUBDOMAIN}.${DOMAIN}
          - N8N_PROTOCOL=https
          - N8N_PORT=5678
          - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN}/
          - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
          - TZ=${GENERIC_TIMEZONE}
          - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
          - N8N_PROXY_HOPS=1
        labels:
          - traefik.enable=true
          - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)
          - traefik.http.routers.n8n.entrypoints=websecure
          - traefik.http.routers.n8n.tls.certresolver=le
          - traefik.http.services.n8n.loadbalancer.server.port=5678
        volumes:
          - n8n_data:/home/node/.n8n
    
    volumes:
      traefik_data:
      n8n_data:

    Perhatikan dua hal. Pertama, volume n8n_data menyimpan workflow dan kredensial; tanpanya, menghapus kontainer berarti menghapus segalanya. Kedua, WEBHOOK_URL wajib benar, kalau tidak, URL webhook yang tampil di editor akan berisi alamat lokal yang tidak bisa dipanggil layanan luar.

  7. Jalankan dan verifikasi

    docker compose up -d
    docker compose ps
    docker compose logs -f n8n

    Tunggu hingga log menampilkan bahwa n8n siap menerima koneksi. Buka https://otomasi.contohbisnis.id di browser, lalu buat akun pemilik (owner) dengan password kuat. Gembok HTTPS harus muncul; jika belum, tunggu satu-dua menit karena sertifikat sedang diterbitkan.

  8. Bangun workflow pertama tanpa coding

    Coba skenario sederhana yang langsung terasa manfaatnya: formulir pemesanan masuk, lalu data tersimpan, lalu pemberitahuan terkirim.

    • Tambahkan node Webhook sebagai pemicu dan salin URL produksinya.
    • Sambungkan node Google Sheets untuk menambah baris pesanan.
    • Tambahkan node Telegram untuk mengirim ringkasan pesanan ke grup tim.
    • Aktifkan workflow dengan tombol Active, lalu uji dari formulir sungguhan.

    Seluruh proses ini dikerjakan lewat antarmuka drag-and-drop. Tidak ada satu baris kode pun yang perlu Anda tulis.

  9. Atur backup otomatis

    Cadangkan volume data secara berkala. Contoh skrip sederhana:

    #!/bin/bash
    # Cadangkan volume n8n ke berkas tar bertanggal
    DATE=$(date +%F)
    docker run --rm \
      -v n8n_n8n_data:/data \
      -v $HOME/backup:/backup \
      alpine tar czf /backup/n8n-$DATE.tar.gz -C /data .
    # Hapus cadangan lebih dari 14 hari
    find $HOME/backup -name 'n8n-*.tar.gz' -mtime +14 -delete

    Jadwalkan lewat crontab -e, misalnya setiap pukul 02.00. Nama volume sebenarnya bergantung pada nama folder proyek; cek dengan docker volume ls. Salin hasil cadangan ke lokasi lain, karena backup yang tersimpan di server yang sama tidak menyelamatkan Anda ketika server bermasalah.

Poin Penting: Tiga hal yang menentukan apakah n8n Anda awet atau tidak: volume data yang persisten, N8N_ENCRYPTION_KEY yang disimpan terpisah, dan backup yang disalin ke luar server.

Kesalahan umum dan cara menghindarinya

KesalahanDampakPencegahan
Tidak memakai volumeWorkflow hilang saat kontainer dibuat ulangSelalu petakan /home/node/.n8n ke volume
Kunci enkripsi tidak disimpanKredensial tidak terbaca setelah migrasiTetapkan sendiri dan simpan di password manager
Port 5678 terbuka tanpa HTTPSLogin rentan disadapGunakan reverse proxy dan tutup port langsung
WEBHOOK_URL salahWebhook tidak bisa dipanggil layanan luarIsi dengan domain publik berskema https
Selalu memakai tag latest tanpa ujiPembaruan otomatis bisa mengubah perilakuKunci ke versi tertentu pada bisnis kritis

Memperbarui n8n dengan aman

Sebelum memperbarui, jalankan backup. Setelah itu:

cd ~/n8n
docker compose pull
docker compose up -d
docker image prune -f

Baca catatan rilis lebih dulu bila Anda memakai node yang kritis. Pembaruan mayor sesekali mengubah perilaku node tertentu, dan lebih baik Anda mengetahuinya sebelum pelanggan merasakannya.

Mengatasi Masalah Umum

Sertifikat HTTPS tidak terbit

Penyebab paling sering: DNS belum menunjuk ke IP VPS, atau port 80 dan 443 tertutup. Periksa dengan nslookup dan sudo ufw status, lalu lihat log Traefik lewat docker compose logs traefik. Jangan mengulang percobaan puluhan kali dalam waktu singkat karena penerbit sertifikat membatasi jumlah percobaan gagal.

Muncul error 502 atau 404 dari Traefik

Biasanya label router salah ketik atau n8n belum selesai menyala. Pastikan aturan Host(...) sama persis dengan domain Anda dan port layanan bernilai 5678. Jalankan docker compose ps untuk memastikan kontainer n8n berstatus running.

Webhook menampilkan URL localhost

Variabel WEBHOOK_URL belum diisi atau tidak sesuai. Perbaiki di berkas compose, lalu jalankan docker compose up -d lagi agar kontainer dibuat ulang dengan konfigurasi baru.

Waktu jadwal meleset beberapa jam

Zona waktu belum diatur. Pastikan GENERIC_TIMEZONE dan TZ bernilai Asia/Jakarta, lalu periksa juga pengaturan zona waktu pada workflow itu sendiri.

Kredensial error setelah pindah server

Kunci enkripsi di server baru berbeda dengan yang lama. Pasang kembali N8N_ENCRYPTION_KEY yang asli sebelum memulihkan data. Inilah alasan kunci itu wajib disimpan terpisah.

Server melambat atau kontainer mati sendiri

Cek memori dengan free -h dan docker stats. Workflow yang memproses ribuan item sekaligus bisa menghabiskan RAM. Pecah data menjadi batch kecil dengan node Split In Batches, atau naikkan kapasitas VPS dari panel my.vpshosting.id ketika beban memang sudah bertumbuh.

Langkah selanjutnya

Setelah n8n stabil, pikirkan pengamanan lapis berikutnya: aktifkan login SSH berbasis kunci, nonaktifkan login root, dan pasang fail2ban. Setelah itu, mulailah dari satu otomasi yang paling memakan waktu tim Anda minggu ini, misalnya rekap penjualan harian atau balasan otomatis untuk pertanyaan yang berulang. Satu workflow yang berjalan mulus lebih berharga daripada sepuluh workflow yang setengah jadi.

Jika Anda ingin lingkungan yang sudah siap untuk kontainer, server di Jakarta membantu menjaga latensi webhook tetap rendah bagi pengguna Indonesia. Bandingkan pilihan yang sesuai kebutuhan di vpshosting.id/harga, atau kelola layanan Anda langsung dari my.vpshosting.id.

Lihat paket VPS
Terapkan yang Anda baca langsung di VPSHosting.ID.
Kunjungi VPSHosting.ID ↗