n8n Docker Compose 部署官方文档详细总结
1. 前提条件
- 具备服务器、容器、网络和安全相关基础知识。
- 推荐有 Linux 运维经验。
- 已准备好一台服务器(建议为云服务器或本地服务器)。
2. 安装 Docker 和 Docker Compose
以 Ubuntu 为例,完整命令如下:
# 卸载旧版或不兼容的 Docker 相关包
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# 安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl
# 下载 Docker 仓库 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 添加 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新并安装 Docker 及 Compose 插件
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
验证安装:
docker --version
docker compose version
3. (可选)配置非 root 用户访问 Docker
将当前用户加入 docker 用户组:
sudo usermod -aG docker ${USER}
exec sg docker newgrp
如需为其他用户授权:
sudo usermod -aG docker <USER_TO_RUN_DOCKER>
验证组:
groups
4. DNS 设置
- 建议为 n8n 创建专用子域名(如 n8n.example.com),并将其 A 记录指向服务器公网 IP。
5. 创建项目目录与 .env 文件
mkdir n8n-compose
cd n8n-compose
创建 .env
文件,示例内容:
DOMAIN_NAME=example.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Berlin
SSL_EMAIL=user@example.com
6. 创建本地文件目录
mkdir local-files
7. 创建 Docker Compose 文件
新建 compose.yaml
,官方推荐内容如下:
services:
traefik:
image: "traefik"
restart: always
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
- "--certificatesresolvers.letsencrypt.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
- "traefik.enable=true"
n8n:
image: n8nio/n8n:latest
restart: always
environment:
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=admin
- WEBHOOK_TUNNEL_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
labels:
- "traefik.enable=true"
- "traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)"
- "traefik.http.routers.n8n.entrypoints=websecure"
- "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
volumes:
- n8n_data:/home/node/.n8n
- ./local-files:/files
depends_on:
- traefik
volumes:
n8n_data:
traefik_data:
8. 启动与管理服务
启动服务:
sudo docker compose up -d
停止服务:
sudo docker compose stop
9. 访问 n8n
- 通过 https://n8n.example.com 访问(根据 .env 配置)。
- 仅支持 HTTPS 访问。
10. 常见问题与补充
- 官方推荐生产环境使用
latest
镜像。 - 更多环境变量、数据库、日志、安全等详见官方文档“Next steps”及相关链接。
- 建议无经验用户优先选择 n8n Cloud 托管服务。
本文档内容基于 n8n 官方 Docker Compose 部署文档(https://docs.n8n.io/hosting/installation/server-setups/docker-compose),如需详细操作说明和配置示例,请参考原文档。