好久都没写文章了,忙着考研。正值暑假,考研复习的黄金时期,所以没有花太多时间在博客上。前几天,忽然意识到远在丑国的VPS忘记续费了(虽然给我发了邮件,但是我没看),查看了一下已经被收回去了。VPS上只部署了Memos,所以数据也丢失了。想到之前白嫖了10年的Serv00的主机,于是想试试在上面搭建Memos这样也给我省下了购买VPS的钱。上网搜了一下,果然行,主要参考了[小王爷的教程](使用 Serv00.com 搭建 memos 服务 | 小王爷 (xiaowangye.org))。

1
{% link 使用Serv00.com搭建memos服务, https://xiaowangye.org/posts/build-memos-service-using-serv00.com/, https://xiaowangye.org/img/avatar.jpg %}

一、准备工作

  • Serv00账号(要求有两个可用的端口)
  • Cloudflare账号(要求配置Cloudflared)
  • 域名

二、环境部署

个人配置了PM2进行进程管理并且升级了自带的Go语言环境,并安装Cloudflared打通CF隧道。

(一)PM2安装

通过以下命令安装PM2:

1
2

bash <(curl -s https://raw.githubusercontent.com/k0baya/alist_repl/main/serv00/install-pm2.sh)

输入pm2检查是否成功(成功如下)

(二) 安装Cloudflared

通过以下命令安装Cloudflared:

1
wget https://cloudflared.bowring.uk/binaries/cloudflared-freebsd-latest.7z && 7z x cloudflared-freebsd-latest.7z && rm cloudflared-freebsd-latest.7z && mv -f ./temp/* ./cloudflared && rm -rf temp

pm2测试运行cloudflared进程,在cloudflared程序所在目录运行:

1
2

pm2 start ./cloudflared -- tunnel --edge-ip-version auto --protocol http2 --heartbeat-interval 10s run --token ARGO_TOKEN

ARGO_TOKEN为自己的Cloudflare的TOKEN,测试可以使用Global_Token

(三)升级Go语言环境

首先创建安装目录并cd进入

1
2
mkdir -p ~/local/soft
cd ~/local/soft

下载Go 1.22版本包

1
wget https://dl.google.com/go/go1.22.0.freebsd-amd64.tar.gz

解压并修改环境变量

1
2
3
tar -xzvf go1.22.0.freebsd-amd64.tar.gz
echo 'export PATH=~/local/soft/go/bin:$PATH' >> ~/.profile
source ~/.profile

最后验证版本

1
go version

三、Memos部署

准备工作已经做完,下面开始部署Memos。新版本的Memos是真的难用,API都查不到,所以我使用的老版本的。

(一)Serv00面板设置

首先允许运行自己的应用,打开你的Serv00的管理面板,选择Additional services,在Run your own applications选项卡中点击按钮使状态改为Enable

然后,开放两个连续的端口(注:必须是连续的两个端口)。一次选择Port reservationAdd port(注:端口类型必须是tcp

之后,SSH连接面板,并执行下面的命令,下载FreeBSD版本的Memos。注:也可以不下载最新版,可以去作者的Github下下载你需要的版本。

1
2
3
4
5
6
7
mkdir ~/domains/memos
cd ~/domains/memos

API_URL="https://api.github.com/repos/k0baya/memos-binary/releases/latest"
DOWNLOAD_URL=$(curl -s $API_URL | jq -r ".assets[] | select(.name == \"memos-freebsd-amd64.tar.gz\") | .browser_download_url")
curl -L $DOWNLOAD_URL -o memos-freebsd-amd64.tar.gz
tar -xzvf memos-freebsd-amd64.tar.gz && rm memos-freebsd-amd64.tar.gz && chmod +x memos && mkdir data

使用PM2执行部署Memos,注意这里的1155换成自己的端口(小的那个,因为官方默认+1)

1
pm2 start ./memos -- --mode prod --port 1155 --data ~/domains/memos/data

(二)Cloudflared创建隧道

cloudflare中添加一个新的隧道并添加域名。登录自己的Cloudflare账号,按照下面的步骤完成隧道的创建和域名添加。

注意复制这里的token,只需要后的面token

使用PM2运行cloudflared,这里的<token>填写上面的复制的token

1
2
cd ~/domains/cloudflared
pm2 start ./cloudflared -- tunnel --edge-ip-version auto --protocol http2 --heartbeat-interval 1200s run --token <token>

最后使用pm2 save,保存快照。

1
pm2 save

(三)收尾工作

因为Serv00会不定期的自动重启,所i以需在重启之后打开这些服务。需要在Serv00的面板中设置定时任务。在控制面板中添加任务。注:GanSer换成自己的用户名。设置为开机后启动After Reboot优先级为Advanced

1
/home/GanSer/.npm-global/bin/pm2 resurrect >/dev/null 2>&1 && /home/GanSer/.npm-global/bin/pm2 restart all >/dev/null 2>&1    

这样就可以了,打开设置的域名就可以正常使用Memos了。