如果你也像我一样,不太信任第三方修改过的 Emby 镜像,又想通过 Docker 来完整的体验 Emby Web 版,那么这个方案适合你。通过这种方式,你可以在不修改任何文件、不下载破解镜像的情况下,轻松体验 Emby Server 的完整版,且支持硬件解码。
为什么我要避开第三方镜像?
首先,我们来看一下市面上已有的一些方案:
- 使用第三方修改过的开心版镜像
这种方案的优点是“开箱即用”,很方便。但问题也很明显:安全性存疑,更新不及时,且只能激活 Web 版。 - 替换修改后的 DLL 文件
这种方式也有类似的问题,安全性和兼容性差,且只能激活 Web 版。 - 劫持激活域名到自己服务器
这种方法能够解锁所有客户端,但你需要修改网络配置,还要让所有客户端信任你的证书,这样操作比较麻烦。
我的方案并非完美,但在安全方面是绝对可靠的,而且非常简单。与第一个和第二个方案相比,它的优点在于基于官方原版,无需下载、修改 Emby 任何文件,也无需修改本地设备。但是缺点是也只能激活 Web 版。
方案核心思路
我们的核心思路是使用 Nginx 反向代理 来替换 Web 请求中的激活地址,模拟激活成功的响应。这样做不需要修改 Emby Server 的任何文件,且能够永久支持最新版,避免了破解镜像带来的问题。
Nginx 配置
我们需要配置 Nginx 来完成反向代理和替换激活地址的功能,以下配置如果只服务 Emby 一个服务,则可省略 location 行中的 /emby 部分。
以下是完整的 Nginx 配置:
server {
listen 80;
# 其他服务配置
# 反向代理
location /emby/ {
proxy_pass http://emby:8096/; # 此处 emby 应指向对应 IP,Docker 保持默认即可
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket 支持
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}
# 替换 js 中的激活服务器地址为本地
location /emby/web/modules/emby-apiclient/connectionmanager.js {
proxy_pass http://emby:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 替换激活服务器地址
sub_filter 'https://mb3admin.com/' '/';
sub_filter_once off;
# 只替换 JS
sub_filter_types application/javascript application/x-javascript;
}
# 模拟激活服务器响应
location /admin/service/registration/validateDevice {
default_type application/json;
add_header Content-Type application/json;
return 200 '{"cacheExpirationDays":365,"message":"Device Valid","resultCode":"GOOD"}';
}
# 修正秘钥页面的填写问题(可省略)
location /emby/Plugins/SecurityInfo {
default_type application/json;
add_header Content-Type application/json;
return 200 '{"SupporterKey":"请体验后支持正版","IsMBSupporter":true}';
}
}
Docker Compose 配置
接下来,我们需要通过 Docker Compose 来启动 Nginx 和 Emby 容器,让它们互相配合。如果你没用使用 Docker,则可以省略以下配置。
以下是 docker-compose.yml
配置文件的内容:
services:
nginx:
image: nginx:latest
volumes:
- ./conf/nginx:/etc/nginx/conf.d
ports:
- "80:80"
depends_on:
- emby
emby:
image: emby/embyserver
devices:
- /dev/dri:/dev/dri # 启用硬解的关键
environment:
- UID=1000
- GID=1000
- TZ=Asia/Shanghai
volumes:
- ./conf/emby:/config
- /path/to:/media # 请修改此处文件映射路径
ports:
- "8096:8096" # 可省略
启动容器
只需将上述配置按如下关系保存:
- ./docker-compose.yml
- ./conf/nginx/emby.conf
运行以下命令启动容器:
docker-compose up -d
这样,Emby 和 Nginx 容器就会启动起来,你可以通过浏览器通过 http://127.0.0.1/emby
访问 Emby 的 Web 界面。
开启硬解支持
如果你希望 Emby 使用硬件解码(硬解),需要确保宿主机的 /dev/dri
目录权限正确,允许运行 Docker 的用户拥有 /dev/dri
下的读写权限。可以通过以下命令让 Docker 容器访问该目录:
chown -R 1000:1000 /dev/dri
确保你的硬件支持硬解,这样 Docker 容器内的 Emby 就能利用硬解加速了。
总结
通过这个方案,你可以避免使用第三方破解镜像,安全地体验 Emby 完整版 Web 界面。Nginx 反向代理和模拟激活响应让这个过程简单、有效,并且不需要修改 Emby 任何文件。如果你的硬解设置正常,体验也会更流畅。
希望大家能够体验后支持正版!