📢 转载信息
原文链接:https://www.kdnuggets.com/self-hosted-ai-complete-roadmap-for-beginners
原文作者:Shittu Olumide
Image by Author
您自己的本地AI中心:构建私有、无云费用的自动化工作流
构建您自己的本地AI中心,可以为您提供自动执行任务、处理私有数据和创建定制助手的自由,所有这些都无需依赖云服务或处理月度费用。在本文中,我将引导您在家庭服务器上构建一个自托管的AI工作流中心,让您完全掌控、提高隐私性并实现强大的自动化。
我们将结合使用Docker(用于打包软件)、Ollama(用于运行本地机器学习模型)、n8n(用于创建可视化自动化)以及Portainer(用于轻松管理)。此设置非常适合具有至少8GB内存的中等性能x86-64系统,例如迷你PC或旧台式机,它可以出色地同时处理多个服务。
为何构建本地AI中心?
当您自托管工具时,您就从服务的使用者转变为基础设施的所有者,这非常强大。本地中心是私有的(您的数据绝不会离开您的网络)、具有成本效益的(没有应用程序编程接口(API)费用)并且完全可定制。
此中心的_核心_是一组强大的组件,其中:
- Ollama充当您的私有、设备上的AI大脑,运行用于文本生成和分析的模型
- n8n充当神经系统,将Ollama连接到其他应用程序(如日历、电子邮件或文件)以构建自动化工作流
- Docker是基础,将每个工具打包成独立、易于管理的容器
// 自托管AI中心的核心组件
| 工具 | 主要角色 | 对您的中心的关键益处 |
|---|---|---|
| Docker/Portainer | 容器化和管理 | 隔离应用程序,简化部署,并提供可视化管理仪表板 |
| Ollama | 本地大语言模型(LLM)服务器 | 在本地运行AI模型以保护隐私;为其他工具提供API |
| n8n | 工作流自动化平台 | 将Ollama与(API、数据库、文件)等其他服务进行可视化连接,以创建强大的自动化 |
| Nginx Proxy Manager | 安全访问和路由 | 提供安全的Web网关访问您的服务,并轻松设置SSL证书 |
准备您的服务器基础
首先,请确保您的服务器已准备就绪。我们推荐安装Ubuntu Server LTS的干净版本或类似的Linux发行版。安装完成后,通过安全Shell (SSH) 连接到您的服务器。第一步也是最关键的一步是安装Docker,它将运行我们所有后续工具。
// 安装Docker和Docker Compose
在终端中运行以下命令来安装Docker和Docker Compose。Docker Compose是一个工具,允许您使用简单的YAML文件定义和管理多容器应用程序。
sudo apt update && sudo apt upgrade -y sudo apt install apt-transport-https ca-certificates curl software-properties-common -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
// 验证和设置权限
验证安装并将您的用户添加到Docker组,以便无需使用sudo即可运行命令:
sudo docker version sudo usermod -aG docker $USER
输出:
您需要注销并重新登录才能使此更改生效。
// 使用Portainer进行管理
我们不会仅使用命令行,而是部署Portainer,这是一个用于管理Docker的基于Web的图形用户界面(GUI)。使用以下命令创建一个目录并创建一个docker-compose.yml文件。
mkdir -p ~/portainer && cd ~/portainer nano docker-compose.yml
将以下配置粘贴到文件中。这告诉Docker下载Portainer镜像,自动重启它,并在端口9000上暴露其Web界面。
services: portainer: image: portainer/portainer-ce:latest container_name: portainer restart: unless-stopped ports: - "9000:9000" volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data volumes: portainer_data:
保存文件(Ctrl+X,然后按Y,然后按Enter)。现在,部署Portainer:
docker compose up -d
您的输出应如下所示:
现在在浏览器中导航到http://YOUR_SERVER_IP:9000。对我来说是http://localhost:9000
您可能需要重新启动服务器。您可以使用以下命令来执行此操作:
sudo docker start portainer
创建一个管理员帐户:
创建帐户后,您将看到Portainer仪表板。
这是您所有其他容器的指挥中心。您可以从这里启动、停止、查看日志并管理所有其他服务。
安装Ollama:您的本地AI引擎
Ollama是一个旨在轻松在本地运行开源大语言模型(LLM),如Llama 3.2或Mistral的工具。它提供了一个简单的API,n8n和其他应用程序可以使用。
// 使用Docker部署Ollama
虽然可以直接安装Ollama,但使用Docker可以确保一致性。创建一个新目录并使用以下命令为其创建一个docker-compose.yml文件。
mkdir -p ~/ollama && cd ~/ollama nano docker-compose.yml
使用此配置。volumes行很重要,因为它会永久存储您下载的机器学习模型,这样即使容器重启也不会丢失它们。
services: ollama: image: ollama/ollama:latest container_name: ollama restart: unless-stopped ports: - "11434:11434" volumes: - ollama_data:/root/.ollama volumes: ollama_data:
部署它:docker compose up -d
// 拉取并运行您的第一个模型
容器运行后,您可以拉取一个模型。我们从一个有能力但高效的模型Llama 3.2开始。
此命令在运行中的容器内执行ollama pull llama3.2:
docker exec -it ollama ollama pull llama3.2
任务演示:查询Ollama
您现在可以直接与本地AI进行交互。以下命令向容器内运行的模型发送一个提示。
docker exec -it ollama ollama run llama3.2 "Write a short haiku about technology."
您应该在终端中看到一首生成的诗。更重要的是,Ollama的API现在可在http://YOUR_SERVER_IP:11434上供n8n使用。
使用n8n进行智能自动化集成
n8n是一个可视化工作流自动化工具。您可以拖放节点来创建序列;例如,“当我保存一个文档时,用Ollama对其进行总结,然后将总结发送到我的笔记应用。”
// 使用Docker部署n8n
为n8n创建一个目录。我们将使用一个Compose文件,该文件包含一个数据库,供n8n保存您的工作流和执行数据。
mkdir -p ~/n8n && cd ~/n8n nano docker-compose.yml
将以下内容粘贴到YAML文件中:
services: n8n: image: n8nio/n8n:latest container_name: n8n restart: unless-stopped ports: - "5678:5678" environment: - N8N_PROTOCOL=http - WEBHOOK_URL=http://YOUR_SERVER_IP:5678/ - N8N_ENCRYPTION_KEY=your_secure_encryption_key_here - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=db - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=n8n - DB_POSTGRESDB_PASSWORD=your_secure_db_password volumes: - n8n_data:/home/node/.n8n depends_on: - db db: image: postgres:17-alpine container_name: n8n_db restart: unless-stopped environment: - POSTGRES_USER=n8n - POSTGRES_PASSWORD=your_secure_db_password - POSTGRES_DB=n8n volumes: - postgres_data:/var/lib/postgresql/data volumes: n8n_data: postgres_data:
替换YOUR_SERVER_IP和占位符密码。使用docker compose up -d进行部署。在http://YOUR_SERVER_IP:5678访问n8n。
任务演示:构建您的第一个AI工作流
让我们创建一个简单的n8n使用Ollama充当创意写作助手的[工作流]。
- 在n8n编辑器中,添加一个“Schedule Trigger”节点并将其设置为手动运行以进行测试
- 添加一个“HTTP Request”节点。配置它以调用您的Ollama API:
- 方法:POST
- URL:http://ollama:11434/api/generate
- 将Body内容类型设置为JSON
- 在JSON正文中,输入:{"model": "llama3.2", "prompt": "Generate three ideas for a sci-fi short story."}
- 添加一个“Set”节点,仅提取Ollama JSON响应中的文本。将值设置为
{{ $json["response"] }} - 添加一个“Code”节点,使用像
items = [{"json": {"story_ideas": $input.item.json}}]; return items;这样的简单一行来格式化数据 - 最后,连接一个“Email Send”节点(使用您的电子邮件服务配置)或一个“Save to File”节点来输出结果
点击“Execute Workflow”。n8n将向您的本地Ollama容器发送提示,接收想法,并对其进行处理。您刚刚构建了一个私有的、自动化的AI助手。
使用Nginx Proxy Manager保护您的中心
您现在有服务运行在不同的端口上(Portainer: 9000,n8n: 5678)。Nginx Proxy Manager (NPM) 允许您通过漂亮的子域名(如portainer.home.net)访问它们,并获得来自Let's Encrypt的免费安全套接字层(SSL)加密。
// 部署Nginx Proxy Manager
为NPM创建一个最终目录。
mkdir -p ~/npm && cd ~/npm nano docker-compose.yml
将以下代码粘贴到您的YAML文件中:
services: app: image: 'jc21/nginx-proxy-manager:latest' container_name: nginx-proxy-manager restart: unless-stopped ports: - '80:80' - '443:443' - '81:81' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt volumes: data: letsencrypt:
使用docker compose up -d进行部署。
管理面板位于http://YOUR_SERVER_IP:81。使用默认凭据(admin@example.com / changeme)登录,并立即更改它们。
任务演示:保护n8n访问
- 在您的家庭路由器中,将端口80和443转发到您服务器的内部互联网协议(IP)地址。这是唯一需要的端口转发
- 在NPM的管理面板(your-server-ip:81)中,转到Hosts -> Proxy Hosts -> Add Proxy Host
- 对于n8n,填写详细信息:
- 域名:n8n.yourdomain.com(或指向您家庭IP的您拥有的子域名)
- 协议:http
- 转发主机名/IP:n8n(Docker的内部网络解析容器名称!)
- 转发端口:5678
- 点击SSL并请求Let's Encrypt证书,强制使用SSL
您现在可以通过https://n8n.yourdomain.com安全地访问n8n。对Portainer(portainer.yourdomain.com转发到portainer:9000)重复此操作。
结论
您现在拥有一个功能齐全、私有的AI自动化中心。您的下一步操作可能是:
- 扩展Ollama:试验不同的模型,如Mistral(用于速度)或codellama(用于编程任务)
- 高级n8n工作流:将您的中心连接到外部API(Google日历、Telegram、RSS源)或内部服务(如本地文件服务器)
- 监控:添加一个工具(如Uptime Kuma,也可以通过Docker部署)来监控所有服务的状态
此设置将您适度的硬件转变为强大的、私有的数字大脑。您控制软件,拥有数据,并且无需支付持续的费用。您在管理容器、编排服务以及使用AI进行自动化方面所学的技能,是现代独立技术基础设施的基础。
// 延伸阅读
- 官方Docker教程
- GitHub上的自托管指南,包含大量精选的其他可自托管的软件和概念
- Portainer文档
- n8n AI教程
Shittu Olumide是一位软件工程师和技术作家,热衷于利用尖端技术来构建引人入胜的叙事,对细节有敏锐的洞察力,并擅长简化复杂概念。您也可以在Twitter上找到Shittu。
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。
评论区