“本地部署”(Self-hosted)这个词对开发者这个群体来说并不陌生。然而这篇文章是针对个人使用情况下的本地部署。
为什么我们需要本地部署?
本地部署服务最大的好处在于“自己可控”。从网络到硬件、从系统到软件、从服务到内容,整个本地部署服务都可以靠自己的想法来做启用、调整、升级、关停。这是本地部署服务最积极的意义。虽然看起来涉及到的概念很多,但是整个生态已经越来越成熟,非技术用户上手也越来越简单。
本地部署还能够补充公共服务的短板。网盘提供的容量和速度不够用,我就自己搭一个够用的。同时也不需要放弃公共服务带来的便利。
在人人都可以买上一台 NAS 的今天,本地部署的最大门槛——硬件,它的成本已经大大降低了。而软件方面,NAS 厂商都在提供大量自带的本地部署服务,万一满足不了你,我们还可以通过 Docker,把第三方的服务部署到本地。
因此,尽管对于普通人而言仍需一些软件知识才能更好地完成部署工作,但“本地部署”服务已经不再像以往那样高高在上,只适合给企业使用了。甚至将个人电脑作为本地服务部署的平台也是完全可行的。对于我们平台的读者来说,应该没什么难度。
什么情况下需要本地部署?
“本地部署服务”是一类服务的统称,就像软件分类里的“本地工具”一样宽泛。具体服务之间的差异千差万别,很难给出一个绝对的标准,来判断是否需要本地部署一个服务。
以我自己的经验来说,可以参考这几条来做判断什么情况下需要本地部署。
- 了解服务的实用性,确定你需要这项服务。
- 了解服务的特点和功能,不是所有服务都适合本地部署。
- 了解服务的部署难度和时间成本后,再做决定。
我来依次解释一下。
1. 了解其实用性
如果我想部署一个本地服务,通常不是出于“折腾”这种无目的或单纯提升技术能力的角度去做的,更多是考虑到其实用性。
可以说,本地部署是为了“让体验变得更好”。比如我希望管理我的一些照片视频素材,我就会自己搭建一个 Plex 或者 Emby 这样的影音媒体库服务。搭建完成后体验获得了极大提升,这就是实用性。
从“提高体验”这个出发点出发,我会首先尝试在线版服务。拿“看板服务”来说,市面上已经有大量可选的在线版“看板服务”了,那我就会先试试这些在线版服务,如果已经能满足自己 90% 的需求了,也许我就会直接使用这些公共的看板服务,而不是选择自己搭一个。
因为像看板服务通常需要和同伴一起使用,如果本地部署后,同伴访问起来更困难了,那么自己搭一个这样的本地服务就不那么实用了。一个没人用的服务,往往很快就会荒废掉。
2. 了解其功能和特点
好的本地服务能提供比公共服务更好的体验。如果不确定,那就需要预先了解这项本地服务的功能和特点。例如 Plex 这个媒体库本地服务,它能带来的 4K 高清、本地视频、无订阅费用这样的体验,也许是任何公共的流媒体服务都提供不了的。那它就非常值得部署在本地。
当然也有一些普通的本地服务由于缺乏开发资源,或者公有云提供了更具优势的服务。这时本地服务就不如公共服务了。比如自己部署一个 RSS 抓取服务,也许就比不上 Inoreader。Inoreader 作为公共 RSS 服务,它的手机端 App 和网页端功能都非常完善。本地服务缺乏 App 的情况下,就享受不了 Inoreader App 提供的全文翻译、一键进入原网页、对外分享订阅 XML 等特色功能了。
关于这一点,我会在部署前,先试用一下这些服务提供的在线 Demo,甚至 NAS 本身的系统都有 Demo:
即便没有 Demo,也应该上它的官网多了解一些功能和特点。不要看到一篇推荐文章就头脑一热去安装,装完又发现根本不适合自己,白白付出了时间。
3. 了解其部署难度和时间成本
本地部署服务与本地软件的安装还是有不少区别。越复杂、越偏商用的服务,部署难度和时间成本也越高。
本地软件的目标是尽可能让用户简单安装,一直点下一步就可以完成安装,尽量减少用户的安装成本。
本地部署服务的目标是保证突发情况、避免宕机。安装流程的简便程度对开发者来说是次要的。安装期间有时还要配置数据库之类的参数。不熟悉的时候很容易出现各种报错,挫败感很强。
所以当你决定要部署一个本地服务之间,建议充分看看他们的文档,网上搜索一下有没有人在相同的环境下部署这个服务,能剩下很多时间,毕竟安装一次要花不少时间了解相关知识。
试试最简单的本地部署
也许你对本地部署还没有一个明确的概念,这里就介绍一个微缩版的本地部署教程。
我打包了一个可以在本地独立运行的 Markdown 编辑器:Editor.md 。
这个小工具可以很轻松地部署在自己的电脑上,当成本地工具来使用。也可以将其放在 NAS 上作为云端服务运行。
安装方法
- 第一步:下载源代码到本地。? 下载地址
- 第二步:解压缩,并打开其中的
index.html
文件。 - 第三步:什么?哪有第三步,已经安装完了。
尝试一下,你会发现其实本地部署一点也不难。像这种简单的服务,不需要你有任何专业知识就可以完成部署。
如果想部署到 NAS 上
那么为什么要把它部署到 NAS 上呢?因为这样以来,你就可以同时让多人使用。能够同时让多人使用,这正是“服务端软件”和“客户端软件”之间最大的区别。
这种级别的轻量服务不需要数据库、也不需要后端服务。因此想部署在 NAS 上的话,也是非常简单的。
- 第一步:将压缩包需要放进网页服务器目录下(比如群晖是
/web
),将文件夹命名为editor
。 - 第二步:访问 NAS 的 IP 地址,例如
http://192.168.1.188/editor
- 可选步骤:把这个服务部署在了 NAS 上之后,如果你想再开放到外网使用也是可以的,只不过需要你再多了解一些网络相关知识,这一点不会特别容易。但内网使用已经足够你一个人用了。
完成上面这些步骤,就可以在任意一台电脑上用浏览器打开你部署好的本地服务。
关于本地部署的门槛
本地部署就像上面这样,部署的难度取决于需要的服务,服务依赖的东西越少,需要做的步骤就越少。反之,服务越是重度越是无所不包,你需要配置的步骤就越多。这就带来一个问题,如果我从 0 开始学习本地部署有什么样的门槛?
硬件门槛
本地部署的最大门槛,是硬件。日所当然的,需要一台合适的机器来运行这些服务。
不同于本地安装的“客户端软件”,需要做本地部署的服务通常被称为“服务端软件”。这就意味着应该有一台 7 * 24 小时开机的设备来提供这样的服务。
这个硬件可以是以下选项中的任意一个:
- 任意品牌的 NAS
- 个人 PC
- 租用云服务器
NAS 应该是目前个人玩家上手的最佳途径,因为它硬件完全自主可控、容量足够大、不产生长期订阅费用。自家网络下还能有更好的内网体验。
个人 PC 则可以作为初期尝鲜进行部署,Docker 目前也提供 Windows 和 macOS 版本,在图形化界面下部署和运维并不复杂。不过 PC 由于并不 24 小时开机,Windows 或 macOS 环境在部署方面也有一定的阻碍,长期使用不够稳定。
租用云服务器,合用作小型团队使用。现在各大云服务商,最低配服务器的最便宜套餐,活动价已经低至 120 元。来跑一些小型网页服务绰绰有余。适合家里环境不适合放 NAS 的玩家。
除了机器,硬件门槛还包括网络。国内运营商封了家用的 80、443 端口,但其他端口并不受影响。这带来的影响是打电话向运营商申请、访问服务时需要带上端口号。也是有办法解决的,这一点在《家用 NAS 入门指南》 付费教程中有详细介绍,以后可以再展开讲讲。
软件门槛
如果你购买的是群晖、威联通这些厂商的 NAS,这些机器的系统是内置了很多本地服务的,像家用场景下常用的 “文件管理”、“照片管理”、“影音管理” 等,都可以用原厂自带的服务,不需要额外折腾。
上面介绍的 Markdown 编辑器是最简单的本地部署服务,它本质上是一个静态网页,因此无需考虑后端网页服务器、数据库之类的问题,部署起来也非常容易。
目前做的比较好的本地部署服务,可能还会提供开箱即用的安装包,适合你在任何位置进行部署,比如 Plex 这种影音服务,原生安装时也许需要依赖不少东西,但如果你在群晖的 NAS 上安装,就可以直接用它提供的 .spk 格式的安装包进行安装,不再需要考虑太多门槛。
现在最简便的方式是采用 Docker 方式部署,对系统环境的影响最小,时间成本也最低。大多数面向个人的服务都都会提供 Docker 这种通用又简便的的安装方式。
TIP: 关于 Docker
Docker 可以简单理解为一个小型的虚拟机,它包含了运行服务端所有必要的元素。Docker 的出现解决了很多部署方面的问题,只要你学会了 Docker 部署的通用方法,就基本不需要考虑部署期间的环境差异、技术细节了。
即便是比较复杂的服务,也会提供比较完整的部署文档,足够解决各种各样的麻烦。
小结
本地部署服务,这是一个很大的话题,我想通过这篇文章来阐述我对本地部署服务的看法。未来我会继续带来更多值得本地部署服务的看法、使用技巧和安装方法。