住宅低功耗主机7×24小时跑Token中转服务
为什么用低功耗主机跑Token中转服务
有些场景需要长期调用大模型API,给多个应用或家庭成员分发Key。
如果直接在主力电脑上跑,关机或重启就会中断。
用硬路由或云服务器成本也高。一台几十块钱二手J4125、N100迷你主机或树莓派,功耗只有10W左右,完全能胜任中转代理任务,7×24小时开着也不心疼电费。
准备工作:硬件、系统、网络
硬件推荐
- J4125 / N100 / N5095:二手价格150-400元,单千兆网口够用,性能比树莓派强,安装Ubuntu Server或Debian稳定。
- 树莓派 4B (4GB以上):功耗更低,但编译程序稍慢,适合纯Docker方案。
- 电源适配器尽量用原装或质量好的12V/2A以上,避免欠压重启。
系统选择
推荐 Ubuntu Server 22.04 LTS 或 Debian 12。
轻量、稳定,Docker支持好。
不要装桌面版,占用内存和磁盘。
网络要求
- 公网IP或内网穿透(如FRP、Tailscale)如果只在内网调用,无需公网。
- 防火墙需要放行中转服务端口(例如3000或自定义端口)。
分步操作:从零搭建Token中转服务
这里以最流行的 One API 开源项目为例,通过Docker部署。
1. 安装操作系统(已安装可跳过)
通过写盘工具(Rufus或balenaEtcher)将Ubuntu Server写入U盘,启动按向导完成。
务必设置一个强密码并开启SSH。
2. 连接主机并更新系统
使用SSH工具(Putty或终端)连接,执行:
sudo apt update && sudo apt upgrade -y
3. 安装Docker和Docker Compose
curl -fsSL https://get.docker.com | bash
sudo systemctl enable --now docker
sudo apt install -y docker-compose
验证:sudo docker version 应正常输出版本。
4. 拉取并运行One API容器
sudo docker run -d --name one-api --restart always -p 3000:3000 -v /etc/one-api:/data justsong/one-api
--restart always:主机重启后容器自动启动,这是7×24关键。-p 3000:3000:映射端口,如果公网使用建议改高位端口(比如30000)并套一层Nginx反代。-v /etc/one-api:/data:挂载数据目录,升级容器时配置和日志不丢失。
5. 访问与初始化
打开浏览器访问 http://你的主机IP:3000,默认账号 root,密码 123456,登录后立即修改。
- 在“渠道”中添加你的大模型API Key(例如OpenAI、Claude、通义千问等)。
- 在“令牌”中生成一个中转Key,分发给客户端。
- 测试:用curl或Postman调用
http://IP:3000/v1/chat/completions,带着刚生成的Key看是否能返回。
避坑指南:长时间稳定运行的要点
- 容器自动重启:已经加了
--restart always,如果不放心可执行sudo docker update --restart always one-api确认。 - 系统日志不撑满磁盘:建议定期清理Docker日志:
sudo sh -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log'
可以放入crontab每天执行一次。
- 电源与散热:小主机长期7×24建议放在通风处,夏天可加个小USB风扇。树莓派注意加散热片。
- 更新服务:拉取最新镜像后停止并删除旧容器:
sudo docker stop one-api
sudo docker rm one-api
# 然后用刚才的run命令重新创建新容器(注意数据卷还在)
更新前建议备份 -v 挂载的目录。
- 防火墙:如果主机有公网IP,建议只允许特定IP或使用反向代理(如Nginx)加HTTPS,不要直接暴露管理端口。
运行验证与日常维护
验证服务状态
sudo docker ps | grep one-api # 看是否running
curl -X POST http://localhost:3000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-token-here" \
-d '{"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"hello"}]}'
如果返回含 choices 字段,说明中转工作正常。
监控资源
使用 htop 或 docker stats 看一眼CPU/内存占用。
通常One API+系统一起,J4125占用不到20%,内存500MB左右,非常节能。
常见问题(FAQ)
Q:重启主机后容器没启动?
检查Docker是否已设为自启:sudo systemctl enable docker。如果之前容器启动时没加 --restart always,可以手动执行:sudo docker update --restart always one-api。
Q:外网无法访问怎么办?
- 先确认主机防火墙是否放行端口(Ubuntu默认UFW关闭,如有开启则
sudo ufw allow 3000)。 - 如果是家庭宽带无公网IP,可以使用FRP、Tailscale或Cloudflare Tunnel穿透,详情参考站内内网穿透教程。
Q:运行一段时间后API调用变慢或报错?
先检查是否上游API Key被限流或过期,其次查看容器日志:sudo docker logs one-api --tail 50。如果是内存不足,可以考虑增加swap或调低同时并发数。
Q:One API更新后数据会丢吗?
只要使用 -v /etc/one-api:/data 挂载数据目录,新版覆盖旧容器时数据不丢失。建议定期备份该目录到其他存储。
如果你正在考虑用住宅低功耗主机7×24小时跑Token中转服务,建议先按本文步骤在自己小主机上搭一遍,过程中遇到问题优先对照避坑和FAQ。
稳定运行后,再考虑接入更多渠道或做负载均衡。
---
*本文基于Ubuntu 22.04 + One API v0.6.x 写作,命令基本通用,具体版本请参考官方文档。*