原作者链接 Saika’s Blog

serv00 是一个提供免费的 Virtual Host 的平台,其托管平台使用的是 FreeBSD 系统,并不是 Linux。每个账号有效期 10 年,超过三个月不登入 Panel 以及 SSH 则会被删除账号。

名称 Serv00 免费提供
存储空间 3 GB
每月流量 unlimited
网站数量 100
MySQL 10
MySQL 3
MongoDB 3
GIT/SVN/HG 仓库 3
TCP/UDP 端口 3
PHP 解释器 3
系统进程 15
RAM 512MB
备份 7 天
服务器放置 欧盟
免费子域名 login.serv00.net
技术支持 只有论坛
SLA 不支持
现代技术 支持
SSH 访问 支持
SSH 隧道 不支持
远程数据库访问 不支持
固态硬盘 支持
没有广告 支持
价格 免费
Alist详细部署记录

注册账号

首先去 serv00 的官网注册一个账号:注册页面

最好不要使用国内邮箱,注册信息请尽可能真实填写。(What is the cost of hosting on serv00.com? 这一项填 0/free)

接着你可以在邮箱里收到你的注册信息的邮件;邮件最末有 Panel 的入口地址和文档链接(官方文档)以及论坛链接(官方论坛),接下来登入 Panel 进行操作:

  1. 首先去左侧的 Additional Service 选项卡中,找到 Run your own applications 选项,将其设置为允许
  2. 接着去 Port reservation 选项卡,使用 Add port 功能,随机添加一个 TCP 端口

接着使用 SSH 登入到你的账户,我使用的 SSH 客户端是 Termius


部署 Alist

Alist 的官方仓库并没有提供 FreeBSD 版本的可执行文件构筑,Alist 构筑 FreeBSD 版本的仓库

Serv00 本身提供的网站托管在 ~/domains 路径下,所以我建议把 Alist 也部署到这个路径下的子目录:

1
mkdir -p ~/domains/alist && cd ~/domains/alist

接着下载目前 shangskr/alist-freebsd 提供的最新版的 Alist 的可执行二进制文件构筑:

1
wget https://github.com/shangskr/alist-freebsd/releases/download/v3.30.0/alist && chmod +x alist

然后需要先启动一次 Alist 以生成配置文件,此次启动一定会失败,请不用在意:

1
./alist server

接着回到 Panel 中,找到 MySQL 选项卡,使用 Add database 功能新建一个数据库:

密码要求含有大写字母、小写字母和数字三种字符,且长度必须超过 6 个字符。

接下来进入 File manager 选项卡,进入 ~/domains/alist/data 路径,可以看到一个名为 config.json 的文件,右键点击,选择 View/Edit > Source Editor,进行编辑:

配置示例

修改 CDNdatabasescheme 三个部分:

  • CDN: https://jsd.onmicrosoft.cn/npm/alist-web@$version/dist/

    版本号的话自己指定,不指定有可能加载不出来页面

  • database 部分

    • type 需要改成 mysql
    • host 填写你在注册邮件中看到的 mysql 的地址
    • port 是默认的 3306
    • 用户名、密码、数据库名则按照你创建的情况进行填写
  • scheme 部分

    • 修改 address127.0.0.1 本地回环,是为了避免被他人使用 http://ip:port 的方式进行访问。至于自己怎么访问,本文后面的部分会进行介绍。
    • http_port 要改成自己前面放行的端口。

改完之后,点击 save 保存,接着回到 SSH 窗口中进行操作。

先启动一次,查看运行是否正常:

1
./alist server

运行正常,记得把管理员用户的密码记住。接着使用 Ctrl+c 停止运行。


绑定域名

此时还没有访问 Alist 的方法,因为监听的地址是本地回环,所以需要将其反向代理出来。我选择使用 Cloudflare 提供的 Argo 通道,顺带给 Alist 绑定自己的域名。

Cloudflared 官方仓库没有提供 FreeBSD 平台的客户端,但是和 Alist 一样的,我找到了 Unofficial 的 FreeBSD 版本的构筑:cloudflared-freebsd,接下来使用它打隧道:

