开源工作流自动化工具:N8N

一、功能介绍

N8N(全称:"Node-RED like workflow automation tool")是一个基于 Node.js 开发的开源工作流自动化工具,类似于 Zapier、Integromat,但具备以下特点:

1、N8N 的核心特点

特性描述
开源完全开源,可在 GitHub 获取源码,自由部署、二次开发
工作流自动化支持构建“节点式”的工作流流程,例如:当邮件收到时 → 解析邮件 → 存入数据库
支持众多服务超过 300+ 内置集成(如 Gmail、Slack、Trello、MySQL、Webhook、Telegram、OpenAI 等)
可视化界面拖拽式图形界面,零代码或低代码方式构建自动化流程
可运行自定义代码可以在节点中编写 JavaScript 脚本处理数据
可持续执行支持 Cron、Webhook、触发器等方式激活任务
本地数据控制本地部署意味着你对数据的访问、处理完全自主可控
高扩展性支持插件开发、API 调用、自定义节点

2、本地部署 N8N 的方式

N8N 可以在以下环境中部署:

  • Docker 容器部署(推荐)

  • Node.js 本地直接运行

  • 云服务器(如 VPS、云主机)

  • Kubernetes(可选高级部署) 

3、开源版 vs 云托管版(n8n.cloud)功能对比

功能本地部署(开源)云托管(n8n.cloud)
基本节点支持✅ 全部支持✅ 全部支持
多用户❌ 不支持(除非付费)✅ 支持
身份认证(多用户登录)❌(仅 Enterprise)✅(Pro/Enterprise)
版本控制❌ 不支持✅ 部分支持
数据加密✅ 本地控制✅ 由平台维护
操作审计日志❌ 仅 Enterprise 版支持✅(Pro/Enterprise)
高可用部署✅ 可自建(需自己配置)✅ 云原生高可用
支持扩展✅ 自定义节点/模块❌ 不可扩展云端
社区支持✅ 活跃社区✅ 官方支持(仅限付费)

4、本地开源部署的功能限制主要包括:

  1. 不支持多用户协作(需要 Enterprise 许可证)

  2. 不提供团队权限管理、审计日志、LDAP、SSO 等高级特性

  3. 不提供 GUI 方式的用户权限控制

  4. 不支持版本快照与还原功能

  5. 不提供 GUI 异常告警与任务监控(需借助第三方工具)

  6. 企业支持服务需另购 

5、适合本地部署的典型场景

  • 内网自动化(无需连接公网)

  • 企业数据不出本地(如连接 ERP、数据库、文件系统等)

  • 二次开发定制工作流平台

  • 与私有 AI 接口集成(如本地部署的 LLM 服务)

  • 安全审计需求较高的环境(如金融、医疗、政企)

 二、Docker Compose 快速部署示例 + 自定义节点教程

n8n 本地部署方案,包括:

  1. 🚀 Docker Compose 快速部署脚本

  2. 🔐 可选的 Basic Auth 认证设置

  3. 🔧 自定义节点开发路径指引

  4. 📂 数据挂载说明(便于持久化) 

1、Docker Compose 快速部署脚本

创建一个名为 docker-compose.yml 的文件,内容如下:

version: "3.8"

services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=admin123
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - NODE_ENV=production
      - TZ=Asia/Shanghai
      - GENERIC_TIMEZONE=Asia/Shanghai
    volumes:
      - ./n8n_data:/home/node/.n8n

✅ 默认启用了 basic auth 登录认证,用户名密码分别为 admin/admin123,请按需更改。

启动命令:

docker-compose up -d

访问地址:

http://localhost:5678

2、数据持久化与备份

所有的配置和流程会保存在 ./n8n_data 目录下,可定期备份该目录实现全量恢复。

# 备份方式示例
tar czf backup_n8n_$(date +%F).tar.gz ./n8n_data

3、自定义节点开发(Advanced,可选)

如果你希望扩展 N8N 支持私有 API、自定义逻辑,可以开发自定义节点:

开发步骤概览:

  • 在宿主机创建 n8n_custom 文件夹

  • 新建 nodes 目录,编写自定义节点 TS 文件

  • 修改 docker-compose.yml 增加映射挂载:

volumes:
  - ./n8n_data:/home/node/.n8n
  - ./n8n_custom:/data/custom
environment:
  - N8N_CUSTOM_EXTENSIONS=/data/custom
  • 示例目录结构如下:
n8n_custom/
└── nodes/
    └── MyCustomNode/
        ├── MyCustomNode.node.ts
        └── MyCustomNode.credentials.ts

