分类 Website 下的文章

大概是几十天前,我在查询 whois 时发现, SixHz.com 的前任主人已经不再续费了,但域名还没开放购买。于是把相关信息发给 AI,问了下大致的释放时间。从那之后,就会偶尔搜一下,看看能不能买到。

这个世界上,有些事情可遇不可求,而这一次我很幸运,今天终于蹲到了。

域名是在 Cloudflare 购买的,价格是 10.46 美元 / 年。

顺手查了下历史,这个域名之前被用作 Go 组件托管地址 sixhz.com/szamlazzhu,似乎和匈牙利的发票业务有关,还挺有意思的。

想到一个问题:如果有一天我不再更新博客,甚至不再使用原本的服务器,这些博客内容会怎样?
我想让它们继续被看见,也想让它们独立于服务器依赖而存在。

于是就有了这个小项目 —— 一个用 Python + wget 做的极简博客镜像工具,可以把你的 Typecho(或其他兼容的博客)抓成一套完整的、可直接部署的静态网站。

https://github.com/gone1724/if_i_die

✨ 它能做什么?

  • 自动抓取博客所有公开页面(文章 / 分类 / 归档 / 主题资源等)。
  • 跳过后台、登录、评论提交等敏感或不必要的路径。
  • 抓取后会重写所有站内链接为本地相对路径,确保离线可用。
  • 针对img src的图片类资源也会保存并重写相对链接,确保离线可用。
  • 自动下载外链图片,减少外部依赖。
  • 输出目录 ./site/ 可直接推送到 GitHub Pages / Cloudflare Pages。

换句话说:你的博客在任何地方都能继续「活着」。

🛠️ 怎么用?

环境需求:Python 3.9+,推荐用 uv 管理项目。

pip install uv
uv run python mirror.py

常用命令:

uv run python mirror.py          # 默认清空输出后抓取
uv run python mirror.py --no-clean   # 不清空目录,增量抓取
uv run python mirror.py --spider     # 试跑模式,仅检查链接
uv run python mirror.py --url https://example.com/ --output-dir my_site

📜 开源协议

本项目基于 GNU GPL v3,你可以自由地使用、分发、修改。

控制端自监控

进过测试,控制端是可以做到自己监控自己的。二进制部署后,用作控制端的 NAT 小鸡的 64MB 内存也没有爆。

给板卡扎针 (Komari Agent)

目前,我的 Linux 板卡已经连上路由器,也就是常说的“已连上 Wi-Fi”了。

此时板卡处于一种典型的 “只能出不能入”(Outbound-only) 网络环境:允许主机主动连接外部网络 (Outbound),但不允许外部直接访问内部主机(Inbound 被阻断)。

在这种前提下,依然成功让 Komari Agent “扎针”并保持在线,这一点让我感到非常意外,非常有意思。

Komari Agent 通信机制

其详细原理可见 官方文档 - Komari Agent 信息上报与事件处理文档

在我的场景中,板卡是 Linux 系统,并且 可以正常出站访问公网。Komari Agent 启动后会:

  • 主动向 Komari 服务端发起 HTTPS / WebSocket 连接;
  • 启动时先通过 HTTP 上报一次基础信息(例如 CPU、内存、磁盘等静态或缓变数据);
  • 之后通过 WebSocket 以固定间隔持续推送实时监控数据(CPU 使用率、内存占用等);
  • 同时在这条 WebSocket 连接上接收来自服务端的远程命令等事件,在本地执行后再将结果回传。

整个过程中,所有连接都是由 “板卡 → 公网 → Komari 主控” 主动发起的:内网侧无需开放任何端口,路由器也不需要做端口映射,更不要求公网能够反向访问板卡 IP。

Agent 自动发现

其详细教程可见 官方文档 - Agent 自动发现

bash <(curl -sL https://raw.githubusercontent.com/komari-monitor/komari-agent/refs/heads/main/install.sh) -e https://example.com --auto-discovery <AD Key> --install-ghproxy https://ghfast.top/

0. 开机

安装Debian系统,IP位置 Report.Check.Place

1. 更新 apt

apt update -y && apt upgrade -y
apt install -y curl wget unzip

2. 创建目录

mkdir -p /opt/komari
cd /opt/komari

3. 下载 Komari 控制端

# https://github.com/komari-monitor/komari/blob/main/docs/README_zh.md
curl -fsSL https://raw.githubusercontent.com/komari-monitor/komari/main/install-komari.sh -o install-komari.sh
chmod +x install-komari.sh
sudo ./install-komari.sh
journalctl -u komari -f
# 修改密码(可选),默认用户名admin
cd /opt/komari
systemctl stop komari 2>/dev/null || true
./komari chpasswd -p 'TEEHRz7jap3TxpR2'
systemctl start komari 2>/dev/null || ./komari server -l 0.0.0.0:25774 &

4. 反向代理

内部 80/443 端口不提供的话,可跳至第6步。

apt update
apt install -y nginx
# 替换 monitor.example.com 为正确的网址
cat >/etc/nginx/sites-available/komari.conf << 'EOF'
server {
    listen 80;
    listen [::]:80;
    server_name monitor.example.com;

    location / {
        proxy_pass http://127.0.0.1:25774/;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
EOF
# NAT 映射外部端口 → 内部 80
ln -s /etc/nginx/sites-available/komari.conf /etc/nginx/sites-enabled/
nginx -t && systemctl restart nginx

5. 开启HTTPS

安装 certbot 工具
方式一:HTTP 验证(需要外部 80 端口)
方式二:TLS-SNI / HTTPS 验证(需要外部 443)
方式三:DNS TXT 验证(适合 NAT)

6. 使用 Cloudflare Tunnel

安装并绑定 Tunnel,写 cloudflared 配置文件,最后注意要启动 Tunnel 并设置开机自启。