掘金 人工智能 8小时前
5分钟搞定!最全Dokploy部署n8n教程
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文分享了使用 Dokploy 部署 n8n 的详细教程,旨在帮助用户在几分钟内完成服务的搭建。教程涵盖了从创建服务、配置域名、增加登录鉴权到升级版本和备份数据的全过程,并提供了脚本备份方案,确保数据的安全性和可恢复性。通过本教程,用户可以轻松、快速地搭建和维护自己的 n8n 服务。

💻 **创建与部署**:首先,在 Dokploy 中创建 n8n 服务,然后进行部署。

🌐 **域名配置**:配置自定义域名,包括在 DNS 中配置二级域名,并在 Dokploy 中添加该域名,同时修改环境变量,将 N8N_HOST 设置为配置的二级域名。

🔒 **登录鉴权**:为了安全,设置用户名和密码进行登录鉴权,通过配置环境变量实现。

⬆️ **版本升级**:将 n8n 升级到最新版本,确保获得最新的安全性和功能更新。

💾 **备份方案**:使用 Dokploy 内建备份功能和脚本备份方案,将数据备份到 Cloudflare R2,并自动保留最近 7 份备份,以确保数据安全和可恢复性。

最近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)

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
# ① 安装 rclonecurl <https://rclone.org/install.sh> | sudo bash   # 官方安装脚本# ② 交互式配置 remote,名字用 r2rclone config# n   → New remote# name> r2# Storage>  s3# S3 provider>  Cloudflare# env_auth> n# access_key_id>  <你的 Access Key ID># secret_access_key> <你的 Secret Access Key># region> auto# endpoint> https://<ACCOUNT_ID>.r2.cloudflarestorage.com# location_constraint> auto# acl> private# advanced config? n# Is this OK?  y# q   → quit

验证连通:

rclone lsd r2:dokploy-backups    # 正常会列出桶 (空也没关系)

2. 新建备份脚本

sudo nano /usr/local/bin/backup-n8n.sh

粘贴下列内容(确认 SRC 与你的实际路径一致):

#!/usr/bin/env bashset -eDATE=$(date +%F-%H%M)SRC="/var/lib/dokploy/n8n"            # 本地数据目录DST="/tmp/n8n_${DATE}.tgz"            # 临时压缩包REMOTE="r2:dokploy-backups"           # R2 目标桶# 1) 打包tar -czf "${DST}" -C "${SRC}" .# 2) 上传rclone copy "${DST}" "${REMOTE}"# 3) 本地与云端都仅保留最近 7 份find /tmp -name 'n8n_*.tgz' -mtime +7 -deleterclone --min-age 7d delete "${REMOTE}"echo "[$(date)] n8n backup success: ${DST}" >> /var/log/n8n_backup.log

保存后赋予可执行权限:

sudo chmod +x /usr/local/bin/backup-n8n.sh

3. 手动测试脚本

/usr/local/bin/backup-n8n.sh

预期输出:

... n8n backup success/tmp/n8n_2025-07-08-1530.tgz

登录 Cloudflare → R2 → dokploy-backups 应看到上传的 n8n_2025-07-08-1530.tgz

    设置 cron 定时任务
sudo crontab -e

在文件末尾追加:

0 2 * * * /usr/local/bin/backup-n8n.sh

含义:每天 02:00 执行脚本。

日志输出已写入 /var/log/n8n_backup.log

保存退出;可用 sudo systemctl restart cron(或相应守护进程)确保生效。

    恢复 数据流程(演练建议)
# ① 取最新备份rclone copy r2:dokploy-backups/n8n_2025-07-08-1530.tgz /tmp/# ② 停 n8n 容器dokploy stop n8n        # 或 docker compose stop n8n# ③ 清空旧目录(或备份到别处)sudo rm -rf /var/lib/dokploy/n8n/*sudo tar -xzf /tmp/n8n_2025-07-08-1530.tgz -C /var/lib/dokploy/n8n# ④ 重启 n8ndokploy start n8n       # 或 docker compose up -d n8n

浏览器刷新;工作流、Credentials 应全部恢复。

    命名卷版本脚本(如果你没改 Host-Path)

把第 3 步脚本中 SRC=... 替换为动态查找卷路径:

SRC=$(docker volume inspect n8n_data -f '{{ .Mountpoint }}')

其余逻辑相同。记得把 cron 也指向这个脚本

文章首发于wangmazha.com/

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

n8n Dokploy 部署 教程
相关文章