一个 OpenAI 兼容的 LLM 代理路由。聚合 20+ 免费 LLM 提供方,统一在一个 /v1 API 后面。密钥加密存储,路由器自动选择最佳模型,超出限额时自动回退。
docker run -d \
--name yk-freellm \
-p 3001:3001 \
-v yk-freellm-data:/app/server/data \
-e ENCRYPTION_KEY=$(openssl rand -hex 32) \
host1syan/ykfreellm:latest
打开 http://localhost:3001,设置登录密码,然后添加提供方密钥即可开始使用。
| 变量 | 默认值 | 说明 |
|---|---|---|
PORT | 3001 | 服务端口 |
ENCRYPTION_KEY | — | 必填。32 字节 hex,用于加密存储的 API 密钥。首次设置后不可更改,否则已存密钥无法解密 |
PROXY_URL | — | 可选。出站代理地址,如 socks5://127.0.0.1:1080 |
PREMIUM_SITE_URL | https://freellmapi.co | 高级版订阅站点 |
PROXY_RATE_LIMIT_RPM | 0 | 代理 API 每分钟请求限制(0=不限制) |
DASHBOARD_ORIGINS | — | 额外的 CORS 来源(逗号分隔) |
CLIENT_DIST | — | 客户端静态文件路径(内嵌时使用) |
SQLite 数据库存储在 /app/server/data,必须挂载卷以保证数据持久化:
docker volume create yk-freellm-data
或绑定宿主机目录:
docker run -d \
--name yk-freellm \
-p 3001:3001 \
-v /path/to/data:/app/server/data \
-e ENCRYPTION_KEY=... \
host1syan/ykfreellm:latest
version: "3"
services:
yk-freellm:
image: host1syan/ykfreellm:latest
container_name: yk-freellm
ports:
- "3001:3001"
volumes:
- yk-freellm-data:/app/server/data
environment:
- ENCRYPTION_KEY=${ENCRYPTION_KEY}
restart: unless-stopped
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3001/api/ping').then(r => { if (!r.ok) process.exit(1) }).catch(() => process.exit(1))"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
volumes:
yk-freellm-data:
使用前生成加密密钥:
echo "ENCRYPTION_KEY=$(openssl rand -hex 32)" > .env
docker compose up -d
docker pull host1syan/ykfreellm:latest
docker stop yk-freellm
docker rm yk-freellm
# 用相同 ENCRYPTION_KEY 和 volume 重新启动
任何 OpenAI 兼容客户端,指向 http://localhost:3001/v1,用仪表盘生成的 unified API key 认证:
curl http://localhost:3001/v1/chat/completions \
-H "Authorization: Bearer yk-freellm-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [{"role": "user", "content": "hello"}]
}'
Google AI Studio、Groq、Cerebras、NVIDIA NIM、Mistral、OpenRouter、GitHub Models、Cohere、Cloudflare Workers AI、HuggingFace、Z.ai (Zhipu)、Kilo、Pollinations、LLM7、OVH AI Endpoints、OpenCode Zen 等 20+ 免费/低费 LLM 服务。
ENCRYPTION_KEY 一旦设置不可更改——否则已加密的 API 密钥无法解密Content type
Image
Digest
sha256:8b565990b…
Size
156.1 MB
Last updated
3 months ago
docker pull host1syan/ykfreellm