Files
winning-wallet-finder/新建 Markdown 文件.md
T
gavindiaz 125470b24a sync: upstream + our customizations (dashboard, healthcheck, docs)
Synced from github/main: aebcfa2d copybot: live paper feed [skip ci]
Our additions: serve_dashboard.py, bot_dashboard.html, mihomo-healthcheck.sh,
中文文档, 我们的钱包配置
2026-07-21 07:35:48 +08:00

7.7 KiB
Raw Blame History

部署路径有两条:用现成云服务器(你已经测过能通)或用 Fly.io(项目里已经配好了 fly.toml)。下面分开讲。


路径 A:用你自己的云服务器(推荐,国内用户)

你之前测过 C202607051339911 那台机能直连 Polymarket,且没有 HTTPS_PROXY,直接复用。

A.1 paper bot(先跑这个,验证部署链路)

步骤 1:装依赖

ssh root@你的服务器
# 假设你已有 git/python3Ubuntu/Debian
apt-get update && apt-get install -y git python3 python3-pip
pip3 install duckdb

# paper 不需要 py-clob-client/web3,只跑 copybot.py 的 paper 路径

步骤 2clone 仓库

cd /opt
git clone https://github.com/jaxperro/winning-wallet-finder.git
cd winning-wallet-finder

步骤 3:编辑 paper 配置

cd live
nano copybot.paper.json
# 改 "wallets",加/减跟单目标

步骤 4:先做一次回测,确认链路通

python3 portfolio.py --days 30
# 应该看到:portfolio[30d rolling]: equity $... | ... -> portfolio.json

步骤 5:以后台进程跑 paper bot

nohup python3 ../copybot.py --config live/copybot.paper.json --poll 60 \
  > /var/log/copybot-paper.log 2>&1 &
echo $! > /var/run/copybot-paper.pid

看日志:

tail -f /var/log/copybot-paper.log

停止:

kill $(cat /var/run/copybot-paper.pid)

步骤 6:开机自启(systemd

新建 /etc/systemd/system/copybot-paper.service

[Unit]
Description=Polymarket Paper Copybot
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=/opt/winning-wallet-finder
ExecStart=/usr/bin/python3 copybot.py --config live/copybot.paper.json --poll 60
Restart=always
RestartSec=10
StandardOutput=append:/var/log/copybot-paper.log
StandardError=append:/var/log/copybot-paper.log

[Install]
WantedBy=multi-user.target

启用:

systemctl daemon-reload
systemctl enable --now copybot-paper
systemctl status copybot-paper

步骤 7(可选):让 bot 把状态 commit 回 GitHub

host/start.sh 注释里写了:bot 通过 commit copybot_state.json + copybot_live.json + copybot_fills.jsonl 持久化——这样服务器重启用最新 commit 恢复,不用挂 volume

要支持 commit

git config user.name  "copybot[bot]"
git config user.email "copybot@users.noreply.github.com"
# 把你的 fine-grained PAT 写到 ~/.netrc
echo "machine github.com login YOUR_PAT password x-oauth-basic" > ~/.netrc
chmod 600 ~/.netrc

bot 自己会推,不用 cron。


A.2 live bot真钱,先确认服务器位置可下单)

A.2.1 检查你的服务器能否下单

python3 host/geocheck.py

期望输出 VERDICT: TRADABLE。如果显示 BLOCKED,live 不能在这台机上跑(paper 不受影响)。

已知限制fly.toml:1-7 注释里列的):US/UK/法国/德国/意大利/荷兰/波兰/新加坡/澳大利亚/加拿大安大略/巴西 都禁。所以你得查一下你那台机的实际位置。

A.2.2 准备凭证

实盘配置.md 走路径 A(邮箱登录):

  1. https://reveal.magic.link/polymarket 导私钥
  2. polymarket.com/settings 拿 funder address

A.2.3 systemd unit

新建 /etc/systemd/system/copybot-live.service

[Unit]
Description=Polymarket LIVE Copybot (real money)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=/opt/winning-wallet-finder
Environment="LIVE_PRIVATE_KEY=0x..."
Environment="LIVE_FUNDER_ADDRESS=0x..."
Environment="LIVE_SIGNATURE_TYPE=1"
Environment="LIVE_CONFIRM=I understand real money is at risk"
ExecStart=/usr/bin/python3 copybot.py --config config.live.json --live --poll 60
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

