1. 为什么我劝你先在 1Panel 里跑一遍 AI 应用再谈生产1Panel 是一个开源的 Linux 服务器管理面板GitHub 上拿了 3 万多 Star安装量超过 230 万次。它能做什么简单说就是让你不用敲一堆命令行通过网页界面就能管理服务器上的网站、数据库、容器、文件、计划任务。适合谁适合手里有一台 Linux 服务器、想快速拉起 AI 服务但又不想从零写 docker-compose 的运维和开发者。我最初接触 1Panel 是因为一台 2 核 4G 的云主机上面原本跑着 Nginx MySQL 的老组合后来想加一个本地大模型对话服务结果光是配 Docker 网络和反向代理就折腾了一下午。换成 1Panel 之后应用商店里点几下Ollama、OpenWebUI 这类 AI 应用就能跑起来省掉了大量重复劳动。最近它的应用商店里 AI 大模型分类上架了 20 多款应用OpenClaw 这类个人 AI 助理单月下载量突破 10 万次甚至超过了传统的 OpenResty、MySQL 组合。这个数据变化挺有意思服务器上跑的东西正在从网站变成 AI 助理。这篇文章不聊虚的直接给你一条可复制的路径在 Linux 上用 1Panel 安装面板、配置 Docker 应用商店、部署一个 AI 应用容器、验证访问、排查常见错误。全程图形化为主命令行只出现在必要的地方。你跟着做大概率能在半小时内看到一个跑在自己服务器上的 AI 服务。需要提前说明的是AI 应用本身需要调用模型接口你可以用本地 Ollama 跑开源模型也可以用云端 API。如果你希望统一管理模型调用、减少多平台 Key 的切换成本后面我会提到一个接入层工具 TaoToken它提供兼容 OpenAI 风格的 API 地址方便你在 1Panel 部署的 AI 应用里统一填写 Base URL 和 Key。这不是必须的但如果你要跑多个 AI 应用会省事很多。先明确目标我们最终要在一台 Linux 服务器上通过 1Panel 的 Docker 应用商店跑通一个 AI 聊天前端 后端模型的组合并且能通过浏览器访问、能看到日志、能排查报错。下面开始。2. 1Panel 安装与 Docker 应用商店配置Linux 管理面板 AI 部署前置这一章解决“环境从哪来”的问题。你需要的是一台能 SSH 登录的 Linux 服务器Ubuntu 20.04/22.04、Debian 11/12、CentOS 7/8 都可以最低 1 核 1G 内存能跑面板本身但如果你要跑 AI 应用建议至少 2 核 4G因为 Ollama 加载一个 7B 模型就要占几个 G 内存。硬盘建议 40G 以上模型文件很占空间。第一步安装 1Panel。官方提供了一行命令在 SSH 里执行bash -c $(curl -sSL https://resource.1panel.pro/v2/quick_start.sh)安装脚本会问你几个问题安装目录、端口、是否配置防火墙。默认端口是 8090如果你服务器安全组没放行记得去云厂商控制台放行 8090 和后续 AI 应用要用的端口。安装完成后终端会输出面板地址、用户名和密码类似面板地址: http://你的服务器IP:8090/安全入口 用户名: xxxxxxxx 密码: xxxxxxxxxxxx注意那个“安全入口”是一串随机路径不要弄丢。打开浏览器访问登录后第一件事是改密码第二件事是去“面板设置”里确认 Docker 状态。1Panel 自带 Docker 管理如果服务器上没装 Docker它会在你第一次进入“容器”或“应用商店”时提示安装。点确认即可它会自动装好 Docker 和 Docker Compose。第二步配置应用商店。1Panel 左侧菜单有“应用商店”里面分“运行环境”“数据库”“AI”“工具”等分类。你要做的是确认商店源可用。默认情况下1Panel 使用官方应用商店源如果你所在网络访问 Docker Hub 较慢可以在“容器”-“配置”-“镜像加速”里添加国内镜像加速地址。这一步不是必须但会明显影响拉取镜像的速度。在应用商店的 AI 分类里你能看到 Ollama、OpenWebUI、LobeChat、MaxKB、n8n 等应用。每个应用卡片上有一个“安装”按钮点进去后是图形化表单应用名称、端口、数据目录、环境变量。这里的关键是端口映射和环境变量。以 OpenWebUI 为例它默认容器端口是 8080你需要映射到宿主机一个未被占用的端口比如 3000。环境变量里通常要填OLLAMA_BASE_URL如果你把 Ollama 也装在同一个 1Panel 里可以填http://ollama:11434因为 1Panel 会为同一应用商店安装的容器创建默认网络容器之间可以用应用名互相访问。如果你打算用云端模型 API而不是本地 Ollama那么环境变量里要填的是 API Base URL 和 API Key。这时候你可以用 TaoToken 的 API 地址https://taotoken.net/api它兼容 OpenAI 风格很多 AI 前端都支持自定义 Base URL。具体填法在下一章配置片段里给出。第三步确认 Docker 网络和存储卷。1Panel 在安装应用时会自动创建数据卷比如 OpenWebUI 的数据会挂载到/opt/1panel/apps/openwebui/data这类路径。你不需要手动创建但要知道位置方便备份和排查。如果你要跑多个 AI 应用建议在“容器”-“网络”里看一下默认网络确保它们在同一网络下否则容器间无法通过服务名通信。这一章做完你应该已经有一个能登录的 1Panel 面板Docker 正常运行应用商店能打开AI 分类能看到可安装的应用。接下来就是实际部署一个 AI 应用并填入可复制的配置。3. 可复制配置在 1Panel 里用 Docker 跑通 AI 应用容器编排这一章给你可以直接抄的配置。我们以“Ollama OpenWebUI”组合为例这是最典型的本地 AI 应用部署路径。如果你只想跑一个前端并调用云端 API也可以只装 OpenWebUI然后在环境变量里填 TaoToken 的地址和 Key。先说 Ollama 的安装配置。在 1Panel 应用商店 AI 分类里找到 Ollama点安装。表单里主要填三项应用名称ollama端口宿主机端口填11434容器端口也是11434数据目录默认即可比如/opt/1panel/apps/ollama/data安装完成后Ollama 容器会跑起来。但此时它里面还没有模型。你需要进入“容器”-“ollama”-“终端”或者直接在 SSH 里执行docker exec -it ollama ollama pull qwen2.5:7b这条命令会下载 Qwen2.5 7B 模型大概 4-5G。下载完成后你可以用docker exec -it ollama ollama list查看已安装模型。如果你想换更小的模型比如qwen2.5:1.5b把标签改一下即可。接下来装 OpenWebUI。在应用商店 AI 分类里找到 OpenWebUI点安装。表单里关键配置如下应用名称openwebui端口宿主机填3000容器填8080环境变量OLLAMA_BASE_URLhttp://ollama:11434WEBUI_SECRET_KEY随便一串长随机字符串如果你不用本地 Ollama而是用云端 API环境变量改成{ OPENAI_API_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: 你的TaoToken Key, WEBUI_SECRET_KEY: 随便一串长随机字符串 }注意不同版本的 OpenWebUI 环境变量名可能略有差异有的版本用OPENAI_API_BASE_URL有的用OPENAI_API_BASE。你可以在 1Panel 的容器日志里看到它实际读取了哪个变量。如果启动后模型列表为空大概率是变量名不对或地址不通。如果你更喜欢用 docker-compose 手动编排1Panel 也支持在“容器”-“编排”里粘贴 compose 文件。下面是一个可复制的 compose 片段路径和原文一致你可以直接改端口和 Keyversion: 3.8 services: ollama: image: ollama/ollama:latest container_name: ollama restart: always ports: - 11434:11434 volumes: - /opt/1panel/apps/ollama/data:/root/.ollama openwebui: image: ghcr.io/open-webui/open-webui:main container_name: openwebui restart: always ports: - 3000:8080 environment: - OLLAMA_BASE_URLhttp://ollama:11434 - WEBUI_SECRET_KEYchange_me_to_a_long_random_string volumes: - /opt/1panel/apps/openwebui/data:/app/backend/data depends_on: - ollama把这段粘贴到 1Panel 的“容器”-“编排”-“创建编排”起个名字比如ai-stack点部署。1Panel 会调用 Docker Compose 拉起两个容器。你可以在“容器”列表里看到它们的状态。这里有一个容易踩的坑如果你用 1Panel 应用商店安装它默认可能不会把两个容器放在同一个自定义网络里导致http://ollama:11434解析失败。解决办法是在 1Panel 的“容器”-“网络”里创建一个网络比如ai-net然后在两个容器的配置里都加入这个网络。或者直接用上面的 compose 编排Compose 会自动创建默认网络服务名可以直接互访。配置完成后回到“容器”列表确认两个容器都是“运行中”。如果 OpenWebUI 反复重启去看它的日志常见原因是WEBUI_SECRET_KEY没填或太短或者端口被占用。4. 验证请求与成功结果访问 AI 应用并确认模型可用这一章验证你前面的配置是否真的跑通了。分三步访问前端、检查后端模型、发一条真实请求。第一步浏览器访问http://你的服务器IP:3000。如果看到 OpenWebUI 的注册/登录界面说明前端容器正常。第一次进入需要注册一个管理员账号这个账号只存在你本地数据库里随便填。登录后如果配置正确左上角模型下拉框里应该能看到qwen2.5:7b之类的模型名称。如果下拉框为空说明前端没连上 Ollama 或云端 API。第二步检查 Ollama 是否正常。在 SSH 里执行curl http://localhost:11434/api/tags如果返回 JSON 里包含你拉取的模型列表说明 Ollama 正常。如果返回Connection refused说明容器没跑或端口没映射。你可以用docker ps看容器状态用docker logs ollama看日志。第三步发一条真实请求。在 OpenWebUI 对话框里输入“你好请用一句话介绍你自己”发送。如果几秒后收到回复说明整条链路通了前端 - Ollama - 模型 - 返回。如果一直转圈或报错看浏览器开发者工具的网络面板以及 OpenWebUI 容器的日志。如果你用的是云端 API 而不是本地 Ollama验证方式类似但你可以直接用 curl 测 API 地址是否通curl https://taotoken.net/api/v1/models \ -H Authorization: Bearer 你的Key如果返回模型列表 JSON说明 Key 和地址都正确。然后回到 OpenWebUI 里发消息应该能收到云端模型的回复。成功的结果长这样OpenWebUI 界面正常模型下拉框有可选模型发送消息后 2-5 秒内收到回复容器日志里没有红色报错。到这一步你已经用 1Panel 的 Docker 化路径跑通了一个 AI 应用。整个过程没有手写复杂的 Nginx 配置也没有手动配 Docker 网络大部分操作在网页上完成。如果你还想跑第二个 AI 应用比如 LobeChat 或 MaxKB步骤几乎一样应用商店点安装、填端口、填环境变量、启动、验证。1Panel 的价值就在这里把重复的 Docker 操作封装成图形化表单让你把精力放在 AI 应用本身而不是环境配置上。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth这一章列出你在 1Panel 跑 AI 应用时最可能遇到的几个报错以及对应的排查动作。这些都是真实出现过的不是编的。报错一401 Unauthorized现象OpenWebUI 或 LobeChat 里发消息返回 401日志里显示invalid api key或unauthorized。原因你填的 API Key 不对或者 Base URL 和 Key 不匹配。如果你用 TaoToken确认 Key 是从控制台复制的完整字符串没有多余空格。如果你用 OpenAI 官方确认 Key 有效且有余额。排查在 SSH 里用 curl 直接测curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer 你的Key \ -H Content-Type: application/json \ -d {model:gpt-4o-mini,messages:[{role:user,content:hi}]}如果 curl 也返回 401说明 Key 或地址有问题。如果 curl 成功但应用里失败说明应用的环境变量名写错了或者应用没有重启加载新变量。报错二local proxy failed现象容器日志里出现local proxy failed或connection refused前端无法连接后端。原因容器间网络不通。如果你用 1Panel 应用商店分别安装 Ollama 和 OpenWebUI它们可能不在同一网络。http://ollama:11434这个地址在 OpenWebUI 容器里解析不到。排查进入 OpenWebUI 容器终端执行ping ollama或curl http://ollama:11434/api/tags。如果解析失败去 1Panel 网络设置里把两个容器加入同一网络或者改用宿主机 IP 映射端口比如http://172.17.0.1:11434。但更推荐用自定义网络加服务名。报错三reading choices现象调用云端 API 时日志里出现reading choices或list index out of range。原因API 返回格式和前端预期不一致。有些兼容 OpenAI 的接口在出错时返回的 JSON 结构不同前端解析choices[0]时越界。排查先用 curl 看原始返回。如果返回里有error字段先解决错误。如果返回正常但前端仍报错检查前端版本是否过旧升级到最新版。另外确认你填的模型名称是 API 支持的比如gpt-4o-mini而不是随便写的名字。报错四OAuth 相关错误现象OpenWebUI 配置了 OAuth 登录后回调失败或报redirect_uri_mismatch。原因OAuth 回调地址和你在提供商后台填的不一致。1Panel 部署的应用通常通过 IP 端口访问但 OAuth 提供商可能要求域名和 HTTPS。排查如果你只是自己用建议先关闭 OAuth用本地账号登录。如果必须用 OAuth确保回调地址填的是http://你的IP:3000/oauth/oidc/callback这种完整路径并且在提供商后台也填一样。注意 HTTP 和 HTTPS 不能混。通用排查动作不管什么报错先看容器日志。1Panel 的“容器”-“日志”可以实时查看。日志里通常有具体的错误堆栈。其次用docker exec -it 容器名 sh进入容器手动 curl 测试网络。最后确认端口没有被防火墙或安全组挡住。云服务器的话安全组规则要放行你映射的宿主机端口。如果你在配置过程中需要统一管理多个 AI 应用的 Key 和 Base URL可以去 TaoToken 的控制台创建一个 Key然后在各个应用里填同一个地址https://taotoken.net/api。这样你换模型或换应用时不用到处改配置。接入文档里有各客户端的详细填法遇到 OAuth 或 401 也可以对照文档检查。6. 从 1Panel 到长期 AI 服务把部署经验变成可复用流程走到这里你已经完成了一次完整的 1Panel Docker AI 应用部署。但单次跑通和长期稳定运行是两回事。这一章聊几个让这套流程可复用的动作。第一把配置固化下来。1Panel 的应用商店安装记录和 compose 编排文件都可以导出。你可以在“容器”-“编排”里看到你创建的 compose 项目把它复制到一个文本文件里存档。下次换服务器直接粘贴部署不用重新填表单。环境变量里的 Key 不要写死在 compose 里可以用 1Panel 的“环境变量”功能或者.env文件管理。第二设置容器自动重启。1Panel 安装应用时默认会加restart: always但如果你手动改过配置确认一下这个策略还在。服务器重启后AI 应用应该自动起来而不是等你手动点启动。第三监控资源占用。AI 应用吃内存和 CPU尤其是本地模型。1Panel 的“主机”-“监控”可以看到 CPU、内存、磁盘曲线。如果内存经常飙到 90% 以上考虑换更小的模型或者升级服务器配置。Ollama 加载模型后不会自动释放你可以设置OLLAMA_KEEP_ALIVE环境变量控制模型在内存里的保留时间。第四日志轮转。Docker 容器日志默认会一直增长时间长了占满磁盘。在 1Panel 的“容器”-“配置”里可以设置日志驱动和最大大小比如json-file加max-size10m。这样单个容器日志最多 10M不会无限膨胀。第五备份数据卷。OpenWebUI 的对话记录、Ollama 的模型文件都在数据卷里。1Panel 有“计划任务”功能可以定时打包/opt/1panel/apps目录到备份盘。模型文件很大如果你不想备份模型只备份 OpenWebUI 的 data 目录即可模型可以重新拉。如果你打算长期跑多个 AI 应用建议把模型调用统一到一个接入层。比如所有应用都填 TaoToken 的 API 地址Key 用同一个这样你换模型、加应用、做用量统计都方便。TaoToken 的 Coding Plan 适合长期编码和 Agent 场景模型对话适合临时验证模型效果API Keys 页面可以管理你的访问凭证。具体选哪个看你是想快速试一下还是长期跑服务。最后说一个实际经验1Panel 的应用商店更新挺快AI 分类里的应用版本会迭代。如果你发现某个应用突然报错先去看应用商店里有没有新版本点一下“升级”可能就解决了。升级前记得备份数据卷虽然大多数应用升级不会丢数据但谨慎点没坏处。整套流程跑下来你会发现 1Panel 解决的核心问题不是“能不能跑 AI”而是“让跑 AI 这件事变得可重复、可管理”。你不需要成为 Docker 专家也能在 Linux 上拉起一个 24 小时在线的 AI 服务。剩下的时间留给调模型和写提示词。
阅读完成 · 觉得有帮助?