• Teknologi

Cara Menghosting n8n Sendiri di VPS Linux (Langkah demi Langkah)

  • Felix Rose-Collins
  • ••
  • 13 min read

Pendahuluan

n8n adalah salah satu alat otomatisasi alur kerja dengan kode sumber terbuka yang paling kuat yang tersedia saat ini. Berbeda dengan alternatif SaaS seperti Zapier atau Make, n8n memberi Anda kendali penuh atas data dan otomatisasi Anda — namun hal ini hanya berlaku jika Anda menghostingnya sendiri. VPS Linux adalah lingkungan yang ideal untuk ini: selalu aktif, terjangkau, dan sepenuhnya berada di bawah kendali Anda.

Panduan ini akan memandu Anda melalui proses lengkap dalam menyiapkan instance n8n yang siap produksi dan dihosting sendiri di VPS Linux. Anda akan memulai dari server kosong hingga menjadi deployment n8n yang sepenuhnya aman dan mendukung SSL, lengkap dengan Docker, Nginx, PostgreSQL, pencadangan otomatis, serta konfigurasi keamanan yang diperkuat.

Poin-Poin Penting

  • n8n di VPS memberi Anda alur kerja tanpa batas, tanpa batasan penggunaan, dan kepemilikan data penuh
  • Docker adalah metode instalasi yang direkomendasikan untuk pembaruan yang lebih mudah dan isolasi
  • PostgreSQL adalah database yang direkomendasikan untuk beban kerja produksi (bukan SQLite)
  • Proksi terbalik (Nginx) dengan SSL Let’s Encrypt diperlukan untuk penggunaan produksi
  • VPS Anda harus memiliki setidaknya 1 vCPU dan 2 GB RAM untuk pengalaman n8n yang lancar dengan PostgreSQL
  • Pencadangan otomatis rutin melindungi data alur kerja dan kredensial Anda

Apa itu n8n?

n8n (diucapkan “n-eight-n”) adalah platform otomatisasi alur kerja dengan kode sumber terbuka yang memungkinkan Anda menghubungkan aplikasi, API, dan layanan menggunakan editor visual berbasis node. Platform ini mendukung lebih dari 400 integrasi secara langsung dan memungkinkan Anda menjalankan kode JavaScript atau Python kustom di dalam alur kerja.

Perbedaan utama antara n8n dan pesaingnya terletak pada tiga hal: kepemilikan, biaya, dan fleksibilitas.

**Kepemilikan: **Saat Anda menghosting n8n sendiri, data alur kerja, kredensial, dan log eksekusi Anda tidak pernah meninggalkan server Anda. Bagi tim yang menangani data pelanggan sensitif, catatan keuangan, atau logika bisnis eksklusif, hal ini sangat penting. Platform cloud menyimpan logika otomatisasi Anda di infrastruktur mereka, yang tunduk pada kebijakan retensi data dan postur keamanan mereka.

**Biaya: **Paket cloud n8n mengenakan biaya per eksekusi alur kerja, yang dapat bertambah dengan cepat untuk otomatisasi bervolume tinggi. Tim berukuran menengah yang menjalankan ribuan eksekusi per hari dapat menghabiskan ratusan dolar setiap bulan. Di VPS Anda sendiri, setelah membayar biaya server, eksekusi tidak terbatas tanpa biaya tambahan.

**Fleksibilitas: **n8n yang dihosting sendiri memungkinkan Anda menginstal node komunitas, menjalankan kode apa pun di dalam alur kerja, terhubung ke layanan internal yang tidak dapat diakses dari internet publik, dan mengonfigurasi setiap aspek penerapan sesuai keinginan Anda. Paket cloud membatasi banyak dari kemampuan ini.

Prasyarat

Sebelum memulai, pastikan Anda memiliki:

  • VPS Linux yang menjalankan Ubuntu 22.04 atau 24.04 (disarankan). Pastikan penyedia layanan Anda menawarkan Ubuntu pada paket yang Anda pilih, karena beberapa paket tingkat pemula hanya menawarkan distribusi lain
  • Pengguna non-root dengan hak akses sudo
  • Nama domain yang diarahkan ke alamat IP VPS Anda (misalnya, n8n.yourdomain.com)
  • Akses SSH ke server Anda
  • Pengetahuan dasar tentang baris perintah Linux

