基于Nginx实现Emby硬件转码

一、前言

!!!教程仅供学习参考,务必支持正版软件,构建良好的软件版权生态!!!

Emby Server是一个开源的流媒体中心软件,可以非常方便的管理和维护电影,电视剧集等媒体库,并生成强大美观的海报墙。并且全平台的客户端,使其跨设备观看变得非常便利。但是服务端的部分插件功能,以及视频转码功能,需要会员才能解锁。本教程将辅助实现Emby服务器的硬件转码等功能。

二、准备工具

  • DMS7.1群晖系统(本质上任意一个nginx服务都可以,DSM本身的web就是通过nginx实现的,因此不需要单独在开一个nginx服务了)
  • 文本编辑软件(Notepad++,subline text,vs code均可)

三、实现步骤

1、申请ssl证书

由于Emby Server需要和mb3admin.com进行https通信,因此我们需要针对该域名申请ssl证书。

推荐 GMCert.org https://www.gmcert.org/subForm。按以下申请步骤进行:

  • CA证书如果此前PC端已安装过,则可不用重复下载安装;如果是全新安装,则尽量安装一下,双击证书,点击安装,然后手动选择证书存储,将证书安装到“受信任的根证书颁发机构”即可。
  • 主题名称为此次所需的二级域名mb3admin.com

点开下方的“高级选项”,并按照以下进行配置:

  • 在主题备用名称中,填入上图内容,将泛域名也填充进去,保证任意三级域名都处于ssl证书授权范围
  • 密钥用途和扩展密钥用途按图中红框勾选即可
  • 点击“签发证书”,会下载一个包含密钥和证书的压缩包,解压并保存

2、上传密钥和证书

将上一步中解压获取的证书和密钥文件,上传至群晖中

3、创建nginx代理配置

新建文件emby_premiere_nginx.conf,粘贴以下内容:

server {
     listen 443 ssl;
     listen [::]:443 ssl;
     server_name mb3admin.com;
     # 注意修改此处路径为你自己的路径
     ssl_certificate /volume1/web/mb3admin.com/mb3admin.com.cert.pem;
     # 注意修改此处路径为你自己的路径
     ssl_certificate_key /volume1/web/mb3admin.com/mb3admin.com.key.pem;
     ssl_session_timeout 5m;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
     ssl_prefer_server_ciphers on;
     location = /webdefault/images/logo.jpg {
     alias /usr/syno/share/nginx/logo.jpg;
            }
     location @error_page {
     root /usr/syno/share/nginx;
     rewrite (.*) /error.html break;
            }
     location ^~ /.well-known/acme-challenge {
     root /var/lib/letsencrypt;
     default_type text/plain;
            }
     location / {
     rewrite ^ / redirect;
            }
     location ~ ^/$ {
     rewrite / https://$host:5001/ redirect;
            }
     add_header Access-Control-Allow-Origin *;
     add_header Access-Control-Allow-Headers *;
     add_header Access-Control-Allow-Method *;
     add_header Access-Control-Allow-Credentials true;
     location /admin/service/registration/validateDevice {
     default_type application/json;
     return 200 '{"cacheExpirationDays": 365,"message": "Device Valid","resultCode": "GOOD"}';
    }
     location /admin/service/registration/validate {
     default_type application/json;
     return 200 '{"featId":"","registered":true,"expDate":"2099-01-01","key":""}';
    }
     location /admin/service/registration/getStatus {
     default_type application/json;
     return 200 '{"deviceStatus":"0","planType":"Lifetime","subscriptions":{}}';
    }
}

注意:

  • 由于证书和密钥的文件路径可能各有不同,在上述代码块中修改成自定义路径

    # ssl_certificate /volume1/web/mb3admin.com/mb3admin.com.cert.pem;
    ssl_certificate /change/to/your/own/cert/file/path;
    # ssl_certificate_key /volume1/web/mb3admin.com/mb3admin.com.key.pem;
    ssl_certificate_key /change/to/your/own/key/file/path;
    

将配置文件emby_premiere_nginx.conf拷贝至群晖的系统目录/etc/nginx/sites-enabled目录下。

4、修改hosts文件

由于 Emby 在验证时,会向mb3admin.com进行post请求,因此需要在服务器或者客户端发出请求时,劫持到我们自行搭建的nginx服务上,通过nginx发送假的验证通过的消息。

因此需要在Emby Server和Emby Client所在的设备上修改hosts文件,将mb3admin.com域名直接指向群晖的IP。

  • 如果家中有能修改hosts的路由设备,可在路由器中直接修改,这样就不需要在每一个子设备中进行修改了;如果没有则在以下设备中的hosts文件中加入代码块中内容;
  • Emby Server所在服务端设备;
  • windows系统PC端;
# hosts
# <群晖IP> mb3admin.com
# 加入群晖IP是:192.168.1.100,则如下所示
192.168.1.100 mb3admin.com

5、向Emby服务端的证书库中导入CA证书

在日志中发现会存在无法建立SsL连接的情况,爬贴后发现,是因为自签名证书不被Emby信任导致。这时候就需要我们将当初申请证书时,获取到的CA证书导入到Emby的可信任证书库中。docker 版本的话,需要先确认根证书文件是否由 host 端导入。整体操作流程,无论是套件版本还是 docker 版本,都大同小异。下面以套件版本为例进行说明。

一般根证书文件存储在 /etc 目录下,因此需要 root 权限才能完成。以下操作均在 root 用户下进行。

  1. 进入证书存储的目录,以上文为例,执行命令: cd /volume1/web/mb3admin.com
  2. 打印证书内容,观察格式是否正确:cat mb3admin.com.cert.pem
    按下回车键后,屏幕将输出形如一下内容,确认文件以 -----BEGIN CERTIFICATE----- 开头,-----END CERTIFICATE----- 结尾:
  3. 将证书拷贝至对应目录,并重命名。这里以群晖7.1为例,执行以下命令:
sudo mkdir -p /usr/syno/etc/security-profile/ca-bundle-profile/ca-certificates/;
cp /volume1/web/mb3admin.com/mb3admin.com.cert.pem /usr/syno/etc/security-profile/ca-bundle-profile/ca-certificates/mb3admin.com.crt;

/usr/syno/etc/security-profile/ca-bundle-profile/ca-certificates/ 这个路径是从update-ca-certificates.sh中获取的,不同系统的路径可能不同,建议先执行 sodu find / -name "update-ca-certificates ,查找这个文件。例如群晖7.1中,该文件位于 /usr/syno/bin 中。使用 cat 命令查看文件内容,找到 USERCERTSDIR=xxxxxxx 行,“xxxxxxxx” 就是对应的路径

  1. 更新根证书,执行命令:update-ca-certificates.sh
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值