N8N 官方文档:

https://docs.n8n.io/integrations/creating-nodes/

三、生产级别的 N8N + PostgreSQL + Redis 多实例部署脚本(Docker Compose) 

生产级别的 N8N + PostgreSQL + Redis 多实例部署脚本(Docker Compose)支持:

  • 使用 PostgreSQL 持久化数据(替代 SQLite)

  • 使用 Redis 作为队列后端(支持多 Worker)

  • 支持主 Web UI + 多 Worker 架构(适合任务量大时横向扩展)

  • 使用 n8nio/n8n 官方镜像,确保稳定可靠 

1、目录结构建议

n8n-deployment/
├── docker-compose.yml
├── .env
└── n8n_data/

2、.env 文件内容(环境变量统一配置)

# .env
POSTGRES_USER=n8n
POSTGRES_PASSWORD=n8npass
POSTGRES_DB=n8n
POSTGRES_HOST=postgres

REDIS_HOST=redis
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=admin123
N8N_HOST=localhost
N8N_PORT=5678
WEBHOOK_TUNNEL_URL=http://localhost:5678

3、docker-compose.yml 多实例部署脚本 

version: "3.8"

services:

  postgres:
    image: postgres:15
    restart: always
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:7
    restart: always
    volumes:
      - redis_data:/data

  n8n-main:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "5678:5678"
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=${POSTGRES_HOST}
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - QUEUE_MODE=redis
      - QUEUE_REDIS_HOST=${REDIS_HOST}
      - N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE}
      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
      - N8N_HOST=${N8N_HOST}
      - N8N_PORT=${N8N_PORT}
      - WEBHOOK_TUNNEL_URL=${WEBHOOK_TUNNEL_URL}
      - EXECUTIONS_MODE=queue
    volumes:
      - ./n8n_data:/home/node/.n8n
    depends_on:
      - postgres
      - redis

  n8n-worker-1:
    image: n8nio/n8n:latest
    restart: always
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=${POSTGRES_HOST}
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - QUEUE_MODE=redis
      - QUEUE_REDIS_HOST=${REDIS_HOST}
      - EXECUTIONS_MODE=queue
      - N8N_LOG_LEVEL=info
    volumes:
      - ./n8n_data:/home/node/.n8n
    depends_on:
      - n8n-main
      - redis
      - postgres

  # 如需更多 worker,可复制并改名 n8n-worker-2,n8n-worker-3 等

volumes:
  postgres_data:
  redis_data:

4、启动方法

docker-compose --env-file .env up -d

 初次启动建议查看日志是否正常启动:

docker-compose logs -f n8n-main

5、访问方式

  • 管理界面:http://localhost:5678

  • 默认账号密码:admin / admin123(建议首登后修改) 

6、注意事项

  1. Worker 模式适合执行大量工作流任务,但 UI 操作仍在 n8n-main 服务中进行;

  2. 如需对外公开访问,建议使用 Nginx + Let's Encrypt 实现 HTTPS 和域名解析;

  3. 数据持久化通过 volumes 保存在本地;

  4. 默认使用 Asia/Shanghai 时区,如有需要可添加:

environment:
  - TZ=Asia/Shanghai

四、支持 OIDC 登录

支持 OIDC(OpenID Connect)登录,意味着你可以让 N8N 接入统一身份认证系统(如 Auth0、Keycloak、Azure AD、阿里云 RAM 身份服务等),以替代默认的 Basic Auth 登录方式。

1、N8N OIDC 登录支持概览

N8N v1.36.0 起,N8N 已正式支持 OIDC 登录认证(实验功能),支持:

  • 单点登录(SSO)

  • 登录后自动创建账户

  • 自动同步用户信息(email、name 等) 

2、OIDC 环境变量配置(以 Keycloak 为例)

你需要在 .env 文件中添加如下配置:

# 启用 OIDC
N8N_USER_MANAGEMENT_DISABLED=false
N8N_AUTHENTICATION_METHOD=openid

# OIDC 配置(以 Keycloak 为例)
N8N_OIDC_ISSUER_URL=https://auth.example.com/realms/n8n
N8N_OIDC_CLIENT_ID=n8n
N8N_OIDC_CLIENT_SECRET=xxxx-xxxx-xxxx
N8N_OIDC_BASE_URL=https://n8n.example.com

3、OIDC 提供者(以 Keycloak 为例)

