[{"data":1,"prerenderedAt":1591},["ShallowReactive",2],{"site-search-articles":3,"article-\u002Fblog\u002F40\u002F01":403,"article-around-\u002Fblog\u002F40\u002F01":1532},[4,17,29,40,51,60,68,76,83,90,98,104,110,116,128,137,145,154,163,170,178,184,190,195,202,210,215,221,226,232,237,245,252,257,264,272,276,282,289,295,299,303,308,313,319,324,328,333,340,346,351,359,365,372,378,385,392,398],{"id":5,"path":6,"title":7,"description":8,"date":9,"tags":10,"category":14,"minutes":15,"pinned":16},"blog\u002Fblog\u002Fnuxt4-vuetify4-blog.md","\u002Fblog\u002Fnuxt4-vuetify4-blog","Nuxt 4 + Vuetify 4 个人博客搭建记录","从内容结构、组件分层到服务端渲染，记录这个博客从零开始的完整实现过程。","2026-08-30",[11,12,13],"Nuxt","Vuetify","博客","开发",12,true,{"id":18,"path":19,"title":20,"description":21,"date":22,"tags":23,"category":26,"minutes":27,"pinned":28},"blog\u002Fblog\u002Fphoto-migration.md","\u002Fblog\u002Fphoto-migration","Google 相册迁移到 iCloud 分享","梳理照片导出、元数据修复与共享图库迁移过程，记录几个容易忽略的细节。","2026-08-26",[24,25],"相册","iCloud","生活",8,false,{"id":30,"path":31,"title":32,"description":33,"date":34,"tags":35,"category":14,"minutes":39,"pinned":28},"blog\u002Fblog\u002Fdocker-proxy.md","\u002Fblog\u002Fdocker-proxy","Docker 部署与反向代理配置","使用多阶段构建、容器重启策略和 Nginx 反向代理完成博客服务的可重复部署。","2026-08-18",[36,37,38],"Docker","Nginx","部署",10,{"id":41,"path":42,"title":43,"description":44,"date":45,"tags":46,"category":49,"minutes":50,"pinned":28},"blog\u002Fblog\u002Fsummer-coast.md","\u002Fblog\u002Fsummer-coast","一组夏日海边照片","把散落在相机和手机里的片段整理成一篇安静的夏日相册。","2026-08-09",[47,48],"摄影","夏日","随记",5,{"id":52,"path":53,"title":54,"description":54,"date":55,"tags":56,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F09-CloudFlare 优选 IP.md","\u002Fblog\u002F40\u002F09-cloudflare-ip","CloudFlare 优选 IP","2026-07-22 03:17:28",[57,58],"Cloudflare","优选域名","Blog",{"id":61,"path":62,"title":63,"description":63,"date":64,"tags":65,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F08-Cloudflare ImgBed 免费私有图床完整部署手册.md","\u002Fblog\u002F40\u002F08-cloudflare-imgbed","Cloudflare ImgBed 免费私有图床完整部署手册","2026-07-19 02:09:08",[57,66,67],"对象存储","图床",{"id":69,"path":70,"title":71,"description":71,"date":72,"tags":73,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F07-腾讯云 EdgeOne 边缘函数实现七牛&S3 随机图床 API.md","\u002Fblog\u002F40\u002F07-edgeone-ands3-api","腾讯云 EdgeOne 边缘函数实现七牛云 & S3 存储随机图床 API","2026-07-13 21:25:48",[74,75,67],"EdgeOne","七牛云",{"id":77,"path":78,"title":79,"description":79,"date":80,"tags":81,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F06-腾讯 EdgeOne 部署 Twikoo 评论系统指南.md","\u002Fblog\u002F40\u002F06-edgeone-twikoo","腾讯EdgeOne部署Twikoo评论系统指南","2026-06-14 17:41:11",[74,82],"Twikoo",{"id":84,"path":85,"title":86,"description":86,"date":87,"tags":88,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F05-OpenList 接入 S3 对象存储完整使用教程.md","\u002Fblog\u002F40\u002F05-openlist-s3","OpenList 接入 S3 对象存储完整使用教程","2026-06-11 13:08:07",[66,89],"OpenList",{"id":91,"path":92,"title":93,"description":94,"date":95,"tags":96,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F04-赛博大善人Cloudflare R2 图床.md","\u002Fblog\u002F40\u002F04-cloudflare-r2","赛博大善人 Cloudflare R2 图床","基于 Cloudflare R2 + 腾讯 Edge One + PicList 搭建免费、全球加速的图床方案","2026-06-09 13:07:35",[59,67,97],"CDN加速",{"id":99,"path":100,"title":101,"description":101,"date":102,"tags":103,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F03-白嫖免费图床，套CDN加速.md","\u002Fblog\u002F40\u002F03-cdn","白嫖免费图床，套 CDN 加速","2026-06-09",[59,67,97],{"id":105,"path":106,"title":107,"description":107,"date":108,"tags":109,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F02-零基础优雅搭建静态博客全教程.md","\u002Fblog\u002F40\u002F02","零基础优雅搭建静态博客全教程","2026-06-04",[59],{"id":111,"path":112,"title":113,"description":113,"date":114,"tags":115,"category":59,"minutes":50,"pinned":28},"blog\u002Fblog\u002F40-博客搭建\u002F01-远古产物—博客.md","\u002Fblog\u002F40\u002F01","赛博空间的私人岛屿：博客架构与风格美学","2026-06-03",[59],{"id":117,"path":118,"title":119,"description":119,"date":120,"tags":121,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F15.关于NAT回流与内网域名直连的终极指南.md","\u002Fblog\u002F10\u002F20\u002Fnat","关于 NAT 回流与内网域名直连的终极指南","2026-05-13",[122,123,124,125,126],"docker","DNS","Lucky","NAT 回流","远程访问","软路由",{"id":129,"path":130,"title":131,"description":131,"date":132,"tags":133,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F25.基于QMediaSync的飞牛外网strm直连.md","\u002Fblog\u002F10\u002F30-nas\u002Fqmediasyncstrm","基于 Lucky 反代与 QMediaSync 的飞牛外网 STRM 直连","2026-02-08",[134,135,136],"NAS","飞牛 OS","Strm",{"id":138,"path":139,"title":140,"description":140,"date":141,"tags":142,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F14.基于飞牛漏洞安全访问lucky反代&雷池防护.md","\u002Fblog\u002F10\u002F20\u002Fluckyand","基于飞牛漏洞安全访问Lucky反代&雷池防护","2026-02-03",[122,143,124,144,126],"WAF","飞牛",{"id":146,"path":147,"title":148,"description":148,"date":149,"tags":150,"category":153,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F60-N1&玩客云&OEC\u002F03.oec-fnOS安装.md","\u002Fblog\u002F10\u002F60-n1andandoec\u002Foec-fnos","OEC-Turbo (RK3566) 安装飞牛 OS","2026-01-24",[151,152,134],"OEC","飞牛OS","N1&玩客云&OEC",{"id":155,"path":156,"title":157,"description":157,"date":158,"tags":159,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F13.Lucky反向代理终极指南.md","\u002Fblog\u002F10\u002F20\u002Flucky","Lucky 反向代理终极指南","2026-01-16",[122,160,161,124,162,126],"OpenWRT","IPv4","IPv6",{"id":164,"path":165,"title":166,"description":166,"date":167,"tags":168,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F11.NAS 导航页的终极形态.md","\u002Fblog\u002F10\u002F10-docker\u002Fnas","告别繁琐配置：NAS 导航页的终极形态 —— 从 Sun-Panel 到 FlatNAS","2026-01-05",[122,134,169],"导航页",{"id":171,"path":172,"title":173,"description":173,"date":174,"tags":175,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F10.LogVar 弹幕 API 部署指南.md","\u002Fblog\u002F10\u002F10-docker\u002Flogvar-api","LogVar 弹幕 API  (纯本地缓存版) 部署指南","2025-12-30",[122,176,177],"弹幕 API","媒体库",{"id":179,"path":180,"title":181,"description":181,"date":182,"tags":183,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F24.飞牛NAS第三方应用商店安装.md","\u002Fblog\u002F10\u002F30-nas\u002Fnas","飞牛 NAS 第三方应用商店 (FnDepot) 安装指南","2025-12-02",[134,135],{"id":185,"path":186,"title":187,"description":187,"date":188,"tags":189,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F09.兰空图床和高清图标库.md","\u002Fblog\u002F10\u002F10-docker","兰空图床和高清图标库","2025-11-15",[122,67],{"id":191,"path":186,"title":192,"description":192,"date":193,"tags":194,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F08.你是否需要一个图床？.md","你是否需要一个图床？","2025-11-14",[122,67],{"id":196,"path":197,"title":198,"description":198,"date":199,"tags":200,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F23.Hills播放器-Windows-安卓.md","\u002Fblog\u002F10\u002F30-nas\u002Fhills-windows","Hills 播放器（Windows + 安卓）","2025-11-10",[201],"Emby 第三方播放器",{"id":203,"path":204,"title":205,"description":205,"date":206,"tags":207,"category":208,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F50-Linux\u002F02.Debian13换源.md","\u002Fblog\u002F10\u002F50-linux\u002Fdebian13","Debian13 换源","2025-09-10",[208,209],"Linux","debian",{"id":211,"path":212,"title":213,"description":213,"date":206,"tags":214,"category":208,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F50-Linux\u002F04.Linux系统，音响有底噪.md","\u002Fblog\u002F10\u002F50-linux\u002Flinux","Linux 系统，音响有底噪怎么办？",[208],{"id":216,"path":217,"title":218,"description":218,"date":206,"tags":219,"category":208,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F50-Linux\u002F05.一键DD纯净系统脚本.md","\u002Fblog\u002F10\u002F50-linux\u002Fdd","一键 DD 纯净系统脚本",[208,220],"dd 系统",{"id":222,"path":223,"title":224,"description":224,"date":206,"tags":225,"category":208,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F50-Linux\u002F08.一行代码降低服务器功耗.md","\u002Fblog\u002F10\u002F50-linux","一行代码降低服务器功耗",[208,209],{"id":227,"path":228,"title":229,"description":229,"date":206,"tags":230,"category":153,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F60-N1&玩客云&OEC\u002F01.N1盒子永不为奴-Armbian.md","\u002Fblog\u002F10\u002F60-n1andandoec\u002Fn1-armbian","N1 盒子永不为奴 Armbian",[231,208],"N1",{"id":233,"path":234,"title":235,"description":235,"date":206,"tags":236,"category":153,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F60-N1&玩客云&OEC\u002F02.OEC站起来了-Armbian.md","\u002Fblog\u002F10\u002F60-n1andandoec\u002Foec-armbian","OEC 盒子永不为奴 Armbian",[151,208],{"id":238,"path":239,"title":240,"description":241,"date":242,"tags":243,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F01.容器&docker&docker-compose.md","\u002Fblog\u002F10\u002F10-docker\u002Fanddockeranddocker-compose","容器 & docker & docker-compose","初识 yaml 语法和 docker","2025-08-05",[122,244],"yaml",{"id":246,"path":247,"title":248,"description":249,"date":242,"tags":250,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F02.容器项目&下载类.md","\u002Fblog\u002F10\u002F10-docker\u002Fand","容器项目&下载类","采用docker搭建下载服务",[122,244,251],"下载",{"id":253,"path":247,"title":254,"description":255,"date":242,"tags":256,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F03.容器项目&相册类.md","容器项目&相册类","采用 docker 搭建 AI 相册",[122,244,24],{"id":258,"path":247,"title":259,"description":260,"date":242,"tags":261,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F04.容器项目&影视类.md","容器项目&影视类","采用 docker 影视媒体库",[122,244,262,263],"影视媒体库","Emby",{"id":265,"path":266,"title":267,"description":268,"date":242,"tags":269,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F05.Emby直连115网盘（一）.md","\u002Fblog\u002F10\u002F10-docker\u002Femby115","Emby直连115网盘（一）","使用 Emby 直连 115 网盘",[122,244,262,263,270,271],"strm","115 网盘",{"id":273,"path":266,"title":274,"description":268,"date":242,"tags":275,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F06.Emby直连115网盘（二）.md","Emby直连115网盘（二）",[122,244,262,263,270,271],{"id":277,"path":278,"title":279,"description":279,"date":242,"tags":280,"category":122,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F07.Adguard Home去广告.md","\u002Fblog\u002F10\u002F10-docker\u002Fadguard-home","Adguard Home 去广告",[122,281],"Adguard Home",{"id":283,"path":284,"title":285,"description":286,"date":242,"tags":287,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F01.新的篇章，软路由.md","\u002Fblog\u002F10\u002F20","新的篇章，软路由","初识软路由",[127,288,160],"爱快",{"id":290,"path":284,"title":291,"description":292,"date":242,"tags":293,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F02.如何玩公网，怎么远程访问（一）.md","如何玩公网，怎么远程访问（一）","公网远程访问，IPv6也是公网",[127,126,294],"公网 IP",{"id":296,"path":284,"title":297,"description":292,"date":242,"tags":298,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F03.如何玩公网，怎么远程访问（二）.md","如何玩公网，怎么远程访问（二）",[127,126,294],{"id":300,"path":284,"title":301,"description":292,"date":242,"tags":302,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F04.如何玩公网，怎么远程访问（三）.md","如何玩公网，怎么远程访问（三）",[127,126,294],{"id":304,"path":284,"title":305,"description":305,"date":242,"tags":306,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F05.白嫖域名，远程访问.md","白嫖域名，远程访问",[127,126,307],"免费域名",{"id":309,"path":284,"title":310,"description":310,"date":242,"tags":311,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F06.没有公网如何远程访问.md","没有公网如何远程访问",[127,126,312],"内网穿透",{"id":314,"path":315,"title":316,"description":316,"date":242,"tags":317,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F07.爱快与OpenWRT双软路由MAC地址重复问题修正.md","\u002Fblog\u002F10\u002F20\u002Fopenwrtmac","爱快与 OpenWRT 双软路由MAC地址重复问题修正",[288,160,318],"MAC 地址",{"id":320,"path":321,"title":322,"description":322,"date":242,"tags":323,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F08.OpenWRT扩容.md","\u002Fblog\u002F10\u002F20\u002Fopenwrt","OpenWRT 扩容",[160],{"id":325,"path":321,"title":326,"description":326,"date":242,"tags":327,"category":127,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F20-软路由\u002F09.OpenWRT旁路由一条龙教程.md","OpenWRT 旁路由一条龙教程",[160],{"id":329,"path":330,"title":331,"description":331,"date":242,"tags":332,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F01.Emby刮削以及尽可能刮削到中文.md","\u002Fblog\u002F10\u002F30-nas\u002Femby","Emby 刮削以及尽可能刮削到中文",[263,177],{"id":334,"path":335,"title":336,"description":336,"date":242,"tags":337,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F02.Kodi&CoreELEC安装指南.md","\u002Fblog\u002F10\u002F30-nas\u002Fkodiandcoreelec","Kodi & CoreELEC 安装指南",[338,339,177],"Kodi","CoreELEC",{"id":341,"path":342,"title":343,"description":344,"date":242,"tags":345,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F20.飞牛OS的安装.md","\u002Fblog\u002F10\u002F30-nas\u002Fos","飞牛 OS 的安装","初识飞牛 NAS",[134,135],{"id":347,"path":342,"title":348,"description":349,"date":242,"tags":350,"category":134,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F30-NAS\u002F21.飞牛OS安装后必要配置.md","飞牛 OS 安装后必要配置","飞牛 NAS 基础配置",[134,135],{"id":352,"path":353,"title":354,"description":355,"date":242,"tags":356,"category":358,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F40-虚拟机\u002F01.新的篇章，PVE虚拟机.md","\u002Fblog\u002F10\u002F40\u002Fpve","新的篇章，PVE虚拟机","初识 PVE 虚拟机",[208,209,357,358],"PVE","虚拟机",{"id":360,"path":361,"title":362,"description":363,"date":242,"tags":364,"category":358,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F40-虚拟机\u002F03.基于PVE系统安装LXC-debian.md","\u002Fblog\u002F10\u002F40\u002Fpvelxc-debian","基于 PVE 系统安装 LXC-debian","初识 LXC debian",[208,209,357,358],{"id":366,"path":367,"title":368,"description":368,"date":242,"tags":369,"category":358,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F40-虚拟机\u002F07.Ventoy多系统启动盘制作与使用全指南.md","\u002Fblog\u002F10\u002F40\u002Fventoy","Ventoy 多系统启动盘制作与使用全指南",[370,371],"Ventoy","PE 系统",{"id":373,"path":374,"title":375,"description":376,"date":242,"tags":377,"category":358,"minutes":50,"pinned":28},"blog\u002Fblog\u002F10-技术专栏\u002F50-Linux\u002F01.新的篇章，debian12的配置.md","\u002Fblog\u002F10\u002F50-linux\u002Fdebian12","新的篇章，debian12 的配置","初识 debian 12",[208,209],{"id":379,"path":380,"title":381,"description":381,"date":242,"tags":382,"category":383,"minutes":50,"pinned":28},"blog\u002Fblog\u002F20-生活感悟\u002F02.在裂缝中种满阳光.md","\u002Fblog\u002F20","让灵魂带着光行走：在裂缝中种满太阳",[383,384],"生活感悟","随笔记录",{"id":386,"path":387,"title":388,"description":388,"date":242,"tags":389,"category":391,"minutes":50,"pinned":28},"blog\u002Fblog\u002F30-学习笔记\u002F01.Typora学习笔记.md","\u002Fblog\u002F30\u002Ftypora","Typora学习笔记",[390],"Typora","学习笔记",{"id":393,"path":394,"title":395,"description":395,"date":242,"tags":396,"category":391,"minutes":50,"pinned":28},"blog\u002Fblog\u002F30-学习笔记\u002F02.Markdown 拓展.md","\u002Fblog\u002F30\u002Fmarkdown","Markdown 拓展",[397],"Markdown",{"id":399,"path":380,"title":400,"description":400,"date":401,"tags":402,"category":383,"minutes":50,"pinned":28},"blog\u002Fblog\u002F20-生活感悟\u002F01.拥抱生活中的光与热.md","拥抱生活中的光与热","2025-07-05",[383,384],{"id":111,"title":113,"body":404,"category":59,"date":114,"description":113,"draft":28,"extension":1524,"meta":1525,"minutes":50,"navigation":16,"path":112,"pinned":28,"seo":1528,"stem":1529,"tags":1530,"__hash__":1531},{"type":405,"value":406,"toc":1512},"minimark",[407,411,415,422,425,430,450,453,457,463,468,473,489,510,515,520,524,527,573,578,582,587,590,599,1247,1251,1254,1284,1288,1296,1389,1393,1408,1466,1482,1486,1489,1495,1500,1505,1508],[408,409,113],"h1",{"id":410},"赛博空间的私人岛屿博客架构与风格美学",[412,413,414],"h2",{"id":414},"序言",[416,417,418],"blockquote",{},[419,420,421],"p",{},"“在信息洪流的喧嚣中，我们需要一块礁石来安放灵魂与代码。”",[419,423,424],{},"建立一个独立博客，不仅是沉淀技术与思考的自留地，更是你在广袤互联网上的一张专属数字名片。无论是记录底层架构的折腾日常，还是定格生活中的光影瞬间，博客都能以最纯粹的姿态，向世界宣告你的存在。",[416,426,427],{},[419,428,429],{},"“博客就是上古遗弃的玩意，不亚于废土风格。”",[419,431,432,433,437,438,441,442,445,446,449],{},"但恰恰是这种废土风格，赋予了它一种极致的浪漫与自由。就像在这片荒芜的互联网大陆上不断迁徙，从 ",[434,435,436],"strong",{},"Halo 2"," 走到 ",[434,439,440],{},"Typecho","，再重构到 ",[434,443,444],{},"WordPress","，最后用 ",[434,447,448],{},"Astro"," 搭建起一座极致轻量级的数字庇护所。每一次主题的修改、容器的部署和数据库的迁移，都像是废土客在废墟中搜集旧时代的电子零件，亲手拼凑、打磨出属于自己的机甲。",[419,451,452],{},"这种带有颗粒感和孤独感的粗犷美学，莫名有一种姜文电影里的味道——在荒诞和喧嚣的互联网大环境下，带着一种不合时宜却又极其硬核的坚持，让代码和文字在自己的一亩三分地里自由地飞一会儿。",[412,454,456],{"id":455},"_1-最初的想法","1 最初的想法",[419,458,459,460,462],{},"最初我想搭建一个博客，其实我只会用 ",[434,461,436],{}," 这样的动态博客。",[416,464,465],{},[419,466,467],{},"什么是动态博客？",[419,469,470],{},[434,471,472],{},"动态博客其实就是有后端，后端负责让前端用户请求实时动起来，所以需要数据库，也就是要购买独立服务器搭建，比较吃性能。",[419,474,475,476,478,479,481,482,484,485,488],{},"后面我发现大家都在用 ",[434,477,444],{}," 和 ",[434,480,440],{},"，我也尝试着去装，发现虽然不是那么吃硬件性能对于我的量级来说。但是更换主题，那些还是不舒服，最后还是选择在 ",[434,483,436],{}," 这样的博客上玩耍。",[434,486,487],{},"新手必定推荐 Halo 2，只要你硬件硬性够","。",[419,490,491,492,495,496,499,500,502,503,506,507,509],{},"直到我接触到 ",[434,493,494],{},"vitepress"," 这样的静态站点，安装好 ",[434,497,498],{},"node.js","，最后按照 ",[434,501,494],{}," 官方文档构建就可以。可是这样的静态站点基本上是用编辑 ",[434,504,505],{},".md"," 文档，这样的",[434,508,397],{}," 编辑器也有很多。",[416,511,512],{},[419,513,514],{},"什么是静态博客？",[419,516,517],{},[434,518,519],{},"静态博客就是没有后端，不能实时交互添加功能，每一次添加功能，修改文档都需要重新构建一次。最主要的是不需要服务器，可以使用腾讯的Edge one 或者赛博大善人 CloudFlare 搭建。",[412,521,523],{"id":522},"_2-欲望暴涨","2 欲望暴涨",[419,525,526],{},"再也不愿意只能写文档的博客，一直在寻找一款比较好的博客，需要满足以下几点。",[528,529,530,534,537,540,543,546,549,552,555,558,561,564,567,570],"ul",{},[531,532,533],"li",{},"底层是以 md 文档维护，再也不用一次一次的复制粘贴，还要担心格式问题。",[531,535,536],{},"架构轻量，不要太臃肿",[531,538,539],{},"响应速度快",[531,541,542],{},"部署简单",[531,544,545],{},"网站整体风格、文章阅读界面唯美",[531,547,548],{},"首页大屏壁纸随机轮播，有打字机功能，波浪水纹波流动效果",[531,550,551],{},"首页侧边栏，个人简介、公告、分类、标签、日历、统计信息、音乐、每日一言",[531,553,554],{},"评论系统，可以接入 twikoo",[531,556,557],{},"站点统计",[531,559,560],{},"相册、留言板、导航栏",[531,562,563],{},"全文搜索功能",[531,565,566],{},"部署文档、说明要完整详细",[531,568,569],{},"博客数据迁移方便",[531,571,572],{},"做一个只用写 md 文档就可以完善自己的博客",[419,574,575],{},[434,576,577],{},"我探路了这么多博客，我最喜欢的动态博客就是 Halo 2。静态博客我用过 vitepreee，不过是天客大佬的版本；以及 Astro，不过是 Firefly 在  Fuwari 模板下二开，都是非常不错的静态博客，现在我在用的也是这俩静态博客。",[412,579,581],{"id":580},"_3-最终选择","3 最终选择",[583,584,586],"h3",{"id":585},"_31-halo-2-安装","3.1 Halo 2 安装",[419,588,589],{},"Halo 2 是一款强大易用的开源建站工具，从个人博客、知识库，到企业官网、在线商城，Halo 2 都能助您轻松实现，一站式满足您的多样化建站需求。如果你的设备有 Docker 环境，可以使用以下 yaml 文件快速启动一个 Halo 2 的体验环境。",[419,591,592],{},[593,594,598],"a",{"href":595,"rel":596},"https:\u002F\u002Fwww.halo.run\u002F",[597],"nofollow","Halo - 强大易用的开源建站工具",[600,601,605],"pre",{"className":602,"code":603,"language":244,"meta":604,"style":604},"language-yaml shiki shiki-themes github-light github-dark","name: halo2\nservices:\n  halo2:\n    # 镜像地址\n    image: registry.fit2cloud.com\u002Fhalo\u002Fhalo-pro:2.24\n    # 容器名\n    container_name: halo2\n    # 主机名\n    hostname: halo2\n    # 拓展\n    depends_on:\n      # 连接数据库\n      halodb:\n        condition: service_healthy\n    # 健康检查\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http:\u002F\u002Flocalhost:8090\u002Factuator\u002Fhealth\u002Freadiness\"]\n      interval: 30s\n      timeout: 5s\n      retries: 5\n      start_period: 30s\n    command:\n      - --spring.r2dbc.url=r2dbc:pool:postgresql:\u002F\u002Fhalodb\u002Fhalo2\n      - --spring.r2dbc.username=halo2\n      # PostgreSQL 的密码，请保证与下方 POSTGRES_PASSWORD 的变量值一致。\n      - --spring.r2dbc.password=openpostgresql\n      - --spring.sql.init.platform=postgresql\n      # 外部访问地址，请根据实际需要修改\n      - --halo.external-url=域名\n    # 环境变量：- 变量名=值\n    environment:\n      # JVM 参数，默认为 -Xmx256m -Xms256m，可以根据实际情况做调整，置空表示不添加 JVM 参数\n      - JVM_OPTS=-Xmx256m -Xms256m\n    # 目录映射：宿主机目录:容器内目录\n    volumes:\n      - \u002Fmnt\u002Fdocker\u002Fapps\u002Fhalo2\u002Fhalo2:\u002Froot\u002F.halo2\n    # 网络模式：桥接模式\n    networks:\n      halo_network:\n    # 端口\n    ports:\n      # 端口说明功能\n      # webUI端口\n      - 8090:8090\n    # 重启策略，总是重启\n    restart: always\n    \n  halodb:\n    # 镜像地址\n    image: postgres:15.4\n    # 容器名\n    container_name: halodb\n    # 主机名\n    hostname: halodb\n    # 目录映射：宿主机目录:容器内目录\n    volumes:\n      - \u002Fmnt\u002Fdocker\u002Fapps\u002Fhalo2\u002Fhalodb:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    healthcheck:\n      test: [ \"CMD\", \"pg_isready\" ]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n    # 环境变量：- 变量名=值\n    environment:\n      # 密码\n      - POSTGRES_PASSWORD=openpostgresql\n      # 用户名\n      - POSTGRES_USER=halo2\n      # 数据库\n      - POSTGRES_DB=halo2\n      - PGUSER=halo2\n    # 网络模式：桥接模式\n    networks:\n      halo_network:\n    # 重启策略，总是重启\n    restart: always\n    \nnetworks:\n  halo_network:\n","",[606,607,608,625,634,642,649,659,665,675,680,690,695,703,708,716,727,733,741,772,783,794,806,816,824,833,841,847,855,863,869,877,883,891,897,905,911,919,927,933,941,949,955,963,969,975,983,989,1000,1006,1014,1019,1029,1034,1044,1049,1058,1063,1070,1078,1085,1103,1113,1122,1131,1136,1143,1149,1157,1163,1171,1177,1185,1193,1198,1205,1212,1217,1226,1231,1239],"code",{"__ignoreMap":604},[609,610,613,617,621],"span",{"class":611,"line":612},"line",1,[609,614,616],{"class":615},"s9eBZ","name",[609,618,620],{"class":619},"sVt8B",": ",[609,622,624],{"class":623},"sZZnC","halo2\n",[609,626,628,631],{"class":611,"line":627},2,[609,629,630],{"class":615},"services",[609,632,633],{"class":619},":\n",[609,635,637,640],{"class":611,"line":636},3,[609,638,639],{"class":615},"  halo2",[609,641,633],{"class":619},[609,643,645],{"class":611,"line":644},4,[609,646,648],{"class":647},"sJ8bj","    # 镜像地址\n",[609,650,651,654,656],{"class":611,"line":50},[609,652,653],{"class":615},"    image",[609,655,620],{"class":619},[609,657,658],{"class":623},"registry.fit2cloud.com\u002Fhalo\u002Fhalo-pro:2.24\n",[609,660,662],{"class":611,"line":661},6,[609,663,664],{"class":647},"    # 容器名\n",[609,666,668,671,673],{"class":611,"line":667},7,[609,669,670],{"class":615},"    container_name",[609,672,620],{"class":619},[609,674,624],{"class":623},[609,676,677],{"class":611,"line":27},[609,678,679],{"class":647},"    # 主机名\n",[609,681,683,686,688],{"class":611,"line":682},9,[609,684,685],{"class":615},"    hostname",[609,687,620],{"class":619},[609,689,624],{"class":623},[609,691,692],{"class":611,"line":39},[609,693,694],{"class":647},"    # 拓展\n",[609,696,698,701],{"class":611,"line":697},11,[609,699,700],{"class":615},"    depends_on",[609,702,633],{"class":619},[609,704,705],{"class":611,"line":15},[609,706,707],{"class":647},"      # 连接数据库\n",[609,709,711,714],{"class":611,"line":710},13,[609,712,713],{"class":615},"      halodb",[609,715,633],{"class":619},[609,717,719,722,724],{"class":611,"line":718},14,[609,720,721],{"class":615},"        condition",[609,723,620],{"class":619},[609,725,726],{"class":623},"service_healthy\n",[609,728,730],{"class":611,"line":729},15,[609,731,732],{"class":647},"    # 健康检查\n",[609,734,736,739],{"class":611,"line":735},16,[609,737,738],{"class":615},"    healthcheck",[609,740,633],{"class":619},[609,742,744,747,750,753,756,759,761,764,766,769],{"class":611,"line":743},17,[609,745,746],{"class":615},"      test",[609,748,749],{"class":619},": [",[609,751,752],{"class":623},"\"CMD\"",[609,754,755],{"class":619},", ",[609,757,758],{"class":623},"\"curl\"",[609,760,755],{"class":619},[609,762,763],{"class":623},"\"-f\"",[609,765,755],{"class":619},[609,767,768],{"class":623},"\"http:\u002F\u002Flocalhost:8090\u002Factuator\u002Fhealth\u002Freadiness\"",[609,770,771],{"class":619},"]\n",[609,773,775,778,780],{"class":611,"line":774},18,[609,776,777],{"class":615},"      interval",[609,779,620],{"class":619},[609,781,782],{"class":623},"30s\n",[609,784,786,789,791],{"class":611,"line":785},19,[609,787,788],{"class":615},"      timeout",[609,790,620],{"class":619},[609,792,793],{"class":623},"5s\n",[609,795,797,800,802],{"class":611,"line":796},20,[609,798,799],{"class":615},"      retries",[609,801,620],{"class":619},[609,803,805],{"class":804},"sj4cs","5\n",[609,807,809,812,814],{"class":611,"line":808},21,[609,810,811],{"class":615},"      start_period",[609,813,620],{"class":619},[609,815,782],{"class":623},[609,817,819,822],{"class":611,"line":818},22,[609,820,821],{"class":615},"    command",[609,823,633],{"class":619},[609,825,827,830],{"class":611,"line":826},23,[609,828,829],{"class":619},"      - ",[609,831,832],{"class":623},"--spring.r2dbc.url=r2dbc:pool:postgresql:\u002F\u002Fhalodb\u002Fhalo2\n",[609,834,836,838],{"class":611,"line":835},24,[609,837,829],{"class":619},[609,839,840],{"class":623},"--spring.r2dbc.username=halo2\n",[609,842,844],{"class":611,"line":843},25,[609,845,846],{"class":647},"      # PostgreSQL 的密码，请保证与下方 POSTGRES_PASSWORD 的变量值一致。\n",[609,848,850,852],{"class":611,"line":849},26,[609,851,829],{"class":619},[609,853,854],{"class":623},"--spring.r2dbc.password=openpostgresql\n",[609,856,858,860],{"class":611,"line":857},27,[609,859,829],{"class":619},[609,861,862],{"class":623},"--spring.sql.init.platform=postgresql\n",[609,864,866],{"class":611,"line":865},28,[609,867,868],{"class":647},"      # 外部访问地址，请根据实际需要修改\n",[609,870,872,874],{"class":611,"line":871},29,[609,873,829],{"class":619},[609,875,876],{"class":623},"--halo.external-url=域名\n",[609,878,880],{"class":611,"line":879},30,[609,881,882],{"class":647},"    # 环境变量：- 变量名=值\n",[609,884,886,889],{"class":611,"line":885},31,[609,887,888],{"class":615},"    environment",[609,890,633],{"class":619},[609,892,894],{"class":611,"line":893},32,[609,895,896],{"class":647},"      # JVM 参数，默认为 -Xmx256m -Xms256m，可以根据实际情况做调整，置空表示不添加 JVM 参数\n",[609,898,900,902],{"class":611,"line":899},33,[609,901,829],{"class":619},[609,903,904],{"class":623},"JVM_OPTS=-Xmx256m -Xms256m\n",[609,906,908],{"class":611,"line":907},34,[609,909,910],{"class":647},"    # 目录映射：宿主机目录:容器内目录\n",[609,912,914,917],{"class":611,"line":913},35,[609,915,916],{"class":615},"    volumes",[609,918,633],{"class":619},[609,920,922,924],{"class":611,"line":921},36,[609,923,829],{"class":619},[609,925,926],{"class":623},"\u002Fmnt\u002Fdocker\u002Fapps\u002Fhalo2\u002Fhalo2:\u002Froot\u002F.halo2\n",[609,928,930],{"class":611,"line":929},37,[609,931,932],{"class":647},"    # 网络模式：桥接模式\n",[609,934,936,939],{"class":611,"line":935},38,[609,937,938],{"class":615},"    networks",[609,940,633],{"class":619},[609,942,944,947],{"class":611,"line":943},39,[609,945,946],{"class":615},"      halo_network",[609,948,633],{"class":619},[609,950,952],{"class":611,"line":951},40,[609,953,954],{"class":647},"    # 端口\n",[609,956,958,961],{"class":611,"line":957},41,[609,959,960],{"class":615},"    ports",[609,962,633],{"class":619},[609,964,966],{"class":611,"line":965},42,[609,967,968],{"class":647},"      # 端口说明功能\n",[609,970,972],{"class":611,"line":971},43,[609,973,974],{"class":647},"      # webUI端口\n",[609,976,978,980],{"class":611,"line":977},44,[609,979,829],{"class":619},[609,981,982],{"class":623},"8090:8090\n",[609,984,986],{"class":611,"line":985},45,[609,987,988],{"class":647},"    # 重启策略，总是重启\n",[609,990,992,995,997],{"class":611,"line":991},46,[609,993,994],{"class":615},"    restart",[609,996,620],{"class":619},[609,998,999],{"class":623},"always\n",[609,1001,1003],{"class":611,"line":1002},47,[609,1004,1005],{"class":619},"    \n",[609,1007,1009,1012],{"class":611,"line":1008},48,[609,1010,1011],{"class":615},"  halodb",[609,1013,633],{"class":619},[609,1015,1017],{"class":611,"line":1016},49,[609,1018,648],{"class":647},[609,1020,1022,1024,1026],{"class":611,"line":1021},50,[609,1023,653],{"class":615},[609,1025,620],{"class":619},[609,1027,1028],{"class":623},"postgres:15.4\n",[609,1030,1032],{"class":611,"line":1031},51,[609,1033,664],{"class":647},[609,1035,1037,1039,1041],{"class":611,"line":1036},52,[609,1038,670],{"class":615},[609,1040,620],{"class":619},[609,1042,1043],{"class":623},"halodb\n",[609,1045,1047],{"class":611,"line":1046},53,[609,1048,679],{"class":647},[609,1050,1052,1054,1056],{"class":611,"line":1051},54,[609,1053,685],{"class":615},[609,1055,620],{"class":619},[609,1057,1043],{"class":623},[609,1059,1061],{"class":611,"line":1060},55,[609,1062,910],{"class":647},[609,1064,1066,1068],{"class":611,"line":1065},56,[609,1067,916],{"class":615},[609,1069,633],{"class":619},[609,1071,1073,1075],{"class":611,"line":1072},57,[609,1074,829],{"class":619},[609,1076,1077],{"class":623},"\u002Fmnt\u002Fdocker\u002Fapps\u002Fhalo2\u002Fhalodb:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n",[609,1079,1081,1083],{"class":611,"line":1080},58,[609,1082,738],{"class":615},[609,1084,633],{"class":619},[609,1086,1088,1090,1093,1095,1097,1100],{"class":611,"line":1087},59,[609,1089,746],{"class":615},[609,1091,1092],{"class":619},": [ ",[609,1094,752],{"class":623},[609,1096,755],{"class":619},[609,1098,1099],{"class":623},"\"pg_isready\"",[609,1101,1102],{"class":619}," ]\n",[609,1104,1106,1108,1110],{"class":611,"line":1105},60,[609,1107,777],{"class":615},[609,1109,620],{"class":619},[609,1111,1112],{"class":623},"10s\n",[609,1114,1116,1118,1120],{"class":611,"line":1115},61,[609,1117,788],{"class":615},[609,1119,620],{"class":619},[609,1121,793],{"class":623},[609,1123,1125,1127,1129],{"class":611,"line":1124},62,[609,1126,799],{"class":615},[609,1128,620],{"class":619},[609,1130,805],{"class":804},[609,1132,1134],{"class":611,"line":1133},63,[609,1135,882],{"class":647},[609,1137,1139,1141],{"class":611,"line":1138},64,[609,1140,888],{"class":615},[609,1142,633],{"class":619},[609,1144,1146],{"class":611,"line":1145},65,[609,1147,1148],{"class":647},"      # 密码\n",[609,1150,1152,1154],{"class":611,"line":1151},66,[609,1153,829],{"class":619},[609,1155,1156],{"class":623},"POSTGRES_PASSWORD=openpostgresql\n",[609,1158,1160],{"class":611,"line":1159},67,[609,1161,1162],{"class":647},"      # 用户名\n",[609,1164,1166,1168],{"class":611,"line":1165},68,[609,1167,829],{"class":619},[609,1169,1170],{"class":623},"POSTGRES_USER=halo2\n",[609,1172,1174],{"class":611,"line":1173},69,[609,1175,1176],{"class":647},"      # 数据库\n",[609,1178,1180,1182],{"class":611,"line":1179},70,[609,1181,829],{"class":619},[609,1183,1184],{"class":623},"POSTGRES_DB=halo2\n",[609,1186,1188,1190],{"class":611,"line":1187},71,[609,1189,829],{"class":619},[609,1191,1192],{"class":623},"PGUSER=halo2\n",[609,1194,1196],{"class":611,"line":1195},72,[609,1197,932],{"class":647},[609,1199,1201,1203],{"class":611,"line":1200},73,[609,1202,938],{"class":615},[609,1204,633],{"class":619},[609,1206,1208,1210],{"class":611,"line":1207},74,[609,1209,946],{"class":615},[609,1211,633],{"class":619},[609,1213,1215],{"class":611,"line":1214},75,[609,1216,988],{"class":647},[609,1218,1220,1222,1224],{"class":611,"line":1219},76,[609,1221,994],{"class":615},[609,1223,620],{"class":619},[609,1225,999],{"class":623},[609,1227,1229],{"class":611,"line":1228},77,[609,1230,1005],{"class":619},[609,1232,1234,1237],{"class":611,"line":1233},78,[609,1235,1236],{"class":615},"networks",[609,1238,633],{"class":619},[609,1240,1242,1245],{"class":611,"line":1241},79,[609,1243,1244],{"class":615},"  halo_network",[609,1246,633],{"class":619},[583,1248,1250],{"id":1249},"_32-工具安装","3.2 工具安装",[419,1252,1253],{},"如果你是 windows 电脑，你需要安装 VS code、Node.js",[600,1255,1257],{"className":602,"code":1256,"language":244,"meta":604,"style":604},"# VS code 官网\nhttps:\u002F\u002Fcode.visualstudio.com\u002F\n\n# Node.js 官网\nhttps:\u002F\u002Fnodejs.org\u002Fzh-cn\n",[606,1258,1259,1264,1269,1274,1279],{"__ignoreMap":604},[609,1260,1261],{"class":611,"line":612},[609,1262,1263],{"class":647},"# VS code 官网\n",[609,1265,1266],{"class":611,"line":627},[609,1267,1268],{"class":623},"https:\u002F\u002Fcode.visualstudio.com\u002F\n",[609,1270,1271],{"class":611,"line":636},[609,1272,1273],{"emptyLinePlaceholder":16},"\n",[609,1275,1276],{"class":611,"line":644},[609,1277,1278],{"class":647},"# Node.js 官网\n",[609,1280,1281],{"class":611,"line":50},[609,1282,1283],{"class":623},"https:\u002F\u002Fnodejs.org\u002Fzh-cn\n",[583,1285,1287],{"id":1286},"_33-vitepress-安装","3.3 vitepress 安装",[419,1289,1290,1291,488],{},"这里我推荐使用天客大佬的主题，",[593,1292,1295],{"href":1293,"rel":1294},"https:\u002F\u002Fvp.teek.top\u002F",[597],"天客大佬-vitepress-theme-teek",[600,1297,1301],{"className":1298,"code":1299,"language":1300,"meta":604,"style":604},"language-cmd shiki shiki-themes github-light github-dark","# 拉取主题包\ngit clone https:\u002F\u002Fgithub.com\u002FKele-Bingtang\u002Fvitepress-theme-teek-docs-template.git\n\n# 如果没有安装 pnpm，先安装\nnpm install -g pnpm\n\n# 安装项目依赖\npnpm install\n\n# 安装依赖\npnpm add -D vitepress\npnpm vitepress init\npnpm install vitepress-theme-teek -D\n\n# 预览\npnpm run docs:dev\n# 构建，输出在 .\u002Fdist\npnpm run docs:build\n","cmd",[606,1302,1303,1308,1313,1317,1322,1327,1331,1336,1341,1345,1350,1355,1360,1365,1369,1374,1379,1384],{"__ignoreMap":604},[609,1304,1305],{"class":611,"line":612},[609,1306,1307],{},"# 拉取主题包\n",[609,1309,1310],{"class":611,"line":627},[609,1311,1312],{},"git clone https:\u002F\u002Fgithub.com\u002FKele-Bingtang\u002Fvitepress-theme-teek-docs-template.git\n",[609,1314,1315],{"class":611,"line":636},[609,1316,1273],{"emptyLinePlaceholder":16},[609,1318,1319],{"class":611,"line":644},[609,1320,1321],{},"# 如果没有安装 pnpm，先安装\n",[609,1323,1324],{"class":611,"line":50},[609,1325,1326],{},"npm install -g pnpm\n",[609,1328,1329],{"class":611,"line":661},[609,1330,1273],{"emptyLinePlaceholder":16},[609,1332,1333],{"class":611,"line":667},[609,1334,1335],{},"# 安装项目依赖\n",[609,1337,1338],{"class":611,"line":27},[609,1339,1340],{},"pnpm install\n",[609,1342,1343],{"class":611,"line":682},[609,1344,1273],{"emptyLinePlaceholder":16},[609,1346,1347],{"class":611,"line":39},[609,1348,1349],{},"# 安装依赖\n",[609,1351,1352],{"class":611,"line":697},[609,1353,1354],{},"pnpm add -D vitepress\n",[609,1356,1357],{"class":611,"line":15},[609,1358,1359],{},"pnpm vitepress init\n",[609,1361,1362],{"class":611,"line":710},[609,1363,1364],{},"pnpm install vitepress-theme-teek -D\n",[609,1366,1367],{"class":611,"line":718},[609,1368,1273],{"emptyLinePlaceholder":16},[609,1370,1371],{"class":611,"line":729},[609,1372,1373],{},"# 预览\n",[609,1375,1376],{"class":611,"line":735},[609,1377,1378],{},"pnpm run docs:dev\n",[609,1380,1381],{"class":611,"line":743},[609,1382,1383],{},"# 构建，输出在 .\u002Fdist\n",[609,1385,1386],{"class":611,"line":774},[609,1387,1388],{},"pnpm run docs:build\n",[583,1390,1392],{"id":1391},"_34-astro-安装","3.4 Astro 安装",[419,1394,1395,1396,1401,1402,1407],{},"我这里推荐 ",[593,1397,1400],{"href":1398,"rel":1399},"https:\u002F\u002Fdocs.mizuki.mysqil.com\u002F",[597],"Mizuki Next Theme"," 或者 ",[593,1403,1406],{"href":1404,"rel":1405},"https:\u002F\u002Fgithub.com\u002FCuteLeaf\u002FFirefly",[597],"Firefly"," 的主题，安装方法都差不多。",[600,1409,1411],{"className":602,"code":1410,"language":244,"meta":604,"style":604},"# 克隆主题\ngit clone https:\u002F\u002Fgithub.com\u002FCuteleaf\u002FFirefly.git\ncd Firefly\n\n# 如果没有安装 pnpm，先安装\nnpm install -g pnpm\n\n# 安装项目依赖\npnpm install\n\n# 启动\npnpm dev\n",[606,1412,1413,1418,1423,1428,1432,1436,1440,1444,1448,1452,1456,1461],{"__ignoreMap":604},[609,1414,1415],{"class":611,"line":612},[609,1416,1417],{"class":647},"# 克隆主题\n",[609,1419,1420],{"class":611,"line":627},[609,1421,1422],{"class":623},"git clone https:\u002F\u002Fgithub.com\u002FCuteleaf\u002FFirefly.git\n",[609,1424,1425],{"class":611,"line":636},[609,1426,1427],{"class":623},"cd Firefly\n",[609,1429,1430],{"class":611,"line":644},[609,1431,1273],{"emptyLinePlaceholder":16},[609,1433,1434],{"class":611,"line":50},[609,1435,1321],{"class":647},[609,1437,1438],{"class":611,"line":661},[609,1439,1326],{"class":623},[609,1441,1442],{"class":611,"line":667},[609,1443,1273],{"emptyLinePlaceholder":16},[609,1445,1446],{"class":611,"line":27},[609,1447,1335],{"class":647},[609,1449,1450],{"class":611,"line":682},[609,1451,1340],{"class":623},[609,1453,1454],{"class":611,"line":39},[609,1455,1273],{"emptyLinePlaceholder":16},[609,1457,1458],{"class":611,"line":697},[609,1459,1460],{"class":647},"# 启动\n",[609,1462,1463],{"class":611,"line":15},[609,1464,1465],{"class":623},"pnpm dev\n",[528,1467,1468,1475],{},[531,1469,1470,1471,1474],{},"编辑 ",[606,1472,1473],{},"src\u002Fconfig\u002F"," 目录下的配置文件自定义博客设置",[531,1476,1477,1478,1481],{},"博客将在 ",[606,1479,1480],{},"http:\u002F\u002Flocalhost:4321"," 可用",[412,1483,1485],{"id":1484},"_4-总结","4 总结",[419,1487,1488],{},"博客没有绝对完美的架构，只有最适合当前阶段需求的选择。从动态的便捷到静态的轻快，从代码的严谨到生活的诗意，博客的形态完全取决于你想要向世界展示怎样的自己。选择好适合的框架只是第一步，持续的思考、折腾与输出，才是保持这座数字岛屿生机盎然的秘诀。",[419,1490,1491],{},[1492,1493],"img",{"alt":604,"src":1494},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780586963098.avif",[419,1496,1497],{},[1492,1498],{"alt":604,"src":1499},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780586965221.avif",[419,1501,1502],{},[1492,1503],{"alt":604,"src":1504},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780586967155.avif",[419,1506,1507],{},"Created with ❤️ by 十三",[1509,1510,1511],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":604,"searchDepth":627,"depth":627,"links":1513},[1514,1515,1516,1517,1523],{"id":414,"depth":627,"text":414},{"id":455,"depth":627,"text":456},{"id":522,"depth":627,"text":523},{"id":580,"depth":627,"text":581,"children":1518},[1519,1520,1521,1522],{"id":585,"depth":636,"text":586},{"id":1249,"depth":636,"text":1250},{"id":1286,"depth":636,"text":1287},{"id":1391,"depth":636,"text":1392},{"id":1484,"depth":627,"text":1485},"md",{"published":114,"author":1526,"image":1527},"十三","https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780565299947.avif",{"title":113,"description":113},"blog\u002F40-博客搭建\u002F01-远古产物—博客",[59],"llwKmODQ8VviLG80CePXfs5yyzUn-eJ0RCV_N-bbIog",[1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590],{"path":6,"title":7,"date":9},{"path":19,"title":20,"date":22},{"path":31,"title":32,"date":34},{"path":42,"title":43,"date":45},{"path":53,"title":54,"date":55},{"path":62,"title":63,"date":64},{"path":70,"title":71,"date":72},{"path":78,"title":79,"date":80},{"path":85,"title":86,"date":87},{"path":92,"title":93,"date":95},{"path":100,"title":101,"date":102},{"path":106,"title":107,"date":108},{"path":112,"title":113,"date":114},{"path":118,"title":119,"date":120},{"path":130,"title":131,"date":132},{"path":139,"title":140,"date":141},{"path":147,"title":148,"date":149},{"path":156,"title":157,"date":158},{"path":165,"title":166,"date":167},{"path":172,"title":173,"date":174},{"path":180,"title":181,"date":182},{"path":186,"title":187,"date":188},{"path":186,"title":192,"date":193},{"path":197,"title":198,"date":199},{"path":204,"title":205,"date":206},{"path":212,"title":213,"date":206},{"path":217,"title":218,"date":206},{"path":223,"title":224,"date":206},{"path":228,"title":229,"date":206},{"path":234,"title":235,"date":206},{"path":239,"title":240,"date":242},{"path":247,"title":248,"date":242},{"path":247,"title":254,"date":242},{"path":247,"title":259,"date":242},{"path":266,"title":267,"date":242},{"path":266,"title":274,"date":242},{"path":278,"title":279,"date":242},{"path":284,"title":285,"date":242},{"path":284,"title":291,"date":242},{"path":284,"title":297,"date":242},{"path":284,"title":301,"date":242},{"path":284,"title":305,"date":242},{"path":284,"title":310,"date":242},{"path":315,"title":316,"date":242},{"path":321,"title":322,"date":242},{"path":321,"title":326,"date":242},{"path":330,"title":331,"date":242},{"path":335,"title":336,"date":242},{"path":342,"title":343,"date":242},{"path":342,"title":348,"date":242},{"path":353,"title":354,"date":242},{"path":361,"title":362,"date":242},{"path":367,"title":368,"date":242},{"path":374,"title":375,"date":242},{"path":380,"title":381,"date":242},{"path":387,"title":388,"date":242},{"path":394,"title":395,"date":242},{"path":380,"title":400,"date":401},1788281984600]