一、安装cf cli平台
cf平台的安装包地址是这个,这里我们直接对应vps架构选择 cf8-cli-installer_8.14.1_x86-64.deb 这个安装包,然后直接安装在vps上,命令如下amd:(注意在root权限下运行)
wget https://github.com/cloudfoundry/cli/releases/download/v8.14.1/cf8-cli-installer_8.14.1_x86-64.deb && apt install ./cf8-cli-installer_8.14.1_x86-64.deb

arm:
wget https://github.com/cloudfoundry/cli/releases/download/v8.14.1/cf8-cli-installer_8.14.1_arm64.deb && apt install ./cf8-cli-installer_8.14.1_arm64.deb

二、搭建节点
1、此处默认大家都已经申请了SAP的试用账号,登陆:(以新加坡平台以例)
cf login -a https://api.cf.ap21.hana.ondemand.com

2、push镜像,把 XXXX 换成你的应用名(下同)。
cf push XXXX --docker-image ghcr.io/hide3110/sap-argo:latest -m 1024M --health-check-type port

其实此时查看日志 cf logs XXXX –recent 就可以得到三个临时隧道的节点了,可以检查下节点是否通畅。

3、设置环境变量。设置镜像内对应的变量,注意空格。下面示例中的变量值是我乱填的,你们自行更改。示例中参数为哪吒v0的,如果不用哪吒删掉对应的三行即可。ARGO隧道部分自行在cloudflare中设置,端口为8001。
cf set-env XXXX UUID 306884b0-4e8e-4ed1-ac9b-8607eee8cca3
cf set-env XXXX NEZHA_SERVER nz.yeah.nom.za
cf set-env XXXX NEZHA_PORT 443
cf set-env XXXX NEZHA_KEY z4UXbutcLReAOyoVty
cf set-env XXXX ARGO_DOMAIN sapsg.yeah.nyc.mn
cf set-env XXXX ARGO_AUTH eyJhIjoiNWQ3YzdlN2I2NGFmNTUwYzNlOSI0ZmU3ZTg1Y2U4ZDAiLCJ0IjoiMzIyMjE5FTgtNDZhYi00OWVlLTg3MTItYmY3MWZkMDllOTRhIiwicyI6Ik56VmpNR016WkdVdE1qVTVZUzAwTWpGbUxUZzNZamd0D1dJME9XUTVNamcxWldSayJ9

注:上面代码全部粘贴至vps回车即可。如果使用哪吒v1,参数变量如下:
cf set-env XXXX NEZHA_SERVER nz.yeah.nom.za:8008
cf set-env XXXX NEZHA_KEY 填写哪吒v1的NZ_CLIENT_SECRET

#使用哪吒v1,启用不同的容器app时需修改UUID,否则会覆盖。NEZHA_PORT那项不用设置。
4、保存变量并重启。
cf restage XXXX

5、查看日志,获得订阅协议。
cf logs XXXX --recent

6、至此,你将得到vmess、vless、trjon三个节点,也可以不用查看日志,按下面填定协议内容即可。
7、cf 其它命令介绍,非必要操作!!!
cf delete xxxx -r #删除指定容器

三、保活脚本
另附上vps保活脚本,大家应该都有自己的保话方法,仅供参考。此vps保活拉起速度快非常省心,可观察探针状态。
#!/bin/bash

# --- 配置变量 (全部使用绝对路径) ---
# Cloud Foundry CLI 可执行文件路径
readonly CF_EXECUTABLE="/usr/bin/cf"
# 日志文件路径
readonly LOG_FILE="/root/cf_start.log"

# --- 身份认证信息 ---
readonly CF_API="https://api.cf.ap21.hana.ondemand.com"
readonly CF_USER="[email protected]"
readonly CF_PASSWORD='xxxx'
readonly CF_ORG="xxxxtrial"
readonly CF_SPACE="dev"

# --- 应用列表 ---
# 在这里添加所有需要启动的应用名称,可以同时拉起多个。
readonly CF_APPS=("xxx1" "xxx2")

# --- 函数定义 ---

# 日志记录函数
# 参数1: 日志信息
log() {
# 将时间和日志信息追加到日志文件
echo "[$(date '+%Y-%m-%d %H:%M:%S')] - $1" >> "${LOG_FILE}"
}

# 主函数
main() {
log "----------------------------------------------------"
log "任务开始"

# 1. 执行非交互式登录
log "正在登录 Cloud Foundry..."
if ! "${CF_EXECUTABLE}" login -a "${CF_API}" -u "${CF_USER}" -p "${CF_PASSWORD}" -o "${CF_ORG}" -s "${CF_SPACE}" >> "${LOG_FILE}" 2>&1; then
log "错误:Cloud Foundry 登录失败。请检查凭证和网络连接。"
log "任务异常结束"
log "----------------------------------------------------"
# 登录失败,直接退出
exit 1
fi

log "登录成功。"

# 2. 遍历并启动所有应用
# 使用 for 循环处理 CF_APPS 数组中的每一个应用
for app_name in "${CF_APPS[@]}"; do
log "正在尝试启动应用: ${app_name}..."

# 3. 执行启动命令
if "${CF_EXECUTABLE}" start "${app_name}" >> "${LOG_FILE}" 2>&1; then
log "应用 ${app_name} 启动命令已成功执行。"
else
log "错误:应用 ${app_name} 启动失败。请查看上面的日志获取详细信息。"
# 可根据需求决定是否在一个应用启动失败后继续尝试下一个
fi
done

log "所有应用启动任务完成。"
log "任务结束"
log "----------------------------------------------------"
}

# --- 脚本执行入口 ---
main

在vps上新建一个cf_start.sh文件,将上面内容粘贴进去后chomd +x赋权,新建个crontab计划任务即可使用!
 
 
Back to Top