Memilih VPS yang Tepat

Server yang Anda pilih berdampak langsung pada kinerja n8n. Minimal, Anda memerlukan 1 vCPU, 2 GB RAM, dan 20 GB penyimpanan SSD. RAM tambahan ini diperlukan dibandingkan dengan instalasi minimal berbasis SQLite karena PostgreSQL, Nginx, dan n8n semuanya berjalan secara bersamaan.

Perkenalkan Ranktracker

Platform Lengkap untuk SEO yang Efektif

Di balik setiap bisnis yang sukses adalah kampanye SEO yang kuat. Namun dengan banyaknya alat dan teknik pengoptimalan yang dapat dipilih, mungkin sulit untuk mengetahui dari mana harus memulai. Nah, jangan takut lagi, karena saya punya hal yang tepat untuk membantu. Menghadirkan platform lengkap Ranktracker untuk SEO yang efektif

Kami akhirnya membuka pendaftaran ke Ranktracker secara gratis!

Buat akun gratis

Atau Masuk menggunakan kredensial Anda

Untuk tim dengan banyak pengguna, alur kerja multi-langkah yang kompleks, atau throughput webhook yang tinggi, tingkatkan ke 2 vCPU dan 4 GB RAM. Penyimpanan harus minimal 40 GB jika Anda berencana menyimpan log eksekusi yang panjang.

PetroSky menawarkan paket VPS NVMe di Paris dan Montreal, dengan n8n tersedia sebagai aplikasi satu klik saat checkout: skrip instalasi open-source akan menginstal n8n menggunakan Docker Compose dan secara otomatis mengonfigurasi HTTPS melalui Caddy dan Let’s Encrypt. Panduan ini membahas cara manual, yang dapat diterapkan pada penyedia mana pun.

Saat memilih penyedia VPS, pertimbangkan juga lokasi geografisnya. Hosting instance n8n Anda di wilayah yang paling dekat dengan layanan yang paling sering diakses — hal ini mengurangi latensi API dalam eksekusi alur kerja Anda.

Langkah 1: Perbarui Server Anda

Masuk ke VPS Anda melalui SSH dan jalankan pembaruan sistem lengkap sebelum menginstal apa pun:

    sudo apt update && sudo apt upgrade -y

Ini memastikan Anda memiliki patch keamanan terbaru dan bahwa semua pustaka sistem sudah mutakhir sebelum menambahkan Docker dan perangkat lunak lainnya.

Lakukan reboot jika pembaruan kernel telah diterapkan:

    sudo reboot

Setelah terhubung kembali melalui SSH, buat pengguna sistem khusus untuk menjalankan n8n. Menjalankan layanan sebagai root berisiko terhadap keamanan:

    sudo adduser n8nuser
    sudo usermod -aG sudo n8nuser
    su - n8nuser

Langkah 2: Instal Docker dan Docker Compose

Metode instalasi yang direkomendasikan secara resmi oleh n8n adalah Docker. Docker mengisolasi n8n dan dependensinya dari bagian sistem lainnya, sehingga pembaruan dan pengembalian ke versi sebelumnya menjadi lebih mudah.

Instal Docker menggunakan skrip resmi yang praktis:

    curl -fsSL https://get.docker.com | sudo sh

Dokumentasi Docker menyebutkan bahwa skrip praktis ini tidak direkomendasikan untuk lingkungan produksi, karena skrip ini menginstal rilis terbaru tanpa memungkinkan Anda memilih versi. Jika Anda ingin mengunci versi Docker, gunakan metode repositori apt dari panduan instalasi Docker untuk Ubuntu (docs.docker.com/engine/install/ubuntu/) sebagai gantinya.

