Google Cloud Run पर n8n को डिप्लॉय और रन करना

1. परिचय

इस कोडलैब में, Google Cloud Run पर n8n सेट अप किया जाएगा. n8n, ओपन-सोर्स वर्कफ़्लो ऑटोमेशन टूल है. इसकी मदद से, उपयोगकर्ता अलग-अलग ऐप्लिकेशन और सेवाओं को कनेक्ट करके, बार-बार किए जाने वाले टास्क को अपने-आप पूरा होने के लिए सेट अप कर सकते हैं.

यह कोडलैब, n8n की दस्तावेज़ गाइड पर आधारित है. इसमें बताया गया है कि Google Cloud Run पर n8n को कैसे होस्ट किया जाता है. हम n8n का ऐसा वर्शन इंस्टॉल और कॉन्फ़िगर करेंगे जो Cloud Run पर n8n का ज़्यादा समय तक चलने वाला, प्रोडक्शन-ग्रेड डिप्लॉयमेंट हो. इसमें डेटा को सेव करने के लिए डेटाबेस और संवेदनशील डेटा के लिए सीक्रेट मैनेजर जैसे संसाधन शामिल हैं.

आपको क्या करना होगा

  • n8n को Google Cloud Run पर डिप्लॉय करें. यह पूरी तरह से मैनेज किया गया, बिना सर्वर वाला कंप्यूट प्लैटफ़ॉर्म है. यह Google के इंफ़्रास्ट्रक्चर पर स्टेटलेस कंटेनर चलाता है.

आपको क्या सीखने को मिलेगा

  • Cloud SQL for PostgreSQL डेटाबेस को प्रोविज़न और पॉप्युलेट करना. यह डेटाबेस, n8n इंस्टॉलेशन के लिए लगातार और लंबे समय तक काम करने वाले वर्शन के तौर पर काम करेगा.
  • n8n कंटेनर इमेज को Google Cloud Run पर उपलब्ध कराएं.
  • Google Cloud Run पर n8n को इंस्टॉल करके देखें.

आपको इन चीज़ों की ज़रूरत होगी

  • Chrome वेब ब्राउज़र
  • Gmail खाता
  • बिलिंग की सुविधा वाला Cloud प्रोजेक्ट

2. शुरू करने से पहले

प्रोजेक्ट बनाना

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर जाकर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें .
  3. आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. इसमें bq पहले से लोड होता है. Google Cloud Console में सबसे ऊपर मौजूद, Cloud Shell चालू करें पर क्लिक करें.

Cloud Shell बटन की इमेज चालू करें

  1. Cloud Shell से कनेक्ट होने के बाद, यह देखने के लिए कि आपकी पुष्टि हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर सेट किया गया है, इस निर्देश का इस्तेमाल करें:
gcloud auth list
  1. यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं.
gcloud config list project
  1. अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
  1. नीचे दिए गए निर्देश का इस्तेमाल करके, ज़रूरी एपीआई चालू करें. इसमें कुछ मिनट लग सकते हैं. इसलिए, कृपया इंतज़ार करें.
gcloud services enable run.googleapis.com \
                       sqladmin.googleapis.com \
                       secretmanager.googleapis.com 

कमांड के सही तरीके से लागू होने पर, आपको यहां दिखाए गए मैसेज जैसा मैसेज दिखेगा:

Operation "operations/..." finished successfully.

अगर कोई एपीआई छूट जाता है, तो उसे लागू करने के दौरान कभी भी चालू किया जा सकता है. gcloud कमांड और उनके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.

आखिर में, हम कुछ एनवायरमेंट वैरिएबल सेट करने जा रहे हैं. इनका इस्तेमाल हम उन स्क्रिप्ट में करेंगे जिन्हें हमें अगले कुछ चरणों में चलाना है. अपने Cloud Shell टर्मिनल में, इन दो कमांड को चलाएं. GCP_PROJECT_ID और GCP_REGION को अपने प्रोजेक्ट आईडी और उस क्षेत्र (जैसे, us-central1) की वैल्यू से बदलना न भूलें जहां आपको यह डिप्लॉयमेंट करना है. हम डिप्लॉयमेंट के लिए us-central1 का इस्तेमाल करेंगे.