新建并进入 Cloudflared 的工作目录:

1
mkdir -p ~/domains/cloudflared && cd ~/domains/cloudflared

下载 Cloudflared:

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

然后在 Cloudflare 的面板(Cloudflare Dash)中,找到 Networks 分类下的 Tunnels 功能,点击 Create a tunnel,选择 Cloudflared,Next,随便取个名字,Next,往下翻,可以看到 Run the following command,然后给了一串命令,将其复制出来,大概是这样的:

1
cloudflared.exe service install eyJhIjoiNzh...............V5TWpBeSJ9

前面的不需要管,只需要保留最后 ey 开头的那串很长的 TOKEN,去 SSH 中测试运行 Cloudflared:

1
./cloudflared tunnel --edge-ip-version auto --protocol http2 --heartbeat-interval 10s run --token eyJhIjoiNzh...............V5TWpBeSJ9

记得把最后的那一串替换成你的 TOKEN。

接着回到 Cloudflare 的面板,继续点击 Next,然后添加一个自己的域名,Service 中,Type 选择 HTTP,URL 填写 localhost:PORT,其中 PORT 为你的 Alist 对应的端口。点击 Save Tunnel 后,可以看到自己新建的 Tunnel 上线。

接着使用 Ctrl+c 停止运行。然后安装进程管理工具 pm2:

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

然后使用 pm2 启动 Cloudflared:

1
~/.npm-global/bin/pm2 start ./cloudflared -- tunnel --edge-ip-version auto --protocol http2 --heartbeat-interval 10s run --token eyJhIjoiNzh...............V5TWpBeSJ9

记得把最后的那一串替换成你的 TOKEN。

再启动 Alist:

1
cd ~/domains/alist && ~/.npm-global/bin/pm2 start ./alist -- server

到这里,就可以直接通过你的域名访问刚刚部署的 Alist 了。


收尾工作

听说 Serv00 会不定时重启机器,所以我们把 pm2 添加开机自启,可以保证每次重启都能由 pm2 调动 Alist 和 Cloudflared。而且 Serv00 每三个月内必须要有一次登录面板或者 SSH 连接,不然会删号,也可以通过一个脚本解决问题,接下来我会详细说明。

自动定时 SSH

在 Panel 中找到 File manager 选项卡,进入 alist 所在的路径,然后找到上方 Send 按钮左边的 +,选择 New empty file,文件名命名为 auto-renew.sh,右键点击 auto-renew.sh,选择 View/Edit > Source Editor,进行编辑,把下面的代码块的内容都复制进去:

1
2
3
4
5
6
#!/bin/bash

while true; do
sshpass -p '密码' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt 用户名@地址 "exit" &
sleep 2592000 #30 天为 2592000 秒
done

记得把其中的密码、用户名、ssh 的地址修改为你自己的。

保存后回到 SSH 中,进入 auto-renew.sh 所在的路径,并使用 pm2 管理运行它:

1
cd  ~/domains/alist && chmod +x auto-renew.sh && ~/.npm-global/bin/pm2 start ./auto-renew.sh

这样就会每隔一个月自动执行一次 SSH 连接,自己 SSH 自己进行续期。

添加开机自启

在 Panel 中找到 Cron jobs 选项卡,使用 Add cron job 功能添加任务:

Cron 任务配置

  • Specify time 选择 After reboot,即为重启后运行。
  • Form type 选择 Advanced,Command 写:
1
/home/你的用户名/.npm-global/bin/pm2 resurrect

记得把你的用户名改为你的用户名

添加完之后,在 SSH 窗口保存 pm2 的当前任务列表快照:

1
~/.npm-global/bin/pm2 save

这样每次 serv00 不定时重启任务时,都能自动调用 pm2 读取保存的任务列表快照,恢复任务列表。

更多玩法

参考来源:Saika’s Blog

serv00 官方文档 中有搭建网站的示例,示例就有 WordPress。文档中还详细介绍了以下服务的搭建方法:

  • Redis
  • Memcached
  • Imapsync
  • WP-CLI
  • Tomcat