Tambahkan pengguna Anda ke grup Docker agar Anda dapat menjalankan perintah Docker tanpa perlu menggunakan sudo:

    sudo usermod -aG docker $USER
    newgrp docker

Pastikan Docker berjalan dengan benar:

    docker --version
    docker compose version

Kedua perintah tersebut seharusnya menampilkan string versi tanpa kesalahan. Jika Docker Compose tidak ditemukan, instal secara manual:

    sudo apt install docker-compose-plugin -y

Langkah 3: Siapkan PostgreSQL untuk Produksi

Secara default, n8n menggunakan SQLite sebagai basis datanya. SQLite memang cocok untuk penggunaan pribadi dan alur kerja yang ringan, tetapi SQLite kurang baik dalam menangani penulisan secara bersamaan, yang akan terlihat dari perlambatan dan kesalahan “database terkunci” saat banyak alur kerja berjalan pada saat yang bersamaan. Untuk penerapan produksi, PostgreSQL adalah pilihan yang tepat.

Perkenalkan Ranktracker

Platform Lengkap untuk SEO yang Efektif

Di balik setiap bisnis yang sukses adalah kampanye SEO yang kuat. Namun dengan banyaknya alat dan teknik pengoptimalan yang dapat dipilih, mungkin sulit untuk mengetahui dari mana harus memulai. Nah, jangan takut lagi, karena saya punya hal yang tepat untuk membantu. Menghadirkan platform lengkap Ranktracker untuk SEO yang efektif

Kami akhirnya membuka pendaftaran ke Ranktracker secara gratis!

Buat akun gratis

Atau Masuk menggunakan kredensial Anda

Jalankan PostgreSQL di dalam Docker bersama n8n:

    mkdir ~/n8n && cd ~/n8n

Buat berkas lingkungan untuk menyimpan rahasia Anda dengan aman. Jangan pernah menuliskan kata sandi secara langsung di berkas compose Anda:

    nano ~/n8n/.env

Tambahkan baris berikut, ganti nilai tempatholder dengan kata sandi yang kuat dan unik:

    POSTGRES_USER=n8n
    POSTGRES_PASSWORD=kata_sandi_db_kuat_Anda_di_sini
    POSTGRES_DB=n8n
    N8N_ENCRYPTION_KEY=string_acak_32_karakter_Anda_di_sini

Buat kunci enkripsi yang aman dengan perintah berikut:

    openssl rand -hex 16

Gunakan hasilnya sebagai N8N_ENCRYPTION_KEY Anda. Kunci ini mengenkripsi kredensial yang disimpan di n8n — jika Anda kehilangannya, semua kredensial yang tersimpan tidak akan dapat dipulihkan.

Langkah 4: Buat berkas Docker Compose n8n

Buat berkas docker-compose.yml di direktori n8n Anda:

    nano ~/n8n/docker-compose.yml

Tempelkan konfigurasi berikut:


services:
  postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 10


  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_HOST=n8n.yourdomain.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.yourdomain.com/
      - GENERIC_TIMEZONE=Europe/London
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - EXECUTIONS_MODE=regular
      - N8N_LOG_LEVEL=info
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy


volumes:
  postgres_data:
  n8n_data:

Catatan konfigurasi:

  • Pengikatan port 127.0.0.1:5678:5678 memastikan n8n hanya dapat diakses secara lokal. Nginx akan menangani semua lalu lintas eksternal — jangan pernah mengekspos port 5678 secara langsung ke internet.
  • penggunaan `depends_on` dengan kondisi `service_healthy` memastikan n8n menunggu hingga PostgreSQL benar-benar siap sebelum dimulai. Tanpa ini, n8n akan gagal pada booting pertama jika database belum menerima koneksi.
  • N8N_LOG_LEVEL=info memberikan log operasional yang berguna tanpa membanjiri ruang penyimpanan disk seperti yang dilakukan oleh debug.

Langkah 5: Instal dan Konfigurasi Nginx

