在开始之前我想说我确实搜索过这个主题。似乎没有任何结果可以回答我关于多用途家庭服务器的问题。
大家好!
我想构建一个家庭服务器用于以下目的:
- 将文件/媒体存储为有权访问它的 PC 的备份
- 将所述媒体流式传输到与其连接的特定计算机或连接到服务器的电视
- minecreaft/terraria/etc 的游戏服务器(它不会一直运行,我需要关闭它然后再打开,以便在需要时释放内存来执行其他任务)
- 通过互联网访问文件并从中进行流式传输,以便我可以在需要时在任何地方访问它。
我希望它有多个帐户,这样家里的许多用户都可以拥有具有私人权限的自己的文件,并且每个人都可以流式传输只有他们才能访问的媒体(以及所有用户的公共流 - 但不是客人)
如果可能的话,我还希望能够从互联网访问它。这样,如果我真的需要,我就可以从任何地方连接到它并从中提取文件。我知道这实际上可能非常困难,因为我的外部 IP 可能不是静态的(因为许多公司,例如康卡斯特,不幸的是我使用的 ISP)实际上可能会偶尔更改您的外部 IP(但不是很频繁)。我已经从 namecheap 购买了服务器的域名,它为其客户提供动态 DNS 服务。这样它就可以正确更新其面向外部的 IP。
简单介绍一下我自己:我主修物理和电子工程,辅修计算机科学。我对 C、C++ 和 Python 了解不少。但我不懂 PHP 或其他服务器语言。我熟悉 windows/osx/linux,但我的 linux/终端技能不是一流的。
我以前曾尝试过建立一个家庭网络服务器,但由于学校的繁忙,我没法继续下去。我还发现,在家里托管网站通常是一个糟糕的想法,因为它不太可靠,存在许多安全问题等。现在我有更多的时间,想建立一个家庭媒体和文件服务器,它也可以托管游戏,这样我就可以轻松地备份和存储文件。
我该如何开始做这一切?如何确保服务器与 windows/OSX/Linux 兼容。
我希望将它打造成一个 Linux 服务器,因为我知道它可能是最好的(尽管我不是 Linux 大师)。
如果我可以将其连接到互联网(这样我就可以从任何地方访问这些文件),我该如何保护它?我如何才能让只有特定用户才能登录?
我想到了一台电脑,这是它的规格。它没有额外的升级(所以它有它自带的 RAM - 8GB)。它自带的一切都与它所拥有的一样。
我有我列出的硬件。这是我前段时间买的一台非常老旧的(读作:6 年)台式机。我希望它既是部分项目,又具有简单的学习曲线。我不想编写自己的流媒体服务应用程序,但我也不想让它完全“设置好后就忘掉”,因为我确实想学习网络设备的基础知识,并将服务器连接到互联网以进行文件传输/远程控制/等
我不知道虚拟化一切是否是最好的,原因有二:1)虚拟化需要更多的 RAM 2)这项工作似乎有点复杂,我也希望能够完全远程控制一切,如果虚拟机出现故障,我该如何远程启动它?(也许这实际上不是一个问题)
我研究过 Plex 和 OwnCloud 之类的东西,但我想确保它们可以集成(即我可以使用 OwnCloud 将媒体上传到服务器,然后 Plex 可以进行流式传输)。我完全愿意接受替代方案,我之所以提到 plex 和 OwnCloud 只是因为它们在我的研究中出现过。此外,我希望多个用户能够同时访问服务器(同时向多个设备进行流式传输 - 使用相同或不同的媒体,在其他人进行流式传输时下载/上传文件等)
答案1
从个人经验来看,设置家庭服务器比你想象的要复杂得多。我很欣赏你在采取任何行动之前规划配置过程的意图。
- 首先,你需要考虑你的硬件。台式电脑是否适合日常使用?驱动器和 RAM 的维护是否容易?两年后你能找到服务器的零件吗?你可以选择改装阁楼上的任何旧台式机(便宜但可靠性低)、购买 NAS(网络附加存储,性能低),或自己建造塔式机(价格昂贵但灵活性最高)。
- 第二,研究特定的操作系统或发行版您想要使用的。五分之四的情况中,您可能最终会使用 Linux 发行版。市面上有如此多的面向服务器的发行版,我甚至无法一一列举!(但如果您坚持的话,最受欢迎的是 Ubuntu Server 和 CentOS。)
- 选择您的驱动器配置。从长远来看,这一点非常重要,因为驱动器可能会在一年、五年甚至十五年内发生故障,而您不想浪费带宽进行异地备份。硬件 RAID 是必须的,它可以让您创建比通常的 RAID 0 和 RAID 1 更具成本效益的冗余设置。您仍然应该有一个备份源,但 RAID 可以让您在四五个驱动器中更换一个发生故障的驱动器而不会发生任何灾难。不要依赖 24/7 全天候外部 USB 驱动器。这些驱动器很快就会失效。不需要时请拔下外部驱动器。
- 如果不需要,就不要虚拟化。虚拟化解决方案在企业/数据中心环境中非常有意义,因为整个域控制器的信息可以完全存储在单个映像中,并且多个域控制器可以同时在同一硬件上运行。虚拟化在 Windows Server 域中被广泛使用,除非您采用 VirtualBox 方式,否则成本并不低。如果可以,请直接在同一个操作系统上运行所有程序;这将使您能够更轻松地管理服务(和内存)。
- 你的路由器可以为你处理大部分防火墙事务;但是,你需要强化每项服务通过限制其读/写权限来公开运行。主要规则是确保保持尽可能少的端口开放以防止任何可能的安全漏洞。如果您需要临时访问未打开端口的服务,则可以使用 SSH 隧道。
- 使用 afraid.org动态域名解析如果需要的话。可以使用脚本来处理动态 IP。
- 慢慢开始,然后逐步进步。首先安装重要的软件包,如 Samba 和 MiniDLNA,用于媒体访问,然后开始建立游戏服务器和管理服务(如 SSH)。您应该最后配置 Web 服务器,因为完整设置通常是最麻烦的(从安全角度而言)。除非不存在,否则不要从头开始制作任何软件或脚本。
继续研究,几个月后你就会发现自己拥有一个不错的家庭服务器。