Skip to content

Commit 0da290f

Browse files
baixiangerclaude
andcommitted
Restructure deployment guide: local, VPS, Docker, VPS+Docker, OpenClaw
Clear separation of all deployment scenarios: - Local desktop: bun add + snowball login - VPS: import token or install Chromium - Docker: install in container + import token - VPS+Docker: SSH → docker exec chain for install + token - OpenClaw: clawhub install (local) or skills add (Docker) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2911777 commit 0da290f

2 files changed

Lines changed: 138 additions & 57 deletions

File tree

README.md

Lines changed: 52 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ bun add -g snowball-cli
3535
# AI agent skill (Claude Code, Cursor, Windsurf, etc.)
3636
npx skills add https://github.com/baixianger/snowball-cli # or
3737
bunx skills add https://github.com/baixianger/snowball-cli
38+
39+
# OpenClaw agent
40+
clawhub install baixianger/snowball-cli
3841
```
3942

4043
## Quick start
@@ -228,62 +231,80 @@ Browser detection order: `CHROME_PATH` env → `--chrome` flag → Chrome → Ch
228231

229232
Auto headless: on Linux without `DISPLAY`, Chrome launches with `--headless` automatically.
230233

231-
## Headless / VPS deployment
234+
## Deployment guide
232235

233-
No Chrome needed — transfer your token from a local machine:
236+
### Local desktop (macOS / Windows / Linux)
234237

235238
```bash
236-
# One-liner: export from local, import on VPS
237-
ssh vps "snowball import $(snowball export)"
238-
239-
# Or step by step
240-
snowball export # prints base64 on local machine
241-
ssh vps "snowball import <base64>" # paste on VPS
239+
bun add -g snowball-cli
240+
snowball login # QR in terminal, simplest
242241
```
243242

244-
Alternatively, install Chromium on the VPS and login there:
243+
### VPS (headless server)
245244

246-
```bash
247-
# Debian/Ubuntu
248-
apt install -y chromium-browser
249-
snowball login # auto-detects headless, QR shows in SSH terminal
245+
**Option A: Import token from local (recommended, no browser needed)**
250246

251-
# Custom path
252-
snowball login --chrome /snap/bin/chromium
247+
```bash
248+
ssh vps "curl -fsSL https://bun.sh/install | bash && ~/.bun/bin/bun add -g snowball-cli"
249+
ssh vps "~/.bun/bin/snowball import $(snowball export)"
253250
```
254251

255-
## Docker / OpenClaw integration
252+
**Option B: Install Chromium on VPS and login there**
256253

257-
In Docker containers or AI agent platforms (OpenClaw, etc.) where there's no browser:
254+
```bash
255+
ssh vps "apt install -y chromium-browser"
256+
ssh vps "~/.bun/bin/snowball login" # auto-headless, QR in SSH terminal
257+
```
258258

259-
**New image:**
259+
### Docker container
260260

261-
```dockerfile
262-
FROM oven/bun:latest
263-
RUN bun add -g snowball-cli
261+
```bash
262+
docker exec <container> bash -c "
263+
curl -fsSL https://bun.sh/install | bash
264+
~/.bun/bin/bun add -g snowball-cli
265+
"
266+
docker exec <container> ~/.bun/bin/snowball import $(snowball export)
264267
```
265268

266-
**Running container** (e.g. OpenClaw, persistent dir at `/home/node/.openclaw`):
269+
For persistence, install bun into a mounted volume (see OpenClaw section below).
270+
271+
### VPS + Docker (e.g. OpenClaw on VPS)
267272

268273
```bash
269-
# Install bun + snowball-cli into OpenClaw's persistent workspace
270-
docker exec <container> bash -c "
274+
# Install inside Docker container on VPS
275+
ssh vps "docker exec <container> bash -c '
271276
export BUN_INSTALL=/home/node/.openclaw/.bun
272277
curl -fsSL https://bun.sh/install | bash
273278
/home/node/.openclaw/.bun/bin/bun add -g snowball-cli
274-
"
279+
'"
275280