Nginx akan bertindak sebagai proxy terbalik, meneruskan lalu lintas HTTPS dari port 443 ke kontainer n8n Anda di port 5678. Nginx juga menangani penghentian SSL, yang berarti n8n sendiri tidak perlu mengelola sertifikat.

    sudo apt install nginx -y

Hapus situs default dan buat blok server baru untuk n8n:

    sudo rm /etc/nginx/sites-enabled/default
    sudo nano /etc/nginx/sites-available/n8n

Tempelkan yang berikut ini:

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
server {
    listen 80;
    server_name n8n.yourdomain.com;


    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        chunked_transfer_encoding on;
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 90s;
        client_max_body_size 50m;
    }
}

Blok map di bagian atas menangani header peningkatan WebSocket dengan benar. n8n menggunakan WebSockets untuk pembaruan real-time di editor, sehingga konfigurasi ini penting — tanpa konfigurasi ini, editor visual tidak akan berfungsi dengan benar.

Direktif client_max_body_size 50m memungkinkan alur kerja menerima muatan webhook berukuran besar. Batas default Nginx adalah 1 MB, yang terlalu kecil untuk alur kerja yang memproses unggahan file atau respons JSON berukuran besar.

Aktifkan konfigurasi dan uji:

    sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx

Langkah 6: Terbitkan Sertifikat SSL dengan Let’s Encrypt

Instal Certbot dan plugin Nginx:

    sudo apt install certbot python3-certbot-nginx -y

Ajukan permohonan sertifikat untuk domain Anda:

    sudo certbot --nginx -d n8n.yourdomain.com

Ikuti petunjuk yang muncul. Saat ditanya apakah ingin mengalihkan lalu lintas HTTP ke HTTPS, pilih Ya (opsi 2). Certbot akan secara otomatis memperbarui konfigurasi Nginx Anda untuk menangani pengalihan ini dan menginstal rantai sertifikat lengkap.

Pastikan pengaturan perpanjangan otomatis sudah benar:

    sudo certbot renew --dry-run

Certbot memasang pengatur waktu systemd yang memperbarui sertifikat secara otomatis setiap 12 jam. Sertifikat diperbarui ketika masa berlakunya tinggal 30 hari lagi. Anda tidak perlu memperbaruinya secara manual.

Langkah 7: Jalankan n8n

Kembali ke direktori n8n Anda dan jalankan semua layanan:

    cd ~/n8n
    docker compose up -d

Docker akan mengunduh gambar PostgreSQL dan n8n, membuat volume, menjalankan PostgreSQL terlebih dahulu, menunggu hingga pemeriksaan kesehatan berhasil, lalu menjalankan n8n. Proses ini memakan waktu 1–3 menit pada eksekusi pertama.

Pastikan kedua kontainer sedang berjalan:

    docker compose ps

Anda seharusnya melihat postgres dan n8n terdaftar dengan status Up. Jika n8n menunjukkan Restarting, periksa lognya:

    docker compose logs n8n --tail=50

Setelah kedua kontainer dalam kondisi baik, buka browser Anda dan buka https://n8n.yourdomain.com. Anda akan diminta untuk membuat akun pemilik dengan alamat email dan kata sandi. Akun ini memiliki akses admin penuh ke instance n8n Anda.

Langkah 8: Konfigurasikan n8n agar Dimulai Saat Boot

Perintah `restart: always` dalam berkas `docker-compose.yml` memastikan semua kontainer akan dimulai ulang secara otomatis jika terjadi kegagalan atau saat server di-reboot.

Verifikasi hal ini dengan me-reboot server Anda:

    sudo reboot

Setelah terhubung kembali melalui SSH, periksa apakah n8n telah berjalan kembali secara otomatis:

    docker compose -f ~/n8n/docker-compose.yml ps

Kedua kontainer seharusnya terlihat sedang berjalan tanpa perlu intervensi manual.

Langkah 9: Atur Pencadangan Otomatis

Data n8n Anda — alur kerja, kredensial, dan riwayat eksekusi — tersimpan di dua tempat: basis data PostgreSQL dan volume Docker n8n_data (yang menyimpan kunci enkripsi dan beberapa konfigurasi). Cadangkan keduanya secara teratur.

Buat skrip cadangan:

    nano ~/n8n/backup.sh

Tempelkan yang berikut ini:

    #!/bin/bash
    BACKUP_DIR="/home/n8nuser/backups"
    DATE=$(date +%Y-%m-%d_%H-%M)
    LOG_FILE="$BACKUP_DIR/backup.log"
# Pastikan direktori cadangan sudah ada sebelum melakukan hal lain
mkdir -p "$BACKUP_DIR"


# Buat cadangan PostgreSQL
DUMP_FILE="$BACKUP_DIR/n8n_db_$DATE.sql"
docker compose -f /home/n8nuser/n8n/docker-compose.yml exec -T postgres \
  pg_dump -U n8n n8n > "$DUMP_FILE"


# Memverifikasi bahwa proses dump berhasil dan berkas tidak kosong
if [ $? -ne 0 ] || [ ! -s "$DUMP_FILE" ]; then
    echo "ERROR: Pencadangan basis data gagal pada $DATE" >> "$LOG_FILE"
    rm -f "$DUMP_FILE"
    exit 1
fi


# Cadangkan kunci enkripsi dan variabel lingkungan
cp /home/n8nuser/n8n/.env "$BACKUP_DIR/n8n_env_$DATE.bak"
# Cadangkan volume n8n_data (konfigurasi instance dan node komunitas yang terinstal)
docker run --rm -v n8n_n8n_data:/data -v "$BACKUP_DIR":/backup alpine \
  tar czf /backup/n8n_data_$DATE.tar.gz -C /data .


# Kompres dump basis data
gzip "$DUMP_FILE"


# Simpan hanya cadangan dari 7 hari terakhir
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
find "$BACKUP_DIR" -name "*.bak" -mtime +7 -delete
find "$BACKUP_DIR" -name "n8n_data_*.tar.gz" -mtime +7 -delete


echo "Cadangan selesai: n8n_db_$DATE.sql.gz" >> "$LOG_FILE"

Nama volume n8n_n8n_data berasal dari Docker Compose yang menambahkan awalan nama folder proyek (n8n) pada volume tersebut. Pastikan nama volume Anda dengan perintah docker volume ls.

Jadikan skrip tersebut dapat dieksekusi dan jadwalkan dengan cron:

    chmod +x ~/n8n/backup.sh
    crontab -e

Tambahkan baris ini untuk menjalankan pencadangan setiap hari pukul 02.00:

    0 2 * * * /home/n8nuser/n8n/backup.sh >> /home/n8nuser/backups/backup.log 2>&1

Untuk redundansi di luar lokasi, pertimbangkan untuk menyinkronkan direktori cadangan Anda ke penyedia penyimpanan objek yang kompatibel dengan S3 menggunakan rclone atau aws s3 sync.

Langkah 10: Aktifkan Penguatan Keamanan Dasar

Siapkan Firewall

Instal UFW dan izinkan hanya port yang dibutuhkan server Anda:

    sudo ufw allow OpenSSH
    sudo ufw allow 'Nginx Full'
    sudo ufw enable

Pastikan aturan tersebut aktif:

    sudo ufw status verbose

Anda seharusnya melihat port 22 (SSH), 80 (HTTP), dan 443 (HTTPS) diizinkan. Satu hal yang perlu diperhatikan: Docker menulis aturan firewall-nya sendiri dan melewati UFW untuk port kontainer yang dipublikasikan. Port 5678 tetap privat karena file compose mengikatnya ke 127.0.0.1, bukan karena UFW, jadi jangan pernah mengubah pengikatan tersebut menjadi 0.0.0.0.

Nonaktifkan Otentikasi Kata Sandi untuk SSH

Jika Anda menggunakan kunci SSH (yang seharusnya Anda lakukan), nonaktifkan sepenuhnya login SSH berbasis kata sandi. Pertama, pastikan akun `n8nuser` dapat masuk menggunakan kunci Anda. Dari mesin lokal Anda, jalankan:

    ssh-copy-id n8nuser@alamat_IP_server_Anda

