红弘丽
2025-9-24 15:43:20
最近n8n太火了,官方的次数有限,很多人有自己部署的需求。但常规的部署方案总是耗时耗力,拖慢整个开发节奏。
今天我分享一个我自己实践总结的Dokploy部署n8n的超详细教程,帮助你在短短几分钟内完成服务搭建!
1、点击create service,选择template
2、找到n8n,点击create
3、在刚创建的n8n里面,点击Deploy
4、配置自定义域名
选择Domains,配置自己的域名
在cloudflare DNS里面配置二级域名,比如我的就是n8n.你的域名。
然后在dokploy的新增Domain里面,添加上刚才配置的二级域名。
修改环境变量,将dokploy分配的N8N_HOST改成自己刚才配置的二级域名。
在Dokploy里面Reload后,用二级域名登录,发现可以正常登录了!
5、增加登录鉴权
现在有个问题,就是任何人只要知道你部署的n8n域名,就可以登录使用,所以要配置环境变量,设置用户名和密码。
在 Environment 加:
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=
N8N_BASIC_AUTH_PASSWORD=
(改完点 Reload 让容器重启)
6、将n8n升级到最新版本
Provider 里的 compose 还是 n8nio/n8n:1.83.2,已落后多个安全 & bugfix 版本。点页面右上 Edit(或 Raw 区直接改)
image: n8nio/n8n:latest -- 或锁定到 1.98.1
按
Deploy/Reload,滚动升级生效
清除浏览器缓存,发现已经是最新版本的n8n
7、Dokploy备份,用 Dokploy 内建 Backups
在 Backups 里设每日快照(S3/R2)
前提: 你的 Dokploy 版本已支持 Volume Snapshot(新版本默认支持;旧版只备份数据库文件路径)。
全局设置 S3 Destination(如图,我是用的 cloudflare r2)
- Dokploy 左侧 Settings → Destinations → Add
- 选 S3 Compatible(R2、Wasabi、Backblaze 都行)
- 填 AccessKey / Secret / Bucket / Region → create
8、脚本备份n8n到cloudflare r2
下面是一套 “复制-粘贴即可落地” 的 脚本式备份方案
目标:把本机 n8n 数据目录 /var/lib/dokploy/n8n 每天 02 : 00 打包推送到 Cloudflare R2,并自动保留最近 7 份。
假设值n8n 数据目录/var/lib/dokploy/n8n(Host-Path 挂载)R2 目标桶dokploy-backups服务器系统通用 Linux(Ubuntu / Debian / CentOS 均可)dokploy 用户root (如果你用普通用户,路径改成 ~ 并把 sudo 加到相应命令前)如未改挂载,请先把 compose 里卷行设为
- /var/lib/dokploy/n8n:/home/node/.n8n
并 Deploy 重新启动 n8n。
- 配置 rclone 连接 Cloudflare R2
- # ① 安装 rclone<br>curl <https://rclone.org/install.sh> | sudo bash # 官方安装脚本<br><br># ② 交互式配置 remote,名字用 r2<br>rclone config<br># n → New remote<br># name> r2<br># Storage> s3<br># S3 provider> Cloudflare<br># env_auth> n<br># access_key_id> <你的 Access Key ID><br># secret_access_key> <你的 Secret Access Key><br># region> auto<br># endpoint> https://.r2.cloudflarestorage.com<br># location_constraint> auto<br># acl> private<br># advanced config? n<br># Is this OK? y<br># q → quit<br><br>
复制代码 验证连通:- rclone lsd r2:dokploy-backups # 正常会列出桶 (空也没关系)<br><br>
复制代码- sudo nano /usr/local/bin/backup-n8n.sh<br><br>
复制代码 粘贴下列内容(确认 SRC 与你的实际路径一致):- #!/usr/bin/env bash<br>set -e<br><br>DATE=$(date +%F-%H%M)<br>SRC="/var/lib/dokploy/n8n" # 本地数据目录<br>DST="/tmp/n8n_${DATE}.tgz" # 临时压缩包<br>REMOTE="r2:dokploy-backups" # R2 目标桶<br><br># 1) 打包<br>tar -czf "${DST}" -C "${SRC}" .<br><br># 2) 上传<br>rclone copy "${DST}" "${REMOTE}"<br><br># 3) 本地与云端都仅保留最近 7 份<br>find /tmp -name 'n8n_*.tgz' -mtime +7 -delete<br>rclone --min-age 7d delete "${REMOTE}"<br><br>echo "[$(date)] n8n backup success: ${DST}" >> /var/log/n8n_backup.log<br><br>
复制代码 保存后赋予可执行权限:- sudo chmod +x /usr/local/bin/backup-n8n.sh<br><br>
复制代码- /usr/local/bin/backup-n8n.sh<br><br>
复制代码 预期输出:- ... n8n backup success: /tmp/n8n_2025-07-08-1530.tgz<br><br>
复制代码 登录 Cloudflare → R2 → dokploy-backups 应看到上传的 n8n_2025-07-08-1530.tgz。
在文件末尾追加:- 0 2 * * * /usr/local/bin/backup-n8n.sh<br><br>
复制代码含义:每天 02:00 执行脚本。
日志输出已写入 /var/log/n8n_backup.log。
保存退出;可用 sudo systemctl restart cron(或相应守护进程)确保生效。
- # ① 取最新备份<br>rclone copy r2:dokploy-backups/n8n_2025-07-08-1530.tgz /tmp/<br><br># ② 停 n8n 容器<br>dokploy stop n8n # 或 docker compose stop n8n<br><br># ③ 清空旧目录(或备份到别处)<br>sudo rm -rf /var/lib/dokploy/n8n/*<br>sudo tar -xzf /tmp/n8n_2025-07-08-1530.tgz -C /var/lib/dokploy/n8n<br><br># ④ 重启 n8n<br>dokploy start n8n # 或 docker compose up -d n8n<br><br>
复制代码 浏览器刷新;工作流、Credentials 应全部恢复。
把第 3 步脚本中 SRC=... 替换为动态查找卷路径:- SRC=$(docker volume inspect n8n_data -f '{{ .Mountpoint }}')<br><br>
复制代码 其余逻辑相同。记得把 cron 也指向这个脚本。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|
|
|
相关推荐
|
|