Langsung ke konten
.ai.id dibuka 5 Okt 08.00 WIB--:--:--

n8n Adalah: Pengertian, Cara Kerja, dan Cara Install n8n di VPS dengan Docker

10 menit baca

Bagikan:
Apa Itu n8n?: cara kerja, contoh otomasi, dan cara install di VPS
Daftar isi8 bagian

n8n adalah platform otomasi workflow yang menghubungkan aplikasi, API, dan model AI lewat editor visual berbasis node. Setiap alur dimulai dari trigger (jadwal, webhook, atau kejadian di aplikasi lain), lalu datanya diproses node demi node sampai tugasnya selesai. Kalian bisa memakainya sebagai layanan n8n Cloud atau memasangnya sendiri di server, misalnya VPS dengan Docker.

Namanya berasal dari kata nodemation dan dibaca n-eight-n. Lisensinya fair-code: kode sumbernya bisa dilihat siapa saja dan boleh di-self-host, tetapi pemakaian komersialnya dibatasi.

Apa itu n8n dan dipakai untuk apa?

Ambil contoh pekerjaan berulang seperti menyalin data pesanan dari formulir ke spreadsheet, lalu mengabari tim lewat chat. Langkah itu cukup disusun sekali di canvas sebagai rangkaian node, lalu berjalan sendiri setiap kali ada pesanan baru. Untuk logika yang lebih rumit, ada Code node untuk menulis JavaScript atau Python, dan expression untuk mengisi parameter node dengan data dari node sebelumnya.

Ada juga node AI. AI Agent node memasang agen AI di dalam workflow, lengkap dengan sub-node untuk chat model, memory, dan tools. Modelnya bisa dari OpenAI, Anthropic, Google, atau model open source. Inilah bentuk AI automation: model AI membaca dan memutuskan, workflow menjalankan langkah-langkahnya di aplikasi lain.

Kalau yang kalian cari adalah asisten AI pribadi yang diajak bicara lewat WhatsApp atau Telegram, OpenClaw lebih cocok. Sementara itu, n8n dibuat untuk alur kerja yang disusun langkah demi langkah antaraplikasi.

Cara kerja n8n: workflow, node, dan trigger

Lima istilah ini akan sering kalian temui di editor:

  • Workflow adalah kumpulan node yang tersambung untuk mengotomatiskan satu proses. Workflow mulai berjalan saat kondisi trigger terpenuhi, saat dijalankan manual, atau saat dipanggil workflow lain. Eksekusinya node demi node, dan alurnya bisa bercabang, digabung, atau diulang.
  • Node adalah komponen penyusun workflow. Ada node yang memulai workflow, ada yang mengambil, mengirim, atau mengolah data, ada yang mengatur logika alur seperti If, dan ada yang terhubung ke layanan luar seperti Google Sheets, Slack, atau Telegram.
  • Trigger node adalah node khusus yang menjalankan workflow saat kondisi tertentu terjadi. Setiap workflow produksi butuh minimal satu trigger, misalnya Schedule Trigger untuk jadwal, Webhook untuk menerima panggilan HTTP dari sistem lain, atau Gmail Trigger dan Telegram Trigger.
  • Credential menyimpan data autentikasi (username dan password, API key, atau OAuth) supaya node bisa mengakses layanan tertentu.
  • Execution adalah satu kali jalannya workflow. Execution manual dimulai dari editor, sedangkan execution produksi berjalan otomatis saat trigger pada workflow yang sudah di-publish terpenuhi.

Banyak workflow dimulai dari webhook. Kalau konsepnya masih asing, penjelasannya ada di artikel apa itu webhook.

Contoh alur sederhana

Misalnya formulir di website mengirim data pesanan. Workflow-nya cukup empat node:

  1. Webhook menerima data pesanan dari formulir.
  2. If memeriksa nilai pesanan, misalnya apakah di atas batas tertentu.
  3. Google Sheets menambahkan baris baru berisi data pesanan.
  4. Telegram mengirim pesan ke grup tim untuk pesanan yang lolos pemeriksaan.