Kemudian edit konfigurasi server SSH:

    sudo nano /etc/ssh/sshd_config

Tetapkan nilai-nilai berikut:

    PasswordAuthentication no
    PermitRootLogin no
    sudo systemctl restart ssh

Pada banyak gambar cloud Ubuntu, sebuah berkas di /etc/ssh/sshd_config.d/ (seringkali 50-cloud-init.conf) menetapkan PasswordAuthentication yes, dan pengaturan ini yang berlaku karena sshd menggunakan nilai pertama yang dibacanya. Periksa pengaturan yang sebenarnya berlaku:

    sudo sshd -T | grep -i passwordauthentication

Hasilnya seharusnya menampilkan "passwordauthentication no". Jika tidak, ubah nilai di berkas override tersebut dan mulai ulang SSH lagi.

Jangan tutup sesi SSH Anda saat ini sampai Anda telah memverifikasi bahwa login berbasis kunci berfungsi di jendela terminal baru.

Batasi Kecepatan Halaman Login n8n

Tambahkan pembatasan laju untuk memperlambat serangan brute-force terhadap titik akhir login n8n.

Perkenalkan Ranktracker

Platform Lengkap untuk SEO yang Efektif

Di balik setiap bisnis yang sukses adalah kampanye SEO yang kuat. Namun dengan banyaknya alat dan teknik pengoptimalan yang dapat dipilih, mungkin sulit untuk mengetahui dari mana harus memulai. Nah, jangan takut lagi, karena saya punya hal yang tepat untuk membantu. Menghadirkan platform lengkap Ranktracker untuk SEO yang efektif

Kami akhirnya membuka pendaftaran ke Ranktracker secara gratis!

Buat akun gratis

Atau Masuk menggunakan kredensial Anda

**Penting: **Direktif `limit_req_zone` harus ditempatkan di dalam blok `http {}` pada konfigurasi Nginx utama Anda — bukan di dalam blok `server`. Buka konfigurasi utama:

    sudo nano /etc/nginx/nginx.conf

Tambahkan baris ini di dalam blok http {} yang sudah ada:

    http {
        ...
        limit_req_zone $binary_remote_addr zone=n8n_login:10m rate=5r/m;
        ...
    }

