前置准备:环境检查与Docker安装
在开始下载镜像之前,请确保服务器满足以下条件:
检查系统版本(CentOS 7 及以上)
cat /etc/centos-release
检查 Docker 是否已安装
docker --version
如未安装 Docker,执行以下命令
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker && systemctl enable docker
步骤1:在境外服务器下载n8n镜像
由于国内无法直接访问Docker Hub,需要通过境外服务器进行中转:
只能通过境外服务器进行下载
1. 拉取n8n镜像
docker pull n8nio/n8n
2. 将镜像保存为tar文件
docker save n8nio/n8n -o n8n.tar
3. 检查文件大小(通常约500MB-1GB)
ls -lh n8n.tar
使用scp(需要SSH连接)
scp n8n.tar 用户名@本地服务器IP:/tmp/
scp 用户名@海外服务器IP:/path/to/n8n.tar ./
# 再从本地电脑上传到本地服务器
在本地服务器上导入并运行
1. 导入镜像
docker load -i /tmp/n8n.tar
2. 验证镜像已导入
docker images | grep n8n
3. 运行n8n
docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
n8nio/n8n
配置数据持久化(生产环境必需)
重要:必须使用宿主机目录挂载,否则容器重启后数据会丢失!
创建n8n数据目录
mkdir -p /opt/n8n/data
chcon -R system_u:object_r:container_file_t:s0 /opt/n8n # SELinux配置
创建docker-compose.yml文件
cat > /opt/n8n/docker-compose.yml << EOF
version: "3"
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=your_secure_password
- N8N_HOST=your_domain_or_ip
- N8N_PROTOCOL=http
- WEBHOOK_URL=http://your_domain:5678/
volumes:
- /opt/n8n/data:/home/node/.n8n
EOF
启动n8n服务
cd /opt/n8n && docker-compose up -d
查看运行状态
docker-compose ps
docker logs -f n8n
配置Nginx反向代理与SSL(如果使用内网穿透,可以不做)
生产环境建议通过Nginx反向代理,并配置HTTPS访问:
安装Nginx
yum install -y nginx
systemctl start nginx && systemctl enable nginx
创建Nginx配置文件
cat > /etc/nginx/conf.d/n8n.conf << EOF
server {
listen 80;
server_name your_domain_or_ip;
client_max_body_size 100M;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300;
}
}
EOF
申请Let's Encrypt免费SSL证书(可选)
yum install -y certbot python3-certbot-nginx
certbot --nginx -d your_domain
验证配置并重载Nginx
nginx -t && systemctl reload nginx
备份、恢复与更新
数据备份
停止容器并打包数据
docker run --rm \
-v n8n_date:/source:ro \
-v $(pwd):/backup \
alpine \
tar czf /backup/n8n_data_$(date +%Y%m%d).tar.gz -C /source .
数据恢复
解压备份文件
tar -xzvf n8n_backup_xxxx.tar.gz -C /
