> 技术文档 > docker 安装n8n_n8n docker

docker 安装n8n_n8n docker


一、装docker和docker compose

centos7的话需要修改源

# 下载阿里云 CentOS 7 镜像源配置sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y docker systemctl start dockersystemctl status docker

ubuntu安装

# 安装 Dockercurl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun# 如果服务未运行,启动 Dockersudo systemctl start docker# 如需开机自启sudo systemctl enable docker# 安装 Docker Composesudo curl -L \"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)\" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker compose version

查看版本

查看docker 服务状态 

查看docker compose 版本

docker compose version

二、创建 Docker Compose 配置文件

新建一个名为 docker-compose.yml 的文件,内容如下:

yaml

version: \'3.8\'services: n8n: image: n8nio/n8n:latest ports: - \"5678:5678\" environment: - N8N_HOST=你的服务器域名或IP - N8N_PORT=5678 - N8N_PROTOCOL=http - WEBHOOK_URL=http://你的服务器域名或IP:5678/ - GENERIC_TIMEZONE=Asia/Shanghai - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=n8n - DB_POSTGRESDB_PASSWORD=n8n - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=admin - N8N_BASIC_AUTH_PASSWORD=你设置的密码 volumes: - ./n8n_data:/home/node/.n8n depends_on: - postgres restart: always postgres: image: postgres:14-alpine volumes: - ./postgres_data:/var/lib/postgresql/data environment: - POSTGRES_DB=n8n - POSTGRES_USER=n8n - POSTGRES_PASSWORD=n8n restart: always

三、配置国内镜像加速

为了提升下载速度,建议配置 Docker 国内镜像源。编辑 /etc/docker/daemon.json 文件(如果文件不存在就创建一个),添加如下内容:

json

