前言
以前的panle freecloud搭建了一个Hy2,最近想植入komari探针,配置只有64MB 内存、64MB 硬盘,面板使用的是翼龙面板 (Pterodactyl)。
我的目标很简单:在上面跑一个 Hysteria2 (Hy2),顺便挂一个 Komari (哪吒分支) 的探针方便监控。
但现在有几个问题
- 面板限制: 启动命令被锁定为
/start.sh,无法修改。 - 资源极限: 64MB 内存稍有不慎就 OOM (内存溢出);64MB 硬盘装完系统和 Hy2 仅剩 20MB 左右。
经过一番折腾和排查,终于完美解决了所有问题。这篇文章记录一下如何在不破坏原生脚本的情况下,通过“移花接木”的方式实现双进程共存。
核心思路:替身攻击
既然面板锁定了启动命令,强制运行 /home/container/hysteria-linux-amd64,那我们就顺水推舟:
- 把真正的主程序改名为
hysteria-core。 - 新建一个同名的脚本文件
hysteria-linux-amd64。 - 在这个脚本里先启动探针,再拉起真正的主程序。
步骤一:资源大瘦身 (硬盘篇)
因为硬盘只有 64MB,Hy2 占用约 18MB,如果随便下载一个 40MB 的探针文件,硬盘直接爆满,服务器会当场死机。
避坑指南:
- ❌ 不要下载 那个 30MB-40MB 的
komari-linux-amd64(那是服务端面板!)。 - ✅ 一定要下载
komari-agent-linux-amd64,体积只有 7MB 左右。
下载后上传到面板文件根目录,并重命名为 agent。
步骤二:实施“移花接木”
- 在面板文件管理中,找到原本的
hysteria-linux-amd64文件。 - 将其重命名为
hysteria-core。 - 新建文件,文件名填写
hysteria-linux-amd64(注意不要加 .sh 后缀)。 - 写入以下脚本内容:
Bash
#!/bin/bash
# --- 1. 权限与内存优化 (关键!) ---
# 给程序赋予执行权限
chmod +x ./agent
chmod +x ./hysteria-core
# 🌟 64MB 内存救星:强制 Go 语言积极回收内存
# 如果不加这一行,Hy2 跑一会就会因为内存溢出被系统杀掉
export GOGC=20
# --- 2. 启动 Komari 探针 ---
# ⚠️ 注意:Komari 的参数与哪吒不同!
# -e: 面板地址 (必须带 https://)
# -t: 通信密钥
if [ -f "./agent" ]; then
echo "🔍 正在启动探针..."
# 下面这行换成你自己的面板地址和密钥
./agent -e https://你的面板域名.com -t 你的密钥 >/dev/null 2>&1 &
echo "✅ Komari 探针已启动"
else
echo "⚠️ 未找到 agent 文件"
fi
# --- 3. 移交控制权给主程序 ---
echo "🚀 正在启动 Hysteria 主程序..."
# 使用 exec 让 Hy2 接管当前进程,完美伪装
exec ./hysteria-core "$@"
重启服务器,最终效果
- Hysteria2: 正常连接,极简配置占用约 15MB。
- 探针: 正常上线,占用约 10MB。
- 剩余内存: 还有约 30MB 的富余,稳如老狗!
总结
在极端受限的环境下,GOGC=20 是 Go 语言程序的保命神技,而替换二进制文件为 Shell 脚本则是突破面板启动限制的通用解法。
折腾虽累,但看到绿色的 “Server Running” 和探针后台的上线状态,一切都值了。
0