起因
很早之前就一直想搭建一个博客网站来分享我的一些作品以及经验,最近刚物色到了阿里云轻量应用服务器香港节点,每月24元就能买到2核1G服务器,实在是划算。我有在博客中展示视频与图片的需求,也需要分享一些工程文件,40G的存储空间有一些不足。凑巧家里用的联通网络分配有公网IP,配合花生壳的DDNS,可以实现一个固定域名的服务器,不受云服务器的硬件限制。
需求
对象存储服务
使用Typora编辑笔记时常常需要粘贴图片,而Typora的图片管理策略会首先把图片保存至本机,然后将它的绝对路径插入至文档中。这样虽然实现了正常的本地浏览,但是若将MarkDown文件分享到其他设备中阅读,便会出现无法正常打开图片的现象。这与MarkDown文件的性质有关,它不能像Word一样直接将图片嵌入到文档中。唯一的解决办法是将图片上传至公网服务器中,并在文档中保存图片网址,Typora也提供了图片上传接口,在用户粘贴图片时能够自动唤起第三方软件进行上传。
在博客中分享硬件作品往往会配有视频与工程文件,阿里云最低配置的轻量应用服务器仅提供40G的存储空间,不能满足博客的使用需求,并且额外添加存储空间的价格也比较昂贵。使用对象存储服务能够降低对服务器的空间需求,一定程度上也能减少服务器下行流量的使用。
NAS
我需要长期存储大量重要数据并随时访问,使用NAS对我来说是一个很好的选择。NAS设备通常具有高可靠性和数据冗余功能,可以保护我的数据不受硬件故障的影响。此外,我还可以通过一些软件将NAS挂载为一块硬盘,使用起来也非常方便。当然,市面上很多云盘也可以实现我的需求,但是,这些云盘要么对传输速度进行限制,要么对文件类型进行限制。而且,购买云盘会员的费用远高于NAS的搭建费用,显然,自己搭建一个NAS是更好的选择。
硬件选型
在选择硬件时我主要考虑的还是性价比以及低功耗,最终选择了梅捷N3150主板。主板包含1个MiniPCIe接口、2个SATA3接口、2个USB3.0接口,1个千兆网口,TDP仅6W,能够满足一个低功耗小主机的基本需求。
软件选择
监控面板
监控面板是一个管理服务器的工具,它可以提供实时的性能指标、日志记录、警报和错误报告等信息。对于一个家用的低功耗主机,选择监控面板时主要需要考虑性能指标支持完整性以及界面的易用性。目前市面上已经存在很多监控面板,包括但不限于以下几种:
- Webmin、cockpit: Webmin和cockpit都提供了强大的系统管理功能,包括用户管理、文件管理、网络配置、软件包管理等,同时还支持多种插件和扩展。对于家用低功耗主机,Webmin和cockpit可以帮助用户管理系统资源,确保系统的稳定性和安全性,适合初学者使用。
- netdata: netdata 是一款实时性能监控工具,可以监控多台主机的性能指标,包括 CPU 使用率、内存使用率、磁盘 I/O、网络流量等。对于家用低功耗主机,netdata 可以提供实时的性能指标,帮助用户了解系统的运行情况。netdata 易于安装和使用,适合需要实时监控的用户使用。
针对家用低功耗主机的场景,我选择使用 cockpit。相较于Webmin,Cockpit提供了更多的图表可视化功能,并且对中文的支持也更好,这使得操作更加直观和友好。此外,Cockpit还提供了实时的性能指标,例如CPU和内存使用情况等,这对于监控系统的性能非常有用。同时,Cockpit也是一个轻量级的管理面板,所以对于家用主机来说,它的功能已经足够了。
Docker管理面板
对于家用低功耗服务器来说,使用Docker可以带来很多好处:Docker容器的可移植性和轻量级特性使得它们可以在不同的硬件环境和操作系统中运行,这意味着后期可以轻松地将Docker中的容器迁移到其他服务器或云平台中,而不需要进行繁琐的配置和安装。Docker容器还提供了安全性保障,因为各个容器是相互隔离的,这意味着如果一个容器出现损坏,其他容器和主机不会受到影响。
熟练地使用Docker容器需要一些学习和操作成本。而Docker管理面板可以提供一个可视化的界面,帮助用户更加轻松地管理和监控Docker容器。常见的Docker管理面板有以下几种:
- SimpleDocker:一个正在开发中的开源中文Docker管理面板,它提供了一个简单易用的Web界面,可以帮助用户管理Docker容器、镜像、网络和卷等资源。但是,它的功能相对不完善,只适合一些简单的Docker管理任务。
- Fast Os Docker:一个轻量级的中文Docker管理面板,但是它的更新已经停滞了一段时间,因此可能会存在一些安全问题。同时,它的功能相对较少,也不太适合在生产环境中使用。
- Portainer:一个开源的Docker管理面板,具有丰富的功能和易于使用的界面,可以帮助用户管理Docker容器、镜像、网络、卷和服务等资源。它支持多种Docker版本和云平台,还提供了一些高级功能,例如Docker Swarm和细粒度的访问控制等。
总之,这三个Docker管理面板都有各自的特点和优缺点,但是Portainer作为一个功能丰富、易于使用和受欢迎的开源Docker管理面板,是一个值得推荐的选择。
文件系统
文件系统以及冗余方案通常是根据服务器的需求和用途来决定的。以下是一些常见的文件系统和荣誉方案,以及他们的特点,以供参考:
- Ext4:Linux系统中最常用的文件系统之一,它提供了高性能和可靠性,适用于大多数服务器应用程序和数据存储需求。
- ZFS:可扩展的文件系统,适用于大型存储系统和高可用性环境。它具有强大的数据完整性和快照功能,可以帮助用户更好地保护数据。
- RAID:一种数据存储技术,它可以将多个物理磁盘组合在一起,形成一个逻辑磁盘,从而提高数据存储的性能、可靠性和容错性。
总之,这三个方案各有优缺点,需要根据服务器的需求和用途进行选择。Ext4是一种可靠性和性能兼备的文件系统,适用于大多数服务器应用程序和数据存储需求。ZFS是一种高级的文件系统,具有强大的数据完整性和快照功能,适用于大型存储系统和高可用性环境。RAID是一种提高数据存储性能、可靠性和容错性的技术,可以与不同的文件系统一起使用。
考虑到这个低功耗服务器主要用于存储重要数据,我最终选择使用ZFS搭建文件系统。相对于RAID,ZFS具有更加先进的数据完整性和保护功能,ZFS使用了一些高级的技术,例如数据校验、写时复制和快照等,可以检测和修复数据错误,并最大限度地避免数据损坏和丢失。
NAS协议
NAS设备支持的协议取决于设备的类型和制造商,以下是一些常见的NAS协议:
- NFS(Network File System):一种在局域网中共享文件的协议,通常用于Unix/Linux环境中。
- SMB(Server Message Block):一种在局域网中共享文件和打印机的协议,通常用于Windows环境中。
- FTP(File Transfer Protocol):一种用于在网络上传输文件的协议,可通过NAS设备进行文件传输。
- WebDAV(Web Distributed Authoring and Versioning):一种基于HTTP协议的文件共享协议,可用于在互联网上共享文件。
整体来看,使用WebDAV协议在公网上搭建NAS是一种不错的选择。WebDAV是基于HTTP协议的文件共享协议,可以使用HTTPS协议来加密文件传输,能够保证数据的机密性和安全性。此外,还可以通过访问控制列表(ACL)等方式来控制文件的访问权限,防止未经授权的用户访问文件。值得注意的是,大多数允许使用第三方协议进行同步的软件几乎都支持WebDAV协议。
WebDAV服务器
WebDAV存在多种版本以及实现方案,它们对WebDAV的支持不同。以下是三个常见的WebDAV服务器:
- Simple Go WebDAV server:这是一个用Go语言编写的WebDAV服务器,但是该项目已经停止维护,可能存在一些安全问题。
- Nginx:Nginx是一款高性能的Web服务器,它也可以作为WebDAV服务器使用。但是,官方对WebDAV的支持不够完善,需要重新编译以支持完整的功能。
- Apache:Apache是一个功能齐全的WebDAV服务器,它可以通过mod_dav模块提供WebDAV服务。它支持访问控制、用户认证、加密传输等功能,并可以轻松地与其他Apache模块配合使用。
结合上述分析,我推荐使用Apache作为WebDAV服务器,并使用apaxy插件对界面进行美化。
除了作为WebDAV服务器,Apache也可以用来搭建网站。Apache是一款功能强大的Web服务器软件,它支持各种操作系统和Web编程语言,包括PHP、Perl、Python等。后期可以通过Apache搭建静态网站、博客、论坛等。