Node disusun dengan drag and drop di canvas. Setelah workflow di-publish, alur ini berjalan setiap kali webhook menerima data.

Contoh otomasi yang umum dibuat dengan n8n

  • Laporan harian: Schedule Trigger berjalan tiap pagi, HTTP Request mengambil data dari API, lalu Send Email mengirim ringkasannya.
  • Notifikasi toko online: WooCommerce Trigger menangkap pesanan baru, lalu pesan dikirim lewat WhatsApp Business Cloud atau Slack.
  • Pemilahan email: Gmail Trigger membaca email masuk, AI Agent node menggolongkan isinya, lalu email diteruskan ke orang yang tepat.
  • Sinkronisasi data: baris baru di Google Sheets dikirim ke sistem lain lewat HTTP Request, jadi tidak ada input ganda.
  • Chatbot: Telegram Trigger menerima pesan, lalu AI Agent node menjawab dengan memory percakapan.

Tersedia juga template workflow buatan tim n8n dan komunitas. Template bisa diimpor, lalu tinggal diisi credential dan disesuaikan dengan kebutuhan.

Lisensi n8n: fair-code dengan Sustainable Use License

Platform ini tidak memakai lisensi open source seperti MIT atau Apache. Kodenya dirilis di bawah Sustainable Use License, ditambah n8n Enterprise License untuk file yang nama file atau foldernya mengandung .ee. Menurut teks lisensinya, kalian boleh memakai dan memodifikasi software ini untuk keperluan bisnis internal sendiri, atau untuk penggunaan non-komersial dan pribadi. Mendistribusikan atau menyediakannya ke pihak lain hanya boleh kalau gratis dan untuk tujuan non-komersial.

Artinya, memakainya untuk mengotomatiskan proses di perusahaan sendiri termasuk pemakaian yang diizinkan. Kalau rencananya menjual akses ke klien sebagai layanan, baca dulu file LICENSE.md di repositori GitHub n8n-io dan tanyakan lisensi Enterprise ke pengembangnya.

n8n Cloud atau self-host di VPS?

Aspekn8n CloudSelf-host
InstalasiTidak perlu, langsung pakaiDipasang sendiri, misalnya dengan Docker Compose
Server, update, dan scalingDiurus penyediaTanggung jawab kalian
Kontrol konfigurasiTerbatas pada opsi yang tersediaPenuh
Pilihan gratisFree trial 14 hari dengan fitur ProCommunity edition gratis (biaya server tetap ada)
Paket berbayarStarter, Pro, EnterpriseBusiness dan Enterprise lewat license key

Community edition berisi hampir semua fitur. Dengan mendaftarkan email lewat Settings > Usage and plan > Unlock, edisi itu menjadi Registered Community dan mendapat fitur tambahan seperti folder dan debug in editor. Fitur seperti SSO, projects, environments, version control dengan Git, serta berbagi workflow dan credential butuh paket berbayar.

Dokumentasi resminya terus terang soal risikonya: self-host ditujukan untuk pengguna yang terbiasa mengelola server, karena kesalahan konfigurasi bisa berujung kehilangan data, celah keamanan, dan downtime. Kalau belum pernah mengurus server Linux, versi Cloud lebih aman untuk mulai. Kalau sudah, self-host di VPS memberi kontrol penuh atas data, versi, dan konfigurasi.

Spesifikasi VPS untuk n8n

Dokumentasi resmi tidak menetapkan spesifikasi minimum untuk instalasi dasar. Yang dijelaskan adalah hal yang menaikkan pemakaian memori: besarnya data JSON dan file biner yang diproses, jumlah node dalam workflow, Code node, eksekusi manual dari editor, dan banyaknya workflow yang berjalan bersamaan. Angka minimum baru muncul di panduan Docker Compose yang ikut memasang sandbox untuk n8n Assistant, yaitu 4 GB RAM dan 2 vCPU.

