Avoids HTTPS-over-lossy-link TCP cwnd issues that pinned the previous push to ~360 KB/s for 10 min on the batch-50 Step 3-4 commit. SSH key generated on dev1 (~/.ssh/id_ed25519), public key posted to gitea via /api/v1/user/keys (title "dev1-guangzhou"), origin URL updated to ssh://git@git.deepknow.site:222/Facere/FacereDataset.git. Also documents the kernel + git side optimizations applied: sysctl net.ipv4.tcp_congestion_control=bbr (was cubic) git config --global http.postBuffer 524288000 (500 MB) Note: gitea git SSH port is 222, not 22 (22 is the host sshd). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.4 KiB
3.4 KiB
基础设施 / 运行环境
不含任何凭据值。Token、密码、cookie 只存 dev1 的 ~/.secrets/。
机器
| 属性 | 值 |
|---|---|
| 名字 | dev1 |
| 供应商 / 可用区 | 腾讯云,广州 |
| OS | Ubuntu 22.04 LTS (jammy) |
| CPU / RAM | 4 核 / 3.3 GiB(+ 4 GiB swap) |
| 磁盘 | 40 GB(/dev/vda2,ext4),部署后用 12 GB,可用约 27 GB |
| 用户 | ubuntu |
| apt 镜像 | mirrors.tencentyun.com(默认) |
SSH
本地 ~/.ssh/config 用 Host dev1 别名;密钥 ~/.ssh/GuangZhou.pem(mode 600)。只允许 key 登录,密码登录关闭。
仓库位置
~/repo/FacereDataset/
- clone 时用
GIT_LFS_SKIP_SMUDGE=1省流(LFS 对象只在真正需要核对历史数据时git lfs pull <path>,平时不拉) git lfs install --skip-smudge已配,后续git pull也不会自动拉 blob- origin remote 走 SSH:
ssh://git@git.deepknow.site:222/Facere/FacereDataset.git(之前是 HTTPS+token,2026-04-29 切到 SSH,避开 dev1↔gitea 链路 ~6.5% 丢包导致的 TCP cwnd 压扁问题) - SSH key:
~/.ssh/id_ed25519(mode 600),公钥已 POST 到 gitea/api/v1/user/keys,titledev1-guangzhou - gitea SSH 端口是 222(22 是主机 sshd,222 才是 gitea)
- 网络优化(应用于内核与 git):
sysctl net.ipv4.tcp_congestion_control=bbr(替代 cubic,对丢包链路更友好)git config --global http.postBuffer 524288000(500 MB,少 round-trip)
已装工具
| 工具 | 版本 | 装法 |
|---|---|---|
| git | 2.34.1 | apt(系统自带) |
| git-lfs | 3.0.2 | apt install git-lfs |
| jq | 1.6 | apt |
| uv | 0.11.7 | curl -LsSf https://astral.sh/uv/install.sh | sh → ~/.local/bin/uv |
| python | 3.10.12 | apt(系统自带,pyproject.toml 要求 >=3.10) |
~/.local/bin 已加入 ~/.bashrc 的 PATH。
凭据目录
~/.secrets/ mode 700
├── oshwhub-cookies.txt # Netscape 格式(Charles 从浏览器导出)
└── ...
规则(重申):
- 不入 git、不入日志、不入 metadata.json、不打 echo
- 换号 / 重登事件写到
docs/secrets.md(仅事件日期与事由,不含值) - 文件权限 600,目录 700
Python 依赖 / 网络
uv sync用清华 pypi 镜像加速:export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple- 默认用系统 Python 3.10:
UV_PYTHON_PREFERENCE=only-system - 这两个 env var 建议加到
~/.bashrc或 profile
# 建议追加到 ~/.bashrc
export PATH="$HOME/.local/bin:$PATH"
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
export UV_PYTHON_PREFERENCE=only-system
长跑 / 调度
- 当前:手动
tmux new -s crawl里跑,断开不受影响 - 后续:爬虫跑稳后套
systemd timer(每周增量),配置位置/etc/systemd/system/facere-crawl.{service,timer}
日志
- 爬虫 stdout/stderr 落
~/logs/<site>-<YYYYMMDD>.log(~/logs/目录首次运行前创建) ~/logs/不纳入 git- 超过 30 天用
logrotate(待配)
磁盘应急策略
当前阈值(需配 cron 告警):
| 使用率 | 动作 |
|---|---|
| 70% | 邮件告警 |
| 85% | 停新批次爬取;只做增量 |
| 95% | 停一切爬取;人工介入 |
变更历史
| 日期 | 变更 |
|---|---|
| 2026-04-23 | dev1 首次部署:apt install git-lfs jq / 装 uv / clone 仓库(skip LFS smudge)/ 创建 ~/.secrets/ / uv sync 通过 |