1. Introdução
Neste codelab, você vai configurar o n8n no Google Cloud Run. O n8n é uma ferramenta de automação de fluxo de trabalho de código aberto que permite aos usuários conectar diferentes aplicativos e serviços para automatizar tarefas repetitivas.
O codelab é baseado no guia de documentação do n8n, que explica como hospedar o n8n no Google Cloud Run. Vamos instalar e configurar uma versão do n8n que é uma implantação mais durável e de nível de produção do n8n no Cloud Run. Ele inclui recursos como um banco de dados para persistência e o Secret Manager para dados sensíveis.
O que você vai fazer
- Implante o n8n no Google Cloud Run, que é uma plataforma de computação sem servidor totalmente gerenciada que executa contêineres sem estado na infraestrutura do Google.
O que você vai aprender
- Provisionar e preencher um banco de dados do Cloud SQL para PostgreSQL que vai atuar como uma versão persistente e durável para nossa instalação do n8n.
- Provisionar a imagem do contêiner do n8n no Google Cloud Run.
- Testar a instalação do n8n no Google Cloud Run.
O que é necessário
- Navegador da Web Google Chrome
- Uma conta do Gmail
- Um projeto do Cloud com faturamento ativado
2. Antes de começar
Criar um projeto
- No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
- Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto .
- Você vai usar o Cloud Shell, um ambiente de linha de comando executado no Google Cloud que vem pré-carregado com bq. Clique em Ativar o Cloud Shell na parte de cima do console do Google Cloud.

- Depois de se conectar ao Cloud Shell, verifique se você já está autenticado e se o projeto está definido como seu ID do projeto usando o seguinte comando:
gcloud auth list
- Execute o comando a seguir no Cloud Shell para confirmar se o comando gcloud sabe sobre seu projeto.
gcloud config list project
- Se o projeto não estiver definido, use este comando:
gcloud config set project <YOUR_PROJECT_ID>
- Ative as APIs necessárias usando o comando mostrado abaixo. Isso pode levar alguns minutos. Aguarde.
gcloud services enable run.googleapis.com \
sqladmin.googleapis.com \
secretmanager.googleapis.com
Após a execução bem-sucedida do comando, você verá uma mensagem semelhante à mostrada abaixo:
Operation "operations/..." finished successfully.
Se alguma API for perdida, você sempre poderá ativá-la durante a implementação. Consulte a documentação para ver o uso e os comandos gcloud.
Por fim, vamos definir algumas variáveis de ambiente que serão usadas nos scripts que vamos executar nas próximas etapas. No terminal do Cloud Shell, execute os dois comandos a seguir. Lembre-se de substituir GCP_PROJECT_ID e GCP_REGION pelos valores respectivos do ID do projeto e da região (por exemplo, us-central1) em que você quer que essa implantação seja feita. Vamos usar us-central1 para a implantação.
export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1
3. Criar uma instância do Cloud SQL
Vamos usar uma instância do Google Cloud SQL para PostgreSQL, que será nossa camada de persistência para armazenar nossa instância do n8n e dados de execução. Isso é necessário para que nossa configuração seja durável.
O Cloud SQL para PostgreSQL é um serviço de banco de dados totalmente gerenciado que ajuda a configurar, manter, gerenciar e administrar seus bancos de dados relacionais PostgreSQL no Google Cloud Platform.
Execute o seguinte comando no Cloud Shell para criar a instância:
gcloud sql instances create n8n-db \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres
Esse comando leva aproximadamente 5 minutos para ser executado. Depois que o comando for executado, você verá uma saída que indica que o comando foi concluído, juntamente com as informações da instância do Cloud SQL, como NAME, DATABASE_VERSION, LOCATION etc.
Usamos o valor root-password como postgres. Se você mudar para outra coisa, mantenha isso à mão.
4. Configurar o banco de dados do n8n e as credenciais do usuário do banco de dados
Agora que temos nossa instância do Cloud SQL para PostgreSQL pronta, podemos criar nosso banco de dados do n8n nela, além de armazenar nossa senha do banco de dados e a chave de criptografia no Google Cloud Secrets Manager.
Primeiro, vamos criar um banco de dados chamado n8n na instância do Cloud SQL (n8n-db) que criamos. Todos os comandos abaixo precisam ser executados no terminal do Google Cloud Shell.
gcloud sql databases create n8n --instance=n8n-db
Após a criação, você verá uma mensagem como esta:
Creating Cloud SQL database...done.
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID
Agora que o banco de dados foi criado, vamos criar uma conta de usuário para ele. Vamos usar as seguintes credenciais:
- ID do usuário :
n8n-user - Senha :
n8n
Observação: caso você queira usar outra senha mais forte (recomendada para produção), use-a em vez da senha que escolhemos aqui, ou seja, n8n, mas verifique se você a usa de forma consistente nos próximos comandos também.
O comando para criar o usuário do banco de dados é fornecido abaixo:
gcloud sql users create n8n-user \
--instance=n8n-db \
--password="n8n"
Nesse momento, é uma boa ideia armazenar as credenciais da senha do banco de dados do usuário e da chave de criptografia no Google Cloud Secret Manager, que é um sistema de armazenamento seguro e conveniente para chaves de APIs, senhas, certificados e outros dados sensíveis.
Começamos com o comando a seguir, que usa a senha que usamos (n8n) e a canaliza para o comando gcloud secrets create. Nossa chave secreta será n8n-db-password.
printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-
Da mesma forma, vamos usar o próximo conjunto de comandos para gerar uma chave de criptografia e, em seguida, criar uma variável secreta n8n-encryption-key que vai conter o valor.
openssl rand -base64 -out my-encryption-key 42
gcloud secrets create n8n-encryption-key \
--data-file=my-encryption-key \
--replication-policy="automatic"
5. Criar uma conta de serviço para o Google Cloud Run
Vamos implantar o n8n no Google Cloud Run na próxima etapa. Para se preparar para isso, vamos criar uma conta de serviço que o Cloud Run vai usar para executar fluxos de trabalho do n8n. Para isso, queremos garantir que a conta de serviço que criamos tenha apenas os papéis/permissões mínimos necessários no Google Cloud.
Considerando nossos requisitos atuais, vamos precisar dos seguintes papéis para a conta de serviço que criamos:
roles/cloudsql.client: isso é necessário para que a conta de serviço acesse nosso banco de dados do Cloud SQL.roles/secretAccessor: vamos precisar fornecer esse papel para acessar as chaves do Secret Manager paran8n-db-passworden8n-encryption-key.
Vamos lá! Todos os comandos abaixo precisam ser executados no Google Cloud Shell. O primeiro cria a conta de serviço e, em seguida, fornecemos os papéis necessários, conforme discutido. Execute cada um dos comandos um após o outro. Se você precisar especificar uma condição para qualquer um dos comandos abaixo, escolha "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"
Agora estamos prontos para implantar a imagem do contêiner do n8n no Google Cloud Run.
6. Implantar o n8n no Google Cloud Run
Execute o comando a seguir no 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
A implantação provavelmente levará cerca de um minuto. Após a implantação, você verá uma mensagem semelhante à mostrada abaixo:
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
Anote o URL do serviço na saída acima, porque você o usará na próxima etapa para iniciar o console do n8n.
7. Executar um fluxo de trabalho do n8n
Inicie um navegador e acesse o URL do serviço que você recebeu na etapa anterior. Você também pode acessar o URL do serviço na página inicial do Cloud Run, em que o n8n será listado como um dos serviços.
Observação: se você receber um erro dizendo Cannot GET / ou que n8n is starting up, isso geralmente indica que o n8n ainda está sendo iniciado. Você pode atualizar a página e ela será carregada.
Por fim, você verá uma tela como a mostrada abaixo, em que é possível configurar a conta do proprietário:

Preencha os detalhes necessários, anote a senha e conclua a configuração. Você pode pular algumas etapas, incluindo a etapa que pede o envio de uma chave de licença.
Se tudo correr bem, você verá a página inicial do n8n, conforme mostrado abaixo:

Se você estiver familiarizado com o n8n, poderá trabalhar e concluir o laboratório.
Se você quiser fazer um pequeno teste do n8n, tente o seguinte fluxo de trabalho:
- Clique em Credenciais e em Adicionar primeira credencial.

- Vamos configurar uma credencial de chave da API Gemini. Digite "gemini" para abrir a opção da API Google Gemini (PaLM) e clique em Continuar.

- Você pode acessar a chave da API Gemini em https://aistudio.google.com/app/api-keys.
- Depois de receber a chave, cole-a. O n8n vai validar a chave e a credencial será configurada.
5. Agora acesse a opção "Fluxos de trabalho" e clique em "Começar do zero" ou crie um novo fluxo de trabalho. Isso vai abrir uma tela em branco, em que você pode criar os dois nós a seguir: um é um acionador (chat simples) e o outro é um agente, em que vamos configurar a credencial que criamos para que o modelo de agente seja o Google Gemini. Por fim, você terá um fluxo de trabalho como este: 
- Você pode executar esse fluxo de trabalho pelo painel de chat e, se tudo correr bem, receber uma resposta às suas solicitações. As telas de execução de amostra são mostradas abaixo:

Isso conclui nossa validação da implantação do n8n no Google Cloud Run.
8. Revisão dos dados
Se você optou por usar este codelab para aprender a instalar e executar o n8n no Google Cloud Run e não para produção / requisito permanente, é importante excluir os recursos que criamos durante este workshop para evitar cobranças contínuas na sua conta do Google Cloud.
Vamos excluir a instância do Cloud SQL e o serviço do Cloud Run que implantamos.
Verifique se as seguintes variáveis de ambiente estão definidas corretamente, de acordo com seu projeto e região:
export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"
Os dois comandos a seguir excluem os serviços do Cloud Run que implantamos:
gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet
O comando a seguir exclui a instância do Cloud SQL:
gcloud sql instances delete n8n-db
Os dois comandos a seguir excluem as chaves do Secret Manager que criamos:
gcloud secrets delete n8n-db-password
gcloud secrets delete n8n-encryption-key
9. Parabéns
Parabéns, você implantou o n8n no Google Cloud Run e validou a configuração com um fluxo de trabalho de exemplo.