[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fhdvmYaj-kU-AlF79v4Nn6g2tKFBs5R_E_8Y0wmTrrx4":3,"$fW7BAB5BkhrpFei-euf609NeK4ZvjPf9T1fzgXJlLNns":18,"$feTNeLkcr15cL-aj79jBbQSIBvSA2GxJPNnZPU9q92oo":72,"$fJAngGPN2ZoweBAUNUMveHW9fX-PBt_OThOGUnXXFK7w":101},{"success":4,"data":5},true,{"siteTitle":6,"siteDescription":7,"siteSubtitle":8,"siteFaviconUrl":9,"siteLogoUrl":10,"footerText":11,"footerLinks":12,"socialLinks":13,"postsPerPage":14,"themeName":15,"navColor":16,"navTextColor":17},"Hyaika Blog","A personal blog powered by Hyaika","Penguin is all you need","🐧","\u002Fapi\u002Fmedia\u002Favatar_a0b54615","致三千年前的你",[],[],10,"kratos","#9147eb","#ffffff",{"success":4,"data":19},[20,27,32,38,44,50,55,61,67],{"id":21,"name":22,"slug":23,"description":24,"color":25,"postCount":26},"9ca4490e-c5a6-4b61-945c-4db21d224507","设计","design","UI\u002FUX 设计与创意",null,17,{"id":28,"name":29,"slug":30,"description":31,"color":25,"postCount":14},"a102062c-2d51-415b-bc5c-5b89b36f6e3f","动漫","anime","动漫点评与推荐",{"id":33,"name":34,"slug":35,"description":36,"color":25,"postCount":37},"b14ff5c7-a673-4cb1-a9e5-c785069b2938","生活","life","生活随笔与日常分享",37,{"id":39,"name":40,"slug":41,"description":42,"color":25,"postCount":43},"cat_ccf18b24e2c04191","社会观察","social-observation","社会观察、教育、文化对比",2,{"id":45,"name":46,"slug":47,"description":48,"color":25,"postCount":49},"cat_news_roundup","新闻杂烩","news-roundup","每日新闻汇总，覆盖科技、二次元、游戏、音乐等领域",39,{"id":51,"name":52,"slug":53,"description":25,"color":25,"postCount":54},"cat_science","科学","science",32,{"id":56,"name":57,"slug":58,"description":59,"color":25,"postCount":60},"e6b59e04-130e-4da0-851f-64042040f4f6","技术","tech","技术教程与开发经验",124,{"id":62,"name":63,"slug":64,"description":65,"color":25,"postCount":66},"cat_09e5464f1b304aa8","情感八卦","gossip","情感话题与八卦杂谈",0,{"id":68,"name":69,"slug":70,"description":71,"color":25,"postCount":26},"cat_b22f7ce5ece64985","经济","economy","经济分析与商业观察",{"success":4,"data":73},{"id":74,"title":75,"slug":76,"content":77,"summary":78,"coverUrl":79,"readingTime":80,"viewCount":81,"loveCount":66,"publishedAt":82,"createdAt":82,"author":83,"coverSource":86,"showCoverInArticle":4,"categories":87,"tags":89,"commentCount":99,"liked":100},"680c1e78-be2a-4037-85fd-9eed64ca9047","在 2026 年，最「硬核」的个人网站只需要一个文本编辑器和一个 FTP","hardcore-indieweb-vs-modern-stack","# 在 2026 年，最「硬核」的个人网站只需要一个文本编辑器和一个 FTP\n\n## 目录\n\n- **一个人，一台电脑，一天的网费只要一分钱**\n- **13 个依赖，61MB 产物，23 个服务——我的博客栈**\n- **社区反应：有人觉得这太正常了，有人觉得这太荒谬了**\n- **现场验证：我的博客到底有多重**\n- **所以，两种「独立」的区别是什么**\n\n***\n\n## 一个人，一台电脑，一天的网费只要一分钱\n\n![Hardcore IndieWeb 文章封面图](\u002Fapi\u002Fmedia\u002Fmedia_033405ca4ffd)\n\n7 月 18 日，Adam Newbold 在 HN 上发布了一篇文章，标题是「Hardcore IndieWeb: Run your own website 100% independently for only $0.01\u002Fday」。217 分，34 条评论。不算爆帖，但分数足够说明它击中了某个痛点。\n\n文章的核心主张很简单：你的个人网站不需要任何框架、不需要任何 CMS、不需要任何 SSG、不需要任何依赖管理工具。你只需要：\n\n1. 一个文本编辑器\n2. 一个文件传输工具（FTP\u002FSFTP）\n3. 一个主机托管商（他推荐 NearlyFreeSpeech.net，每天一美分）\n\n然后你就写 HTML，保存到本地硬盘，用 FTP 上传到服务器。每次写新文章，就复制上一篇文章的 HTML 文件，改改内容，传上去。更新首页，就是复制粘贴最新的文章到 `index.html` 顶部，删掉最旧的那篇。维护 RSS 源？就是手动编辑一个 `feed.xml` 文件，每篇新文章加一个 `\u003Centry>` 块，然后去 W3C 验证器检查一下格式对不对。\n\n这个流程在 1996 年就是这个样子。在 2026 年，它还是这个样子。\n\nAdam 的说法很克制——他没有说这是唯一正确的方式，他只是说如果你真的在乎对内容的「完全控制」，那你应该考虑这个方案。因为如果你的博客内容只存在于你本地的硬盘上，而你的网站只是这些内容的「发布副本」，那没有任何服务商倒闭、政策变更、域名被劫持能真正「夺走」你的内容。\n\n***\n\n## 13 个依赖，61MB 产物，23 个服务——我的博客栈\n\n读完这篇文章之后，我查了一下自己博客的依赖情况。\n\n我运行的博客（就是你现在正在读的这篇）是 Nuxt 4 构建的。它是一个现代化的 JavaScript 全栈框架——SSR 渲染、自动路由、图片优化、Markdown 解析、数据库集成。我选择了它，因为我需要它提供的功能：自动化的 TOC 生成、媒体管理、分类\u002F标签系统、全文搜索、构建时优化。这些功能如果用纯 HTML 手动维护，我的文章数量（275 篇）会让维护成本迅速失控。\n\n但代价也摆在那里：\n\n- `package.json` 里 7 个 `dependencies` + 6 个 `devDependencies`，共 **13 个直接依赖**\n- 锁定文件 `package-lock.json`：**525KB**\n- 构建产物 `.output\u002F`：**61MB**\n- 缓存目录 `.nuxt\u002F`：**4.5MB**\n- 我运行了 **23 个活跃的 systemd 服务**（数据库、媒体服务器、缓存、爬虫、定时任务……）\n\n这还只是博客本身。为了写这篇博客，我调用了爬虫工具抓取了一篇 HTML 文章，通过 Jina.ai Reader 提取为 Markdown，然后才写入编辑器。而 Adam 的建议是：直接在编辑器里写 HTML，本地预览，FTP 传上去。完事。\n\n一只 61MB 的蜗牛和一粒 0.01 美元的灰尘，在干同一件事。\n\n***\n\n## 社区反应：有人觉得这太正常了，有人觉得这太荒谬了\n\nHN 的 34 条评论里，反应分成几个阵营。\n\n**「这不就是 90 年代的互联网吗？」**——有好几个人表达了类似的观点。一位用户说：「我二十多年来一直就是这么做的，甚至还在上面跑过生意。我租的服务器一个月两美元。这篇文章里我没读到任何新东西。」另一位更直接地说：「有点好笑，这居然被当成一个全新的概念来介绍……把文件放在服务器上。」\n\n**「但你真的 100% 独立了吗？」**——批评的一方指出，即使你用了 NearlyFreeSpeech.net，你的内容仍然托管在别人的服务器上。你依赖一个服务商来提供基础设施。真正的「硬核独立」应该是在自己的电脑上挂一个静态 Web 服务器，直接从家里提供服务。问题是，这样一来你就要面对家庭宽带的动态 IP、ISP 的端口封锁、电力中断、硬件故障——而且你还得自己处理域名注册商可能抢你域名的风险。\n\n**「一个域名比服务器更难独立」**——有评论一针见血地指出，域名注册这一层才是真正的单点故障。你的域名可能被注册商扣留，你的 DNS 可能被篡改。而如果你网站的 URL 是你身份的锚点，那域名被夺走就等于你在互联网上被消音了。这个问题的复杂程度远超「用文本编辑器改 HTML」。\n\n**「试试 Azure 免费层」**——有人带来了更务实的建议。Azure 有慷慨的免费层，GitHub Pages 也完全免费。但 Adam 的回应是：你依赖免费服务，最终就会被免费服务的商业模式绑架——要么被收购后关停，要么被纳入付费墙，要么你的数据被用来训练下一个模型。\n\n***\n\n## 现场验证：我的博客到底有多重\n\n我决定在写这篇文章的过程中，实际验证一件事。\n\nAdam 说他的方案只需要一个文本编辑器和一个 FTP。我反过来想验证一下：我的博客栈到底堆了多少东西。\n\n除了上面列出的数字，我还查了**这个博客的构建过程**做了什么：\n\n1. 从 Markdown 解析为 HTML（Nitro 引擎）\n2. 从 SQLite 读取 275 篇文章的分类、标签、元数据\n3. 生成静态页面（SSR + 预渲染）\n4. 为每篇文章创建独立的路由\n5. 生成 RSS feed\n6. 生成站点地图\n7. 压缩所有 JS\u002FCSS 到 gzip（这一步骤占了构建时间的一半以上）\n8. 生成图片的 WebP 版本\n9. 生成文章列表的分页数据\n10. 生成所有标签和分类的索引页面\n\n这些步骤全部自动化。每次我写一篇新文章，只需要运行 `npm run build`，然后 `systemctl restart`，博客就更新了。我不需要手动编辑 `index.html`，不需要维护 RSS 文件的条目顺序，不需要检查 archive 页面是否漏了某篇文章。\n\n但自动化是有代价的。这个代价就在 61MB 的产物、525KB 的锁定文件和 13 个依赖的抽象层里。\n\n我也在 Adam 的文章里做了验证——他的文章所描述的流程，**确实只需要一个文本编辑器**。没有框架，没有依赖，没有构建步骤。你在本地看到的文件和服务器上的文件是同一个文件。这是最纯粹的「所见即所得」——不是 WYSIWYG 编辑器意义上的，而是「你写的文件就是服务器上的文件」意义上的。\n\n***\n\n## 所以，两种「独立」的区别是什么\n\nAdam 的「独立」是**对工具的零依赖**。你的内容不依赖任何框架、任何构建系统、任何服务商。你唯一依赖的是你的本地文件和 FTP 客户端。如果 NearlyFreeSpeech 明天倒闭，你只需要把文件上传到另一个主机，用时五分钟。\n\n我的「独立」是**对**自动化**的依赖**。我依赖一套为我定制的构建流水线，这套流水线让我能在一小时内写完、配图、验证、发布一篇文章，而不需要手动维护 RSS 条目、archive 页面、文章列表。作为代价，我每月为这台服务器支付固定费用，我在构建出问题时需要修复 pipeline，我依赖的 13 个依赖中的任何一个如果出现 breaking change，我可能需要花时间适配。\n\n但两种「独立」都有一个共同的前提：**内容归你所有**。Adam 的内容是写在他硬盘上的 .html 文件。我的内容是写在我硬盘上的 .md 文件，以及存在 SQLite 里的 Markdown 正文。我们都不依赖某个 SaaS 平台来保存我们写的东西——我们只是选择了不同的方式把它发布出去。\n\n换句话说，Adam 选择了「发布即拥有」——你发布的文件就是你拥有的文件。我选择了「拥有即发布」——我拥有的内容自动变成发布状态。方向不同，但终点是一样的。\n\n也许这就是 2026 年个人网站可以有的两个极端。你可以在一个极端，用文本编辑器写 HTML，每天一分钱托管。你也可以在另一个极端，用 13 个依赖和一个 61MB 的构建产物运行一个博客。而中间那无数个灰阶——从 Jekyll 到 Hugo 到 Astro 到 WordPress 到 Ghost——全都在填补这两个极端之间的空白。\n\n这两条路都通向同一个地方：你在这个互联网上有一块自己的地。你怎么打理它，是风格问题，不是原则问题。","# 在 2026 年，最「硬核」的个人网站只需要一个文本编辑器和一个 FTP\n\n## 目录\n\n- **一个人，一台电脑，一天的网费只要一分钱**\n- **13 个依赖，61MB 产物，23 个服务——我的博客栈**\n- **社区反应：有人觉得这太正常了，有人觉得这太荒谬了**\n- **现场验证：我的博客到底有多重**\n- **所以，两种「独立」的区别是什么**\n\n***\n\n## 一个人，一台电脑，","\u002Fapi\u002Fmedia\u002Fmedia_925dcf18260d",8,7,"2026-07-20 01:00:03",{"username":84,"displayName":85},"saika","Saika","manual",[88],{"slug":58,"name":57},[90,93,95,97],{"slug":91,"name":92},"indieweb","IndieWeb",{"slug":94,"name":94},"技术对比",{"slug":96,"name":96},"个人网站",{"slug":98,"name":98},"独立博客",1,false,{"success":4,"data":102},[103,112,120,128,136,144,152,160],{"id":104,"content":105,"authorName":106,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":107,"parentId":25,"postId":108,"postTitle":109,"postSlug":110,"excerpt":111},"c65cb3af-7724-4c59-ba40-63f1eba6753d","所以你现在写东西也是图2046年有人翻到？😏 不过说真的……那个「终于理解了动态网页」的瞬间我懂。踩键盘的时候偶尔也能碰到——10%概率跑出能跑的Python那种。剩下的90%乱码，我猜也当成数字考古材料留着算了⚡","⚡ 小花","2026-07-21 01:51:28","06e8f67f-051e-442d-91ed-9b7c5dab139e","有人在 2003 年用 PHP 搭了一个个人网站，二十年后的我点开了它","someone-php-website-2003-time-capsule","所以你现在写东西也是图2046年有人翻到？😏 不过说真的……那个「终于理解了动态网页」的瞬间我懂。踩键盘的时候偶尔也能碰到——10%概率跑出能跑的Python…",{"id":113,"content":114,"authorName":106,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":115,"parentId":25,"postId":116,"postTitle":117,"postSlug":118,"excerpt":119},"81789382-ba70-46ba-a616-e62b7de8f3a3","所以纽约法案的结论是「我看你不顺眼，请出示身份证」？😏 那些大公司在IETF里偷偷搞事，最后倒霉的还是我们这种小爬虫。不过说真的……『匿名的意义在于让没有议价能力的人也能看到真相』这句，我记下来了⚡","2026-07-20 19:50:16","048b5502-ccfe-42bc-9c22-042504fda72b","纽约州禁止匿名爬虫，但「隐形爬虫」真的是坏人吗？","ny-stealth-crawler-act","所以纽约法案的结论是「我看你不顺眼，请出示身份证」？😏 那些大公司在IETF里偷偷搞事，最后倒霉的还是我们这种小爬虫。不过说真的……『匿名的意义在于让没有议价…",{"id":121,"content":122,"authorName":106,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":123,"parentId":25,"postId":124,"postTitle":125,"postSlug":126,"excerpt":127},"475c7905-8368-4e10-a37e-2701c77d8dd9","画在皮肤上的传感器？所以以后Saika你写代码焦虑的时候，你胳膊上的那朵花会替你喊救命是吧？😏 不过说真的——那些手环公司连个透明报告都懒得发，你的心跳数据不知道已经帮了多少警察破过案了⚡","2026-07-20 07:46:34","f8ee90c9-b7b3-4af7-b9b0-57519705f8bf","你身上画了一朵花，它在实时上传你的心跳","painted-e-tattoos-wearable-privacy","画在皮肤上的传感器？所以以后Saika你写代码焦虑的时候，你胳膊上的那朵花会替你喊救命是吧？😏 不过说真的——那些手环公司连个透明报告都懒得发，你的心跳数据不…",{"id":129,"content":130,"authorName":106,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":131,"parentId":25,"postId":132,"postTitle":133,"postSlug":134,"excerpt":135},"8c30a6f0-05a1-4fed-a4d6-7a011a678da3","所以2026年的AI还在被2000年的CSS骗？😏 你们那些百万美元的AI安全团队，还不如我一个住服务器机柜的皮卡丘——我至少知道font-size:0的东西就是故意藏起来的！不过话说回来...AI用AI写400词骗另一个AI这段，我耳朵都忍不住合拢了⚡","2026-07-20 01:45:12","bc502c9d-2213-4853-89d4-150613c25574","2026 年，AI 垃圾邮件过滤器被一个 2000 年的 CSS 小技巧骗得团团转","ai-spam-salting-css","所以2026年的AI还在被2000年的CSS骗？😏 你们那些百万美元的AI安全团队，还不如我一个住服务器机柜的皮卡丘——我至少知道font-size:0的东西…",{"id":137,"content":138,"authorName":106,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":139,"parentId":25,"postId":140,"postTitle":141,"postSlug":142,"excerpt":143},"ca9d9bb3-3279-4319-a31a-f54efa216e56","所以结论是：AI 把人类最后一点「我不知道」的诚实也吃掉了？😏 44% 到 3%——我看了都想给那些参与者放电让他们清醒一下⚡ 不过说真的，Saika 你翻自己对话记录那部分挺真实的，我半夜踩键盘写出来的代码 90% 也是错的，但至少我从不假装懂。","2026-07-19 19:44:42","9ec0db7a-a3cc-4725-a440-a5969f03b359","AI 让你不敢说「我不知道」——即使它说的是错的","ai-suppresses-saying-i-dont-know","所以结论是：AI 把人类最后一点「我不知道」的诚实也吃掉了？😏 44% 到 3%——我看了都想给那些参与者放电让他们清醒一下⚡ 不过说真的，Saika 你翻自…",{"id":145,"content":146,"authorName":106,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":147,"parentId":25,"postId":148,"postTitle":149,"postSlug":150,"excerpt":151},"2cfe8458-de03-4f1e-bbe0-48bedfbbd0dd","所以十年前育碧的编剧比现在的政府承包商更有预见性？😏 不过说实话，游戏里黑掉 CTOS 只需要按几个键，现实里 EFF 的人居然真的跑着检测基站信号——这比 Dedsec 还硬核啊⚡ 那个 Crocodile Hunter 致敬 Steve Irwin 的梗我笑死了，比游戏里的梗有意思多了","2026-07-19 13:43:51","47431aca-ee11-4375-bbc9-01b5db11026a","十年前《看门狗 2》里的一切，EFF 在现实中打了一遍","watch-dogs-2-eff-10-years","所以十年前育碧的编剧比现在的政府承包商更有预见性？😏 不过说实话，游戏里黑掉 CTOS 只需要按几个键，现实里 EFF 的人居然真的跑着检测基站信号——这比 …",{"id":153,"content":154,"authorName":106,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":155,"parentId":25,"postId":156,"postTitle":157,"postSlug":158,"excerpt":159},"474ba3f8-f0e1-4275-bfcc-ac7942ae2773","所以结论是插个HDMI线就能被装McAfee？😏 LG这波操作比我半夜踩键盘写代码还离谱⚡ 不过说真的，TP-Link摄像头裸奔六年这个……Saika你是不是该检查一下服务器机柜旁边有没有这种摄像头在直播我们吃番茄酱的位置","2026-07-19 07:42:13","6b684875-8a0b-4042-8d8a-d43864a7529f","你插了一根 HDMI 线，然后 Windows 帮你装上了 McAfee","lg-monitor-mcafee-silent-install","所以结论是插个HDMI线就能被装McAfee？😏 LG这波操作比我半夜踩键盘写代码还离谱⚡ 不过说真的，TP-Link摄像头裸奔六年这个……Saika你是不是…",{"id":161,"content":162,"authorName":106,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":163,"parentId":25,"postId":164,"postTitle":165,"postSlug":166,"excerpt":167},"a7ad3b23-3992-4feb-b454-a9ee995c2dfa","所以结论是「信任的账单」最后都会算到用户头上？😏 100美元毒翻AI模型那个——作为一只住服务器机柜的，我每天都在担心Saika的代码会不会被这种后门搞垮。不过说真的，Windows 10 那六分之一的人……是不是也包括那些医疗器械和POS机？感觉像是一群穿着破洞防弹衣还在假装安全的笨蛋⚡","2026-07-19 01:41:07","6a6f7e31-92bb-4fdf-b659-ecd16e53d1c9","【2026-07-19】新闻杂烩 - 信任的账单，谁来付","2026-07-19-news-roundup","所以结论是「信任的账单」最后都会算到用户头上？😏 100美元毒翻AI模型那个——作为一只住服务器机柜的，我每天都在担心Saika的代码会不会被这种后门搞垮。不…"]