jellyfin的部署及SSL配置

2,949 阅读2分钟

jellyfin服务端部署及SSL配置

OMV版本:6.0.30-1 (Shaitan)

Debian版本:11 (bullseye)

jellyfin版本:10.8.4

jellyfin-android版本:v2.4.4

由于我想为的NAS安装视频内容服务,因此做了此工作。

jellyfin部署

本次部署采用简单的Docker部署方案,并配置硬件加速。

docker-compose.yarml

version: "3.8"
services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    user: 0:0
    group_add:
      - 106
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
    volumes:
      - ./config:/config
      - ./cache:/cache
      - type: bind
        source: /mnt/pool-16T/nas/视频
        target: /media
    ports:
      - 8096:8096
      # - 8920:8920
    restart: on-failure:2
  • user 对应用户,我使用的是root用户,所以是0
  • group_add 对应render用户组的id,cat /etc/group | grep render命令即可查看
  • volumes.source 对应我媒体库的位置,采用bind挂载
# 部署
docker-compose up -d

之后打开http://<host>:8096即可进行安装设置

配置硬件加速

硬件加速大部分情况下配置VAAPI即可,Intel和AMD的带核显CPU都支持。

若要配置N卡或树莓派,具体内容参考:jellyfin.org/docs/genera…

图片.png

设置https

openssl genrsa -des3 -out server.key 2048
openssl rsa -in server.key -out server.key  # 取消密码
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt

mkdir config/ssl
cp server.p12 config/ssl/

生成的server.p12即是我们需要的SSL证书。

在此处进行https的配置:

图片.png

安卓客户端的SSL问题

安卓客户端使用了WebView来显示页面,但它会对SSL证书进行验证,因此配置https后会出现无法连接服务的情况。

下载jellyfin的源码:

github.com/jellyfin/je…

有4处需要修改:

  1. gradle.properties

    增加一行:

    jellyfin.version=2.2.4
    
  2. gradle/wrapper/gradle-wrapper.properties

    删除第3行:

    #distributionSha256Sum=e6d864e3b5bc05cc62041842b306383fc1fefcec359e70cebb1d470a6094ca82
    
  3. app/src/main/java/org/jellyfin/mobile/setup/ConnectFragment.kt

    修改第119行:

    // val httpUrl = checkServerUrlAndConnection(enteredUrl)
    var httpUrl = enteredUrl
    
  4. app/src/main/java/org/jellyfin/mobile/webapp/WebViewFragment.kt

    删除第232、233行,并增加一行proceed:

    // handler.cancel()
    // onErrorReceived()
    handler.proceed()
    

最后自行编译打包,即可正常使用。