March 20

Руководство по самостоятельному развертыванию n8n на Google Cloud Run

Хотите использовать n8n без ежемесячных подписок, контролировать свои данные и избежать сложностей с обслуживанием серверов? Google Cloud Run предоставляет именно такую возможность — серверное развертывание с оплатой за использование.

Это руководство проведет вас через процесс развертывания n8n на Google Cloud Run с использованием PostgreSQL для постоянного хранения данных. В итоге вы получите полностью функциональную систему, которая автоматически масштабируется, подключается к сервисам Google через OAuth и не тратит ваш бюджет в период простоя.​

Обзор

n8n отлично подходит для автоматизации всех тех утомительных задач, которые вы предпочли бы не выполнять вручную. В этой настройке используются:

  • Google Cloud Run для хостинга приложения (оплата только за время работы).
  • Cloud SQL PostgreSQL для постоянного хранения данных (чтобы ваши рабочие процессы сохранялись после перезапуска).
  • Google Secret Manager для безопасного хранения конфиденциальных данных.
  • Google Artifact Registry для хранения контейнерных образов.

Предварительные требования

  1. Аккаунт в Google Cloud Platform (GCP): Если у вас его еще нет, зарегистрируйтесь на console.cloud.google.com.
  2. Установленный Google Cloud SDK: Это позволит вам использовать команду gcloud для управления ресурсами GCP. Инструкции по установке доступны здесь.
  3. Docker: Понадобится для создания контейнерного образа n8n. Скачайте и установите Docker с официального сайта.

Шаг 1: Настройка проекта GCP

1. Создайте новый проект в GCP:

gcloud projects create your-project-id
gcloud config set project your-project-id

2. Включите необходимые API:

gcloud services enable run.googleapis.com sqladmin.googleapis.com secretmanager.googleapis.com artifactregistry.googleapis.com

Шаг 2: Настройка базы данных PostgreSQL

1. Создайте экземпляр Cloud SQL для PostgreSQL:

gcloud sql instances create n8n-postgres --database-version=POSTGRES_13 --cpu=1 --memory=4GB --region=us-central1

2. Установите пароль для пользователя postgres:

gcloud sql users set-password postgres --instance=n8n-postgres --password=yourpassword

3. Создайте базу данных для n8n:

gcloud sql databases create n8n_database --instance=n8n-postgres

Шаг 3: Хранение конфиденциальных данных в Secret Manager

1. Сохраните пароль базы данных в Secret Manager:

echo -n 'yourpassword' | gcloud secrets create n8n-db-password --data-file=-

2. Сохраните секретный ключ JWT:

openssl rand -base64 32 | gcloud secrets create n8n-jwt-secret --data-file=-

3. Сохраните ключ шифрования:

openssl rand -base64 32 | gcloud secrets create n8n-encryption-key --data-file=-

Шаг 4: Создание и загрузка контейнерного образа n8n

1. Создайте репозиторий в Artifact Registry:

gcloud artifacts repositories create n8n-repo --repository-format=docker --location=us-central1

2. Аутентифицируйтесь в Artifact Registry:

gcloud auth configure-docker us-central1-docker.pkg.dev

3. Создайте файл Dockerfile:

FROM n8n/n8n:latest

ENV N8N_PORT=8080
ENV DB_TYPE=postgresdb
ENV DB_POSTGRESDB_HOST=localhost
ENV DB_POSTGRESDB_PORT=5432
ENV DB_POSTGRESDB_DATABASE=n8n_database
ENV DB_POSTGRESDB_USER=postgres
ENV DB_POSTGRESDB_PASSWORD=/secrets/db-password
ENV N8N_JWT_SECRET=/secrets/jwt-secret
ENV N8N_ENCRYPTION_KEY=/secrets/encryption-key
ENV N8N_BASIC_AUTH_ACTIVE=true
ENV N8N_BASIC_AUTH_USER=admin
ENV N8N_BASIC_AUTH_PASSWORD=adminpassword

COPY startup.sh /startup.sh
ENTRYPOINT ["/startup.sh"]

4. Создайте файл startup.sh:

#!/bin/bash
set -e

# Считывание секретов из Secret Manager
export DB_POSTGRESDB_PASSWORD=$(cat /secrets/db-password)
export N8N_JWT_SECRET=$(cat /secrets/jwt-secret)
export N8N_ENCRYPTION_KEY=$(cat /secrets/encryption-key)

# Запуск n8n
n8n

5. Сделайте startup.sh исполняемым:

chmod +x startup.sh

6. Постройте и загрузите образ:

docker build -t us-central1-docker.pkg.dev/your-project-id/n8n-repo/n8n:latest .
docker push us-central1-docker.pkg.dev/your-project-id/n8n-repo/n8n:latest

Шаг 5: Развертывание n8n на Google Cloud Run

1. Создайте сервисный аккаунт для Cloud Run:

gcloud iam service-accounts create n8n-cloud-run --display-name "n8n Cloud Run"

2. Предоставьте необходимые роли сервисному аккаунту:

gcloud projects add-iam-policy-binding your-project-id --member=serviceAccount:n8n-cloud-run@your-project-id.iam.gserviceaccount.com --role=roles/run.invoker
gcloud projects add-iam-policy-binding your-project-id --member=serviceAccount:n8n-cloud-run@your-project