276-
# Import token from host
277-
docker exec <container> /home/node/.openclaw/.bun/bin/snowball import $(snowball export)
281+
# Import token: local → VPS → Docker container
282+
ssh vps "docker exec <container> /home/node/.openclaw/.bun/bin/snowball import $(snowball export)"
278283
```
279284

280-
Everything lives under `/home/node/.openclaw/` — survives container restarts.
285+
## OpenClaw integration
281286

282-
**Install as AgentSkill** (inside container or on host with OpenClaw workspace mounted):
287+
**Local OpenClaw:**
283288

284289
```bash
285-
cd /home/node/.openclaw/workspace # or your mounted workspace path
286-
bunx skills add https://github.com/baixianger/snowball-cli
290+
clawhub install baixianger/snowball-cli
291+
```
292+
293+
**Docker OpenClaw** (persistent dir `/home/node/.openclaw`):
294+
295+
```bash
296+
# Install AgentSkill
297+
docker exec <container> bash -c "
298+
cd /home/node/.openclaw/workspace
299+
/home/node/.openclaw/.bun/bin/bunx skills add https://github.com/baixianger/snowball-cli
300+
"
301+
```
302+
303+
**Custom Docker image:**
304+
305+
```dockerfile
306+
FROM oven/bun:latest
307+
RUN bun add -g snowball-cli
287308
```
288309

289310
## License

README.zh-CN.md

Lines changed: 86 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ bun add -g snowball-cli
3535
# AI Agent 技能(Claude Code、Cursor、Windsurf 等)
3636
npx skills add https://github.com/baixianger/snowball-cli #
3737
bunx skills add https://github.com/baixianger/snowball-cli
38+
39+
# OpenClaw agent
40+
clawhub install baixianger/snowball-cli
3841
```
3942

4043
## 快速开始
@@ -228,62 +231,119 @@ snowball login
228231

229232
自动无头:Linux 上没有 `DISPLAY` 时,Chrome 自动以 `--headless` 模式启动。
230233

231-
## 无头服务器 / VPS 部署
234+
## 部署指南
235+
236+
### 本地桌面(macOS / Windows / Linux 桌面)
237+
238+
```bash
239+
bun add -g snowball-cli
240+
snowball login # 终端内扫码,最简单
241+
```
242+
243+
### VPS(无头服务器)
232244

233-
不需要浏览器 — 从本地机器传输 token
245+
**方式 A:从本地导入 token(推荐,不需要浏览器)**
234246

235247
```bash
236-
# 一行搞定:本地导出,VPS 导入
237-
ssh vps "snowball import $(snowball export)"
248+
# 先在 VPS 上装 snowball-cli
249+
ssh vps "curl -fsSL https://bun.sh/install | bash && ~/.bun/bin/bun add -g snowball-cli"
238250

239-
# 或者分步
240-
snowball export # 本地打印 base64
241-
ssh vps "snowball import <base64>" # VPS 上粘贴
251+
# 一行导入 token
252+
ssh vps "~/.bun/bin/snowball import $(snowball export)"
242253
```
243254

244-
也可以在 VPS 上装 Chromium 直接扫码登录:
255+
**方式 B:VPS 上装 Chromium 直接登录**
245256

246257
```bash
247258
# Debian/Ubuntu
248-
apt install -y chromium-browser
249-
snowball login # 自动检测无头模式,二维码在 SSH 终端显示
259+
ssh vps "apt install -y chromium-browser"
260+
ssh vps "~/.bun/bin/snowball login" # 自动无头模式,QR 在 SSH 终端显示
261+
```
262+
263+
### Docker 容器
250264

