互不联网时代的自给自足
前言
本文主要讨论如何自行假设各种网络服务,涉及笔记,音乐,文件共享,源代码管理等等。旨在尽可能自行架设所需的网络服务,不被第三方所绑架,不被一些产品经理喂💩吃。 本文大多使用开源软件,并尽可能挑选可以使用Docker的软件,来简化部署的难度。
首先说明我们为什么要自给自足?很简单,因为在线的资源不足以让我们舒服的使用。其次,一些小型的公司和组织有私密性或者性能的要求,不可以使用在线服务。
我姑且先说一下我之前也是热衷于使用各种线上服务的,我并不是完全反对线上服务,我比较多用过的包括且不限于:
有道云笔记
为知笔记
百度音乐盒
网易云音乐
百度网盘
115网盘
Github
Gitlab
Circle CI
知乎
cnblogs
Slack
QQ/Wechat...
其中有些我现在还在用,但是大多数都不用了。还在用的,有些是因为做的良心(点名:为知笔记(但是我现在不用了),Github,Gitlab,Circle CI),有些是因为没有替代品(点名:QQ,微信)。
线上服务的罪状
我给大家细说一下为什么现在不用某些线上服务/网站:
资源限制:比如网盘,给上传不给下载,管杀不管埋,把狗用户骗进来杀,或者诸如早期的Github没有私有库(以及为了一两个私有库开pro有点。。。浪费)之类。
人为制造数据孤岛:比如有道云笔记,并不能导出为诸如Word哪怕是pdf之类的格式,只进不出。各大互不联网公司互相屏蔽对手的链接,分享极为困难,出现了火星文口令这种反人类的东西。
无孔不入的广告:商业公司要挣钱我可以理解,VIP还有广告就很过分,不点名了。
服务降级:比如网易云音乐,开了VIP总该让我下载吧,我想用我索尼的HiFi MP3听可不可以?不可以,下载下来的格式是专有格式,需要联网才能播放。(以前没有这个问题)
主动给用户添堵:最著名的就是各大厂商的网页版了,相信大家都看过“在App内打开”,“App浏览体验更佳”之类的鬼东西。其实大多数时候只是为了骗用户下载App,好监控你的隐私,以及给你推送。一不小心就跳转到App下载页面,心烦意乱,“使用桌面版”渲染的话,字体简直是视力杀手。
不可抗力:我自己写的文章,有时候因为一些不可抗力会消失(肯定是知乎的存储没做好,嗯,肯定是),我并不希望它们消失。以及网易云音乐的歌曲有的时候也会因为版权的原因消失。
尽管说了这么多缺点,我仍然感谢他们提供的服务(但是还是要挥手说再见)。
同时也要说清楚的是,自给自足的线上服务大多不能完成人与人交流的功能,就算你自己建了一个类似Slack的站点,有好用的App,你不可能让你的父母亲戚都用这个Slack,还是得用微信,它们给你发“刚刚!突然宣布……”你还是得收着。
自给自足的方案
以下方案,随着我的使用不定期更新,也欢迎大家推荐自己喜欢的自给自足的服务。
网络环境
以下列举的服务,拿一台旧电脑(当然太旧的也不行)装个Linux就可以都搞定了。 但是如果这样做的话,只能在内网(家里)使用,最近疫情期间,很多人在家办公了,那么内网能用就好。
如果你有公网IP,你当然可以嚣张(我家里直接有公网IP,所以就直接建站了,我就很嚣张)。 但是国内大多数运营商给你层层NAT,到你手里都不知道自己是怎么连上的网。所以如果我们希望在办公室或者学校之类的场所使用,需要首先需要一个网络方案。
购买VPS
VPS是最稳定的方案,但是因为国内几大云服务厂商的垄断,带宽卖的比金子还贵。 以阿里云为例,8M的带宽一年可以卖到4000元左右。哪怕按量付费的话,8M带宽至少是8毛钱1GB,说难听些,手机移动流量都比这个便宜了。
而诸如Vultr的国外云主机,哪怕30块钱一个月的小主机,每个月就有1TB流量,我亲测带宽可以达到100M。 但是由于用Vultr搭梯子的人太多,导致IP容易被Ban,造成误伤。 在国庆,大会以及众所周知但是不能提提了会喝茶的某月某日,IP段会被整体屏蔽。
虽然国内外云主机各有各的坑,但是VPS仍然是最稳定的建站方式,专业的IDC机房会比家里的破网络和电力情况要稳定的多,而且便宜的VPS大多数虚拟机,在硬件故障的时候,部分优秀厂商可以做到虚拟机漂移,让你对故障无感。
建议多找几个志同道合信得过的小伙伴大家合资购买一个VPS,下面推荐的服务大多是支持多账号的,一起用无论是价格还是运维(可以一人运维一个服务啊)压力都会小很多。
SSL
没有SSL,通讯就是在裸奔,容易被运营商灌入广告,缓存攻击,也容易被窃听。 免费的SSL证书教程参见Let's encrypt -- 让我们一起愉快的使用HTTPS。
内网穿透
VPS虽好,在家建站也有在家建站的好处,第一个好处就是数据是在家的,你可以物理的摸到的数据,虽然手上捧着硬盘并不比在IDC靠谱,但是硬件在家的安心感是无法替代的。
第一推荐的是 ZeroTier
这个系统不能让你有公网IP,但是却能让你跨区域组网,如果你只是在固定的几台设备上使用下列服务,那么完全可以试试异地组网。缺点也是有的,这个软件生生的造了很多概念,比如leaf,moon之类的术语,导致文档比较难懂,需要慢慢看,其次是我并不清楚国内速度和稳定性怎么样,但是我知道国内是可以用的。
其次推荐花生壳,花生壳的免费版(其实需要付6元)就已经很好用了,如果追求稳定可以买个300多一年的服务,这个钱相比VPS已经是便宜了,相比金贵的带宽性价比居然还可以。
如果你有VPS,但是VPS主机内存太小,你可以在VPS上部署内网穿透软件:snail007/goproxy,如果嫌管理麻烦的,可以用我写的开源软件。
笔记/博客系统
我目前用过最好的开源的笔记本应该是蚂蚁笔记。
唯一的问题是,好久没更新了,项目可能凉了,但是App齐全,大Bug很少,平素使用绝对足够了。 还有一个缺点,用的是MongoDB,不擅长运维MongoDB的同学可能比较容易崩。
Leanote自带博客系统,但是我更喜欢用Gitbook,这篇博客就是用 Gitbook 做的。 缺点是Gitbook新版似乎国内被墙了,老版本还可以用。
如果可以花钱可以购买为知笔记,个人觉得做的是不错的了。
Git
我目前用的是Gogs,异常轻量化,只需要几十兆内存,但是功能齐全。 如果你是一个人使用或者轻度合作的话,Gogs就足够了,如果你有小团队要合作项目的话,Gitlab可能更佳。(但是Gitlab更吃资源,我印象里内存4G起步。)
目前我最推荐的还是Github,因为个人也可以无限创建私有项目了,开个Pro也不贵。不过这个不符合我们今天的主题。
持续集成
我前前后后用过TeamCity,Circle CI,Drone和Jenkins。
目前我用的是Drone,但是我并不推荐Drone。 主要原因是文档太少,坑太多,全靠自己看源代码折腾,我之所用Drone是因为公司在用,折腾中积累了一些经验。
如果不考虑收费,我推荐TeamCity。免费的中间比较推荐的是Jenkins,大家踩坑比较多。会好一些。
音乐
我目前用的是Airsonic 界面有点古老,App也有点过于简单,但是这已经是我能找到的最好的开源音乐软件了。
如果考虑收费的话,Subsonic还算不错,airsonic其实就是兼容Subsonic的API,所以可以直接应用Subsonic的App。
照片,文件和视频
照片,文件和视频,我都是靠Nextcloud完成的:
文件的备份就不用说了。Nextcloud 的手机App可以直接帮你备份所有照片到你自己的服务器上。 更好的是,可以用WebDAV挂载,可以内部挂载别的盘(比如Samba或者SFTP协议之类的)。
网页内也可以直接播放视频,体验非常不错,不能播放的可以用ffmpeg转码成H264编码就行。
缺点是慢,而且有点臃肿,PHP写的,不好改动。
我还考察过Seafile
三个用户以内专业版免费,支持全文搜索(ES实现的),可以说是很良心了,相比Nextcloud功能虽然不多,但是速度很快,也基本能满足使用。 可是我最后没有选它,因为照片备份不方便,这还在其次,它的文件系统格式是自定义的二进制分块存储,不方便我直接在服务器磁盘上操作使用网盘内的文件。
TODO
其实还有很多东西我没有做到自给自足,比如Calendar,Task,我用的都是Google的产品。 也并不是所有的东西都需要自给自足,往往是在线服务的使用给了我痛苦的感觉的时候,我才会转向使用自建的服务。
最后更新于