export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1

3. Cloud SQL इंस्टेंस बनाना

हम Google Cloud SQL for PostgreSQL इंस्टेंस का इस्तेमाल करेंगे. यह हमारा परसिस्टेंस लेयर होगा, ताकि हम अपने n8n इंस्टेंस और एक्ज़ीक्यूशन डेटा को सेव कर सकें. ऐसा इसलिए ज़रूरी है, ताकि हमारा सेटअप लंबे समय तक काम करे.

Cloud SQL for PostgreSQL, पूरी तरह से मैनेज की गई डेटाबेस सेवा है. इसकी मदद से, Google Cloud Platform पर PostgreSQL के मिलते-जुलते डेटाबेस को सेट अप, बनाए, मैनेज, और सही तरीके से चलाया जा सकता है.

इंस्टेंस बनाने के लिए, Cloud Shell में यह कमांड चलाएं:

gcloud sql instances create n8n-db \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres

इस कमांड को पूरा होने में करीब पांच मिनट लगते हैं. कमांड के पूरा होने के बाद, आपको एक आउटपुट दिखेगा. इससे पता चलेगा कि कमांड पूरी हो गई है. साथ ही, आपको अपने Cloud SQL इंस्टेंस की जानकारी भी दिखेगी. जैसे, नाम, DATABASE_VERSION, LOCATION वगैरह.

ध्यान दें कि हमने root-password वैल्यू को postgres के तौर पर इस्तेमाल किया है. अगर आपको इसे किसी और नाम से बदलना है, तो कृपया इसे अपने पास रखें.

4. n8n डेटाबेस और डेटाबेस के उपयोगकर्ता क्रेडेंशियल सेट अप करना

अब हमारे पास Cloud SQL for PostgreSQL इंस्टेंस तैयार है. इसलिए, हम इसमें अपना n8n डेटाबेस बना सकते हैं. साथ ही, Google Cloud Secrets Manager में अपने डेटाबेस का पासवर्ड और एन्क्रिप्शन कुंजी सेव कर सकते हैं.

सबसे पहले, हम अपने बनाए गए Cloud SQL इंस्टेंस (n8n-db) में n8n नाम का डेटाबेस बनाते हैं. यहां दी गई सभी कमांड, Google Cloud Shell टर्मिनल में चलानी हैं.

gcloud sql databases create n8n --instance=n8n-db

खाता बन जाने के बाद, आपको यह मैसेज दिखेगा:

Creating Cloud SQL database...done.                                                                                                                                                                                                           
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID

डेटाबेस बन जाने के बाद, अब उस डेटाबेस के लिए उपयोगकर्ता खाता बनाते हैं. हम इन क्रेडेंशियल का इस्तेमाल करेंगे:

  • यूज़र आईडी : n8n-user
  • पासवर्ड : n8n

ध्यान दें: अगर आपको किसी ऐसे पासवर्ड का इस्तेमाल करना है जो ज़्यादा मज़बूत हो (प्रोडक्शन के लिए सुझाव दिया गया है), तो आपको यहां चुने गए पासवर्ड यानी n8n के बजाय उसका इस्तेमाल करना चाहिए. हालांकि, यह पक्का करें कि आपने अगले कुछ कमांड में भी उसी पासवर्ड का इस्तेमाल किया हो.

डेटाबेस उपयोगकर्ता बनाने का निर्देश यहां दिया गया है:

gcloud sql users create n8n-user \
    --instance=n8n-db \
    --password="n8n"

इस समय, उपयोगकर्ता डेटाबेस के पासवर्ड और एन्क्रिप्शन कुंजी के क्रेडेंशियल को Google Cloud Secret Manager में सेव करना एक अच्छा विकल्प है. यह एपीआई कुंजियों, पासवर्ड, सर्टिफ़िकेट, और अन्य संवेदनशील डेटा के लिए एक सुरक्षित और सुविधाजनक स्टोरेज सिस्टम है.

