用serv00部署Alist以及其他项目

原作者链接
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隧道 不支持
远程数据库访问 不支持
固态硬盘 支持
没有广告 支持
价格 免费

注册账号

首先去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也部署到这个路径下的子目录:

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

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

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

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

./alist server

接着回到Panel中,找到MySQL选项卡,使用Add database功能新建一个数据库:
(密码要求含有大写字母、小写字母和数字三种字符,且长度必须超过6个字符。)
接下来进入File manager选项卡,进入~/domains/alist/data径,可以看到一个名为config.json的文件,右键点击,选择View/Edit > Source Editor,进行编辑:

修改CDN、database、scheme三个部分
CDN:https://jsd.onmicrosoft.cn/npm/alist-web@$version/dist/
(版本号的话自己指定,不指定有可能加载不出来页面)
database部分,type需要改成mysql,host填写你在注册邮件中看到的mysql的地址,port是默认的3306,用户名、密码、数据库名则按照你创建的情况进行填写。
scheme部分,修改adress为127.0.0.1本地回环,是为了避免被他人使用http://ip:port 的方式进行访问。至于自己怎么访问,本文后面的部分会进行介绍。http_port要改成自己前面放行的端口。
改完之后,点击save保存,接着回到SSH窗口中进行操作。
先启动一次,查看运行是否正常:

./alist server

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

绑定域名

此时还没有访问Alist的方法,因为监听的地址是本地回环,所以需要将其反向代理出来。我选择使用Cloudflare提供的Argo通道,顺带给Alist绑定自己的域名。
Cloudflared官方仓库没有提供FreeBSD平台的客户端,但是和Alist一样的,我找到了Unofficial的FreeBSD版本的构筑,接下来使用它打隧道:
新建并进入Cloudflared的工作目录:

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

下载Cloudflared:

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的面板中,找到Networks分类下的Tunnels功能,点击Create a tunnel,选择Cloudflared,Next,随便取个名字,Next,往下翻,可以看到Run the following command,然后给了一串命令,将其复制出来,大概是这样的:
cloudflared.exe service install eyJhIjoiNzh...............V5TWpBeSJ9
前面的不需要管,只需要保留最后ey开头的那串很长的TOKEN,去SSH中测试运行Cloudflared:
./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:

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

然后使用pm2启动Cloudflared:
~/.npm-global/bin/pm2 start ./cloudflared -- tunnel --edge-ip-version auto --protocol http2 --heartbeat-interval 10s run --token eyJhIjoiNzh...............V5TWpBeSJ9
(记得把最后的那一串替换成你的TOKEN。)
再启动Alist:
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,进行编辑,把下面的代码块的内容都复制进去:

#!/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 所在的路径,并使用pm2管理运行它:

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

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

添加开机自启

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

Specify time选择After reboot,即为重启后运行。Form type选择Advanced,Command写:
/home/你的用户名/.npm-global/bin/pm2 resurrect
(记得把你的用户名改为你的用户名)
添加完之后,在SSH窗口保存pm2的当前任务列表快照:
~/.npm-global/bin/pm2 save
这样每次serv00不定时重启任务时,都能自动调用pm2读取保存的任务列表快照,恢复任务列表。

下面是saika的更多玩法

serv00的文档中有搭建网站的示例,示例就有WordPress文档中还详细介绍了Redis、Memcached、Imapsync、WP-CLI、Tomcat等服务的搭建方法

KodBox

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

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

安装KodBox:

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/举例。
上面的应用不需要占用端口。
下面的应用每一个都需要占用端口。

Vless

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

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文件,修改端口为刚刚放行的端口。
安装依赖:

npm install

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

~/.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可执行文件,但是我在Github上发现了一个使用Github Workflow自动构筑FreeBSD适用的Alist的仓库,使用这个仓库就可以很便利的在Serv00上部署Alist。
新建并进入Alist的工作目录:

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

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

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

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

./alist server

接着回到Panel中,找到MySQL选项卡,使用Add database功能新建一个数据库:
(密码要求含有大写字母、小写字母和数字三种字符,且长度必须超过6个字符。)
接下来进入File manager选项卡,进入~/domains/alist/data径,可以看到一个名为config.json的文件,右键点击,选择View/Edit > Source Editor,进行编辑:

修改CDN、database、scheme三个部分
CDN:https://jsd.onmicrosoft.cn/npm/alist-web@$version/dist/
(版本号的话自己指定,不指定有可能加载不出来页面)
database部分,type需要改成mysql,host填写你在注册邮件中看到的mysql的地址,port是默认的3306,用户名、密码、数据库名则按照你创建的情况进行填写。
scheme部分,修改adress为127.0.0.1本地回环,是为了避免被他人使用http://ip:port 的方式进行访问。至于自己怎么访问,本文后面的部分会进行介绍。http_port要改成自己前面放行的端口。
改完之后,点击save保存,接着回到SSH窗口中进行操作。
先启动一次,查看运行是否正常:

