<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>补陋阁 RSS 2.0</title>
    <link>https://blog.hongsw.cn</link>
    <atom:link rel="self" href="https://blog.hongsw.cn/api/rss" type="application/rss+xml" />
    <description>码于行，思于心。以文补陋，以技自砺。</description>
    <language>zh-CN</language>
    <lastBuildDate>Thu, 18 Jun 2026 03:20:07 GMT</lastBuildDate>
    <image>
      <url>https://blog.hongsw.cn/images/avatar.webp</url>
      <link>https://blog.hongsw.cn</link>
      <title>补陋阁</title>
    </image>
    <item>
      <title>内站圆满，小作文奉上</title>
      <link>https://blog.hongsw.cn/article/backsiakzbmhs3xp</link>
      <guid>https://blog.hongsw.cn/article/backsiakzbmhs3xp</guid>
      <pubDate>Sat, 13 Dec 2025 16:15:57 GMT</pubDate>
      <dc:creator>补陋阁</dc:creator>
      <description>在PT社区求药历程的记录，以及求药过程中的艰辛和挑战。同时，也表达了对帮助过自己的人的感激之情，以及对未来在PT社区发展的期待。</description>
      <content:encoded xml:lang="zh-CN"><![CDATA[<p>历时160天，12大圆满毕业～～开心！！！</p>
<p>写一下小作文，感谢一路以来的各位佬的帮助和圈内辛勤奉献的Pter们，没有你们的付出，这个圈子也办法如此蓬勃。</p>
<p>以下内容字数较多，且基本为流水账，主要记录求药历程和心得，不喜勿喷。</p>
<p>然后写的时候已经半夜了，可能写的不知所以，不知道自己说的啥，有问题可以评论，不要骂我，嘻嘻。</p>
<hr />
<h1>历程</h1>
<p>从7月7日贴吧处求到星陨阁和末日开始入坑（感谢smallghost佬），学习了如果下载、上传、发种等各项技能，也了解到PT里的各种规则和12大！从此踏上了求💊之路。</p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1765643255547-827ba214-c6d8-4d6a-8f4d-d8953c1c6229.png" alt="" /></p>
<p>7月10日，于贴吧蹲守，早起的鸟儿有🐛吃，在贴吧求到了第一个大站，馒头～（感谢🙏电脑小白乐园！）。从此进入了PT新世界。</p>
<p>原来资源可以这么丰富，下载能够这么快速！也在内部的论坛里了解了其他各大站点的特色，也有了自己的主攻方向！</p>
<p>有了馒头之后，开始过新手任务。中间回归观影，但是无奈属于WEB更新有点慢，虽然资源很全，但是每次新上的，只能通过转载才能获取，这使得我迫切的想要一个WEB专精的站点。</p>
<p>也是在这一个月的折腾里学会了辅种，MP等相关工具的使用。</p>
<p>但是目前我一切的消息来源都是从贴吧接收的，但是贴吧又属于公开场所，不让提及。</p>
<p>转折开始，从贴吧吧主那求得了一个“13城”新站，有了第一个圈子QQ群，从此一发不可收拾，开始疯狂水群，收割各种小站，汲取知识。</p>
<p>在这一个月的摸爬滚打中，时间悄然的来到HH的站庆，也是我从贴吧得知的消息。开始疯狂的求药，想要在这一次站庆中能够入场。</p>
<p>8月18日，玩得早不如玩得巧，我一直是这样认为的，我在各个小站的论坛留言求药，也学会了契约。时也命也，一切机缘就从这开始，我在“13城”的Q群里发求一个HH，可契约，遇到了我PT人生的贵人LT大佬（简写，防止骚扰大佬）。获得了第一个WEB大站，也获得了第一个契约2T一年。</p>
<p>也通过这个群，我结识了几位大佬，带我步入轨道。有L***520佬，甜❤️佬，这几位佬都起到了至关重要的引领作用。</p>
<p>我先是从L***520佬那求到了蜂巢论坛的药，正式进入了PT论坛，里面花里胡哨好好看呀。然后甜❤️佬带我加了一个PT大群！！超级大的那种。</p>
<p>然后在群友道长开发的QQ机器人帮助下，第一时间发现蜂巢在契约不可说，第一次听说但是看到5T500官的要求，有点打退堂鼓。但是LT佬说这是很标准的契约，不过分～我就立马下定了。也是通过我诚恳的发言，以及前面几个月不断的耕耘，以良好的数据求得了这一枚来之不易的不可说,感谢夜佬！至此9月5日，进度3/12。</p>
<p>时光荏苒，在甜❤️佬带我入的大Q群内，我每天打卡水群，因为群里发药看等级，🥹每次抽奖的时候，恨不得自己100级。这里是一个伏笔，虽然我没有抽药的资格，但是我每天坚持水群打卡～～～。记笔记很重要！</p>
<p>时间来到快国庆，收到许多小道消息，说是人、家都国庆会开药，我就私聊我的好上家～LT佬，再得知能够排队后，我欣喜若狂。国庆的前一天。简直是PT的狂欢呀，不可说开药、岛开药（可惜不认识VIP大佬，没有求到），家开药、人开药、重点是2年没开的皇后也开了！！！真是玩得早不如玩得巧，这个站很多人都是卡在11大之后，花钱捐入的。</p>
<p>在国庆0点时候，准时收到了LT大佬的家、人、然后询问皇后也能发，真的欣喜若狂。但是因为2年没开药，突然开药导致皇后的服务器有点扛不住压力，LT佬虽然第一时间给我发药了但是没能成功，然后我也只是等着白天想着恢复了再说，但是凌晨2、3点发现恢复了，然后群内也有大佬在发皇后，我就想着先求了吧，怕到时候满坑了，或者服务器修不好，先进最保险。就找林佬！求了一个皇后，但是再凌晨3、4点的时候LT佬私聊我说发我药的时候，看我有了！真是非常感谢LT佬！至此10月1日，进度6/12。</p>
<p>国庆真的一个慵懒的日子，每天都是中午醒，然后有一天错过了早上的TTG，听说大Q群里发了好多个，有在的都发。好后悔没早起啊。最后发药的大佬也是再群里抽了一波奖，可惜抽了3次药，我是一次没中！！！！天生抽奖黑体。最后得知发药的大佬，是个作家！！！我从旁吹嘘，可能也是把大佬说幸福了！主动找我要📮，给我单独安排了一个！在这边谢谢M佬！至此10月6日，进度7/12。</p>
<p>也是在水大群的时候，一直说找不到🐱上家，有没有大佬能绑定呀～～，深夜总是令人难眠。又是一位大佬(W佬)！他说没发过药，想试试！于是也是热情的把我绑定，起初我还是和他一起蹲守，每天问他今晚有空吗？有的话如果我蹲到药了，能艾特你么～他总是热情的回答～可以的！</p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1765646064959-f1cc13f9-f451-450f-873b-9bb8ca781031.png" alt="" /></p>
<p>到后面我有点怠惰了，感觉🐱真难蹲，我也不敢催佬。毕竟这真是看运气的一件事。中间有几次佬都发信息给我就说就差一点就能发到了。那些都是脚本佬真快！</p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1765646090820-84821955-7586-4d23-8991-7a2f312e9091.png" alt="" /></p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1765646115244-d799553d-fb9d-45ba-8b9b-e6a7b5678a55.png" alt="" /></p>
<p>我也就放弃了。时间总是这么的捉弄人，在一次我和朋友外出散步的时候～QQ的消息突然谈起。</p>
<p><strong>大佬的一句“快点注册哦！”</strong></p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1765646181641-e40792c8-fbe4-41bc-a0fc-4d4e99a80bd0.png" alt="" /></p>
<p>我瞬间感觉不对！，我是不是得到了什么！！！打开📮，发现了一封邀请静静的躺在那，等我翻阅！</p>
<p>我只能说在我已经不抱希望的时候，谢谢大佬辛苦的蹲守！感谢！</p>
<p>至此10月26日，进度8/12！</p>
<p>岛在11月9号开药，我从大群群主H佬那求的，这怎么求！每日水群，大佬眼熟！仅此而已。非常感谢H佬！（其实这药十一应该就有了，但是岛那会管理都放假。V是节后发的，也算是时间的🪃最后还是扎上了。）这在也还要再次感谢甜❤️佬，因为他已经绑定我要给我发了，但是他的工资还没有发，导致开药了，他还发不上，但是也感谢他的绑定，给我岛最坚实的底气能在这段时间里，有精力去求其他的邀。</p>
<p>11月20日，🌍站庆开药！预约LT佬，得知能发！！！准时获得！！至此进度10/12。</p>
<p>在11月中旬，入了阁的工作组！没错！！！我的入门站，星陨阁！在此我要大篇幅的吐槽！这个阁！奶奶个熊！一个站连个群都没有，害我入门都找不到组织，走了许多弯路。然后自己站长天天在各大Q群，微信群，别站群水挖人！真是该死！！女装阁主！！然后就是这样把阁主给PY了，求到了💊论坛，求到了最难求之二🈳。至此12月3日，进度11/12！</p>
<p>没错，我的最后一站竟然是月月，那个有3.3T就能搞到药的月月，不是我没有空间，只是我想下一些自己能够选择的资源，所以一直得不到药！最后还是感谢LT佬，他带我入了🐸！我从🐸坚持不懈的发育。终于在今天通过官邀，等到了月月邀请，至此12月13日！进度12/12，内站大圆满！！！</p>
<h1>心得总结🆕</h1>
<ol>
<li>
<p>PT是个比较私密的圈子，大家都要遵守规则，这样这个圈子才能长久的发展。</p>
</li>
<li>
<p>求药适合在各大站内论坛以及Q群微信群，贴吧很多🈲求，如果我能从Q群起步的话，可能毕业的更快。</p>
</li>
<li>
<p>脾气要好，求💊懂得谦虚，这是一个分享的圈子，没有什么是对方理所当然应该付出的。（这期间遇到过许多发言惊人的大神，反正圈子很小大家也都知道是哪些人）</p>
</li>
</ol>
<h1>感谢🙏汇总</h1>
<p>前面感谢的太分散，这边把名单再总的写一下（不仅限于写的这些，这些是长聊且大站发药的上家，还有许多发中小站的大佬也给予我许多的帮助，这边就不一一列举，也是非常感谢！）</p>
<ol>
<li>
<p>LT佬</p>
</li>
<li>
<p>L***520佬</p>
</li>
<li>
<p>甜心佬</p>
</li>
<li>
<p>道长</p>
</li>
<li>
<p>林佬</p>
</li>
<li>
<p>恒佬</p>
</li>
<li>
<p>慕佬</p>
</li>
<li>
<p>W佬</p>
</li>
<li>
<p>夜佬</p>
</li>
<li>
<p>👚阁主</p>
</li>
<li>
<p>电脑小白乐园</p>
</li>
</ol>
<p>🧨🧨🧨🧨🧨🧨🧨🧨🧨🧨🧨🧨🧨🧨🧨🧨</p>]]></content:encoded>
    </item>
    <item>
      <title>关于插件化开发的一些构思</title>
      <link>https://blog.hongsw.cn/article/gap7iv8hm2wqez16</link>
      <guid>https://blog.hongsw.cn/article/gap7iv8hm2wqez16</guid>
      <pubDate>Thu, 27 Nov 2025 05:20:25 GMT</pubDate>
      <dc:creator>补陋阁</dc:creator>
      <description>借助AI，当了一次“云”架构师</description>
      <content:encoded xml:lang="zh-CN"><![CDATA[<h1>从公司项目说起</h1>
<p>前段时间在整理技术方案时，想起了之前公司的那个项目架构。我们当时做了一个中台系统，配合各种业务模块，效果还挺不错的。简单说就是：</p>
<ul>
<li>
<p>有个中台统一管理所有应用</p>
</li>
<li>
<p>各个业务模块独立开发、独立部署</p>
</li>
<li>
<p>前端也是模块化的，可以动态加载</p>
</li>
<li>
<p>整个流程都是自动化的</p>
</li>
</ul>
<p>总结一下原公司的架构可能为“中台 + 模块化微服务 + 微前端”结合的云原生架构体系，特点是：</p>
<ul>
<li>
<p>中台统一管理：负责应用注册、菜单、权限、页面路由管理</p>
</li>
<li>
<p>模块化微服务：业务模块独立开发、独立打包、独立部署，Kubernetes 管理生命周期</p>
</li>
<li>
<p>前端微前端/模块化页面：业务页面可在中台中集成展示</p>
</li>
<li>
<p>CI/CD 构建流水线：模块从开发到部署全自动化</p>
</li>
</ul>
<hr />
<h1>为什么要折腾插件化？</h1>
<blockquote>
<p>生命在于折腾。</p>
</blockquote>
<p>在逛各位大佬们的博客的时候有幸遇到很多优秀的博客，其中不乏有一些独立开发的站点并且开源。</p>
<p>不过有些开源站点他设计的功能会很丰富，导致很多人可能用不上部分功能，所以导致功能冗余占用性能（虽然也只是蚊子腿）。</p>
<p>就好比说博客网站可能主要的就是博客列表、博客详情，除了一些强耦合在页面里的功能如：评论、推荐、总结等功能不能拆分的。</p>
<p>很多开源站点还支持履历、设备展示、照片墙、数据统计、旅游地图等这种单开一个页面的功能，那实际用户使用的时候可能就没有照片墙或者设备需要展示，这几个页面甚至是对应的查询api和库都是不需要的。</p>
<p>这次重构博客的时候我有在思考，博客本质就是文章，其他的内容能不能按类似的方案开发，比如添加一些功能模块，比如：</p>
<ul>
<li>
<p>图书角：展示我读过的书</p>
</li>
<li>
<p>影视墙：记录看过的电影电视剧</p>
</li>
<li>
<p>旅游足迹：分享旅行经历</p>
</li>
<li>
<p>友链管理：方便管理友情链接</p>
</li>
</ul>
<p>但是这套架构在企业环境里确实很香，但当我想要给自己的博客搞类似功能时，发现完全不是那么回事，其技术栈复杂、开发周期长、运维成本高，对于一个个人使用的博客而言无异于是“杀鸡用牛刀”、“大炮打蚊子”。</p>
<p>在前面几月折腾PT的时候发现了一个项目，使用了插件化的开发思路，为此我想借鉴一番。（玩PT的程序大佬是真的多，一个项目里学到好多东西）</p>
<p>用插件来注册对应需要拓展的页面，实现功能的扩展，方便开源后，用户们的自行组装，有点搭积木的意思。</p>
<hr />
<h1>AI加持，尝试“云”架构一波</h1>
<p>最近没时间验证，尝试把想要使用的架构和逻辑思路丢给AI，不断的沟通修正，让他回答出一份看似可行的技术架构说明。</p>
<p><strong>以下只是一个方向，还待验证</strong></p>
<h2>技术选型策略</h2>
<h3>分析&quot;前端模块联邦 + 后端插件管理&quot;的技术路线：</h3>
<h4>前端技术选型：Module Federation + Nuxt</h4>
<p>Module Federation是Webpack 5引入的革命性特性，它允许JavaScript应用在运行时动态加载远程模块。这一特性完美契合插件化架构的需求：</p>
<ul>
<li>
<p><strong>动态加载</strong>：主应用可在运行时动态加载插件的前端UI和逻辑</p>
</li>
<li>
<p><strong>依赖共享</strong>：可配置共享依赖，避免重复加载</p>
</li>
<li>
<p><strong>独立部署</strong>：各插件可独立开发、独立部署</p>
</li>
</ul>
<h4>后端技术选型：PF4J框架 + SpringBoot</h4>
<p>PF4J（Plugin Framework for Java）是一个轻量级的Java插件框架，它提供了：</p>
<ul>
<li>
<p><strong>插件生命周期管理</strong>：支持插件的安装、启动、停止、卸载</p>
</li>
<li>
<p><strong>扩展点机制</strong>：通过扩展点实现插件与主应用的解耦</p>
</li>
<li>
<p><strong>类加载隔离</strong>：确保插件间的类冲突不会影响主应用</p>
</li>
</ul>
<h3>核心组件职责</h3>
<h4>主应用职责：</h4>
<ul>
<li>
<p>提供基础网站功能（博客、个人信息、主页等）</p>
</li>
<li>
<p>维持轻量级和稳定性，不受插件逻辑影响</p>
</li>
<li>
<p>负责插件的发现、加载和管理</p>
</li>
</ul>
<p>插件系统职责：</p>
<ul>
<li>
<p>支持功能的动态添加、移除和升级</p>
</li>
<li>
<p>每个插件独立开发、独立部署</p>
</li>
<li>
<p>实现具体业务功能（图书角、影视墙、旅游足迹等）</p>
</li>
</ul>
<h2>模拟演练</h2>
<h3>阶段一：开发阶段</h3>
<h4>前端项目开发：</h4>
<ol>
<li>
<p>创建独立的<code>book-ui</code>项目</p>
</li>
<li>
<p>配置Module Federation，暴露<code>./BookPage</code>组件</p>
</li>
<li>
<p>构建产出<code>dist/</code>目录</p>
</li>
</ol>
<h4>后端项目开发：</h4>
<ol>
<li>
<p>创建<code>book-plugin</code>项目</p>
</li>
<li>
<p>实现<code>MenuExtension</code>接口，注册菜单项</p>
</li>
<li>
<p>实现<code>RequestExtension</code>接口，处理<code>/books/list</code>请求</p>
</li>
<li>
<p>将前端构建产物放入后端资源的<code>static/</code>目录</p>
</li>
</ol>
<h4>打包发布：</h4>
<p>将后端JAR和前端资源打包成<code>book-corner-1.0.0.zip</code>发布包</p>
<h3>阶段二：部署安装阶段</h3>
<ol>
<li>
<p>在个人网站后台上传插件ZIP包</p>
</li>
<li>
<p>主应用后端使用PF4J解压并加载JAR文件</p>
</li>
<li>
<p>检测到<code>MenuExtension</code>，将菜单信息存入数据库</p>
</li>
<li>
<p>检测到静态资源，建立文件映射：<code>http://api.site.com/plugins/book/assets/</code></p>
</li>
<li>
<p>执行插件内置的<code>init.sql</code>，创建<code>plg_book_table</code>表</p>
</li>
</ol>
<h3>阶段三：运行阶段</h3>
<ol>
<li>
<p>用户访问首页，前端Shell请求<code>/api/config</code>获取配置</p>
</li>
<li>
<p>后端返回插件配置信息，包括模块名称、入口文件地址、路由路径</p>
</li>
<li>
<p>前端Shell根据配置生成&quot;图书角&quot;菜单项</p>
</li>
<li>
<p>用户点击菜单，前端动态加载<code>remoteEntry.js</code>文件</p>
</li>
<li>
<p>渲染远程组件，组件内部发起API请求获取数据</p>
</li>
<li>
<p>后端拦截请求，转交给<code>book-plugin</code>处理，返回JSON数据</p>
</li>
</ol>
<h2>技术优势分析</h2>
<h3>极致的模块解耦</h3>
<ul>
<li>
<p>各插件完全独立，互不影响</p>
</li>
<li>
<p>插件升级不会影响主应用和其他插件</p>
</li>
<li>
<p>支持并行开发和部署</p>
</li>
</ul>
<h3>主应用轻量化</h3>
<ul>
<li>
<p>核心功能精简，启动速度快</p>
</li>
<li>
<p>内存占用低，运行效率高</p>
</li>
<li>
<p>稳定性不受插件质量影响</p>
</li>
</ul>
<h3>开发效率提升</h3>
<ul>
<li>
<p>插件开发者只需关注具体业务逻辑</p>
</li>
<li>
<p>标准化的接口降低了开发门槛</p>
</li>
<li>
<p>支持快速原型验证和功能迭代</p>
</li>
</ul>
<h2>个站优化</h2>
<p>考虑到是个人博客，一个人可以做一些简化：</p>
<ol>
<li>
<p>统一技术栈，使用相同版本，避免版本冲突，减少插件体积。</p>
</li>
<li>
<p>数据库简化，使用一个实例，前缀区分表明、安装建表，卸载删除。</p>
</li>
</ol>
<h2>架构升级</h2>
<p>当插件量增大（如几十到上百个）时，核心矛盾从「单一插件的前后端协同」转变为「规模化插件的<strong>高效管理</strong>、<strong>性能控制</strong>、<strong>隔离稳定性</strong>、<strong>生态标准化</strong>」。</p>
<p>原方案的核心架构（MF + PF4J）仍适用，但需要在「加载机制、管理平台、隔离策略、性能优化、生态规范」五个维度进行升级，以下是具体落地方案：</p>
<h3>核心升级思路</h3>
<p>规模化插件的核心需求是：<strong>「平台化管理 + 轻量化运行 + 强隔离 + 低损耗」</strong></p>
<ul>
<li>
<p>管理层面：从「手动加载插件」升级为「插件市场 + 统一管理平台」，支持插件的搜索、安装、升级、卸载全生命周期管理；</p>
</li>
<li>
<p>加载层面：从「全量加载」升级为「按需加载 + 预加载策略」，避免大量插件同时加载导致的性能问题；</p>
</li>
<li>
<p>隔离层面：从「基础隔离」升级为「强隔离（沙箱化）」，防止插件间的依赖冲突、数据泄露、资源抢占；</p>
</li>
<li>
<p>性能层面：通过「缓存、资源优化、异步处理」降低大量插件对主应用的性能损耗；</p>
</li>
<li>
<p>生态层面：通过「插件开发规范 + SDK」标准化插件接入，降低多开发者协作的成本。</p>
</li>
</ul>
<p>当插件量增大时，原方案（MF + PF4J）通过「<strong>平台化管理 + 按需加载 + 沙箱隔离 + 标准化生态</strong>」的升级，完全可以支撑大量插件的稳定运行，核心优势：</p>
<ol>
<li>
<p><strong>管理效率</strong>：插件市场 + 管理后台解决了大量插件的安装、升级、卸载、监控问题，无需人工干预；</p>
</li>
<li>
<p><strong>性能可控</strong>：按需加载 + 资源优化 + 隔离策略，避免大量插件导致的加载缓慢、内存溢出、资源抢占；</p>
</li>
<li>
<p><strong>稳定性保障</strong>：强隔离（前端沙箱 + 后端类加载器 / 多数据源）+ 健康检查 + 熔断，防止单个插件异常影响全局；</p>
</li>
<li>
<p><strong>生态可扩展</strong>：SDK + 规范 + 审核机制，降低第三方开发者的插件开发成本，形成良性生态。</p>
</li>
</ol>
<h3>落地优先级建议</h3>
<ol>
<li>
<p>先搭建「插件市场 + 管理后台」，解决大量插件的管理问题；</p>
</li>
<li>
<p>再优化「加载机制 + 隔离策略」，保障性能和稳定性；</p>
</li>
<li>
<p>最后完善「SDK + 规范 + 审核机制」，支撑生态扩展。</p>
</li>
</ol>
<h3>适用场景边界</h3>
<ul>
<li>
<p>适合插件量：100 个以内（个人网站 / 中小型平台），通过上述方案可稳定支撑；</p>
</li>
<li>
<p>若插件量超 1000 个（大型开放平台），需进一步升级为「微服务化插件」（每个插件独立部署为微服务，主应用通过服务发现调用）</p>
</li>
</ul>
<h1>抽象总结</h1>
<p>这篇博文的核心内容多由 AI 生成 —— 只因文中架构尚处于 “构想阶段”（是我 “云” 出的思路，未经过实际落地操作）。</p>
<p>但想借这点说明：AI 虽无法独立完成完整应用的开发，可只要我们提供明确的架构方向与逻辑，让它参与讨论、验证，它就能在关键环节帮我们排查漏洞、修正偏差。</p>
<p>带着思路和 AI 协作的方式，远比直接把问题丢给 AI、收到格式生硬的回复要舒服得多，对渴望成长为架构师的新手来说，这无疑是个实用的辅助功能。</p>
<p>也算是水一篇博文了，不然直接拷贝AI回复也太抽象了。</p>]]></content:encoded>
    </item>
    <item>
      <title>快速同步云端Mysql到本地Mysql测试</title>
      <link>https://blog.hongsw.cn/article/wbks3bol7u2gnmy0</link>
      <guid>https://blog.hongsw.cn/article/wbks3bol7u2gnmy0</guid>
      <pubDate>Mon, 24 Nov 2025 16:14:43 GMT</pubDate>
      <dc:creator>补陋阁</dc:creator>
      <description>如何使用`docker exec`命令进行数据同步。</description>
      <content:encoded xml:lang="zh-CN"><![CDATA[<h1>起因</h1>
<p>之前改博客都是直接在生产环节直接操作Mysql库，最近再重构和修改BUG，所以打算本地也搭建一个Mysql，但是不想用安装包的方式安装，就使用了docker安装在本地。电脑上使用的DataGrip来管理数据库的，他没办法像Navicat直接远端拷贝过来，所以想办法弄一个快速同步的方案。</p>
<h1>过程</h1>
<p>搭建本地mysql</p>
<pre><code class="language-yaml">services:
  mysql:
    image: mysql:8.0.41
    container_name: mysql8
    restart: unless-stopped
    ports:
      - &quot;3306:3306&quot;
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword123
      MYSQL_DATABASE: nuxt3_blog
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
</code></pre>
<p>执行<code>docker compose -f mysql_docker.yml up -d</code>创建容器</p>
<pre><code class="language-plain"># 远端数据库配置
REMOTE_HOST=10.0.0.8
REMOTE_PORT=3306
REMOTE_DB=prod_db
REMOTE_USER=admin
REMOTE_PASS='Abc123!'

# 本地 docker 容器 MySQL 配置
LOCAL_CONTAINER=mysql8
LOCAL_DB=mydatabase
LOCAL_USER=myuser
LOCAL_PASS='mypassword'
</code></pre>
<p>设置后，你只需执行：</p>
<pre><code class="language-plain">docker exec -i &quot;$LOCAL_CONTAINER&quot; sh -c \
  &quot;mysqldump -h $REMOTE_HOST -P$REMOTE_PORT -u $REMOTE_USER -p$REMOTE_PASS $REMOTE_DB&quot; \
  | docker exec -i &quot;$LOCAL_CONTAINER&quot; mysql -u &quot;$LOCAL_USER&quot; -p&quot;$LOCAL_PASS&quot; &quot;$LOCAL_DB&quot;
</code></pre>
<p>即可自动完成远端 → 本地容器的导入。</p>]]></content:encoded>
    </item>
    <item>
      <title>pre标签踩坑</title>
      <link>https://blog.hongsw.cn/article/ryytas2ofmugg1mq</link>
      <guid>https://blog.hongsw.cn/article/ryytas2ofmugg1mq</guid>
      <pubDate>Sun, 23 Nov 2025 10:09:36 GMT</pubDate>
      <dc:creator>补陋阁</dc:creator>
      <description>将React代码转换为Vue时遇到的样式问题，具体表现为&lt;pre&gt;标签的上下留白现象。</description>
      <content:encoded xml:lang="zh-CN"><![CDATA[<h1>起因</h1>
<p>最近再重构博客文本的代码块，用上了<code>AI</code>帮忙生成了<code>React</code>的代码样式，照搬到了<code>Vue</code>发现样式有问题。</p>
<h1>排查</h1>
<pre><code class="language-jsx">&lt;pre className=&quot;m-0 p-0 bg-transparent font-mono text-sm leading-6 text-gray-300&quot; style={{ tabSize: 2 }}&gt;
  &lt;code&gt;
    {lines.map((line, i) =&gt; (
  &lt;div key={i} className=&quot;whitespace-pre group/line&quot;&gt;
    {/* Simple pseudo-syntax highlighting wrapper */}
    &lt;LineContent line={line} /&gt;
  &lt;/div&gt;
))}
  &lt;/code&gt;
&lt;/pre&gt;
</code></pre>
<p>上面的是<code>react</code>的代码，下面的是<code>vue</code>的代码</p>
<pre><code class="language-vue">&lt;pre class=&quot;m-0 p-0 bg-transparent font-mono text-sm leading-6 text-gray-300&quot;&gt;
  &lt;code&gt;
    &lt;div v-for=&quot;(line ,index) in lines&quot; :key=&quot;index&quot; v-html=&quot;highlightedCode(line, language)&quot;/&gt;
  &lt;/code&gt;
&lt;/pre&gt;

</code></pre>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1763893066647-419299a3-d398-4b86-9b9f-52e9df84d2a0.png" alt="" /></p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1763893110956-eb215efa-1b5a-40a9-ae07-093c4d1e86c5.png" alt="" /></p>
<p><code>vue</code>的效果就是和<code>react</code>差距在<code>react</code>的可以和行数对齐，<code>vue</code>的上下都会留白。我检查了<code>react</code>项目中的其余<code>css</code>样式，也都没有单独针对<code>&lt;pre&gt;</code>标签的，我发现在<code>vue</code>中将<code>&lt;pre&gt;</code>改为<code>&lt;div&gt;</code>就不会上下留白，我当时初步怀疑是样式问题，所以一直再找2者之间的区别，后面单独在react项目中的html文件里也写了同样的<code>&lt;pre&gt;</code>代码，发现也有留白，我就一直怀疑是不是react是不是有什么特殊处理。</p>
<p>在我遍寻<code>AI</code>和<code>Google</code>的时候都没法解决的时候，尝试问了一下热心的群友，他当即给我发了下面三张图片，以解我的疑惑。</p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1763892724349-0398599a-61b5-464e-9e43-4f48b66bd4b0.png" alt="" /></p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1763892724271-81ece77d-3aae-4b62-ba6d-7f69d0785383.png" alt="" /></p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1763892724274-df8bd52f-ab86-4f5b-bf05-7aae68acdc73.png" alt="" /></p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1763893433197-797ec650-5197-40ca-b5c8-a50cad2f4fa1.png" alt="" /></p>
<h1>反思</h1>
<p>这次踩坑就是自己的基础太差没有打牢根基，因为这种小问题也是浪费了4个小时再排查。</p>
<p>这篇博客也是加以反思吧。还有就是有问题多问，不要闷头干，说不定别人的一句话就能点醒你。😭</p>
<p>最后也是查了一下为什么<code>react</code>可以，<code>vue</code>不行。以下是Chatgpt的回答</p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1763893705289-64980c9d-7242-424c-ba4d-0d1dcf1a6887.png" alt="" /></p>]]></content:encoded>
    </item>
    <item>
      <title>RSS Guard订阅失败问题</title>
      <link>https://blog.hongsw.cn/article/yasrbefrzr4yqysu</link>
      <guid>https://blog.hongsw.cn/article/yasrbefrzr4yqysu</guid>
      <pubDate>Sat, 22 Nov 2025 04:16:55 GMT</pubDate>
      <dc:creator>补陋阁</dc:creator>
      <description>博主在RSS Guard和QuiteRSS中订阅失败的问题，并提出了解决方案，还感谢了崔话记博主的问题反馈和RSS模板支持。</description>
      <content:encoded xml:lang="zh-CN"><![CDATA[<h1>起因</h1>
<p>最近有位博主在博客上留言，说是在RSS Guard 和 QuiteRSS中本站的RSS订阅失败，我看到后也是开始研究，之前写这个RSS的时候也只是参考了一些博主的RSS格式，只是通过了RSS格式验证，并没有导入阅读器验证，这次反映了问题正好一试。</p>
<h1>解决</h1>
<p>这次我将自己的RSS和参考的RSS拉出来对比，并且补全了缺失的字段，导入RSS Guard，发现还是插入失败，查看日志说是数据库插入问题。</p>
<p>对着报错的那条数据改来改去也都失败，后面把我的title标签和description包裹的CDATA去掉，就行了。</p>
<p>所以目前理解为RSS Guard的标题和描述不支持CDATA包裹吧。</p>
<h1>致谢</h1>
<p>感谢博主「<a href="https://cuixiping.com/">崔话记 - 向着理想的方向，爬一会儿，躺一会儿</a>」的问题反馈和RSS模板支持。</p>]]></content:encoded>
    </item>
    <item>
      <title>&#x1f3ac; 发种命名规则</title>
      <link>https://blog.hongsw.cn/article/gg6t4cnlhaxszwyv</link>
      <guid>https://blog.hongsw.cn/article/gg6t4cnlhaxszwyv</guid>
      <pubDate>Wed, 12 Nov 2025 02:02:58 GMT</pubDate>
      <dc:creator>补陋阁</dc:creator>
      <description>PT种子的命名规范</description>
      <content:encoded xml:lang="zh-CN"><![CDATA[<h1>🎬 发种命名规则（简洁版）</h1>
<h2>一、标题格式（核心结构）</h2>
<pre><code class="language-plain">剧名 [季集信息] [年份] [其他信息] 分辨率 [地区码] [内容分发方] 片源类型 [规格] [HDR类型] [bit信息] 视频编码 音频编码 [声道数] [对象信息] [音轨数]-制作组
</code></pre>
<hr />
<h2>二、字段说明</h2>
<h3>剧名</h3>
<ul>
<li>
<p>必填。优先使用<strong>英文名</strong>；无则可用罗马音或中文。</p>
</li>
<li>
<p>动画推荐用 MyAnimeList 标题。</p>
</li>
</ul>
<hr />
<h3>[季集信息]</h3>
<ul>
<li>
<p>单季：<code>S01</code></p>
</li>
<li>
<p>分集：<code>S01E03</code></p>
</li>
<li>
<p>多季合集：<code>S01-S03</code></p>
</li>
</ul>
<hr />
<h3>[年份]</h3>
<ul>
<li>
<p>有重名或合集时必填（例：<code>2014-2018</code>）。</p>
</li>
<li>
<p>单集节目（综艺/体育）写完整日期 <code>20240326</code>。</p>
</li>
</ul>
<hr />
<h3>[其他信息]</h3>
<ul>
<li>
<p>特殊版本：<code>Director’s Cut</code>、<code>Extended</code>、<code>Uncensored</code></p>
</li>
<li>
<p>更新版：<code>REPACK</code>、<code>RERIP</code>、<code>V2</code>、<code>PROPER</code></p>
</li>
<li>
<p>特殊比例或混源：<code>IMAX</code>、<code>Open Matte</code>、<code>Hybrid</code></p>
</li>
</ul>
<hr />
<h3>分辨率</h3>
<ul>
<li>
<p>必填。取自 MediaInfo → <code>Height + Scan type</code></p>
<ul>
<li>示例：<code>2160p</code> / <code>1080p</code> / <code>720p</code></li>
</ul>
</li>
<li>
<p>不允许写作 <code>4K / 2K</code>。</p>
</li>
</ul>
<hr />
<h3>[地区码]</h3>
<ul>
<li>原盘类（Blu-ray、DVD）填写：<code>JPN</code>、<code>USA</code>、<code>HKG</code> 等。</li>
</ul>
<hr />
<h3>[内容分发方]</h3>
<ul>
<li>
<p>流媒体：<code>DSNP</code>（Disney+）、<code>NF</code>（Netflix）、<code>AMZN</code>（Amazon）等。</p>
</li>
<li>
<p>碟片发行方：<code>CC</code>、<code>MOC</code>、<code>MAC</code> 等。</p>
</li>
</ul>
<hr />
<h3>片源类型</h3>
<ul>
<li>
<p>原盘类：<code>Blu-ray</code>、<code>UHD Blu-ray</code>、<code>NTSC DVD9</code></p>
</li>
<li>
<p>压制类：<code>BluRay</code>、<code>DVDRip</code></p>
</li>
<li>
<p>WEB类：直接用分发方（如 <code>DSNP</code>、<code>NF</code>）</p>
</li>
</ul>
<hr />
<h3>[规格]</h3>
<ul>
<li>
<p>常见：<code>Remux</code>、<code>WEB-DL</code>、<code>WEBRip</code>、<code>HDTV</code></p>
</li>
<li>
<p>原盘类不填写。</p>
</li>
</ul>
<hr />
<h3>[HDR类型]</h3>
<ul>
<li>
<p>常见：<code>HDR</code>、<code>HDR10+</code>、<code>DV</code>、<code>DV HDR</code></p>
</li>
<li>
<p>无 HDR 信息则不写。</p>
</li>
</ul>
<hr />
<h3>[bit信息]</h3>
<ul>
<li>
<p>仅 AVC 且 10bit 时写 <code>Hi10P</code>。</p>
</li>
<li>
<p><code>x265</code> 不写 10bit。</p>
</li>
</ul>
<hr />
<h3>视频编码</h3>
<ul>
<li>
<p>原盘：<code>AVC</code>、<code>HEVC</code>、<code>MPEG-2</code></p>
</li>
<li>
<p>WEB：<code>H.264</code>、<code>H.265</code>、<code>AV1</code></p>
</li>
<li>
<p>压制：<code>x264</code>、<code>x265</code>、<code>AV1</code></p>
</li>
</ul>
<hr />
<h3>音频编码</h3>
<ul>
<li>
<p>常见：<code>FLAC</code>、<code>DD</code>（AC3）、<code>DDP</code>（E-AC3）、<code>DTS-HD MA</code>、<code>TrueHD</code></p>
</li>
<li>
<p>AAC/MP3 且为 2.0 声道时可省略声道数。</p>
</li>
</ul>
<hr />
<h3>[声道数]</h3>
<ul>
<li>
<p>示例：<code>2.0</code>、<code>5.1</code>、<code>7.1</code></p>
</li>
<li>
<p>从 MediaInfo → <code>Channel layout</code> 获取。</p>
</li>
</ul>
<hr />
<h3>[对象信息]</h3>
<ul>
<li>若含全景声技术则写：<code>Atmos</code>、<code>Auro3D</code>。</li>
</ul>
<hr />
<h3>[音轨数]</h3>
<ul>
<li>
<p>多音轨写：<code>2Audio</code>、<code>3Audio</code>。</p>
</li>
<li>
<p>单音轨不写。</p>
</li>
</ul>
<hr />
<h3>制作组</h3>
<ul>
<li>
<p>必填。格式：<code>-制作组</code></p>
<ul>
<li>
<p>例：<code>-StarfallWeb</code></p>
</li>
<li>
<p>来源不明写 <code>-NoGroup</code>（慎用）</p>
</li>
</ul>
</li>
</ul>
<hr />]]></content:encoded>
    </item>
    <item>
      <title>pnpm安装Nuxt UI细节</title>
      <link>https://blog.hongsw.cn/article/yun2ik13s19s1q45</link>
      <guid>https://blog.hongsw.cn/article/yun2ik13s19s1q45</guid>
      <pubDate>Mon, 10 Nov 2025 05:38:45 GMT</pubDate>
      <dc:creator>补陋阁</dc:creator>
      <description>pnpm安装Nuxt UI不注意小细节，新手容易犯。</description>
      <content:encoded xml:lang="zh-CN"><![CDATA[<p>最近博客打算使用Nuxt UI的框架，但是安装完发现一直用不了，一直报tailwindcss相关的报错。</p>
<p>然后使用Nuxt UI自带的脚手架安装就没有报错。检查了package.json文件，发现都一样的也不知道，为啥构建出来的不一样。只能按照脚手架的目录，把博客的文件一个一个向脚手架靠拢。</p>
<p>最后还是折腾了快2个小时才发现问题所在，后面也在官方文档处找到答案了，所以在这边吐槽一下，看文档要仔细，白瞎了自己这双眼。</p>
<blockquote>
<p>If you’re using pnpm, ensure that you either set <a href="https://pnpm.io/npmrc#shamefully-hoist">shamefully-hoist=true</a> in your <code>.npmrc</code> file or install <code>tailwindcss</code> in your project’s root directory.<br />
如果您使用的是 pnpm，请确保在 <code>.npmrc</code> 文件中设置 <a href="https://pnpm.io/npmrc#shamefully-hoist">shamefully-hoist=true</a> 或在项目的根目录中安装 <code>tailwindcss</code>。</p>
</blockquote>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1762753494509-7ff0fc8c-0336-4b9b-808c-8fab542831fb.png" alt="" /></p>]]></content:encoded>
    </item>
    <item>
      <title>新手Tailwindail CSS踩坑</title>
      <link>https://blog.hongsw.cn/article/takbbdq1fnzznpki</link>
      <guid>https://blog.hongsw.cn/article/takbbdq1fnzznpki</guid>
      <pubDate>Mon, 03 Nov 2025 15:42:42 GMT</pubDate>
      <dc:creator>补陋阁</dc:creator>
      <description>使用Tailwind CSS重构博客时遇到的样式问题。</description>
      <content:encoded xml:lang="zh-CN"><![CDATA[<p>这次在重构博客的时候，把Uno CSS的框架改成了Tailwind CSS，然后发现在组件的样式不对的。</p>
<p>一开始是图标和文本不在同一行上了。</p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1762184874299-45cb6b51-943d-47e2-bc03-0f04be10e43e.png" alt="" /></p>
<p>原先还以为是自己重构后的组件样式有问题，把原先的样式拷贝过来后，依旧如此，后面把Tailwind CSS去除了才发现正常了。</p>
<p>Chatgpt一下说是提供了一套“预设的基础样式（preflight）”，基于<a href="https://necolas.github.io/normalize.css/">Normalize.css</a> 做了调整，以确保不同浏览器的默认样式更一致，同时移除一些不必要的默认样式。</p>
<p>所以针对他改动了</p>
<pre><code class="language-css">display: block;
vertical-align: middle;
max-width: 100%;
height: auto;
</code></pre>
<p>把原先的inline改成block，新增了max-width，这也太坑了。</p>
<p>后面我手动把block改回inline，他们总算在一行上了。</p>
<p>但是我发现a标签撑不满div了！！！</p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1762185383977-8436a7dd-a78d-4430-81a3-327f3ea74f97.png" alt="" /></p>
<p>我也是醉了，TailWind CSS为了确保不同浏览器的默认样式更一致，同时移除一些不必要的默认样式。“真是好心办坏事”（新手不懂哈）。</p>
<p>chatgpt解释为什么要加 <code>max-width: 100%</code></p>
<ol>
<li>
<p>防止图片撑破父容器</p>
<ul>
<li>
<p>在原生浏览器行为下，<code>&lt;img&gt;</code> 默认按图片本身尺寸渲染。</p>
</li>
<li>
<p>如果父容器宽度小于图片宽度，图片就会溢出容器。</p>
</li>
<li>
<p><code>max-width: 100%</code> 可以让图片最大宽度不超过父容器宽度，从而保证布局不会被撑坏。</p>
</li>
</ul>
</li>
<li>
<p>响应式布局友好</p>
<ul>
<li>
<p>在不同屏幕或父容器宽度变化时，图片会自动缩放。</p>
</li>
<li>
<p>避免在小屏幕上图片撑出边界。</p>
</li>
</ul>
</li>
<li>
<p>配合 Tailwind 样式体系</p>
<ul>
<li>
<p>Tailwind 的大部分布局类都是基于 flex / grid / container width。</p>
</li>
<li>
<p>如果图片超出容器，flex 布局可能失效或者造成滚动条。</p>
</li>
<li>
<p><code>max-width: 100%</code> 可以保证图片在 flex/grid 中可控。</p>
</li>
</ul>
</li>
</ol>
<p>但是在这边确实就是影响效果了。哎，只能说每一次重构都是坑啊。吸取教训，再此记录一下，折腾2个小时。</p>]]></content:encoded>
    </item>
    <item>
      <title>登山道，看&#x1f525;车</title>
      <link>https://blog.hongsw.cn/article/pipev7wrt7ai08yc</link>
      <guid>https://blog.hongsw.cn/article/pipev7wrt7ai08yc</guid>
      <pubDate>Sat, 01 Nov 2025 17:21:45 GMT</pubDate>
      <dc:creator>补陋阁</dc:creator>
      <description>主要描述了周末去天马岭登山道的所见所闻所感</description>
      <content:encoded xml:lang="zh-CN"><![CDATA[<h1>登山道</h1>
<p>今天周末去爬了天马岭登山道，整体感觉还算轻松。可能是因为为了下午的登山，中午煮了一大锅的米饭～狠狠的补充了一波碳水。</p>
<p>嗯～可能也是快要入冬了，下午出发的也不感觉炎热，山里面树荫还是很舒服的，山风一吹，渐感微凉～</p>
<p>那也不至于感冒😷～～</p>
<p>途中也有许多比较有趣但不理解的点，一个两人宽的登山道上为什么会在靠近斜坡的那一边搭一个帐篷，这点我很费解。</p>
<p>沿途的人还有遛狗的，带小孩上来画画的，尤其是那个画画的小孩我比较好奇～那个画卷和卷轴一样老长了，但是为啥会有🐟，这就是小孩丰富的想象么。</p>
<p>走到半途中发现一只尾巴很长的不知道是鸡还是什么～远远看到，走近的时候去飞走了，没来得及看照。</p>
<p>然后分享一张登山途中拍的随手照，算是健身打卡啦～</p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/jpeg/1638227/1762018615821-6b1018f9-d873-425d-ab1c-6e363be655e7.jpeg" alt="" /></p>
<h1>看🔥车</h1>
<p>看🔥车，顾名思义，就是看着火的车子。</p>
<p>没错～这是我第一次现实现场看到车子着火。</p>
<p>在回家的路上，一辆车子在十字路起火了，我那那会骑着小电驴冲过去的时候可吓得不行，生怕刚过去就爆炸了。</p>
<p>我也是佩服那些开车的人，怎么一辆车着火了，他们还能停在他们旁边等红绿灯的，这点我实在是想不通。</p>
<p>是因为我小电驴是肉包铁，他们小车是铁包肉，不怕炸么。这些人才是真的勇士啊～</p>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1762018883472-64be478c-861d-4c37-bd27-66b477bf6b3a.png" alt="" /><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1762018919200-c6fcc7d4-a6c7-444b-b01c-1e781f6ae3f1.png" alt="" /></p>]]></content:encoded>
    </item>
    <item>
      <title>iStoreOS安装WireGuard</title>
      <link>https://blog.hongsw.cn/article/xa0u6b7e7uv3d27b</link>
      <guid>https://blog.hongsw.cn/article/xa0u6b7e7uv3d27b</guid>
      <pubDate>Fri, 31 Oct 2025 06:53:16 GMT</pubDate>
      <dc:creator>补陋阁</dc:creator>
      <description>软路由安装WireGuard回家隧道</description>
      <content:encoded xml:lang="zh-CN"><![CDATA[<h1>无聊前话</h1>
<p>虽然有公网IPV6，但是不想把所有的设备都映射出去，只能自己搭建一个回家VPN隧道。</p>
<p>之前有使用过<code>hwdsl2/ipsec-vpn-server</code>的docker搭建过一个，但是之前的环境是有IPV4公网的。这次家中仅有IPV6的环境，在github上问了作者，说是不支持只好作罢。</p>
<p>在谷歌搜索上发现WireGuard是支持IPV6回家的，刚好满足我的诉求，所以开始着手搭建。</p>
<p>起先也是照着视频博主使用的<code>WireGuard Easy</code>docker部署，但是发现一个问题。原本就是宿主机加容器，然后docker里又有一层WireGuard的网卡，多层的NAT弄的我也是看不懂。博主装完服务以后，手机扫码直接可以就可以访问内网了，也没有添加路由等其他操作。而我却是不行。问了DeepSeek、ChatGPT、豆包，都说加路由配置，但都说不清楚是哪里加哪个笔记太多层了。可能也是我表达的有问题，反正就是折腾了一晚上，不了了之，能连上无法访问内网！！！（这边知道原理的朋友也欢迎留言指导一下，毕竟折腾了通宵没搞定）。</p>
<h1>可用实操</h1>
<p>接下来就是我弄通的实机操作了，先分享一下软路由的版本和配置，我记得低版本的是没有带WireGuard的。</p>
<p>| 主机名 | iStoreOS |
| --- | --- |
| 型号  | FriendlyElec NanoPi R5S LTS |
| 架构  | ARMv8 Processor rev 0 |
| 目标平台 | rockchip/armv8 |
| 固件版本 | iStoreOS 24.10.4 2025102410 / LuCI openwrt-24.10 branch 25.295.16898~9fec633 |
| 内核版本 | 6.6.110 |</p>
<blockquote>
<p>网络-接口-添加新接口</p>
</blockquote>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1761894679262-4f6a365a-8aeb-4e71-bc37-19defa598281.png" alt="" /></p>
<blockquote>
<p>名称：WireGuard（随意你认得就行）</p>
<p>协议：WireGuard VPN</p>
</blockquote>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1761894744821-06c8c996-cb81-4ffe-b17a-681ce076ec97.png" alt="" /></p>
<blockquote>
<p>编辑刚才创建的接口-常规设置</p>
<p>私钥、公钥（这两个使用生成新的密钥对，自动生成即可）</p>
<p>监听端口：51820（这个随意填不冲突就好，后面需要到防火墙那放行对应端口）</p>
<p>IP地址：10.8.0.0/24（相当于又一层NAT，属于WireGuard的子网段，不能和当前的主网段一致）</p>
</blockquote>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1761895399981-ec2284ea-9c53-49b2-b37b-f6b5300fcab1.png" alt="" /></p>
<blockquote>
<p>常规设置切换到-防火墙设置</p>
<p>我是直接把lan的防火墙也分配给了wireguard，如果有特别配置可以自己建一个新的</p>
</blockquote>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1761896318265-ba140eda-b1ea-4bf3-b85c-4e20b8e3de30.png" alt="" /></p>
<blockquote>
<p>常规设置切换到-对端设置-添加对端</p>
<p>描述：随意</p>
<p>公钥、私钥、密钥（都直接生成）</p>
<p>允许的IP：10.8.0.2（这个很重要，很容易搞混，这个是给WireGuard客户端分配ip用的）</p>
<p>路由允许的IP钩上</p>
<p>端点主机（有DDNS域名的直接填域名，没域名的填公网ip）</p>
<p>端点端口（就填放行的那个）</p>
<p>持续保持连接（用建议的25）</p>
</blockquote>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1761895996741-6c1dbbbf-9b0e-42b7-89b2-2e19b473fd51.png" alt="" /></p>
<blockquote>
<p>配置文件导出-生成一下二维码给手机扫</p>
<p>允许的IP（0.0.0.0/0指手机的所有流量都通过wireguard代理，如果只是想要访问内网，改成内网的比如10.0.1.0/24）</p>
<p>DNS服务器（就Istore默认用的那个就行）</p>
<p>地址（10.8.0.2，之前配的WireGuard网段）</p>
</blockquote>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1761896163886-302b058a-a3b8-42bb-8f47-f27ecfe5d3f6.png" alt="" /></p>
<blockquote>
<p>保存并应用一下配置</p>
</blockquote>
<h1>防火墙放行</h1>
<blockquote>
<p>网络-防火墙-通信规则</p>
</blockquote>
<p><img src="https://cdn.nlark.com/yuque/0/2025/png/1638227/1761896493783-7c531e38-ecba-46a3-824d-191f2fa5a037.png" alt="" /></p>
<h1>总结</h1>
<p>折腾了半天终于是搞定了IOS的，后续如果遇到其他设备端的问题再来补充</p>
<h1>技术参考</h1>
<p><a href="https://iyzm.net/openwrt/1736.html?utm_source=pocket_saves">OpenWrt 搭建 WireGuard 服务端使用指南 - 爱一枝梅</a></p>
<p><a href="https://github.com/wg-easy/wg-easy">GitHub - wg-easy/wg-easy: The easiest way to run WireGuard VPN + Web-based Admin UI.</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>
