1. Pengantar
Dalam codelab ini, Anda akan menyiapkan n8n di Google Cloud Run. n8n adalah alat otomatisasi alur kerja open source yang memungkinkan pengguna menghubungkan berbagai aplikasi dan layanan untuk mengotomatiskan tugas berulang.
Codelab ini didasarkan pada panduan dokumentasi n8n, yang menjelaskan cara menghosting n8n di Google Cloud Run. Kita akan menginstal dan mengonfigurasi versi n8n yang merupakan deployment n8n yang lebih tahan lama dan berkualitas produksi di Cloud Run. Deployment ini mencakup resource seperti database untuk persistensi dan Secret Manager untuk data sensitif.
Yang akan Anda lakukan
- Men-deploy n8n di Google Cloud Run, yang merupakan platform komputasi serverless terkelola sepenuhnya yang menjalankan container tanpa status di infrastruktur Google.
Yang akan Anda pelajari
- Menyediakan dan mengisi database Cloud SQL untuk PostgreSQL yang akan bertindak sebagai versi persisten dan tahan lama untuk penginstalan n8n kita.
- Menyediakan image container n8n ke Google Cloud Run.
- Menguji penginstalan n8n di Google Cloud Run.
Yang akan Anda butuhkan
- Browser web Chrome
- Akun Gmail
- Project Cloud dengan penagihan diaktifkan
2. Sebelum memulai
Membuat project
- Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan diaktifkan di project .
- Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud yang telah dilengkapi dengan bq. Klik Activate Cloud Shell di bagian atas konsol Google Cloud.

