完美媒体服务器– 2020版

2021-01-01 11:34:26

该系列的5周年纪念日是2月,为庆祝这一点,我准备了对材料的全面检查,并希望为博客文章(此博客)和perfectmediaserver.com展示一个全新的家。

新站点是一个Wiki,它将指导新老用户选择软件和硬件以构建自己的Perfect Media Server的过程。

它代表了100个小时的工作量,旨在降低某些人构建自己的PMS的入门门槛,并帮助传播有关免费和开源软件的好口碑。该网站已完成了许多基本工作,但希望在这里和那里看到一些正在进行的工作标签-它们将在接下来的几周内消失。

这些博客文章现在将作为年度媒体对Perfect Media Server解决方案的状态进行评论,并记录全年中发生的任何重大变化。议程上还将讨论自托管的一般状态。无论如何,我都会定期在自托管播客中进行此操作,因此,为什么不每年都将重点放在最重要的位置。

ew夫,一年。我不了解您,但由于房屋定单,我比以往任何时候都拥有更多的时间去修补和完善事物。但是,我发现整个系统是如此可靠,以至于每年写这篇文章时,我都会想到,好吧,它仍然有效。但这并不能带来如此出色的内容。所以...我什至会写些什么?"。

我知道事情对于许多人来说也是非常稳定和可靠的,因为您找到了我并通过Discord或Twitter告诉了我。我每月有几次联系,询问PMS在2020年是否仍然有用,答案是肯定的!绝对没错。

尽管今年我想到自己的另一篇博客文章可能没有那么有用。然而,一个经过精心策划的,具有一流搜索和某种结构的开源网站是前进的道路。

Xbox与Playstation。天然气与电力。实用主义与理想主义。建立与购买。 Emacs vs Vim。突袭vs PMS。这些确实是我们时代的伟大辩论。

最后,没有正确或错误的答案,唯一可以决定最适合您的人就是您。就是说,有很多原因导致滚动解决方案可能只是一个更好的主意。

评估解决方案的总成本可能是可以原谅的,因为他们的钱包遭受了痛苦。但这还不止如此。

当然,成本可以在财务上进行量化,但也可以考虑自由和开源软件(FOSS)在世界范围内的变化。用于将此文本带入您眼球的每个软件都是一个开源项目(Linux,Ghost,docker,docker-compose,nginx,rsync,mkdocs,Joplin,emacs + org-mode,QEMU,Proxmox等)。

开源是一种礼物,因此,在任何可能的情况下支持它都会改善人类。 Formula 1甚至宣布了开源设计计划,哇!

通过推出自己的解决方案,您可以对自己进行投资。您正在学习的技能将使您更有可能在Linux上找到一份工作,从而更好地进行面试。我认为,在选择解决方案时,常常完全忽略了这个角度。我学习了构建原始Perfect Media Server的技能,这导致了许多奇妙的,改变生活的局面,我希望能够为读者和其他走类似道路的人提供类似的机会。

接下来让我们考虑金钱。 UnRaid的许可证费用为$ 59-129,具体取决于您连接的硬盘数量。 Synology或QNAP框将具有关联的" tax"支付其操作系统维护和开发的研发成本。但是,这是一个尴尬的问题,当这些公司停止支持或被收购时会发生什么?

但是,令人遗憾的是,这些类型的场景比我们希望的更可能发生,并且在过去的十年中有无数的示例。您还必须考虑如果新所有者决定取消您最喜欢的产品(Google对此最糟糕)会发生什么情况。也许他们没有赚到足够的钱,因为一次性许可证或购买硬件就是一次性的。

在这种情况下,接下来发生了什么。也许源代码将被发布,开放源代码社区将接管它,也许它不会。为什么要冒险?如果没有可行的替代方法,但是对您来说很幸运,您正在阅读本文,这可能是有道理的。

关于成本,我最后的论点是缺乏灵活性。通过使用特定的供应商产品,您会延迟许多重要的决定。有时这很好,有时却不好。

PMS在2016年开始使用“裸机”。换句话说,它是系统上安装的主要操作系统。时至今日,我已将安装从裸机转移到Proxmox中的VM,并在去年秋天将其转移到VMware ESXi下的VM。稍后对此进行更多讨论。

在2019年版中,我决定虽然JBOD + SnapRAID奇偶校验足以满足我的临时媒体收集需求,但我想享受ZFS带来的无与伦比的点点好处。由于PMS只是常规的Linux,因此ZFS只需安装一个软件包即可。无需等待插件的开发或供应商的正式"支持它。

从技术上讲,Unraid可以运行ZFS,但实际上需要Wendell加以解决-毕竟,这只是Linux的幕后花絮。缺乏灵活性的部分原因是Lime Technology采用的独特USB启动方法。他们以这种方式运送Unraid,以使其更友好,更轻松地进行故障排除,但自相矛盾的是,他们创造了一个独角兽,只有他们和他们(诚实的非常棒)社区对此非常熟悉。

这与使用Ubuntu几乎相反,在Ubuntu中您遇到的几乎所有问题都不都是唯一的。您可能可以通过Google自己快速地找到答案。加上20.04等LTS版本,Canonical保证5年的维护更新。我知道Lime Technology,Synology,Q-NAP或其他NAS供应商不提供此类保证。

以简单为幌子,我们创建了优雅的抽象,同时又无意间使事情难以修复。请记住,成本不只是财务上的。

使用成熟的Linux为您提供的灵活性是巨大的。正是这种灵活性使PMS可以使用我长达4年之久。 PMS系统会像我一样进行更改和调整。

