构建终极家庭实验室 NUC 集群 - 第三部分:Docker 自动化与媒体堆栈
现在你已经建立了一个测试环境,剩下的就是进行一些自动化工作和媒体设置。我最初使用 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 仪表板来整理一切。你还可以从仪表板链接到你先前创建的其他家庭实验室机器,以便轻松导航,这可能非常有用。
前进
通过这个设置,你现在拥有一个功能齐全的基于 Docker 的家庭实验室,包括自动化、监控和良好集成的媒体堆栈。无论你是将其用于安全研究、个人项目,还是简单地更有效地管理家庭媒体,这个结构提供了一个可扩展且易于维护的解决方案。通过利用 Portainer 进行管理、Watchtower 进行更新和 Homarr 进行导航等工具,你可以以最少的手动干预保持一切平稳运行。一如既往,家庭实验室是高度个人化的设置,因此请随意调整和扩展这个基础以满足你的需求。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码
公众号二维码







评论