博客 | Blog

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

    ...

数字生活 2025Q2

本季度变更 #

  • 输入
    • 季度末购买了微信读书会员,主要为了听自己导入书籍的有声书。
  • 工具
    • 家庭网关从 Clash 迁移到 Surge,不用 DHCP Server 的功能后没什么问题。
    • 购买了二手 [[ThinkPad X1 Carbon 2020]],体验非常不错

完整版本工具库 #

  • 输入
    • 社交网络: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)

数字生活 2025Q1

本季度变更 #

  • 输入
    • Follow 结束签到,论使用方便程度其实不如 FressRSS,因为限制了订阅的数量为500,且没有开放的API,在二季度初期还是日常更新回 FressRSS 吧
  • 工具
    • 放弃 Pinboard,付费了 Raindrop,目前使用体验中,最大的优点是可以全文检索,避免了目前的方案中需要集成 archivebox+recoll,由于是本地部署,受到网络限制。UI 界面其实不如 Pinboard 友好,虽然后者的界面属实复古。

完整版本工具库 #

  • 输入
    • 社交网络: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]]
    • 鼠标 [[鼠标 罗技(G)G304 LIGHTSPEED无线鼠标]] [[鼠标 罗技(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)

关于 DeepSeek 本地部署

如何在本地部署 DeepSeek 最新的模型?其实 DeepSeek 官方有相关指南1,但是更方便的部署方式是采用 ollama2,互联网上大部分教程都是采用此方案34,本文也不例外。

Ollama 方式部署 (NVIDIA平台) #

Ollama 是2023年6月开始的项目,使用 Go 语言写的工具,用于在本地一条命令安装、启动和管理大型语言模型,支持 Llama 3、Gemma、Mistral 等大模型,适用于 Windows、macOS、Linux 操作系统。目前在 Github 上 star 数 118k,可见其流行程度。

根据对应的操作系统,按照官网指示,下载安装 Ollama 到本地电脑。安装完毕后根据自己电脑配置,选择合适的模型下载:

1.5B version (smallest):
ollama pull deepseek-r1:1.5b

8B version:
ollama pull deepseek-r1:8b

14B version:
ollama pull deepseek-r1:14b

32B version:
ollama pull deepseek-r1:32b

70B version (biggest/smartest):
ollama pull deepseek-r1:70b

qwq
ollama pull qwq

这里有 Ollama 官方提供的DeepSeek 系列模型页面5,如果网络顺利的话,应该等待下载完毕就可与 LLM 进行交互。为了交互的方便,可以使用ChatBox,各个平台都有APP,也可以使用 Web 版,进行后端 API 的设置即可。

注意在 Linux 平台上,如果采用一键安装方式,会默认配置好 systemd 服务文件 /etc/systemd/system/ollama.service,自动启动 ollama serve,可以通过设置环境变量 OLLAMA_HOST 监听其他端口,更新后重启该服务即可。

...

使用fail2ban干掉暴力破解的IP

一般使用该工具都是应对 ssh 的暴力破解,虽然关闭密码访问、使用密钥可以让暴力破解没啥意义,但是日志中出现洪水一般的暴力登录尝试还是令人心烦,故所有公网的机器都建议安装该工具,其基本原理是使用正则表达式分析日志,提取访问失败的IP,制定一系列规则,满足规则条件则通过 [[iptables]] 封禁该IP,一定时间后解封。

jail.confjail.local 是 Fail2Ban 的两个配置文件,分别用于默认配置和用户自定义配置。一般建议不要直接修改 jail.conf,在 jail.local 中,只需定义你想修改的设置,未定义的部分会自动继承 jail.conf 的值。如果需要为某些服务创建专用规则,可以将它们分拆到单独的 .local 文件中,例如 /etc/fail2ban/jail.d/sshd.local

下面是一个保护 ssh 免被暴力破解的例子( /etc/fail2ban/jail.local ):

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
ignoreip = 127.0.0.1/8

如何查看 fail2ban 的日志呢? sudo tail -f /var/log/fail2ban.log

如何查看 fail2ban 状态?

sudo fail2ban-client status
sudo fail2ban-client status sshd

如何检查日志匹配情况:

sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

确保规则启用

sudo fail2ban-client reload

运行以下命令测试正则表达式是否匹配日志:

sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

wireguard ssh 不通问题

去年11月份用了三年的腾讯云服务器到期后,又趁着优惠买了两年的腾讯云,依旧是选择上海的服务器,但是带宽从8M下降到4M,考虑到我只用来部署 wireguard,预想中应该不会出什么问题,事实却教我做人,为此浪费了不少时间。

部署 wireguard 当然可以直接在 host 层面,但是手动管理配置文件比较繁琐,尤其在设备数量比较多的情况下,所以好几年前就实际在用 wg-easy 这个项目部署,有个前端页面进行在线设备的展示,以及新设备配置文件的自动生成,使用体验非常好,一句 docker compose up 即可部署完毕。

问题从换了部署服务器后出现了,配置文件没有更改的情况下,客户端到服务端的 ping 值异常的高,正常情况下应该是在 60 ms 左右 (北京-上海),但是在10分钟到数小时不等的时间后,这个延时会上升到 300+ ms,且此时 SSH 登录会卡死在下面这一步。

 debug1: expecting SSH2_MSG_KEX_ECDH_REPLY

网络知识有限的我,也知道这个时候网络是通的,ssh 认证阶段出了问题。一番搜索找到 reddit 这个帖子,完全一样的问题,原因在于配置文件中 MTU 参数不对,MTU,全称 Maximum Transmission Unit,即最大传输单元,MTU 就是网络中能够传输的最大数据包大小,以字节为单位。MTU 的作用:

  • 限制数据包大小: MTU 就像一个“门框”,只有小于等于 MTU 的数据包才能通过。
  • 防止数据包过大: 过大的数据包可能会导致网络拥塞、丢包等问题。
  • 影响网络性能: MTU 的大小会直接影响网络传输效率。MTU 设置过小,会导致数据包分片过多,增加网络开销;MTU 设置过大,又可能导致数据包无法通过某些网络设备。

华为关于 MTU 的解释,链接

按照帖子的操作测试获得本地网络的 MTU,注意 macOS 的 ping 命令和 Linux 存在差异:macOS 的 -D 标志等同于 Linux 的 -M do,都是设置 “Don’t Fragment” 位。macOS 的 -s 参数不包含 IP 和 ICMP 头部的 28 字节,所以如果要匹配 Linux 的大小,需要减去 28。

...