EmbyPanel 是一个 Rust + Vue 实现的 Emby STRM 直链反代面板。后端同时提供管理 UI、API 和 Emby 反代服务:管理面板默认监听 8090,反代端口在面板中按服务器单独配置。面板会自动维护 IP 归属数据库,并在实时播放、封禁记录、播放日志和反代请求明细中显示 IP 的国家、省市、区县和运营商信息。
302 直链反代实现原理见 docs/302-redirect.md。
- 多 Emby 服务器配置,每个服务器可使用独立反代端口。
- STRM 直链识别和
302重定向,支持 OpenList/d/...路径解析为raw_url。 - 直链缓存支持 TTL、最大容量、域名黑白名单过滤。
- 支持 STRM URL 映射,普通替换和
regex:正则规则都可用。 - 可选内部跳转解析:先
HEAD跟随跳转,再把最终 URL 返回给客户端。 - 客户端 UA 拦截、播放频率限制、IP 屏蔽、用户禁用和解除封禁。
- IP 归属数据库自动下载到持久化
data目录,IP 旁展示国家、省市、区县和运营商。 - Webhook 通知,支持多个 POST JSON Webhook。
- 实时播放、播放日志、运行信息日志,支持按服务器查看。
- 运维健康检查、反代端口状态、今日请求统计、播放频率窗口状态。
- 日志关键词搜索、级别筛选、时间筛选和 CSV 导出。
- 配置文件备份/恢复,包含服务器、客户端管控、通知和日志配置。
- 配置测试校验、配置审计日志、GitHub Release 更新检查。
/data/logs/embypanel.log文件日志,支持级别、单文件大小和保留数量配置。- SQLite 持久化配置,Docker 下数据保存在
/data/embypanel.db。
.
├── .github/workflows/docker.yml # GitHub Actions Docker 多架构构建
├── data/
│ └── config.toml.example # 配置模板;运行数据库和日志不提交
├── docs/
│ ├── 302-redirect.md # 302 直链反代实现原理
│ └── changelog.md # 版本更新日志
├── frontend/
│ ├── src/ # Vue 面板源码
│ ├── index.html
│ ├── package.json
│ └── vite.config.ts
├── src/ # Rust 后端源码
├── Dockerfile # 多阶段 Docker 构建
├── docker-compose.yml # 推荐容器部署示例
├── Cargo.toml
└── README.md
推荐使用 Docker Compose 运行。8090 是管理 UI/API 端口,8091-8095 预留给 Emby 反代服务器使用。
services:
embypanel:
image: syscc/embypanel:latest
environment:
- TZ=Asia/Shanghai
- EMBYPANEL_API_ADDR=0.0.0.0:8090
container_name: embypanel
restart: always
volumes:
- ./data:/data
ports:
- "8090:8090"
- "8091-8095:8091-8095"
network_mode: bridge启动:
docker compose up -d查看日志:
docker logs -f embypanel查看健康状态:
docker ps --filter name=embypanel
curl http://127.0.0.1:8090/healthz停止:
docker compose down面板入口:
http://服务器IP:8090/ui/
如果需要更多反代端口,扩大 ports 里的范围,例如:
ports:
- "8090:8090"
- "8091-8100:8091-8100"然后在面板中把服务器反代端口配置到同一范围内。
面板提供独立“备份”页面。点击备份会生成配置文件并触发浏览器下载;点击还原会弹出本机文件选择框,选择配置文件后自动还原。还原会覆盖当前配置并自动重启全部反代服务。
备份内容包含:
- Emby 服务器配置和 API Key。
- OpenList 地址和 Token。
- 客户端管控配置、播放频率限制、Webhook 通知。
- UA 规则只备份已禁用的拦截规则;自动记录且放行的客户端不会写入备份。
- 播放频率封禁只备份仍有效的封禁;已过期或已解除的 IP/用户封禁会自动清理。
- 系统日志文件配置。
备份不包含面板管理员用户名、管理员密码、登录会话、运行日志文件和请求统计数据。
GET /healthz:公开健康检查,不需要登录,不返回敏感信息。GET /api/monitoring/healthz:面板详细健康信息。GET /api/monitoring/proxy-status:每个反代端口的监听状态、启动时间、最近请求和最近错误。GET /api/monitoring/stats:今日请求、重定向、缓存命中、拦截、错误统计。统计持久化在 SQLite,并自动清理旧数据。GET /api/app-info/update-check:登录后检查 GitHub Releases 是否有新版本。
本项目基于 MIT License 开源,详见 LICENSE。