你需要:

  1. 在 Keycloak 创建一个 Client

    • Client ID: n8n

    • Client Secret: xxxx

    • Redirect URI: https://n8n.example.com/rest/auth/redirect

    • Root URL: https://n8n.example.com

  2. 启用以下 Client Scopes

    • profile

    • email

    • openid

  3. 开启 Standard Flow Enabled,关闭 Direct Access Grants 

4、在 docker-compose.yml 中添加环境变量

n8n-main 服务中添加如下内容:

    environment:
      - N8N_AUTHENTICATION_METHOD=openid
      - N8N_USER_MANAGEMENT_DISABLED=false
      - N8N_OIDC_ISSUER_URL=${N8N_OIDC_ISSUER_URL}
      - N8N_OIDC_CLIENT_ID=${N8N_OIDC_CLIENT_ID}
      - N8N_OIDC_CLIENT_SECRET=${N8N_OIDC_CLIENT_SECRET}
      - N8N_OIDC_BASE_URL=${N8N_OIDC_BASE_URL}

 .env 文件中要添加:

N8N_OIDC_ISSUER_URL=https://auth.example.com/realms/n8n
N8N_OIDC_CLIENT_ID=n8n
N8N_OIDC_CLIENT_SECRET=xxxxyyyyzzzz
N8N_OIDC_BASE_URL=https://n8n.example.com

5、登录逻辑流程

  1. 用户访问 https://n8n.example.com,点击「Sign in with OpenID Connect」

  2. 被重定向到 Keycloak / Auth0 等登录页

  3. 成功登录后,返回 n8n 并自动创建用户账号

  4. 登陆后的用户将出现在 n8n 的用户管理界面中 

6、搭配 Nginx 使用 HTTPS

强烈建议搭配 Nginx 或 Caddy 作为反向代理实现 https://n8n.example.com,否则 OIDC 登录会因回调 URI 不安全而失败。

7、兼容问题提示

OIDC 平台是否兼容说明
Keycloak✅ 完全支持建议使用
Auth0✅ 支持需要设置回调 URI
Azure AD✅ 支持建议用企业账号登录测试
Okta✅ 支持需要调整授权流程
阿里云 RAM🚧 有限制需要配合企业应用网关

五、Keycloak 配置

适配 N8N 的完整 Keycloak + OIDC 登录配置教程,适合自建 Keycloak 身份服务,并让 N8N 通过统一认证登录(SSO):

1、环境假设

项目
N8N 域名https://n8n.example.com
Keycloak 域名https://auth.example.com
Realm 名称n8n
Client 名称n8n
N8N OIDC 重定向地址https://n8n.example.com/rest/auth/redirect

2、Keycloak 安装(略)

你可以用以下 Docker 命令快速部署 Keycloak:

docker run -d \
  --name keycloak \
  -p 8080:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak:24.0.1 \
  start-dev

浏览器访问 http://localhost:8080 登录后台管理。

3、在 Keycloak 中配置 N8N Client

✅ 1. 创建 Realm

  • 左侧菜单 → “Realm” → “Create Realm”

  • 名称:n8n

✅ 2. 创建用户(可选)

  • “Users” → “Create new user”

  • 填写 Email、First Name、Last Name,并设置密码(Credentials)

✅ 3. 创建 OIDC Client

  • 左侧菜单 → “Clients” → “Create client”

  • Client ID:n8n

  • Client Type:OpenID Connect

  • Root URL:https://n8n.example.com

点击「Next」

✅ 4. 配置 Client 设置

确保以下设置:

参数
Standard flow enabled✅ 启用
Direct access grants enabled❌ 禁用
Implicit flow enabled❌ 禁用
Valid redirect URIshttps://n8n.example.com/*
Web origins+ 自动填充即可

点击「Save」

4、获取密钥信息

Clients → n8n → Credentials 中,找到:

  • Client ID:n8n

  • Client Secret:xxxxxx-xxxxx-xxxxx 

5、设置 N8N 的环境变量

.env 文件中添加以下内容:

N8N_AUTHENTICATION_METHOD=openid
N8N_USER_MANAGEMENT_DISABLED=false

N8N_OIDC_ISSUER_URL=https://auth.example.com/realms/n8n
N8N_OIDC_CLIENT_ID=n8n
N8N_OIDC_CLIENT_SECRET=你刚才复制的 client secret
N8N_OIDC_BASE_URL=https://n8n.example.com

6、重启服务并测试 

docker-compose --env-file .env up -d

 浏览器访问 https://n8n.example.com,将看到一个 “Sign in with OpenID Connect” 的按钮,点击后跳转到 Keycloak 登录。