Secara bawaan, database yang dipakai adalah SQLite yang tersimpan di volume Docker. Untuk instance produksi dengan lebih dari segelintir pengguna atau workflow yang berjalan terus-menerus, dokumentasinya menyarankan PostgreSQL.

Di Cloud VPS Jetorbit, ukuran 2 vCPU dan 4 GB RAM tersedia mulai paket Cloud 3x di seri NVMe lokasi Jakarta. Setiap Cloud VPS memakai virtualisasi KVM dengan akses root penuh serta IPv4 dan IPv6 dedicated, dan Ubuntu ada di daftar OS-nya. Cloud VPS bersifat unmanaged, jadi instalasi dan keamanannya kalian urus sendiri, atau serahkan ke managed service dari Jetorbit.

Cara install n8n di VPS dengan Docker Compose

Langkah berikut mengikuti panduan Docker Compose resmi n8n. Aplikasinya berjalan bersama Traefik, reverse proxy yang mengurus sertifikat SSL dan HTTPS secara otomatis. Siapkan dulu:

  • VPS dengan Ubuntu 64-bit versi yang didukung Docker, misalnya 24.04 LTS, dan akses root atau user sudo lewat SSH.
  • Domain yang DNS-nya bisa kalian atur, untuk subdomain seperti n8n.namadomain.com.
  • Port 80 dan 443 terbuka. Traefik memakai port 80 untuk mengalihkan pengunjung ke HTTPS dan port 443 untuk koneksi HTTPS.
  1. Arahkan subdomain ke VPS. Buat A record di DNS domain dengan nama n8n (atau subdomain lain) dan tujuan IP VPS. Tunggu sampai subdomain sudah mengarah ke IP tersebut sebelum menjalankan langkah 8, karena Traefik meminta sertifikat untuk subdomain itu saat container pertama kali jalan.
  1. Install Docker Engine dan plugin Docker Compose. Masuk ke VPS lewat SSH, lalu tambahkan repositori apt resmi Docker dan pasang paketnya. Perintah di bawah diambil dari dokumentasi Docker untuk Ubuntu. Penjelasan dasar tentang container ada di artikel apa itu Docker.
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. Pastikan Docker dan Docker Compose sudah terpasang. Kedua perintah ini harus menampilkan nomor versi.
docker --version
docker compose version
  1. Buat folder proyek untuk menyimpan konfigurasi, lalu masuk ke dalamnya.
mkdir n8n-compose
cd n8n-compose
  1. Buat file .env dengan nano .env, lalu isi sesuai domain kalian. DOMAIN_NAME dan SUBDOMAIN membentuk alamat instance, contoh di bawah menghasilkan https://n8n.namadomain.com. GENERIC_TIMEZONE dipakai Schedule Trigger dan node penjadwalan lain (tanpa variabel ini, zona waktu bawaannya New York), sedangkan SSL_EMAIL dipakai untuk pembuatan sertifikat SSL.
DOMAIN_NAME=namadomain.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Asia/Jakarta
[email protected]
  1. Buat folder local-files untuk berbagi file antara VPS dan container. Di dalam editor, folder ini diakses lewat path /files. Membuatnya manual memastikan kepemilikan dan izin foldernya benar.
mkdir local-files
  1. Buat file compose.yaml dengan nano compose.yaml dan tempel konfigurasi dari dokumentasi resmi berikut.
services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
      - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytlschallenge.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: n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - N8N_WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - TZ=${GENERIC_TIMEZONE}
      - N8N_RESTRICT_FILE_ACCESS_TO=/files
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files

volumes:
  n8n_data:
  traefik_data:

