今年看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()
参考 #
-
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]]
- 其他
- Anki 记忆
- mihomo Surge 代理工具
- https://healthchecks.io/ 定时服务监控
- https://uptimerobot.com 网络服务监控
- 通讯
- 硬件
- 计算机 [[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]]
- 其他
- Anki 记忆
- mihomo Surge 代理工具
- https://healthchecks.io/ 定时服务监控
- https://uptimerobot.com 网络服务监控
- 通讯
- 硬件
- 计算机 [[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/
-
When did Etherscan officially launch? 查了一圈没找到具体的位置,问了几个大模型,Grok 是对的,但是没给参考,ChatGPT 给的资料非常详细,还说出了 08-12 是域名注册时间,08-15 才是正式 Launch 时间,毫无疑问我被误导,正确答案是 08-15.
-
Which early Etherscan-verified contract includes a read function that returns “Hello Ethereum!”? 以太坊的 Hello World
-
What was the gas limit for the first 10,000 Ethereum blocks? 5000 gas
-
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]]
- 其他
- Anki 记忆
- mihomo Surge 代理工具
- https://healthchecks.io/ 定时服务监控
- https://uptimerobot.com 网络服务监控
- 通讯
- 硬件
- 计算机 [[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]]
- 其他
- Anki 记忆
- Clash Surge 代理工具
- https://healthchecks.io/ 定时服务监控
- https://uptimerobot.com 网络服务监控
- 通讯
- 硬件
- 计算机 [[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.conf 和 jail.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。
...