几年前,我读过基夫·莫里斯(Kief Moris)的一本书,名为《基础设施即代码》。在这本书中,Kief提出了一个框架,用于在文本文件(或有时称为代码)中定义基础结构的每个部分。这种以与源代码相同的方式管理配置的简单哲学彻底改变了我构建系统的方式。对于一般的媒体服务器管理员来说,Ansible和Terraform之类的工具似乎过大了,但我坚信它们占有一席之地。一两个下午的学习Ansible所需的全部时间,将为您节省数十个未来的下午,使您不停地想知道自己在3周,3个月或3年前如何完成工作。我们已经介绍了改善的工作前景,但是对这些技能的需求很大,只需在Google上快速搜索&DevOps Engineer"职位。

读者经常问我"您为docker建议使用哪个GUI?我的回答总是由docker-compose引起的,这很容易使人们感到困惑,因为它根本不是GUI。这种观点源于无数次重建我自己和他人的盒子。如果您使用过GUI,那么您将能够与单调乏味的点击和反复输入相关联,常常会猜测所需的输入内容,而除了屏幕截图外别无其他!记得你做了什么。 GUI可能会使他们似乎更容易进行系统的初始设置,但从长远来看,它们会伤到您并且更难以维护。

现在让我们检查一下可支撑性角度。穿上友好的互联网陌生人的鞋子,通过Discord聊天或论坛帖子为您解决问题,以解决容器问题。他们可能必须要求您共享创建该容器时使用的参数。在某些时候,他们可能会要求您提供NAS软件的网络界面的屏幕截图或粘贴docker-compose yaml代码段。 yaml代码段使您更易于共享,其他人也更易于阅读和调试,这也意味着您不会忘记创建该容器时使用的变量。对6个月前的随机docker run命令进行反向工程并不好玩。

使用文本文件也更容易从灾难中恢复。备份就像将文件复制并粘贴到Github存储库一样简单。您如何备份GUI?也许有可能,也许没有。我们可以将这一理念扩展到不仅仅是docker-compose.yaml文件。通过Samba配置文件共享呢?用户?安装了软件包? Bash别名?监控配置?清单继续。使用Ansible,这些问题的100%答案都存储在我的IronicBadger /红外线git存储库中。使用两个或三个命令,仅需几分钟就可以轻松地将原始Ubuntu安装安装到功能齐全的媒体服务器上。

您的服务器将永远不会完成。这是您修补和学习的生动生动的体现。 “基础结构即代码”使您可以实时跟踪对用于部署实际服务器的实际代码所做的更改。

实际上,将配置存储为代码是一个简单的概念,但是需要一定的纪律。例如,您使用自动化部署服务器,然后开始对其进行手动更改。不久之后,该代码不再反映已部署的内容和配置漂移。开始发生。和解通常会很耗时。如果您将基础设施作为代码提交,则应通过诸如Ansible之类的配置管理工具进行每个单独的更改。这听起来令人望而生畏,但替代方案是您不敢触摸的特殊雪花。我们所有人都已经安装了该软件,我们不敢格式化,因为我们不确定如果这样做会造成什么损失。

是时候看一些实际的代码了。这是Librespeed(一个自托管速度测试应用程序)的docker-compose.yaml代码段示例。

--- version:" 2"服务:librespeed:映像:linuxserver / librespeed container_name:librespeed端口:-8008:80环境:-PUID = 1001-PGID = 1001-TZ = America / New_York-MODE =独立-TELEMETRY = true-PASSWORD = badger1

YAML代表“另一种标记语言”,对于正确解析这些文件,请特别注意由空格组成的缩进是关键。只要平行元素具有相同的左对齐,并且层次嵌套的元素进一步缩进,缩进中的空格的具体数目就无关紧要。简而言之,请确保所有内容均垂直排列,并且一切都OK。使用突出显示奖励积分空间的编辑器。 VSCode有一些不错的语法插件,YAML就是其中之一。

创建上面定义的容器非常简单。将以上内容复制并粘贴到放置在〜/ docker-compose.yaml中的文件中,运行docker-compose up -d即可完成操作。

我使用一种叫做bash别名的东西,使通过docker-compose.yaml文件管理30多种服务非常简单,当出现问题时,我可以从手机上进行操作。

#/ etc / bash_aliases#此文件中的别名适用于所有用户#要在〜/ .bash_aliases中为一个用户位置安装#尾巴docker logalias的最后50行dtail =' docker logs -tf --tail =& #39; 50' '#简写,根据需要自定义docker-compose.yaml位置别名dcp =' docker-compose -f〜/ docker-compose.yaml'#删除未使用的映像(在升级后有用)别名dprune =' docker image prune'#删除未使用的映像,未使用的网络*和数据*(请谨慎使用)dprunesys =' docker system prune --all'

在完成perfectmediaserver.com的其余部分时,请多多包涵,在撰写本文时,有一些WIP标语,我想在2020年发货。制作质量令我满意的文档需要花费时间,这是一个艰巨的过程。我的爱好项目!

我充满激情地相信尽可能多的开源(因此,请访问此博客和网站)。如果人类能够团结起来并自由分享信息,那么它将使我们所有人受益。 perfectmediaserver.com不太可能最终完成,我会在未来很多年继续添加该网站,但我也想欢迎其他贡献者通过拉请求或两个。

如果请求请求不是您的事,请通过Twitter(在每个页面的顶部都有社交图标)或其他方式与我联系。对您认为有用或过于复杂的内容的反馈将对将来的PMS构建器有所帮助,请让我知道!

希望您能从本年刊中获得启发和帮助,在2021年见!新年快乐!