Kemudian, di konfigurasi situs n8n Anda (/etc/nginx/sites-available/n8n), tambahkan blok `location` ini di dalam blok `server` yang mendengarkan pada port 443 (Certbot membuatnya pada Langkah 6), di sebelah `location /` yang sudah ada. Nginx tidak meneruskan header proxy dari `location /`, jadi header tersebut diulang di sini:

    location /rest/login {
        limit_req zone=n8n_login burst=5 nodelay;
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

Muat ulang Nginx untuk menerapkan perubahan:

    sudo nginx -t && sudo systemctl reload nginx

Ini membatasi setiap alamat IP hingga sekitar 5 upaya login per menit, dengan sedikit toleransi lonjakan.

Selalu perbarui n8n dan PostgreSQL

Unduh dan mulai ulang dengan gambar terbaru secara rutin:

    cd ~/n8n
    docker compose pull
    docker compose up -d

Docker akan menarik gambar n8nio/n8n dan postgres terbaru serta memulai ulang hanya kontainer yang memiliki versi yang lebih baru.

Untuk produksi, pertimbangkan untuk mengunci gambar n8n ke tag versi tertentu (docker.n8n.io/n8nio/n8n:<versi>, diambil dari catatan rilis n8n) dan melakukan pembaruan secara terencana, sehingga proses pengunduhan rutin tidak akan melompati versi utama sebelum Anda membaca catatan perubahan.

Pemecahan Masalah Umum

Kontainer n8n Terus-Menerus Di-restart

Periksa log kontainer segera setelah siklus restart dimulai:

    docker compose logs n8n --tail=100

Penyebab umum:

  • Kegagalan koneksi database: Pastikan PostgreSQL dalam kondisi sehat dengan perintah `docker compose ps`. Periksa apakah nilai `POSTGRES_PASSWORD` di berkas `.env` Anda sesuai dengan kata sandi yang digunakan saat database diinisialisasi.
  • Kunci enkripsi hilang atau berubah: Jika N8N_ENCRYPTION_KEY tidak diatur atau diubah setelah dijalankan pertama kali, n8n tidak dapat mendekripsi kredensial yang tersimpan dan akan mengalami crash.
  • RAM tidak mencukupi: PostgreSQL dan n8n secara bersama-sama dapat menggunakan 1–1,5 GB RAM. Periksa memori yang tersedia dengan perintah `free -h`.

Webhook Tidak Berfungsi

Webhook memerlukan n8n agar dapat diakses dari internet di domain Anda. Verifikasi:

  1. Catatan A DNS domain Anda mengarah ke alamat IP VPS Anda: dig n8n.yourdomain.com
  2. Nginx sedang berjalan: sudo systemctl status nginx
  3. Port 443 terbuka: sudo ufw status
  4. Variabel lingkungan WEBHOOK_URL harus persis sama dengan domain publik Anda, termasuk tanda garis miring di akhir

Editor n8n Tidak Dimuat dengan Benar

Jika editor visual berhasil dimuat tetapi menampilkan kanvas alur kerja kosong atau pembaruan real-time berhenti berfungsi, koneksi WebSocket mengalami kegagalan. Periksa apakah blok $http_upgrade terdapat dalam konfigurasi Nginx Anda dan pastikan Anda menggunakan variabel $connection_upgrade — bukan string literal “upgrade” — pada baris proxy_set_header Connection.

Kesalahan Sertifikat SSL

Jika Certbot gagal dengan kesalahan validasi domain, periksa apakah port 80 dapat diakses dari internet:

    curl -I http://n8n.yourdomain.com

Jika permintaan habis waktunya, firewall penyedia VPS Anda mungkin memblokir port 80. Periksa aturan firewall di konsol cloud selain UFW.

Kesimpulan

Menghosting n8n secara mandiri di VPS Linux memberi Anda platform otomatisasi alur kerja yang siap produksi tanpa batasan eksekusi, privasi data penuh, dan fleksibilitas untuk menjalankan integrasi apa pun yang Anda butuhkan. Pengaturan yang dibahas dalam panduan ini — Docker, PostgreSQL, proxy terbalik Nginx, SSL Let’s Encrypt, pencadangan otomatis, dan penguatan keamanan — adalah tumpukan yang sama yang digunakan di lingkungan produksi dan memberi Anda fondasi yang stabil dan aman untuk dikembangkan.

Berbeda dengan instalasi minimal menggunakan perintah `docker run`, konfigurasi ini dirancang untuk bertahan saat server di-reboot, menangani eksekusi alur kerja secara bersamaan, dan pulih dengan lancar dari kegagalan. Kredensial Anda dienkripsi, data Anda dicadangkan setiap malam, dan titik akhir login Anda dibatasi laju (rate-limited) untuk melindungi dari serangan brute force.

Setelah instance Anda berjalan, jelajahi node bawaan n8n untuk database, API, webhook, dan integrasi AI untuk segera mulai mengotomatiskan alur kerja Anda. Forum komunitas yang dihosting sendiri di community.n8n.io juga merupakan sumber daya yang sangat baik untuk ide alur kerja, pemecahan masalah node, dan tips penerapan.

Felix Rose-Collins

Felix Rose-Collins

Ranktracker's CEO/CMO & Co-founder

Felix Rose-Collins is the Co-founder and CEO/CMO of Ranktracker. With over 15 years of SEO experience, he has single-handedly scaled the Ranktracker site to over 500,000 monthly visits, with 390,000 of these stemming from organic searches each month.

Mulai gunakan Ranktracker... Gratis!

Cari tahu apa yang menghambat situs web Anda untuk mendapatkan peringkat.

Buat akun gratis

Atau Masuk menggunakan kredensial Anda

Different views of Ranktracker app