六、Nginx + HTTPS 自动部署脚本 

以下是 N8N + Keycloak 的 Nginx + HTTPS 自动部署脚本,它会:

  1. 自动安装 Nginx;

  2. 使用 acme.sh 免费申请 Let's Encrypt 证书;

  3. 配置 HTTPS + 反代 N8N (https://n8n.example.com) 和 Keycloak (https://auth.example.com);

  4. 设置自动续期。 

1、使用前准备

你需要提前准备:

  • ✅ 一个公网服务器(如 Ubuntu)

  • ✅ 正确解析的域名:

    • n8n.example.com → 指向服务器 IP

    • auth.example.com → 同上 

2、自动部署脚本(n8n-nginx-https.sh)

将以下脚本保存为 n8n-nginx-https.sh

#!/bin/bash

# === 配置参数 ===
N8N_DOMAIN="n8n.example.com"
KEYCLOAK_DOMAIN="auth.example.com"
EMAIL="your@email.com"

# === 安装 Nginx 和 acme.sh ===
sudo apt update && sudo apt install -y nginx socat curl git

# 安装 acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc

# 设置 CA 为 Let's Encrypt
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt

# === 申请证书 ===
~/.acme.sh/acme.sh --issue --standalone -d $N8N_DOMAIN -d $KEYCLOAK_DOMAIN --email $EMAIL --force

# 安装证书到 Nginx 目录
sudo mkdir -p /etc/nginx/ssl/$N8N_DOMAIN
~/.acme.sh/acme.sh --install-cert -d $N8N_DOMAIN \
  --key-file       /etc/nginx/ssl/$N8N_DOMAIN/key.pem  \
  --fullchain-file /etc/nginx/ssl/$N8N_DOMAIN/cert.pem \
  --reloadcmd     "sudo systemctl reload nginx"

# === 配置 Nginx ===
sudo tee /etc/nginx/sites-available/n8n-keycloak <<EOF
server {
    listen 80;
    server_name $N8N_DOMAIN $KEYCLOAK_DOMAIN;
    return 301 https://\$host\$request_uri;
}

server {
    listen 443 ssl;
    server_name $N8N_DOMAIN;

    ssl_certificate /etc/nginx/ssl/$N8N_DOMAIN/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/$N8N_DOMAIN/key.pem;

    location / {
        proxy_pass http://localhost:5678;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto \$scheme;
    }
}

server {
    listen 443 ssl;
    server_name $KEYCLOAK_DOMAIN;

    ssl_certificate /etc/nginx/ssl/$N8N_DOMAIN/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/$N8N_DOMAIN/key.pem;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto \$scheme;
    }
}
EOF

sudo ln -s /etc/nginx/sites-available/n8n-keycloak /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

echo "✅ Nginx + HTTPS 配置完成!"
echo "🔐 N8N 地址: https://$N8N_DOMAIN"
echo "🔐 Keycloak 地址: https://$KEYCLOAK_DOMAIN"

3 、使用方法

chmod +x n8n-nginx-https.sh
./n8n-nginx-https.sh

⚠️ 确保 80 和 443 端口未被占用,建议先不要启动 N8N 或 Keycloak。

4、自动续期(acme.sh 默认已自动设置)

可用以下命令手动测试续期:

~/.acme.sh/acme.sh --renew -d n8n.example.com --force

5、生产建议

项目建议配置
防火墙开放 80/443 端口
HTTPS 安全等级可升级为 TLS 1.3(修改 Nginx)
HTTPS 强制跳转已启用
nginx reload自动在证书续期时执行

七、示例脚本

version: '3.8'

