[{"data":1,"prerenderedAt":1195},["ShallowReactive",2],{"site-search-articles":3,"article-\u002Fblog\u002F10\u002F10-docker\u002Flogvar-api":403,"article-around-\u002Fblog\u002F10\u002F10-docker\u002Flogvar-api":1136},[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":171,"title":173,"body":404,"category":122,"date":174,"description":173,"draft":28,"extension":1128,"meta":1129,"minutes":50,"navigation":16,"path":172,"pinned":28,"seo":1132,"stem":1133,"tags":1134,"__hash__":1135},{"type":405,"value":406,"toc":1104},"minimark",[407,411,416,425,433,437,440,445,448,451,461,465,472,476,480,491,495,498,804,808,812,815,817,823,830,834,837,859,869,873,877,904,908,915,933,937,999,1003,1010,1013,1017,1020,1027,1033,1038,1043,1048,1055,1060,1065,1070,1075,1079,1082,1091,1094,1100],[408,409,173],"h1",{"id":410},"logvar-弹幕-api-纯本地缓存版-部署指南",[412,413,415],"h2",{"id":414},"序言","📝 序言",[417,418,419,420,424],"p",{},"本教程专为 ",[421,422,423],"strong",{},"“极简主义”"," 用户设计。",[417,426,427,428,432],{},"根据您的定制需求，我们将完全摒弃外部数据库（Redis\u002FUpstash），仅利用容器自身的本地缓存机制运行 ",[429,430,431],"code",{},"logvar\u002Fdanmu-api","。这种模式配置最简单，没有任何外部依赖，完全依靠挂载的本地目录进行数据交换。",[412,434,436],{"id":435},"_1-目录与环境准备","1 目录与环境准备",[417,438,439],{},"为了配合您的配置文件路径，我们需要先在 NAS 上建立对应的文件夹。",[441,442,444],"h3",{"id":443},"_11-创建目录结构","1.1 创建目录结构",[417,446,447],{},"请在终端执行以下命令，或者在文件管理器中手动创建：",[417,449,450],{},"Bash",[452,453,458],"pre",{"className":454,"code":456,"language":457},[455],"language-text","# 创建主目录及子目录\nmkdir -p \u002Fmnt\u002Fdocker\u002Fapps\u002Fdanmu-api\u002Fconfig\nmkdir -p \u002Fmnt\u002Fdocker\u002Fapps\u002Fdanmu-api\u002Fcache\n","text",[429,459,456],{"__ignoreMap":460},"",[441,462,464],{"id":463},"_12-权限确认","1.2 权限确认",[417,466,467,468,471],{},"确保该目录允许 Docker 读写。由于您在配置中指定了 ",[429,469,470],{},"PUID=1000","，请确保文件夹的所有者 ID 也是 1000（飞牛 NAS 默认主用户通常即为 1000）。",[412,473,475],{"id":474},"_2-核心部署配置-docker-compose","2 核心部署：配置 Docker Compose",[441,477,479],{"id":478},"_21-创建文件","2.1 创建文件",[417,481,482,483,486,487,490],{},"在 ",[429,484,485],{},"\u002Fmnt\u002Fdocker\u002Fapps\u002Fdanmu-api\u002F"," 目录下，新建 ",[429,488,489],{},"docker-compose.yaml"," 文件。",[441,492,494],{"id":493},"_22-写入配置","2.2 写入配置",[417,496,497],{},"以下代码已对格式进行了标准化整理：",[452,499,502],{"className":500,"code":501,"language":244,"meta":460,"style":460},"language-yaml shiki shiki-themes github-light github-dark","# 项目名称：弹幕API (本地缓存极简版)\n# 说明：仅依赖本地挂载目录，无外部数据库\n# ---\n\nname: danmu-api\nservices:\n  danmu-api:\n    # 镜像地址\n    image: logvar\u002Fdanmu-api:latest\n    # 容器名\n    container_name: danmu-api\n    # 主机名\n    hostname: danmu-api\n    # 环境变量\n    environment:\n      # --- 系统权限设置 ---\n      - PUID=1000\n      - PGID=1000\n      - TZ=Asia\u002FShanghai\n      - UMASK=022\n      # --- 访问令牌设置 ---\n      # 客户端\u002F播放器连接用的 Token (可修改)\n      - TOKEN=danmu\n      # 网页后台管理员密码 (建议修改)\n      - ADMIN_TOKEN=admin_secret_key_2025\n    # 目录映射：宿主机目录:容器内目录\n    volumes:\n      # 配置目录\n      - \u002Fmnt\u002Fdocker\u002Fapps\u002Fdanmu-api\u002Fconfig:\u002Fapp\u002Fconfig \n      # 缓存目录 (数据主要存储区)\n      - \u002Fmnt\u002Fdocker\u002Fapps\u002Fdanmu-api\u002Fcache:\u002Fapp\u002F.cache \n    # 网络模式\n    network_mode: bridge\n    # 端口映射\n    ports:\n      # 主机端口:容器端口\n      - 9321:9321\n    # 重启策略\n    restart: always\n",[429,503,504,513,519,525,531,545,554,562,567,578,583,593,598,608,614,622,628,637,645,653,661,667,673,681,687,695,701,709,715,726,732,742,748,759,765,773,779,787,793],{"__ignoreMap":460},[505,506,509],"span",{"class":507,"line":508},"line",1,[505,510,512],{"class":511},"sJ8bj","# 项目名称：弹幕API (本地缓存极简版)\n",[505,514,516],{"class":507,"line":515},2,[505,517,518],{"class":511},"# 说明：仅依赖本地挂载目录，无外部数据库\n",[505,520,522],{"class":507,"line":521},3,[505,523,524],{"class":511},"# ---\n",[505,526,528],{"class":507,"line":527},4,[505,529,530],{"emptyLinePlaceholder":16},"\n",[505,532,533,537,541],{"class":507,"line":50},[505,534,536],{"class":535},"s9eBZ","name",[505,538,540],{"class":539},"sVt8B",": ",[505,542,544],{"class":543},"sZZnC","danmu-api\n",[505,546,548,551],{"class":507,"line":547},6,[505,549,550],{"class":535},"services",[505,552,553],{"class":539},":\n",[505,555,557,560],{"class":507,"line":556},7,[505,558,559],{"class":535},"  danmu-api",[505,561,553],{"class":539},[505,563,564],{"class":507,"line":27},[505,565,566],{"class":511},"    # 镜像地址\n",[505,568,570,573,575],{"class":507,"line":569},9,[505,571,572],{"class":535},"    image",[505,574,540],{"class":539},[505,576,577],{"class":543},"logvar\u002Fdanmu-api:latest\n",[505,579,580],{"class":507,"line":39},[505,581,582],{"class":511},"    # 容器名\n",[505,584,586,589,591],{"class":507,"line":585},11,[505,587,588],{"class":535},"    container_name",[505,590,540],{"class":539},[505,592,544],{"class":543},[505,594,595],{"class":507,"line":15},[505,596,597],{"class":511},"    # 主机名\n",[505,599,601,604,606],{"class":507,"line":600},13,[505,602,603],{"class":535},"    hostname",[505,605,540],{"class":539},[505,607,544],{"class":543},[505,609,611],{"class":507,"line":610},14,[505,612,613],{"class":511},"    # 环境变量\n",[505,615,617,620],{"class":507,"line":616},15,[505,618,619],{"class":535},"    environment",[505,621,553],{"class":539},[505,623,625],{"class":507,"line":624},16,[505,626,627],{"class":511},"      # --- 系统权限设置 ---\n",[505,629,631,634],{"class":507,"line":630},17,[505,632,633],{"class":539},"      - ",[505,635,636],{"class":543},"PUID=1000\n",[505,638,640,642],{"class":507,"line":639},18,[505,641,633],{"class":539},[505,643,644],{"class":543},"PGID=1000\n",[505,646,648,650],{"class":507,"line":647},19,[505,649,633],{"class":539},[505,651,652],{"class":543},"TZ=Asia\u002FShanghai\n",[505,654,656,658],{"class":507,"line":655},20,[505,657,633],{"class":539},[505,659,660],{"class":543},"UMASK=022\n",[505,662,664],{"class":507,"line":663},21,[505,665,666],{"class":511},"      # --- 访问令牌设置 ---\n",[505,668,670],{"class":507,"line":669},22,[505,671,672],{"class":511},"      # 客户端\u002F播放器连接用的 Token (可修改)\n",[505,674,676,678],{"class":507,"line":675},23,[505,677,633],{"class":539},[505,679,680],{"class":543},"TOKEN=danmu\n",[505,682,684],{"class":507,"line":683},24,[505,685,686],{"class":511},"      # 网页后台管理员密码 (建议修改)\n",[505,688,690,692],{"class":507,"line":689},25,[505,691,633],{"class":539},[505,693,694],{"class":543},"ADMIN_TOKEN=admin_secret_key_2025\n",[505,696,698],{"class":507,"line":697},26,[505,699,700],{"class":511},"    # 目录映射：宿主机目录:容器内目录\n",[505,702,704,707],{"class":507,"line":703},27,[505,705,706],{"class":535},"    volumes",[505,708,553],{"class":539},[505,710,712],{"class":507,"line":711},28,[505,713,714],{"class":511},"      # 配置目录\n",[505,716,718,720,723],{"class":507,"line":717},29,[505,719,633],{"class":539},[505,721,722],{"class":543},"\u002Fmnt\u002Fdocker\u002Fapps\u002Fdanmu-api\u002Fconfig:\u002Fapp\u002Fconfig",[505,724,725],{"class":539}," \n",[505,727,729],{"class":507,"line":728},30,[505,730,731],{"class":511},"      # 缓存目录 (数据主要存储区)\n",[505,733,735,737,740],{"class":507,"line":734},31,[505,736,633],{"class":539},[505,738,739],{"class":543},"\u002Fmnt\u002Fdocker\u002Fapps\u002Fdanmu-api\u002Fcache:\u002Fapp\u002F.cache",[505,741,725],{"class":539},[505,743,745],{"class":507,"line":744},32,[505,746,747],{"class":511},"    # 网络模式\n",[505,749,751,754,756],{"class":507,"line":750},33,[505,752,753],{"class":535},"    network_mode",[505,755,540],{"class":539},[505,757,758],{"class":543},"bridge\n",[505,760,762],{"class":507,"line":761},34,[505,763,764],{"class":511},"    # 端口映射\n",[505,766,768,771],{"class":507,"line":767},35,[505,769,770],{"class":535},"    ports",[505,772,553],{"class":539},[505,774,776],{"class":507,"line":775},36,[505,777,778],{"class":511},"      # 主机端口:容器端口\n",[505,780,782,784],{"class":507,"line":781},37,[505,783,633],{"class":539},[505,785,786],{"class":543},"9321:9321\n",[505,788,790],{"class":507,"line":789},38,[505,791,792],{"class":511},"    # 重启策略\n",[505,794,796,799,801],{"class":507,"line":795},39,[505,797,798],{"class":535},"    restart",[505,800,540],{"class":539},[505,802,803],{"class":543},"always\n",[412,805,807],{"id":806},"_3-启动与验证","3 启动与验证",[441,809,811],{"id":810},"_31-启动服务","3.1 启动服务",[417,813,814],{},"在 SSH 终端中执行：",[417,816,450],{},[452,818,821],{"className":819,"code":820,"language":457},[455],"cd \u002Fmnt\u002Fdocker\u002Fapps\u002Fdanmu-api\ndocker compose up -d\n",[429,822,820],{"__ignoreMap":460},[417,824,825,826,829],{},"或者在飞牛 Docker 管理器中，通过“添加项目”直接粘贴上面的 ",[421,827,828],{},"YAML"," 代码并启动。",[441,831,833],{"id":832},"_32-运行状态检查","3.2 运行状态检查",[417,835,836],{},"启动后，请务必检查容器是否稳定运行：",[452,838,842],{"className":839,"code":840,"language":841,"meta":460,"style":460},"language-bash shiki shiki-themes github-light github-dark","docker logs -f danmu-api\n","bash",[429,843,844],{"__ignoreMap":460},[505,845,846,849,852,856],{"class":507,"line":508},[505,847,122],{"class":848},"sScJk",[505,850,851],{"class":543}," logs",[505,853,855],{"class":854},"sj4cs"," -f",[505,857,858],{"class":543}," danmu-api\n",[860,861,862],"ul",{},[863,864,865,868],"li",{},[421,866,867],{},"如果容器正常运行","：您将看到服务启动日志。",[412,870,872],{"id":871},"_4-使用指南","4 使用指南",[441,874,876],{"id":875},"_41-客户端连接","4.1 客户端连接",[860,878,879,888,896],{},[863,880,881,884,885],{},[421,882,883],{},"API 地址","：",[429,886,887],{},"http:\u002F\u002F{NAS_IP}:9321\u002Fdanmu",[863,889,890,884,893],{},[421,891,892],{},"API Token",[429,894,895],{},"danmu",[863,897,898,884,901],{},[421,899,900],{},"ADMIN_TOKEN",[429,902,903],{},"admin_secret_key_2025",[441,905,907],{"id":906},"_42-数据持久化说明","4.2 数据持久化说明",[417,909,910,911,914],{},"在您的配置中，数据保存在 ",[429,912,913],{},"\u002Fmnt\u002Fdocker\u002Fapps\u002Fdanmu-api\u002Fcache","。",[860,916,917,923],{},[863,918,919,922],{},[421,920,921],{},"备份","：请定期备份该目录，以防弹幕数据丢失。",[863,924,925,928,929,932],{},[421,926,927],{},"清理","：如果 ",[429,930,931],{},"cache"," 目录过大，可手动清理其中的临时文件。",[412,934,936],{"id":935},"_5-常见问题-troubleshooting","5 常见问题 (Troubleshooting)",[938,939,940,962],"table",{},[941,942,943],"thead",{},[944,945,946,952,957],"tr",{},[947,948,949],"th",{},[421,950,951],{},"现象",[947,953,954],{},[421,955,956],{},"可能原因",[947,958,959],{},[421,960,961],{},"解决方案",[963,964,965,983],"tbody",{},[944,966,967,973,976],{},[968,969,970],"td",{},[421,971,972],{},"后台设置无法打开",[968,974,975],{},"缺少 Fake 变量",[968,977,978,979,982],{},"由于去掉了 ",[429,980,981],{},"DEPLOY_PLATFROM"," 变量，后台部分面板可能无法加载，但不影响 API 播放。",[944,984,985,990,993],{},[968,986,987],{},[421,988,989],{},"弹幕无法保存",[968,991,992],{},"权限问题",[968,994,995,996,998],{},"检查 ",[429,997,913],{}," 是否有写入权限。",[412,1000,1002],{"id":1001},"_6-总结与效果展示","6 总结与效果展示",[417,1004,1005,1006,1009],{},"至此，您的 ",[421,1007,1008],{},"LogVar 弹幕 API (纯本地版)"," 应该已经成功在 NAS 上运行了！",[417,1011,1012],{},"通过这种“极简”部署方式，我们摒弃了复杂的外部数据库依赖，仅凭 NAS 本地的存储空间就实现了弹幕的私有化托管。这不仅最大程度地节省了系统资源，也让数据安全完全掌握在自己手中。",[441,1014,1016],{"id":1015},"_61-运行效果图","6.1 运行效果图",[417,1018,1019],{},"部署完成后，服务运行平稳。以下是实际部署的实机效果展示：",[860,1021,1022],{},[863,1023,1024],{},[421,1025,1026],{},"浏览器访问 http:\u002F\u002FNAS_IP:9321\u002Fdanmu 的后台界面",[417,1028,1029],{},[1030,1031],"img",{"alt":460,"src":1032},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780572263028.avif",[860,1034,1035],{},[863,1036,1037],{},"成功进入弹幕 API 的 Web 管理后台",[417,1039,1040],{},[1030,1041],{"alt":460,"src":1042},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780572276221.avif",[417,1044,1045],{},[1030,1046],{"alt":460,"src":1047},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780572284759.avif",[860,1049,1050],{},[863,1051,1052],{},[421,1053,1054],{},"第三方播放器连接成功的画面，客户端成功连接本地服务器，弹幕加载正常",[417,1056,1057],{},[1030,1058],{"alt":460,"src":1059},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780572294785.avif",[417,1061,1062],{},[1030,1063],{"alt":460,"src":1064},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780572462052.avif",[417,1066,1067],{},[1030,1068],{"alt":460,"src":1069},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780572471793.avif",[417,1071,1072],{},[1030,1073],{"alt":460,"src":1074},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780572482289.avif",[441,1076,1078],{"id":1077},"_62-公益弹幕api","6.2 公益弹幕API",[417,1080,1081],{},"如果不想自己搭建，也可以使用公益的，但是肯定没有自己搭建的好。",[452,1083,1085],{"className":500,"code":1084,"language":244,"meta":460,"style":460},"https:\u002F\u002Fdanmu.99600000.xyz\u002Fdanmu\n",[429,1086,1087],{"__ignoreMap":460},[505,1088,1089],{"class":507,"line":508},[505,1090,1084],{"class":543},[1092,1093],"hr",{},[417,1095,1096],{},[1097,1098,1099],"em",{},"Created with ❤️ by  十三",[1101,1102,1103],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .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);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":460,"searchDepth":515,"depth":515,"links":1105},[1106,1107,1111,1115,1119,1123,1124],{"id":414,"depth":515,"text":415},{"id":435,"depth":515,"text":436,"children":1108},[1109,1110],{"id":443,"depth":521,"text":444},{"id":463,"depth":521,"text":464},{"id":474,"depth":515,"text":475,"children":1112},[1113,1114],{"id":478,"depth":521,"text":479},{"id":493,"depth":521,"text":494},{"id":806,"depth":515,"text":807,"children":1116},[1117,1118],{"id":810,"depth":521,"text":811},{"id":832,"depth":521,"text":833},{"id":871,"depth":515,"text":872,"children":1120},[1121,1122],{"id":875,"depth":521,"text":876},{"id":906,"depth":521,"text":907},{"id":935,"depth":515,"text":936},{"id":1001,"depth":515,"text":1002,"children":1125},[1126,1127],{"id":1015,"depth":521,"text":1016},{"id":1077,"depth":521,"text":1078},"md",{"published":174,"author":1130,"image":1131},"十三","https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780564297253.avif",{"title":173,"description":173},"blog\u002F10-技术专栏\u002F10-docker\u002F10.LogVar 弹幕 API 部署指南",[122,176,177],"-iL4exMV1hU09Fudi7UclqZfZjPg-7SuqlnK3dPnWG8",[1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194],{"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},1788281984714]