博客 | Blog

告别 wg-easy:使用 Tailscale Peer Relays 实现低延迟组网

一直以来,我都在使用 wg-easy 作为个人的 VPN 方案。它的主要痛点在于默认走服务器中转,无法实现真正的 P2P 直连,而想要用原生 WireGuard 配置 P2P 网络又过于繁琐。

我之前也尝试过 Tailscale,但由于官方的 DERP 中继服务器在亚太地区通常只有香港节点,一旦国内两台设备遇到硬 NAT 无法直连,流量回退到官方 DERP 时的延迟非常高,中转体验甚至还不如 wg-easy,之前也尝试搭建过 DERP,过于复杂。

直到最近重新梳理网络架构,我发现了 Tailscale Peer Relays 功能。它能够完美利用我手里现有的中国大陆公网服务器,彻底解决了跨国和跨网中继的延迟问题。

为什么选择 Peer Relays 而不是自建 DERP? #

以前解决 Tailscale 延迟问题的常规思路是自建 Custom DERP 服务器,但这需要处理域名、HTTPS 证书以及编译更新等一系列繁琐操作。

Peer Relays 则是 Tailscale 的原生功能。它允许将尾网 (tailnet) 内现有的设备直接转变为高吞吐量的中继节点。只要设备间无法直连,流量会自动且优先走你配置的国内公网节点中继,无需回退到海外 DERP。部署极简,且没有任何底层功能限制。

极简配置记录 #

整个配置过程只需要三步。以我打上 tag:cn-relay 标签的国内服务器为例:

1. 开启节点监听 在具备公网 IP 的服务器终端执行以下命令,指定一个 UDP 端口(例如 40000):

Bash

sudo tailscale set --relay-server-port=40000

2. 放行防火墙 在云服务商的安全组和系统防火墙中,放行 UDP 40000 端口(源 IP 设为 0.0.0.0/0)。

...

数字生活 2026Q2

本季度变更 #

2026年第一季度,本篇新建在1月末,因为发现季度结束再回忆可能就忘记了,所以不如折腾了就随手记录一下。

本季度变动如下:

openclaw 的爆火让我大幅重构了个人基础设施,尤其是之前的 telegram bot 体系完全没 openclaw 替代,具体包括 beancount-bot obsidian-bot 以及各种回顾任务考虑由 openclaw cron 初加工。

输入方面:

  • 音乐方面,放弃了很多年付费订阅的 Spotify,原因第一是每年都在涨价,第二是 YouTube Prime 的订阅包含了 YouTube Music,因此尝试迁移到后者。

工具方面

  • karakeep all list 自动导入到 archivebox
  • https://healthchecks.io/ 定时服务监控和 https://uptimerobot.com 网络服务监控 一起合并到 uptime-kuma 此外还发现了 uptime-kuma 的 push 类型,可以通过服务主动发送心跳的方式做到被动监控,监控了内网的机器还有一些机器人,大幅提高掌控度。思考一下在三亚的各种服务是不是也可以使用 uptime-kuma 来监控?

完整版本工具库 #

  • 输入
    • 社交网络:Twitter
    • 论坛:V2EX, hacker news
    • RSS 订阅 (FreshRSS+Reeder),主要信息来源,订阅了包括博客、newsletter、微信公众号、微博时间线、mastodon等内容
    • 视频:Youtube, BiliBili, MICU
    • 音乐:Youtube Music
    • 播客:Overcast、小宇宙
    • 书籍:文石Leaf3 微信读书
  • 输出
    • 笔记:Obsidian
    • 博客 hugo on cloudflare
    • 书评:豆瓣 goodread
  • 工具
    • 通讯
      • telegram, Wechat
      • Gmail
      • iCloud
      • Outlook
    • 文件
      • Dropbox 文件同步
      • Google Drive 在线文档
      • iCloud 用于照片和备份
    • 信息流
      • Karakeep 网络书签
      • Instapaper 稍后阅读
      • ArchiveBox 网页存档
      • mbsync 邮件备份
      • Recoll 全文检索
    • 生产力
      • Toggl 时间记录
      • 滴答清单 待办管理工具
      • Google Calendar 个人日程管理
    • 个人数据
      • Obsidian 个人日志及笔记
      • Rond 个人位置时间线
      • Beanocunt 个人金融数据
      • Strava 个人运动数据
    • 隐私安全
      • Bitwarden 自建的密码管理及两步验证管理工具
      • cryptomater
      • DuckDuckGo masked email
    • 其他
  • 硬件
    • 计算机 MacBook Air M1 Mac Mini M4 ThinkPad X1 Carbon 2020
    • 鼠标 鼠标 Logtech MX Anywhere 3 鼠标 鼠标 罗技(G)G102 有线鼠标 黑色
    • HHKB Professional HYBRID Type-S
    • iPhone 15 Pro 红米K70E
    • Apple Watch S8 GPS 45mm
    • 耳机 Apple Airpods Pro
    • 电子书 文石Leaf3
  • 信息流
    • Douban RSS -> Karakeep
    • FreshRSS starred RSS -> Karakeep
    • Instapaper RSS -> Karakeep
    • Web -> Karakeep (manual)
    • Karakeep -> Archivebox

