大数跨境
0
0

虚拟机上安装n8n:docker compose方式

虚拟机上安装n8n:docker compose方式 CodeGallop
2025-12-02
3
今天开始学习使用n8n实践各种工作流的配置。本文来介绍一下如何在虚拟机上的centos系统上安装n8n。准备采用docker compose方式进行部署。
本篇文章有如下几个节点:
  • 虚拟机上docker代理设置
  • n8n docker-compose.yml编辑
  • n8n启动错误处理
  • n8n管理员账号注册
  • n8n简单的示例配置

虚拟机上docker代理设置(非必须)

因为现在很多docker镜像仓库对国内网络不是太友好,所以为了能顺利拉取镜像,需要在虚拟机的系统上配置docker的代理。步骤如下:

一、前提条件

1. 主机环境

  - Windows 主机已安装 Clash for Windows,并开启「Allow LAN」功能(默认代理端口为 `7890`,HTTP/HTTPS/SOCKS5 协议均可支持)。

   - 确保虚拟机与主机网络互通(建议使用 NAT 模式),可通过 `ping 主机IP` 验证网络连通性。

2. CentOS 配置

   - 关闭防火墙和 SELinux(临时或永久关闭)

systemctl stop firewalldsetenforce 0

 二、配置 Docker 代理,通过 systemd 配置(推荐)

1. 创建代理配置文件

sudo mkdir -p /etc/systemd/system/docker.service.dsudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

2. 添加代理信息

   假设主机 IP 为 `192.168.1.100`,Clash 代理端口为 `7890`:

 [Service] Environment="HTTP_PROXY=http://192.168.1.100:7890" Environment="HTTPS_PROXY=http://192.168.1.100:7890" Environment="NO_PROXY=localhost,127.0.0.1,docker.io"

说明:`NO_PROXY` 可排除无需代理的地址(如 Docker Hub 镜像域名 `docker.io`)。

3. 重载配置并重启 Docker

sudo systemctl daemon-reloadsudo systemctl restart docker
4. 检查 Docker 环境变量
systemctl show --property=Environment docker
输出应包含 HTTP_PROXY 和 HTTPS_PROXY 的配置
n8n docker-compose.yml编辑
1. 创建n8n docker compose目录
mkdir n8n-dockercd n8n-docker/mkdir n8n_datavi docker-compose.yml
2. docker-compose.yml 内容:
version: "3"
services:  n8n:    image: docker.n8n.io/n8nio/n8n    container_name: n8n    restart: always    ports:      - "5678:5678"    environment:      - GENERIC_TIMEZONE=Asia/Shanghai      - TZ=Asia/Shanghai      # 这一步非常重要,允许通过 IP 访问 Webhook      - N8N_HOST=0.0.0.0      - N8N_PORT=5678      - N8N_PROTOCOL=http      # 将下面的 192.168.1.100 替换为你虚拟机的实际 IP      - WEBHOOK_URL=http://192.168.80.162:5678/
      # 【新增】显式告诉前端编辑器当前的访问地址,解决 WebSocket/跨域问题      - N8N_EDITOR_BASE_URL=http://192.168.80.162:5678/
      # 如果你的浏览器安全策略非常严格,可以尝试禁用安全 cookie(仅限测试环境)      - N8N_SECURE_COOKIE=false    volumes:      - ./n8n_data:/home/node/.n8n
n8n 启动错误处理

1. 启动容器:

sudo docker compose up -d
#查看日志:sudo docker compose logs -f --tail=20

启动日志截图如下:

说明n8n的后端服务已经正常启动了。

2. 浏览器访问n8n

在浏览器输入http://192.168.80.162:5678,出现如下错误:

将截图丢给Gemini 3 分析,给出的回复如下:

问题核心分析:

从你的截图和控制台错误来看:

  1. 后端已就绪:日志显示 Editor is now accessible,说明 n8n 核心服务在运行。

  2. 前端报错:TypeError: Cannot read properties of undefined (reading 'ldap')。这意味着前端页面加载了,但它向后端请求“配置信息”(/rest/config)时,请求被浏览器拦截了或者失败了,导致前端拿不到数据,试图读取空数据的 ldap 属性时崩溃。

  3. 安全警告:The Cross-Origin-Opener-Policy header has been ignored... origin was untrustworthy。

    • 这是关键。Chrome 等现代浏览器认为 http://192.168.x.x 是“不安全”的(只有 localhost 和 https 才是安全的)。

    • n8n 的最新版本(1.120.x)为了安全增加了更严格的 HTTP 头(Header),这与 HTTP 局域网访问产生了冲突。


解决方案:

要么版本降级,要么使用 Chrome 浏览器“不安全来源白名单”,因为我是本地测试,所以选择了后者。步骤如下:

如果你必须用最新版,这是因为 Chrome 强行拦截了不安全来源的 API 请求。我们需要告诉 Chrome:“信任这个 IP”。

  1. 在 Chrome 浏览器地址栏输入:chrome://flags/#unsafely-treat-insecure-origin-as-secure

  2. 在高亮的 Insecure origins treated as secure 文本框中,输入你的 n8n 地址:http://192.168.80.162:5678

  3. 将右侧的下拉菜单改为 Enabled

  4. 点击右下角的 Relaunch 重启浏览器。

  5. 再次访问 n8n 页面。


n8n 管理员账号注册

首次访问n8n平台需要注册管理员账号:

然后n8n询问你的用途、角色、公司规模等等,随意选择一下即可。

之后会询问你要不要获取一个免费的 license key,可以点击跳过即可

这样就完成了n8n的部署,可以开始配置工作流了。

n8n 简单示例配置

1. 点击左侧“+”,选择workflow,即可开始一个新的工作流配置:


2. 添加一个On chat message,后面接一个Basic LLM Chain,写一个Prompt

3. 然后添加大语言模型

这里使用openrouter的接口,先添加一个openrouter的api-key,然后选择要用哪个大模型。

然后下下面聊天输入框输入信息就可以测试工作流了。

到此,本地虚拟机上docker安装n8n平台基本完成。

需要注意的几个点:

1. 管理员账号密码务必要记住,忘记密码后好像没地方重置,问大模型如何重置密码,使用n8n user-management:reset,命令好像也不起作用;

2. n8n 默认使用的数据库是sqlite3 

3. 配置好一个工作流后,记得及时导出备份。


今天就分享到这,下次见

如果本文对你有帮助,不妨点个免费的赞收藏备用。

👇 关注Gallop,让AI提升你的效率


图片


👉 添加我的微信(gallop_liu),备注“加群”,交流并分享个人的一些资料。

程序猿的养生茶:

胎菊8颗+玫瑰6颗+枸杞少许

夏天胎菊多一些,枸杞少一些,冬天则相反

【声明】内容源于网络
0
0
CodeGallop
AI正在改变世界,而你可以轻松成为参与者!AI提高代码效率-->AI提高工作学习效率-->AI提升生活指数,用AI武装你的生活和工作吧!快来加入AI探索之旅吧!🤖🚀
内容 42
粉丝 0
CodeGallop AI正在改变世界,而你可以轻松成为参与者!AI提高代码效率-->AI提高工作学习效率-->AI提升生活指数,用AI武装你的生活和工作吧!快来加入AI探索之旅吧!🤖🚀
总阅读58
粉丝0
内容42