没公网 IP 还会关机?把 Muse 虚拟机变成自己的 VPS

1 天前
 limhiaoing

最近体验了下 Meta 的 Muse ,它会给每个用户分配一台独立的 Linux 虚拟机,让 Agent 在里面写代码、跑脚本和处理任务。

机器给的配置还行,系统是 Ubuntu 24.04 ( 2 核 CPU 、8G 内存、100G 磁盘),不过有两个限制:

  1. 没有公网 IP:外部无法直接访问;
  2. 闲置会自动关机:任务结束或空闲一段时间后,虚拟机就会被回收。

不过好在系统里的 /home/hatch/workspace 目录是持久化的。稍微折腾一下,不仅能把它打造成一台可以随时从公网访问的 Linux VPS ,还能顺手借用其高质量出口代理上网。


怎么把它变成可用的公网 VPS ?

思路其实很简单:放持久化目录 + 内网穿透 + 定时保活。

  1. 环境持久化:因为虚拟机重启后根目录会被重置,所以所有的工具、脚本和数据一定要放在 /home/hatch/workspace 目录下,确保机器即便被回收重建,数据依然保留。

  2. 内网穿透:机器虽然没有公网 IP ,但可以主动访问外网。利用轻量级的 rathole 隧道,把虚拟机内需要访问的端口(比如 Web 服务端口)映射到你自己的公网中继服务器上。这里有个特殊细节:由于 Muse 虚拟机的出站流量必须经过平台自带的网关代理,而 rathole 本身不支持配置上级 HTTP 代理,所以需要配合 socat 在本地搭个代理桥连上中继机。

  3. 定时保活:机器闲置被回收后,内存里的后台进程肯定不复存在。解决方案是利用 Muse 的定时任务能力,设定一个周期任务(这里选择每 5 分钟触发一次)。任务触发后会唤醒 Agent 执行任务,而 Agent 在执行任务时就会自动拉起底层的虚拟机,进而运行持久化目录下的检测与启动脚本,把穿透和控制台进程恢复并重连中继。

打通网络之后,怎么日常使用也是个问题:机器里并没有现成的 SSH 服务。

所以我顺手写了一个单文件无依赖的 Web 控制台 muse-console,直接把它变成一台在网页里开箱即用的 VPS:

至于部署也很简单:仓库里已经写好了给 Agent 看的部署文档,直接把 GitHub 仓库链接丢给 Muse,它就会在聊天框里向你询问必要的中继机信息,然后自动在虚拟机里把下载、配置、隧道和定时保活整套搞定,不需要自己手动敲命令。


拿来做 HTTP 代理上网

打通公网访问后,能做的事情其实很多,比如拿来做 HTTP 代理上网。

前面提到的平台出站网关,系统默认直接配在环境变量里:

$ echo $http_proxy
http://hatch-runtime:2a8ce39f1c5d488dab8d1d3f5d1a61d6@hatch-egress-proxy:3128

Meta 这么设计主要是出于沙盒安全考量:虚拟机被隔离在私有沙盒网络中,一方面彻底隔绝了对 Meta 自身内网服务的未授权访问(杜绝内网横向探测与 SSRF ),另一方面所有外网请求都必须收敛到这层 Egress Proxy ,方便平台在边界做域名白名单过滤、审计和风控拦截。

实测这个出口 IP 的信誉度和纯净度很高。很多平时对普通机房 IP 拦截很死、代理检测严格的美国服务,走这个出口基本都能顺利通过。

如何在本地用上这个代理?

hatch-egress-proxy:3128 只在 Muse 的私有沙盒网络里可达,外部无法直连。如果想在本地电脑或者外部服务器上借用这个出口,只需要在 Muse 虚拟机里做一次中继,再通过隧道拉出来。

这里可以用我在古法编程时代手搓的轻量 TCP 中继工具:tcp-relay(支持隧道加密模式)。

操作步骤:

  1. 服务端( Muse 虚拟机):启动 tcp-relay 的 server 模式,接收并解密外部隧道流量,转发到本地私网的 hatch-egress-proxy:3128。
  2. 打通隧道:通过 rathole 将虚拟机内 tcp-relay 监听的端口映射到公网中继机上。
  3. 客户端(本地设备):本地启动 tcp-relay 的 client 模式,连接中继机映射端口并开启加密传输,本地监听一个 HTTP 代理端口。
  4. 客户端配置:将系统或浏览器代理指向本地监听端口,并带上官方自带的认证凭据:
    • 用户名:hatch-runtime
    • 密码:<password>

这样全程在公网上传输的都是加密流量,保护了认证凭据与数据安全;最终由 hatch-egress-proxy 出口访问目标网站,轻松绕过绝大部分服务对常见机房 IP 和商业代理的检测。


相关项目

仅用于个人技术研究与合规访问。


最后附上我的 Muse 邀请码,刚注册的新用户在设置里兑换可以额外获得 10 亿 Token 额度(需在注册 48 小时内兑换),有需要的自取:

1722 次点击
所在节点    分享创造
13 条回复
RheatiN
1 天前
我只能说,真有你的
westfall
23 小时 17 分钟前
真是牛逼!👍

以下是我的邀请码:
05FAH8
74S3E5
Tory12138
23 小时 12 分钟前
谷歌那个云什么的也是,半分钟不用就收回了,感觉也可以这么玩
laminux29
22 小时 59 分钟前
现在明白为什么 AI 公司喜欢封中国人的账号了吧,OP 发这种帖子实际上是害了全体中国人。
tearsinchina
21 小时 35 分钟前
6SQLMV
crackself
21 小时 25 分钟前
这都不止滥用了,我愿称之赛博老鼠屎
isbase
20 小时 52 分钟前
绝了
jemyzhang
20 小时 48 分钟前
别折腾了正常使用吧,已经有人被封了
EyebrowsWhite
20 小时 31 分钟前
第一,并非高质量出口,第二,用的是 systemd-nspawn 的隔离技术,能做的事情有限,第三,这种明显违反 TOS 的事情自己偷摸搞就算了,还大肆宣扬,实在不应该
KoedaNagi
20 小时 29 分钟前
这不是薅羊毛,这叫老鼠屎行为
E1n
11 小时 55 分钟前
不怪人说赛博蝗虫
PhDLuffy
10 小时 49 分钟前
赛博老鼠屎,就这么点小聪明全用在芝麻粒上
iintothewind
10 小时 34 分钟前
我觉得这样的用法有点太消耗服务器资源了.

薅羊毛还是文明的薅, 羊毛才能薅的久啊.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1245998

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX