[{"data":1,"prerenderedAt":1244},["ShallowReactive",2],{"site-search-articles":3,"article-\u002Fblog\u002F10\u002F30-nas\u002Fqmediasyncstrm":403,"article-around-\u002Fblog\u002F10\u002F30-nas\u002Fqmediasyncstrm":1185},[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":129,"title":131,"body":404,"category":134,"date":132,"description":131,"draft":28,"extension":1177,"meta":1178,"minutes":50,"navigation":16,"path":130,"pinned":28,"seo":1181,"stem":1182,"tags":1183,"__hash__":1184},{"type":405,"value":406,"toc":1158},"minimark",[407,411,415,435,438,442,445,450,453,496,498,502,505,509,512,937,939,943,965,974,980,984,987,992,996,999,1003,1006,1010,1017,1023,1028,1032,1038,1042,1059,1064,1068,1088,1093,1098,1103,1105,1109,1122,1128,1133,1139,1144,1149,1154],[408,409,131],"h1",{"id":410},"基于-lucky-反代与-qmediasync-的飞牛外网-strm-直连",[412,413,414],"h2",{"id":414},"序言",[416,417,418,419,423,424,426,427,430,431,434],"p",{},"飞牛私有云（FnOS）近期已正式在系统层面新增对 ",[420,421,422],"code",{},".strm"," 文件挂载的支持。该特性允许用户通过轻量级的索引文件引用远程或本地媒体资源，极大地优化了存储架构。然而，原生生成的 ",[420,425,422],{}," 文件通常绑定局域网私有 IP，导致外网环境下播放链路断裂。通过 ",[428,429,124],"strong",{}," 反向代理配合 ",[428,432,433],{},"QMediaSync (QMS)"," 自动化工具，将内网地址重构为标准的公网域名 HTTPS 链接，可实现飞牛影视在外网环境下“免转码、零损耗”的直连观影体验。",[436,437],"hr",{},[412,439,441],{"id":440},"_1-lucky-反向代理配置建议","1 Lucky 反向代理配置建议",[416,443,444],{},"作为高性能的边缘网关，Lucky 在此方案中负责处理 SSL 证书自动化管理及外网流量分发。",[446,447,449],"h3",{"id":448},"_11-服务反代与端口暴露","1.1 服务反代与端口暴露",[416,451,452],{},"为了实现外网环境下对 QMS 的管理及视频流调度，需在 Lucky 中配置以下转发规则：",[454,455,456,471,481,490],"ul",{},[457,458,459,462,463,466,467,470],"li",{},[428,460,461],{},"WebUI 访问","：将公网域名（如 ",[420,464,465],{},"qms.域名.com","）指向 QMS 的管理端口 ",[420,468,469],{},"12333","。",[457,472,473,476,477,480],{},[428,474,475],{},"代理服务链路","：反代 QMS 的代理服务端口（默认 ",[420,478,479],{},"8095","），确保外网播放器发起的 HTTPS 请求能准确触达内网的文件分发层。",[457,482,483],{},[454,484,485],{},[457,486,487],{},[428,488,489],{},"如果需要 QMS 直接走 302 反代，通过 Emby 或者 Jellfyin 去直连观看",[457,491,492,495],{},[428,493,494],{},"安全性增强","：利用 Lucky 自动申请并部署 SSL 证书，确保所有流媒体传输均在 HTTPS 协议下加密进行。",[436,497],{},[412,499,501],{"id":500},"_2-qmediasync-的容器化部署与环境搭建","2 QMediaSync 的容器化部署与环境搭建",[416,503,504],{},"QMS 的核心价值在于其强大的路径重构与自动化同步能力。建议使用 Docker Compose 进行标准化部署，以确保配置的一致性。",[446,506,508],{"id":507},"_21-docker-compose-配置文件示例","2.1 Docker Compose 配置文件示例",[416,510,511],{},"根据您的环境需求，建议采用如下配置：",[513,514,518],"pre",{"className":515,"code":516,"language":244,"meta":517,"style":517},"language-yaml shiki shiki-themes github-light github-dark","name: qmediasync\n# 默认用户名 admin, 密码 admin123\nservices:\n  qms-postgres:\n    # 镜像地址\n    image: postgres:15.4\n    # 容器名\n    container_name: qms-postgres\n    # 主机名\n    hostname: qms-postgres\n    environment:\n      POSTGRES_USER: qms-postgres\n      POSTGRES_PASSWORD: qms-postgres\n      POSTGRES_DB: qms-postgres\n    ports:\n      - 15432:5432\n    volumes:\n      - \u002Fmnt\u002Fdocker\u002Fapps\u002Fqms-postgres\u002Fdata:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    # 重启策略，总是重启\n    restart: always\n\n  qmediasync:\n    # 镜像地址\n    image: qicfan\u002Fqmediasync:latest\n    # 容器名\n    container_name: qmediasync\n    # 主机名\n    hostname: qmediasync\n    # 环境变量：- 变量名=值\n    depends_on:\n      - qms-postgres\n    environment:\n      # 时区\n      - TZ=Asia\u002FShanghai\n    # 目录映射：宿主机目录:容器内目录\n    volumes:\n      # 容器配置文件路径\n      - \u002Fmnt\u002Fdocker\u002Fapps\u002Fqmediasync\u002Fconfig:\u002Fapp\u002Fconfig\n      # 生成 strm 文件路径\n      - \u002Fmnt\u002FMediaStrm\u002Fqmediasync\u002Fmedia:\u002Fmedia\n    # 端口\n    ports:\n      # webUI 端口\n      - 12333:12333\n      - 12332:12332\n      # emby代理端口默认：http-8095 https-8094\n      - 7095:8095\n      - 7094:8094\n    # 重启策略，总是重启\n    restart: always\n\nnetworks:\n    default:\n        name: qmediasync\n","",[420,519,520,537,544,553,561,566,577,583,593,599,608,616,625,635,645,653,662,670,678,684,695,701,709,714,724,729,738,743,752,758,766,773,780,786,794,800,807,813,821,827,835,841,848,854,862,870,876,884,892,897,906,911,919,927],{"__ignoreMap":517},[521,522,525,529,533],"span",{"class":523,"line":524},"line",1,[521,526,528],{"class":527},"s9eBZ","name",[521,530,532],{"class":531},"sVt8B",": ",[521,534,536],{"class":535},"sZZnC","qmediasync\n",[521,538,540],{"class":523,"line":539},2,[521,541,543],{"class":542},"sJ8bj","# 默认用户名 admin, 密码 admin123\n",[521,545,547,550],{"class":523,"line":546},3,[521,548,549],{"class":527},"services",[521,551,552],{"class":531},":\n",[521,554,556,559],{"class":523,"line":555},4,[521,557,558],{"class":527},"  qms-postgres",[521,560,552],{"class":531},[521,562,563],{"class":523,"line":50},[521,564,565],{"class":542},"    # 镜像地址\n",[521,567,569,572,574],{"class":523,"line":568},6,[521,570,571],{"class":527},"    image",[521,573,532],{"class":531},[521,575,576],{"class":535},"postgres:15.4\n",[521,578,580],{"class":523,"line":579},7,[521,581,582],{"class":542},"    # 容器名\n",[521,584,585,588,590],{"class":523,"line":27},[521,586,587],{"class":527},"    container_name",[521,589,532],{"class":531},[521,591,592],{"class":535},"qms-postgres\n",[521,594,596],{"class":523,"line":595},9,[521,597,598],{"class":542},"    # 主机名\n",[521,600,601,604,606],{"class":523,"line":39},[521,602,603],{"class":527},"    hostname",[521,605,532],{"class":531},[521,607,592],{"class":535},[521,609,611,614],{"class":523,"line":610},11,[521,612,613],{"class":527},"    environment",[521,615,552],{"class":531},[521,617,618,621,623],{"class":523,"line":15},[521,619,620],{"class":527},"      POSTGRES_USER",[521,622,532],{"class":531},[521,624,592],{"class":535},[521,626,628,631,633],{"class":523,"line":627},13,[521,629,630],{"class":527},"      POSTGRES_PASSWORD",[521,632,532],{"class":531},[521,634,592],{"class":535},[521,636,638,641,643],{"class":523,"line":637},14,[521,639,640],{"class":527},"      POSTGRES_DB",[521,642,532],{"class":531},[521,644,592],{"class":535},[521,646,648,651],{"class":523,"line":647},15,[521,649,650],{"class":527},"    ports",[521,652,552],{"class":531},[521,654,656,659],{"class":523,"line":655},16,[521,657,658],{"class":531},"      - ",[521,660,661],{"class":535},"15432:5432\n",[521,663,665,668],{"class":523,"line":664},17,[521,666,667],{"class":527},"    volumes",[521,669,552],{"class":531},[521,671,673,675],{"class":523,"line":672},18,[521,674,658],{"class":531},[521,676,677],{"class":535},"\u002Fmnt\u002Fdocker\u002Fapps\u002Fqms-postgres\u002Fdata:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n",[521,679,681],{"class":523,"line":680},19,[521,682,683],{"class":542},"    # 重启策略，总是重启\n",[521,685,687,690,692],{"class":523,"line":686},20,[521,688,689],{"class":527},"    restart",[521,691,532],{"class":531},[521,693,694],{"class":535},"always\n",[521,696,698],{"class":523,"line":697},21,[521,699,700],{"emptyLinePlaceholder":16},"\n",[521,702,704,707],{"class":523,"line":703},22,[521,705,706],{"class":527},"  qmediasync",[521,708,552],{"class":531},[521,710,712],{"class":523,"line":711},23,[521,713,565],{"class":542},[521,715,717,719,721],{"class":523,"line":716},24,[521,718,571],{"class":527},[521,720,532],{"class":531},[521,722,723],{"class":535},"qicfan\u002Fqmediasync:latest\n",[521,725,727],{"class":523,"line":726},25,[521,728,582],{"class":542},[521,730,732,734,736],{"class":523,"line":731},26,[521,733,587],{"class":527},[521,735,532],{"class":531},[521,737,536],{"class":535},[521,739,741],{"class":523,"line":740},27,[521,742,598],{"class":542},[521,744,746,748,750],{"class":523,"line":745},28,[521,747,603],{"class":527},[521,749,532],{"class":531},[521,751,536],{"class":535},[521,753,755],{"class":523,"line":754},29,[521,756,757],{"class":542},"    # 环境变量：- 变量名=值\n",[521,759,761,764],{"class":523,"line":760},30,[521,762,763],{"class":527},"    depends_on",[521,765,552],{"class":531},[521,767,769,771],{"class":523,"line":768},31,[521,770,658],{"class":531},[521,772,592],{"class":535},[521,774,776,778],{"class":523,"line":775},32,[521,777,613],{"class":527},[521,779,552],{"class":531},[521,781,783],{"class":523,"line":782},33,[521,784,785],{"class":542},"      # 时区\n",[521,787,789,791],{"class":523,"line":788},34,[521,790,658],{"class":531},[521,792,793],{"class":535},"TZ=Asia\u002FShanghai\n",[521,795,797],{"class":523,"line":796},35,[521,798,799],{"class":542},"    # 目录映射：宿主机目录:容器内目录\n",[521,801,803,805],{"class":523,"line":802},36,[521,804,667],{"class":527},[521,806,552],{"class":531},[521,808,810],{"class":523,"line":809},37,[521,811,812],{"class":542},"      # 容器配置文件路径\n",[521,814,816,818],{"class":523,"line":815},38,[521,817,658],{"class":531},[521,819,820],{"class":535},"\u002Fmnt\u002Fdocker\u002Fapps\u002Fqmediasync\u002Fconfig:\u002Fapp\u002Fconfig\n",[521,822,824],{"class":523,"line":823},39,[521,825,826],{"class":542},"      # 生成 strm 文件路径\n",[521,828,830,832],{"class":523,"line":829},40,[521,831,658],{"class":531},[521,833,834],{"class":535},"\u002Fmnt\u002FMediaStrm\u002Fqmediasync\u002Fmedia:\u002Fmedia\n",[521,836,838],{"class":523,"line":837},41,[521,839,840],{"class":542},"    # 端口\n",[521,842,844,846],{"class":523,"line":843},42,[521,845,650],{"class":527},[521,847,552],{"class":531},[521,849,851],{"class":523,"line":850},43,[521,852,853],{"class":542},"      # webUI 端口\n",[521,855,857,859],{"class":523,"line":856},44,[521,858,658],{"class":531},[521,860,861],{"class":535},"12333:12333\n",[521,863,865,867],{"class":523,"line":864},45,[521,866,658],{"class":531},[521,868,869],{"class":535},"12332:12332\n",[521,871,873],{"class":523,"line":872},46,[521,874,875],{"class":542},"      # emby代理端口默认：http-8095 https-8094\n",[521,877,879,881],{"class":523,"line":878},47,[521,880,658],{"class":531},[521,882,883],{"class":535},"7095:8095\n",[521,885,887,889],{"class":523,"line":886},48,[521,888,658],{"class":531},[521,890,891],{"class":535},"7094:8094\n",[521,893,895],{"class":523,"line":894},49,[521,896,683],{"class":542},[521,898,900,902,904],{"class":523,"line":899},50,[521,901,689],{"class":527},[521,903,532],{"class":531},[521,905,694],{"class":535},[521,907,909],{"class":523,"line":908},51,[521,910,700],{"emptyLinePlaceholder":16},[521,912,914,917],{"class":523,"line":913},52,[521,915,916],{"class":527},"networks",[521,918,552],{"class":531},[521,920,922,925],{"class":523,"line":921},53,[521,923,924],{"class":527},"    default",[521,926,552],{"class":531},[521,928,930,933,935],{"class":523,"line":929},54,[521,931,932],{"class":527},"        name",[521,934,532],{"class":531},[521,936,536],{"class":535},[436,938],{},[446,940,942],{"id":941},"_22-登录账号","2.2 登录账号",[416,944,945,946,949,950,953,954,957,958,961,962,470],{},"浏览器访问 ",[420,947,948],{},"http:\u002F\u002F192.168.x.x:12333","打开 ",[428,951,952],{},"qms"," ，默认账号是 ",[420,955,956],{},"admin","，默认密码是",[420,959,960],{},"admin123","，",[428,963,964],{},"密码记得修改",[416,966,967,968,971,972,470],{},"添加网盘账号，可以直接扫码登录",[428,969,970],{},"115","，也可以登录你的 ",[428,973,89],{},[416,975,976],{},[977,978],"img",{"alt":517,"src":979},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780585500970.avif",[446,981,983],{"id":982},"_23-strm-设置","2.3 Strm 设置",[416,985,986],{},"预设已经可以了，你只需要填写 strm 直连地址，也就是直接填写你用 lucky 反代出去的 qms 的 12333 地址。",[416,988,989],{},[977,990],{"alt":517,"src":991},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780585502674.avif",[446,993,995],{"id":994},"_24-emby-设置可选设置飞牛影视不需要","2.4 Emby 设置（可选设置，飞牛影视不需要）",[416,997,998],{},"如果你要使用 Emby 或者 Jellyfin，那么你可以设置，只用设置从 Emby 那里获取的 API key 就行。如果你只用飞牛影视读取 strm，直接跳过就行。",[446,1000,1002],{"id":1001},"_25-刮削整理可选设置","2.5 刮削&整理（可选设置）",[416,1004,1005],{},"如果你需要刮削整理，那么你可以设置，帮你整理一下，我是在媒体库直接分好类了，就不需要整理了，刮削我喜欢用飞牛。",[446,1007,1009],{"id":1008},"_26-strm-同步目录","2.6 Strm 同步目录",[416,1011,1012,1013,1016],{},"在 strm 同步目录中添加目录，选择你刚才登陆的 115 网盘或者 OpenList ，然后将网盘里面的媒体库挂载到 qms 的 ",[420,1014,1015],{},"\u002Fmedia"," 路径。",[416,1018,1019,1020,470],{},"最后点击同步就行，他就会自动生成 strm 文件了，也可以设置",[428,1021,1022],{},"定时同步",[416,1024,1025],{},[977,1026],{"alt":517,"src":1027},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780585504129.avif",[412,1029,1031],{"id":1030},"_3-飞牛影视媒体库整合与刮削实务","3 飞牛影视媒体库整合与刮削实务",[416,1033,1034,1035,1037],{},"生成的 ",[420,1036,422],{}," 文件需接入飞牛影视（FnOS Video）系统，方能转化为海报墙形式的影音中心。",[446,1039,1041],{"id":1040},"_31-媒体库路径导入","3.1 媒体库路径导入",[454,1043,1044,1053],{},[457,1045,1046,1049,1050,470],{},[428,1047,1048],{},"路径选择","：在飞牛影视设置中新增媒体库，路径务必指向 ",[428,1051,1052],{},"QMS 任务输出的 .strm 文件夹",[457,1054,1055,1058],{},[428,1056,1057],{},"权限校验","：确保飞牛影视应用具有对该文件夹的读取权限。",[416,1060,1061],{},[977,1062],{"alt":517,"src":1063},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780585505539.avif",[446,1065,1067],{"id":1066},"_32-自动化刮削","3.2 自动化刮削",[454,1069,1070,1079],{},[457,1071,1072,1075,1076,1078],{},[428,1073,1074],{},"元数据识别","：由于 QMS 在生成 ",[420,1077,422],{}," 时完全继承了物理文件的命名结构，飞牛影视的内置刮削引擎可自动匹配 TMDB 或其他元数据提供商，自动下载剧照、简介及演员信息。",[457,1080,1081,1084,1085,1087],{},[428,1082,1083],{},"外网连通测试","：在移动网络环境下，飞牛影视 App 会读取 ",[420,1086,422],{}," 内的域名地址，通过 Lucky 建立的 HTTPS 隧道直接调取视频流，跳过内网 IP 限制。",[416,1089,1090],{},[977,1091],{"alt":517,"src":1092},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780585506996.avif",[454,1094,1095],{},[457,1096,1097],{},"这是 qms 生成的 strm 文件信息例子",[416,1099,1100],{},[977,1101],{"alt":517,"src":1102},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780585508625.avif",[436,1104],{},[412,1106,1108],{"id":1107},"_4-总结","4 总结",[416,1110,1111,1112,1114,1115,1118,1119,1121],{},"综上所述，利用 ",[428,1113,124],{}," 的反代灵活性与 ",[428,1116,1117],{},"QMediaSync"," 的 Host 重构能力，我们成功解决了飞牛 OS 原生 ",[420,1120,422],{}," 文件在广域网环境下的接入难题。该方案不仅实现了全自动化的海报墙刮削，更赋予了用户在任意地点通过域名直连飞牛影音库的能力，兼顾了访问便捷性与播放质量。最终呈现的效果为：飞牛影视 App 在外网环境下秒开原画视频，实现如同局域网般的流畅体验。",[416,1123,1124,1127],{},[428,1125,1126],{},"播放杜比展示","，网页没办法播放杜比，建议用客户端，红色的奈非 logo。",[416,1129,1130],{},[977,1131],{"alt":517,"src":1132},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780585510366.avif",[416,1134,1135,1138],{},[428,1136,1137],{},"缺点展示","：飞牛自带的播放器，播放的视频信息格式是不能被看到的。",[416,1140,1141],{},[977,1142],{"alt":517,"src":1143},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780585512109.avif",[416,1145,1146],{},[428,1147,1148],{},"这是我的飞牛媒体库",[416,1150,1151],{},[977,1152],{"alt":517,"src":1153},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780585514108.avif",[1155,1156,1157],"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 .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":517,"searchDepth":539,"depth":539,"links":1159},[1160,1161,1164,1172,1176],{"id":414,"depth":539,"text":414},{"id":440,"depth":539,"text":441,"children":1162},[1163],{"id":448,"depth":546,"text":449},{"id":500,"depth":539,"text":501,"children":1165},[1166,1167,1168,1169,1170,1171],{"id":507,"depth":546,"text":508},{"id":941,"depth":546,"text":942},{"id":982,"depth":546,"text":983},{"id":994,"depth":546,"text":995},{"id":1001,"depth":546,"text":1002},{"id":1008,"depth":546,"text":1009},{"id":1030,"depth":539,"text":1031,"children":1173},[1174,1175],{"id":1040,"depth":546,"text":1041},{"id":1066,"depth":546,"text":1067},{"id":1107,"depth":539,"text":1108},"md",{"published":132,"author":1179,"image":1180},"十三","https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780564811754.avif",{"title":131,"description":131},"blog\u002F10-技术专栏\u002F30-NAS\u002F25.基于QMediaSync的飞牛外网strm直连",[134,135,136],"UbA6SKAOr6c8Pn5JPLefpfLMgpNl_rPwNrkzYJ5xXH4",[1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243],{"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},1788281984622]