<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>式鉴的博客</title><link>https://ignvex.github.io/</link><description>Recent content on 式鉴的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 30 Aug 2026 11:49:51 +0800</lastBuildDate><atom:link href="https://ignvex.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>优秀vps&amp;vds服务商收录</title><link>https://ignvex.github.io/p/%E4%BC%98%E7%A7%80vpsvds%E6%9C%8D%E5%8A%A1%E5%95%86%E6%94%B6%E5%BD%95/</link><pubDate>Sun, 30 Aug 2026 11:49:51 +0800</pubDate><guid>https://ignvex.github.io/p/%E4%BC%98%E7%A7%80vpsvds%E6%9C%8D%E5%8A%A1%E5%95%86%E6%94%B6%E5%BD%95/</guid><description>&lt;p&gt;经常建站的朋友经常会对云服务器考两大选择,大陆还是非大陆。想必选择后者的朋友居多。在访问时延上和体验上后者有着相似和领先的优势。不过这篇文章的核心是收录优质供应商,主要收录体量不小，性价比很高，提供服务时间较长，服务较为稳定的供应商。将以大陆和非大陆分为两类，商家的出现顺序即为笔者认为的性价比高低。再就是笔者远离这个圈子有些年头，更好的供应商可能没有提到，欢迎发邮件补充&lt;code&gt;ignvex@hotmail.com&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="非大陆供应商"&gt;&lt;a href="#%e9%9d%9e%e5%a4%a7%e9%99%86%e4%be%9b%e5%ba%94%e5%95%86" class="header-anchor"&gt;&lt;/a&gt;非大陆供应商
&lt;/h2&gt;&lt;p&gt;我没猜错的话对国内有线路优化的应该都是国人商家，我认为只有国人才懂国人的需求，所以不会提供应商的情况太多。&lt;/p&gt;
&lt;h3 id="oneprovider"&gt;&lt;a href="#oneprovider" class="header-anchor"&gt;&lt;/a&gt;oneprovider
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;机房覆盖: 略&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;海外的服务商巨头之一，什么配置的服务器都有，有些机型被誉为pt神机，有一些离岸较近的机房网络访问也很优秀，整体线路并不要抱有任何期待，出奇的性价比和低价确实值得考虑。&lt;/p&gt;
&lt;h3 id="synteq-原crunchbits"&gt;&lt;a href="#synteq-%e5%8e%9fcrunchbits" class="header-anchor"&gt;&lt;/a&gt;synteq (原crunchbits)
&lt;/h3&gt;&lt;p&gt;`覆盖机房: 美国爱达荷州,美国达拉斯,美国福吉谷,保加利亚索菲亚&lt;/p&gt;
&lt;p&gt;线路一般但是存储和内存价格即为便宜，远程桌面访问体验极佳(优化windows这块很有实力),线路一般优化来凑，适合用来当网盘存储一些不重要的东西。&lt;/p&gt;
&lt;h3 id="dmit"&gt;&lt;a href="#dmit" class="header-anchor"&gt;&lt;/a&gt;dmit
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;机房覆盖: 美国洛杉矶 日本东京 中国香港&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;海外超强服务商，冗余量在官方通知中看似不少,实际应该是不少。大带宽+大流量。与其他CN2 GIA卖家不同的是有着较高的QOS。综合流量、带宽、QOS来看性价比不低。&lt;/p&gt;
&lt;h3 id="cloudsilk"&gt;&lt;a href="#cloudsilk" class="header-anchor"&gt;&lt;/a&gt;cloudsilk
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;机房覆盖: 美国圣何塞 德国法兰克福&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;性价比极高的云服务商，美国圣何塞4837(去程cn2,回程4837)线路年费做到了160，9929做到了240。体验的话4837在非晚高峰时段追一下9929还是有希望的，体验不错。IP也比较干净。&lt;/p&gt;
&lt;h3 id="akkocloud"&gt;&lt;a href="#akkocloud" class="header-anchor"&gt;&lt;/a&gt;akkocloud
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;机房覆盖: 美国圣何塞 德国法兰克福 英国伦敦&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;2019年至今的国人vps服务商，7年过去也算是老牌了，以二次元风格的ui闻名。线路是CN2 GIA&lt;/p&gt;
&lt;h3 id="hostdare"&gt;&lt;a href="#hostdare" class="header-anchor"&gt;&lt;/a&gt;hostdare
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;机房覆盖: 美国洛杉矶&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;低价机型带宽仅有50mbps，内存和处理器超开较为严重，但IO做的不错，线路质量其实可以和dmit五五开，整体来说还是不错的，放在最后的原因是外海机型50mbps带宽确实小了。&lt;/p&gt;
&lt;h2 id="大陆供应商"&gt;&lt;a href="#%e5%a4%a7%e9%99%86%e4%be%9b%e5%ba%94%e5%95%86" class="header-anchor"&gt;&lt;/a&gt;大陆供应商
&lt;/h2&gt;&lt;p&gt;其实大陆供应商挺好说的，整体就是没什么性价比，个人能接触到的也都是大厂服务器，很多业务都是toB为主。个人用户能买到的其实较为有限。再就是具体情况也不能说&lt;/p&gt;
&lt;h3 id="horain"&gt;&lt;a href="#horain" class="header-anchor"&gt;&lt;/a&gt;horain
&lt;/h3&gt;&lt;p&gt;包这盘饺子就为了蘸这碟醋。这个服务商的性价比是我难以忘却的，虽然忘了服务商的名称，但是杜甫+高带宽的超高性价比让我找了2年之久。总结为高性价比杜甫，高带宽但价格比大厂划算得多。&lt;/p&gt;
&lt;h3 id="大厂代理商"&gt;&lt;a href="#%e5%a4%a7%e5%8e%82%e4%bb%a3%e7%90%86%e5%95%86" class="header-anchor"&gt;&lt;/a&gt;大厂代理商
&lt;/h3&gt;&lt;p&gt;国内大厂的授权代理商有着比从官网买价格更低的优势，所以不选择horain的话那就要好好研究下代理商了。值得一提的是代理商也是有等级的，代理商等级越高拿到的价格就越低。&lt;/p&gt;
&lt;h2 id="免责声明"&gt;&lt;a href="#%e5%85%8d%e8%b4%a3%e5%a3%b0%e6%98%8e" class="header-anchor"&gt;&lt;/a&gt;免责声明
&lt;/h2&gt;&lt;p&gt;文章中的服务商(包括个别代理商)(除了horain，主要是用不上)，笔者有使用过，算是笔者游历vps/vds相关服务商的一些记载，写出来也主要是为了笔者自己用的，人格担保无任何推广返利(光从不给连接就能看出来)。哦对了没碰流媒体解锁，我觉得高端奢饰品和性价比应该是没什么关系的。&lt;/p&gt;</description></item><item><title>Git 使用规范：分支、提交信息与版本管理</title><link>https://ignvex.github.io/p/git-%E4%BD%BF%E7%94%A8%E8%A7%84%E8%8C%83%E5%88%86%E6%94%AF%E6%8F%90%E4%BA%A4%E4%BF%A1%E6%81%AF%E4%B8%8E%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86/</link><pubDate>Wed, 26 Aug 2026 16:09:10 +0800</pubDate><guid>https://ignvex.github.io/p/git-%E4%BD%BF%E7%94%A8%E8%A7%84%E8%8C%83%E5%88%86%E6%94%AF%E6%8F%90%E4%BA%A4%E4%BF%A1%E6%81%AF%E4%B8%8E%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86/</guid><description>&lt;h2 id="引言"&gt;&lt;a href="#%e5%bc%95%e8%a8%80" class="header-anchor"&gt;&lt;/a&gt;引言
&lt;/h2&gt;&lt;p&gt;git是非常舒适的版本管理器。广受使用且评价极高。规范的使用方法也尤为重要，提高协作效率，这就是写本篇文章的目的，整理git的常见规范。&lt;/p&gt;
&lt;h2 id="git规范的核心部分"&gt;&lt;a href="#git%e8%a7%84%e8%8c%83%e7%9a%84%e6%a0%b8%e5%bf%83%e9%83%a8%e5%88%86" class="header-anchor"&gt;&lt;/a&gt;Git规范的核心部分
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;分支命名规范&lt;/li&gt;
&lt;li&gt;Commit提交信息规范&lt;/li&gt;
&lt;li&gt;分支合并规范&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="分支命名规范"&gt;&lt;a href="#%e5%88%86%e6%94%af%e5%91%bd%e5%90%8d%e8%a7%84%e8%8c%83" class="header-anchor"&gt;&lt;/a&gt;分支命名规范
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;master/main 主分支,生产环境代码&lt;/li&gt;
&lt;li&gt;develop 开发分支,最新的代码&lt;/li&gt;
&lt;li&gt;feature/* 新功能分支&lt;/li&gt;
&lt;li&gt;bugfix/* 或 fix/* 修补bug分支&lt;/li&gt;
&lt;li&gt;release/* 预发布分支&lt;/li&gt;
&lt;li&gt;hotfix/* 热修复分支&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="提交信息规范"&gt;&lt;a href="#%e6%8f%90%e4%ba%a4%e4%bf%a1%e6%81%af%e8%a7%84%e8%8c%83" class="header-anchor"&gt;&lt;/a&gt;提交信息规范
&lt;/h3&gt;&lt;p&gt;这里推荐conventionalcommits规范&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;type&amp;gt;[optional scope]: &amp;lt;description&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[optional body]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[optional footer(s)]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="type"&gt;&lt;a href="#type" class="header-anchor"&gt;&lt;/a&gt;type
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;build: 用于修改项目构建系统，例如修改依赖库、外部接口或者升级 Node 版本等；&lt;/li&gt;
&lt;li&gt;chore: 用于对非业务性代码进行修改，例如修改构建流程或者工具配置等；&lt;/li&gt;
&lt;li&gt;ci: 用于修改持续集成流程，例如修改 Travis、Jenkins 等工作流配置；&lt;/li&gt;
&lt;li&gt;docs: 用于修改文档，例如修改 README 文件、API 文档等；&lt;/li&gt;
&lt;li&gt;style: 用于修改代码的样式，例如调整缩进、空格、空行等；&lt;/li&gt;
&lt;li&gt;refactor: 用于重构代码，例如修改代码结构、变量名、函数名等但不修改功能逻辑；&lt;/li&gt;
&lt;li&gt;perf: 用于优化性能，例如提升代码的性能、减少内存占用等；&lt;/li&gt;
&lt;li&gt;test: 用于修改测试用例，例如添加、删除、修改代码的测试用例等。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="scope"&gt;&lt;a href="#scope" class="header-anchor"&gt;&lt;/a&gt;scope
&lt;/h4&gt;&lt;p&gt;表示修改的范围 e.g.feat(auth):&lt;/p&gt;
&lt;h4 id="description"&gt;&lt;a href="#description" class="header-anchor"&gt;&lt;/a&gt;description
&lt;/h4&gt;&lt;p&gt;总结代码变动了什么，并且使用祈使句&lt;/p&gt;
&lt;h4 id="body"&gt;&lt;a href="#body" class="header-anchor"&gt;&lt;/a&gt;body
&lt;/h4&gt;&lt;p&gt;记录具体的变动，修改原因，对比&lt;/p&gt;
&lt;h4 id="footer"&gt;&lt;a href="#footer" class="header-anchor"&gt;&lt;/a&gt;footer
&lt;/h4&gt;&lt;p&gt;关联关联的需求或声明破坏性变更
破坏性变更主要是以&lt;code&gt;!&lt;/code&gt;和&lt;code&gt;BREAKING CHANGE&lt;/code&gt;
示例请去参考资料中的原文中查看&lt;/p&gt;
&lt;h3 id="语义化版本"&gt;&lt;a href="#%e8%af%ad%e4%b9%89%e5%8c%96%e7%89%88%e6%9c%ac" class="header-anchor"&gt;&lt;/a&gt;语义化版本
&lt;/h3&gt;&lt;p&gt;X.Y.Z&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;X为主版本号,当你做了不兼容的 API 修改，&lt;/li&gt;
&lt;li&gt;Y为次版本号,当你做了向下兼容的功能性新增，&lt;/li&gt;
&lt;li&gt;Z为修订号,当你做了向下兼容的问题修正。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="流程规范"&gt;&lt;a href="#%e6%b5%81%e7%a8%8b%e8%a7%84%e8%8c%83" class="header-anchor"&gt;&lt;/a&gt;流程规范
&lt;/h3&gt;&lt;h4 id="提交操作规范"&gt;&lt;a href="#%e6%8f%90%e4%ba%a4%e6%93%8d%e4%bd%9c%e8%a7%84%e8%8c%83" class="header-anchor"&gt;&lt;/a&gt;提交操作规范
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;原子化提交,一个commit只做一件事&lt;/li&gt;
&lt;li&gt;避免合并污染,使用rebase而不是merge&lt;/li&gt;
&lt;li&gt;合理Squash&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="代码评估规范"&gt;&lt;a href="#%e4%bb%a3%e7%a0%81%e8%af%84%e4%bc%b0%e8%a7%84%e8%8c%83" class="header-anchor"&gt;&lt;/a&gt;代码评估规范
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;背景/原因，为什么做这个改动&lt;/li&gt;
&lt;li&gt;改动点，具体动了哪些核心模块。&lt;/li&gt;
&lt;li&gt;复现，附上单元测试结果或前端截图/录屏。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="权限设计规范"&gt;&lt;a href="#%e6%9d%83%e9%99%90%e8%ae%be%e8%ae%a1%e8%a7%84%e8%8c%83" class="header-anchor"&gt;&lt;/a&gt;权限设计规范
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;保护核心分支,锁定main/master/develop分支&lt;/li&gt;
&lt;li&gt;除去敏感信息与密钥&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="仓库存储规范"&gt;&lt;a href="#%e4%bb%93%e5%ba%93%e5%ad%98%e5%82%a8%e8%a7%84%e8%8c%83" class="header-anchor"&gt;&lt;/a&gt;仓库存储规范
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;10M+静态文件不得推送到git仓库,需将其托管到仓库外的静态资源服务器&lt;/li&gt;
&lt;li&gt;分支需要在合并后及时清理&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://www.conventionalcommits.org/zh-hans/v1.0.0/" target="_blank" rel="noopener"
 &gt;conventionalcommits规范原文&lt;/a&gt;
&lt;a class="link" href="https://semver.org/lang/zh-CN/#%E6%91%98%E8%A6%81" target="_blank" rel="noopener"
 &gt;语义化版本原文&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Caddy反代github</title><link>https://ignvex.github.io/p/caddy%E5%8F%8D%E4%BB%A3github/</link><pubDate>Sat, 15 Aug 2026 13:07:30 +0800</pubDate><guid>https://ignvex.github.io/p/caddy%E5%8F%8D%E4%BB%A3github/</guid><description>&lt;p&gt;github 直连不稳定，clone 大仓库动不动断流，release 下载经常超时。用一台海外服务器反代 github，网页、clone、raw、release 一把梭，一劳永逸。&lt;/p&gt;
&lt;p&gt;caddy 的安装与守护进程写法在上一篇已经详细介绍过，这里不再赘述，&lt;a class="link" href="https://ignvex.github.io/p/%E8%87%AA%E7%94%A8docker%E9%95%9C%E5%83%8F%E6%BA%90%E6%90%AD%E5%BB%BA/" &gt;跳转链接&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="快速搭建"&gt;&lt;a href="#%e5%bf%ab%e9%80%9f%e6%90%ad%e5%bb%ba" class="header-anchor"&gt;&lt;/a&gt;快速搭建
&lt;/h2&gt;&lt;h3 id="配置caddyfile"&gt;&lt;a href="#%e9%85%8d%e7%bd%aecaddyfile" class="header-anchor"&gt;&lt;/a&gt;配置caddyfile
&lt;/h3&gt;&lt;p&gt;根据笔者踩坑经验。netcraft等公司有专门扫描仿冒站点的业务，会批量抓取网页，反代域名的登录等页面会被视为欺诈。申请回复的流程极为繁琐，所以这里加了些取巧的配置方法供读者放心的复制粘贴。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt; 10
&lt;/span&gt;&lt;span class="lnt"&gt; 11
&lt;/span&gt;&lt;span class="lnt"&gt; 12
&lt;/span&gt;&lt;span class="lnt"&gt; 13
&lt;/span&gt;&lt;span class="lnt"&gt; 14
&lt;/span&gt;&lt;span class="lnt"&gt; 15
&lt;/span&gt;&lt;span class="lnt"&gt; 16
&lt;/span&gt;&lt;span class="lnt"&gt; 17
&lt;/span&gt;&lt;span class="lnt"&gt; 18
&lt;/span&gt;&lt;span class="lnt"&gt; 19
&lt;/span&gt;&lt;span class="lnt"&gt; 20
&lt;/span&gt;&lt;span class="lnt"&gt; 21
&lt;/span&gt;&lt;span class="lnt"&gt; 22
&lt;/span&gt;&lt;span class="lnt"&gt; 23
&lt;/span&gt;&lt;span class="lnt"&gt; 24
&lt;/span&gt;&lt;span class="lnt"&gt; 25
&lt;/span&gt;&lt;span class="lnt"&gt; 26
&lt;/span&gt;&lt;span class="lnt"&gt; 27
&lt;/span&gt;&lt;span class="lnt"&gt; 28
&lt;/span&gt;&lt;span class="lnt"&gt; 29
&lt;/span&gt;&lt;span class="lnt"&gt; 30
&lt;/span&gt;&lt;span class="lnt"&gt; 31
&lt;/span&gt;&lt;span class="lnt"&gt; 32
&lt;/span&gt;&lt;span class="lnt"&gt; 33
&lt;/span&gt;&lt;span class="lnt"&gt; 34
&lt;/span&gt;&lt;span class="lnt"&gt; 35
&lt;/span&gt;&lt;span class="lnt"&gt; 36
&lt;/span&gt;&lt;span class="lnt"&gt; 37
&lt;/span&gt;&lt;span class="lnt"&gt; 38
&lt;/span&gt;&lt;span class="lnt"&gt; 39
&lt;/span&gt;&lt;span class="lnt"&gt; 40
&lt;/span&gt;&lt;span class="lnt"&gt; 41
&lt;/span&gt;&lt;span class="lnt"&gt; 42
&lt;/span&gt;&lt;span class="lnt"&gt; 43
&lt;/span&gt;&lt;span class="lnt"&gt; 44
&lt;/span&gt;&lt;span class="lnt"&gt; 45
&lt;/span&gt;&lt;span class="lnt"&gt; 46
&lt;/span&gt;&lt;span class="lnt"&gt; 47
&lt;/span&gt;&lt;span class="lnt"&gt; 48
&lt;/span&gt;&lt;span class="lnt"&gt; 49
&lt;/span&gt;&lt;span class="lnt"&gt; 50
&lt;/span&gt;&lt;span class="lnt"&gt; 51
&lt;/span&gt;&lt;span class="lnt"&gt; 52
&lt;/span&gt;&lt;span class="lnt"&gt; 53
&lt;/span&gt;&lt;span class="lnt"&gt; 54
&lt;/span&gt;&lt;span class="lnt"&gt; 55
&lt;/span&gt;&lt;span class="lnt"&gt; 56
&lt;/span&gt;&lt;span class="lnt"&gt; 57
&lt;/span&gt;&lt;span class="lnt"&gt; 58
&lt;/span&gt;&lt;span class="lnt"&gt; 59
&lt;/span&gt;&lt;span class="lnt"&gt; 60
&lt;/span&gt;&lt;span class="lnt"&gt; 61
&lt;/span&gt;&lt;span class="lnt"&gt; 62
&lt;/span&gt;&lt;span class="lnt"&gt; 63
&lt;/span&gt;&lt;span class="lnt"&gt; 64
&lt;/span&gt;&lt;span class="lnt"&gt; 65
&lt;/span&gt;&lt;span class="lnt"&gt; 66
&lt;/span&gt;&lt;span class="lnt"&gt; 67
&lt;/span&gt;&lt;span class="lnt"&gt; 68
&lt;/span&gt;&lt;span class="lnt"&gt; 69
&lt;/span&gt;&lt;span class="lnt"&gt; 70
&lt;/span&gt;&lt;span class="lnt"&gt; 71
&lt;/span&gt;&lt;span class="lnt"&gt; 72
&lt;/span&gt;&lt;span class="lnt"&gt; 73
&lt;/span&gt;&lt;span class="lnt"&gt; 74
&lt;/span&gt;&lt;span class="lnt"&gt; 75
&lt;/span&gt;&lt;span class="lnt"&gt; 76
&lt;/span&gt;&lt;span class="lnt"&gt; 77
&lt;/span&gt;&lt;span class="lnt"&gt; 78
&lt;/span&gt;&lt;span class="lnt"&gt; 79
&lt;/span&gt;&lt;span class="lnt"&gt; 80
&lt;/span&gt;&lt;span class="lnt"&gt; 81
&lt;/span&gt;&lt;span class="lnt"&gt; 82
&lt;/span&gt;&lt;span class="lnt"&gt; 83
&lt;/span&gt;&lt;span class="lnt"&gt; 84
&lt;/span&gt;&lt;span class="lnt"&gt; 85
&lt;/span&gt;&lt;span class="lnt"&gt; 86
&lt;/span&gt;&lt;span class="lnt"&gt; 87
&lt;/span&gt;&lt;span class="lnt"&gt; 88
&lt;/span&gt;&lt;span class="lnt"&gt; 89
&lt;/span&gt;&lt;span class="lnt"&gt; 90
&lt;/span&gt;&lt;span class="lnt"&gt; 91
&lt;/span&gt;&lt;span class="lnt"&gt; 92
&lt;/span&gt;&lt;span class="lnt"&gt; 93
&lt;/span&gt;&lt;span class="lnt"&gt; 94
&lt;/span&gt;&lt;span class="lnt"&gt; 95
&lt;/span&gt;&lt;span class="lnt"&gt; 96
&lt;/span&gt;&lt;span class="lnt"&gt; 97
&lt;/span&gt;&lt;span class="lnt"&gt; 98
&lt;/span&gt;&lt;span class="lnt"&gt; 99
&lt;/span&gt;&lt;span class="lnt"&gt;100
&lt;/span&gt;&lt;span class="lnt"&gt;101
&lt;/span&gt;&lt;span class="lnt"&gt;102
&lt;/span&gt;&lt;span class="lnt"&gt;103
&lt;/span&gt;&lt;span class="lnt"&gt;104
&lt;/span&gt;&lt;span class="lnt"&gt;105
&lt;/span&gt;&lt;span class="lnt"&gt;106
&lt;/span&gt;&lt;span class="lnt"&gt;107
&lt;/span&gt;&lt;span class="lnt"&gt;108
&lt;/span&gt;&lt;span class="lnt"&gt;109
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 换成你自己的域名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DOMAIN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;example.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat &lt;span class="s"&gt;&amp;lt;&amp;lt; EOF &amp;gt; /etc/caddy/Caddyfile
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; email you@example.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;gh.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; reverse_proxy https://github.com {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_up Host github.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_up origin https://github.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_down Location &amp;#34;https://github.com&amp;#34; &amp;#34;https://gh.\${DOMAIN}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;gh.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	handle /robots.txt {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		respond &amp;#34;User-agent: *\nDisallow: /&amp;#34; 200
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	# 白名单：只放行 git 协议与下载路径，网页一律 307 回原站
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	# 用 path_regexp，语义明确，不依赖 glob 通配符是否跨斜杠
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	@allow {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		# 合并为单条正则（每个命名 matcher 中 path_regexp 只能出现一次）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		# 覆盖：.git 协议形态（含 LFS/objects）、不带 .git 的首发请求、下载类路径
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		path_regexp ^/[^/]+/[^/]+(\\.git(/.*)?$|/(info/refs|git-upload-pack|git-receive-pack|HEAD)$|/archive/.*$|/releases/download/.*$|/raw/.*$|/(commit|commits|pull|pulls)/[^/]+\\.patch$)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	@rest {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		not {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;			path_regexp ^/[^/]+/[^/]+(\\.git(/.*)?$|/(info/refs|git-upload-pack|git-receive-pack|HEAD)$|/archive/.*$|/releases/download/.*$|/raw/.*$|/(commit|commits|pull|pulls)/[^/]+\\.patch$)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	redir @rest https://github.com{uri} 307
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	reverse_proxy https://github.com {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_up Host {upstream_hostport}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_up X-Forwarded-Host {host}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_up origin https://github.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		# 下载链 302 闭环：全部改写到自己镜像域名
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_down Location &amp;#34;https://raw.githubusercontent.com&amp;#34; &amp;#34;https://raw.gh.\${DOMAIN}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_down Location &amp;#34;https://codeload.github.com&amp;#34; &amp;#34;https://codeload.gh.\${DOMAIN}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_down Location &amp;#34;https://objects.githubusercontent.com&amp;#34; &amp;#34;https://objects.gh.\${DOMAIN}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;raw.gh.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	handle /robots.txt {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		respond &amp;#34;User-agent: *\nDisallow: /&amp;#34; 200
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	reverse_proxy https://raw.githubusercontent.com {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_up Host raw.githubusercontent.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;objects.gh.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	handle /robots.txt {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		respond &amp;#34;User-agent: *\nDisallow: /&amp;#34; 200
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	reverse_proxy https://objects.githubusercontent.com {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_up Host objects.githubusercontent.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_down Location &amp;#34;https://objects.githubusercontent.com&amp;#34; &amp;#34;https://objects.gh.\${DOMAIN}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;codeload.gh.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	handle /robots.txt {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		respond &amp;#34;User-agent: *\nDisallow: /&amp;#34; 200
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	reverse_proxy https://codeload.github.com {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_up Host codeload.github.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;api.gh.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	handle /robots.txt {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		respond &amp;#34;User-agent: *\nDisallow: /&amp;#34; 200
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	reverse_proxy https://api.github.com {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_up Host api.github.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;gist.gh.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	handle /robots.txt {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		respond &amp;#34;User-agent: *\nDisallow: /&amp;#34; 200
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	# gist 的 clone 有两种深度：/id.git 与 /user/id.git，其余网页 307 回原站
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	@allow {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		# 单条正则：/id.git 与 /user/id.git 两种深度 + 不带 .git 的协议首发请求
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		path_regexp ^/(([^/]+/)?[^/]+\\.git(/.*)?$|([^/]+/)?[^/]+/(info/refs|git-upload-pack|git-receive-pack|HEAD)$)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	@rest {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		not {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;			path_regexp ^/(([^/]+/)?[^/]+\\.git(/.*)?$|([^/]+/)?[^/]+/(info/refs|git-upload-pack|git-receive-pack|HEAD)$)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	redir @rest https://gist.github.com{uri} 307
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	reverse_proxy https://gist.github.com {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_up Host gist.github.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;avatars.gh.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	handle /robots.txt {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		respond &amp;#34;User-agent: *\nDisallow: /&amp;#34; 200
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	reverse_proxy https://avatars.githubusercontent.com {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;		header_up Host avatars.githubusercontent.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意事项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;email&lt;/code&gt; 换成自己的邮箱&lt;/li&gt;
&lt;li&gt;证书不用管，Caddy 自动申请续期，配置里不用写任何 &lt;code&gt;tls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;header_down&lt;/code&gt; 两个参数是删除、三个参数才是替换，且查找串要写上游实际域名（&lt;code&gt;https://github.com&lt;/code&gt; 这种），写成&amp;quot;期望结果&amp;quot;不会生效&lt;/li&gt;
&lt;li&gt;release 下载会 302 跳到 &lt;code&gt;objects.githubusercontent.com&lt;/code&gt;，所以必须反代它并重写 &lt;code&gt;Location&lt;/code&gt;，否则下载还是走原站&lt;/li&gt;
&lt;li&gt;页面里的 css/js 在 &lt;code&gt;github.githubassets.com&lt;/code&gt;、头像在 &lt;code&gt;avatars.githubusercontent.com&lt;/code&gt;，这些静态资源仍然直连；如果它们也慢，把对应域名也加进反代&lt;/li&gt;
&lt;li&gt;登录受 cookie 域名限制，反代域名登录不上就直连原站登录，浏览不受影响&lt;/li&gt;
&lt;li&gt;配置里出现的域名必须都能解析，否则 Caddy 会一直重试签证书&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="配置dns"&gt;&lt;a href="#%e9%85%8d%e7%bd%aedns" class="header-anchor"&gt;&lt;/a&gt;配置dns
&lt;/h3&gt;&lt;p&gt;嫌麻烦就加一条泛解析 &lt;code&gt;*.gh.example.com&lt;/code&gt;，前提是dns服务商支持泛解析。目前已知cloudflare支持
7 条 A 记录指向服务器公网 IP：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;gh&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gh&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objects&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gh&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;codeload&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gh&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gh&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;gist&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gh&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;avatars&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gh&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="验证部署"&gt;&lt;a href="#%e9%aa%8c%e8%af%81%e9%83%a8%e7%bd%b2" class="header-anchor"&gt;&lt;/a&gt;验证部署
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo caddy validate --config /etc/caddy/Caddyfile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl reload caddy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -sI https://gh.example.com/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;返回 &lt;code&gt;200 OK&lt;/code&gt; 说明反代正常。再试一次 clone：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://gh.example.com/octocat/Hello-World.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;release 下载验证（换成真实的 release 链接）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -sIL https://gh.example.com/user/repo/releases/download/v1.0/file.zip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;响应里的 &lt;code&gt;Location&lt;/code&gt; 应该是 &lt;code&gt;https://objects.gh.example.com/...&lt;/code&gt;，说明重写生效。&lt;/p&gt;
&lt;h2 id="快速使用"&gt;&lt;a href="#%e5%bf%ab%e9%80%9f%e4%bd%bf%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;快速使用
&lt;/h2&gt;&lt;h3 id="git"&gt;&lt;a href="#git" class="header-anchor"&gt;&lt;/a&gt;git
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global url.&lt;span class="s2"&gt;&amp;#34;https://gh.example.com/&amp;#34;&lt;/span&gt;.insteadOf &lt;span class="s2"&gt;&amp;#34;https://github.com/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一劳永逸，记得换掉 example.com。之后 clone、pull 自动走反代，remote 地址不用改：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/user/repo.git &lt;span class="c1"&gt;# 实际请求自动改写为 https://gh.example.com/user/repo.git&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看改写规则是否生效：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --get-regexp &lt;span class="s1"&gt;&amp;#39;^url\.&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="网页"&gt;&lt;a href="#%e7%bd%91%e9%a1%b5" class="header-anchor"&gt;&lt;/a&gt;网页
&lt;/h3&gt;&lt;p&gt;直接访问 &lt;code&gt;https://gh.example.com/&lt;/code&gt;，浏览仓库、代码、issue 都没问题。需要登录的操作（发 issue、提 PR）建议直连原站。&lt;/p&gt;
&lt;h3 id="raw与release"&gt;&lt;a href="#raw%e4%b8%8erelease" class="header-anchor"&gt;&lt;/a&gt;raw与release
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -sSL https://raw.gh.example.com/user/repo/main/install.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://gh.example.com/user/repo/releases/download/v1.0/app.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;脚本安装场景很实用，把 &lt;code&gt;curl ... | bash&lt;/code&gt; 里的地址换成反代域名即可。&lt;/p&gt;
&lt;h3 id="稍作补充"&gt;&lt;a href="#%e7%a8%8d%e4%bd%9c%e8%a1%a5%e5%85%85" class="header-anchor"&gt;&lt;/a&gt;稍作补充
&lt;/h3&gt;&lt;p&gt;用户目录下的 &lt;code&gt;.gitconfig&lt;/code&gt; 通过 &lt;code&gt;insteadOf&lt;/code&gt; 将 &lt;code&gt;git@github.com:&lt;/code&gt; 开头的地址换为反代地址（见下方示例），防止 VSCode 将你识别为企业版 github 用户。&lt;/p&gt;
&lt;p&gt;示例:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;url &lt;span class="s2"&gt;&amp;#34;https://example.com/&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="nv"&gt;insteadOf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; git@github.com:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="补充之外的进阶玩法"&gt;&lt;a href="#%e8%a1%a5%e5%85%85%e4%b9%8b%e5%a4%96%e7%9a%84%e8%bf%9b%e9%98%b6%e7%8e%a9%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;补充之外的进阶玩法
&lt;/h3&gt;&lt;p&gt;在&lt;code&gt;.gitconfig&lt;/code&gt;中添加。
并在&lt;a class="link" href="https://github.com/settings/personal-access-tokens" target="_blank" rel="noopener"
 &gt;github&lt;/a&gt;配置token并赋予仓库相关的权限&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[credential &amp;#34;https://gh.example.com&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	provider = generic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>鹰角网络三方网站收集</title><link>https://ignvex.github.io/p/%E9%B9%B0%E8%A7%92%E7%BD%91%E7%BB%9C%E4%B8%89%E6%96%B9%E7%BD%91%E7%AB%99%E6%94%B6%E9%9B%86/</link><pubDate>Sat, 15 Aug 2026 11:45:32 +0800</pubDate><guid>https://ignvex.github.io/p/%E9%B9%B0%E8%A7%92%E7%BD%91%E7%BB%9C%E4%B8%89%E6%96%B9%E7%BD%91%E7%AB%99%E6%94%B6%E9%9B%86/</guid><description>&lt;p&gt;这一阵发现明日方舟有特别多的三方网站，便于自己查找便写了这篇文章。也希望对读者有些帮助。&lt;/p&gt;
&lt;h2 id="网站类"&gt;&lt;a href="#%e7%bd%91%e7%ab%99%e7%b1%bb" class="header-anchor"&gt;&lt;/a&gt;网站类
&lt;/h2&gt;&lt;h3 id="明日方舟-ip-资料站"&gt;&lt;a href="#%e6%98%8e%e6%97%a5%e6%96%b9%e8%88%9f-ip-%e8%b5%84%e6%96%99%e7%ab%99" class="header-anchor"&gt;&lt;/a&gt;明日方舟 IP 资料站
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟, 终末地&lt;/code&gt; &lt;a class="link" href="https://www.arknights.wiki/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一站式收录明日方舟 IP 宇宙：从泰拉大陆的《明日方舟》，到塔卫二的《明日方舟：终末地》， 以及围绕它们展开的音乐、动画、漫画与周边文化。&lt;/p&gt;
&lt;h3 id="prts"&gt;&lt;a href="#prts" class="header-anchor"&gt;&lt;/a&gt;PRTS
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://prts.wiki/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;明日方舟的最全面、权威的民间数据与剧情考据平台&lt;/p&gt;
&lt;h3 id="终末地-wiki"&gt;&lt;a href="#%e7%bb%88%e6%9c%ab%e5%9c%b0-wiki" class="header-anchor"&gt;&lt;/a&gt;终末地 wiki
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 终末地&lt;/code&gt; &lt;a class="link" href="https://fz.wiki/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;玩家社区维护的《明日方舟：终末地》百科&lt;/p&gt;
&lt;h3 id="终末地资源地图"&gt;&lt;a href="#%e7%bb%88%e6%9c%ab%e5%9c%b0%e8%b5%84%e6%ba%90%e5%9c%b0%e5%9b%be" class="header-anchor"&gt;&lt;/a&gt;终末地资源地图
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 终末地&lt;/code&gt; &lt;a class="link" href="https://zmdmap.com/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;标记了塔卫二所有地图上的协议采录桩、宝箱、醚质点位、隐藏纸条以及故障机器人的解密攻略，跑图开荒必备。&lt;/p&gt;
&lt;h3 id="企鹅物流数据统计"&gt;&lt;a href="#%e4%bc%81%e9%b9%85%e7%89%a9%e6%b5%81%e6%95%b0%e6%8d%ae%e7%bb%9f%e8%ae%a1" class="header-anchor"&gt;&lt;/a&gt;企鹅物流数据统计
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://penguin-stats.cn/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;根据大量玩家提交的游戏数据进行统计的站点。&lt;/p&gt;
&lt;p&gt;官方介绍&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;企鹅物流数据统计（Penguin Statistics）是企鹅物流旗下数据处理部门（误），致力于明日方舟各素材的掉率统计。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;企鹅物流的现有数据集由玩家手动上报、截图识别与通过公共 API 上报合力维护。为了尽力保证数据集的准确性，企鹅物流数据团队会对掉落数据集进行多种方式的自动、定时及手动维护。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="终末地一图流"&gt;&lt;a href="#%e7%bb%88%e6%9c%ab%e5%9c%b0%e4%b8%80%e5%9b%be%e6%b5%81" class="header-anchor"&gt;&lt;/a&gt;终末地一图流
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 终末地&lt;/code&gt; &lt;a class="link" href="https://ef.yituliu.cn/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;计算终末地里“工业产线配电”的单页工具，为你的基地耗电做预估。&lt;/p&gt;
&lt;h3 id="明日方舟一图流"&gt;&lt;a href="#%e6%98%8e%e6%97%a5%e6%96%b9%e8%88%9f%e4%b8%80%e5%9b%be%e6%b5%81" class="header-anchor"&gt;&lt;/a&gt;明日方舟一图流
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://ark.yituliu.cn/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;基于企鹅物流的数据，直观显示当前活动哪一关刷材料最赚、绿票/高级凭证怎么兑换最划算，并带有攒抽计算器和礼包性价比评分。&lt;/p&gt;
&lt;h3 id="明日方舟工具箱"&gt;&lt;a href="#%e6%98%8e%e6%97%a5%e6%96%b9%e8%88%9f%e5%b7%a5%e5%85%b7%e7%ae%b1" class="header-anchor"&gt;&lt;/a&gt;明日方舟工具箱
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://arkntools.app/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;网页版公开招募计算器与干员培养规划工具。&lt;/p&gt;
&lt;h3 id="明日方舟干员培养表"&gt;&lt;a href="#%e6%98%8e%e6%97%a5%e6%96%b9%e8%88%9f%e5%b9%b2%e5%91%98%e5%9f%b9%e5%85%bb%e8%a1%a8" class="header-anchor"&gt;&lt;/a&gt;明日方舟干员培养表
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://ark-nights.com/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;老牌著名的干员培养规划与地图模拟工具网站。主站是干员培养的材料及计算器，子站是地图查看器（见下一条 PRTS.MAP）。&lt;/p&gt;
&lt;h3 id="prtsmap"&gt;&lt;a href="#prtsmap" class="header-anchor"&gt;&lt;/a&gt;PRTS.MAP
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://map.ark-nights.com/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PRTS 衍生出的专门用于查阅地图与怪物路线的工具&lt;/p&gt;
&lt;h3 id="prtschat"&gt;&lt;a href="#prtschat" class="header-anchor"&gt;&lt;/a&gt;PRTS.chat
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://prts.chat/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;明日方舟剧情 AI 检索系统。&lt;/p&gt;
&lt;h3 id="寻访模拟器"&gt;&lt;a href="#%e5%af%bb%e8%ae%bf%e6%a8%a1%e6%8b%9f%e5%99%a8" class="header-anchor"&gt;&lt;/a&gt;寻访模拟器
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://hycdes.com/pages/AKT_HireSimulate.html" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;全网最古老、最长青的寻访模拟器&lt;/p&gt;
&lt;h3 id="明日方舟寻访记录分析"&gt;&lt;a href="#%e6%98%8e%e6%97%a5%e6%96%b9%e8%88%9f%e5%af%bb%e8%ae%bf%e8%ae%b0%e5%bd%95%e5%88%86%e6%9e%90" class="header-anchor"&gt;&lt;/a&gt;明日方舟寻访记录分析
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://arkgacha.kwer.top/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;分析你近 90 天的寻访记录。&lt;/p&gt;
&lt;h2 id="工具类"&gt;&lt;a href="#%e5%b7%a5%e5%85%b7%e7%b1%bb" class="header-anchor"&gt;&lt;/a&gt;工具类
&lt;/h2&gt;&lt;h3 id="maa-assistant-arknights"&gt;&lt;a href="#maa-assistant-arknights" class="header-anchor"&gt;&lt;/a&gt;MAA Assistant Arknights
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://maa.plus/" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一款明日方舟游戏小助手。极为强大，维护频率极高，具体功能建议直接看&lt;a class="link" href="https://docs.maa.plus/zh-cn/" target="_blank" rel="noopener"
 &gt;文档&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="oc-template"&gt;&lt;a href="#oc-template" class="header-anchor"&gt;&lt;/a&gt;OC Template
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Include: 明日方舟&lt;/code&gt; &lt;a class="link" href="https://octemplate.top/akrecruit" target="_blank" rel="noopener"
 &gt;跳转链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;干员招募界面生成器&lt;/p&gt;</description></item><item><title>自用docker镜像源搭建</title><link>https://ignvex.github.io/p/%E8%87%AA%E7%94%A8docker%E9%95%9C%E5%83%8F%E6%BA%90%E6%90%AD%E5%BB%BA/</link><pubDate>Fri, 14 Aug 2026 23:09:30 +0800</pubDate><guid>https://ignvex.github.io/p/%E8%87%AA%E7%94%A8docker%E9%95%9C%E5%83%8F%E6%BA%90%E6%90%AD%E5%BB%BA/</guid><description>&lt;p&gt;公共 docker 加速器关了一大批，自己用一台海外服务器反代镜像仓库，一劳永逸。&lt;/p&gt;
&lt;h2 id="快速搭建"&gt;&lt;a href="#%e5%bf%ab%e9%80%9f%e6%90%ad%e5%bb%ba" class="header-anchor"&gt;&lt;/a&gt;快速搭建
&lt;/h2&gt;&lt;h3 id="安装caddy"&gt;&lt;a href="#%e5%ae%89%e8%a3%85caddy" class="header-anchor"&gt;&lt;/a&gt;安装caddy
&lt;/h3&gt;&lt;p&gt;二进制放 &lt;code&gt;/usr/bin/caddy&lt;/code&gt;，服务文件 &lt;code&gt;/etc/systemd/system/caddy.service&lt;/code&gt;，配置 &lt;code&gt;/etc/caddy/Caddyfile&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mv caddy /usr/bin/caddy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod &lt;span class="m"&gt;755&lt;/span&gt; /usr/bin/caddy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo setcap &lt;span class="nv"&gt;cap_net_bind_service&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;+ep /usr/bin/caddy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo groupadd --system caddy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo useradd --system &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --gid caddy &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --create-home &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --home-dir /var/lib/caddy &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --shell /usr/sbin/nologin &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --comment &lt;span class="s2"&gt;&amp;#34;Caddy web server&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; caddy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="配置caddy守护进程"&gt;&lt;a href="#%e9%85%8d%e7%bd%aecaddy%e5%ae%88%e6%8a%a4%e8%bf%9b%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;配置caddy守护进程
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;/etc/systemd/system/caddy.service&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Unit]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Caddy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Documentation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;https://caddyserver.com/docs/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;After&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;network.target network-online.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Requires&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;network-online.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;notify&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;User&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;caddy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Group&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;caddy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;ExecStart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;ExecReload&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;TimeoutStopSec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;5s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;LimitNOFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;1048576&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;LimitNPROC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;512&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;PrivateTmp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;ProtectSystem&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;full&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;AmbientCapabilities&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;cap_net_bind_service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Install]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;WantedBy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;multi-user.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; --now caddy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="配置caddyfile"&gt;&lt;a href="#%e9%85%8d%e7%bd%aecaddyfile" class="header-anchor"&gt;&lt;/a&gt;配置caddyfile
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;span class="lnt"&gt;56
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 换成你自己的域名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DOMAIN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;example.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat &lt;span class="s"&gt;&amp;lt;&amp;lt; EOF &amp;gt; /etc/caddy/Caddyfile
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; email you@example.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;hub.docker.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; reverse_proxy https://registry-1.docker.io {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_up Host registry-1.docker.io
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_down Www-Authenticate &amp;#34;https://auth.docker.io&amp;#34; &amp;#34;https://auth.docker.\${DOMAIN}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_down Location &amp;#34;https://production.cloudflare.docker.com&amp;#34; &amp;#34;https://production.cloudflare.docker.\${DOMAIN}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;auth.docker.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; reverse_proxy https://auth.docker.io {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_up Host auth.docker.io
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;production.cloudflare.docker.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; reverse_proxy https://production.cloudflare.docker.com {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_up Host production.cloudflare.docker.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;hub.quay.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; reverse_proxy https://quay.io {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_up Host quay.io
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_down Www-Authenticate &amp;#34;https://quay.io/v2/auth&amp;#34; &amp;#34;https://hub.quay.\${DOMAIN}/v2/auth&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;hub.gcr.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; reverse_proxy https://gcr.io {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_up Host gcr.io
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_down Www-Authenticate &amp;#34;https://gcr.io/v2/token&amp;#34; &amp;#34;https://hub.gcr.\${DOMAIN}/v2/token&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;hub.k8s.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; reverse_proxy https://registry.k8s.io {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_up Host registry.k8s.io
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_down Www-Authenticate &amp;#34;https://registry.k8s.io/v2/token&amp;#34; &amp;#34;https://hub.k8s.\${DOMAIN}/v2/token&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_down Location &amp;#34;https://storage.googleapis.com&amp;#34; &amp;#34;https://storage.googleapis.\${DOMAIN}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;storage.googleapis.\${DOMAIN} {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; reverse_proxy https://storage.googleapis.com {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; header_up Host storage.googleapis.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意事项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;email&lt;/code&gt; 换成自己的邮箱&lt;/li&gt;
&lt;li&gt;证书不用管，Caddy 自动申请续期，配置里不用写任何 &lt;code&gt;tls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k8s.gcr.io&lt;/code&gt; 已退役，k8s 站点反代的是新的 &lt;code&gt;registry.k8s.io&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;header_down&lt;/code&gt; 两个参数是删除、三个参数才是替换，且查找串要写上游实际域名（&lt;code&gt;https://auth.docker.io&lt;/code&gt; 这种），写成&amp;quot;期望结果&amp;quot;不会生效&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="配置dns"&gt;&lt;a href="#%e9%85%8d%e7%bd%aedns" class="header-anchor"&gt;&lt;/a&gt;配置dns
&lt;/h3&gt;&lt;p&gt;7 条 A 记录指向服务器公网 IP：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hub.docker.example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;auth.docker.example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;production.cloudflare.docker.example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hub.quay.example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hub.gcr.example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hub.k8s.example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;storage.googleapis.example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;嫌麻烦就加一条泛解析 &lt;code&gt;*.docker.example.com&lt;/code&gt;。配置里出现的域名必须都能解析，否则 Caddy 会一直重试签证书。&lt;/p&gt;
&lt;h3 id="验证部署"&gt;&lt;a href="#%e9%aa%8c%e8%af%81%e9%83%a8%e7%bd%b2" class="header-anchor"&gt;&lt;/a&gt;验证部署
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo caddy validate --config /etc/caddy/Caddyfile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl reload caddy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -sI https://hub.docker.example.com/v2/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;返回 &lt;code&gt;401 Unauthorized&lt;/code&gt; 是正常的，同时响应头里 &lt;code&gt;Www-Authenticate&lt;/code&gt; 的 realm 应该是 &lt;code&gt;https://auth.docker.example.com/token&lt;/code&gt;，说明重写生效。最终测试：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker pull hub.docker.example.com/library/hello-world:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="快速使用"&gt;&lt;a href="#%e5%bf%ab%e9%80%9f%e4%bd%bf%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;快速使用
&lt;/h2&gt;&lt;h3 id="unraid"&gt;&lt;a href="#unraid" class="header-anchor"&gt;&lt;/a&gt;unraid
&lt;/h3&gt;&lt;p&gt;Settings → Docker → Advanced View → Docker Hub URL 改成 &lt;code&gt;https://hub.docker.example.com&lt;/code&gt;，或者拉镜像时直接写完整地址 &lt;code&gt;hub.docker.example.com/linuxserver/plex&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="其他主流linux"&gt;&lt;a href="#%e5%85%b6%e4%bb%96%e4%b8%bb%e6%b5%81linux" class="header-anchor"&gt;&lt;/a&gt;其他主流linux
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;/etc/docker/daemon.json&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;registry-mirrors&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://hub.docker.example.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之后 &lt;code&gt;docker pull nginx&lt;/code&gt; 自动走代理。registry-mirrors 只接管 Docker Hub，gcr/quay 镜像换前缀拉：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker pull hub.quay.example.com/prometheus/prometheus:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker pull hub.gcr.example.com/istio/proxyv2:1.20.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以加公共源兜底：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;registry-mirrors&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;https://hub.docker.example.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;https://mirrors.tuna.tsinghua.edu.cn&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Hugo 实用技巧</title><link>https://ignvex.github.io/p/hugo-%E5%AE%9E%E7%94%A8%E6%8A%80%E5%B7%A7/</link><pubDate>Fri, 14 Aug 2026 22:44:27 +0800</pubDate><guid>https://ignvex.github.io/p/hugo-%E5%AE%9E%E7%94%A8%E6%8A%80%E5%B7%A7/</guid><description>&lt;h2 id="引言"&gt;&lt;a href="#%e5%bc%95%e8%a8%80" class="header-anchor"&gt;&lt;/a&gt;引言
&lt;/h2&gt;&lt;p&gt;用Hugo这个框架已经有了两个月，积累了一些常用的技巧，对于刚开始用的新人来说算是比较实用的。我认为官方文档写的不错的地方我会照搬，尊重文档 :)&lt;/p&gt;
&lt;h2 id="步入正题"&gt;&lt;a href="#%e6%ad%a5%e5%85%a5%e6%ad%a3%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;步入正题
&lt;/h2&gt;&lt;h3 id="hugo的预览"&gt;&lt;a href="#hugo%e7%9a%84%e9%a2%84%e8%a7%88" class="header-anchor"&gt;&lt;/a&gt;hugo的预览
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo server &lt;span class="c1"&gt;# 本地预览博客&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo server -D &lt;span class="c1"&gt;# 预览本地博客，draft=true的文章会有显示&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="hugo创建文章"&gt;&lt;a href="#hugo%e5%88%9b%e5%bb%ba%e6%96%87%e7%ab%a0" class="header-anchor"&gt;&lt;/a&gt;hugo创建文章
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo new post/***.md &lt;span class="c1"&gt;#纯文本博客&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo new post/***/index.md &lt;span class="c1"&gt;#可以附上写静态资源的博客&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="hugo文章内使用相对链接"&gt;&lt;a href="#hugo%e6%96%87%e7%ab%a0%e5%86%85%e4%bd%bf%e7%94%a8%e7%9b%b8%e5%af%b9%e9%93%be%e6%8e%a5" class="header-anchor"&gt;&lt;/a&gt;hugo文章内使用相对链接
&lt;/h2&gt;&lt;p&gt;这个直接照搬文档&lt;a class="link" href="https://gohugo.io/shortcodes/relref/" target="_blank" rel="noopener"
 &gt;官方文档&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Scoop：Windows 上的开源包管理器</title><link>https://ignvex.github.io/p/scoopwindows-%E4%B8%8A%E7%9A%84%E5%BC%80%E6%BA%90%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8/</link><pubDate>Fri, 14 Aug 2026 21:25:42 +0800</pubDate><guid>https://ignvex.github.io/p/scoopwindows-%E4%B8%8A%E7%9A%84%E5%BC%80%E6%BA%90%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8/</guid><description>&lt;p&gt;&lt;code&gt;scoop&lt;/code&gt; 基于Windows系统，提供的无需提权(不需要管理员权限)软件管理方案。具备极高的灵活性和定制性。有着在linux系统下使用包管理器的体验，一定程度上比linux的包管理器好用，这个是真的不用提权。&lt;/p&gt;
&lt;h2 id="安装"&gt;&lt;a href="#%e5%ae%89%e8%a3%85" class="header-anchor"&gt;&lt;/a&gt;安装
&lt;/h2&gt;&lt;p&gt;值得注意的是,scoop默认情况下是禁止powershell以管理员权限安装的，需要在普通用户模式下运行&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Invoke-RestMethod -Uri https://get.scoop.sh &lt;span class="p"&gt;|&lt;/span&gt; Invoke-Expression
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="配置镜像源"&gt;&lt;a href="#%e9%85%8d%e7%bd%ae%e9%95%9c%e5%83%8f%e6%ba%90" class="header-anchor"&gt;&lt;/a&gt;配置镜像源
&lt;/h3&gt;&lt;p&gt;基本操作，提高scoop的工作效率&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop config SCOOP_REPO &lt;span class="s2"&gt;&amp;#34;https://gitee.com/scoop-installer/scoop&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="额外操作"&gt;&lt;a href="#%e9%a2%9d%e5%a4%96%e6%93%8d%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;额外操作
&lt;/h3&gt;&lt;p&gt;scoop有一种叫做bucket的概念，你可以通过增加bucket来扩展你可以在scoop下载、安装、管理的软件。也就是说他们需要配置额外的镜像源。&lt;/p&gt;
&lt;p&gt;慢慢安装，其实bucket有不少需要装的。主要有main、extras、dorado、echo、scoopcn、siku、versions好多&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop bucket add main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="使用"&gt;&lt;a href="#%e4%bd%bf%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;使用
&lt;/h2&gt;&lt;p&gt;如下是scoop的主要使用方法&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop bucket add extras &lt;span class="c1"&gt;# 添加扩展仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop search &amp;lt;name&amp;gt; &lt;span class="c1"&gt;# 搜索软件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop install &amp;lt;name&amp;gt; &lt;span class="c1"&gt;# 安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop install &amp;lt;bucket&amp;gt;/&amp;lt;name&amp;gt;@版本号 &lt;span class="c1"&gt;# 带版本号安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop reset &amp;lt;name&amp;gt;@版本号 &lt;span class="c1"&gt;# 回退到 已安装 指定版本 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop list &lt;span class="c1"&gt;# 列出已安装的软件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop list &amp;lt;name&amp;gt; &lt;span class="c1"&gt;# 列出已安装某软件 已装版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop update &amp;lt;name&amp;gt; &lt;span class="c1"&gt;# 更新某软件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop update &lt;span class="c1"&gt;# 只更新 bucket，不升级软件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop update * &lt;span class="c1"&gt;# 升级所有已安装软件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop uninstall &amp;lt;name&amp;gt; &lt;span class="c1"&gt;# 卸载&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop which &amp;lt;exe&amp;gt; &lt;span class="c1"&gt;# 查看某可执行文件实际路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop prefix &amp;lt;name&amp;gt;				 &lt;span class="c1"&gt;# 快速查询 通过 Scoop 安装 软件所在根目录路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="参考文章"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e6%96%87%e7%ab%a0" class="header-anchor"&gt;&lt;/a&gt;参考文章
&lt;/h2&gt;&lt;p&gt;我的文章内容主要摘抄自他们，感兴趣的朋友们可以看一下。&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://www.cnblogs.com/jingzh/p/19122446#133-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4" target="_blank" rel="noopener"
 &gt;Cnblogs的上善若水 | Win环境下的包管理工具,(包含winget,scoop)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://sspai.com/post/65933" target="_blank" rel="noopener"
 &gt;少数派的FavourHong | windows上缺失的包管理器,包含winget,chocolatey,scoop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://zhuanlan.zhihu.com/p/694665774" target="_blank" rel="noopener"
 &gt;知乎上的scoop,winget,chocolatey三者比较&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://zhuanlan.zhihu.com/p/27467105881" target="_blank" rel="noopener"
 &gt;知乎上的scoop设置国内镜像加速&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://scoop.sh" target="_blank" rel="noopener"
 &gt;官方地址&lt;/a&gt;&lt;/p&gt;</description></item><item><title>DeepSeek Harness 免 npx 安装（Windows）</title><link>https://ignvex.github.io/p/deepseek-harness-%E5%85%8D-npx-%E5%AE%89%E8%A3%85windows/</link><pubDate>Fri, 14 Aug 2026 21:18:04 +0800</pubDate><guid>https://ignvex.github.io/p/deepseek-harness-%E5%85%8D-npx-%E5%AE%89%E8%A3%85windows/</guid><description>&lt;h2 id="前言吐槽"&gt;&lt;a href="#%e5%89%8d%e8%a8%80%e5%90%90%e6%a7%bd" class="header-anchor"&gt;&lt;/a&gt;前言(吐槽)
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Deepseek Harness&lt;/code&gt;不负众望的从内测被推进到的公测。采用与koishi的同源驱动cordis(是的没错，写q群bot可以进深度求索 (x )。npx的安装方式对于我这种不经常使用前端来说颇具挑战。&lt;code&gt;scoop install dsh&lt;/code&gt;绝对是一个绝佳的选择，但很可惜，deeepseek harness并没有支持。那么就有了本文的慵懒操作。&lt;/p&gt;
&lt;h2 id="准备清单"&gt;&lt;a href="#%e5%87%86%e5%a4%87%e6%b8%85%e5%8d%95" class="header-anchor"&gt;&lt;/a&gt;准备清单
&lt;/h2&gt;&lt;p&gt;其实为了便于讲解我去写了一篇scoop的安装和便捷配置的文章。好了写完了。&lt;a class="link" href="https://ignvex.github.io/p/scoopwindows-%E4%B8%8A%E7%9A%84%E5%BC%80%E6%BA%90%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8/" &gt;scoop的安装和实用技巧&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="阶段一安装前置软件"&gt;&lt;a href="#%e9%98%b6%e6%ae%b5%e4%b8%80%e5%ae%89%e8%a3%85%e5%89%8d%e7%bd%ae%e8%bd%af%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;阶段一,安装前置软件
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop bucket add main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop install nodejs-lts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注: 我觉得你可能装过但是版本不是很新并不被支持，这里你可以直接使用&lt;code&gt;scoop update nodejs-lts&lt;/code&gt;进行更新&lt;/p&gt;
&lt;h3 id="阶段15给npx换源"&gt;&lt;a href="#%e9%98%b6%e6%ae%b515%e7%bb%99npx%e6%8d%a2%e6%ba%90" class="header-anchor"&gt;&lt;/a&gt;阶段1.5,给npx换源
&lt;/h3&gt;&lt;p&gt;淘宝源其实不错，还有腾讯云、华为云镜像源可选。换掉地址即可。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm config &lt;span class="nb"&gt;set&lt;/span&gt; registry https://registry.npmmirror.com 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="阶段二安装deepseek-harenss"&gt;&lt;a href="#%e9%98%b6%e6%ae%b5%e4%ba%8c%e5%ae%89%e8%a3%85deepseek-harenss" class="header-anchor"&gt;&lt;/a&gt;阶段二,安装deepseek harenss
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx @deepseek-ai/dsh web
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之后你就获得了开箱即用的deepseek harness了。&lt;/p&gt;
&lt;h2 id="杂谈"&gt;&lt;a href="#%e6%9d%82%e8%b0%88" class="header-anchor"&gt;&lt;/a&gt;杂谈
&lt;/h2&gt;&lt;p&gt;自从openclaw的热门后腾讯对qq机器人就像是开智了一样，对的官方机器人放宽了，野生机器人的路封死了(规范运行上必不可少的一环)，推动了qq机器人的发展，早期的qq群机器人凭借正则表达式替换的服务也是能在群里安稳的用上了，是继数年前用野生框架时候那样的便捷。&lt;/p&gt;
&lt;p&gt;deepseek harness与koishi同cordis驱动，其实为deepseek harness(cordis)做上协议适配器就可以当qq机器人跑。期待自建qq机器人在规范制度指引下在未来几年繁荣昌盛。&lt;/p&gt;
&lt;h2 id="参考链接"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e9%93%be%e6%8e%a5" class="header-anchor"&gt;&lt;/a&gt;参考链接
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/deepseek-ai/deepseek-harness" target="_blank" rel="noopener"
 &gt;deepseek harness的github仓库&lt;/a&gt;
&lt;a class="link" href="https://github.com/cordiverse/cordis" target="_blank" rel="noopener"
 &gt;cordis的github仓库&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Docker 使用指南：镜像、容器与 Dockerfile</title><link>https://ignvex.github.io/p/docker-%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97%E9%95%9C%E5%83%8F%E5%AE%B9%E5%99%A8%E4%B8%8E-dockerfile/</link><pubDate>Fri, 14 Aug 2026 21:06:32 +0800</pubDate><guid>https://ignvex.github.io/p/docker-%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97%E9%95%9C%E5%83%8F%E5%AE%B9%E5%99%A8%E4%B8%8E-dockerfile/</guid><description>&lt;h2 id="前言"&gt;&lt;a href="#%e5%89%8d%e8%a8%80" class="header-anchor"&gt;&lt;/a&gt;前言
&lt;/h2&gt;&lt;p&gt;docker是一个轻量化且开源的容器引擎。借由Go驱动有着极低性能开销。不过仅支持linux发行版的系统&lt;/p&gt;
&lt;h2 id="安装"&gt;&lt;a href="#%e5%ae%89%e8%a3%85" class="header-anchor"&gt;&lt;/a&gt;安装
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/" target="_blank" rel="noopener"
 &gt;金枪鱼镜像站&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;DOCKER的安装教程非常的多，再加上国外主机的访问速度奇差，这里建议直接用知名金枪鱼镜像站的文档去安装,节约更多的时间在搜索教程和镜像站上。&lt;/p&gt;
&lt;h2 id="使用方法"&gt;&lt;a href="#%e4%bd%bf%e7%94%a8%e6%96%b9%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;使用方法
&lt;/h2&gt;&lt;h3 id="镜像管理"&gt;&lt;a href="#%e9%95%9c%e5%83%8f%e7%ae%a1%e7%90%86" class="header-anchor"&gt;&lt;/a&gt;镜像管理
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker image ls &lt;span class="c1"&gt;# 列出本地所有镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker image rm &lt;span class="o"&gt;{&lt;/span&gt;IMAGE_NAME&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;# 删除本地的某个镜像 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker build &lt;span class="c1"&gt;# 编译docker镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="docker-build"&gt;&lt;a href="#docker-build" class="header-anchor"&gt;&lt;/a&gt;docker build
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;-t为编译的镜像&lt;/li&gt;
&lt;li&gt;-f为指定dockerfile路径&lt;/li&gt;
&lt;li&gt;-no-cache 为不使用缓存构建镜像&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.&lt;/code&gt;当前目录及其子目录被当作上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="进阶操作"&gt;&lt;a href="#%e8%bf%9b%e9%98%b6%e6%93%8d%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;进阶操作
&lt;/h4&gt;&lt;p&gt;使用&lt;code&gt;.dockerignore&lt;/code&gt;排除不必要的文件，减少镜像体积&lt;/p&gt;
&lt;h3 id="容器操作"&gt;&lt;a href="#%e5%ae%b9%e5%99%a8%e6%93%8d%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;容器操作
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run &lt;span class="c1"&gt;# 创建并启动某个容器 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker start &lt;span class="o"&gt;{&lt;/span&gt;IMAGE_NAME&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;# 启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker stop &lt;span class="o"&gt;{&lt;/span&gt;IMAGE_NAME&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;# 停止&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker restart &lt;span class="o"&gt;{&lt;/span&gt;IMAGE_NAME&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;#重启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker attach &lt;span class="o"&gt;{&lt;/span&gt;IMAGE_NAME&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;# 在终端中直接进入容器内 (不推荐)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="c1"&gt;# 在终端中直接进入容器内 (推荐)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker ps &lt;span class="c1"&gt;#查看所有容器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="容器操作补充"&gt;&lt;a href="#%e5%ae%b9%e5%99%a8%e6%93%8d%e4%bd%9c%e8%a1%a5%e5%85%85" class="header-anchor"&gt;&lt;/a&gt;容器操作补充
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;docker restart 可以在docker容器没有运行的情况下直接启动，如果在运行就是重启&lt;/li&gt;
&lt;li&gt;attach 会随着你输入&lt;code&gt;ctrl c&lt;/code&gt;或&lt;code&gt;exit&lt;/code&gt;的同时关闭容器&lt;/li&gt;
&lt;li&gt;exec是你要访问的同一容器的新进程，需要查看你跑服务的进程请使用docker logs&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="docker-run"&gt;&lt;a href="#docker-run" class="header-anchor"&gt;&lt;/a&gt;docker run
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;-d 在后台运行&lt;/li&gt;
&lt;li&gt;&amp;ndash;name指定容器名称&lt;/li&gt;
&lt;li&gt;-p 容器内端口映射到容器外&lt;/li&gt;
&lt;li&gt;-v 主机路径映射到容器内&lt;/li&gt;
&lt;li&gt;-it 打开交互式终端&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="docker-exec"&gt;&lt;a href="#docker-exec" class="header-anchor"&gt;&lt;/a&gt;docker exec
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;-i 允许向容器发送内容(交互)&lt;/li&gt;
&lt;li&gt;-t 分配一个伪终端&lt;/li&gt;
&lt;li&gt;-it &lt;code&gt;-i&lt;/code&gt;和&lt;code&gt;it&lt;/code&gt;的组合(常用)&lt;/li&gt;
&lt;li&gt;-d 在后台运行&lt;/li&gt;
&lt;li&gt;-u 指定用户&lt;/li&gt;
&lt;li&gt;-e 设置环境变量&lt;/li&gt;
&lt;li&gt;-w 指定容器内工作目录&lt;/li&gt;
&lt;li&gt;&amp;ndash;privileged 最高权限模式。等同于直接操作物理机(用之前先确定自己为什么要这么做)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="docker-ps"&gt;&lt;a href="#docker-ps" class="header-anchor"&gt;&lt;/a&gt;docker ps
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;ps -a 查看所有容器&lt;/li&gt;
&lt;li&gt;ps -q 只查看容器id&lt;/li&gt;
&lt;li&gt;ps -s 显示容器大小&lt;/li&gt;
&lt;li&gt;ps -n 显示最后创建的&lt;/li&gt;
&lt;li&gt;ps -f 根据条件过滤容器(ps -f status=exited)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dockerfile-的写法"&gt;&lt;a href="#dockerfile-%e7%9a%84%e5%86%99%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;Dockerfile 的写法
&lt;/h2&gt;&lt;h3 id="基础内容"&gt;&lt;a href="#%e5%9f%ba%e7%a1%80%e5%86%85%e5%ae%b9" class="header-anchor"&gt;&lt;/a&gt;基础内容
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-dockerfile" data-lang="dockerfile"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;{IMAGE_NAME&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;RUN&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;CUSTOM&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://www.runoob.com/docker/docker-container-usage.html" target="_blank" rel="noopener"
 &gt;菜鸟教程&lt;/a&gt;
&lt;a class="link" href="https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html" target="_blank" rel="noopener"
 &gt;廖雪峰的教程&lt;/a&gt;&lt;/p&gt;</description></item><item><title>新域名购置：ignvex.top</title><link>https://ignvex.github.io/p/%E6%96%B0%E5%9F%9F%E5%90%8D%E8%B4%AD%E7%BD%AEignvex.top/</link><pubDate>Tue, 11 Aug 2026 20:40:23 +0800</pubDate><guid>https://ignvex.github.io/p/%E6%96%B0%E5%9F%9F%E5%90%8D%E8%B4%AD%E7%BD%AEignvex.top/</guid><description>&lt;p&gt;起初是想买ignvex.com,遗憾的是早已被人抢注。正好买一个.top后缀的域名当作试验场地，以后准备部署一些实验性的东西。&lt;/p&gt;
&lt;h2 id="todo"&gt;&lt;a href="#todo" class="header-anchor"&gt;&lt;/a&gt;TODO
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;反代一些站点做加速访问&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Welcome</title><link>https://ignvex.github.io/p/welcome/</link><pubDate>Mon, 27 Jul 2026 20:40:31 +0800</pubDate><guid>https://ignvex.github.io/p/welcome/</guid><description>&lt;p&gt;非常欢迎您能来到我的博客。
如果您是我的微信/QQ好友，你可以将这个博客看作更新频率较高的朋友圈，如果需要换友情链接直接私信。
如果您是访客，欢迎您的到来。&lt;/p&gt;</description></item><item><title>LLM 迭代与个人发展关系的预估</title><link>https://ignvex.github.io/p/llm-%E8%BF%AD%E4%BB%A3%E4%B8%8E%E4%B8%AA%E4%BA%BA%E5%8F%91%E5%B1%95%E5%85%B3%E7%B3%BB%E7%9A%84%E9%A2%84%E4%BC%B0/</link><pubDate>Sat, 11 Jul 2026 10:41:35 +0800</pubDate><guid>https://ignvex.github.io/p/llm-%E8%BF%AD%E4%BB%A3%E4%B8%8E%E4%B8%AA%E4%BA%BA%E5%8F%91%E5%B1%95%E5%85%B3%E7%B3%BB%E7%9A%84%E9%A2%84%E4%BC%B0/</guid><description>&lt;h2 id="引言"&gt;&lt;a href="#%e5%bc%95%e8%a8%80" class="header-anchor"&gt;&lt;/a&gt;引言
&lt;/h2&gt;&lt;p&gt;从llm在2024年以对话的形式走入大众视野,到2026年产生了非常广泛的应用场景，llm如今已经融入到一线人员的工作流之中。这足以证明llm的业务能力受到了社会的一定认可。参考资料前置是一个经过深思熟虑的想法，因为充分的资料供读者了解可能比我去把这些稀奇古怪的自我理念都看一遍可能更直接一点。&lt;/p&gt;
&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://mp.weixin.qq.com/s/_UlNQC6kvST1NkwegUDg6g" target="_blank" rel="noopener"
 &gt;Meta大规模裁员后发现llm的提速并不明显&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="参考但是没有用的资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e4%bd%86%e6%98%af%e6%b2%a1%e6%9c%89%e7%94%a8%e7%9a%84%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考但是没有用的资料
&lt;/h3&gt;&lt;p&gt;&lt;a class="link" href="https://www.cnblogs.com/jiujuan/p/18752957" target="_blank" rel="noopener"
 &gt;llm的大致历史&lt;/a&gt;
&lt;a class="link" href="https://mp.weixin.qq.com/s/8D0VcX1pSyQ0S9sfDPXCwg" target="_blank" rel="noopener"
 &gt;Anthropic一天迁移stripe 5000万代码&lt;/a&gt;
&lt;a class="link" href="https://mp.weixin.qq.com/s/RlrC35DkLi0SKcUP_PcInw" target="_blank" rel="noopener"
 &gt;阿里云因安全问题禁用anthropic&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="正文"&gt;&lt;a href="#%e6%ad%a3%e6%96%87" class="header-anchor"&gt;&lt;/a&gt;正文
&lt;/h2&gt;&lt;h3 id="电子老虎机llm真实的效率是变动多大"&gt;&lt;a href="#%e7%94%b5%e5%ad%90%e8%80%81%e8%99%8e%e6%9c%ballm%e7%9c%9f%e5%ae%9e%e7%9a%84%e6%95%88%e7%8e%87%e6%98%af%e5%8f%98%e5%8a%a8%e5%a4%9a%e5%a4%a7" class="header-anchor"&gt;&lt;/a&gt;电子老虎机,llm真实的效率是变动多大
&lt;/h3&gt;&lt;p&gt;众所周知llm是一种概率模型，每一次的回答都会是随机的。可能我问claude opus 4.6 你是谁。他会回答一句我是QWEN3.5。高度的随机性在高连续性的工作任务上是致命的。但我相信所有人用llm的时候都会有llm非常贴合自己的想法，能把自己安排的任务理解非常到位的时候。这就是llm真是效率的波动性，纯概率，我原称之为老虎机&lt;/p&gt;
&lt;h3 id="如何保持llm的真实效率是高效的"&gt;&lt;a href="#%e5%a6%82%e4%bd%95%e4%bf%9d%e6%8c%81llm%e7%9a%84%e7%9c%9f%e5%ae%9e%e6%95%88%e7%8e%87%e6%98%af%e9%ab%98%e6%95%88%e7%9a%84" class="header-anchor"&gt;&lt;/a&gt;如何保持llm的真实效率是高效的
&lt;/h3&gt;&lt;p&gt;这里需要引入了两种全新的概念，博弈论和契约论。这两个概念虽然古董，但仍是让llm保持高效的关键一环。&lt;/p&gt;
&lt;h4 id="博弈论视角经典的正和博弈"&gt;&lt;a href="#%e5%8d%9a%e5%bc%88%e8%ae%ba%e8%a7%86%e8%a7%92%e7%bb%8f%e5%85%b8%e7%9a%84%e6%ad%a3%e5%92%8c%e5%8d%9a%e5%bc%88" class="header-anchor"&gt;&lt;/a&gt;博弈论视角，经典的正和博弈
&lt;/h4&gt;&lt;p&gt;我们需要为llm提供充分的信息,使用手册(skill),调用方法(mcp)和严格的规章制度(宪法)。再由我们调配llm完成我们的任务。llm在对任务的充分理解(我们提供准确且有效的数据)下会凭借llm优秀的能力优秀的完成任务。充足的前置条件虽然占用不少token,但这些token的前期投入的边际效益其实很高。但我觉得不存在个人和llm供应商厂家的纳什均衡&lt;/p&gt;
&lt;h4 id="契约论视角浅显的契约关系"&gt;&lt;a href="#%e5%a5%91%e7%ba%a6%e8%ae%ba%e8%a7%86%e8%a7%92%e6%b5%85%e6%98%be%e7%9a%84%e5%a5%91%e7%ba%a6%e5%85%b3%e7%b3%bb" class="header-anchor"&gt;&lt;/a&gt;契约论视角,浅显的契约关系
&lt;/h4&gt;&lt;p&gt;llm并不是人，与我们没有明确的合同关系，这个视角我认为再合适不过。llm从设计之初就是完全服从于命令者(我们)。那么我们的指令越清晰，越有远见，其边际效益也一定是显而易见的。&lt;/p&gt;
&lt;h2 id="从价值回归的视角看llm究竟值不值得"&gt;&lt;a href="#%e4%bb%8e%e4%bb%b7%e5%80%bc%e5%9b%9e%e5%bd%92%e7%9a%84%e8%a7%86%e8%a7%92%e7%9c%8bllm%e7%a9%b6%e7%ab%9f%e5%80%bc%e4%b8%8d%e5%80%bc%e5%be%97" class="header-anchor"&gt;&lt;/a&gt;从价值回归的视角看，llm究竟值不值得
&lt;/h2&gt;&lt;p&gt;抛开剂量谈毒性，抛开实践看对错。结果是显而易见的。只有满足了自己需求的同时成本也是相对合理的，合规且安全，实现了自己的目标，其实足够了。过分的完美主义只会为接下来困难重重。&lt;/p&gt;</description></item><item><title>balenaEtcher：优秀的系统刷写工具</title><link>https://ignvex.github.io/p/balenaetcher%E4%BC%98%E7%A7%80%E7%9A%84%E7%B3%BB%E7%BB%9F%E5%88%B7%E5%86%99%E5%B7%A5%E5%85%B7/</link><pubDate>Wed, 08 Jul 2026 17:57:38 +0800</pubDate><guid>https://ignvex.github.io/p/balenaetcher%E4%BC%98%E7%A7%80%E7%9A%84%E7%B3%BB%E7%BB%9F%E5%88%B7%E5%86%99%E5%B7%A5%E5%85%B7/</guid><description>&lt;img src="https://ignvex.github.io/p/balenaetcher%E4%BC%98%E7%A7%80%E7%9A%84%E7%B3%BB%E7%BB%9F%E5%88%B7%E5%86%99%E5%B7%A5%E5%85%B7/background.png" alt="Featured image of post balenaEtcher：优秀的系统刷写工具" /&gt;&lt;p&gt;BalenaEtcher是开源且跨平台的USB镜像烧录工具,支持windows,linux和macos，具备良好兼容性的同时还有着美观易于上手的操作界面。&lt;/p&gt;</description></item><item><title>2026好书推荐</title><link>https://ignvex.github.io/p/2026%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/</link><pubDate>Tue, 07 Jul 2026 23:09:13 +0800</pubDate><guid>https://ignvex.github.io/p/2026%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/</guid><description>&lt;p&gt;这个博客的定位其实是高频率的微信朋友圈和qq空间的替代。我觉得总在朋友圈发并没有什么意义，在博客上发又刚刚好。好书推荐我打算作为一个年度文章，总结一下上一年读的书。书籍推荐对我来说是一个慎重的决策，一本书可能在刚读的时候觉得不错，但是时间长了却又变得一般。经过我为期约一年的阅读，能拿出来的推荐其实少之又少，但我相信，这些推荐的书绝对值得去读，一定程度上也符合我的价值观的。&lt;/p&gt;
&lt;h2 id="三联生活周刊"&gt;&lt;a href="#%e4%b8%89%e8%81%94%e7%94%9f%e6%b4%bb%e5%91%a8%e5%88%8a" class="header-anchor"&gt;&lt;/a&gt;三联生活周刊
&lt;/h2&gt;&lt;p&gt;极为优秀的消息评价，有着曾对3次经济危机的前瞻提醒。文章涉及到的观点更为客观立体，更好的去了解某一时期发生过的事。&lt;/p&gt;
&lt;h2 id="南方日报"&gt;&lt;a href="#%e5%8d%97%e6%96%b9%e6%97%a5%e6%8a%a5" class="header-anchor"&gt;&lt;/a&gt;南方日报
&lt;/h2&gt;&lt;p&gt;与三联生活周刊不同之处在于南方日报有对少数群体的关注，能够以一种更客观、专业的视角去了解更多的群体。&lt;/p&gt;
&lt;h2 id="中国基层的运行逻辑"&gt;&lt;a href="#%e4%b8%ad%e5%9b%bd%e5%9f%ba%e5%b1%82%e7%9a%84%e8%bf%90%e8%a1%8c%e9%80%bb%e8%be%91" class="header-anchor"&gt;&lt;/a&gt;中国基层的运行逻辑
&lt;/h2&gt;&lt;p&gt;从基层出发，通过历史与数据,了解基层,理解国情。&lt;/p&gt;
&lt;h2 id="朝闻道"&gt;&lt;a href="#%e6%9c%9d%e9%97%bb%e9%81%93" class="header-anchor"&gt;&lt;/a&gt;朝闻道
&lt;/h2&gt;&lt;p&gt;刘慈欣的科幻小说集，时隔20年的科幻内容还是很推荐看。&lt;/p&gt;
&lt;h2 id="基地"&gt;&lt;a href="#%e5%9f%ba%e5%9c%b0" class="header-anchor"&gt;&lt;/a&gt;基地
&lt;/h2&gt;&lt;p&gt;阿西莫夫的小说,这部作品的发布时间特别早,大概是在建国前(1942)。小说的内容是以心理学为主题，数十载风雨也不会消磨其科幻作品的本质。&lt;/p&gt;</description></item><item><title>大人，时代变了（Bilibili 版）</title><link>https://ignvex.github.io/p/bilibili-the-end-of-era/</link><pubDate>Mon, 06 Jul 2026 18:20:22 +0800</pubDate><guid>https://ignvex.github.io/p/bilibili-the-end-of-era/</guid><description>&lt;h2 id="引言"&gt;&lt;a href="#%e5%bc%95%e8%a8%80" class="header-anchor"&gt;&lt;/a&gt;引言
&lt;/h2&gt;&lt;p&gt;看着&lt;code&gt;bilibili&lt;/code&gt;的三方生态在2026年这一年里一步步走进历史，总觉得应该记点什么。以杂谈的形式，将事情的起因、经过和我的想法稍作整理，写了这样一篇尽量真实、客观的文章&lt;/p&gt;
&lt;h2 id="起因"&gt;&lt;a href="#%e8%b5%b7%e5%9b%a0" class="header-anchor"&gt;&lt;/a&gt;起因
&lt;/h2&gt;&lt;p&gt;github上逆向&lt;code&gt;bilibili&lt;/code&gt;平台的仓库，以及存在多年的&lt;code&gt;BiliRoaming&lt;/code&gt;（解决区域限制、海外用户看番的刚需），都遭到了律师函。在此之前，与bilibili合作过的律所已经起诉过多个规模较小、但不是源头、被人跳脸到官方的第三方&lt;code&gt;bilibili&lt;/code&gt;app仓库。而频率最高的就是2026年——这一年，律师函落到了许多仓库头上。&lt;/p&gt;
&lt;h2 id="结果"&gt;&lt;a href="#%e7%bb%93%e6%9e%9c" class="header-anchor"&gt;&lt;/a&gt;结果
&lt;/h2&gt;&lt;p&gt;结果并没有值得说的。每一个开源项目的管理者与律师函的斡旋，不过都是先稍作配合，然后在律师函一步又一步的要求下，彻底移除侵权内容。毕竟律师函的下一步就是起诉，理不在开源项目这边，所以只能配合。&lt;/p&gt;
&lt;h2 id="略作反思"&gt;&lt;a href="#%e7%95%a5%e4%bd%9c%e5%8f%8d%e6%80%9d" class="header-anchor"&gt;&lt;/a&gt;略作反思
&lt;/h2&gt;&lt;p&gt;事情到此告一段落，剩下的是几个值得想想的问题。&lt;/p&gt;
&lt;p&gt;早年的bilibili对于api被逆向的问题是睁一只眼闭一只眼，只会律师函一些被端到官方群/评论区下的仓库。而&lt;code&gt;api-collect&lt;/code&gt;、&lt;code&gt;BiliRoaming&lt;/code&gt;这种大仓库，只会派人向仓库管理者问一下和黑产有没有关联（如果是黑产的话还会开源？）。&lt;/p&gt;
&lt;p&gt;不难看出，b站的商业化发展到今天，对影音作品版权的处理上充满弹性，又急需广告业务（近几年广告内容多了不少，投入广告的入口也大幅增加）。这些绕过广告的服务，只会让b站对三方生态的容忍度每况愈下。&lt;/p&gt;
&lt;p&gt;大人，时代变了。&lt;/p&gt;
&lt;h2 id="涉事仓库"&gt;&lt;a href="#%e6%b6%89%e4%ba%8b%e4%bb%93%e5%ba%93" class="header-anchor"&gt;&lt;/a&gt;涉事仓库
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/socialsisteryi/bilibili-api-collect" target="_blank" rel="noopener"
 &gt;Bilibili-api-collect&lt;/a&gt; —— [已归档]&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/yujincheng08/BiliRoaming" target="_blank" rel="noopener"
 &gt;Bili漫游&lt;/a&gt; —— [已归档]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="写在最后"&gt;&lt;a href="#%e5%86%99%e5%9c%a8%e6%9c%80%e5%90%8e" class="header-anchor"&gt;&lt;/a&gt;写在最后
&lt;/h2&gt;&lt;p&gt;这些项目里的代码不会消失——fork还在，镜像还在。但「在github上光明正大地维护一个bilibili逆向项目」这件事，大概真的要成为历史了。&lt;/p&gt;
&lt;p&gt;以后的人可能很难理解，曾经有一个时期，看视频是可以不看广告、不锁区的。&lt;/p&gt;</description></item><item><title>SDKMAN!：Java 版本管理器</title><link>https://ignvex.github.io/p/sdkmanjava-%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86%E5%99%A8/</link><pubDate>Sun, 05 Jul 2026 23:44:18 +0800</pubDate><guid>https://ignvex.github.io/p/sdkmanjava-%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86%E5%99%A8/</guid><description>&lt;img src="https://ignvex.github.io/p/sdkmanjava-%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86%E5%99%A8/background.svg" alt="Featured image of post SDKMAN!：Java 版本管理器" /&gt;&lt;p&gt;SDKMAN! 是一款轻量级的软件开发工具包管理器，专为 Java、Kotlin、Gradle、Maven 等 JVM 生态工具设计。基于 Shell 脚本实现，安装零依赖，响应飞快，不侵入系统环境。无论是频繁切换 JDK 版本，还是尝鲜最新构建工具，一行命令即可搞定。&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://sdkman.io/" target="_blank" rel="noopener"
 &gt;项目地址&lt;/a&gt; | &lt;a class="link" href="https://sdkman.io/usage" target="_blank" rel="noopener"
 &gt;使用文档&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="快速安装"&gt;&lt;a href="#%e5%bf%ab%e9%80%9f%e5%ae%89%e8%a3%85" class="header-anchor"&gt;&lt;/a&gt;快速安装
&lt;/h2&gt;&lt;h3 id="windows"&gt;&lt;a href="#windows" class="header-anchor"&gt;&lt;/a&gt;Windows
&lt;/h3&gt;&lt;p&gt;Scoop&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop install sdkman
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.sdkman/bin/sdkman-init.sh&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="debian--ubuntu--deepin--macos--manjaro--arch"&gt;&lt;a href="#debian--ubuntu--deepin--macos--manjaro--arch" class="header-anchor"&gt;&lt;/a&gt;Debian / Ubuntu / Deepin / macOS / Manjaro / Arch
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install curl -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -s &lt;span class="s2"&gt;&amp;#34;https://get.sdkman.io&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.sdkman/bin/sdkman-init.sh&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="manjaro--arch"&gt;&lt;a href="#manjaro--arch" class="header-anchor"&gt;&lt;/a&gt;Manjaro / Arch
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S sdkman
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="使用"&gt;&lt;a href="#%e4%bd%bf%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;使用
&lt;/h2&gt;&lt;p&gt;打开终端，输入 &lt;code&gt;sdk&lt;/code&gt; 唤起。以下是常用指令&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;查看可用的 SDK 版本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdk list java # 所有可安装的 Java 发行版及版本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdk list gradle # 查看 Gradle 可用版本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;安装指定版本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdk install java 17.0.10-tem # 安装 Eclipse Temurin 的 JDK 17
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdk install maven 3.9.6 # 安装 Maven 3.9.6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdk install kotlin # 不指定版本则安装最新稳定版
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;版本切换
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdk use java 11.0.22-tem # 当前终端临时切换为 JDK 11
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdk default java 21.0.2-tem # 设置 JDK 21 为新终端默认版本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;查看当前版本与已安装列表
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdk current java # 当前使用的 Java 版本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdk current # 查看所有被管理的 SDK 当前版本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;卸载不需要的版本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdk uninstall gradle 7.2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="支持的部分-sdk-列表"&gt;&lt;a href="#%e6%94%af%e6%8c%81%e7%9a%84%e9%83%a8%e5%88%86-sdk-%e5%88%97%e8%a1%a8" class="header-anchor"&gt;&lt;/a&gt;支持的部分 SDK 列表
&lt;/h2&gt;&lt;p&gt;Java (Adoptium, Corretto, GraalVM, Zulu…) · Kotlin · Groovy · Scala&lt;br&gt;
Gradle · Maven · sbt · Ant · Spring Boot CLI · Micronaut · Quarkus · VisualVM&lt;br&gt;
MongoDB Shell · Hadoop · Spark · 更多可通过 &lt;code&gt;sdk list&lt;/code&gt; 查找&lt;/p&gt;</description></item><item><title>java发行版选择指南</title><link>https://ignvex.github.io/p/java%E5%8F%91%E8%A1%8C%E7%89%88%E9%80%89%E6%8B%A9%E6%8C%87%E5%8D%97/</link><pubDate>Sun, 05 Jul 2026 23:02:10 +0800</pubDate><guid>https://ignvex.github.io/p/java%E5%8F%91%E8%A1%8C%E7%89%88%E9%80%89%E6%8B%A9%E6%8C%87%E5%8D%97/</guid><description>&lt;img src="https://ignvex.github.io/p/java%E5%8F%91%E8%A1%8C%E7%89%88%E9%80%89%E6%8B%A9%E6%8C%87%E5%8D%97/background.png" alt="Featured image of post java发行版选择指南" /&gt;&lt;p&gt;java是非常优秀的编程语言，是21世纪极为优秀的语言。但java在2006年将本体与hotspot开源并形成openjdk后，java发行版的选择也不只官方独有，可选择的内容多了，但如何选择适合自己需求的发行版，便成为了一个重要的议题，即本文主题。&lt;/p&gt;
&lt;h2 id="java的概念明晰"&gt;&lt;a href="#java%e7%9a%84%e6%a6%82%e5%bf%b5%e6%98%8e%e6%99%b0" class="header-anchor"&gt;&lt;/a&gt;java的概念明晰
&lt;/h2&gt;&lt;p&gt;jvm, jre, jdk, java fx 之间是包含关系。jvm 是执行程序的虚拟机，是核心；jre 是基于 jvm 的标准库，相当于运行环境；jdk 在 jre 基础上提供面向开发者的工具，算是开发工具。但 jvm 并不是最小的分发单位，jre 才是。&lt;/p&gt;
&lt;p&gt;java fx 的地位比较特殊，它是一套独立的图形界面方案，定位跟前面三个完全不同。简单说，它就是专门用来画桌面窗口、按钮、动画这些东西的库，靠显卡来做渲染，界面效果比传统 swing 强一截。很多 java 桌面的项目依赖它，像是 hmcl 这类启动器。问题是它从来不属于标准库的一部分，现在常见的 jdk 发行里也不会预装。开源社区维护的版本叫 openjfx，关系和 openjdk 差不多。如果用到的程序需要它，要么自己下载 openjfx 配上去，要么换一个已经把 java fx 打包好的 jdk 发行版。&lt;/p&gt;
&lt;h2 id="java版本选择"&gt;&lt;a href="#java%e7%89%88%e6%9c%ac%e9%80%89%e6%8b%a9" class="header-anchor"&gt;&lt;/a&gt;java版本选择
&lt;/h2&gt;&lt;p&gt;在使用场景中,java版本求稳不求新。原理很好解释,举个例子即可，java8(lts)官方扩展支持将持续到2030年12月，但同为lts的java17仅支持到2029年9月，从安全性等角度出发，这会是最有说服力的示例。&lt;/p&gt;
&lt;p&gt;以minecraft举例&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;minecraft版本&lt;/th&gt;
					&lt;th&gt;java要求&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&amp;lt;= 1.12.2&lt;/td&gt;
					&lt;td&gt;仅java 8&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&amp;gt;= 1.16&lt;/td&gt;
					&lt;td&gt;java 17+&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&amp;gt;= 1.21&lt;/td&gt;
					&lt;td&gt;java 21+&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="java-版本号选择"&gt;&lt;a href="#java-%e7%89%88%e6%9c%ac%e5%8f%b7%e9%80%89%e6%8b%a9" class="header-anchor"&gt;&lt;/a&gt;java 版本号选择
&lt;/h2&gt;&lt;p&gt;同版本下字数越大越好，越新越好。&lt;/p&gt;
&lt;p&gt;java更新的主要内容&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;关键安全更新（CPU） - 经过测试的安全性更新&lt;/li&gt;
&lt;li&gt;补丁集更新（PSU） - 功能性更新/调整&lt;/li&gt;
&lt;li&gt;紧急更新 - 通常为修补前两类更新缺陷的紧急更新&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="java主要发行版"&gt;&lt;a href="#java%e4%b8%bb%e8%a6%81%e5%8f%91%e8%a1%8c%e7%89%88" class="header-anchor"&gt;&lt;/a&gt;java主要发行版
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;发行版名称&lt;/th&gt;
					&lt;th&gt;发行商&lt;/th&gt;
					&lt;th&gt;描述&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Azul Zing (Azul Platform Prime)&lt;/td&gt;
					&lt;td&gt;Azul Systems&lt;/td&gt;
					&lt;td&gt;优势: 自研 Falcon JIT 编译器, 无停顿 C4 垃圾收集器, 基于 JIT 缓存与 profile 引导的 ReadyNow 冷启动加速, 综合性能和停顿表现优异, 适合大型整合包服务器; 劣势: 仅支持 Linux; 商业产品, 仅 &amp;ldquo;评估和开发用途&amp;rdquo; 免费, 商业化服务器使用有法律风险; 需额外 JVM 参数才能发挥全部功能.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Azul Zulu (Azul Platform Core)&lt;/td&gt;
					&lt;td&gt;Azul Systems&lt;/td&gt;
					&lt;td&gt;优势: 免费生产就绪级 OpenJDK, 更新稳定, 提供 JavaFX 选项和可视化 .msi 安装包, 安装/更新体验友好, 是官方 Java 的极佳替代; 劣势: 源代码不直接公开, 本质仍是标准 OpenJDK 构建, 性能与非定制版差异不大.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Oracle GraalVM (旧有 Java 发行版)&lt;/td&gt;
					&lt;td&gt;Oracle&lt;/td&gt;
					&lt;td&gt;优势: 曾支持 AOT 原生编译, 多语言运行时, 冷启动快, 内存占用低; 劣势: Oracle 宣布停止发布新的 GraalVM for JDK 版本, 已 &amp;ldquo;坠机&amp;rdquo;, 核心 Java 优化已或即将回归上游 OpenJDK, 不再适合作为主流 JDK 发行版持续选用.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Adoptium Temurin&lt;/td&gt;
					&lt;td&gt;Eclipse Adoptium (原 AdoptOpenJDK)&lt;/td&gt;
					&lt;td&gt;优势: Eclipse 顶级项目, 最标准的 OpenJDK 构建, 社区驱动的生产就绪级, 多项认证, 曾是首选, 跨平台且完全开源免费; 劣势: 与上游几乎一致, 所谓性能提升通常不显著, 无特殊定制优化.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Amazon Corretto&lt;/td&gt;
					&lt;td&gt;Amazon&lt;/td&gt;
					&lt;td&gt;优势: 声称综合性能与安全性提升, 使用自研密码学库强化加密, 免费, 长期更新; 劣势: 除密码学相关外, 性能与上游 OpenJDK 无显著差异, 亮点不多.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Alibaba Dragonwell&lt;/td&gt;
					&lt;td&gt;阿里巴巴&lt;/td&gt;
					&lt;td&gt;优势: 基于 AJDK 的优化移植, 开源, 对大规模 Java 应用可能有一定增益; 劣势: 社区国际化程度有限, 更新节奏依赖阿里内部, 非定制场景下提升不明显.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;IBM Semeru Runtime&lt;/td&gt;
					&lt;td&gt;IBM&lt;/td&gt;
					&lt;td&gt;优势: 即 Eclipse OpenJ9, 内存占用相比 HotSpot 更优, 适合内存受限场景; 劣势: 性能往往不如 HotSpot, 且属于高度自定义的 JDK, 一般游戏服务器可能收益不大.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Microsoft Build of OpenJDK&lt;/td&gt;
					&lt;td&gt;Microsoft&lt;/td&gt;
					&lt;td&gt;优势: 我的世界启动器默认下载的高版本 Java, 猜测为避免版权纠纷; 劣势: 无突出亮点, 本质上为标准 OpenJDK 构建, 只是提供方不同.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="言归正传"&gt;&lt;a href="#%e8%a8%80%e5%bd%92%e6%ad%a3%e4%bc%a0" class="header-anchor"&gt;&lt;/a&gt;言归正传
&lt;/h2&gt;&lt;p&gt;推荐 Azul Zing的发行版。&lt;/p&gt;
&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.geeksforgeeks.org/java/differences-jdk-jre-jvm/" target="_blank" rel="noopener"
 &gt;geeksforgeeks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>便捷安装证书的magisk模块</title><link>https://ignvex.github.io/p/%E4%BE%BF%E6%8D%B7%E5%AE%89%E8%A3%85%E8%AF%81%E4%B9%A6%E7%9A%84magisk%E6%A8%A1%E5%9D%97/</link><pubDate>Sat, 04 Jul 2026 22:28:43 +0800</pubDate><guid>https://ignvex.github.io/p/%E4%BE%BF%E6%8D%B7%E5%AE%89%E8%A3%85%E8%AF%81%E4%B9%A6%E7%9A%84magisk%E6%A8%A1%E5%9D%97/</guid><description>&lt;p&gt;直到今日才把以前写的文章搬到博客上来确实有些晚了，不过magisk和kernelsu是通用的，换到ksu也能用，这篇文章还是值得发的&lt;/p&gt;
&lt;p&gt;由于 reqable 客户端提供的安装证书模块未能使抓包正常工作，作者放弃使用 reqable 提供的模块并选择了另一优秀的 Magisk 模块&lt;a class="link" href="https://github.com/ys1231/MoveCertificate" target="_blank" rel="noopener"
 &gt;Move Certificates&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="使用方法"&gt;&lt;a href="#%e4%bd%bf%e7%94%a8%e6%96%b9%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;使用方法
&lt;/h1&gt;&lt;p&gt;由于文档的介绍简单明了，这里只进行简要概括。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下载模块&lt;/li&gt;
&lt;li&gt;刷入模块&lt;/li&gt;
&lt;li&gt;将证书放入 &lt;code&gt;/data/local/tmp/cert/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;重启，使模块生效&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注: 如果 reqable 用户选择保存证书，证书会自动保存到&lt;code&gt;/sdcard/download/reqable/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;参考资料:
&lt;a class="link" href="https://github.com/ys1231/MoveCertificate" target="_blank" rel="noopener"
 &gt;https://github.com/ys1231/MoveCertificate&lt;/a&gt;
&lt;a class="link" href="https://reqable.com/zh-CN/docs/getting-started/installation/" target="_blank" rel="noopener"
 &gt;https://reqable.com/zh-CN/docs/getting-started/installation/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>yazi-优秀的支持多系统的文件管理器</title><link>https://ignvex.github.io/p/yazi-%E4%BC%98%E7%A7%80%E7%9A%84%E6%94%AF%E6%8C%81%E5%A4%9A%E7%B3%BB%E7%BB%9F%E7%9A%84%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E5%99%A8/</link><pubDate>Sat, 04 Jul 2026 20:48:39 +0800</pubDate><guid>https://ignvex.github.io/p/yazi-%E4%BC%98%E7%A7%80%E7%9A%84%E6%94%AF%E6%8C%81%E5%A4%9A%E7%B3%BB%E7%BB%9F%E7%9A%84%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E5%99%A8/</guid><description>&lt;img src="https://ignvex.github.io/p/yazi-%E4%BC%98%E7%A7%80%E7%9A%84%E6%94%AF%E6%8C%81%E5%A4%9A%E7%B3%BB%E7%BB%9F%E7%9A%84%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E5%99%A8/Image.png" alt="Featured image of post yazi-优秀的支持多系统的文件管理器" /&gt;&lt;p&gt;yazi 是基于rust编写的文件管理器，响应速度非常优秀，使用体验非常好，功能强大,&lt;a class="link" href="https://github.com/sxyazi/yazi" target="_blank" rel="noopener"
 &gt;项目地址&lt;/a&gt;,&lt;a class="link" href="https://yazi-rs.github.io" target="_blank" rel="noopener"
 &gt;项目文档&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="快速安装方法"&gt;&lt;a href="#%e5%bf%ab%e9%80%9f%e5%ae%89%e8%a3%85%e6%96%b9%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;快速安装方法
&lt;/h2&gt;&lt;h3 id="windows"&gt;&lt;a href="#windows" class="header-anchor"&gt;&lt;/a&gt;Windows
&lt;/h3&gt;&lt;h4 id="scoop"&gt;&lt;a href="#scoop" class="header-anchor"&gt;&lt;/a&gt;Scoop
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop install yazi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop install ffmpeg 7zip jq poppler fd ripgrep fzf zoxide imagemagick
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="winget"&gt;&lt;a href="#winget" class="header-anchor"&gt;&lt;/a&gt;WinGet
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install sxyazi.yazi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install Gyan.FFmpeg 7zip.7zip jqlang.jq sharkdp.fd BurntSushi.ripgrep.MSVC junegunn.fzf ajeetdsouza.zoxide ImageMagick.ImageMagick
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="debian--ubuntu--deepin-"&gt;&lt;a href="#debian--ubuntu--deepin-" class="header-anchor"&gt;&lt;/a&gt;Debian &amp;amp; Ubuntu &amp;amp; Deepin &amp;hellip;
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install ffmpeg 7zip jq poppler-utils fd-find ripgrep fzf zoxide imagemagick
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="manjaro--arch-"&gt;&lt;a href="#manjaro--arch-" class="header-anchor"&gt;&lt;/a&gt;Manjaro &amp;amp; arch &amp;hellip;
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S yazi ffmpeg p7zip jq poppler fd ripgrep fzf zoxide imagemagick
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="使用"&gt;&lt;a href="#%e4%bd%bf%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;使用
&lt;/h3&gt;&lt;p&gt;输入yazi唤起&lt;/p&gt;</description></item><item><title>ssh欢迎信息修改</title><link>https://ignvex.github.io/p/ssh%E6%AC%A2%E8%BF%8E%E4%BF%A1%E6%81%AF%E4%BF%AE%E6%94%B9/</link><pubDate>Sat, 04 Jul 2026 20:47:43 +0800</pubDate><guid>https://ignvex.github.io/p/ssh%E6%AC%A2%E8%BF%8E%E4%BF%A1%E6%81%AF%E4%BF%AE%E6%94%B9/</guid><description>&lt;p&gt;众所周知，每次通过SSH连接到服务器都会看到一段欢迎信息，这个欢迎信息是可以完全自定义的。常见的方式有两种：直接修改静态的 &lt;code&gt;/etc/motd&lt;/code&gt; 文件，或者利用 Ubuntu/Debian 的 &lt;code&gt;update-motd&lt;/code&gt; 动态脚本。&lt;/p&gt;
&lt;h2 id="1-修改静态欢迎信息-etcmotd"&gt;&lt;a href="#1-%e4%bf%ae%e6%94%b9%e9%9d%99%e6%80%81%e6%ac%a2%e8%bf%8e%e4%bf%a1%e6%81%af-etcmotd" class="header-anchor"&gt;&lt;/a&gt;1. 修改静态欢迎信息 /etc/motd
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/motd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;写入你想显示的内容，比如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Welcome to my server!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;保存后重新登录，就能看到新内容了。&lt;/p&gt;
&lt;h2 id="2-ubuntudebian动态motd"&gt;&lt;a href="#2-ubuntudebian%e5%8a%a8%e6%80%81motd" class="header-anchor"&gt;&lt;/a&gt;2. Ubuntu/Debian：动态MOTD
&lt;/h2&gt;&lt;p&gt;如果你用的是 Ubuntu/Debian，登录时会看到一堆系统提示（版本信息、可更新包数量、livepatch 等），这些不是来自 &lt;code&gt;/etc/motd&lt;/code&gt;，而是来自 &lt;code&gt;/etc/update-motd.d/&lt;/code&gt; 目录下的脚本，由 PAM 在登录时动态执行生成。&lt;/p&gt;
&lt;p&gt;查看目录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls /etc/update-motd.d/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常见的脚本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;00-header&lt;/code&gt;：显示系统版本信息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;10-help-text&lt;/code&gt;：显示帮助提示&lt;/li&gt;
&lt;li&gt;&lt;code&gt;90-updates-available&lt;/code&gt;：显示可更新软件包数量&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;想让登录界面只剩你自己的内容，把脚本的可执行权限去掉即可：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod -x /etc/update-motd.d/*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后再按第1步修改 &lt;code&gt;/etc/motd&lt;/code&gt;，重新登录就只会显示你写的内容了。&lt;/p&gt;
&lt;h2 id="3-用figlet生成ascii艺术字"&gt;&lt;a href="#3-%e7%94%a8figlet%e7%94%9f%e6%88%90ascii%e8%89%ba%e6%9c%af%e5%ad%97" class="header-anchor"&gt;&lt;/a&gt;3. 用figlet生成ASCII艺术字
&lt;/h2&gt;&lt;p&gt;觉得纯文本太素？可以用 &lt;code&gt;figlet&lt;/code&gt; 生成 ASCII 艺术字：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install figlet
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;生成并写入 &lt;code&gt;/etc/motd&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;figlet -f slant &lt;span class="s2"&gt;&amp;#34;Welcome to my server&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/motd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;-f&lt;/code&gt; 指定字体，可以换成 &lt;code&gt;big&lt;/code&gt;、&lt;code&gt;standard&lt;/code&gt; 等，重新登录看看效果。&lt;/p&gt;
&lt;h2 id="4-修改后没生效怎么办"&gt;&lt;a href="#4-%e4%bf%ae%e6%94%b9%e5%90%8e%e6%b2%a1%e7%94%9f%e6%95%88%e6%80%8e%e4%b9%88%e5%8a%9e" class="header-anchor"&gt;&lt;/a&gt;4. 修改后没生效怎么办
&lt;/h2&gt;&lt;p&gt;如果改了 &lt;code&gt;/etc/motd&lt;/code&gt; 登录却不显示，检查 sshd 配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo grep -i printmotd /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认是 &lt;code&gt;PrintMotd yes&lt;/code&gt;，如果是 &lt;code&gt;no&lt;/code&gt;，改成 &lt;code&gt;yes&lt;/code&gt; 后重启 sshd：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart sshd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="5-恢复默认"&gt;&lt;a href="#5-%e6%81%a2%e5%a4%8d%e9%bb%98%e8%ae%a4" class="header-anchor"&gt;&lt;/a&gt;5. 恢复默认
&lt;/h2&gt;&lt;p&gt;不想要自定义内容了，清空 &lt;code&gt;/etc/motd&lt;/code&gt; 并恢复动态脚本权限即可：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo truncate -s &lt;span class="m"&gt;0&lt;/span&gt; /etc/motd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod +x /etc/update-motd.d/*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>在linux上使用onedrive</title><link>https://ignvex.github.io/p/%E5%9C%A8linux%E4%B8%8A%E4%BD%BF%E7%94%A8onedrive/</link><pubDate>Sat, 04 Jul 2026 20:39:34 +0800</pubDate><guid>https://ignvex.github.io/p/%E5%9C%A8linux%E4%B8%8A%E4%BD%BF%E7%94%A8onedrive/</guid><description>&lt;p&gt;onedrive官方并没有提供linux平台的支持。但在github上有一个可以使用onedrive的&lt;a class="link" href="https://github.com/abraunegg/onedrive" target="_blank" rel="noopener"
 &gt;仓库&lt;/a&gt;。配置起来相对简单，还能让我的Microsoft 365发挥他的价值。&lt;/p&gt;
&lt;h2 id="1-安装"&gt;&lt;a href="#1-%e5%ae%89%e8%a3%85" class="header-anchor"&gt;&lt;/a&gt;1. 安装
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install onedrive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="2-登录"&gt;&lt;a href="#2-%e7%99%bb%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;2. 登录
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;onedrive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;根据提示进行操作&lt;/p&gt;
&lt;h2 id="3-配置onedrive"&gt;&lt;a href="#3-%e9%85%8d%e7%bd%aeonedrive" class="header-anchor"&gt;&lt;/a&gt;3. 配置onedrive
&lt;/h2&gt;&lt;p&gt;根据&lt;a class="link" href="https://github.com/abraunegg/onedrive/blob/master/docs/usage.md" target="_blank" rel="noopener"
 &gt;文档&lt;/a&gt;进一步的配置&lt;/p&gt;
&lt;p&gt;文档中的部分内容
获取配置文件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://raw.githubusercontent.com/abraunegg/onedrive/master/config -O ~/.config/onedrive/config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;非文档内容
systemd&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Unit]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Description=OneDrive Client for Linux
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;After=network.target NetworkManager.service systemd-networkd.service iwd.service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Service]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Type=simple
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;LimitNPROC=500
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;LimitNOFILE=1000000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Restart=always
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ExecStartPre=/usr/bin/sleep 1s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ExecStart=/usr/local/bin/onedrive --sync
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Install]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WantedBy=multi-user.target
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要代理可以增加以下内容&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Environment=&amp;#34;HTTP_PROXY=http://your.proxy.server:port&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Environment=&amp;#34;HTTPS_PROXY=http://your.proxy.server:port&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Hello World</title><link>https://ignvex.github.io/p/hello-world/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid>https://ignvex.github.io/p/hello-world/</guid><description>&lt;img src="https://ignvex.github.io/p/hello-world/cover.jpg" alt="Featured image of post Hello World" /&gt;&lt;h1 id="你好世界"&gt;&lt;a href="#%e4%bd%a0%e5%a5%bd%e4%b8%96%e7%95%8c" class="header-anchor"&gt;&lt;/a&gt;你好，世界!
&lt;/h1&gt;&lt;p&gt;欢迎来到我的博客&lt;/p&gt;</description></item><item><title>Linux 基础工具代理配置（wget / curl / git）</title><link>https://ignvex.github.io/p/linux-%E5%9F%BA%E7%A1%80%E5%B7%A5%E5%85%B7%E4%BB%A3%E7%90%86%E9%85%8D%E7%BD%AEwget-/-curl-/-git/</link><pubDate>Fri, 04 Jul 2025 20:43:30 +0800</pubDate><guid>https://ignvex.github.io/p/linux-%E5%9F%BA%E7%A1%80%E5%B7%A5%E5%85%B7%E4%BB%A3%E7%90%86%E9%85%8D%E7%BD%AEwget-/-curl-/-git/</guid><description>&lt;h2 id="wget"&gt;&lt;a href="#wget" class="header-anchor"&gt;&lt;/a&gt;Wget
&lt;/h2&gt;&lt;p&gt;目标路径 &lt;code&gt;/etc/wgetrc&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https_proxy = http://127.0.0.1:7890/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http_proxy = http://127.0.0.1:7890/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ftp_proxy = http://127.0.0.1:7890/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;use_proxy = on
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="git"&gt;&lt;a href="#git" class="header-anchor"&gt;&lt;/a&gt;Git
&lt;/h2&gt;&lt;p&gt;命令行执行&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global http.proxy http://127.0.0.1:1080
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global https.proxy http://127.0.0.1:1080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;取消代理&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global --unset http.proxy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global --unset https.proxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="curl"&gt;&lt;a href="#curl" class="header-anchor"&gt;&lt;/a&gt;Curl
&lt;/h2&gt;&lt;p&gt;目标路径 &lt;code&gt;~/.curlrc&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;proxy=&amp;#34;http://127.0.0.1:7890&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>LG V60手机玩机日志</title><link>https://ignvex.github.io/p/lg-v60%E6%89%8B%E6%9C%BA%E7%8E%A9%E6%9C%BA%E6%97%A5%E5%BF%97/</link><pubDate>Thu, 01 May 2025 22:33:28 +0800</pubDate><guid>https://ignvex.github.io/p/lg-v60%E6%89%8B%E6%9C%BA%E7%8E%A9%E6%9C%BA%E6%97%A5%E5%BF%97/</guid><description>&lt;h2 id="前言"&gt;&lt;a href="#%e5%89%8d%e8%a8%80" class="header-anchor"&gt;&lt;/a&gt;前言
&lt;/h2&gt;&lt;p&gt;现在已经是 2025 年 5 月份。距离 lgv60 发售已经过了 5 年时间。LG 的原生系统以优异的续航博得我的喜爱，随着手机发售多年系统早已停止维护，安全性可想而知。所以选择使用近几个月编译的系统&lt;/p&gt;
&lt;h2 id="方案"&gt;&lt;a href="#%e6%96%b9%e6%a1%88" class="header-anchor"&gt;&lt;/a&gt;方案
&lt;/h2&gt;&lt;h3 id="环境准备"&gt;&lt;a href="#%e7%8e%af%e5%a2%83%e5%87%86%e5%a4%87" class="header-anchor"&gt;&lt;/a&gt;环境准备
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Rising OS 6.2 源自 xda 论坛&lt;/li&gt;
&lt;li&gt;dualsim 可选&lt;/li&gt;
&lt;li&gt;drmv2 修复系统环境&lt;/li&gt;
&lt;li&gt;magisk环境&lt;/li&gt;
&lt;li&gt;Zygisk Next magisk模块&lt;/li&gt;
&lt;li&gt;救砖模块 非常重要&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="性能调优-magisk模块lsposed模块"&gt;&lt;a href="#%e6%80%a7%e8%83%bd%e8%b0%83%e4%bc%98-magisk%e6%a8%a1%e5%9d%97lsposed%e6%a8%a1%e5%9d%97" class="header-anchor"&gt;&lt;/a&gt;性能调优 Magisk模块+Lsposed模块
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uperf Game Turbo&lt;/li&gt;
&lt;li&gt;Asoul&lt;/li&gt;
&lt;li&gt;Scene 独立应用 &amp;amp; lsposed模块 &amp;amp; 可安装magisk模块&lt;/li&gt;
&lt;li&gt;Thanox&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="隐藏环境正常体系"&gt;&lt;a href="#%e9%9a%90%e8%97%8f%e7%8e%af%e5%a2%83%e6%ad%a3%e5%b8%b8%e4%bd%93%e7%b3%bb" class="header-anchor"&gt;&lt;/a&gt;隐藏环境正常体系
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Shamiko&lt;/li&gt;
&lt;li&gt;Trickystore&lt;/li&gt;
&lt;li&gt;Play integrity Fix Fork&lt;/li&gt;
&lt;li&gt;Shamiko白名单开关&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://xdaforums.com/t/rom-aosp-15-23022025-core-gapps-stable-signed-community-timelm-risingos-6-2-boundless.4720313/" target="_blank" rel="noopener"
 &gt;xda论坛发布页 (Rising OS 6.2 &amp;amp; recovery.img &amp;amp; drmv2.img)&lt;/a&gt;
&lt;a class="link" href="https://github.com/RisingOS-OSS/android" target="_blank" rel="noopener"
 &gt;Rising OS repo&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Pixel8玩机日志</title><link>https://ignvex.github.io/p/pixel8%E7%8E%A9%E6%9C%BA%E6%97%A5%E5%BF%97/</link><pubDate>Fri, 04 Apr 2025 10:59:44 +0800</pubDate><guid>https://ignvex.github.io/p/pixel8%E7%8E%A9%E6%9C%BA%E6%97%A5%E5%BF%97/</guid><description>&lt;h1 id="pixel-8-玩机日志"&gt;&lt;a href="#pixel-8-%e7%8e%a9%e6%9c%ba%e6%97%a5%e5%bf%97" class="header-anchor"&gt;&lt;/a&gt;Pixel 8 玩机日志
&lt;/h1&gt;&lt;p&gt;前情提要，玩机前需要备份重要数据，数据无价。&lt;/p&gt;
&lt;h2 id="1获得权限"&gt;&lt;a href="#1%e8%8e%b7%e5%be%97%e6%9d%83%e9%99%90" class="header-anchor"&gt;&lt;/a&gt;1.获得权限
&lt;/h2&gt;&lt;p&gt;打开设置 -&amp;gt; 连按5次系统版本号 -&amp;gt; 解锁开发者模式 -&amp;gt; 进入开发者选项 -&amp;gt; 打开adb 调试&lt;/p&gt;
&lt;h2 id="2-安装magisk--修补init_boot"&gt;&lt;a href="#2-%e5%ae%89%e8%a3%85magisk--%e4%bf%ae%e8%a1%a5init_boot" class="header-anchor"&gt;&lt;/a&gt;2. 安装magisk &amp;amp; 修补&lt;code&gt;init_boot&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;在&lt;code&gt;github&lt;/code&gt;的release中下载最新的&lt;code&gt;app-relase.apk&lt;/code&gt;，修补准备好的init_boot.img&lt;/p&gt;
&lt;p&gt;注: init_boot.img 可从官方线刷脚本获得&lt;/p&gt;
&lt;h2 id="3-进入fastboot--解oem锁bl锁"&gt;&lt;a href="#3-%e8%bf%9b%e5%85%a5fastboot--%e8%a7%a3oem%e9%94%81bl%e9%94%81" class="header-anchor"&gt;&lt;/a&gt;3. 进入fastboot &amp;amp; 解oem锁(bl锁)
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb reboot fastboot 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重启后进入fastboot后&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fastboot oem unlock
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;警告: 打开oem锁后会清除所有用户数据,解锁需要先退出有关账号
注: 如需回锁 &lt;code&gt;fastboot oem lock&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="4-刷入修补镜像"&gt;&lt;a href="#4-%e5%88%b7%e5%85%a5%e4%bf%ae%e8%a1%a5%e9%95%9c%e5%83%8f" class="header-anchor"&gt;&lt;/a&gt;4. 刷入修补镜像
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fastboot flash init_boot ***.img
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="5-配置软件"&gt;&lt;a href="#5-%e9%85%8d%e7%bd%ae%e8%bd%af%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;5. 配置软件
&lt;/h2&gt;&lt;p&gt;不在着重讲述，各取所需&lt;/p&gt;</description></item></channel></rss>