{ \"registry-mirrors\": [ \"https://registry.docker-cn.com\", \"https://docker.mirrors.ustc.edu.cn\", \"https://hub-mirror.c.163.com\" ]}

修改完成后,重启 Docker 服务:

bash

sudo systemctl restart docker

四、启动 n8n

在 docker-compose.yml 文件所在的目录下,执行以下命令启动 n8n:

bash

docker compose up -d

五、验证安装

n8n 启动之后,你可以通过浏览器访问 http://你的服务器域名或IP:5678 来验证安装是否成功。登录时使用之前在 docker-compose.yml 中设置的用户名(admin)和密码。

六、后续维护

bash

# 查看运行状态docker-compose ps# 查看日志docker-compose logs -f n8n# 停止服务docker-compose down# 更新 n8ndocker-compose pulldocker-compose up -d

按照以上步骤操作,你就能在国内环境中成功使用 Docker 安装并运行 n8n 了。

  1. 访问 Web 界面
    在浏览器中打开 http://localhost:5678,使用设置的用户名和密码登录。

参数说明

  • -p 5678:5678:将容器的 5678 端口映射到主机的 5678 端口
  • -v ~/n8n/data:/home/node/.n8n:将数据持久化到主机
  • N8N_BASIC_AUTH_ACTIVE=true:启用基本认证
  • N8N_BASIC_AUTH_USER 和 N8N_BASIC_AUTH_PASSWORD:设置登录凭证

如需配置域名访问或 SSL 证书,请使用 Nginx 或 Traefik 等反向代理工具。

一键导出镜像、导入使用docker镜像(离线docker安装)

一、导出镜像 + 配置脚本(n8n_export_full.sh)

bash

#!/bin/bash# n8n镜像+配置离线导出脚本# 功能:导出镜像并打包Docker Compose配置文件# 检查Docker和配置文件if ! command -v docker &> /dev/null; then echo \"错误:未找到Docker,请先安装\" exit 1fiif [[ ! -f docker-compose.yml ]]; then echo \"警告:未找到docker-compose.yml,将生成默认模板\" cat > docker-compose.yml << \'EOF\'version: \'3.8\'services: n8n: image: n8nio/n8n:latest ports: - \"5678:5678\" environment: - N8N_HOST=<> - N8N_PORT=5678 - N8N_BASIC_AUTH_USER=admin - N8N_BASIC_AUTH_PASSWORD=<> volumes: - ./n8n_data:/home/node/.n8n depends_on: - postgres restart: always postgres: image: postgres:14-alpine volumes: - ./postgres_data:/var/lib/postgresql/data environment: - POSTGRES_DB=n8n - POSTGRES_USER=n8n - POSTGRES_PASSWORD=n8n restart: alwaysEOFfi# 创建离线包目录mkdir -p n8n_offline_packagecp docker-compose.yml n8n_offline_package/# 导出镜像echo \"正在导出n8n镜像...\"docker save n8nio/n8n:latest > n8n_offline_package/n8n_latest.tar || { echo \"错误:导出n8n镜像失败,请确认镜像已下载\" exit 1}echo \"正在导出PostgreSQL镜像...\"docker save postgres:14-alpine > n8n_offline_package/postgres_14_alpine.tar || { echo \"错误:导出PostgreSQL镜像失败,请确认镜像已下载\" exit 1}# 打包(带时间戳)CURRENT_TIME=$(date +%Y%m%d%H%M)tar -czvf n8n_full_${CURRENT_TIME}.tar.gz n8n_offline_package/*echo \"导出完成!离线包:n8n_full_${CURRENT_TIME}.tar.gz(含镜像+配置)\"

 

 

二、导入 + 修改配置脚本(n8n_import_modify.sh)

bash

#!/bin/bash# n8n离线导入脚本(先修改配置再启动)# 功能:解压包→交互式修改配置→导入镜像→启动服务# 检查依赖if ! command -v docker &> /dev/null; then echo \"错误:未找到Docker,请先安装\" exit 1fiif ! command -v docker compose &> /dev/null; then echo \"错误:未找到Docker Compose,请先安装\" exit 1fi# 解压离线包PACKAGE=$(ls n8n_full_*.tar.gz 2>/dev/null)if [[ -z $PACKAGE ]]; then echo \"错误:未找到离线包,请确保包名为n8n_full_*.tar.gz\" exit 1fiecho \"正在解压离线包...\"tar -xzvf $PACKAGEcd n8n_offline_package# 交互式修改配置文件echo \"===== 开始修改配置文件 =====\"read -p \"请输入服务器IP/域名:\" SERVER_IPread -p \"请设置n8n登录密码:\" N8N_PASSWORD# 替换配置文件中的占位符sed -i \"s/<>/$SERVER_IP/g\" docker-compose.ymlsed -i \"s/<>/$N8N_PASSWORD/g\" docker-compose.ymlecho \"===== 配置修改完成 =====\"cat docker-compose.yml | grep -E \"N8N_HOST|N8N_BASIC_AUTH_PASSWORD\"echo \"------------------------\"# 导入镜像echo \"正在导入镜像...\"docker load < n8n_latest.tardocker load < postgres_14_alpine.tar# 启动服务echo \"正在启动n8n服务...\"docker compose up -d# 验证echo \"服务启动完成!访问 http://$SERVER_IP:5678\"echo \"账号:admin,密码:$N8N_PASSWORD\"

使用说明

1. 导出脚本(n8n_export_full.sh)
  • 前提:本地已运行 n8n,且有docker-compose.yml(若无则生成带占位符的模板)。
  • 执行

    bash

    chmod +x n8n_export_full.sh./n8n_export_full.sh
  • 结果:生成包含镜像和配置文件的离线包(如n8n_full_202506211700.tar.gz)。
2. 导入脚本(n8n_import_modify.sh)
  • 前提:目标环境已安装 Docker 和 Docker Compose,且离线包已上传。
  • 执行

    bash

    chmod +x n8n_import_modify.sh./n8n_import_modify.sh
  • 交互步骤
    1. 输入服务器 IP 和登录密码,脚本自动替换配置文件中的占位符;
    2. 导入镜像并启动服务,输出访问地址和账号密码。

脚本核心逻辑

  • 导出时:自动打包当前目录的docker-compose.yml(若无则生成模板),与镜像一同压缩。
  • 导入时:通过sed命令交互式替换配置文件中的<><>,避免手动编辑文件。
  • 配置示例:修改后配置文件片段如下:

    yaml

    - N8N_HOST=192.168.1.100- N8N_BASIC_AUTH_PASSWORD=your_strong_password

注意事项

  • 配置兼容性:导出的配置文件需与本地环境兼容(如端口、卷映射路径)。
  • 安全建议:设置的N8N_BASIC_AUTH_PASSWORD建议使用强密码,避免公开环境泄露。
  • 网络要求:目标环境需开放 5678 端口(防火墙放行 TCP 连接)。
  • 进阶修改:若配置文件有更多自定义字段(如数据库连接参数),可在导出模板中添加占位符,并在导入脚本中增加交互参数。