可能这些自部署的(self-hosted)开源服务或项目不一定比付费产品好用,拥有的特性也没那么丰富,但这些年得益于像Docker这样的容器化技术普及,短短几行代码就能快速完成项目或服务部署、进而开始使用也早已不是什么高成本的事。自部署让我们享有绝对的数据掌控权的同时还能节省不少订阅费用,让闲置的云服务器得以充分利用。
另外现在有的NAS设备也支持Docker,因此如果没有服务器但有NAS设备,也可以尝试部署在你的NAS上——前提是你有一个独立的公网IP或知道如何通过内网穿透来实现远程访问。
除了系统自带的消息通知渠道之外,我们也可以自己拥有一个消息推送服务。基于自部署的消息推送服务,我们可以配合其他自动化工具来监控通知或是短信,实现消息转发等功能。
可选服务包括:
上述不同的消息推送服务其后端均使用Go语言进行编写,因此在部署上并没有太多难度,按部就班地照着官方文档给出的操作步骤部署在你的服务器之后就可以开始使用;并且它们均提供了相应的API,在部署之后可自行根据需要使用API来将消息推送至相应的设备。
因为我个人使用的是Gotify,所以这里我就以Gotify为例直接运行Docker命令即可完成部署:
在Web界面上我们仅能接收并看到来自于其他端(比如移动端)推送的消息。
如果我们需要向移动端推送消息通知,那么我们就需要通过API来完成消息推送,就像官方所给出的示例一样:
因此使用Gotify这类消息推送服务最好的方式就是与自动化操作相结合,从而达到消息通知的目的。
相信会有不少人跟我一样喜欢在大屏幕设备上进行阅读或浏览内容,既然我们拥有了云服务器,那也说明我们拥有了可对外公开且被访问的公网IP。因此我们在服务器上也可以搭建起自己专属的在线电子图书馆,在不同设备上只需要借助浏览器就能进行随时随地开始阅读。
dockerrun-d\--name=calibre-web\-ePUID=1000\-ePGID=1000\-eTZ=Asia/Shanghai\-p8083:8083\-v/path/to/data:/config\-v/path/to/calibre/library:/books\--restartunless-stopped\lscr.io/linuxserver/calibre-web:latest因为Calibre-Web是基于Python编写,所以在使用的过程中会出现内存资源占用较大的情况(目测下来有500MB左右的内存占用)。如果你服务器资源配置吃紧请谨慎选择,又或者是在使用过程中到管理面板中手动重启(你没听错,就是这么朴实无华)。
部署Kavita同样很简单:
dockerrun-d\--namekavita\-p5000:5000\-v/your/manga/directory:/manga\-v/kavita/data/directory:/kavita/config\--restartunless-stopped\kizaing/kavita:latestKavita相比于Calibre-Web来说对于漫画系列的电子内容支持度会更好一些,而对于电子书格式的支持目前仅有EPUB和PDF格式,所以实际上的阅读体验反而是Calibre-Web会更好;但服务器资源占用会比Calibre-Web更低。
除了搭建个人博客之外,打算利用服务器来构建个人知识管理系统或存储想法记录等需求的用户可能也不在少数。
自部署可以让数据掌握在自己手中,无须担心平台跑路或是数据安全问题。
Memos默认只支持Web端,并提供了中文语言支持、以及亮色和暗色两种主题自动切换等功能,当然也少不了像Flomo一样提供了API支持,以便接入其他自动化工具实现内容的快速记录。
部署Memos的Docker命令很简单,这里是官方给出的一个例子:
dockerrun-d\--namememos\-p5230:5230\-v~/.memos/:/var/opt/memos\neosmemo/memos:latest部署成功之后只需要自行注册一个账户就可以开始使用。
首先,我们需要在服务器上创建一个用于存放数据的文件夹路径,并为其添加对应权限。比如我个人就是放在了/data/self-hosted/data/siyuan/workspace/中,那么就需要通过Linux命令建立对应的文件夹,并且为该文件夹添加对应用户权限:
mkdir-p/data/self-hosted/data/siyuan/workspace/chown-R1000:1000/data/self-hosted/data/siyuan/workspace/之后我们只需要通过容器部署即可,对应的Docker命令和docker-compose.yml参考如下:
Docker命令:
dockerrun-d-it\--namesiyuan\-v/self-hosted/data/siyuan/workspace/:/siyuan/workspace\-u1000:1000-p6806:6806\--restart=always\b3log/siyuan:latestdocker-compose.yml:
需要注意的是,默认情况下我们所在服务器上所部署的思源笔记是不具备数据同步功能的。思源笔记提供了三种选项,一种是订阅思源笔记官方的云端同步付费,另外两种则是自行配置兼容AmazonS3协议的云存储服务和WebDAV。我们可以点击左上角的工作间区域,然后找到「设置-云端」中进行配置。
如果你不打算选择思源官方的付费订阅又或是第三方的云存储服务,而是想继续折腾并自己部署的服务来同步数据,那么也有对应的方案可以选择:
如果你正在寻求一款能替代印象笔记的应用,或许可以试试Joplin。
借助docker-compose,我们可以在短短几秒之内就可以快速搭建起Joplin数据同步服务。注意,默认情况下Joplin的数据都是存储在数据库中;但是,如果在使用过程中存储类似于附件、图片等体积较大的文件,可能需要设置额外的对象存储服务。所以这里我仅给出能跑起JoplinServer最基本的docker-compose.yml文件示例:
Anki是一款辅助学习与记忆的卡片工具,对在校的学习党来说并不陌生。并且Anki也免费提供了数据同步服务,我们只需要在官网上自己注册账号之后便能开始使用。
如果你打算自己部署Anki同步服务,那么我建议你优先选择anki-sync-server-rs。具体的Docker命令如下:
dockerrun-d-it\--name=ankisyncd\-eANKISYNCD_USERNAME=
只要你足够Geek,全天候24小时不停歇的服务器简直就是自动化利器;而关于自动化方面的开源服务或项目又可以说是多不胜数。这里我仅列举几个让我留有印象的项目。
但不同于移动端设备,n8n是运行在服务器之上,在有效利用服务器资源的同时也可以让其他端设备享受到自动化的便捷。
n8n本身有不同的付费计划,但对于个人使用而言,只需要选择自部署的社区版即可满足日常需求。当然我们在部署时同样是使用Docker来完成快速上线:
部署完成之后我们只需要访问到对应接口的服务器地址并注册一个账户之后便可以开始自定义自己的工作流。
部署青龙面板我们只需要按照官方给出的Docker示例运行即可:
Dagu本身提供了Web界面,并且通过YAML文件进行配置,Docker部署也十分简单:
受益于容器技术的发展,我们可以通过Docker这样的工具来在服务器上快速地自部署开源项目或服务,从而让服务器物尽其用不至于「吃灰」。
不过尽管通过容器部署能减少我们部署时的繁琐步骤,但你依旧可能需要学习一些额外的运维技术,包括如何设置HTTPS、自动备份数据等等;同时,如果你不想总是通过「服务器IP地址+端口」的方式来访问服务或者API,那么除了要购买域名之外,还需要考虑备案等问题(购买非内陆地区服务器则可以省略掉备案这一步)。