beancount 加密货币记账实践

beancount 记录数字货币有很大的优势,天然支持多币种,且有完善的投资记账支持(cost/price/lots)。然而 beancount 设计之初没有考虑到加密货币,因此某些场景极不方便。下面列举常见的加密货币场景以及我使用 beancount 记账的实践,可能谈不上最佳,读者若有好的记账办法也不吝赐教。

稳定币 #

将 USDT 设置为本币,其他所有稳定币都当作以 USDT 计价的货币。在稳定币之间的兑换可以这样记录(其实就是当作价格为1.00 USDT的加密货币),因为价格差导致的损失/收益统一记录在 Expenses 账户中。

2025-01-01 * "" ""
    Assets:Crypto:CEX:Binance:USDT -1000.00 USDT
    Expenses:Crypto:Spot:USDC
    Assets:Crypto:CEX:Binance:USDC 999.99 USDC {1.00 USDT}

转账 #

精确但繁琐 #

最精确的是写清楚每一笔 lots 的成本,但是比较繁琐(可以借助脚本来自动填充)。

2025-01-01 * "" ""
    Assets:Crypto:CEX:Binance:USDC -999.99 USDC {1.00 USDT}
    Expenses:Crypto:Transfer
    Assets:Crypto:Wallet:XXXX:USDC 999.99 UDSC {1.00 USDT}

洗成本 #

每次转账当成一次卖出,优点是简单,账户中不会出发繁多的不同 cost 的 lots,缺点是会使未实现收益转变为实现收益,同时成本发生变化。

2025-01-01 * "" ""
    Assets:Crypto:CEX:Binance:USDC -999.99 USDC {} @ 1.00 USDT
    Expenses:Crypto:Transfer
    Assets:Crypto:Wallet:XXXX:USDC 999.99 UDSC {1.00 USDT}

新建无成本的虚拟资产 #

这个是我早期的做法,方便,但是无法追踪投资收益变化,且会增加记账复杂度,这里介绍但不推荐了。例如对于 BTC 转账,如果只是短期行为,可以记录为 BTC_PH 转账

...

2025-2026雪季总结

2025-2026 雪季安排

这个雪季的安排非常奇怪的一波三折,不过最终结束居然是我这么多年雪季天数最多的一天。下面细细道来。

260101玉龙湾开板 #

元旦和PP一起在北京,玉龙湾滑雪场,参加的野狼户外的活动。其实在这次之前就有想过从单板切换为双板,因为单板滑了几年,目前也就能勉强换刃,距离流畅和刻滑还有不小的差距,每次雪季开始都兴致冲冲,但是重摔了几次后就对速度充满了恐惧,让滑雪的乐趣降低不少。另外PP也是新手,以前滑的也是双板,次数寥寥。考虑到避免单板摔的太狠,还是一起滑双板比较安全。

这一天的总体体验还是不错的,我体验了单眼隐形的快乐(取戴隐形真的太麻烦了!),一天下来也没摔几次,半犁式因为滑的像模像样。

石河子小雪场练活 #