Isi file ini membuat dua container. Traefik menerima koneksi di port 80 dan 443, mengalihkan HTTP ke HTTPS, dan meminta sertifikat Let’s Encrypt lewat TLS challenge. Container n8n berjalan di port bawaannya, 5678, tetapi hanya dibuka di 127.0.0.1, jadi dari internet aplikasinya hanya bisa dicapai lewat Traefik. Volume n8n_data menyimpan database SQLite dan kunci enkripsi, sedangkan traefik_data menyimpan data sertifikat. Variabel N8N_WEBHOOK_URL berlaku mulai versi 2.30.0; versi lama memakai WEBHOOK_URL.

  1. Jalankan kedua container, lalu cek status dan log-nya.
sudo docker compose up -d
sudo docker compose ps
sudo docker compose logs -f
  1. Buka https://n8n.namadomain.com di browser. Halaman pertama yang muncul adalah pendaftaran akun owner. Password minimal delapan karakter dan harus berisi setidaknya satu angka dan satu huruf kapital. Dengan konfigurasi ini, instance hanya bisa dibuka lewat HTTPS. Kalau halaman tidak muncul, periksa firewall VPS dan pengaturan DNS subdomain.

Pengamanan dasar n8n di VPS

HTTPS lewat reverse proxy

Dokumentasi n8n menyarankan reverse proxy seperti Traefik untuk HTTPS, karena reverse proxy juga mengurus perpanjangan sertifikat. Konfigurasi di atas sudah memakainya, lengkap dengan header HSTS. Cara lain adalah memasang sertifikat langsung ke aplikasi lewat variabel N8N_SSL_CERT dan N8N_SSL_KEY, tetapi perpanjangan sertifikatnya harus kalian urus sendiri.

Autentikasi akun dan 2FA

Sejak n8n 1.0, basic auth dan autentikasi JWT dihapus. Login diatur lewat user management, dan tidak ada cara resmi untuk mematikan halaman login. Akun owner yang dibuat di langkah 9 adalah akun dengan akses tertinggi, jadi pakai password yang kuat lalu aktifkan 2FA:

  1. Buka Settings > Personal, lalu pilih Enable 2FA.
  2. Pindai kode QR dengan aplikasi authenticator di HP.
  3. Masukkan kode dari aplikasi ke kolom Code from authenticator app, lalu pilih Continue.
  4. Simpan recovery codes yang muncul. Kode ini dibutuhkan kalau aplikasi authenticator hilang.

Untuk mengundang pengguna lain dan mengaktifkan reset password, siapkan SMTP lewat variabel seperti N8N_EMAIL_MODE=smtp, N8N_SMTP_HOST, dan N8N_SMTP_SENDER. Tanpa SMTP, link undangan bisa disalin manual, tetapi pengguna tidak bisa mereset password sendiri.

Firewall: buka port seperlunya

Dari luar, VPS cukup menerima SSH, HTTP, dan HTTPS. Di Ubuntu, aturan dasarnya bisa dibuat dengan ufw:

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

Menurut dokumentasi Docker, port container yang di-publish Docker melewati aturan ufw, sehingga port itu tetap terbuka walau tidak diizinkan di ufw. Karena itu, biarkan port n8n tetap 127.0.0.1:5678:5678. Kalau diubah menjadi 5678:5678, port 5678 terbuka ke internet tanpa HTTPS.

Backup dan update n8n

Backup volume n8n_data secara rutin, karena isinya database workflow dan kunci enkripsi untuk credential. Cloud VPS Jetorbit tidak termasuk layanan backup, tetapi tersedia addon backup terpisah, atau kalian bisa memakai layanan backup pihak ketiga.

Versi minor baru dirilis hampir setiap minggu. Dokumentasinya menyarankan update minimal sebulan sekali dan membaca release notes untuk perubahan yang tidak kompatibel sebelum update. Untuk instalasi Docker Compose, perintahnya:

sudo docker compose pull
sudo docker compose down
sudo docker compose up -d
Bagikan: