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: alwayscommand:- "--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:rolabels:- "traefik.enable=true"n8n:image: n8nio/n8n:latestrestart: alwaysenvironment:- 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:/filesdepends_on:- traefikvolumes: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),如需详细操作说明和配置示例,请参考原文档。