春节前夕,在石河子周边的小雪场疯狂练活。第一天去的将军山,后面几天去新开的花果山,在石河子滑雪的微信群里蹭到了车,每天早出晚归,中饭就在雪场吃点干粮,虽然雪道短,但是进步还是非常明显的,这几天里体验到了各种雪况,第一次直观感受到不同雪况导致滑雪体验的迥然不同。

吉林通化万峰 #

和弟弟及其女朋友的 Double Ski Travel,最终为什么是这个样子比较一言难尽,我作为首发本来要退出,导致弟弟上了替补,最后我又回来要位置(没位置了),最终只能4人一起滑雪。

可惜 通化万峰滑雪场 的雪况太差了,今年是个暖冬,上午还可以的雪况下午基本就融化了,虽然过来的前一天已经造雪(只造初级道),整体体验还是一般。

弟弟单转双居然这么艰难,让我有点意外。

260307-北京高山滑雪中心封板 #

高山滑雪中心真不错,早上雪质量非常好,粉扑扑,厚度也还能接受,部分地方有点薄,一对比万峰差太远。

顶门直接上山是对的,9点多刚开门山下缆车还不需要排队,第二趟下来开始排队就非常可怕了,就这还不是村里的缆车。

穿越海坨确实初级道,第一趟可以一边滑一边瞅瞅其他高级道的样子,不过今天就开了ABCD索。主要滑C索部分的穿越海坨,因为B索排队太可怕了。

中间有一趟从彩霞下了(高级道!),不过由于向阳,我下的时候雪已经开始化了,坡太陡我这种愚昧巅峰都没到的人只能勉强平行刹车下去,没摔就能接受吧,但是也练不了啥,不认识路还滑到了B索排了一辈子。

上山后签订吃牛肉干鸭爪当午饭,配合带的保温杯喝口水。休息的时候滑了28公里,下午一点多继续滑,最后四点多点最后一趟前半段拍了视频,后半段走的回村雪道上到集散中心,再回村雪道下,这里摔了好几次,一方面是累了,另一方面这个雪也太一言难尽了,一坨一坨的冰沙。

最后60.3公里结束!一天贡献了本雪季三分之一的里程😆 我的雪季这次真的结束了!(吧)

Final #

这个雪季的雪日是滑雪以来最多的,从第一次双板体验,到后来曲折的单板学习,兜兜转转今年又是整个雪季的双板。感觉双板的水平已经和这么多年的单板差不多了。可能双板才是更适合我?

未来应该怎么进步呢?卡宾,自由式这些都可以尝试。在滑行的过程中感受到自由,比焦虑地练技术可能更适合我。我对滑雪的热爱,有相当一部分是因为弟弟每年的固定安排,这个雪季的双板让我自己确信,即使没有弟弟我也应该会一直滑下去 XD

数字生活 2026Q1

本季度变更 #

2026年第一季度,本篇新建在1月末,因为发现季度结束再回忆可能就忘记了,所以不如折腾了就随手记录一下。

本季度变动如下:

openclaw 的爆火让我大幅重构了个人基础设施,尤其是之前的 telegram bot 体系完全没 openclaw 替代,具体包括 beancount-bot obsidian-bot 以及各种回顾任务考虑由 openclaw cron 初加工。

输入方面:

  • 音乐方面,放弃了很多年付费订阅的 Spotify,原因第一是每年都在涨价,第二是 YouTube Prime 的订阅包含了 YouTube Music,因此尝试迁移到后者。

工具方面

  • karakeep all list 自动导入到 archivebox
  • https://healthchecks.io/ 定时服务监控和 https://uptimerobot.com 网络服务监控 一起合并到 uptime-kuma 此外还发现了 uptime-kuma 的 push 类型,可以通过服务主动发送心跳的方式做到被动监控,监控了内网的机器还有一些机器人,大幅提高掌控度。思考一下在三亚的各种服务是不是也可以使用 uptime-kuma 来监控?

完整版本工具库 #

  • 输入
    • 社交网络:Twitter
    • 论坛:V2EX, hacker news
    • RSS 订阅 (FreshRSS+Reeder),主要信息来源,订阅了包括博客、newsletter、微信公众号、微博时间线、mastodon等内容
    • 视频:Youtube, BiliBili, MICU
    • 音乐:Youtube Music
    • 播客:Overcast、小宇宙
    • 书籍:文石Leaf3 微信读书
  • 输出
    • 笔记:Obsidian
    • 博客 hugo on cloudflare
    • 书评:豆瓣 goodread
  • 工具
    • 通讯
      • telegram, Wechat
      • Gmail
      • iCloud
      • Outlook
    • 文件
      • Dropbox 文件同步
      • Google Drive 在线文档
      • iCloud 用于照片和备份
    • 信息流
      • Karakeep 网络书签
      • Instapaper 稍后阅读
      • ArchiveBox 网页存档
      • mbsync 邮件备份
      • Recoll 全文检索
    • 生产力
      • Toggl 时间记录
      • 滴答清单 待办管理工具
      • Google Calendar 个人日程管理
    • 个人数据
      • Obsidian 个人日志及笔记
      • Rond 个人位置时间线
      • Beanocunt 个人金融数据
      • Strava 个人运动数据
    • 隐私安全
      • Bitwarden 自建的密码管理及两步验证管理工具
      • cryptomater
      • DuckDuckGo masked email
    • 其他
  • 硬件
    • 计算机 MacBook Air M1 Mac Mini M4 ThinkPad X1 Carbon 2020
    • 鼠标 鼠标 Logtech MX Anywhere 3 鼠标 鼠标 罗技(G)G102 有线鼠标 黑色
    • HHKB Professional HYBRID Type-S
    • iPhone 15 Pro 红米K70E
    • Apple Watch S8 GPS 45mm
    • 耳机 Apple Airpods Pro
    • 电子书 文石Leaf3
  • 信息流
    • Douban RSS -> Karakeep
    • FreshRSS starred RSS -> Karakeep
    • Instapaper RSS -> Karakeep
    • Web -> Karakeep (manual)
    • Karakeep -> Archivebox

Uptime-kuma 使用

今年看RSS订阅中的年终总结时,频繁看到 uptime-kuma1 ,其实之前就耳闻过,这次刚好有动力折腾一下。在此之前我的监控需求主要由两个工具满足,其一是 uptimerobot2,主要监控网站是否正常,其二是 healthcheck3,主要监控定时任务是否正常。

从名字来看,我一直以为 uptime-kuma 只能替代 uptimerobot,没想到部署后发现对于定时任务 uptime-kuma 也可以使用 Push 的方式被动监控,因此完美替代了我此前的监控需求。删除 healthcheck 账户,uptimerobot 留着继续监控 uptime-kuma 本身。

另外在折腾的过程中,我的 Telegram Bot 频繁出问题,因此和大模型聊了一下 uptime-kuma 是否可以监控 Telegram Bot 的运行状况,Gemini 给了非常不错的回答,按照实现难度从低到高给了3种方案。

方案 监控粒度 复杂度 适用场景
Push 心跳 进程级 最通用,适合大多数个人 Bot
HTTP 检查 服务级 适合使用 Webhook 部署的专业 Bot
模拟用户 业务级 关键业务,需要确保指令响应完全正常

偷懒的个人用户当然选择 Push 心跳方式,在 uptime-kuma 中还是使用和定时任务一样的 Push 监控,需要在 Telegram Bot 的代码中实现心跳逻辑。

import requests
from apscheduler.schedulers.background import BackgroundScheduler

def send_heartbeat():
    try:
        requests.get("https://your-kuma-url/api/push/TOKEN?status=up&msg=OK")
    except Exception as e:
        print(f"Heartbeat failed: {e}")

scheduler = BackgroundScheduler()
scheduler.add_job(send_heartbeat, 'interval', minutes=1)
scheduler.start()

参考 #


  1. A fancy self-hosted monitoring tool https://github.com/louislam/uptime-kuma ↩︎

    ...

Bitwarden as SSH agent

SSH 密码登录由于安全/便利问题现在几乎不会推荐使用,使用密钥登录应该已经是基本操作。但是如何管理不同设备不同私钥是个大的问题,我之前的实践是同一份私钥复制到有登录需求的各个设备(几乎等于所有设备),毕竟为每台设备生成独立的密钥大幅提高了管理的难度。

今天偶然看到(RSS订阅突然多出了600+未读) Xuanwo 的文章: 2023-21: 我的 1Password 密钥管理实践,决定在安全方面优化一下 SSH 密钥管理体系。我日常使用 Bitwarden,搜索发现也支持了 SSH agent 功能1 。下面依次介绍不同平台的使用。

Windows 11 WSL2 #

参考文章 https://www.rebelpeon.com/bitwarden-ssh-agent-on-wsl2/

# host, you should install chocolate first
choco install npiperelay

# wsl2
sudo apt install socat

~/scripts/agent-bridge.sh, add source <path> to your shell rc.

export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock
ss -a | grep -q $SSH_AUTH_SOCK
if [ $? -ne 0   ]; then
    rm -f $SSH_AUTH_SOCK
    ( setsid socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"/mnt/c/ProgramData/chocolatey/lib/npiperelay/tools/npiperelay.exe -ei -s //./pipe/openssh-ssh-agent",nofork & ) >/dev/null 2>&1
fi

Then you can use ssh-add -l to test.

...

数字生活 2025Q4

本季度变更 #

2025年的最后一个季度,一直在三亚,Q3 发现的问题还需要抽空慢慢解决。

  • 本地网络网关一定要简单化,保持 wg 的稳定
  • 重要服务不要在本地跑

本季度变动如下:

