)
n8n 自动化平台部署与配置笔记 项目概述在 CentOS 7 虚拟机上通过 Docker 部署 n8n 2.3.1 版本并通过 Nginx 反向代理配置 HTTPS 访问。 环境准备系统环境操作系统CentOS 7.9虚拟化VMware 虚拟机网络桥接模式IP: 192.168.3.95防火墙firewalld软件要求Docker 20.10Docker Compose可选Nginx 1.20 安装步骤1. Docker 安装与配置# 安装 Dockersudoyuminstall-yyum-utilssudoyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudoyuminstall-ydocker-ce docker-ce-cli containerd.io# 启动 Docker 服务sudosystemctl startdockersudosystemctlenabledocker# 验证安装docker--version2. 拉取 n8n 镜像# 拉取最新版本dockerpull n8nio/n8n:2.3.1# 或离线安装如果已下载镜像dockerload-in8n_2.3.1.tar n8n 基础部署最小化运行测试用dockerrun-d--rm--namen8n-p5678:5678 n8nio/n8n:2.3.1持久化运行推荐dockerrun-d\--namen8n\-p5678:5678\-v~/n8n_data:/home/node/.n8n\n8nio/n8n:2.3.1完整环境变量配置dockerrun-d\--namen8n\-p5678:5678\-v~/n8n_data:/home/node/.n8n\-eN8N_BASIC_AUTH_ACTIVEtrue\-eN8N_BASIC_AUTH_USERadmin\-eN8N_BASIC_AUTH_PASSWORD1qazWSX\-eN8N_WEBHOOK_URLhttps://192.168.3.95/\-eTZAsia/Shanghai\-eGENERIC_TIMEZONEAsia/Shanghai\n8nio/n8n:2.3.1 HTTPS 反向代理配置1. Nginx 安装# CentOS 7 需要先修复 yum 仓库sudomv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupsudocurl-o/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.reposudoyum clean allsudoyum makecache# 通过 EPEL 安装 Nginxsudoyuminstallepel-release-ysudoyuminstallnginx-y2. SSL 证书生成# 创建证书目录sudomkdir-p/etc/nginx/ssl/n8ncd/etc/nginx/ssl/n8n# 生成自签名证书sudoopenssl req-x509-nodes-days365-newkeyrsa:2048\-keyoutn8n.key-outn8n.crt\-subj/CCN/STBeijing/LBeijing/OMyCompany/CN192.168.3.95# 设置权限sudochmod600n8n.keysudochmod644n8n.crt3. Nginx 配置文件创建/etc/nginx/conf.d/n8n.conf# HTTP 重定向到 HTTPS server { listen 80; server_name 192.168.3.95; return 301 https://$server_name$request_uri; } # HTTPS 服务器 server { listen 443 ssl http2; server_name 192.168.3.95; # SSL 证书配置 ssl_certificate /etc/nginx/ssl/n8n/n8n.crt; ssl_certificate_key /etc/nginx/ssl/n8n/n8n.key; # SSL 安全配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; # 安全响应头 add_header Strict-Transport-Security max-age63072000; includeSubDomains; preload always; add_header X-Frame-Options DENY always; add_header X-Content-Type-Options nosniff always; # n8n 应用代理 location / { proxy_pass http://localhost:5678; proxy_http_version 1.1; # WebSocket 支持 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; # 传递客户端信息 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; } # 健康检查端点 location /healthz { proxy_pass http://localhost:5678/healthz; access_log off; } }4. 调整 n8n 配置# 停止并重新运行 n8n绑定到本地端口dockerstop n8ndockerrmn8ndockerrun-d\--namen8n\--restartunless-stopped\-p127.0.0.1:5678:5678\-v~/n8n_data:/home/node/.n8n\-eN8N_PROTOCOLhttps\-eN8N_HOST127.0.0.1\-eN8N_PORT5678\-eN8N_WEBHOOK_URLhttps://192.168.3.95/\-eN8N_BASIC_AUTH_ACTIVEtrue\-eN8N_BASIC_AUTH_USERadmin\-eN8N_BASIC_AUTH_PASSWORD4321!QAZ\-eGENERIC_TIMEZONEAsia/Shanghai\n8nio/n8n:2.3.1dockerrun-d\--namen8n\--restartunless-stopped\-p127.0.0.1:5678:5678\-v~/n8n_data:/home/node/.n8n\-v/etc/localtime:/etc/localtime:ro\-v/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone:ro\-eTZAsia/Shanghai\-eN8N_PROTOCOLhttps\-eN8N_HOST127.0.0.1\-eN8N_PORT5678\-eN8N_WEBHOOK_URLhttps://192.168.3.95/\-eN8N_BASIC_AUTH_ACTIVEtrue\-eN8N_BASIC_AUTH_USERadmin\-eN8N_BASIC_AUTH_PASSWORD4321!QAZ\-eGENERIC_TIMEZONEAsia/Shanghai\n8nio/n8n:2.3.15. 防火墙配置# 开放 HTTP/HTTPS 端口sudofirewall-cmd--permanent--add-servicehttpsudofirewall-cmd--permanent--add-servicehttpssudofirewall-cmd--reload# 验证规则sudofirewall-cmd --list-all️ 权限与 SELinux 问题解决1. 数据目录权限# 修复 n8n 数据目录权限sudochown-R1000:1000 ~/n8n_datasudochmod-R755~/n8n_data2. SELinux 处理# 查看 SELinux 状态sudosestatus# 临时禁用用于测试sudosetenforce0# 允许 Nginx 网络连接sudosetsebool-Phttpd_can_network_connect1# 永久禁用如果需要sudosed-is/SELINUXenforcing/SELINUXdisabled/g/etc/selinux/config✅ 验证与测试服务状态检查# 检查所有服务状态sudosystemctl status nginxdockerps|grepn8n# 测试端口监听sudonetstat-tlnp|grep-E:(80|443|5678)连接测试# 测试 HTTPS 连接curl-khttps://192.168.3.95/healthz# 预期返回: {status:ok}# 测试 HTTP 自动重定向curl-Ihttp://192.168.3.95# 预期返回: 301 重定向到 HTTPS 最终访问信息组件配置访问方式n8n 应用Docker 容器运行内部:http://127.0.0.1:5678Nginx 代理HTTPS 反向代理外部:https://192.168.3.95认证信息基础认证用户名:admin密码:1qazWSXSSL 证书自签名证书浏览器会有安全警告 故障排除指南常见问题及解决方案1. Nginx 启动失败# 查看详细错误sudojournalctl-unginx --no-pager-n30sudotail-f/var/log/nginx/error.log# 测试配置语法sudonginx-t2. 502 Bad Gateway# 检查 n8n 是否运行dockerps|grepn8ncurlhttp://127.0.0.1:5678/healthz# 检查容器日志dockerlogs n8n3. 权限被拒绝错误# 查看文件权限ls-la~/n8n_data# 以 root 用户运行测试dockerrun-d--namen8n_test-uroot-p5678:5678 n8nio/n8n:2.3.14. 安全 Cookie 警告症状: 访问时提示安全 Cookie 配置错误解决方案确保使用https://协议访问或临时禁用安全 Cookie-e N8N_SECURE_COOKIEfalse 管理命令备忘服务管理# Nginx 管理sudosystemctl start|stop|restart|status nginxsudonginx-t# 测试配置# n8n 容器管理dockerstart|stop|restart n8ndockerlogs n8n--tail50# 查看日志dockerexec-itn8n /bin/bash# 进入容器数据备份# 创建备份脚本cat/root/backup_n8n.shEOF #!/bin/bash BACKUP_DIR/root/n8n_backups DATE$(date %Y%m%d_%H%M%S) mkdir -p $BACKUP_DIR tar -czf $BACKUP_DIR/n8n_backup_$DATE.tar.gz ~/n8n_data echo 备份完成: $BACKUP_DIR/n8n_backup_$DATE.tar.gz EOFchmodx /root/backup_n8n.sh健康检查# 简易监控脚本cat/usr/local/bin/check_n8n.shEOF #!/bin/bash STATUS$(curl -s -k -o /dev/null -w %{http_code} https://192.168.3.95/healthz) if [ $STATUS ! 200 ]; then echo [$(date)] n8n 健康检查失败: HTTP $STATUS docker restart n8n systemctl restart nginx fi EOFchmodx /usr/local/bin/check_n8n.sh 进阶配置建议1. 使用真实域名和 Let’s Encrypt 证书# 安装 certbotsudoyuminstallcertbot python3-certbot-nginx-y# 获取证书sudocertbot--nginx-dyour-domain.com# 自动续期sudocertbot renew --dry-run2. Docker Compose 部署推荐创建docker-compose.ymlversion:3.8services:n8n:image:n8nio/n8n:2.3.1container_name:n8nrestart:unless-stoppedports:-127.0.0.1:5678:5678environment:-N8N_PROTOCOLhttps-N8N_HOST0.0.0.0-N8N_PORT5678-N8N_WEBHOOK_URLhttps://your-domain.com/-N8N_BASIC_AUTH_ACTIVEtrue-N8N_BASIC_AUTH_USERadmin-N8N_BASIC_AUTH_PASSWORDyour_secure_password-GENERIC_TIMEZONEAsia/Shanghaivolumes:-./n8n_data:/home/node/.n8n3. 性能优化配置# 在 Nginx 配置中添加 proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_read_timeout 600s; send_timeout 600s; proxy_buffering off; proxy_request_buffering off; 注意事项版本兼容性n8n 2.0 不再支持 MySQL仅支持 PostgreSQL 或 SQLite数据迁移从旧版本升级需要数据库迁移安全警告自签名证书在浏览器中会显示安全警告生产环境建议使用正式证书端口冲突确保 5678、80、443 端口未被其他服务占用定期更新关注 n8n 版本更新及时升级以获得新功能和安全修复 支持与参考n8n 官方文档: https://docs.n8n.io/GitHub 仓库: https://github.com/n8n-io/n8n社区论坛: https://community.n8n.io/文档版本: 1.0更新日期: 2026年1月7日部署环境: CentOS 7.9 Docker Nginxn8n 版本: 2.3.1提示: 本文档基于实际部署经验编写记录了所有关键步骤和遇到的问题解决方案。建议根据实际环境调整配置参数。如果遇到难以解决的问题可以寻求各类AI智能问答的帮亦或者留言有时间就会回复的 天下英雄出我辈一入江湖岁月催我是热爱生活的「无间行者」努力把实践过的解决方案分享给大家如果这篇文章对你有用一键三连感谢你的鼓励让我知道你在看