【群晖】Docker Compose部署 Emby Server

本来群晖上面的 Emby 是用套件安装的,但是不巧的是前两天脑袋一抽装了两个插件,导致 Emby Server被当肉鸡了,还找不到脚本代码在哪儿,一天时间上传了3T的流量。无奈之下,只能尝试卸载后用docker重新安装。

本文将会讲解如何通过Docker compose(Container Manager 套件页面方式)部署 Emby Server并完成刮削。

本文仅讲解如何部署并设置刮削,不会再讲解如何配置 Emby,如果想要了解如何配置 Emby 可以参考我的另一篇文章。

环境

  • 7.2以下版本也可以,只是docker套件没有可视化部署docker compose的页面,可以通过SSH登录群晖后台去手动部署 Docker Compose)
  • DSM:DSM 7.2-64570 Update 3
  • Container Manager:20.10.23(也就是7.2升级后的新版本Docker,改名了而已)

部署

准备步骤

创建文件夹

  1. 打开File Station ,在你统一放置docker容器文件的文件中新建一个 emby 文件夹。因为我的存储池1做了raid,因此比较重要的数据都是存放在存储池1中。并且我的容器相关的文件都是存放在 /volume1/docker/ 下的,所以我的文件夹新建路径是 /volume1/docker/emby
  2. 在刚才新建的文件夹中新建两个子文件夹,分别是用来存放配置信息的 /volume1/docker/emby/config 和用来存放刮削信息元数据的 /volume1/docker/emby/metadata
  3. 给刚才新建的几个文件夹修改权限为 Everyone (也可以不用修改)。
  4. 创建媒体库文件夹,媒体库可以不和docker容器的文件保存在相同的存储池中。媒体库我是单独创建了一个存储池,存储类型是 JBOD 便于以后可以合并新增硬盘自动扩容而不需要再去修改 Emby 等相关服务中的路径了。我的媒体库创建路径是 /volume2/video

获取文件夹相关权限

  1. 打开群晖控制台

  2. 打开 终端机和SNMP , 选择 启动SSH功能

  3. SSH登录群晖后台

  4. 输入命令查看刚才创建文件夹使用的帐号的UID、GID等信息,并记录在本地,一会儿需要用到

    id <用户名>
    

部署Emby

  1. 打开 Container Manager 套件,选择项目,选择新建 emby-1.webp

    • 项目名称:随便写,自定义内容
    • 路径:选择 设置路径 里面选择前面创建的 /volume1/docker/emby 文件夹
    • 来源:选择 创建docker-compose.yml ,然后在下面的文本框中粘贴配置文件内容
  2. docker-compose.yml 配置文件内容

version: "3"
services:
  emby:
    image: emby/embyserver:latest
    container_name: emby-server
    restart: always
    deploy:
      resources:
        limits:
          memory: 8G
    environment:
      UID: 10
      GID: 10
      GIDLIST: 100,101
    volumes:
      - /volume1/docker/emby/config:/volume1/docker/emby/config
      - /volume1/docker/emby/metadata:/volume1/docker/emby/metadata
      - /volume2/video:/volume2/video
    ports:
      - 8096:8096/TCP
    network_mode: "bridge"
  1. 修改配置文件中的内容

    • container_name:容器名,自定义
    • memory:内存限制,从deploy节点开始到memory删除这项配置就是不限制
    • UID:修改为前面获取到创建文件夹用户的UID
    • GID:修改为前面获取到创建文件夹用户的GID
    • GIDLIST:修改为前面获取到创建文件夹用户的GROUP的值,注意这里可以是多个代表用户属于多个用户组,用英文半角逗号拼接不要空格
    • volumes:设置磁盘映射,前面的是本地服务器中的文件夹路径,后面是映射到容器中显示的文件路径,建议前后保持一致
    • ports:端口映射,因为我们采用桥接模式,所以做个端口映射才可以外部访问
  2. 另外3个端口可以不做映射直接本地端口即可

  3. 如果想要使用 https 方式访问 emby,建议使用群晖的反向代理统一控制

  4. 完成配置修改后,点击保存,选择项目构建

  5. 完成项目构建后,在 Container Manager 中 容器 中可以看到自动创建的名为 emby-server的容器

  6. 查看容器日志确认启动成功

  7. 访问 http://x.x.x.x:8096 地址登录Emby服务,其中 x.x.x.x host地址是你本地地址(如果建立了公网访问也可以使用公网域名)

刮削

因为一些众所周知的原因,国内访问 TMDB、TVDB 等网站经常是不可用状态,因此需要设置可用DNS以便 Emby Server 可以正常刮削

  1. 打开地址 站长工具-PING检测 ,获取下面域名最新的、可用的、最快的 IP 地址
www.themoviedb.org

api.thetvdb.com

image.tmdb.org
  1. 打开 Container Manager

  2. 点击容器 emby-server 并打开 详情

  3. 点击右上角的 操作 菜单里面的 打开终端机

  4. 选择 新增 里面的 通过命令启动 下拉菜单

  5. 因为 emby 容器并不是基于常规 linux 服务打包的镜像,并没有包含 bash 命令,因此使用 sh 命令,输入命令打开终端

    /bin/sh
    
  6. 查看 hosts 文件内容

    cat /etc/hosts
    
  7. 编辑 hosts 文件,这里只能用 vi 命令

    vi /etc/hosts
    
  8. 在文本最末尾粘贴下面的内容,其中的 ip 地址可以换成你获取的最新的、可用的地址,我这里只是示例,并不保证当前时间还可用

    65.8.11.87 api.themoviedb.org
    13.224.167.108 api.themoviedb.org
    13.224.167.16 api.themoviedb.org
    13.224.167.10 api.themoviedb.org
    13.224.167.74 api.themoviedb.org
    13.35.166.12 api.themoviedb.org
    13.225.183.115 api.themoviedb.org
    198.44.185.131 api.thetvdb.com
    65.8.113.110 api.thetvdb.com
    13.226.125.88 api.thetvdb.com
    13.35.157.141 api.thetvdb.com
    143.244.49.177 image.tmdb.org
    169.150.249.162 image.tmdb.org
    143.244.50.210 image.tmdb.org
    108.138.246.35 image.tmdb.org
    143.244.50.90 image.tmdb.org
    51.89.210.79 webservice.fanart.tv
    
  9. 点击 esc ,输入 :wq 保存退出

  10. 重启容器