Windows 10 本地部署工作流自动化工具 n8n

参考

环境

软件/系统 版本 说明
Windows windows 10 专业版 22H2 64 位操作系统, 基于 x64 的处理器
Docker Desktop 4.48.0
Docker Docker version 28.5.1, build e180ab8
Docker Compose Docker Compose version v2.40.0-desktop.1
postgres 16-alpine 镜像
n8n 1.119.1 镜像

正文

下面的内容由豆包生成

以下是适配 PostgreSQL 数据库的 n8n Docker Compose 配置文件(docker-compose.yml),基于官方推荐规范优化,包含数据持久化、时区配置、安全加固等核心特性:

version: '3.8'

services:
  # PostgreSQL 数据库服务
  postgres:
    image: postgres:16-alpine  # 轻量稳定的PostgreSQL镜像,适配生产环境
    container_name: n8n-postgres
    restart: always  # 容器异常时自动重启
    environment:
      POSTGRES_USER: n8n_user  # 数据库用户名(可自定义)
      POSTGRES_PASSWORD: ${DB_PASSWORD}  # 数据库密码(建议通过环境变量注入,避免硬编码)
      POSTGRES_DB: n8n_db  # n8n专用数据库名(可自定义)
      TZ: ${TIMEZONE}  # 时区统一(与n8n服务保持一致)
    volumes:
      - postgres_data:/var/lib/postgresql/data  # 数据持久化卷,避免容器删除后数据丢失
    healthcheck:
      # 健康检查:确保数据库启动完成后再启动n8n
      test: ["CMD-SHELL", "pg_isready -U n8n_user -d n8n_db"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - n8n-network  # 独立网络,隔离服务

  # n8n 服务
  n8n:
    image: n8nio/n8n:latest  # 使用稳定版n8n(生产环境推荐,如需测试可改为next)
    container_name: n8n
    restart: always
    environment:
      # 时区配置(与数据库统一,避免时间同步问题)
      GENERIC_TIMEZONE: ${TIMEZONE}
      TZ: ${TIMEZONE}
      # 强制配置文件权限(安全加固,防止非授权修改)
      N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
      # 数据库连接配置(关联PostgreSQL服务)
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: postgres  # 容器名作为hostname(同一网络下可直接访问)
      DB_POSTGRESDB_PORT: 5432  # PostgreSQL默认端口
      DB_POSTGRESDB_DATABASE: n8n_db  # 与PostgreSQL的POSTGRES_DB一致
      DB_POSTGRESDB_USER: n8n_user  # 与PostgreSQL的POSTGRES_USER一致
      DB_POSTGRESDB_PASSWORD: ${DB_PASSWORD}  # 与PostgreSQL的POSTGRES_PASSWORD一致
      # 可选:n8n安全配置(生产环境建议启用)
      N8N_BASIC_AUTH_ACTIVE: "true"  # 启用基础认证
      N8N_BASIC_AUTH_USER: ${N8N_USER}  # n8n登录用户名
      N8N_BASIC_AUTH_PASSWORD: ${N8N_PASSWORD}  # n8n登录密码
      # N8N_PROTOCOL: "https"  # 生产环境建议启用HTTPS(需配合反向代理)
    volumes:
      - n8n_data:/home/node/.n8n  # n8n配置、工作流数据持久化卷
    ports:
      - "5678:5678"  # 暴露n8n默认端口(宿主机端口:容器端口,可自定义宿主机端口)
    depends_on:
      postgres:
        condition: service_healthy  # 依赖PostgreSQL健康检查通过后启动
    networks:
      - n8n-network

# 定义共享网络(隔离容器通信)
networks:
  n8n-network:
    driver: bridge

# 定义数据卷(持久化存储)
volumes:
  postgres_data:  # PostgreSQL数据卷
  n8n_data:       # n8n配置/工作流数据卷

使用说明

  1. 环境变量配置:在 docker-compose.yml 同级目录创建 .env 文件,填写以下参数(自定义值):
     # 数据库密码(建议复杂密码)
     DB_PASSWORD=xiaqiuchu_db_password
     # 时区(例如Asia/Shanghai、Europe/London)
     TIMEZONE=Asia/Shanghai
     # n8n登录认证(可选,生产环境建议配置)
     N8N_USER=xiaqiuchu_n8n_username
     N8N_PASSWORD=xiaqiuchu_n8n_password
    
  2. 启动服务
    # 启动容器(后台运行)
    docker-compose up -d
    
    # 查看日志(排查启动问题)
    docker-compose logs -f
    
  3. 访问n8n:浏览器打开 http://<服务器IP>:5678(如配置HTTPS,需改为 https),输入 .env 中配置的 N8N_USERN8N_PASSWORD 登录。

核心特性说明

  • 数据持久化:通过 postgres_datan8n_data 卷分别持久化数据库数据和n8n配置/工作流,容器删除后数据不丢失。
  • 服务依赖:通过 depends_on + 健康检查确保PostgreSQL完全启动后再启动n8n,避免连接失败。
  • 安全加固:启用配置文件权限强制校验、可选基础认证,数据库密码通过环境变量注入(避免硬编码泄露)。
  • 兼容性:基于官方推荐的Docker镜像和配置规范,支持Linux、Mac、Windows(Docker Desktop)环境。

扩展建议

  • 生产环境建议搭配反向代理(如Nginx)配置HTTPS证书。
  • 如需监控,可添加Prometheus + Grafana组件(参考n8n官方文档)。
  • 定期备份 postgres_datan8n_data 卷数据,避免意外丢失。
posted @ 2025-11-13 22:11  夏秋初  阅读(83)  评论(0)    收藏  举报