该教程整合了以下几位大佬的教程
步骤1.申请端口
- 登录你帐号对应的 panel 面板
- 面板左侧 >
Port reservation
> 选择Add port
标签栏 > 勾选Random
>+Add
选择 Port list
标签栏 > 记录你分配到的TCP端口号
步骤2.开启管理执行权限
- 登录你帐号对应的 panel 面板
- 面板左侧 > 选择
Run your own applications
标签栏 >Enabled
; 使其Status变成✅Enabled
即可
步骤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 守护进程的计划任务。
步骤4:创建域名
- 登录Serv00面板,删除注册后自带的网站
- 点击Delete(purge website files)清空网站文件
- 创建新网站,域名填写你想用的域名,我这里使用的是注册时自带的,网站类型设置为Node.js,程序版本选择NOde.js v22.4.1(你的版本可能更高,选择最新的即可)
步骤5:配置nodejs启动Sock5代理进程
- SSH登录Serv00,输入
cd domains/你的网站域名/public_nodejs/
- 由于Serv00的Apache设置的是静态优先,因而此处public文件夹下不能有index.html,否则会显示静态页面,而不会执行nodejs程序,我选择的是直接将public改名为static,执行
mv public static
- 执行
npm22 install express
在
/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目录下应该和我一样
- 自此部署完成,用浏览器输入一下你创建的网站域名,正常就能看到默认的页面
页面能够正常显示,返回SSH终端,输入
ps aux
可以看到新开了nodejs进程,稍带片刻,就能看到你的代理进程成功启动了- Nodejs程序运行日志可以通过面板网站的log中查看,也可以在SSH终端里查看,日志文件的完整路径为/home/你的用户名/domains/你的网站域名/logs/error.log
SOCKS代理进程由Nodejs进程负责保活,10秒钟检查一次,因此后续只需要关注Nodejs进程的保活就可以了,Nodejs
进程的保活可以手动访问网站进行,也可以通过自动化方案监控网站进行
步骤六:配置upptime自动化网页监控网站
upptime自动化网页监控网站不需要有服务器,只需要有Github账号就能够进行部署
- 访问 Upptime 项目
点击 【Use this template】按钮
注意:这是个模版项目,所以不要像常见的项目那样,去直接点右上角的fork。
- 创建repo
- 输入 Repository name(比如upptime)
- 勾选 【Include all branches】
- 点击 【Create repository from temple】
- 配置upptime仓库
- 进入你刚才repo到自己账号下的项目
- 点右上角的 【Settings】
- 在左侧 【Code and automation】 下找到 【Pages】
- 将 【Branch】 设置为 【gh-pages】
- 点击 【Save】
给 Upptime-bot 设置 Repository Secret
因为这个项目是利用bot实现自动化提交,需要给予bot,commit和publish的权限,所以我们需要设定一个
Personal Access Token
- 点击网页右上角自己的头像,点 【Settings】
- 点击左侧最下方的【Developer settings】
- 点击左侧下方的【Personal access tokens】 ,点击左上角的 【Generate new token】
点击 【tokens (classic)】->【Generate new token】->【Generate new token (classic)】
- Note: upptime
- Select scopes:勾选【repo】和【workflow】(你直接勾workflow,repo就全勾上了)
- Expiration:选【No expiration】(无期限)
- 点击页面最下方的 【Generate token】
- 复制token,注意一定要在这里复制好,错过这个页面你就再也看不到token了
- 返回你repo的Upptime项目。点击 【Settings】,展开左侧的【Secrets】,点击【Actions 】 点击【 New repository secret】
- 给bot设定token
- Name: GH_PAT
- Value: 上边第5步里复制的 token
- 点击 【Add secret】
- 回到你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
一般情况下,在你修改.upptimerc.yml后,Actions就会自动开始运行。你会看到一个黄圈圈在转。运行成功会显示绿色的勾,运行失败会显示红色的叉。如果出现红叉,一般都是你修改yml文件时,什么地方写错了,比如少打了一个字母啊,空格漏了啊,代码对齐有问题,少写了什么必须设置的参数,什么参数设置错误了。请仔细检查。
- 访问监控状态页面
- 进入你刚才repo到自己账号下的项目
- 点右上角的 【Settings】
- 在左侧 【Code and automation】 下找到 【Pages】
Your site is live at XXXXXX
这里就是你的监控状态页面啦- Active Incidents 显示目前的异常事件,Live Status 显示目前监控状态,Past Incidents 显示过去的异常事件
实际上就是在你的repo仓库页面
汉化配置页,把如下内容粘贴到.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: "🟧 部分停机"
至此,全部教程结束,再次感谢几位大佬!