8.8 KiB
本地部署说明(含 SOCKS5 代理 socks5h://127.0.0.1:1080)
云服务器部署:若主机在境外且可直连
api.gateio.ws,请将config.yaml中proxy.enabled设为false,无需 SOCKS。详见交易系统部署说明.md§8 与多执行器与信号转发归档.md§7。
本文说明如何在本机部署 onchain_scout_gate(Gate USDT 永续监控 + 可选 Gemma 漏斗 + Web 看板),并在访问 Gate 行情、企业微信等外网接口时使用 本地 SOCKS5 代理。环境变量统一使用 **socks5h://127.0.0.1:1080(h = 主机名在代理端解析,等同 curl 的 socks5h,推荐)。端口 **1080 与 Clash / v2rayN / Sing-box 等本地 SOCKS 入站一致。
1. 前置条件
1.1 系统与软件
| 项目 | 说明 |
|---|---|
| 操作系统 | Windows 10/11 或 Linux / macOS 均可 |
| Python | 3.10+(推荐 3.11 / 3.12) |
| 代理客户端 | 本机已运行 SOCKS5 监听 **127.0.0.1:1080**(常见为 Clash / v2rayN 的「本地 SOCKS5 端口」) |
| 浏览器 | 用于打开 http://127.0.0.1:8088(或你在 config.yaml 中配置的端口) |
1.2 代理必须可用(自检)
在启动本服务前,请先确认 1080 端口 SOCKS5 已连通外网(否则 Gate 行情请求会超时或 TLS 失败)。
Windows PowerShell(若已安装 curl 且 curl 支持 socks5h):
curl -x socks5h://127.0.0.1:1080 -I "https://api.gateio.ws" --max-time 15
期望看到 HTTP 状态行(如 HTTP/1.1 200 或 HTTP/2 302 等),而不是长时间卡住或 Connection refused。
说明:socks5h 表示把 DNS 也走代理(推荐,避免 DNS 污染)。Python 侧下文使用等价思路。
2. 获取代码与目录
将仓库(或 onchain_scout 目录)放到本机任意路径,例如:
- Windows:
C:\opt\onchain_scout - Linux:
/opt/onchain_scout
下文以 **onchain_scout 为项目根目录**(即包含 config.yaml、requirements.txt、app/ 的那一层)。
3. Python 虚拟环境
3.1 Windows(PowerShell)
cd C:\opt\onchain_scout
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -U pip
pip install -r requirements.txt
若执行策略禁止激活脚本:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
3.2 Linux / macOS
cd /opt/onchain_scout
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt
3.3 SOCKS5 与 httpx
本项目通过 httpx 访问 Gate 行情(及按需的企业微信 Webhook)。走 SOCKS5 需要安装带 socks 依赖的 httpx。requirements.txt 中已使用:
httpx[socks]==0.27.2
若你曾单独安装过无 extras 的 httpx,请在本虚拟环境中重新执行:
pip install -r requirements.txt
4. 配置文件 config.yaml
- 若不存在,从示例复制:
copy config.example.yaml config.yaml
- 至少修改:
auth.username/auth.password:登录 Web 看板用(生产环境请使用强密码)。wecom.webhook:企业微信群机器人 Webhook(若暂不用推送,可先填占位,但触发类推送仍可能失败,可先关相关逻辑或接受报错日志)。monitor.min_24h_quote_volume_usdt:成交额过滤(默认一千万量级,按 README 说明)。**gemma**:若本机已装 Ollama 且要跑漏斗,将enabled: true并设置model;否则保持enabled: false。**proxy**:访问 Gate 行情需走本机 SOCKS 时,设proxy.enabled: true,proxy.url一般为**socks5h://127.0.0.1:1080**(与 Clash 等本地 SOCKS 端口一致)。本机 Ollama 不会使用该代理。
- 不要将
config.yaml提交到公开仓库(内含密钥与 Webhook)。
5. 代理写入 config.yaml(推荐,无需环境变量)
在 config.yaml 根级增加或修改 **proxy** 段(与 config.example.yaml 一致):
proxy:
enabled: true
url: "socks5h://127.0.0.1:1080"
说明:
**socks5h://**:配置里可继续写(与 curl 习惯一致)。程序在创建 httpx 客户端时会自动改成socks5://,因部分环境下 httpx/socksio 不认socks5h会报Unknown scheme;改为socks5后由本机解析 DNS 再走 SOCKS。若仍异常,可直接在配置里写**socks5://127.0.0.1:1080**。- 作用范围:Gate 行情相关 httpx 请求使用
config.yaml中的proxy;企业微信当前实现为直连。不会对gemma.ollama_base_url(本机 Ollama)套代理。 **proxy.enabled: false:Gate 客户端仍可使用系统环境变量中的HTTP_PROXY/ALL_PROXY(trust_env=True);启用配置代理后则固定走proxy.url**,并trust_env=False,避免与环境变量冲突。
6. PM2 守护进程(推荐)
6.1 安装 PM2
需已安装 Node.js,然后全局安装 PM2:
npm install -g pm2
6.2 准备虚拟环境与配置
- 项目根目录已创建
.venv且pip install -r requirements.txt完成。 config.yaml已按上文填写(含proxy、app.port等)。- 确保存在目录
**runtime/**(用于日志与 SQLite;首次启动会自动创建亦可)。
6.3 使用仓库内 ecosystem 启动
仓库提供 **deploy/ecosystem.config.cjs**:
**cwd**:自动设为项目根(deploy的上一级)。**script**:根据操作系统选择**.venv/Scripts/python.exe(Windows)** 或**.venv/bin/python(Linux/macOS)**。**args**:python -m app.main,监听地址与端口完全由config.yaml的app.host/app.port决定,无需改 ecosystem 里的端口。
在项目根目录执行:
cd /opt/onchain_scout # 或你的实际路径
pm2 start deploy/ecosystem.config.cjs
pm2 status
pm2 logs onchain-scout
常用维护命令:
| 命令 | 说明 |
|---|---|
pm2 restart onchain-scout |
热重启(改 config.yaml 后需重启生效) |
pm2 stop onchain-scout |
停止 |
pm2 delete onchain-scout |
从进程列表移除 |
pm2 save |
保存当前进程列表 |
pm2 startup |
生成开机自启脚本(按屏幕提示执行一次) |
标准输出与错误会写入项目 **runtime/pm2-out.log**、**runtime/pm2-error.log**(见 ecosystem 内配置)。
6.4 Windows 说明
在 PowerShell 或 cmd 中同样可使用 pm2 start deploy\ecosystem.config.cjs。若 python.exe 路径不对,请确认虚拟环境目录名为 .venv 且位于项目根。
7. 前台启动(调试用)
不经过 PM2、仅本地调试时,无需再设置 ALL_PROXY 等环境变量(代理已由 config.yaml 的 proxy 段控制):
cd C:\opt\onchain_scout
.\.venv\Scripts\Activate.ps1
python -m app.main
app.host / app.port 以 config.yaml 为准。
8. 验证
- 代理:本机 SOCKS 入站已监听;
config.yaml中proxy.enabled: true。 - Web:浏览器访问
http://127.0.0.1:<app.port>,登录后「监控池配置」JSON 中应出现**proxy** 字段(enabled/url)。 - Gate:等待一个
poll_interval周期,看日志是否仍有 TLS/连接错误;若有,尝试socks5或检查端口。 - Ollama:
gemma.enabled: true时,访问127.0.0.1:11434不走proxy.url,一般无需NO_PROXY。
9. 常见问题(FAQ)
Q1:Connection refused 连 Gate / 代理
- 本机代理未开或端口不是 1080。
proxy.enabled未设为true或proxy.url写错。
Q2:改了 config.yaml 不生效
- PM2 下需执行
**pm2 restart onchain-scout** 重新加载进程与配置。
Q3:企业微信推送失败
- 多为 Webhook 无效;若走代理仍失败,检查代理是否允许访问
qyapi.weixin.qq.com。
Q4:pip / git 走代理
- 与应用程序无关;可在安装依赖的终端自行
export HTTPS_PROXY=...(不必写进应用config.yaml)。
10. 备忘
cd /opt/onchain_scout
pm2 start deploy/ecosystem.config.cjs && pm2 save
文档版本:与仓库 onchain_scout_gate 当前结构对应;请以 README.md、deploy/ecosystem.config.cjs、app/main.py 为准。