251-
# 指定路径
252-
snowball login --chrome /snap/bin/chromium
265+
```bash
266+
# 进容器装 bun + snowball-cli
267+
docker exec <容器> bash -c "
268+
curl -fsSL https://bun.sh/install | bash
269+
~/.bun/bin/bun add -g snowball-cli
270+
"
271+
272+
# 从宿主机导入 token
273+
docker exec <容器> ~/.bun/bin/snowball import $(snowball export)
253274
```
254275

255-
## Docker / OpenClaw 集成
276+
如果需要持久化,把 bun 装到挂载目录(见下方 OpenClaw 章节)。
256277

257-
在 Docker 容器或 AI Agent 平台(OpenClaw 等)中没有浏览器:
278+
### VPS 上的 Docker(如 VPS 上跑 OpenClaw)
258279

259-
**新镜像:**
280+
```bash
281+
# 先确保本地已登录
282+
snowball status
260283

261-
```dockerfile
262-
FROM oven/bun:latest
263-
RUN bun add -g snowball-cli
284+
# SSH 到 VPS,在 Docker 容器内安装并导入
285+
ssh vps "docker exec <容器> bash -c '
286+
export BUN_INSTALL=/home/node/.openclaw/.bun
287+
curl -fsSL https://bun.sh/install | bash
288+
/home/node/.openclaw/.bun/bin/bun add -g snowball-cli
289+
'"
290+
291+
# 本地 → VPS → Docker 容器,一行导入 token
292+
ssh vps "docker exec <容器> /home/node/.openclaw/.bun/bin/snowball import $(snowball export)"
264293
```
265294

266-
**已运行的容器**(如 OpenClaw,持久化目录 `/home/node/.openclaw`):
295+
## OpenClaw 集成
296+
297+
### 本机运行的 OpenClaw
298+
299+
直接从 ClawHub 安装:
300+
301+
```bash
302+
clawhub install baixianger/snowball-cli
303+
```
304+
305+
导入 token(OpenClaw agent 调用 snowball 命令时需要):
306+
307+
```bash
308+
snowball export | xargs -I {} snowball import {}
309+
# 或者直接用同一台机器的 token,无需导入
310+
```
311+
312+
### Docker 中的 OpenClaw
313+
314+
OpenClaw 的持久化目录是 `/home/node/.openclaw`,安装到这里容器重启不丢。
315+
316+
**Step 1:在容器中安装 bun + snowball-cli**
267317

268318
```bash
269-
# 在 OpenClaw 持久化目录中安装 bun + snowball-cli
270319
docker exec <容器> bash -c "
271320
export BUN_INSTALL=/home/node/.openclaw/.bun
272321
curl -fsSL https://bun.sh/install | bash
273322
/home/node/.openclaw/.bun/bin/bun add -g snowball-cli
274323
"
324+
```
275325

276-
# 从宿主机导入 token
326+
**Step 2:从宿主机导入 token**
327+
328+
```bash
277329
docker exec <容器> /home/node/.openclaw/.bun/bin/snowball import $(snowball export)
278330
```
279331

280-
全部装在 `/home/node/.openclaw/` 下,容器重启不丢。
281-
282-
**作为 AgentSkill 安装**(在容器内或宿主机挂载的 workspace 目录中):
332+
**Step 3:安装 AgentSkill**
283333

284334
```bash
285-
cd /home/node/.openclaw/workspace # 或宿主机上的挂载路径
286-
bunx skills add https://github.com/baixianger/snowball-cli
335+
# 在容器内
336+
docker exec <容器> bash -c "
337+
cd /home/node/.openclaw/workspace
338+
/home/node/.openclaw/.bun/bin/bunx skills add https://github.com/baixianger/snowball-cli
339+
"
340+
```
341+
342+
### 自建 Docker 镜像
343+
344+
```dockerfile
345+
FROM oven/bun:latest
346+
RUN bun add -g snowball-cli
287347
```
288348

289349
## 协议

0 commit comments

Comments
 (0)