你可以根据自己的需求,参考官方文档部署更多服务。

KodBox

KodBox

虽然 Serv00 能够部署 KodBox,但是实在是不太好用。最直观的感受就是卡,因为 KodBox 运行期间需要调用多个 PHP 组件,而 Serv00 限制同时处理三个 PHP 进程,所以显得特别慢。其次,Serv00 没有 Root 权限,部分 PHP 插件没有安装,也无法安装,导致有一些 KodBox 的插件无法正常运行。

安装步骤

进入 PHP 网站路径:

1
cd ~/domains/用户名.serv00.net/public_html/

安装 KodBox:

1
bash <(curl -s https://pan.rappit.site/d/shell/kodbox1.49/serv00-kodbox-install.sh)

然后去 Panel 中的 MySQL 选项卡,新建数据库和用户,用以接入 KodBox。再去 WWW Websites 选项卡中找到 用户名.serv00.net,点击右侧的 Manage > Details 进入设置,把以下三个功能打开:

  • GZIP compression
  • Allow PHP eval() function
  • Allow PHP exec() function

再打开 https://用户名.serv00.net/ 进行 KodBox 的安装,数据库填写你刚刚新建的数据库即可。初次启动需要较长的时间,请耐心等待。

如果你看明白了面板的功能,也可以使用自己的域名或者子域部署 KodBox,这里仅用 https://用户名.serv00.net/ 举例。

注意:

  • 上面的应用(KodBox)不需要占用端口
  • 下面的应用每一个都需要占用端口
Vless

VLESS

创建并进入 vless 工作路径,并克隆源仓库:

1
cd ~/domains && git clone https://github.com/qwer-search/serv00-vless && mv -f serv00-vless vless && cd vless && rm -f README.md

在 Panel 中 Port Reservation 选项卡中放行一个 TCP 端口,随机即可,记住端口号。

使用 vim 编辑或者直接去 Panel 中的 File Manager 选项卡在线编辑 app.js 文件,修改端口为刚刚放行的端口。

安装依赖:

1
npm install

安装完毕后,使用 pm2 启动并守护 vless 进程:

1
~/.npm-global/bin/pm2 start app.js --name vless

接着去你的代理客户端软件中手动添加 vless 配置即可:(下表没有给出的可以不填。)

Key Value
地址 Panel 中 WWW Websites 选项卡里的你的 Domain name
端口 你放行的端口
用户 id 37a0bd7c-8b9f-4693-8916-bd1e2da0a817
传输协议 ws
伪装域名 同地址
ws path /
Alist

Alist(FreeBSD 版本)

Alist 官方仓库没有构筑 FreeBSD 系统下能够运行的 Alist 可执行文件,但是我在 Github 上发现了一个使用 Github Workflow 自动构筑 FreeBSD 适用的 Alist 的仓库:shangskr/alist-freebsd,使用这个仓库就可以很便利的在 Serv00 上部署 Alist。

部署步骤

新建并进入 Alist 的工作目录:

1
mkdir -p ~/domains/alist && cd ~/domains/alist

接着下载目前 shangskr/alist-freebsd 提供的最新版的 Alist 的可执行二进制文件构筑:

1
wget https://github.com/shangskr/alist-freebsd/releases/download/v3.30.0/alist && chmod +x alist

然后需要先启动一次 Alist 以生成配置文件,此次启动一定会失败,请不用在意:

1
./alist server

接着回到 Panel 中,找到 MySQL 选项卡,使用 Add database 功能新建一个数据库:

密码要求含有大写字母、小写字母和数字三种字符,且长度必须超过 6 个字符。

接下来进入 File manager 选项卡,进入 ~/domains/alist/data 路径,可以看到一个名为 config.json 的文件,右键点击,选择 View/Edit > Source Editor,进行编辑:

配置示例

修改 CDNdatabasescheme 三个部分:

  • CDN: https://jsd.onmicrosoft.cn/npm/alist-web@$version/dist/

    版本号的话自己指定,不指定有可能加载不出来页面

  • database 部分

    • type 需要改成 mysql
    • host 填写你在注册邮件中看到的 mysql 的地址
    • port 是默认的 3306
    • 用户名、密码、数据库名则按照你创建的情况进行填写
  • scheme 部分

    • 修改 address127.0.0.1 本地回环,是为了避免被他人使用 http://ip:port 的方式进行访问。至于自己怎么访问,本文后面的部分会进行介绍。
    • http_port 要改成自己前面放行的端口。

改完之后,点击 save 保存,接着回到 SSH 窗口中进行操作。

先启动一次,查看运行是否正常:

1
./alist server

运行正常,记得把管理员用户的密码记住。接着使用 Ctrl+c 停止运行。

你可以选择使用面板中的 Proxy 功能添加域名,或者 Cloudflared 隧道添加域名。

Synctv

SyncTV

因为用 koyeb 部署这个项目把我 Koyeb 账号封了所以没办法玩了,我想到了 serv00 于是通过仿照 alist-freebsd 的仓库的 workflow 进行构筑的。

部署步骤

首先放行一个端口,然后创建并进入 synctv 的工作目录:

1
mkdir -p ~/domains/synctv && cd ~/domains/synctv

下载可执行文件:

1
2
3
release_info=$(curl -s https://api.github.com/repos/shangskr/synctv-freebsd/releases/latest)
asset_url=$(echo "$release_info" | jq -r '.assets[] | select(.name != "source code") | .browser_download_url')
curl -L -o synctv "$asset_url" && chmod +x synctv

新建启动脚本:

1
touch start.sh && chmod +x start.sh

接着在 Panel 中进入 File manager 选项卡,进入 synctv 的工作目录,找到 start.sh 文件,右键选择 View/Edit > Choose other > Source Editor 进行编辑,填入以下内容:

1
2
3
4
5
6
7
#!/bin/sh

# 如果不希望被使用 http://ip:port 的方式访问,取消注释下一行
# export SYNCTV_SERVER_LISTEN=127.0.0.1
# 把下一行的最末的 PORT 改成自己放行的端口
export SYNCTV_SERVER_PORT=PORT
./synctv server --data-dir ./

保存后回到 terminal 中,给予权限:

1
chmod +x synctv

测试运行:

1
./start.sh

确定运行没有问题后,按 Ctrl+c 即可停止运行。

使用 pm2 启动并管理:

1
~/.npm-global/bin/pm2 start ./start.sh --name synctv
One-api

One-API

源仓库没有提供 freebsd 平台的二进制文件,需要自己构建,但是很简单。先在面板中放行一个端口。

部署步骤

新建并进入 one-api 的工作目录:

1
mkdir -p ~/domains/one-api && cd ~/domains/one-api

进行构建:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 下载源代码
git clone https://github.com/songquanpeng/one-api
# 构建前端
cd one-api/web/default
npm install
npm run build
# 构建后端
cd ../..
go mod download
go build -ldflags "-s -w" -o one-api
chmod u+x one-api
# 清理文件
cd .. && mv -f one-api/one-api ./temp
rm -rf one-api
mv -f temp one-api

新建启动脚本:

1
touch start.sh && chmod +x start.sh

接着在 Panel 中进入 File manager 选项卡,进入 one-api 的工作目录,找到 start.sh 文件,右键选择 View/Edit > Choose other > Source Editor 进行编辑,填入以下内容:

1
2
3
4
5
#!/bin/sh

export TIKTOKEN_CACHE_DIR="$PWD"
# 把下一行的 PORT 改为自己放行的端口
./one-api --port PORT --log-dir ./logs

保存后回到 terminal 中,测试运行:

1
./start.sh

确定运行没有问题后,按 Ctrl+c 即可停止运行。

使用 pm2 启动并管理:

1
~/.npm-global/bin/pm2 start ./start.sh --name one-api
Uptime-Kuma

Uptime Kuma

受限于 FreeBSD 的平台限制,1.23 版本内置了 PlayWright,无法运行,所以只能安装 1.22 版本。切记先去 Panel 中放行 TCP 端口。

部署步骤

下载 1.22.1 版本源代码并进入工作路径:

1
cd ~/domains && wget https://github.com/louislam/uptime-kuma/archive/refs/tags/1.22.1.zip && unzip 1.22.1.zip && mv -f uptime-kuma-1.22.1 kuma && rm -f 1.22.1.zip && cd kuma

设置生产模式:

1
npm ci --production

下载 dist 文件:

1
wget https://github.com/louislam/uptime-kuma/releases/download/1.22.1/dist.tar.gz && tar -xzvf dist.tar.gz && rm dist.tar.gz

安装补充依赖:

1
npm install

安装过程中多少会有报错,无视就好,实际上最后可以正常运行。内置的 Cloudflared 反向代理在 FreeBSD 平台上无法使用,但是可以使用上述的外置的 Cloudflared 进行反代,使用自己的域名。

测试运行:

1
node server/server.js --port=PORT

记得把 PORT 替换成你放行的端口。确定运行没有问题后,按 Ctrl+c 即可停止运行。

使用 pm2 管理后台运行:

1
~/.npm-global/bin/pm2 start server/server.js --name uptime-kuma -- --port=PORT

记得把 PORT 替换成你放行的端口。

如果你不希望自己的 Uptime-Kuma 被人使用 http://IP:PORT 的方式访问,你可以在最后的执行命令添加 –host=127.0.0.1 的尾缀,这样就只能通过反向代理的域名进行访问了:

1
~/.npm-global/bin/pm2 start server/server.js --name uptime-kuma -- --port=PORT --host=127.0.0.1
Bingo

Bingo

先放行一个端口。在 Panel 中进入 File manager 选项卡,点击左侧的 My Files 进入你的用户根目录,找到 .bashrc 文件,右键选择 View/Edit > Choose other > Source Editor 进行编辑,在最末加上以下两行并保存:

1
2
alias node='node20'
alias npm='npm20'

应用更改:

1
source ~/.bashrc

先新建一个目录用于存放 halo 的相关文件,进入目录后执行下述操作。

下载源码:

1
git clone https://github.com/weaigc/bingo

进入源码所在目录:

1
cd bingo

安装依赖:

1
npm20 install

下载 build 好的 .next 资源:

1
wget -O next.tar.gz https://pan.saika.free.hr/d/local/next.tar.gz && tar -xzvf next.tar.gz && rm next.tar.gz

添加环境变量文件:

1
cp .env.example .env

接着在 Panel 中进入 File manager 选项卡,进入 Bingo 源码所在的目录,找到 server.js 文件,右键选择 View/Edit > Choose other > Source Editor 进行编辑,修改第 7 行中的端口为你放行的端口。再编辑 .env 文件,添加你的 BING_HEADER

测试启动:

1
npm20 run start

确定运行没有问题后,按 Ctrl+c 即可停止运行。

使用 pm2 启动并管理:

1
~/.npm-global/bin/pm2 start npm --name bingo -- run start
Refresh-gpt-chat

refresh-gpt-chat

创建并进入 refresh-gpt-chat 的工作目录:

1
mkdir -p ~/domains/refresh-gpt-chat && cd ~/domains/refresh-gpt-chat

下载 refresh-gpt-chat:

1
2
# 本文成文时,refresh-gpt-chat 的最新版本为 0.0.3
wget -O refresh-gpt-chat.jar https://github.com/Yanyutin753/refresh-gpt-chat/releases/download/v0.0.3/refresh-gpt-chat-0.0.3-SNAPSHOT.jar

使用 pm2 启动:

1
~/.npm-global/bin/pm2 start java19 --name refresh-gpt-chat -- -jar refresh-gpt-chat.jar --server.port=端口 --server.servlet.context-path=/ --getAccessTokenUrl=https://你的 ninja 地址/auth/refresh_token --chatUrl=https://你的 ninja 地址/v1/chat/completions

再套域名,接下来就可以直接使用 https://你套的域名/v1/chat/completions/ 当作 API 端点,使用 refresh_tokenAPI_Keys,使用 ChatGPT 了。

然后在 one-api 中添加自定义渠道,Base URL 填写你 https://你套的域名,模型填入你的 refresh_token 对应的账号所支持的模型,如果和我一样手持大把 3.5 的账号想用来做 API 用,可以选择全部 GPT3.5 的相关模型,然后在模型重定向中填入以下内容:

1
2
3
4
5
6
7
8
{
"gpt-3.5-turbo-0301": "gpt-3.5-turbo",
"gpt-3.5-turbo-0613": "gpt-3.5-turbo",
"gpt-3.5-turbo-16k": "gpt-3.5-turbo",
"gpt-3.5-turbo-16k-0613": "gpt-3.5-turbo",
"gpt-3.5-turbo-1106": "gpt-3.5-turbo",
"gpt-3.5-turbo-instruct": "gpt-3.5-turbo"
}

密钥填写你的 refresh_token 即可,如果你有多个账号,可以将批量勾选上,然后一行写一个 refresh_token

gpt4-copilot-java

gpt4-copilot-java

支持 cocopilot 的 ccu 和 copilot 的 ghu 调用 copilot 转 GPT-4 的接口转换工具。Java 写的,可以在 Serv00 运行。依旧是在 Panel 中先开放端口。

部署步骤

新建并进入 gpt4-copilot-java 的工作目录:

1
mkdir -p ~/domains/gpt4-copilot-java && cd ~/domains/gpt4-copilot-java

下载 fat jar 包:

1
2
3
RELEASE_INFO=$(curl -s "https://api.github.com/repos/Yanyutin753/gpt4-copilot-java-sh/releases/latest")
JAR_DOWNLOAD_URL=$(echo "$RELEASE_INFO" | jq -r '.assets[] | select(.name|test(".jar$")) | .browser_download_url')
curl -L -o gpt4-copilot-java.jar "$JAR_DOWNLOAD_URL"

测试运行:

1
2
# 把 PORT 改为自己放行的端口,最后的 server.servlet.context-path 参数可以改成自己喜欢的尾缀
java19 -jar gpt4-copilot-java.jar --server.port=PORT --server.servlet.context-path=/

测试没有问题之后,按 Ctrl+c 即可停止运行。

使用 pm2 启动并管理:

1
~/.npm-global/bin/pm2 start java19 --name gpt4-copilot-java -- -jar gpt4-copilot-java.jar --server.port=PORT --server.servlet.context-path=/

使用示例

始皇的公车:ghu_ThisIsARealFreeCopilotKeyByCoCopilot

免费公车白嫖请求示例:

1
2
3
4
5
6
7
curl --location 'http(s)://ip:port_or_URL/cocopilot/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ghu_ThisIsARealFreeCopilotKeyByCoCopilot' \
--data '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "鲁迅打周树人"}]
}'
Zfile

ZFile

同理,先放行端口。然后新建并进入 zfile 的工作路径:

1
mkdir -p ~/domains/zfile && cd ~/domains/zfile

下载 fat jar 包:

1
wget --no-check-certificate -O zfile.jar https://c.jun6.net/ZFILE/zfile-release.jar

测试运行:

1
java19 -jar -Duser.timezone=Asia/Shanghai zfile.jar --zfile.log.path=$PWD/logs --zfile.db.path=$PWD/zfile --server.port=PORT

记得把端口改成自己的。测试没有问题之后,按 Ctrl+c 即可停止运行。

使用 pm2 启动并管理:

1
~/.npm-global/bin/pm2 start java19 --name zfile -- -jar -Duser.timezone=Asia/Shanghai zfile.jar --zfile.log.path=$PWD/logs --zfile.db.path=$PWD/zfile --server.port=PORT
Halo

Halo

慎重部署,内存会超 100%,不知道会不会封号

Halo 自从升级 2.0 版本开始,很长时间内都没有提供构筑好的 jar 包,甚至于在 GitHub 上都出现了第三方的,使用 GitHub workflow 自动化构筑 jar 包的仓库:Jar4Halo。但是,自从 2.12.0-alpha.1 版本开始,Halo 的官方仓库又开始提供构筑好的 jar 包了。

部署步骤

先放行一个端口,并新建一个目录用于存放 halo 的相关文件,进入目录后执行下述操作。

下载 jar 包:

1
wget -O halo.jar https://github.com/halo-dev/halo/releases/download/v2.12.0/halo-2.12.0.jar

在面板中新建 MySQL 数据库,用于填入 application.yamlapplication.yaml 的全部内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server:
port: 你在面板中放行的端口
# Response data gzip.
compression:
enabled: false
spring:
#sql:
# init.platform: mysql
r2dbc:
url: r2dbc:pool:mysql://数据库地址:3306/数据库名
username: 数据库用户名
password: 数据库密码
halo:
# Your admin client path is https://your-domain/{admin-path}
admin-path: admin
# memory or level
cache: level

halo.jar 所在路径下新建 .halo2 文件夹,进入其中,新建文件 application.yaml 然后把上述内容填入其中。

halo.jar 所在路径下新建 run.sh 运行脚本,其全部内容为:

1
2
3
4
#!/bin/bash
export HALO_WORK_DIR="$PWD/.halo2"
export HALO_EXTERNAL_URL="https://你的域名"
java17 -server -Xms128m -Xmx256m -jar -Duser.timezone=Asia/Shanghai $PWD/halo.jar --spring.config.additional-location=$PWD/.halo2/application.yaml

测试运行:

1
chmod +x run.sh && ./run.sh

确定运行没有问题后,按 Ctrl+c 即可停止运行。

使用 pm2 管理运行:

1
chmod +x run.sh && ~/.npm-global/bin/pm2 start ./run.sh --name halo
自动续期

自动续期方法

方法一:使用青龙面板

可以用青龙面板的自动任务定期登录 SSH 解决。在青龙面板中添加 Linux 依赖 sshpass,然后添加定时任务:

  • 名称:随意
  • 命令/脚本:
1
sshpass -p '密码' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt 用户名@地址 "exit"
  • 定时规则:1 1 1 * *

这样就会每个月自动 ssh 连接一次,实现续期。

方法二:自身 SSH 自身自动续期

你还可以使用自身 SSH 自身的方式进行自动续期,操作如下:

在 Panel 中找到 File manager 选项卡,进入一个自己喜欢的路径,然后找到上方 Send 按钮左边的 +,选择 New empty file,文件名命名为 auto-renew.sh,右键点击 auto-renew.sh,选择 View/Edit > Source Editor,进行编辑,把下面的代码块的内容都复制进去:

1
2
3
4
5
6
#!/bin/bash

while true; do
sshpass -p '密码' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt 用户名@地址 "exit" &
sleep 259200 #30 天为 259200 秒
done

记得把其中的密码、用户名、ssh 的地址修改为你自己的。

保存后回到 SSH 中,进入 auto-renew.sh 所在的路径:

1
cd xxx    #其中 xxx 为你的 auto-renew.sh 文件的存放路径

auto-renew.sh 添加可执行权限:

1
chmod +x auto-renew.sh

使用 pm2 启动:

1
~/.npm-global/bin/pm2 start ./auto-renew.sh

这样就会每隔一个月自动执行一次 SSH 连接,自己 SSH 自己进行续期。

自动启动

添加开机自启

在 Panel 中找到 Cron jobs 选项卡,使用 Add cron job 功能添加任务:

Cron 任务配置

  • Specify time 选择 After reboot,即为重启后运行。
  • Form type 选择 Advanced,Command 写:
1
/home/你的用户名/.npm-global/bin/pm2 resurrect

记得把你的用户名改为你的用户名。

添加完之后,在 SSH 窗口保存 pm2 的当前任务列表快照:

1
~/.npm-global/bin/pm2 save

这样每次 serv00 不定时重启任务时,都能自动调用 pm2 读取保存的任务列表快照,恢复任务列表。