./alist server

运行正常,记得把管理员用户的密码记住。接着使用Ctrl+c停止运行。
你可以选择使用面板中的 Proxy 功能添加域名,或者 Cloudflared 隧道添加域名。

Synctv

因为用koyeb部署这个项目把我Koyeb账号封了所以没办法玩了,我想到了serv00于是通过仿照alist-freebsd的仓库的workflow进行构筑的
首先放行一个端口,然后创建并进入 synctv 的工作目录:

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

下载可执行文件:

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

新建启动脚本:

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

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

#!/bin/sh

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

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

chmod +x synctv

测试运行:

./start.sh

确定运行没有问题后,按 Ctrl+c即可停止运行。
使用pm2启动并管理:

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

One-api

源仓库没有提供freebsd平台的二进制文件,需要自己构建,但是很简单。先在面板中放行一个端口。
新建并进入one-api的工作目录:

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

进行构建:

# 下载源代码
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

新建启动脚本:

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

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

#!/bin/sh

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

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

./start.sh

确定运行没有问题后,按 Ctrl+c即可停止运行。
使用pm2启动并管理:

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

Uptime-Kuma

受限于FreeBSD的平台限制,1.23版本内置了PlayWright,无法运行,所以只能安装1.22版本。切记先去Panel中放行TCP端口。
下载1.22.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

设置生产模式:

npm ci --production

下载dist文件:

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

安装补充依赖:

npm install

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

node server/server.js --port=PORT

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

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

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

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

Bingo

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

alias node='node20'
alias npm='npm20'

应用更改:

source ~/.bashrc

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

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

进入源码所在目录:

cd bingo

安装依赖:

npm20 install

下载build好的 .next资源:

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

添加环境变量文件:

cp .env.example .env

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

npm20 run start

确定运行没有问题后,按 Ctrl+c即可停止运行。
使用pm2启动并管理:

~/.npm-global/bin/pm2 start npm --name bingo -- run start

Refresh-gpt-chat

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

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

下载refresh-gpt-chat:

# 本文成文时,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 启动:

~/.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_token 做 API_Keys ,使用 ChatGPT 了。

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

{
  "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

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

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

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

下载 fat jar 包:

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"

测试运行

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

测试没有问题之后,按 Ctrl+c即可停止运行。
使用 pm2 启动并管理:

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

始皇的公车:ghu_ThisIsARealFreeCopilotKeyByCoCopilot
免费公车白嫖请求示例:

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的工作路径:

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

下载 fat jar 包:

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

测试运行:

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

记得把端口改成自己的。测试没有问题之后,按 Ctrl+c即可停止运行。
使用pm2启动并管理:

~/.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

慎重部署,内存会超100%,不知道会不会封号
halo自从升级2.0版本开始,很长时间内都没有提供构筑好的jar包,甚至于在GitHub上都出现了第三方的,使用GitHub workflow自动化构筑jar包的仓库但是,自从2.12.0-alpha.1版本开始,halo的官方仓库又开始提供构筑好的jar包了.
先放行一个端口,并新建一个目录用于存放halo的相关文件,进入目录后执行下述操作。
下载jar包:

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

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

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运行脚本,其全部内容为:

#!/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

测试运行:

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

确定运行没有问题后,按 Ctrl+c即可停止运行。
使用pm2管理运行:

chmod +x run.sh && ~/.npm-global/bin/pm2 start ./run.sh --name halo

自动续期

可以用青龙面板的自动任务定期登录SSH解决。在青龙面板中添加Linux依赖 sshpass,然后添加定时任务:名称随意,命令/脚本 sshpass -p '密码' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt 用户名@地址 "exit",定时规则1 1 1 * *。这样就会每个月自动ssh连接一次,实现续期。
你还可以使用自身SSH自身的方式进行自动续期,操作如下:

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

#!/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 所在的路径:

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

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

chmod +x auto-renew.sh

使用pm2启动:

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

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

自动启动

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

Specify time选择After reboot,即为重启后运行。Form type选择Advanced,Command写:
/home/你的用户名/.npm-global/bin/pm2 resurrect
(记得把你的用户名改为你的用户名)
添加完之后,在SSH窗口保存pm2的当前任务列表快照:
~/.npm-global/bin/pm2 save
这样每次serv00不定时重启任务时,都能自动调用pm2读取保存的任务列表快照,恢复任务列表。