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 了。
- 访问 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
- 交互步骤:
- 输入服务器 IP 和登录密码,脚本自动替换配置文件中的占位符;
- 导入镜像并启动服务,输出访问地址和账号密码。
脚本核心逻辑
- 导出时:自动打包当前目录的
docker-compose.yml
(若无则生成模板),与镜像一同压缩。 - 导入时:通过
sed
命令交互式替换配置文件中的<>
和<>
,避免手动编辑文件。 - 配置示例:修改后配置文件片段如下:
yaml
- N8N_HOST=192.168.1.100- N8N_BASIC_AUTH_PASSWORD=your_strong_password
注意事项
- 配置兼容性:导出的配置文件需与本地环境兼容(如端口、卷映射路径)。
- 安全建议:设置的
N8N_BASIC_AUTH_PASSWORD
建议使用强密码,避免公开环境泄露。 - 网络要求:目标环境需开放 5678 端口(防火墙放行 TCP 连接)。
- 进阶修改:若配置文件有更多自定义字段(如数据库连接参数),可在导出模板中添加占位符,并在导入脚本中增加交互参数。