Clawcloud Run 不让玩了,想起手里还有个吃灰的 Serv00,正好拿来废物利用一下。
参考了 Linux.do 论坛里佬的教程(https://linux.do/t/topic/499281,顺便把步骤重新精简梳理了一遍,方便以后抄作业。
一、Serv00 面板配置
- 添加一个端口:
登录 Serv00 面板,找到 Port reservation → Add port。类型选 TCP,系统会随机分配一个端口(比如12345),先记下来。 - 开权限:
去 Additional services,确保 Run your own applications 处于 Enabled 状态(不然不给运行自己的程序)。 - 搞定域名:
去 WWW Websites → Add new website。
- Domain:填你自己的域名或者 Serv00 自带的免费二级域名。
- Domain type:一定要选 Proxy。
- Proxy port:填刚刚申请到的端口(比如
12345)。
二、连上 SSH 下载文件
连上 Serv00 的 SSH 终端,直接无脑复制执行下面这串命令:
# 创建并进入专属文件夹
cd ~ && mkdir -p sub-store && cd sub-store
# 下载最新的后端 Bundle 文件
wget https://github.com/sub-store-org/Sub-Store/releases/latest/download/sub-store.bundle.js
# 下载最新的前端文件并解压
wget https://github.com/sub-store-org/Sub-Store-Front-End/releases/latest/download/dist.zip
unzip dist.zip && rm dist.zip
完事之后敲个 pwd,把当前文件夹的绝对路径复制存一下(一般长这样:/usr/home/你的用户名/sub-store)。
三、配置 .env 环境变量(前后端融合)
为了省心,这里直接用最新的前后端融合配置。在当前目录下新建一个配置文件:
nano .env
把下面这段配置贴进去,记得把注释里提示的地方改成你自己的:
# 开启融合模式,前后端共用一个端口
SUB_STORE_BACKEND_MERGE=true
# 接口安全路径(相当于你的专属 Token,随便编一个复杂的英文,比如 /my_secret_666)
SUB_STORE_FRONTEND_BACKEND_PATH="/linuxdo"
# 后端监听端口(改成你前面在面板申请到的端口)
SUB_STORE_BACKEND_API_PORT=12345
SUB_STORE_BACKEND_API_HOST=""
# 前端文件的绝对路径(改成你上面 pwd 查出来的实际路径)
SUB_STORE_FRONTEND_PATH="/usr/home/你的用户名/sub-store/dist"
小提示:用 nano 改完后,按
Ctrl + O再回车保存,最后按Ctrl + X退出。
四、测试与首次访问
- 先手动跑一下试试:
node sub-store.bundle.js
没报错的话说明服务正常起来了。
2. **怎么访问?**
因为加了 Path 路径鉴权,直接输域名是打不开的。第一次进去必须用特殊格式的 URL 来激活:
* **格式**:`https://你的域名?api=https://你的域名/你的Path`
* **例子**:`[https://sub.serv00.net?api=https://sub.serv00.net/linuxdo](https://sub.serv00.net?api=https://sub.serv00.net/linuxdo)`
> **原理简述**:这样带参数访问一次后,前端会自动把这个安全路径记录到浏览器的 LocalStorage 里。以后在这台电脑上直接输入 `https://你的域名` 就能正常用了,而外面那些瞎扫描的黑客只会看到报错,安全感拉满。
测试没问题的话,在终端按 `Ctrl + C` 把程序先停掉,准备搞后台保活。
### 五、后台运行与自动保活
Serv00 经常会不定时杀进程或者重启服务器,所以必须挂个保活脚本。
1. **写个启动脚本**:
```bash
nano start.sh
把下面的保活代码贴进去:
#!/bin/sh
BASE_PATH=$(cd "$(dirname "$0")"; pwd)
APP_NAME="sub-store"
SCRIPT_PATH="$BASE_PATH/sub-store.bundle.js"
# 检查进程是否在运行
PID=$(pgrep -f "${SCRIPT_PATH}" | grep -v $$)
if [ -z "$PID" ]; then
echo "Starting ${APP_NAME}..."
cd $BASE_PATH
# 用 nohup 挂在后台运行
nohup node $SCRIPT_PATH > ./$APP_NAME.log 2>&1 &
echo "${APP_NAME} started."
else
echo "${APP_NAME} is already running with PID: $PID"
fi
给脚本加一下执行权限:
chmod +x start.sh
- 白嫖 Serv00 的定时任务(Cron Job):
去 Serv00 的 Web 面板:
- 找到 Cron jobs → Add cron job。
- Specify time:建议选每 10 分钟运行一次(自定义填
*/10 * * * *),或者图省事直接选每小时(0 * * * *)。 - Command:填你脚本的绝对路径,比如:
/usr/home/你的用户名/sub-store/start.sh
搞定点 Add。以后就算 Serv00 重启或者抽风杀进程,脚本也会自动把 Sub-Store 重新拉起来,稳得很。
3 个帖子 - 3 位参与者