一、 写在前面:
1. 首先感谢诸多编写群晖教程的大佬们,让我从零开始接触到群晖,学习到了很多东西。
2. 我在用群晖Docker和镜像的过程中,阅读和参考了很多大佬的文章,逐渐对群晖和Docker有了一定的理解,也发现了一些在个人理解上认为不完美的地方,在这里分享出来,如果理解有错误的地方,还请大家指正。
3. 如果你在后面的下载过程中出现下载慢和下载失败的问题,一般都是网络原因,不宜过多描述,请百度搜索解决方法。
4. 编写过程难免有所遗漏,如果你在阅读过程中有诸多不理解的地方,欢迎在评论区留言,我在这里会同时安装四个容器,让大家相互参照,并尽量将内容描述的更好理解。
5. 为了方便写这篇文章,且不破坏我原有的环境,这篇文章所用到的内容全部运行在虚拟机里。
虚拟机安装的产品型号:DS918+
DSM版本:DSM 6.2.3-25426
二、 安装Docker和下载镜像(群晖叫映像)
1. 直接在群晖套件中心搜索Docker并安装,安装完成后会自动在共享文件里面创建一个名为docker的文件夹。


2. 打开Docker->注册表,分别搜索和下载四个映像,版本默认选择latest就可以,其中jellyfin和emby分别有两个,我这里全部选择linuxserver的。




如果点击下载后不弹出选择版本的对话框,且报错无法开始下载,可以使用ssh登录后台,使用docker pull xxx/xxx:latest 命令来进行安装,latest代表最新版,也可以安装其它版本。不知道ssh使用方法的可以自行百度学习。
07. 使用命令拉取映像
3. 无论使用图形化界面下载,还是使用命令下载,在完成后都应该在docker的映像中看到下载好的映像。
08. 四个下载完成的映像
三、 配置群晖用户和用户组权限
1. 控制面板->共享文件夹,创建两个目录,一个给Transmission和qBittorrent用的Downloads,一个给jellyfin和emby用的Media。
09. 创建共享文件夹
我这里还在下级路径分别创建了两个文件夹做后边的演示使用。
10. 后面用作展示的文件夹
2. 控制面板->用户账户,创建两个用户。创建用户时只需要输入用户名和密码,后面的权限分配一律默认。
我这里创建了U-Downloader用来给下载类型的docker容器使用,U-MediaSharer给媒体类型的docker容器使用。
11. 创建用户
创建完成后用户是不具有对三个文件夹的读写权限的。
12. 默认权限
3. 控制面板->用户群组,创建两个用户群组。
13. 创建用户组
创建过程中给G-Downloaders分配 Downloads的读写权限。同理给G-MediaSharers分配Media的读写权限。
14. 分配共享文件夹权限
4. 给用户组添加用户,让用户继承用户组的权限。
G-Downloaders添加U-Downloader,G-MediaSharers添加U-MediaSharer。
15. 为用户组添加成员
这样U-Downloader就继承了G-Downloaders用户组对Downloader文件夹的读写权限。U-MediaSharer同理。
16. 继承用户组权限的用户
四、 为Docker容器提前创建文件夹和分配文件夹权限
1. 在docker文件夹中按下图层级结构创建文件夹。
17. 文件夹层级结构
2. 将文件夹权限分配给用户或用户组。
这里以emby_linuxserver文件夹为例,我将文件夹的全部允许权限给了用户U-MediaSharer。这里也可以直接给G-MediaSharers用户组授权,但如果给朋友创建了一个名为U-MediaSharer2的用户用来分享群晖中的电影音乐,同样属于G-MediaSharers用户组,这样你的朋友就有了权限操作emby_linuxserver文件夹,所以这里不推荐直接给用户组授权。用同样的方法分别将其它文件夹权限授予需要的用户。
18. 给U-MediaSharer用户分配emby_linuxserver文件夹的权限
五、 查看Docker容器用到的用户和用户组ID
0. 常见的教程中为了授予容器对文件夹的访问权限,一般采用下面3种方法之一,这三种方法都可以实现,但主要是安全性不足。
a. 直接勾选使用高权限执行容器。
b. 将使用的文件夹直接授予everyone用户全部权限,方法类似于第四部分。
c. 在容器的环境中填写管理员的UID和GID。
1. 本文采用第三种方法,但并不直接使用管理员权限。进入Docker->映像,在创建容器之前先打开映像右侧的链接。
19. 打开映像右侧的链接
2. 这里以qBittorrent为例,链接里面会告诉你怎么安装和配置容器,文件夹映射、端口映射等等部分请直接参考链接和其它教程,这里只说权限部分。下拉到参数部分。找到PUID和PGID,我们就是要在环境里填写这两个地方来解决Docker容器的文件夹权限问题。
20. 参数说明
3. 使用管理员账号登录后台,使用vi etc/group命令查看用户组ID,我这里两个用户组ID分别是65536 65537。请自行百度vi命令的使用方法。
21. 命令
22. 用户组信息
使用vi etc/passwd查看用户ID,两个用户ID分别是1027 1028。
23. 命令
24. 用户信息
六、 配置容器
六、 配置容器
完成文件路径映射,做好端口转发规则,配置好环境,将对应的ID填入四个容器相应的环境,注意每个容器的关键字可能并不一样,具体请查看相关链接。
1. qBittorrent:
注意:有人说不能使用默认的容器端口6881,所以我改成了6991。前两个端口是一样的,只是协议不一样。
本地端口为0-65535,数字小的很可能被其他软件占用,建议设置大一点,比如我这里选了56991和58080,。
环境里添加PGID,填写用户组G-Downloaders的ID:65536,添加PUID,填写用户U-Downloader的ID:1027。
25. 文件路径映射
26. 端口转发规则
27. 环境变量
2. transmission:
环境里添加PGID,填写用户组G-Downloaders的ID:65536,添加PUID,填写用户U-Downloader的ID:1027。
28. 文件路径映射
29. 端口转发规则
30. 环境变量
3. emby:
环境里添加PGID,填写用户组G-MediaSharers的ID:65537,添加PUID,填写用户U-MideaSharer的ID:1028。
31. 文件路径映射
32. 端口转发规则
33. 环境变量
4. jellyfin:
注意:这里的8096映射到了本地的58097,因为本地的58096端口被前面的emby占用了。
环境里添加PGID,填写用户组G-MediaSharers的ID:65537,添加PUID,填写用户U-MideaSharer的ID:1028。
34. 文件路径映射
35. 端口转发规则
36. 环境变量
七、 运行容器,Enjoy!
七、 运行容器,Enjoy!
37. Docker容器
1. 在emby和jellyfin添加媒体库的时候,我这里能看到之前添加的两个演示文件夹,就说明权限配置没问题。
38. emby添加媒体库部分
39. jellyfin添加媒体库部分
2. 在transmission和qBittorrent中将下载路径设置为/downloads2/就可以将文件下载到群晖的Downloads文件夹中。
40. Transmission
41. qBittorrent
注意:qBittorrent打开如果提示Unauthorized,先关闭容器,修改docker/qbittorrent_linuxserver/config/qBittorrent/qBittorrent.conf文件,在最后增加WebUI\HostHeaderValidation=false,保存,启动容器。文本编辑器可以在群晖套件找到。
42. 修改qBittorrent配置文件