हम यहां दिए गए निर्देश से शुरुआत करते हैं. यह निर्देश, इस्तेमाल किए गए पासवर्ड को n8n) में लेता है और उसे gcloud secrets create निर्देश में पाइप करता है. हमारी सीक्रेट कुंजी n8n-db-password होगी.

printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-        

इसी तरह, हम एन्क्रिप्शन कुंजी जनरेट करने के लिए कमांड के अगले सेट का इस्तेमाल करेंगे. इसके बाद, हम n8n-encryption-key नाम का एक सीक्रेट वैरिएबल बनाएंगे, जिसमें वैल्यू सेव की जाएगी.

openssl rand -base64 -out my-encryption-key 42

gcloud secrets create n8n-encryption-key \
    --data-file=my-encryption-key \
    --replication-policy="automatic"        

5. Google Cloud Run के लिए सेवा खाता बनाना

अगले चरण में, हम Google Cloud Run पर n8n को डिप्लॉय करेंगे. इसके लिए, हम एक सेवा खाता बनाएंगे. Cloud Run, n8n वर्कफ़्लो को लागू करने के लिए इस सेवा खाते का इस्तेमाल करेगा. इसके लिए, हम यह पक्का करना चाहते हैं कि हमारे बनाए गए सेवा खाते के पास, Google Cloud पर सिर्फ़ ज़रूरी भूमिकाएं/अनुमतियां हों.

हमारी मौजूदा शर्तों के मुताबिक, हमें बनाए गए सेवा खाते के लिए इन भूमिकाओं की ज़रूरत होगी:

  • roles/cloudsql.client : सेवा खाते को हमारे Cloud SQL डेटाबेस को ऐक्सेस करने के लिए इसकी ज़रूरत होती है
  • roles/secretAccessor : हमें n8n-db-password और n8n-encryption-key, दोनों के लिए Secret Manager की कुंजियों को ऐक्सेस करने के लिए, यह भूमिका देनी होगी.

चलिए, शुरू करें। नीचे दिए गए सभी निर्देशों को Google Cloud Shell में लागू करना होगा. पहले कमांड से सेवा खाता बनता है. इसके बाद, हम ज़रूरी भूमिकाएं असाइन करते हैं. हर कमांड को एक के बाद एक चलाएं. अगर आपसे नीचे दिए गए किसी भी निर्देश के लिए शर्त तय करने के लिए कहा जाता है, तो "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"

अब हम n8n कंटेनर इमेज को Google Cloud Run पर डिप्लॉय करने के लिए तैयार हैं.

6. n8n को Google Cloud Run पर डिप्लॉय करना

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,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

इसे लागू होने में करीब एक मिनट लग सकता है. टैग को सही तरीके से डिप्लॉय करने पर, आपको यहां दिखाए गए मैसेज जैसा कोई मैसेज दिखेगा:

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

ऊपर दिए गए आउटपुट में, सेवा का यूआरएल नोट करें. इसका इस्तेमाल अगले चरण में, n8n कंसोल लॉन्च करने के लिए किया जाएगा.

7. n8n वर्कफ़्लो चलाना

कोई ब्राउज़र लॉन्च करें और पिछले चरण में मिला सेवा का यूआरएल खोलें. Cloud Run के होम पेज से भी सेवा का यूआरएल पाया जा सकता है. यहां आपको n8n, सेवाओं की सूची में दिखेगा.

ध्यान दें: अगर आपको Cannot GET / स्क्रीन या n8n is starting up वाली गड़बड़ी का मैसेज मिलता है, तो इसका मतलब है कि n8n अभी भी शुरू हो रहा है. पेज को रीफ़्रेश किया जा सकता है. इसके बाद, यह लोड हो जाएगा.

इसके बाद, आपको नीचे दी गई स्क्रीन दिखेगी. यहां मालिक खाते को सेट अप किया जा सकता है:

5a3b1d60d02b13ec.png

ज़रूरी जानकारी भरें, पासवर्ड नोट करें, और सेटअप पूरा करें. आपके पास कुछ चरणों को छोड़ने का विकल्प होता है. जैसे, लाइसेंस कुंजी भेजने के लिए कहा जाने वाला चरण.

