本文接续我最初那篇homelab文章,在那篇文章里,我讲了自己如何从CGNAT地狱走出来,搭建出一整套Dell OptiPlex方案,跑着我的作品集、我女朋友的网站、我妈的网站,以及一台我和女朋友至今还一起玩的Minecraft服务器。那台自托管服务器至今依然在跑着它一直以来负责的一切。这篇文章讲的是一个更窄、独立的问题:humfurie.org上博客文章里用的图片,应该放在哪里。
2025年10月:尝试用R2代替S3
大概在2025年10月左右,我决定试试Cloudflare R2,专门用来做这件事——托管本站博客文章的图片。这不是要替代我的自托管服务器,只是为了一个特定的任务准备的云存储:无论读者身处何地,都能快速地把图片送到他们面前。
S3就是在这时候被拿出来讨论的,但很快就出局了。R2几乎是免费就解决了这个问题。标准存储每月每GB收费$0.015,而egress(实际把文件送到访问者面前的费用)是$0.00。S3的存储每GB更贵,而它的egress费用会让这个博客上每一次图片加载都要花我的钱,而且本来就更慢。API和S3兼容,所以我不用重写任何代码就能试用。免费、更快,而且是即插即用。这场比较根本没有悬念。
那我到底什么时候才会用S3?
也不是永远不会,只是要等到一个特定条件组合成立的时候:如果我最终把整套系统从自托管硬件迁移到EC2实例上,而且这笔开销不再算是一笔有意义的支出,而只是零花钱。到那个时候,为了EC2和S3全托管栈带来的便利而付钱给AWS,看起来就会像是拿钱换时间的合理交易,而不是预算上的一个窟窿。在那之前,博客图片用R2、其余一切用自托管服务器,客观上就是钱花得更划算的做法。
这基本上就是全部的计算逻辑。EC2和S3并不是差的服务,它们只是一种消费——只有当我能把它当作一种享受性开销、而不是必需品来看待时,才有意义。就像我在那个失业的一月没办法为EC2的花费找到理由一样,一旦成本不再是决定因素,我可能真的会想要它。这一次R2赢的不只是价格,它赢的地方在于让我可以把整个关于AWS的决定无限期地往后推。
顺带一提,GCP从一开始就没进入过这场讨论。综合我在2024到2025年直接接触它时遇到的问题,以及我此后读到的大量账单恐怖故事(忘记关闭的密钥和默认设置一夜之间变成五位数账单),不管是不是付费层级,我都不会放心把任何重要的东西托付给它。
真正的教训
我的自托管服务器至今依然处理着它一直以来负责的一切。R2只是接管了一个特定的任务——让这个博客的图片保持快速又便宜,而不需要动用EC2或S3。EC2和S3并没有被永远排除在外,它们只是在等待付费不再是一笔真正的取舍的那一天。