引言
生活相关的会记录在日记本里,所以猜猜日记本在哪里呢?
如你所见这个博客的内容逐渐从个人搭建各种服务相关的内容转到了超级长文,有关学习、复习记录,读书笔记之类。主要原因是我已经工作了,在工作期间学习的内容也会记录在博客里。
所以说放弃折腾了嘛?没有!但是折腾的力气没那么大了,或者说折腾的时间少了。好消息是:轻车熟路了,搭建环境是一个简单的事情。毕竟看着文档就能做所以记录的内容就变少了。以后博客关于某某服务是怎么搭建的文章可能会越来越少,而转化为这种服务介绍、合集的形式。
同时,开源精神真真实实地被刻在脑海里,需要一个软件,第一想法是寻找开源产品。
本文是一个总结而不是一个教程,至于某服务的搭建方法请自行参考文档。
注:想要管好你的所有服务,ansible是基本功!
这里列出一部分我搭建、使用的服务:
功能 | 名称 |
导航 | Dashy |
Matrix 服务器 | Synapse Cinny Element etc. |
RSS | RSSHub TTRSS |
笔记与时间管理 | Joplin |
Git | Gitea |
智能家具 | HomeAssistant |
VPN | WireGuard SoftEtherVPN V2ray |
网盘 WebDAV | Nextcloud |
资产管理 | Beancount |
服务器管理 | Portainer Zabbix etc. |
如果全部说一遍实在是太多了,挑出这些具有代表性的服务,或者说值得一说的服务。
内容
导航
Dashy导航
为什么需要一个浏览器导航页?就是因为自己搭建的服务实在是太多了。每次用的时候一个一个在地址栏输入实在是很烦。虽然我使用了三级、四级域名组成层级关系,或是使用PATH分流并给它们起了合适的名字,但是服务实在太多,用之前还要在脑子里思考一下。于是我决定搭建导航网站。
我对导航网站的要求是界面酷炫、继承导航、搜索、天气等功能。于是我决定使用Dashy作为导航。可以用官方的Demo看看、玩玩!
我的导航集合了时间、天气、气象、笑话(摸鱼必备)、Windy气象图(看看风向,幻想哪天再去拍摄银河)、各个服务的导航、服务搜索、并设置了默认的搜索引擎。通过定制以后,我对它外观非常满意。
同时,我也把一些常用的网址也放在了导航页里。目前该导航网站存在打开速度过慢的问题,通常需要等待5s左右,主要原因是该服务器位于国外,服务器也拉跨,如果是在家里的服务器或者是 NAS 上打开速度应该会快很多。
Matrix 网络
Matrix 是一个区中心化的聊天协议,有多个服务器端和客户端以及插件等,是一个有一定生态但还需要不断完善的系统。
去中心化还有服务器这不是矛盾吗?实际上这种去中心化是邦联式的,而不是完全的去中心化,只要你连接上了一个服务器,你就连上了整个Matrix网络。你可以搜索相关资料详细了解这种运作模式。
Matrix 带来的不只是抗封锁,还有匿名、安全等特点,它支持个人、群组聊天时的端到端加密,就算是服务器管理员也看不到加密房间里的信息。同时你可以设置注册资格,设置提供什么样的信息就可以加入服务器。从而实现匿名交流。
一些大型组织会维护自己的 Matrix 服务器,例如 Mozilla 就有自己的 Matrix 服务器。一些团队或组织也有Matrix 房间。每个人都可以创建 Matrix 服务器或者房间。
Synapse 是官方维护的全功能服务端,Element web 是客户端之一,适合在电脑上使用,Cinny也是客户端,可以在手机浏览器里使用。web 客户端意味着非常方便,如果你邀请你的朋友来用,你可以让他们直接使用这些 web 客户端,避免一系列麻烦。
matrix-docker-ansible-deploy是一个不错的项目,极大地简化了安装、配置流程。
内容聚合 RSS
为了避免被大数据的推荐算法捕获,在各类 APP 中无意义地随机浏览、刷视频。因此我使用了内容聚合服务。如果你也有打开手机,无意义地刷一整天的经历,那么内容聚合服务是能让你高效获取信息的途径,也是跳出这种困境的办法。
RSShub 能让绝大部分网站支持 RSS,它能获取网站中需要的信息, TinyTinyRSS 是一个 RSS 阅读器,这是一个 web 阅读器,使用体验不错。
同时我的 ttrss 还是博客收藏夹,我订阅了许多不错的博客,这种个人博客相对于现在的应用,基本上算是信息孤岛,没有搜索引擎,和友情链接,或者引流,可能很难找到好的博客。
当发现了一个好的博客后,没有 RSS 服务的人通常会把这个博客收藏到浏览器的收藏夹里,然后偶尔点开一次看看或者是这辈子都不点开了。这么做的原因主要在于:
- 我们已经适应了从搜索引擎获取需要的信息,而对于博客来说,谁知道博主会写什么,我读了有没有用
- 单个博客的更新频率可能是周更,更多的是月更或者是季更,除了点开这些博客一个一个看,它更新了没有,你没有获得新博文的办法
- 个人博客有很多,一旦收藏了多个博客以后,人工检查每个博客是否更新十分困难
所以使用RSS将这些博客一网打尽,每周阅读一次,可能十几个博客会产生几篇新博文,我可以快速阅读标题,决定是否阅读这些文章。
同时我还订阅了一些新闻类、学术类、壁纸类、促销类以及追番网站。
内容管理、知识管理和时间管理
这个博客用的 WordPress 就是一款内容管理工具(Content Management System),起初就是为了记录学习成果。然而随着我学习的增加,博客明显是不够用了,对于短小的知识点写一篇博文明显不合适,而对于冗长的或者说不适合写在博客里的、频繁修改的东西需要有一个归属。于是我使用了 Joplin 这款开源的软件。
我以前觉得知识管理都是个屁,学会了不就行了么。然而事实上,这些知识是碎片化的,使用知识管理能够有效地学习新内容、复习旧内容,同时也是对外界的成果展示。
以前我使用 OneNote 现在我更愿意使用 MD 文档来记录,OneNote 我还会用,一般我会结合 Surface 和Surface Pen 来记录那些需要书写的内容。
同时我的 GTD 时间管理方案也从 Microsoft ToDo List 迁移到了 Joplin,使用双链笔记功能,能够从项目清单或执行清单中快速跳转到相干文档、参考资料,而不是自己一个一个去找。
我使用 WebDAV 进行数据同步,我之前使用了Joplin的服务端,我发现不如直接用 WebDAV,也实现了我的数据我做主。
Joplin 的问题是不像博客那样易于传播、展示,就像 word 文档一样,需要发表出来,别人才能看到。将来我会尝试使用 BookStack 这种 web 工具。
GIt 仓库和版本管理
我建立了私人 Git 仓库,用于保存一些小的项目代码和文档。我选择了 Gitea,使用、搭建方便,占用资源少。对于一个人来说足以。
相比于其它替代品,Gitea是一个更加简洁的更加开放的产品。
智能家具
HomeAssistant 管理智能家具自动化,要比那些图形化的编程要好太多,也可以打破智能设备间的壁垒。
同时可以接入我自己做的 Voron 2.4 3D打印机、DIY的小智能设备等等,实现细致的自动化。有了 HomeAssistant 会让智能家居更美好,闹钟、音响、灯光联动,模拟日出、让起床不再困难。
虚拟专用网络 VPN
有了那么多服务,有些家里的服务不便于对外公开,同时可能没有鉴权方法,没有端口映射,那么我结合了WireGuard、SoftEtherVPN、V2ray(这不是VPN) 三者,穿透一切阻碍。这意味着只要这个世界还存在互联网,我只要有一台设备,我就能连回家里。我还可以根据网络状况选择不同的连接方式。无论是学校、工作单位的防火墙还是其它什么流量过滤,都不是问题。
WireGuard 运行在路由器上,我可以连接后发送 Wol 包,启动家里的服务器,对于一直轰隆隆响的大型服务器来说我会在要使用的时候打开。
至于延迟,可以在同城可以串流来玩游戏,其它城市没试过。延迟增加20-40ms。
网盘
个人网盘不可少,我选择了 NextCloud 同步一些内容,并且 NextCloud 提供了 WebDAV 服务,因此我用它来支撑其它服务。例如 KeePass 、Joplin、Zotero 等的使用等。
我在多台服务器安装了 NextCloud,同时使用 Rsync 自动化备份重要数据。使用SMB、NFS服务我也可以访问储存在 NextCloud 目录下的文件。
我使用的 NextCloud 不负责备份归档数据,而是存储应用数据,还包括可能会发生改变的数据,而不是普通的照片备份。同时我还存了一些临时文件。
书籍我刚开始保存在本地,后来用 NextCloud 同步,最后我选择使用 Kivata 和 Calibre web 这种网页客户端,而不需要维护多个书库。我也使用 Audiobookshelf 播放播客。
资产管理
我使用 beancount 记账。资产管理对每个人来说都是重要的,资产管理不仅仅是在于记账,还有诸多管理方法。至于资产配置与管理、投资这里就不展开说了,毕竟我还是一个初入社会的人,目前也不是成功人士,不过这些文章倒是给了我很多启发,让我思考当下。
有人会嘲笑说你刚工作,能有多少钱,记账的意义何在?对于学生来说,你的钱是父母给的,你记账并不能让钱变多。诚然,我现在的积蓄可能连别人的零花钱都比不上。不过,记账并不是富人或是公司才需要的,恰恰相反,越穷的人才越应该记账,资金越少的人,对抗未来的不确定性的能力就越弱,记账是一种规划的方法,减少这些“不确定”。
可能很多人都会去记账,拿上一个小本子,手机上安装一个软件就开始记录,今天吃饭花了多少,明天发了多少钱。这种记账我们称之为“流水账”。流水账记录支出和收入,但是它的统计学、经济学意义欠缺,碰到现实中复杂的案例使用流水账记录困难。如果想从专业角度去分析资产,就需要使用更加科学的方法:复式记账法(Double Entry Counting)
想入坑 beancount 和复式记账是有门槛的,需要学习一些会计的知识,不过只要理解了复式记账的原理以后,其实难度不大。再一个是想快速入坑,最好去看英文的文章,而不是中文,不要卡在“借记”、“贷记”这种名词里。其次是需要有一定的计算机知识,因为光是使用这个软件可能就对有些人来说就很困难。
我选用了 beancount 这个工具,主要也是因为我看到了这个介绍 Beancount 的文章,beancount 其实是较为人性化的,还可以使用 fava 生成损益表、资产负债表、现金流表、试算表等报表,区分消费与投资等。
我目前使用 gitea 来负责账单版本管理,但我觉得多少有点杀鸡用牛刀的味道,我可能会使用别的方案进行管理。
服务器管理
服务器管理其实是运维技能,这些工具只是为了更好的了解各个服务器的状态、并能进行一些简易操作。
同时今年博客将面临一次服务器迁移工作,并且转变为容器化服务。
结语
以上是我2022年有关 selfhost 服务的总结。我向别人展示这些内容的时候,有的人会概括为:“差生文具多”。
实际上恰恰相反,年末这段时间是我知识快速增长、开始赚取金钱的时间,从后端到前端,从操作系统到运维,从硬件到软件,多维度切入。我认为我的知识面会越来越广,专业知识会逐步深入,总有一天我会成为一个 Full Stack Developer,我也会成为生活的 Full Stack Manager。