本地 AI:n8n + Ollama + Docker Desktop 配置
1. 本地 AI:n8n + Ollama + Docker Desktop 配置
在本地搭建 AI 工作流(n8n 编排 + Ollama 本地模型)前,需要先铺好三层基础:Docker 镜像源配置(解决拉取镜像的网络问题)、WSL 环境(Docker Desktop 的运行底座)、n8n 容器部署。本文按这三块给出可直接复制使用的配置。
[!info] 阅读导览
第 1 章 Docker 镜像源与配置(daemon.json、镜像源汇总、汉化包) → 第 2 章 WSL(网络重置、分发版管理) → 第 3 章 n8n 部署(模板、逐行注释、实际内容)
2. Docker 镜像源与配置
2.1. 🔗 镜像源地址
以下是常用的 Docker 镜像源地址,根据网络环境选择合适的源:
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://dockerproxy.net",
"https://docker.xuanyuan.me",
"https://docker-0.unsee.tech",
"https://registry.cyou"
]
2.2. 📝 添加镜像源后的完整配置
[!NOTE]
这段配置是 Docker 的 daemon.json 配置文件内容
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://dockerproxy.net",
"https://docker.xuanyuan.me",
"https://docker-0.unsee.tech",
"https://registry.cyou"
]
}
2.3. ⚙️ Docker Engine 原始配置
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
}
}
2.4. 🔗 GitHub 上的镜像源汇总地址
📚 以下是 GitHub 上维护的 Docker 镜像源汇总项目,可以获取最新的可用镜像源:
| 项目名称 | 仓库地址 | 描述 |
|---|---|---|
| DockerHub | https://github.com/dongyubin/DockerHub | 个人维护的 Docker 镜像源列表 |
| Docker-Proxy | https://github.com/dqzboy/Docker-Proxy | Docker 代理镜像源 |
| public-image-mirror | https://github.com/DaoCloud/public-image-mirror | DaoCloud 公共镜像源 |
2.5. 🌏 Docker Desktop 汉化包
💡 具体使用方法请查看 ReadMe.md
🔗 汉化包地址:https://github.com/asxez/DockerDesktop-CN
3. WSL
3.1. WSL 网络
3.1.1. 重置 WSL 网络和系统配置
执行以下命令 重置 WSL 网络配置(解决网络异常问题):
netsh winsock reset
netsh int ip reset all
重启 Windows 电脑,确保配置生效。
3.2. 查看可用的 Linux 分发版列表
wsl.exe --list --verbose
3.3. 安装指定的 Linux 分发版
wsl.exe --install [Distro]
3.4. 检查 WSL 版本与设置默认分发版
wsl.exe --list --verbose
若要设置与 wsl 命令一起使用的默认 Linux 分发版,请输入:
wsl.exe --set-default <Distro>
[!note]
将<Distro>替换为你使用的 Linux 分发版的名称。例如,在 PowerShell 中输入wsl -s Debian可将默认分发设置为 Debian。之后从 PowerShell 运行wsl npm init,就会在 Debian 中执行npm init命令。
4. n8n
4.1. 配置模板
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
-e TZ="<YOUR_TIMEZONE>" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
4.2. 部署 n8n 的 Docker 命令详细注释
[!tip] 阅读提示
以下为逐行教学注释版,且额外加入了 PostgreSQL 环境变量(生产环境推荐)。直接复制运行前,请先去掉每行\后的注释;如仅本地体验,可省略全部DB_参数(n8n 默认使用 SQLite)。
# 第一步:创建一个名为n8n_data的Docker数据卷(用于持久化n8n的核心数据,避免容器删除后数据丢失)
# Docker数据卷是独立于容器生命周期的存储方式,安全性和可移植性更强
docker volume create n8n_data
# 第二步:运行n8n容器,以下是逐参数注释
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
-e TZ="<YOUR_TIMEZONE>" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_DATABASE=<POSTGRES_DATABASE> \
-e DB_POSTGRESDB_HOST=<POSTGRES_HOST> \
-e DB_POSTGRESDB_PORT=<POSTGRES_PORT> \
-e DB_POSTGRESDB_USER=<POSTGRES_USER> \
-e DB_POSTGRESDB_SCHEMA=<POSTGRES_SCHEMA> \
-e DB_POSTGRESDB_PASSWORD=<POSTGRES_PASSWORD> \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
参数含义:
| 参数 | 说明 |
|---|---|
--name n8n |
给容器命名为 n8n,方便后续用 docker 命令管理 |
-p 5678:5678 |
端口映射:主机 5678 端口映射到容器内 5678 端口,外部通过 http://主机IP:5678 访问 n8n Web 界面 |
GENERIC_TIMEZONE / TZ |
应用层与系统层时区,保持一致(如 Asia/Shanghai) |
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true |
强制 n8n 对配置文件设置合理权限(安全优化) |
N8N_RUNNERS_ENABLED=true |
启用 n8n 运行器功能(支持分布式执行工作流) |
DB_TYPE=postgresdb |
指定数据库类型为 PostgreSQL(默认 SQLite,生产环境推荐 PostgreSQL) |
DB_POSTGRESDB_DATABASE / _HOST / _PORT / _USER / _SCHEMA / _PASSWORD |
PostgreSQL 连接信息:库名、主机、端口(默认 5432)、用户名、模式(默认 public)、密码,均需替换为实际值 |
-v n8n_data:/home/node/.n8n |
数据卷挂载:n8n 配置、凭证等核心数据持久化到 n8n_data |
docker.n8n.io/n8nio/n8n |
n8n 官方镜像;如需指定版本可加标签,如 :1.20.0 |
4.3. 实际内容
docker volume create n8n_data
docker run -it \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Asia/Shanghai" \
-e TZ="Asia/Shanghai" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
4.3.1. 补充说明
- 占位符替换:所有
<xxx>格式的内容都需要你根据自己的实际环境替换,比如时区Asia/Shanghai、PostgreSQL 数据库名n8n_db等。 --rm参数:容器停止运行后会自动删除容器本身(但不会删除挂载的数据卷n8n_data,数据仍会保留),适合临时测试或避免残留无用容器。- 数据库前置条件:按 3.3 的实际内容部署时,n8n 使用默认 SQLite,无需额外配置数据库;若按 3.2 注释版接入 PostgreSQL,则需提前搭建好可访问的 PostgreSQL(本地或远程),并创建好对应的数据库和用户。
4.3.2. 总结
- 这段命令的核心是创建持久化数据卷 + 运行 n8n 容器(可选关联 PostgreSQL),兼顾数据安全和生产环境可用性。
- 关键参数分为三类:端口映射(外部访问)、环境变量(配置 n8n 和时区)、数据卷挂载(持久化数据)。
- 所有
<xxx>占位符必须替换为实际环境信息,否则容器无法正常启动。
[!success] 核心要点
- Docker:镜像源写入
daemon.json的registry-mirrors,加速本地拉取- WSL:网络异常先
netsh winsock reset+netsh int ip reset all并重启- n8n:
docker volume create n8n_data+docker run即可;默认 SQLite 开箱即用,生产环境再接入 PostgreSQL- 部署完成后,n8n 的 Web 界面访问地址为
http://主机IP:5678