services:
  postgres:
    image: postgres:15
    container_name: n8n_postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - ./data/postgres:/var/lib/postgresql/data

  redis:
    image: redis:7
    container_name: n8n_redis
    restart: unless-stopped
    volumes:
      - ./data/redis:/data

  keycloak:
    image: quay.io/keycloak/keycloak:24.0.2
    container_name: n8n_keycloak
    command: start-dev
    restart: unless-stopped
    environment:
      KC_DB: postgres
      KC_DB_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
      KC_DB_USERNAME: ${POSTGRES_USER}
      KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
      KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN}
      KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_PASSWORD}
    ports:
      - "8080:8080"
    depends_on:
      - postgres

  n8n:
    image: n8nio/n8n
    container_name: n8n_app
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      DB_TYPE: postgres
      DB_POSTGRESDB_HOST: postgres
      DB_POSTGRESDB_PORT: 5432
      DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
      DB_POSTGRESDB_USER: ${POSTGRES_USER}
      DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
      N8N_HOST: ${N8N_DOMAIN}
      N8N_PORT: 5678
      N8N_PROTOCOL: https
      WEBHOOK_URL: https://${N8N_DOMAIN}/
      GENERIC_TIMEZONE: Asia/Shanghai
      N8N_AUTH_EXCLUDE_ENDPOINTS: "healthz"
      N8N_AUTH_OIDC_ENABLED: true
      N8N_AUTH_OIDC_ISSUER_URL: https://${KEYCLOAK_DOMAIN}/realms/${KEYCLOAK_REALM}
      N8N_AUTH_OIDC_CLIENT_ID: ${OIDC_CLIENT_ID}
      N8N_AUTH_OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET}
    volumes:
      - ./data/n8n:/home/node/.n8n
    depends_on:
      - postgres
      - redis

  nginx:
    image: nginx:alpine
    container_name: n8n_nginx
    restart: unless-stopped
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - /etc/ssl/n8n:/etc/ssl/n8n:ro
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - n8n
      - keycloak

volumes:
  n8n_data:
  redis_data:
  pg_data:

# .env 示例:
# POSTGRES_USER=n8n_user
# POSTGRES_PASSWORD=n8n_pass
# POSTGRES_DB=n8n_db
# N8N_DOMAIN=n8n.example.com
# KEYCLOAK_ADMIN=admin
# KEYCLOAK_PASSWORD=adminpass
# KEYCLOAK_DOMAIN=keycloak.example.com
# KEYCLOAK_REALM=n8n
# OIDC_CLIENT_ID=n8n-client
# OIDC_CLIENT_SECRET=client-secret-key

.env 示例(放在项目根目录)

POSTGRES_USER=n8n_user
POSTGRES_PASSWORD=n8n_pass
POSTGRES_DB=n8n_db

N8N_DOMAIN=n8n.example.com

KEYCLOAK_ADMIN=admin
KEYCLOAK_PASSWORD=adminpass
KEYCLOAK_DOMAIN=keycloak.example.com
KEYCLOAK_REALM=n8n

OIDC_CLIENT_ID=n8n-client
OIDC_CLIENT_SECRET=client-secret-key

nginx/ssl-deploy.sh

#!/bin/bash
set -e

DOMAIN_LIST=("n8n.example.com" "keycloak.example.com")
CERT_PATH="/etc/ssl/n8n"

mkdir -p "$CERT_PATH"

# 安装 acme.sh
if ! command -v acme.sh &> /dev/null; then
  curl https://get.acme.sh | sh
  source ~/.bashrc
fi

for domain in "${DOMAIN_LIST[@]}"; do
  ~/.acme.sh/acme.sh --issue --standalone -d "$domain" --force
  ~/.acme.sh/acme.sh --install-cert -d "$domain" \\
    --key-file "$CERT_PATH/${domain}.key" \\
    --fullchain-file "$CERT_PATH/${domain}.crt" \\
    --reloadcmd "docker restart n8n_nginx"
done

记得将域名替换为你的实际域名并提前解析到部署服务器公网 IP!

nginx/nginx.conf

events {}

http {
  server {
    listen 80;
    server_name n8n.example.com keycloak.example.com;
    return 301 https://$host$request_uri;
  }

  server {
    listen 443 ssl;
    server_name n8n.example.com;

    ssl_certificate     /etc/ssl/n8n/n8n.example.com.crt;
    ssl_certificate_key /etc/ssl/n8n/n8n.example.com.key;

    location / {
      proxy_pass http://n8n:5678;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
  }

  server {
    listen 443 ssl;
    server_name keycloak.example.com;

    ssl_certificate     /etc/ssl/n8n/keycloak.example.com.crt;
    ssl_certificate_key /etc/ssl/n8n/keycloak.example.com.key;

    location / {
      proxy_pass http://keycloak:8080;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
  }
}

 README.md(摘要)

# N8N + Keycloak + PostgreSQL + Redis 一体化系统部署

## 功能特性

- OIDC 登录集成 Keycloak
- 数据持久化
- HTTPS 自动部署
- 容器一键运行

## 快速开始

1. 修改 `.env` 和 `nginx.conf`
2. 运行证书部署脚本:

   ```bash
   chmod +x nginx/ssl-deploy.sh
   ./nginx/ssl-deploy.sh

#启动服务
docker-compose up -d

#浏览器访问:

#N8N:https://n8n.example.com

#Keycloak:https://keycloak.example.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海科技服务

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值