输入方面:

  • RSS 阅读器放弃 Folo,重新用回 FreshRSS+Reeder 组合,订阅中加入了 mastodon ( https://douchi.space/@wogong/115220705802148678
  • 又又下载了小宇宙,Overcast 因为网络问题和中文搜索问题,使用起来体验确实差了点。

工具方面

  • 部署了 karakeep 替代 Raindrop,据此重构了信息流,甚至可以观察看看是否可以取代 archivebox
  • Paperless 扫描文档仓库几乎没有再使用了,如何管理扫描票据还真是个问题,直接照片可能更好其实

完整版本工具库 #

  • 输入
    • 社交网络:Twitter
    • 论坛:V2EX, hacker news
    • RSS 订阅 (FreshRSS+Reeder),主要信息来源,订阅了包括博客、newsletter、微信公众号、微博时间线、mastodon等内容
    • 视频:Youtube, BiliBili, MICU
    • 音乐:Spotify
    • 播客:Overcast、小宇宙
    • 书籍:文石Leaf3 微信读书
  • 输出
    • 笔记:Obsidian
    • 博客 hugo on cloudflare
    • 书评:豆瓣 goodread
  • 工具
    • 通讯
      • telegram, Wechat
      • Gmail
      • iCloud
      • Outlook
    • 文件
      • Dropbox 文件同步
      • Google Drive 在线文档
      • iCloud 用于照片和备份
    • 信息流
      • Karakeep 网络书签
      • Instapaper 稍后阅读
      • ArchiveBox 网页存档
      • mbsync 邮件备份
      • Recoll 全文检索
    • 生产力
      • Toggl 时间记录
      • 滴答清单 待办管理工具
      • Google Calendar 个人日程管理
    • 个人数据
      • Obsidian 个人日志及笔记
      • Rond 个人位置时间线
      • Beanocunt 个人金融数据
      • Strava 个人运动数据
    • 隐私安全
      • Bitwarden 自建的密码管理及两步验证管理工具
      • cryptomater
      • DuckDuckGo masked email
    • 其他
  • 硬件
    • 计算机 MacBook Air M1 Mac Mini M4 ThinkPad X1 Carbon 2020
    • 鼠标 鼠标 Logtech MX Anywhere 3 鼠标 鼠标 罗技(G)G102 有线鼠标 黑色
    • HHKB Professional HYBRID Type-S
    • iPhone 15 Pro 红米K70E
    • Apple Watch S8 GPS 45mm
    • 耳机 Apple Airpods Pro
    • 电子书 文石Leaf3
  • 信息流
    • Douban RSS -> Karakeep
    • FreshRSS starred RSS -> Karakeep
    • Instapaper RSS -> Karakeep
    • Web -> Karakeep (manual)

数字生活 2025Q3

本季度变更 #

本季度没什么变更,但是9月来三亚后,本地 PVE 由于网络环境变动,网络挂掉,跑的服务全部不可用了,甚至重要的 pass 密码管理也无法获取。启示

  • 本地网络网关一定要简单化,保持 wg 的稳定
  • 重要服务不要在本地跑

完整版本工具库 #

  • 输入
    • 社交网络:Twitter
    • 论坛:V2EX, hacker news
    • RSS 订阅 (Follow),主要信息来源,订阅了包括博客、newsletter、微信公众号、微博时间线等内容
    • 视频:Youtube, BiliBili, MICU
    • 音乐:Spotify
    • 播客:Overcast
    • 书籍:文石Leaf3 微信读书
  • 输出
    • 笔记:Obsidian
    • 博客 hugo on cloudflare
    • 书评:豆瓣 goodread
  • 工具
    • 通讯
      • telegram, Wechat
      • Gmail
      • iCloud
      • DuckDuckGo Email Forwarding
    • 文件
      • Dropbox 文件同步
      • Google Drive 在线文档
      • iCloud 用于照片和备份
    • 信息流
      • Rainboard 网络书签
      • Instapaper 稍后阅读
      • ArchiveBox 网页存档
      • mbsync 邮件备份
      • Recoll 全文检索
    • 生产力
      • Toggl 时间记录
      • 滴答清单 待办管理工具
      • Google Calendar 个人日程管理
    • 个人数据
      • Obsidian 个人日志及笔记
      • Rond 个人位置时间线
      • Beanocunt 个人金融数据
      • Paperless 扫描文档仓库
      • Strava 个人运动数据
    • 隐私安全
      • Bitwarden 自建的密码管理及两步验证管理工具
      • cryptomater
      • DuckDuckGo masked email
    • 其他
  • 硬件
    • 计算机 MacBook Air M1 Mac Mini M4 ThinkPad X1 Carbon 2020
    • 鼠标 鼠标 Logtech MX Anywhere 3 鼠标 鼠标 罗技(G)G102 有线鼠标 黑色
    • HHKB Professional HYBRID Type-S
    • iPhone 15 Pro 红米K70E
    • Apple Watch S8 GPS 45mm
    • 耳机 Apple Airpods Pro
    • 电子书 文石Leaf3
  • 信息流
    • Douban RSS -> Pinboard (IFTTT) -> RainDrop(IFTTT)
    • FreshRSS starred -> RainDrop(IFTTT)
    • Web -> RainDrop (manual)
    • FreshRSS starred -> ArchiveBox (systemd timer)
    • RainDrop -> ArchiveBox (systemd timer)

Etherscan Points 活动

近期 Etherscan 推出了十周年纪念活动,链接地址,仅限2025-08-12 前注册的账户参与(This campaign is our special treat for early users of Etherscan)。

Etherscan 是以太坊(Ethereum)网络中最著名、最权威的“区块链浏览器”(Block Explorer),一个功能强大的搜索引擎和数据查询平台,为用户提供透明、便捷的方式来探索和验证以太坊区块链上的所有公开信息。任何在以太坊上发生的操作,无论是转账、智能合约的执行,还是代币的发行,都会被记录在链上,而Etherscan则将这些复杂的数据以清晰、易于理解的方式呈现给大众。它不仅仅是一个技术工具,更是以太坊生态系统中透明度和可追溯性的基石。

Test Your OG Knowledge #

https://info.etherscan.com/test-your-og-knowledge-answers-fun-facts/

  1. When did Etherscan officially launch? 查了一圈没找到具体的位置,问了几个大模型,Grok 是对的,但是没给参考,ChatGPT 给的资料非常详细,还说出了 08-12 是域名注册时间,08-15 才是正式 Launch 时间,毫无疑问我被误导,正确答案是 08-15.

  2. Which early Etherscan-verified contract includes a read function that returns “Hello Ethereum!”? 以太坊的 Hello World

  3. What was the gas limit for the first 10,000 Ethereum blocks? 5000 gas

  4. What did devops199 write after freezing over 500k ETH in Parity’s multisig wallets? 非常昂贵的错误了233

    ...