अगर सब कुछ ठीक रहा, तो आपको n8n का होम पेज इस तरह दिखेगा:

3e072e9189ff9464.png

अगर आपको n8n के बारे में जानकारी है, तो आपको इसे समझने और लैब को पूरा करने में आसानी होगी.

अगर आपको n8n को आज़माना है, तो यह वर्कफ़्लो आज़माएं:

  1. क्रेडेंशियल पर क्लिक करें. इसके बाद, पहला क्रेडेंशियल जोड़ें पर क्लिक करें.

14a1f3d2098a266c.png

  1. हम Gemini API पासकोड क्रेडेंशियल सेट अप करेंगे. Google Gemini (PaLM) Api का विकल्प लाने के लिए, gemini टाइप करें. इसके बाद, जारी रखें पर क्लिक करें.

7f48bfe35e5d9e98.png

  1. Gemini API पासकोड पाने के लिए, https://aistudio.google.com/app/api-keys पर जाएं.
  2. कुंजी मिलने के बाद, उसे चिपकाएं. n8n कुंजी की पुष्टि करेगा और क्रेडेंशियल सेट अप हो जाएगा.

3f31cbfc5072f113.png 5. अब Workflows विकल्प पर जाएं और नए सिरे से शुरू करें या नया वर्कफ़्लो बनाएं पर क्लिक करें. इससे एक खाली कैनवस खुलेगा. यहां आपको ये दो नोड बनाने होंगे: एक ट्रिगर (सिंपल चैट) और दूसरा एजेंट. एजेंट नोड में, हम बनाए गए क्रेडेंशियल को सेट अप करेंगे, ताकि एजेंट मॉडल Google Gemini हो. आखिर में, आपके पास ऐसा वर्कफ़्लो होना चाहिए:

8f394e456ae7d1a.png

  1. इस वर्कफ़्लो को चैट पैन के ज़रिए चलाया जा सकता है. अगर सब कुछ ठीक रहा, तो आपको अपने प्रॉम्प्ट का जवाब मिल जाएगा. यहां एक्ज़ीक्यूशन की सैंपल स्क्रीन दिखाई गई हैं:

aec85c84f65d0da1.png

इससे, Google Cloud Run पर n8n डिप्लॉयमेंट की पुष्टि करने की प्रोसेस पूरी हो जाती है.

8. साफ़-सफ़ाई सेवा

अगर आपने इस कोडलैब का इस्तेमाल, Google Cloud Run पर n8n को इंस्टॉल और चलाने का तरीका जानने के लिए किया है, न कि प्रोडक्शन / स्थायी ज़रूरत के लिए, तो अपने Google Cloud खाते पर लगने वाले मौजूदा शुल्क से बचने के लिए, इस वर्कशॉप के दौरान बनाए गए संसाधनों को मिटाना ज़रूरी है.

हम Cloud SQL इंस्टेंस को मिटा देंगे. साथ ही, हमने जो Cloud Run सेवा डिप्लॉय की है उसे भी मिटा देंगे.

पक्का करें कि आपके प्रोजेक्ट और इलाके के हिसाब से, ये एनवायरमेंट वैरिएबल सही तरीके से सेट किए गए हों:

export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"

नीचे दी गई दो कमांड, उन Cloud Run सेवाओं को मिटा देती हैं जिन्हें हमने डिप्लॉय किया है:

gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet

नीचे दी गई कमांड, Cloud SQL इंस्टेंस को मिटा देती है:

gcloud sql instances delete n8n-db

नीचे दिए गए दो निर्देशों से, Secret Manager की उन कुंजियों को मिटाया जा सकता है जिन्हें हमने बनाया है:

gcloud secrets delete n8n-db-password

gcloud secrets delete n8n-encryption-key

9. बधाई हो

बधाई हो, आपने Google Cloud Run पर n8n को डिप्लॉय कर लिया है. साथ ही, आपने सैंपल वर्कफ़्लो की मदद से सेटअप की पुष्टि कर ली है.

रेफ़रंस दस्तावेज़