该教程整合了以下几位大佬的教程

  1. CMLiussss:Serv00/CT8:从注册到部署SOCKS5代理,一步到位自动续期保活教程,SOCKS5可用于edgetunnel解锁ChatGPT
  2. hkfires : Serv00服务器优雅的保活方案
  3. 秋风于渭水 : 用GitHub Actions 搭建网页状态监控系统 Upptime

步骤1.申请端口

  1. 登录你帐号对应的 panel 面板
  2. 面板左侧 > Port reservation > 选择 Add port 标签栏 > 勾选 Random > +Add

PixPin_2025-01-26_16-32-12.webp

选择 Port list 标签栏 > 记录你分配到的TCP端口号

PixPin_2025-01-26_21-24-46.webp

步骤2.开启管理执行权限

  1. 登录你帐号对应的 panel 面板
  2. 面板左侧 > 选择 Run your own applications 标签栏 > Enabled ; 使其Status变成 ✅Enabled即可

PixPin_2025-01-26_16-35-39.webp

步骤3.执行一键安装Sock5节点脚本

使用ssh连接serv00,执行以下脚本

bash <(curl -s https://raw.githubusercontent.com/cmliu/socks5-for-serv00/main/install-socks5.sh)

注意:在输入socks5端口号时,输入申请端口时记录的TCP端口号即可,其余参数可以自行输入任意内容;(如果不清楚nezha-agent等内容,照着填就行),由于本教程没有用到crontab,可以不添加 crontab 守护进程的计划任务。

PixPin_2025-01-26_16-38-07.webp

步骤4:创建域名

  • 登录Serv00面板,删除注册后自带的网站

PixPin_2025-01-26_16-46-38.webp

  • 点击Delete(purge website files)清空网站文件

PixPin_2025-01-26_16-49-23.webp

  • 创建新网站,域名填写你想用的域名,我这里使用的是注册时自带的,网站类型设置为Node.js,程序版本选择NOde.js v22.4.1(你的版本可能更高,选择最新的即可)
    PixPin_2025-01-26_16-52-12.webp

步骤5:配置nodejs启动Sock5代理进程

  • SSH登录Serv00,输入cd domains/你的网站域名/public_nodejs/
  • 由于Serv00的Apache设置的是静态优先,因而此处public文件夹下不能有index.html,否则会显示静态页面,而不会执行nodejs程序,我选择的是直接将public改名为static,执行mv public static
  • 执行npm22 install express

PixPin_2025-01-26_16-53-21.webp

  • /home/你的用户名/domains/你的网站域名/public_nodejs目录下创建以下app.js文件并修改app.js的第7行,填写你自己的Serv00用户名.

    const express = require("express");
    const path = require("path");
    const exec = require("child_process").exec;
    const app = express();
    const port = 3000;
    
    const user = "Serv00登录用户名"; //此处修改为Serv00的用户名
    const pName = "s5";
    
    app.use(express.static(path.join(__dirname, 'static')));
    
    function keepWebAlive() {
      const currentDate = new Date();
      const formattedDate = currentDate.toLocaleDateString();
      const formattedTime = currentDate.toLocaleTimeString();
    
      exec(`pgrep -laf ${pName}`, (err, stdout) => {
        const Process = `/home/${user}/.${pName}/${pName} -c /home/${user}/.${pName}/config.json`;
    
        if (stdout.includes(Process)) {
          console.log(`${formattedDate}, ${formattedTime}: Web Running`);
        } else {
          exec(`nohup ${Process} >/dev/null 2>&1 &`, (err) => {
            if (err) {
              console.log(`${formattedDate}, ${formattedTime}: Keep alive error: ${err}`);
            } else {
              console.log(`${formattedDate}, ${formattedTime}: Keep alive success!`);
            }
          });
        }
      });
    }
    
    setInterval(keepWebAlive, 10 * 1000);
    
    app.listen(port, () => {
      console.log(`Server is listening on port ${port}!`);
    });

    修改完成后public_nodejs目录下应该和我一样

PixPin_2025-01-26_16-56-22.webp

  • 自此部署完成,用浏览器输入一下你创建的网站域名,正常就能看到默认的页面

PixPin_2025-01-26_16-59-28.webp

  • 页面能够正常显示,返回SSH终端,输入ps aux可以看到新开了nodejs进程,稍带片刻,就能看到你的代理进程成功启动了

    PixPin_2025-01-26_17-00-17.webp

  • Nodejs程序运行日志可以通过面板网站的log中查看,也可以在SSH终端里查看,日志文件的完整路径为/home/你的用户名/domains/你的网站域名/logs/error.log
SOCKS代理进程由Nodejs进程负责保活,10秒钟检查一次,因此后续只需要关注Nodejs进程的保活就可以了,Nodejs进程的保活可以手动访问网站进行,也可以通过自动化方案监控网站进行

步骤六:配置upptime自动化网页监控网站

upptime自动化网页监控网站不需要有服务器,只需要有Github账号就能够进行部署
  1. 访问 Upptime 项目
  2. 点击 【Use this template】按钮
    PixPin_2025-01-26_17-10-06.webp

    注意:这是个模版项目,所以不要像常见的项目那样,去直接点右上角的fork。
  3. 创建repo

PixPin_2025-01-26_17-11-30.webp

  • 输入 Repository name(比如upptime)
  • 勾选 【Include all branches】
  • 点击 【Create repository from temple】
  1. 配置upptime仓库

PixPin_2025-01-26_17-13-29.webp

  • 进入你刚才repo到自己账号下的项目
  • 点右上角的 【Settings】
  • 在左侧 【Code and automation】 下找到 【Pages】
  • 将 【Branch】 设置为 【gh-pages】
  • 点击 【Save】
  1. 给 Upptime-bot 设置 Repository Secret

    因为这个项目是利用bot实现自动化提交,需要给予bot,commit和publish的权限,所以我们需要设定一个Personal Access Token
    1. 点击网页右上角自己的头像,点 【Settings】
    2. 点击左侧最下方的【Developer settings】
    3. 点击左侧下方的【Personal access tokens】 ,点击左上角的 【Generate new token】
    4. 点击 【tokens (classic)】->【Generate new token】->【Generate new token (classic)】

      1. Note: upptime
      2. Select scopes:勾选【repo】和【workflow】(你直接勾workflow,repo就全勾上了)
      3. Expiration:选【No expiration】(无期限)
      4. 点击页面最下方的 【Generate token】

    PixPin_2025-01-26_17-19-05.webp

  2. 复制token,注意一定要在这里复制好,错过这个页面你就再也看不到token了
  3. 返回你repo的Upptime项目。点击 【Settings】,展开左侧的【Secrets】,点击【Actions 】 点击【 New repository secret】

PixPin_2025-01-26_17-20-24.webp

  1. 给bot设定token
  • Name: GH_PAT
  • Value: 上边第5步里复制的 token
  • 点击 【Add secret】
  1. 回到你repo的upptime项目,点击【Code】,点击 【.upptimerc.yml】,修改.upptimerc.yml的内容
  • 按照以下模版修改文件

    # 【】以及其中的内容,为说明文字,需要替换为你自己的设置。
    # 『』以及其中的内容,为示例参数,需要替换为你自己的设置。
    
    #你的GitHub username 
    owner: 【你的 GitHub username】『tjsky』
    
    #你的GitHub repo name 
    repo: 【你的 repo name】『upptime』
    
    
    #下边写的时候一定注意代码的缩进让,“-” 都在同一个竖线上,“name”和“url”也都在同一个竖线上,层次不齐的代码高几率直接报错
    sites:
      - name: 【要监控的第一个网页的名称】『Google』
        url: 【要监控的第一个网页的域名】『https://www.google.com』
      - name: 【要监控的第二个网页的名称】『Wikipedia』
        url: 【要监控的而网页的域名】『https://en.wikipedia.org』
    
    
    
    # A-如果你的监控控制台页面,打算使用github的默认域名,则使用如下设置。和下边B设置互斥,请二选一
    status-website: 
      baseUrl: 【/你的 repo name】『/upptime』
    
    # B-如果你的监控控制台页面,打算使用自己所有的域名,则使用如下设置,和上边A设置互斥,请二选一
    status-website: 
      cname: 【你的域名】『upptime.tjsky.net』
    
    #自定义状态页面的navbar名称与链接
      logoUrl: 【控制台网页logo地址】『https://raw.githubusercontent.com/upptime/upptime.js.org/master/static/img/icon.svg』
      name:【控制台网页名字】 『Upptime』
      introTitle: 【网页标题】『这里可以随便写的啦,比如写:这是使用upptime构建的开源网页状态监控页』
      introMessage: 【网页简介】『这里可以随便写的啦』
      navbar:
        - title: Status
          href: /
        - title: GitHub
          href: https://github.com/OWNER/REPO
    
    • 例如:

      # Change these first
      owner: makabaka # Your GitHub organization or username, where this repository lives
      repo: serv00-keep # The name of this repository
      
      sites:
        - name: serv00
          url: https://abc.serv00.net
        - name: serv00
          url: https://edf.serv00.net
      
      status-website:
        # Add your custom domain name, or remove the `cname` line if you don't have a domain
        # Uncomment the `baseUrl` line if you don't have a custom domain and add your repo name there
        # cname: demo.upptime.js.org
        baseUrl: /serv00-keep
      
        logoUrl: https://raw.githubusercontent.com/upptime/upptime.js.org/master/static/img/icon.svg
        name: Upptime
        introTitle: serv00-keep
        introMessage: serv00 保活
        navbar:
          - title: Status
            href: /
          - title: GitHub
            href: https://github.com/$OWNER/$REPO
    • 修改完成后在点击页面最下的【Commit changes】按钮,提交修改。
    • 启动GitHub Actions

    PixPin_2025-01-26_17-27-09.webp

    一般情况下,在你修改.upptimerc.yml后,Actions就会自动开始运行。你会看到一个黄圈圈在转。运行成功会显示绿色的勾,运行失败会显示红色的叉。如果出现红叉,一般都是你修改yml文件时,什么地方写错了,比如少打了一个字母啊,空格漏了啊,代码对齐有问题,少写了什么必须设置的参数,什么参数设置错误了。请仔细检查。
    1. 访问监控状态页面

    PixPin_2025-01-26_17-30-10.webp

    1. 进入你刚才repo到自己账号下的项目
    2. 点右上角的 【Settings】
    3. 在左侧 【Code and automation】 下找到 【Pages】
    4. Your site is live at XXXXXX这里就是你的监控状态页面啦
    5. Active Incidents 显示目前的异常事件,Live Status 显示目前监控状态,Past Incidents 显示过去的异常事件
    实际上就是在你的repo仓库页面

    PixPin_2025-01-26_17-31-14.webp

    1. 汉化配置页,把如下内容粘贴到.upptimerc.yml的最后

      i18n:
        activeIncidents: 活动事件
        allSystemsOperational: 所有系统都可以正常运行
        incidentReport: "事件 #NUMBER 报告 →"
        activeIncidentSummary: 在DATE 打开,有 POSTS 个帖子
        incidentTitle: 事件NUMBER 的详细信息
        incidentDetails: 事件详细信息
        incidentFixed: 已修复
        incidentOngoing: 正在进行
        incidentOpenedAt: 开始于
        incidentClosedAt: 结束于
        incidentSubscribe: 订阅更新
        incidentViewOnGitHub: 在 GitHub 上查看
        incidentCommentSummary: 由 AUTHOR 在DATE 发布
        incidentBack: ← 返回所有事件
        pastIncidents: 过去的事件
        pastIncidentsResolved: POSTS 个问题在MINUTES 分钟内得到解决
        liveStatus: 实时状态
        overallUptime: "总体正常运行时间: UPTIME"
        overallUptimeTitle: 总体正常运行时间
        averageResponseTime: "平均响应时间:TIMEms"
        averageResponseTimeTitle: 平均响应时间
        sevelDayResponseTime: 7 天响应时间
        responseTimeMs: 响应时间(毫秒)
        ms: 毫秒
        loading: 加载中
        navGitHub: GitHub
        footer: gd1214b保留所有权利。 Copyright © 2021 gd1214b. All Rights Reserved.
        rateLimitExceededTitle: 超出速率限制
        rateLimitExceededIntro: 您已超过一小时内可以执行的请求数,因此您必须等待才能再次访问此网站。或者,您可以添加 GitHub 个人访问令牌以继续使用本网站。
        rateLimitExceededWhatDoesErrorMean: 这个错误是什么意思?本网站使用 GitHub API 访问有关我们网站状态的实时数据。默认情况下,GitHub 允许每个 IP 地址每小时 60 个请求,您已经消耗了这些请求。
        rateLimitExceededErrorHowCanFix: 我该如何解决?
        rateLimitExceededErrorFix: 您可以再等一个小时,您的 IP 地址限制将恢复。或者,您可以添加您的 GitHub 个人访问令牌,这将为您提供每小时额外 5,000 个请求。
        rateLimitExceededGeneratePAT: 了解如何生成个人访问令牌
        rateLimitExceededHasSet: 您有一个个人访问令牌集。
        rateLimitExceededRemoveToken: 删除令牌
        rateLimitExceededGitHubPAT: GitHub 个人访问令牌
        rateLimitExceededCopyPastePAT: 复制并粘贴您的令牌
        rateLimitExceededSaveToken: 保存令牌
        errorTitle: 发生错误
        errorIntro: 尝试获取最新状态详细信息时出错。
        errorText: 您可以稍后再试。
        errorHome: 转到主页
        pastScheduledMaintenance: 过去的预定维护
        scheduledMaintenance: 定期维护
        scheduledMaintenanceSummaryStarted: 从 DATE 开始,持续DURATION 分钟
        scheduledMaintenanceSummaryStarts: 从 DATE 开始,持续DURATION 分钟
        startedAt: 开始在
        startsAt: 开始于
        duration: 持续时间
        durationMin: $DURATION 分钟
        incidentCompleted: 已完成
        incidentScheduled: 已预定
        url: "链接"
        status: "状态"
        history: "历史"
        responseTime: "响应时间"
        uptime: "正常运行时间"
        up: "🟩 正常运行"
        degraded: "🟨 运行缓慢"
        down: "🟥 停机"
        responseTimeGraphAlt: "响应时间图像"
        responseTimeDay: "24 小时响应时间"
        responseTimeWeek: "7 天正常运行时间"
        responseTimeMonth: "30天的正常运行时间"
        responseTimeYear: "1年的正常运行时间"
        uptimeDay: "24 小时正常运行时间"
        uptimeWeek: "7 天正常运行时间"
        uptimeMonth: "30天的正常运行时间"
        uptimeYear: "1年的正常运行时间"
        liveStatusHtmlComment: "<! -实时状态- >"
        degradedPerformance: "🟨 性能降低"
        completeOutage: "🟥 全部停机"
        partialOutage: "🟧 部分停机"

      至此,全部教程结束,再次感谢几位大佬!