这是一个可直接部署到普通 Linux 服务器的 Emby 反向代理项目,不再依赖 Cloudflare Workers,也不需要 Docker。服务本体使用 Node.js 运行,可放在 nginx 或 Caddy 后面提供 HTTPS、域名接入和反向代理。
- 保留原项目的路径格式:
https://你的域名/https://目标地址 - 支持 Emby 常见 HTTP 代理请求
- 支持 WebSocket 升级转发
- 支持重定向处理与直连白名单
- 支持本地统计持久化,数据保存到服务器文件
- 提供首页说明、
/stats统计接口和/health健康检查
建议使用 Node.js 20 或更高版本。
拉取仓库后,在 Linux 服务器中直接执行:
sudo sh deploy/install.sh脚本会自动完成:
- 检查并安装 Node.js 20+
- 交互式询问域名、监听地址、端口、反向代理类型和 HTTPS
- 生成
.env - 安装运行依赖
- 注册
systemd服务 - 按选择自动安装
nginx或Caddy - 自动写入并启用对应反向代理配置
- 设置开机自启并立即启动
默认服务名为 emby-server-proxy,默认监听 0.0.0.0:3000。
交互安装时会依次提示你输入:
- 对外访问域名
- 服务监听地址
- 服务监听端口
- 反向代理类型:
none/nginx/caddy - 是否启用 HTTPS
说明:
- 选
caddy并启用 HTTPS 时,会使用 Caddy 自动签发证书 - 选
nginx并启用 HTTPS 时,可以选择certbot自动申请证书,或使用你已有的证书文件 - 选
none时只安装 Node.js 服务,不安装反向代理
如果你不想交互输入,也可以直接用环境变量覆盖,例如:
sudo APP_DOMAIN=media.example.com PROXY_CHOICE=caddy ENABLE_HTTPS=true PORT=3100 RUN_USER=www-data RUN_GROUP=www-data sh deploy/install.shnpm install
npm run start默认监听:
HOST=0.0.0.0PORT=3000
https://你的服务域名/http://emby.example.com:8096
https://你的服务域名/https://emby.example.com
如果路径里没有写协议,服务默认按 https:// 处理。
可选配置写在 .env 中,示例见 .env.example。
HOST:监听地址,默认0.0.0.0PORT:监听端口,默认3000TIME_ZONE:统计使用的时区,默认Asia/ShanghaiSTATS_FILE:统计文件保存路径,默认./data/stats.jsonREQUEST_TIMEOUT_MS:单次上游请求超时,默认300000TRUST_PROXY_HEADERS:是否信任X-Forwarded-*和CF-*头,默认truePROXY_CHOICE:反向代理类型,可选none、nginx、caddyENABLE_HTTPS:是否启用 HTTPS,可选true或falseNGINX_USE_CERTBOT:nginx模式下是否使用 certbot 自动申请证书ACME_EMAIL:自动申请 HTTPS 证书时使用的邮箱SSL_CERT_PATH:nginx手动证书模式下的证书路径SSL_KEY_PATH:nginx手动证书模式下的私钥路径MANUAL_REDIRECT_DOMAINS:覆盖内置直连白名单,逗号分隔DOMAIN_PROXY_RULES:当请求来自指定 Cloudflare 日本节点时改写上游域名,格式为后缀=主机[:端口]JP_COLOS:用于DOMAIN_PROXY_RULES的节点代码,默认NRT,KIX,FUK,OKA
.
├─ server.js # Node 服务入口
├─ src/
│ ├─ config.js # 运行配置
│ ├─ frontend.js # 首页 HTML
│ └─ stats-store.js # 本地统计持久化
├─ deploy/
│ ├─ nginx.conf # nginx 配置示例
│ ├─ Caddyfile # Caddy 配置示例
│ ├─ emby-proxy.service # systemd 服务示例
│ └─ install.sh # 一键安装脚本
├─ .env.example # 环境变量示例
└─ DEPLOY.md # 服务器部署说明
详细部署步骤见 DEPLOY.md。
- 本项目仅用于学习和研究目的,请勿用于非法用途。
- 统计数据默认保存为本地 JSON 文件,适合单机部署。
- 如果你仍然在 Cloudflare 后面接入本服务,服务会尝试读取
CF-RAY里的节点代码来兼容原有日本节点规则。