---
title: "Deploy n8n di server Anda sendiri: domain, workflow, dan backup"
description: "Deploy n8n dari template Zenavo, atur HTTPS, alamat webhook, dan zona waktu, jalankan workflow pertama Anda, lalu amankan kunci enkripsi serta backup volume."
date: 2026-11-10
language: id-ID
url: https://zenavo.app/id-ID/blog/self-host-n8n
---

# Deploy n8n di server Anda sendiri: domain, workflow, dan backup

Mengirim isi formulir ke spreadsheet, merangkum pesan secara terjadwal, atau memanggil API saat webhook masuk — otomatisasi berulang seperti ini bisa diserahkan ke [n8n](https://n8n.io). Dengan self-hosting, Anda tidak dibatasi kuota jumlah eksekusi, dan semua workflow serta kredensial tetap berada di server milik Anda sendiri.

Panduan ini memakai template n8n di Zenavo, mulai dari deploy, pengaturan domain dan webhook, hingga backup dan upgrade. Server, platform Zenavo, dan API pihak ketiga yang dipanggil oleh workflow ditagih secara terpisah.

## Deploy n8n

Pertama, [hubungkan server Linux](https://docs.zenavo.app/id-ID/servers/add-a-server) ke Zenavo, lalu buka [template n8n](https://zenavo.app/deploy?template=n8n), pilih server, dan deploy.

Pengaturan template saat ini:

| Pengaturan | Nilai atau fungsi |
|---|---|
| Image | `n8nio/n8n:latest` |
| Port HTTP | `5678` |
| Volume | `/home/node/.n8n`: database SQLite bawaan, workflow, dan kredensial disimpan di sini |
| `N8N_ENCRYPTION_KEY` | Dibuat otomatis saat proyek dibuat, untuk mengenkripsi kredensial yang disimpan di workflow |
| `GENERIC_TIMEZONE` | Bawaannya `UTC`, ubah ke zona waktu Anda di bawah |
| `N8N_DIAGNOSTICS_ENABLED` | `false`, mematikan telemetri |

Tag `latest` mengikuti rilis terbaru dari hulu. Untuk pemakaian jangka panjang, buka **Pengaturan → Sumber** pada layanan n8n dan kunci tag image ke versi tetap yang sudah Anda uji (misalnya `n8nio/n8n:1.82.0`) agar deploy ulang tidak otomatis menaikkan versi.

## Pasang domain, atur URL webhook dan zona waktu

Di tab **Jaringan** pada layanan n8n, pasang domain seperti `n8n.example.com` ke port `5678`, tambahkan record DNS A yang mengarah ke server, lalu tunggu HTTPS aktif. Langkah-langkahnya ada di [Domain & HTTPS](https://docs.zenavo.app/id-ID/networking/domains).

Setelah itu, buka tab **Variabel** pada layanan n8n dan tambahkan pengaturan domain serta zona waktu:

```sh
N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
N8N_EDITOR_BASE_URL=https://n8n.example.com/
WEBHOOK_URL=https://n8n.example.com/
N8N_PROXY_HOPS=1
GENERIC_TIMEZONE=Asia/Jakarta
TZ=Asia/Jakarta
```

Beberapa catatan:

- `WEBHOOK_URL` menentukan alamat publik yang dibuat oleh node Webhook; jika tidak diatur, node akan menampilkan alamat internal kontainer `http://localhost:5678`.
- `N8N_PROXY_HOPS=1` sesuai dengan satu lapis reverse proxy dari gateway Zenavo. Jika di depan domain Anda masih ada proxy CDN seperti Cloudflare, sesuaikan jumlah hop-nya.
- `GENERIC_TIMEZONE` mengatur zona waktu bawaan untuk Schedule Trigger.

Simpan lalu restart layanan, kemudian buka `https://n8n.example.com` untuk membuat akun pemilik. Jika nanti Anda mengganti domain, perbarui juga variabel alamat di atas.

## Jalankan workflow dan webhook pertama

Setelah masuk ke editor, buat satu workflow sederhana untuk memastikan eksekusi berjalan lancar:

1. Buat workflow baru dan tambahkan **Manual Trigger**.
2. Tambahkan node **Edit Fields (Set)**, buat field string `message` dengan nilai `Hello from n8n`.
3. Klik **Test workflow**, pastikan pesan tersebut muncul di hasil sebelah kanan, lalu simpan.

Berikutnya, uji apakah permintaan dari luar bisa masuk ke Webhook:

1. Tambahkan node **Webhook** dengan HTTP Method `GET`.
2. Klik **Listen for test event**, buka **Test URL** yang ditampilkan node di browser, dan pastikan editor langsung menerima data permintaan.
3. Saat menghubungkan layanan pihak ketiga yang sebenarnya (seperti GitHub, Stripe, atau Slack), gunakan **Production URL** dan nyalakan sakelar **Active** di kanan atas workflow. Test URL hanya aktif sementara saat Anda menekan tombol listen di editor.

## Simpan `N8N_ENCRYPTION_KEY` dengan aman

Semua API key pihak ketiga, kata sandi database, dan token OAuth yang Anda simpan di n8n dienkripsi memakai `N8N_ENCRYPTION_KEY` sebelum disimpan di database.

Buka tab **Variabel** pada layanan n8n, lalu salin nilai `N8N_ENCRYPTION_KEY` ke pengelola kata sandi Anda. **Jangan mengubahnya setelah deploy.** Jika suatu saat Anda memulihkan backup ke proyek atau server baru, Anda wajib mengisi `N8N_ENCRYPTION_KEY` yang sama persis; tanpa kunci itu, workflow yang dipulihkan tidak bisa mendekripsi kredensial lama.

Fitur "Export workflow" di editor hanya mengekspor JSON berisi node dan sambungannya, tanpa kredensial maupun riwayat eksekusi, sehingga tidak menggantikan backup penuh.

## Backup dan upgrade

Seluruh data n8n berada di volume `/home/node/.n8n`. Cadangkan dari tab **Backup & Pemulihan** pada layanan n8n:

1. Pilih waktu saat tidak ada workflow penting yang sedang berjalan, lalu hentikan proyek (backup volume mengharuskan proyek dalam keadaan berhenti).
2. Buat backup volume, lalu jalankan kembali proyek setelah selesai.
3. Unduh satu salinan backup dan simpan bersama `N8N_ENCRYPTION_KEY` Anda.

Detail langkahnya ada di [Backup & Pemulihan](https://docs.zenavo.app/id-ID/operations/backups). Jika Anda memulihkan backup ke proyek baru untuk pengujian, ingat bahwa workflow yang aktif akan langsung menjalankan jadwalnya begitu dinyalakan — matikan trigger lebih dulu atau pisahkan dari sistem produksi.

Sebelum upgrade, baca [catatan rilis](https://docs.n8n.io/release-notes/) n8n, cadangkan volume terlebih dahulu, baru ubah versi image di **Pengaturan → Sumber**. Upgrade n8n dapat memigrasikan struktur database, sehingga mengganti tag image kembali ke versi lama belum tentu bisa langsung jalan; pulihkan backup dari sebelum upgrade jika perlu kembali.

## Pertanyaan umum

**Alamat di node Webhook masih menampilkan `localhost:5678`?**
Periksa apakah `WEBHOOK_URL=https://domain-anda/` sudah ditambahkan di tab **Variabel**, lalu restart layanan n8n setelah menyimpan.

**Platform pihak ketiga mendapat 404 saat memanggil webhook?**
Pastikan yang dipakai adalah **Production URL** (path `/webhook/...`, bukan `/webhook-test/...`) dan sakelar **Active** di kanan atas workflow sudah dinyalakan.

**Jadwal otomatis tidak berjalan sesuai zona waktu saya?**
Periksa apakah `GENERIC_TIMEZONE` dan `TZ` di **Variabel** sudah diatur ke zona waktu Anda (misalnya `Asia/Jakarta`), dan cek juga **Settings → Timezone** di dalam workflow tersebut apakah menimpa zona waktu bawaan.

**Seberapa besar server yang dibutuhkan?**
Untuk workflow ringan sehari-hari, pemakaian memorinya kecil dan server 1 vCPU / 2 GB sudah cukup untuk mulai. Jika workflow Anda memproses file besar, array JSON besar di memori, atau banyak eksekusi bersamaan, gunakan server 2 vCPU / 4 GB ke atas.

Mulailah dari [template n8n](https://zenavo.app/deploy?template=n8n): pasang domain, atur `WEBHOOK_URL` dan zona waktu, simpan `N8N_ENCRYPTION_KEY`, lalu buat backup volume pertama Anda.