- Setelah terhubung ke Cloud Shell, Anda dapat memeriksa apakah Anda sudah diautentikasi dan project ditetapkan ke project ID Anda menggunakan perintah berikut:
gcloud auth list
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
- Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>
- Aktifkan API yang diperlukan melalui perintah yang ditampilkan di bawah. Proses ini mungkin memerlukan waktu beberapa menit, jadi harap bersabar.
gcloud services enable run.googleapis.com \
sqladmin.googleapis.com \
secretmanager.googleapis.com
Setelah berhasil menjalankan perintah, Anda akan melihat pesan yang mirip dengan yang ditampilkan di bawah:
Operation "operations/..." finished successfully.
Jika ada API yang terlewat, Anda selalu dapat mengaktifkannya selama proses penerapan. Baca dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.
Terakhir, kita akan menetapkan beberapa variabel lingkungan yang akan kita gunakan dalam skrip yang akan kita jalankan dalam beberapa langkah berikutnya. Di Terminal Cloud Shell, jalankan dua perintah berikut (Ingatlah untuk mengganti GCP_PROJECT_ID dan GCP_REGION dengan nilai yang sesuai untuk project ID dan region Anda (misalnya, us-central1) tempat Anda ingin melakukan deployment ini. Kita akan menggunakan us-central1 untuk deployment.
export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1
3. Membuat instance Cloud SQL
Kita akan menggunakan instance Google Cloud SQL untuk PostgreSQL, yang akan menjadi lapisan persistensi untuk menyimpan instance n8n dan data eksekusi kita. Hal ini diperlukan agar penyiapan kita tahan lama.
Cloud SQL untuk PostgreSQL adalah layanan database terkelola sepenuhnya yang membantu Anda menyiapkan, memelihara, mengelola, dan mengatur database relasional PostgreSQL di Google Cloud Platform.
Jalankan perintah berikut di Cloud Shell untuk membuat instance:
gcloud sql instances create n8n-db \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres
Perintah ini memerlukan waktu sekitar 5 menit untuk dijalankan. Setelah perintah berhasil dijalankan, Anda akan melihat output yang menunjukkan bahwa perintah telah selesai, beserta informasi instance Cloud SQL Anda seperti NAME, DATABASE_VERSION, LOCATION, dll.
Perhatikan bahwa kita telah menggunakan nilai root-password sebagai postgres. Jika Anda mengubahnya menjadi sesuatu yang lain, harap simpan nilai tersebut.
4. Menyiapkan Database n8n dan kredensial pengguna database
Setelah instance Cloud SQL untuk PostgreSQL siap, kita dapat membuat database n8n di dalamnya, serta menyimpan sandi database dan kunci enkripsi di Google Cloud Secrets Manager.
Pertama, mari kita buat database, yang diberi nama n8n di instance Cloud SQL (n8n-db) yang kita buat. Semua perintah di bawah harus dijalankan di terminal Google Cloud Shell.
gcloud sql databases create n8n --instance=n8n-db
Setelah berhasil dibuat, Anda akan melihat pesan sebagai berikut:
Creating Cloud SQL database...done.
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID
Setelah database dibuat, mari kita buat akun pengguna untuk database tersebut. Kita akan menggunakan kredensial berikut:
- ID pengguna :
n8n-user - Sandi :
n8n
Catatan: Jika Anda ingin menggunakan sandi lain yang lebih kuat (direkomendasikan untuk produksi), Anda harus menggunakannya, bukan sandi yang telah kita pilih di sini, yaitu n8n. Namun, pastikan Anda menggunakannya secara konsisten dalam beberapa perintah berikutnya.
Perintah untuk membuat pengguna database diberikan di bawah:
gcloud sql users create n8n-user \
--instance=n8n-db \
--password="n8n"
Pada tahap ini, sebaiknya simpan kredensial untuk sandi database pengguna dan kunci enkripsi ke Google Cloud Secret Manager, yang merupakan sistem penyimpanan yang aman dan nyaman untuk kunci API, sandi, sertifikat, dan data sensitif lainnya.
Kita mulai dengan perintah berikut yang mengambil sandi yang telah kita gunakan (n8n) dan menyalurkannya ke perintah gcloud secrets create. Kunci rahasia kita adalah n8n-db-password.
printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-
Demikian pula, kita akan menggunakan kumpulan perintah berikutnya untuk membuat kunci enkripsi, lalu membuat variabel rahasia n8n-encryption-key yang akan menyimpan nilai tersebut.
openssl rand -base64 -out my-encryption-key 42
gcloud secrets create n8n-encryption-key \
--data-file=my-encryption-key \
--replication-policy="automatic"
5. Membuat Akun Layanan untuk Google Cloud Run
Kita akan men-deploy n8n di Google Cloud Run pada langkah berikutnya. Untuk mempersiapkannya, kita akan membuat Akun Layanan yang akan digunakan Cloud Run untuk menjalankan alur kerja n8n. Untuk itu, kita ingin memastikan bahwa Akun Layanan yang kita buat hanya memiliki peran/izin persyaratan minimum di Google Cloud.
Mengingat persyaratan kita saat ini, kita akan memerlukan peran berikut untuk Akun Layanan yang kita buat:
roles/cloudsql.client: Diperlukan agar Akun Layanan dapat mengakses database Cloud SQL kitaroles/secretAccessor: Kita harus memberikan peran ini untuk mengakses kunci Secret Manager untukn8n-db-passworddann8n-encryption-key.
Mari kita mulai. Semua perintah di bawah harus dijalankan di Google Cloud Shell. Perintah pertama membuat Akun Layanan, lalu kita memberikan peran yang diperlukan seperti yang dibahas. Jalankan setiap perintah satu per satu. Jika Anda diminta untuk menentukan kondisi untuk salah satu perintah di bawah, pilih "None".
gcloud iam service-accounts create n8n-service-account \
--display-name="n8n Service Account"
export SA_NAME=n8n-service-account@$PROJECT_ID.iam.gserviceaccount.com
gcloud secrets add-iam-policy-binding n8n-db-password \
--member="serviceAccount:$SA_NAME" \
--role="roles/secretmanager.secretAccessor"
gcloud secrets add-iam-policy-binding n8n-encryption-key \
--member="serviceAccount:$SA_NAME" \
--role="roles/secretmanager.secretAccessor"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SA_NAME" \
--role="roles/cloudsql.client"
Kita sekarang siap untuk men-deploy image container n8n ke Google Cloud Run.
6. Men-deploy n8n ke Google Cloud Run
Jalankan perintah berikut di Google Cloud Shell:
gcloud run deploy n8n \
--image=n8nio/n8n:latest \
--command="/bin/sh" \
--args="-c,sleep 5;n8n start" \
--region=$REGION \
--allow-unauthenticated \
--port=5678 \
--memory=2Gi \
--no-cpu-throttling \--set-env-vars="N8N_PORT=5678,N8N_PROTOCOL=https,N8N_ENDPOINT_HEALTH=health,DB_TYPE=postgresdb,DB_POSTGRESDB_DATABASE=n8n,DB_POSTGRESDB_USER=n8n-user,DB_POSTGRESDB_HOST=/cloudsql/$PROJECT_ID:$REGION:n8n-db,DB_POSTGRESDB_PORT=5432,DB_POSTGRESDB_SCHEMA=public,GENERIC_TIMEZONE=UTC,QUEUE_HEALTH_CHECK_ACTIVE=true" \
--set-secrets="DB_POSTGRESDB_PASSWORD=n8n-db-password:latest,N8N_ENCRYPTION_KEY=n8n-encryption-key:latest" \
--add-cloudsql-instances=$PROJECT_ID:$REGION:n8n-db \
--service-account=$SA_NAME
Deployment kemungkinan akan memerlukan waktu sekitar satu menit. Setelah deployment berhasil, Anda akan melihat pesan yang mirip dengan yang ditampilkan di bawah:
Deploying container to Cloud Run service [n8n] in project [YOUR_PROJECT_ID] region [us-central1]
Deploying new service...
Setting IAM Policy...done
Creating Revision...done
Routing traffic...done
Done.
Service [n8n] revision [n8n-00001-8nh] has been deployed and is serving 100 percent of traffic.
Service URL: https://n8n-<SOME_ID>.us-central1.run.app
Catat URL Layanan di output di atas, karena Anda akan menggunakannya pada langkah berikutnya untuk meluncurkan konsol n8n.
7. Menjalankan alur kerja n8n
Luncurkan browser dan buka URL Layanan yang Anda peroleh pada langkah sebelumnya. Anda juga dapat memperoleh URL Layanan dari halaman beranda Cloud Run, tempat Anda akan melihat n8n tercantum sebagai salah satu layanan.
Catatan: Jika Anda mendapatkan error yang menyatakan layar Cannot GET / atau n8n is starting up, hal ini biasanya menunjukkan bahwa n8n masih dimulai. Anda dapat memuat ulang halaman dan halaman tersebut akan dimuat pada akhirnya.
Pada akhirnya, Anda akan melihat layar seperti yang ditampilkan di bawah, tempat Anda dapat menyiapkan Akun Pemilik:

Isi detail yang diperlukan, catat sandi, dan selesaikan penyiapan. Anda dapat melewati beberapa langkah, termasuk langkah yang meminta pengiriman kunci lisensi.
Jika semuanya berjalan lancar, Anda akan melihat halaman beranda untuk n8n seperti yang ditunjukkan di bawah:

Jika Anda sudah familiar dengan n8n, Anda akan dapat menyelesaikan lab ini.
Jika Anda ingin mencoba n8n untuk pengujian singkat, Anda dapat mencoba alur kerja berikut:
- Klik Credentials, lalu Add first credential.

- Kita akan menyiapkan kredensial Kunci Gemini API. Ketik gemini untuk menampilkan opsi Google Gemini (PaLM) Api, lalu klik Continue.

- Anda bisa mendapatkan Kunci Gemini API dari https://aistudio.google.com/app/api-keys.
- Setelah mendapatkan kunci, tempelkan kunci tersebut. n8n akan memvalidasi kunci dan kredensial kini telah disiapkan.
5. Sekarang buka opsi Workflows dan klik Start from scratch atau buat alur kerja baru. Tindakan ini akan menampilkan kanvas kosong, tempat Anda dapat membuat dua node berikut, satu adalah pemicu (Simple Chat) dan yang lainnya adalah Agen, tempat kita akan menyiapkan Kredensial yang kita buat, sehingga model Agen akan menjadi Google Gemini. Pada akhirnya, Anda akan memiliki alur kerja yang terlihat seperti ini: 
- Anda dapat menjalankan alur kerja ini melalui panel chat dan jika semuanya berjalan lancar, Anda akan mendapatkan respons terhadap perintah Anda. Layar eksekusi contoh ditampilkan di bawah:

Dengan demikian, validasi deployment n8n kita di Google Cloud Run telah selesai.
8. Pembersihan
Jika Anda memilih menggunakan codelab ini untuk mempelajari cara menginstal dan menjalankan n8n di Google Cloud Run dan bukan untuk persyaratan produksi / permanen, Anda dapat menghindari biaya berkelanjutan ke akun Google Cloud Anda. Penting untuk menghapus resource yang kita buat selama workshop ini.
Kita akan menghapus instance Cloud SQL dan menghapus layanan Cloud Run yang telah kita deploy.
Pastikan variabel lingkungan berikut ditetapkan dengan benar, sesuai dengan project dan region Anda:
export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"
Dua perintah berikut menghapus layanan Cloud Run yang telah kita deploy:
gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet
Perintah berikut menghapus instance Cloud SQL:
gcloud sql instances delete n8n-db
Dua perintah berikut menghapus kunci Secret Manager yang kita buat:
gcloud secrets delete n8n-db-password
gcloud secrets delete n8n-encryption-key
9. Selamat
Selamat, Anda telah berhasil men-deploy n8n di Google Cloud Run dan memvalidasi penyiapan dengan alur kerja contoh.