现在您已经搭建了测试环境,接下来需要完成一些自动化与媒体相关工作。我最初使用Proxmox,但后来选择直接使用裸机并基于Debian/Ubuntu系统。本设置将使用Docker及多个Docker镜像。最终,您将获得一个类似这样的仪表板,包含您所设置的不同子部分。
初始设置
Docker是您的好帮手,我不会逐步讲解如何安装Ubuntu/Debian,但基本上您需要一个Ubuntu或Debian的基础设置;版本不太重要,因为初始步骤相同。
我喜欢编写简短脚本来自动化我的生活,这里也不例外。以下脚本将准备您的Ubuntu镜像并安装正确版本的Docker:
|
|
它首先查找所有先前安装的Docker版本并将其删除。然后,通过更新周期安装相关软件包,最后安装Docker和Docker-compose。在使用Docker镜像之前,值得设置一个文件夹来存放所有Docker镜像,以便在创建镜像时更易于管理。为此,我选择创建/volume1/docker来容纳我的各种文件夹,即当创建新镜像时,我在此处创建一个子文件夹以将文件系统映射到镜像。这在镜像之间共享文件夹时尤其重要,稍后会解释。
基础镜像
安装Docker后,我们将安装一些基础镜像,用于管理我们的堆栈。我倾向于首先安装辅助镜像,包括Portainer社区版和WatchTower:
Portainer用作通过浏览器部署Docker堆栈的管理界面;它还允许我们快速查看镜像状态及是否有错误:
|
|
启动后,仪表板将在一个地方显示所有实例,点击堆栈将显示所有容器、镜像、堆栈以及主机上使用的资源。
在容器下,有各种可用信息,包括容器健康状况和运行内容(这是我的NUC堆栈示例,但如果您是首次部署,这将大部分为空):
Watchtower将充当自动更新监视器,并在有新镜像时拉取;它会优雅地关闭现有容器并使用初始部署时相同的选项重新启动。但有一些注意事项,如果您有特定镜像如PiHole或其他依赖运行时间的镜像,您可能希望将它们从watchtower中排除,这可以通过在docker compose文件中添加以下内容实现:
|
|
或者,将它们作为独立镜像/虚拟机运行。要设置和运行watchtower,可以使用以下docker命令,该命令将容器连接到docker套接字,允许它与其他容器通信:
|
|
如果您运行媒体堆栈或类似内容,这非常有效,因为它消除了保持诸如Plex之类内容更新的痛苦。
仪表板
有了监控和自动更新,下一步是构建我们的基础仪表板。为此,我选择使用Homarr,因为它带有各种自定义选项。此外,它通常作为家庭网络上各种可访问应用程序的良好仪表板,您可以根据偏好设置有无身份验证,例如,如果您想要一个家庭实验室板和一个媒体堆栈,或者像我一样有tailscale,因此您希望更改仪表板上的链接以匹配tailscale IP,您也可以这样做。
要设置我们的镜像,我们将在现有的/volume1/docker/目录中创建以下目录:
|
|
|
|
设置homarr后,我们可以在构建其他应用程序后填充它,但基础上下一个应用程序构建运行在以下端口上,因此您可以在仪表板中预先构建/分配它们:
- Overseerr - http://YOURDOCKERHOSTIP:5055
- Sonarr - http://YOURDOCKERHOSTIP:8989
- Deluge - http://YOURDOCKERHOSTIP:8112
- Radarr - http://YOURDOCKERHOSTIP:7878
- Plex - http://YOURDOCKERHOSTIP:32400
安装和配置Tailscale(可选)
Tailscale是我远程访问家庭实验室的最爱工具,有许多关于使用它做各种事情的指南,我喜欢的一点是在*nix主机上的部署非常容易:
|
|
只需在终端中运行以下脚本,脚本将完成其余工作。如果您希望在运行前查看脚本在做什么,也可以在浏览器中浏览https://tailscale.com/install.sh并逐行阅读。
构建’arr堆栈
‘arr应用程序堆栈是任何家庭实验室/媒体堆栈的重要补充,因为它提供了一种简单直观的方式来管理您的媒体收藏,并且通过添加overseerr,您可以从流服务收集额外内容。将其视为一个一体化仪表板,插入plex以允许您从您支付的多个订阅服务流式传输,并可以轻松浏览可用内容。
Plex
在我们深入各种媒体管理镜像之前,第一个核心部分是Plex,它将是我们用于管理和中心观看的仪表板。此外,我们将为不同的docker镜像创建一些目录以存在并通信:
|
|
创建文件夹后,可以部署plex镜像并将其映射到相关文件夹:
|
|
要访问plex,导航到http://YOURDOCKERIP:32400/web,Plex将提示您登录并完成设置步骤。完成后,您可以通过指向我们先前映射的文件夹并设置相关项来添加您的库,因此TV = /tv和Films/Movies = /movies,这将直接映射到主机操作系统,从而在docker镜像之间工作。
Sonarr
对于Sonarr和其他’arr镜像,我们将创建一个共享文件夹,它们都可以从中操作并访问内容以在docker镜像之间通信。我选择创建/volume1/web/downloads并将其映射到不同的docker镜像以确保连续性。
|
|
部署后,现在设置身份验证方法,对大多数人来说默认和最佳选项是Forms(登录页面),确保设置Authentication Required: (Enabled)。最后输入您自己的用户名和密码,然后点击Save。接下来,我们希望将我们的共享文件夹链接在一起,以便数据可以在我们的镜像之间共享。在Settings下,点击Media Management。向下滚动页面直到找到名为Add Root Folder的蓝色按钮。在文件浏览器中,输入/然后选择/tv/。
Radarr
Radarr的工作方式与Sonarr完全相同,只是它用于电影管理。要部署docker镜像,可以使用以下命令。
|
|
部署后,您需要按照步骤链接我们先前设置的目录。首先浏览到您的docker主机的相关端口/IP和我们设置的端口,然后创建用户名和密码。在Settings下,点击Media Management。向下滚动页面直到找到名为Add Root Folder的蓝色按钮。在文件浏览器中,输入/然后选择/movies/。
Overseerr
Overseerr是一个请求管理和媒体发现工具,构建用于与您现有的Plex生态系统配合使用,并直接与Radarr、Sonarr和其他工具很好地挂钩。要拉取和构建docker镜像,我们将使用相同的docker共享基础文件夹,但为overseerr创建一个新目录。
|
|
与Radarr和Sonarr不同,Overseerr不需要映射到各种目录,因为主要设置在您首次访问应用程序时配置,http://YOURDOCKERHOSTIP:5055它将提示您登录plex并要求您提供plex所在的主机,在我们的情况下,这将与我们的overseerr主机相同的IP,默认端口为32400。
下载和VPN
为了有效简化Overseerr设置以与所有不同应用程序通信,您可能希望设置某些内容来执行下载,这可以通过Deluge实现,它是一个开源下载客户端。有一个docker镜像将deluge与VPN客户端结合,以确保下载的匿名性和增强的隐私。Arch Deluge VPN docker镜像能够使用不同的VPN提供商,确保您不将外部IP地址暴露给任何下载。在部署之前,我们将在docker文件夹内创建一个专用文件夹,类似于其他应用程序,称为deluge,并且我们将使用与其他镜像共享的现有下载文件夹。
|
|
设置所有镜像后,您可以在设置中配置每个镜像并让它们相互通信,我不会在这篇博客文章中详细介绍,因为它相当直接,并且有无数关于如何做的教程。但此时,您已经建立了一个’arr堆栈、plex和一个homarr仪表板来整理一切。您还可以从仪表板链接到您先前创建的其他家庭实验室机器,以便轻松导航,这可能非常有用。
如果您尚未阅读我的家庭实验室NUC堆栈系列的第1和第2部分,可以在这里找到:
- (Re)Building the Ultimate Homelab NUC Cluster - Part 1
- (Re)Building the Ultimate Homelab NUC Cluster - Part 2
前进
通过此设置,您现在拥有一个功能齐全的基于Docker的家庭实验室, complete with automation, monitoring, and a well-integrated media stack. 无论您将其用于安全研究、个人项目,还是简单地更有效地管理家庭媒体,此结构都提供了一个可扩展且易于维护的解决方案。通过利用Portainer进行管理、Watchtower进行更新和Homarr进行导航等工具,您可以用最少的 manual intervention 保持一切运行顺畅。一如既往,家庭实验室是高度个人化的设置,因此请随意调整和扩展此基础以满足您的需求。