0x...funder 换成你自己的。绝不要 commit 这些值——Environment= 写进 systemd 文件本身 ok,因为 /etc/systemd/system/ 不在仓库里。但别把这个 unit 文件 commit 到仓库

systemctl daemon-reload
systemctl enable --now copybot-live
systemctl status copybot-live

A.2.4 第一次开火务必小金额

config.live.jsonbankroll_usd 设成你实际钱包余额(比如 $20–$30),验证几笔成交后再加。


路径 B:用 Fly.io(项目已配好)

项目里已经有完整的 Fly 配置:fly.tomlpaper worker wwf-copybot+ fly.live.tomllive worker wwf-copybot-live),region 都固定 arnStockholm,绕开禁单区)。host/start.sh 在 boot 时自动 clone + 装依赖。

B.1 装 flyctl

curl -L https://fly.io/install.sh | sh
fly auth signup     # 或 login

B.2 部署 paper worker

cd /path/to/winning-wallet-finder
fly apps create wwf-copybot
fly secrets set GITHUB_TOKEN=ghp_你的fine_grained_PAT_内容读写权限
fly deploy --config fly.toml
fly open                       # 看 dashboard
fly logs --app wwf-copybot     # 实时日志

host/start.sh:6 设计:每次启动都从 GitHub clone 最新代码 + 拉最新 copybot_state.json——改完 copybot.paper.json 直接 fly apps restart wwf-copybot 即可(见 live/deploy_bot.sh),不用重新 fly deploy,除非改了 host/fly.toml

B.3 部署 live worker真钱

fly apps create wwf-copybot-live
fly secrets set --app wwf-copybot-live \
  GITHUB_TOKEN=ghp_... \
  LIVE_PRIVATE_KEY=0x... \
  LIVE_FUNDER_ADDRESS=0x... \
  LIVE_SIGNATURE_TYPE=1 \
  LIVE_CONFIRM="I understand real money is at risk"

fly deploy --config fly.live.toml --app wwf-copybot-live
  • 这是与 paper 完全独立的 app,状态文件 copybot_state.live.json 单独走
  • 没设齐三个 LIVE_* 变量时,机器会自动 idle 不下单start.sh:50-55)——这是故意设计的安全网

B.4 改 follow setpaper

# 1. 改 live/copybot.paper.json 的 wallets
# 2. 一键部署:
./live/deploy_bot.sh

它会自动:校验 JSON、commit+push、重启 Fly worker、等新 banner。详见 live/deploy_bot.sh


路径选择建议

你的情况 推荐路径
已有国外云服务器、想省钱、运维可控 路径 A(你测过能通的那台 C202...
不想管服务器、24/7 不间断、愿付 $5/月 路径 B Fly.ioarn region + 512MB
跑 paper / 回测,不跑实盘 任意一条服务器都行,不用 geocheck
跑实盘(真钱) 必须先 python3 host/geocheck.py 通过

部署后的检查清单

  1. paper bot 起活tail -f /var/log/copybot-paper.logwatching N wallets · ...drift 一直是 0
  2. 每天 ./live/daily.shcron 跑数据刷新(10:00
  3. 仪表盘最新dashboard.html 双击打开,看 Live 栏是 bot 当前的书
  4. commit 回了 GitHubcopybot_state.jsonlive/copybot_live.json 应该每几分钟有 commit
  5. live bot 额外检查fly logsjournalctl -u copybot-livegeo gate PASS + cash≠chain OK(启动时 host/start.sh:39 已经过了一遍 geocheck,但 copybot.py 还会再过一遍——见 LIVE_ROLLOUT.md Phase 1.5

要我帮你直接在那台 C202... 云服务器上把 paper bot 装起来吗?

sudo install -d -m 750 -o wwf -g wwf /etc/copybot sudo tee /etc/copybot/paper.env > /dev/null <<EOF ALCHEMY_RPC_URL=https://polygon-mainnet.g.alchemy.com/v2/zRBlLYCNBZHqbz_0LK66L EOF sudo chown wwf:wwf /etc/copybot/paper.env sudo chmod 600 /etc/copybot/paper.env