构建一站式个人数字平台:在 2C2G 服务器上自建 Memos、Joplin、Gitea 与 Wiki.js
AI Summary
前段时间课内作业需要,学校和华为云合作并给我们发放了代金券,由此我第一次使用华为云平台。
对于我这种前几年游击于各个云平台限时活动的“大冤种老用户”,虽然近几年云服务商都降价推广,活动频繁,但是来到一个新平台肯定还是要搞一波新用户福利嘛,所以我盯上了:
emm 并非推广,因为似乎从去年开始各家都在推 38/y 的轻量服务器。
不过话说回来,别看华为命名什么 Flexus L,本质就是轻量应用服务器,性能差,共享抢占式,开大服务直接有卡死的风险。并且这玩意儿我实测上行慢也就算了,下行还慢的要死,加上这种国内服务器要天天换源,体验算是相当差了。不过一分钱一分货嘛...吐槽归吐槽,这几年真的比 21/22 年那会儿活动多多了。
计划
这种 2c2g 的服务器,跑个 php 博客或者搭个静态页面也就差不多了,不过我们如果已经有了博客,那除去这个,还有什么折腾的呢?
首先是前几天我又经历了一次数据丢失 🥹,我已经麻木了,不过还好的是我重要的开源代码都在 github,写的文章都在软路由上有备份,开发环境可以重来
总结一下是这样的 😰
截止目前,我搞机生涯中,搞崩了 2 次 ntfs 一次 hfs+ 5 次 ext4 不计其数的 btrfs 一次 xfs 一次 apfs
累计丢数据 3T-5T 左右,战功赫赫
不过平时尝试写的一点小东西,小项目,还有摘抄的代码段,平时记的小笔记,以及随笔的记录,折腾的重要文件,都随着 btrfs 分区的损坏灰飞烟灭了
其次,我目前常用的 flomo,typora,notion,要么是得开高级版才有很多功能,要么是没有云同步,要么是全云上,折腾了这么久,自己的笔记和知识库还是杂乱无章。
所以之前搁置很久的计划又继续了,利用开源替代构建自己的数字平台,而选择上,由于硬件性能的限制,我选择了两个 node 两个 go 的项目,低内存占用高性能,保证在小服务器上也可以流畅运行~,而恰好他们都是开源的比较不错的选择
都跑起来占用大概这样:
前置工作:Docker 中跑一切
这篇文章所有的服务全是在 Docker 中运行的,便捷管理,无需配环境,即开即用,快速升级
[!NOTES] 提示
对了,我们一直使用 Ubuntu Server 24.04 举例,如果你偏好其他发行版,使用其对应的包管理器就好啦
我们先把 docker 本体弄好:
看官方教程就好啦,当然我也复制好了你可以直接粘过去用:
Install Docker Engine on Ubuntu
shell
安装好了首先启动服务:
shell
将你的用户添加到 docker 用户组:
shell
修改镜像源 /etc/docker/daemon.json
json
修改完直接 sudo systemctl restart docker
重启服务就 ok 了
Memos: 随时随地记录想法,便签式记录
Memos 算是 flomo 的开源替代,除了 AI 分析什么的其他功能都是有的,唯一就是以网页作为载体,可能比不上全平台客户端,但是自建我的数据更安全,自己也可以随时二次开发。
它的部署极其简单:
shell
嗯,就结束了,其中 ~/.memos/
是数据文件存放的位置,你可以自定义。
因为它的数据库存在 sqlite,所以启动本体之后什么都不用管了,你就轻松反代,申请证书,然后就能用了。
看到这里就有帅的发光的你问了:
TMD 你们这些人是不是没事找事啊,好好的产品不用,一天天搞什么开源替代,丑的要死,那么简陋,是不是没苦硬吃啊
emm 怎么说,开源替代一个是自建为了数据的完全持有,保证自己数据的安全,还有就是通常开源产品有较高的自定义空间。
在设置——系统——自定义 CSS,就可以让他们变成自己喜欢的样子了。
怎么说,有点像 Win11 开了云母一样()
Joplin:记录笔记,全平台同步
如果说 Memos 是每日想法的记录,那么 Joplin 就是较长笔记的解决方案,其提供了开源服务端和全平台的应用,不过...,桌面端其实全是 electron 写的。
还是在官方仓库找到部署教程:
joplin/packages/server/README.md at dev · laurent22/joplin
首先创建一个 .env
shell
先改一下 APP_BASE_URL 就好,其他先注释掉,我们先用内置的 sqlite 测试。
shell
嗯,又是一句命令就部署好了,反代好直接进去,默认用户名 admin@localhost
密码 admin
在客户端中设置——同步——选择 Joplin Server(Beta),然后输入地址用户名密码就好了。
测试没问题了之后,我们来搞好 postgresql
shell
然后自启动和开启服务
shell
之后改密码和建新用户,新库:
shell
sql
修改监听端口和验证策略
shell
添加你的 docker 容器网段,例如:
shell
shell
shell
之后重启服务就好了
随后改好刚才的 .env
,重启容器就好了。
Wikijs:开源的强大协作知识库
Wikijs 是知名的知识库软件,没什么介绍的了,这个用的人很多,权限管理和协作功能十分完善。
先用 psql 建好数据库,这里我们还是 postgresql
我们使用 Docker Compose,创建好 docker-compose.yml
yaml
然后初始化就 ok 了。
Gitea:轻量的自建 git 代码库解决方案
gitea 是一个类似 gitlab 的自建 git 代码库,但不同于 gitlab 的高占用和高硬件要求,gitea 使用 go 语言开发,极其轻量,可以在性能很低的服务器上流畅运行。
部署依然还是 Docker Compose
yaml
跑起来可以设置下邮件服务,网站基本信息,然后咱们的重要任务到了 SSH
这里我将 22 映射到了外部的 222 端口,并且全程使用 git over ssh
在你使用的主力机上生成 ssh 密钥并在 gitea 上传公钥
shell
然后编辑你的 .ssh/config
shell
其中的 mygitea 是个别名,这样你可以通过 ssh mygitea
和 git remote add mygitea:username/repo.git
来使用 ssh 和 git
简要总结
这是一份在资源有限(如 2 核 CPU、2GB 内存)的云服务器上,通过自建方式搭建个人数字平台的用户准备的实践指南。出于对数据所有权、隐私安全以及对现有云笔记服务(如 Flomo, Notion)不满的考虑,决定利用开源软件 Memos、Joplin、Wiki.js 和 Gitea 来构建替代方案。
这些的前提还是得有时间慢慢折腾,并且对 docker linux 足够熟悉,当然你也可以向 AI 询问获得非常好的解决方案。
其中,所有平台都支持通过 css 进行美化,你可以查询相关的文档以获取进一步方法,我接下来有时间的话也会写一份 css 来美化各个平台并放在 github 上,到时候大家可以自取hh。(挖坑.jpg)
就这些,如果你恰好手上有这样的服务器,并且想要构建一套开源的文字代码记录平台,不妨试试这些!