Here’s the table of contents:
拉取n8n镜像
# Pull latest (stable) version
docker pull docker.n8n.io/n8nio/n8n
# docker pull 10.0.0.11:2001/n8nio/n8n
创建数据卷
# 数据卷创建后默认位置 /var/lib/docker/volumes/
docker volume create n8n_data
# 删除数据卷
# docker volume rm n8n_data
迁移用户数据
# 1. 使用 sudo 获取 root 权限
# 2. 使用 rm -rf 清空目标目录 /var/lib/docker/volumes/n8n_data/_data/ 下的所有内容
# 3. 使用 unzip 解压 /home/ubuntu/.n8n.zip 文件到目标目录
# 4. -o 选项表示覆盖已存在的文件而不提示
# 5. -d 指定解压目录
# 6. 命令使用了 sh -c 来将多个命令组合在一起作为一个整体在 sudo 下执行
sudo sh -c 'rm -rf /var/lib/docker/volumes/n8n_data/_data/* && unzip -o /home/ubuntu/.n8n.zip -d /var/lib/docker/volumes/n8n_data/_data/'
权限修复
# 检查卷挂载权限
docker volume inspect n8n_data
# 修复挂载点权限
sudo chown -R 1000:1000 /var/lib/docker/volumes/n8n_data/_data
# 修复配置文件权限
sudo chmod 600 /var/lib/docker/volumes/n8n_data/_data/config
下载节点并从扩展目录加载
# 1. 创建目标目录
# 2. 下载并解压tgz文件到目标目录
# 3. 删除目标目录中所有非dist文件夹的内容
# 4. 将dist文件夹内的所有文件移动到目标目录
# 5. 删除空的dist文件夹
sudo mkdir -p /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata && \
sudo curl -L 'http://10.0.0.11:8081/repository/npm-internal/n8n-nodes-jsdata/-/n8n-nodes-jsdata-0.1.5.tgz' | \
sudo tar -xzf - --strip-components=1 -C /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata && \
sudo find /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata -mindepth 1 -maxdepth 1 ! -name 'dist' -exec rm -rf {} + && \
sudo mv /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata/dist/* /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata/ && \
sudo rmdir /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata/dist
sudo mkdir -p /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata && \
sudo curl -L 'http://10.0.0.11:8081/repository/npm-internal/n8n-nodes-jsdata/-/n8n-nodes-jsdata-0.1.5.tgz' | \
sudo tar -xzf - --strip-components=1 -C /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata && \
sudo find /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata -mindepth 1 -maxdepth 1 ! -name 'dist' -exec rm -rf {} + && \
sudo sh -c 'mv /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata/dist/* /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata/' && \
sudo rmdir /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata/dist
# 备注:自定义目录加载节点,需要重启服务,并且自定义目录下文件结构如下
# 例如:自定义加载节点位置(该配置支持封号分隔的多个路径),N8N_CUSTOM_EXTENSIONS=/var/lib/docker/volumes/n8n_data/_data/custom
# /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata/credentials
# /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata/n8n-nodes-node/nodes
# /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata/package.json
# /var/lib/docker/volumes/n8n_data/_data/custom/n8n-nodes-jsdata/tsconfig.tsbuildinfo
使用扩展目录并运行n8n
# 增加-d参数后台运行,因为其它配置都是在默认数据卷下操作启动时不需要指定额外配置【生产环境应用启动】
docker run -d -it --rm --name n8n \
-e N8N_HOST=0.0.0.0 \
-p 5678:5678 \
-e N8N_RUNNERS_ENABLED=true \
-e N8N_COMMUNITY_PACKAGES_ENABLED=true \
-e N8N_SECURE_COOKIE=false \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
# 控制台输出命令,因为其它配置都是在默认数据卷下操作启动时不需要指定额外配置
docker run -it --rm --name n8n \
-e N8N_HOST=0.0.0.0 \
-p 5678:5678 \
-e N8N_RUNNERS_ENABLED=true \
-e N8N_COMMUNITY_PACKAGES_ENABLED=true \
-e N8N_SECURE_COOKIE=false \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
其它常用参考命令
# 查看镜像列表
docker image ls
# 实时查看日志(类似 tail -f)
docker logs -f n8n
# 查看容器状态
docker ps -a | grep n8n
# 停止容器
docker stop n8n
# 重启容器
docker restart n8n
# 删除容器:如果加了 --rm 参数,停止后会自动删除;否则手动删除
docker rm n8n
# 查看容器资源占用
docker stats n8n
其它
# pipx 命令从私有仓库安装包,设置 --pip-args 参数
pipx install tool-cli -i http://10.0.10.11:8081/repository/pypi/simple --pip-args "--trusted-host 10.0.10.11" --force
PREVIOUS基于Nginx自定义n8n社区节点下载仓库