(Re)Building the Ultimate Homelab NUC Cluster - Part 3
现在您已经搭建了测试环境,剩下的就是进行一些自动化和媒体处理工作。我最初使用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镜像之间以确保连续性。
|
|
部署后,现在是时候设置身份验证方法了,对大多数人来说,默认和最佳选项是表单(登录页面),确保您设置需要身份验证:(启用)。最后输入您自己的用户名和密码,然后单击保存。接下来,我们希望将我们的共享文件夹链接在一起,以便数据可以在我们的镜像之间共享。在设置下,单击媒体管理。向下滚动页面,直到找到名为添加根文件夹的蓝色按钮。在文件浏览器中,输入/
然后选择/tv/
。
Radarr
Radarr的工作方式与Sonarr完全相同,只是它用于电影管理。要部署Docker镜像,可以使用以下命令。
|
|
部署后,您需要按照步骤链接我们先前设置的目录。首先浏览到您的Docker主机的相关端口/IP和我们设置的端口,然后创建用户名和密码。在设置下,单击媒体管理。向下滚动页面,直到找到名为添加根文件夹的蓝色按钮。在文件浏览器中,输入/
然后选择/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的家庭实验室,包括自动化、监控和良好集成的媒体堆栈。无论您是将其用于安全研究、个人项目,还是简单地更有效地管理家庭媒体,这个结构提供了一个可扩展且易于维护的解决方案。通过利用Portainer进行管理、Watchtower进行更新和Homarr进行导航等工具,您可以用最少的手动干预保持一切运行顺畅。一如既往,家庭实验室是高度个人化的设置,因此请随意调整和扩展这个基础以满足您的需求。