n8n adalah platform otomasi workflow yang menghubungkan aplikasi, API, dan model AI lewat editor visual berbasis node. Setiap alur dimulai dari trigger (jadwal, webhook, maupun insiden di aplikasi lain), kemudian datanya diproses node demi node sampai tugasnya selesai. Kalian bisa memakainya sebagai jasa n8n Cloud maupun 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 keterangan pesanan dari blangko ke spreadsheet, kemudian mengabari tim lewat chat. Langkah itu cukup disusun sekali di canvas sebagai rangkaian node, kemudian berjalan sendiri setiap kali ada pesanan baru. Untuk logika yang lebih rumit, ada Code node untuk menulis JavaScript maupun Python, dan expression untuk mengisi indikator node dengan keterangan dari node sebelumnya.
Ada juga node AI. AI Agent node memasang perantara AI di dalam workflow, komplit dengan sub-node untuk chat model, memory, dan tools. Modelnya bisa dari OpenAI, Anthropic, Google, maupun 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 maupun Telegram, OpenClaw lebih cocok. Sementara itu, n8n dibuat untuk alur kerja yang disusun cara demi cara 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, maupun saat dipanggil workflow lain. Eksekusinya node demi node, dan alurnya bisa bercabang, digabung, maupun diulang.
- Node adalah elemen penyusun workflow. Ada node yang memulai workflow, ada yang mengambil, mengirim, maupun mengolah data, ada yang mengatur logika alur seperti If, dan ada yang terhubung ke jasa luar seperti Google Sheets, Slack, maupun 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 mekanisme lain, maupun Gmail Trigger dan Telegram Trigger.
- Credential menyimpan keterangan autentikasi (username dan password, API key, maupun OAuth) agar node bisa mengakses jasa 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 statis asing, penjelasannya ada di artikel apa itu webhook.
Contoh alur sederhana
Misalnya blangko di website mengirim keterangan pesanan. Workflow-nya cukup empat node:
- Webhook menerima keterangan pesanan dari formulir.
- If memeriksa harga pesanan, misalnya apakah di atas batas tertentu.
- Google Sheets menambahkan baris baru berisi keterangan pesanan.
- 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 lazim dibuat dengan n8n
- Laporan harian: Schedule Trigger berjalan tiap pagi, HTTP Request memungut keterangan dari API, kemudian Send Email mengirim ringkasannya.
- Notifikasi toko online: WooCommerce Trigger menangkap pesanan baru, kemudian pesan dikirim lewat WhatsApp Business Cloud maupun Slack.
- Pemilahan email: Gmail Trigger membaca email masuk, AI Agent node menggolongkan isinya, kemudian email diteruskan ke orang yang tepat.
- Sinkronisasi data: baris baru di Google Sheets dikirim ke mekanisme lain lewat HTTP Request, jadi tidak ada input ganda.
- Chatbot: Telegram Trigger menerima pesan, kemudian AI Agent node menjawab dengan memory percakapan.
Tersedia juga template workflow buatan tim n8n dan komunitas. Template bisa diimpor, kemudian tinggal diisi credential dan disesuaikan dengan kebutuhan.
Lisensi n8n: fair-code dengan Sustainable Use License
Platform ini tidak memakai lisensi open source seperti MIT maupun Apache. Kodenya dirilis di bawah Sustainable Use License, ditambah n8n Enterprise License untuk file yang nama file maupun foldernya hamil .ee. Menurut teks lisensinya, kalian boleh memakai dan memodifikasi software ini untuk keperluan upaya internal sendiri, maupun untuk penggunaan non-komersial dan pribadi. Mendistribusikan maupun menyediakannya ke pihak lain cuma boleh jika cuma-cuma dan untuk tujuan non-komersial.
Artinya, memakainya untuk mengotomatiskan proses di perusahaan sendiri termasuk pemakaian yang diizinkan. Kalau rencananya menjual akses ke pelanggan sebagai layanan, baca dahulu file LICENSE.md di repositori GitHub n8n-io dan tanyakan lisensi Enterprise ke pengembangnya.
n8n Cloud maupun self-host di VPS?
| Aspek | n8n Cloud | Self-host |
|---|---|---|
| Instalasi | Tidak perlu, langsung pakai | Dipasang sendiri, misalnya dengan Docker Compose |
| Server, update, dan scaling | Diurus penyedia | Tanggung jawab kalian |
| Kontrol konfigurasi | Terbatas pada opsi yang tersedia | Penuh |
| Pilihan gratis | Free trial 14 hari dengan fitur Pro | Community edition cuma-cuma (biaya server statis ada) |
| Paket berbayar | Starter, Pro, Enterprise | Business dan Enterprise lewat license key |
Community edition berisi hampir semua fitur. Dengan mendaftarkan email lewat Settings > Usage and plan > Unlock, varian itu menjadi Registered Community dan mendapat fitur tambahan seperti berkas 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 pelanggan yang terbiasa mengelola server, karena kesalahan konfigurasi bisa berujung kehilangan data, celah keamanan, dan downtime. Kalau belum pernah mengurus server Linux, varian Cloud lebih terlindungi untuk mulai. Kalau sudah, self-host di VPS memberi kontrol penuh atas data, versi, dan konfigurasi.
Spesifikasi VPS untuk n8n
Dokumentasi resmi tidak menetapkan rincian minimum untuk instalasi dasar. Yang dijelaskan adalah hal yang menaikkan pemakaian memori: besarnya keterangan 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 pelanggan maupun 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 imbang NVMe letak 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 berkarakter unmanaged, jadi instalasi dan keamanannya kalian urus sendiri, maupun serahkan ke managed service dari Jetorbit.
Cara install n8n di VPS dengan Docker Compose
Langkah berikut mengikuti panduan Docker Compose resmi n8n. Aplikasinya berjalan berbareng Traefik, reverse proxy yang mengurus sertifikat SSL dan HTTPS secara otomatis. Siapkan dulu:
- VPS dengan Ubuntu 64-bit varian yang didukung Docker, misalnya 24.04 LTS, dan akses root maupun 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 hubungan HTTPS.
- 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 cara 8, karena Traefik meminta sertifikat untuk subdomain itu saat container pertama kali jalan.
- Install Docker Engine dan plugin Docker Compose. Masuk ke VPS lewat SSH, kemudian tambahkan repositori apt resmi Docker dan pasang paketnya. Perintah di bawah diambil dari dokumentasi Docker untuk Ubuntu. Penjelasan alas 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 - Pastikan Docker dan Docker Compose sudah terpasang. Kedua perintah ini mesti menampilkan angka versi.
docker --version docker compose version
- Buat berkas proyek untuk menyimpan konfigurasi, kemudian masuk ke dalamnya.
mkdir n8n-compose cd n8n-compose
- Buat file .env dengan nano .env, kemudian 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, area waktu bawaannya New York), sedangkan SSL_EMAIL dipakai untuk pembuatan sertifikat SSL.
DOMAIN_NAME=namadomain.com SUBDOMAIN=n8n GENERIC_TIMEZONE=Asia/Jakarta [email protected]
- Buat berkas local-files untuk berbagi file antara VPS dan container. Di dalam editor, berkas ini diakses lewat path /files. Membuatnya manual memastikan kepemilikan dan persetujuan foldernya benar.
mkdir local-files
- 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 membikin dua container. Traefik menerima hubungan 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 cuma dibuka di 127.0.0.1, jadi dari internet aplikasinya cuma bisa dicapai lewat Traefik. Volume n8n_data menyimpan database SQLite dan kunci enkripsi, sedangkan traefik_data menyimpan keterangan sertifikat. Variabel N8N_WEBHOOK_URL berjalan mulai varian 2.30.0; varian durasi memakai WEBHOOK_URL.
- Jalankan kedua container, kemudian cek status dan log-nya.
sudo docker compose up -d sudo docker compose ps sudo docker compose logs -f
- Buka https://n8n.namadomain.com di browser. Halaman pertama yang muncul adalah pendaftaran akun owner. Password minimal delapan karakter dan mesti berisi setidaknya satu bilangan dan satu abjad kapital. Dengan konfigurasi ini, instance cuma bisa dibuka lewat HTTPS. Kalau halaman tidak muncul, periksa firewall VPS dan pengaturan DNS subdomain.
Pengamanan alas 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, komplit dengan header HSTS. Cara lain adalah memasang sertifikat langsung ke aplikasi lewat variabel N8N_SSL_CERT dan N8N_SSL_KEY, tetapi perpanjangan sertifikatnya mesti 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 metode resmi untuk mematikan halaman login. Akun owner yang dibuat di cara 9 adalah akun dengan akses tertinggi, jadi pakai password yang kuat kemudian aktifkan 2FA:
- Buka Settings > Personal, kemudian pilih Enable 2FA.
- Pindai kode QR dengan aplikasi authenticator di HP.
- Masukkan kode dari aplikasi ke kolom Code from authenticator app, kemudian pilih Continue.
- Simpan recovery codes yang muncul. Kode ini dibutuhkan jika aplikasi authenticator hilang.
Untuk mengundang pelanggan 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 pelanggan tidak bisa mereset password sendiri.
Firewall: buka port seperlunya
Dari luar, VPS cukup menerima SSH, HTTP, dan HTTPS. Di Ubuntu, ketentuan 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 ketentuan ufw, sehingga port itu statis terbuka meski tidak diizinkan di ufw. Karena itu, biarkan port n8n statis 127.0.0.1:5678:5678. Kalau diubah menjadi 5678:5678, port 5678 terbuka ke internet tanpa HTTPS.
Backup dan pembaruan n8n
Backup volume n8n_data secara rutin, karena isinya database workflow dan kunci enkripsi untuk credential. Cloud VPS Jetorbit tidak termasuk jasa backup, tetapi tersedia addon backup terpisah, maupun kalian bisa memakai jasa backup pihak ketiga.
Versi minor baru dirilis hampir setiap minggu. Dokumentasinya menyarankan pembaruan minimal sebulan sekali dan membaca release notes untuk fluktuasi yang tidak kompatibel sebelum update. Untuk instalasi Docker Compose, perintahnya:
sudo docker compose pull sudo docker compose down sudo docker compose up -d