n8n 是一款强大的开源自动化工具,可帮助您轻松连接各种应用和服务,构建高效的工作流。本教程将详细介绍如何在自有服务器上部署 n8n,涵盖Docker 容器化部署的全流程,并提供生产级优化建议和安全加固方案。可以通过本指南快速搭建稳定、高性能的 n8n 自动化平台,实现业务流程的智能化管理。
1. 评估部署方案
n8n提供多种部署方式,服务器部署适合需要完全控制的中高级用户。在开始前,请确认:
-
自建服务器的必要性,可以参考这篇文章,选择适合的 n8n 安装部署方式:完整指南
-
技术能力匹配度
-
长期维护成本
2. 基础设施准备
2.1 域名注册(关键步骤)
实操建议:
首先,购买一个域名。啥域名都可以,别在国内买,除非你想备案。
-
域名选择技巧:
-
使用.com/.io等通用顶级域
-
避免特殊字符和连词符
-
长度控制在12个字符内
-
技术细节:
# 验证DNS解析
dig +short yourdomain.com
nslookup yourdomain.com 8.8.8.8
2.2 服务器
你需要一台服务器来运行 n8n,如果你是纯新手,推荐使用海外的服务器。
你可以用中国大陆的服务器,但这意味着你的域名需要备案,且后期你的 n8n 将无法接入 Google 和 OpenAI 的 AI 服务。
值得注意的是,如果你购买阿里云或腾讯云的香港节点,虽然不需要备案,但同样不能接入 Google 和 OpenAI 的 AI 服务。
3. 将域名指向你的服务器
如果你按照上两步准备好了域名,服务器,那么你接下来需要将两者结合。也就是将你的域名指向你的服务器,你可以在 CloudCone 后台找到你的服务器 IP 地址:
3.1 安全基线配置
必要操作:
-
SSH加固:
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config echo "AllowUsers yourusername" >> /etc/ssh/sshd_config systemctl restart sshd
-
防火墙规则:
ufw allow 22/tcp ufw allow 80/tcp ufw allow 443/tcp ufw enable
3.2 1Panel深度配置
在 CloudCone 的服务器面板,有一个 VNC 按钮,点击后,将进入一个命令行界面。
接下来,请完全遵照 1Panel 的官方文档,在你的服务器上安装一个 1Panel 面板。
如果你是真真正正的纯小白,你还可以完整的看一遍 1Panel 官方的 B 站教程,该教程会教你如何安装、使用、更新、维护 1Panel。
对于纯小白来说,我真的建议看完 1Panel 的视频教程在继续部署 n8n,否则后续你可能会遇到各种基础问题需要返回来学习。
性能调优:
-
修改Docker配置:
{"log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3"},"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"] }
-
资源限制:
-
设置容器内存限制
-
配置CPU优先级
-
4. n8n容器化部署
如果你见到了这个页面,证明你可以开始部署 n8n 了,否则请完成【前置准备工作】。
第一步:拉取镜像
在 1Panel 里,进入 容器>镜像>拉取镜像
,然后在镜像名处输入 n8nio/n8n。
如果拉取失败,请参考这个页面,将 Docker 源更换为国内源(https://docker.1panel.live/)。
第二步:创建永久化目录
在 1Panel 里,进入 主机>文件
,然后在 /opt/1panel/apps
目录下创建一个 n8n
目录。然后再创建一个 n8ndata
目录。
n8n
这个目录,是留给 n8n 程序写数据的,也就是你的 Workflow、运行日志、第三方 API 凭证都在这个目录里,以后备份的时候备份这个目录,就能保证 n8n 整体数据不丢。
n8ndata
这个目录,是用来我们自己方便往里存文件用的,比如你以后要用 n8n 生成或读取 Excel,都需要把文件上传到这个目录。
如果你的 Linux 操作系统与我不同,具体的路径可能不同,但整体来说,放在 1panel 面板的 apps 目录下方便管理就行。
记住新建的这两个目录的地址,并将其权限设置为 777。
第三步:创建容器
在 1panel 里进入 容器>容器
,创建一个新的容器:
这里有许多参数需要设置,我将其列在这里:
参数 | 值 | 说明 |
名称 | n8n | 你可以随便起,记住就行 |
镜像 | n8nio/n8n:latest | 如果你第一步正确,这里可以在下拉菜单里看到。 |
端口 | 暴露端口 | 这里要添加两个端口 |
└ | 服务器127.0.0.1:5678 容器 5678 协议 tcp | ㅤ |
└ | 服务器127.0.0.1:5678 容器 5678 协议 udp | ㅤ |
网络 | 1panel-network | ㅤ |
ipv4 | 172.18.0.6 | 你可以修改最后一段(6的部分),选个没被占用的即可。 |
挂载 | 本机目录: | 你需要在这里点一下添加,然后添加两个本机目录(而不是挂载卷)。 |
环境变量 | N8N_HOST=xxxx.com WEBHOOK_URL=https://xxxx.com GENERIC_TIMEZONE=Asia/Shanghai N8N_PROXY_HOPS=1 | xxxx.com 为你买的域名,如果你想在二级域名运行 n8n,那就填写二级域名。 |
第四步:创建网站
在 1panel 面板中,进入 网站>网站>创建网站
。
在第一次使用 1panel 的网站功能时,可能会被要求安装 OpenResty,按照官方提示引导操作即可。如遇到问题,可参考 1panel 文档。
在创建网站界面,选择“反向代理”(最上面)类型,然后在主域名里输入你购买的域名,代号不用惯,“监听 IPV6”可开可不开。
代理地址的协议头选择 http,地址输入 localhost:5678/
⬆️结尾一定要有/,否则会有 Socket 连接问题。
然后点击确认,创建网站。
第五步:设置 HTTPS 访问
进入 1panel 的 网站>证书>创建证书
,如果此前的步骤正常,你可以从 从网站中获取
那里找到 n8n 的网站。
然后,你需要根据提示创建一个新的 Acme 账户,验证方式选择 http。如果你的域名存放在 Godaddy、阿里云、DNSPod 或 Cloudflare,也可以选择用 DNS 账号验证,然后根据这个文档的指引操作:1Panel - DNS账户。稍微复杂一点,但后续创建其他网站时会更加方便。
自动续签的勾一定要选上,不然每三个月你要重新操作一次。
然后,回到 网站>网站>n8n网站
,点击右边的配置,进入网站配置界面,再点击 HTTPS 选项卡。
打开 HTTPS,选择 访问 HTTP 自动跳转到 HTTPS
,选择你刚才申请的证书,其他的部分不用修改,点保存。
第六步:初始化 n8n
如果以上全部顺利,现在你就可以通过你的域名访问部署好的 n8n 了,接下来就要进入 n8n 的设置环节了。
根据界面,填入邮箱、姓、名、密码,即可创建你的第一个账号。这个账号也将是 n8n 的超级管理员,可以创建其他账号,并且权限无法更改,一定要记好你的账号密码,私有部署的 n8n 无法找回账户密码,如果这个账号的密码忘记了,只能删除重装了。
首次登录还会让你填个调研问卷,随便填或按照你的实际情况填就行,然后就会进入 Editor 界面,证明你的部署大功告成:
4.1 高级容器配置
生产级参数:
version: '3'
services:n8n:image: n8nio/n8n:latestrestart: unless-stoppedports:- "5678:5678"volumes:- ./n8n-data:/home/node/.n8n- ./n8n-files:/filesenvironment:- N8N_HOST=yourdomain.com- WEBHOOK_URL=https://yourdomain.com- NODE_ENV=production- DB_TYPE=postgresdb- DB_POSTGRESDB_DATABASE=n8n- DB_POSTGRESDB_HOST=postgres- DB_POSTGRESDB_PORT=5432- DB_POSTGRESDB_USER=n8n- DB_POSTGRESDB_PASSWORD=yourpassworddeploy:resources:limits:cpus: '2'memory: 2G
4.2 数据库集成
PostgreSQL配置指南:
-
创建专用数据库:
CREATE DATABASE n8n; CREATE USER n8n WITH ENCRYPTED PASSWORD 'securepassword'; GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n; ALTER DATABASE n8n SET statement_timeout = 30000;
5. 生产环境优化
5.1 性能调优
-
工作流优化:
-
设置合理的轮询间隔
-
启用缓存机制
-
-
系统参数:
# 增加文件描述符限制 echo "fs.file-max = 100000" >> /etc/sysctl.conf # 调整进程限制 echo "* soft nofile 65535" >> /etc/security/limits.conf
5.2 监控方案
推荐工具栈:
-
Prometheus + Grafana监控看板
-
关键指标:
-
工作流执行耗时
-
API调用成功率
-
系统资源占用
-
6. 安全加固方案
6.1 访问控制
-
网络层:
-
配置安全组规则
-
设置IP白名单
-
-
应用层:
-
启用双因素认证
-
配置登录失败锁定
-
6.2 数据安全
备份策略:
# 每日备份脚本
#!/bin/bash
BACKUP_DIR="/backups/n8n"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
tar -czvf $BACKUP_DIR/n8n_$TIMESTAMP.tar.gz /opt/1panel/apps/n8n
find $BACKUP_DIR -type f -mtime +30 -delete
7. 故障排查指南
7.1 常见问题解决
问题现象 | 排查步骤 | 解决方案 |
---|---|---|
502错误 | 1. 检查容器状态 2. 查看日志 3. 验证端口 | 重启服务/调整代理配置 |
性能下降 | 1. 监控资源使用 2. 分析慢查询 | 扩容/优化工作流 |
7.2 日志分析技巧
# 实时查看日志
docker logs -f n8n_container_id# 过滤错误日志
grep -i "error" /opt/1panel/apps/n8n/logs/n8n.log
资料推荐
- 🔗 n8n官方文档参考
- ✨中转使用教程
本指南持续更新,建议收藏并定期查看n8n官方文档获取最新部署建议。部署过程中遇到任何技术问题,欢迎在评论区留言讨论。
更多内容可查看本专栏文章,有用的话记得点赞收藏噜!