<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/feed.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>猫猫博客</title><description>你好,明天</description><link>https://catcat.blog/</link><language>zh_CN</language><image><url>https://catcat.blog//favicon/avatar-540.avif</url><title>猫猫博客</title><link>https://catcat.blog/</link></image><follow_challenge><feedId>57338290732168192</feedId><userId>57337421484469248</userId></follow_challenge><item><title>猫猫Emby服食用指南</title><link>https://catcat.blog/catcat-emby/</link><guid isPermaLink="true">https://catcat.blog/catcat-emby/</guid><description>做这个媒体库初衷是：给朋友分享一些BDRIP方便观看，不会因此影响画质，后来经过大佬的介绍，学习了很多相关的知识。</description><pubDate>Tue, 06 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;截图一览&lt;/h2&gt;
&lt;p&gt;目前所存储的媒体内容： &lt;a href=&quot;https://wall.sakiko.de&quot;&gt;喵影坞&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-5.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-5.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image-5.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-4.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-4.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image-4.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-1.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-1.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image-1.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-2.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-2.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image-2.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-3.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-3.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image-3.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;h3&gt;资源说明：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;里面全是BDRIP和Blu-ray Remux，以画质为最优先级。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;每次改动调整和新增，都会记录在更新日志中。新番默认直接使用ANI抓取，没有任何优化。&lt;/strong&gt;（&lt;strong&gt;现已更新洗板字幕组功能，洗版成功会有通知）&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;收集的内容受个人喜好主观因素影响。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;看我心情更新，催也没用，爬。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;绝大多数视频的字幕都做了字体封装和压缩（为了解决字幕组部分特效字幕）。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;新番采取全自动化入库洗版，如果BD发布会删除&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;压制组会选择较好较全的，多为：VCB-Studio和Moozzi2。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;sp和扫图是默认删除的，因为sp小剧场对画质要求不高，我也不是很感冒，可b站自行观看，又全还带字幕。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;内含成人内容和里番，请自行小心公开播放。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;禁止泄露服务器地址和共享账户！！！！！&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;禁止用浏览器观看，让我发现，直接ban。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;食用指南&lt;/h2&gt;
&lt;h3&gt;小作文（该节点负载已满不再开放）&lt;/h3&gt;
&lt;h4&gt;申请条件：&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;动画爱好者，Bangumi动画观看记录超过&lt;strong&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/strong&gt;00部，有BD收藏可加分，并推荐一部你最喜欢的动画&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Galgame爱好者，Bangumi中Galgame推完超过20部，有实体收藏可加分，并推荐一部你最喜欢的Galgame&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;漫画爱好者，Bangumi漫画观看记录超过50本，有实体收藏可加分，并推荐一部你最喜欢的漫画&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;1、2、3条件任意一个完成即可。&lt;/strong&gt;（&lt;strong&gt;当然包括不限于以上这些，其他方式也可以，软门槛&lt;/strong&gt;）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;写一句话那种流水线的别来了，我没时间看&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/catcat_chat_bot&quot;&gt;申请地址&lt;/a&gt;（直接发上述你满足的条件，不要再问怎么进，问的直接拉黑）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默认采用TG进行管理，开设账户等操作请自行前往TG。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;付费观看 （介于很多人留言，所以单独新增节点重新开放）&lt;/h3&gt;
&lt;h4&gt;购买&lt;/h4&gt;
&lt;p&gt;前往爱发电：&lt;a href=&quot;https://afdian.com/a/Yuri-NagaSaki&quot;&gt;爱发电地址&lt;/a&gt;
可以看到一个10元（续期码） 一个30元 （注册码）&lt;/p&gt;
&lt;p&gt;如果出现问题，请联系&lt;a href=&quot;https://t.me/catcat_chat_bot&quot;&gt;机器人&lt;/a&gt;说明问题，也可以留言&lt;/p&gt;
&lt;p&gt;:::caution
根据embyboss的代码，当30天到期后，不完成续费，会导致账户前5天（第31天直到第35天）处于封存状态，当第36天未完成续费，账户会进行自动删除
:::&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312152213808.avif&quot; alt=&quot;image-20260312152213560&quot; /&gt;&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;berry8838/Sakura_embyboss&quot;}&lt;/p&gt;
&lt;p&gt;发电后你都会得到一个优惠码，前往&lt;a href=&quot;https://t.me/catcat_emby&quot;&gt;TG群聊&lt;/a&gt; 输入 /start@catcat_embybot 找机器人开户&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308135718117.avif&quot; alt=&quot;image-20260308135718033&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击使用注册码&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308135806716.avif&quot; alt=&quot;image-20260308135806140&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308135839962.avif&quot; alt=&quot;image-20260308135839826&quot; /&gt;&lt;/p&gt;
&lt;p&gt;注册成功
&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308135928649.avif&quot; alt=&quot;image-20260308135928504&quot; /&gt;&lt;/p&gt;
&lt;p&gt;获得账户密码&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308140004071.avif&quot; alt=&quot;image-20260308140003935&quot; /&gt;&lt;/p&gt;
&lt;p&gt;续期码的使用同理，但是是从10元那里获取的。这里不再重复了。&lt;/p&gt;
&lt;h2&gt;播放指南&lt;/h2&gt;
&lt;p&gt;这边Windows只推荐使用&lt;strong&gt;小秘Emby&lt;/strong&gt;进行播放，安卓请使用&lt;strong&gt;Yamby&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;mac和ios用户建议使用&lt;strong&gt;Infuse和SenPlayer&lt;/strong&gt;进行播放。&lt;/p&gt;
&lt;p&gt;具体可参见 &lt;a href=&quot;https://catcat.blog/emby-server.html&quot;&gt;Emby客户端推荐&lt;/a&gt;。&lt;strong&gt;这里仅仅只教学Win端，因为其他客户端属于傻瓜都会的点点点。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Windows&lt;/h3&gt;
&lt;h4&gt;1.小秘客户端下载&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;地址：&lt;a href=&quot;https://www.alipan.com/s/S2MXxS3L1gY&quot;&gt;https://www.alipan.com/s/5ULuWmg3fjh&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;2.🧭 开启弹幕&lt;/h4&gt;
&lt;p&gt;此为旧版弹幕插件，目前社区开发了更好的弹幕插件，也可以尝试&lt;/p&gt;
&lt;p&gt;记事本编辑 &lt;strong&gt;你的安装目录/Emby Theater/electronapp/www/index.html&lt;/strong&gt;，添加以下内容后保存即可&lt;/p&gt;
&lt;p&gt;安装原理不变，但是需要下载js到本地路径，下载ede.js文件，保存到对应目录，编辑index.html文件&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/chen3861229/dd-danmaku&quot;&gt;chen3861229/dd-danmaku&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-17.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-17.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image-17.jpg&quot; alt=&quot;文件夹和文件目录视图，包含插件和HTML文件。&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// &amp;lt;script src=&quot;ede.js&quot; charset=&quot;utf-8&quot; defer&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;ede.js&quot; charset=&quot;utf-8&quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## 旧方案
&amp;lt;script type=&quot;text/javascript&quot; src=&quot;https://danmaku.movie.kg/ext.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;https://danmaku.movie.kg/ext.css&quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-7.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-7.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image-7.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;h4&gt;🌟 集成 Anime4K&lt;/h4&gt;
&lt;p&gt;讲第一步里下载的Anime-4K文件夹解压到 &lt;code&gt;%appdata%&lt;/code&gt; 目录下&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-8.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-8.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image-8.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;播放 1080p 及以下分辨率非 HDR 视频时自动开启(一般新番都会自动开启)&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-9.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-9.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image-9.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;如果客户端版本比较新，需要修改下列设置，否则 Anime4K 可能没有效果&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-10.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/08/image-10.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/08/image-10.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;到此，你就可以开始愉快的欣赏番剧了。😋&lt;/p&gt;
</content:encoded><category>category:Emby</category><category>tag:Emby</category></item><item><title>Netcup 注册免税入坑指南</title><link>https://catcat.blog/netcup-signup/</link><guid isPermaLink="true">https://catcat.blog/netcup-signup/</guid><description>带你全面掌握Netcup注册免税：准备英文账单、领取并兑换优惠券、下单选机房与合约周期解析，详细避坑指南助你低价拿下高性能VPS，远离合同与位置附加费陷阱。</description><pubDate>Wed, 15 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Netcup介绍&lt;/h2&gt;
&lt;p&gt;Netcup是一家总部位于德国的服务器提供商,成立于1998年，拥有德国&lt;strong&gt;纽伦堡和维也纳&lt;/strong&gt;两大机房。目前运营域名注册,VDS,VPS,ARM VPS,杜甫,块存储等。因为机器性能优秀，带宽大，流量足常常被国内玩家用于PT场景。Netcup连续多年荣获欧洲最喜爱的网络托管商，他们非常在乎口碑，服务也非常好。但是由于欧洲德国人古板的守旧合同，购买时候的坑点不少。&lt;/p&gt;
&lt;h2&gt;注册准备&lt;/h2&gt;
&lt;p&gt;一份英文的账单。（可以是和其他欧洲VPS厂家的账单，但必须和你netcup的注册信息一样）&lt;/p&gt;
&lt;h3&gt;注册流程&lt;/h3&gt;
&lt;p&gt;打开官网：&lt;a href=&quot;https://www.netcup.eu/&quot;&gt;https://www.netcup.eu/&lt;/a&gt;（英文）&lt;a href=&quot;https://www.netcup.eu/&quot;&gt;https://www.netcup.eu/&lt;/a&gt;（德语）&lt;/p&gt;
&lt;h3&gt;获取优惠券&lt;/h3&gt;
&lt;p&gt;打开网址：&lt;a href=&quot;https://www.netcup-sonderangebote.de&quot;&gt;https://www.netcup-sonderangebote.de&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;输入你的邮箱获取订阅&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-6.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-6.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-6.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;成功后你的邮箱将会收到两份邮件，一份是通知你的订阅他们的促销销毁，一份是给你的5欧代金券&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-7.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-7.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-7.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-8.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-8.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-8.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;兑换优惠券：&lt;a href=&quot;https://www.netcup.eu/bestellen/gutschein_einloesen.php&quot;&gt;https://www.netcup.eu/bestellen/gutschein_einloesen.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-5.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-5.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-5.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;找个订单（建议先看一下&lt;strong&gt;NetCup 机器价格说明&lt;/strong&gt;）加入购物车，例如购买 &lt;a href=&quot;https://www.netcup.eu/vserver/&quot;&gt;RS 1000 G11&lt;/a&gt;的VDS系列。&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-4.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-4.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-4.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;点击Order now,会跳转至下方的界面。&lt;/p&gt;
&lt;p&gt;请选择你需要订阅的周期，在Contract period处&lt;/p&gt;
&lt;p&gt;解释一下：订购的时间越久，获得的折扣越大。所有12个月订购和1个月单独订购的价格是不一样的。&lt;/p&gt;
&lt;p&gt;12个月免税前 每个月的价格是9.81欧元，单独订购一个月的价格是11.77欧元。&lt;/p&gt;
&lt;p&gt;如果订购的是9.87那个，你必须要完成至少一年的付费，不管你是用还是不用，都必须要付费，无法取消。德国人严格遵守合同，如果你没有完成12个月的订单，有可能会律师函。不重视合约的行为，会导致国人名声越来越差，只会导致后面人越来越难注册，也会对中国买家设置更高门槛。&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-9.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-9.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-9.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;下方可以进行你所需要的机房&lt;/p&gt;
&lt;p&gt;无偏好的意思将根据实际可用容量托管在两个位置之一，随机一个机房。注意选择无偏好后不能更改机房位置。如果有自己偏好的话，德国机房需要额外增加&lt;strong&gt;1.51欧元&lt;/strong&gt;，维也纳机房需要额外增加&lt;strong&gt;0.86欧元&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;官方对于指定机房偏贵的解释是：如果选择“无偏好”，我们可以优化产能扩张，并传递由此产生的成本优势。简单点理解就是根据实际产能，优化订单的位置，产能多的机房会优先给无偏好的。&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-10.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-10.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-10.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;确认无误后，可以点击下方的加入购物车，进入结算界面&lt;/p&gt;
&lt;p&gt;如果上面你已经兑换了代金券的话，这里购物车也会一并出现。如果没有的话可以同样在下面进行代金券的兑换。这边不再过多赘述。&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-11.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-11.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-11.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-12.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-12.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-12.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;点击下方，继续订购。来到了Netcup的注册界面&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-13.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-13.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-13.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;填写你的相关信息&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意：最好和你上面准备的订单信息一致，地址也需要翻译成英文，地区可以选China&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-14.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-14.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-14.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;点击最下面保存地址，然后继续确认订单&lt;/p&gt;
&lt;p&gt;会出现订单的详细信息，可以清晰看到使用了5欧优惠券，月付的RS1000订单。下面两个都要选上同意。&lt;/p&gt;
&lt;p&gt;点击继续订单，出现如下图所示文字代表订单已经订购完成，等待审核。&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-16.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-16.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-16.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;h2&gt;账户验证&lt;/h2&gt;
&lt;p&gt;如果完成了上述步骤，下面开始账户的身份验证。一般来说德国人会在你工作日时间的时候下午上班。&lt;/p&gt;
&lt;p&gt;你的邮箱会收到一份邮件，如下图&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-17.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-17.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-17.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;请向我们发送以下信息，以便我们处理您的订单：

1. 拉丁字母地址证明（最好是英语或德语翻译）
例如：
- 煤气费、水费、电费、互联网提供商、移动电话提供商的账单
-来自您银行的文件，其中包括您的地址和姓名。
请注意，我们不接受订单确认和发货跟踪。

2. 如果您不需要增值税豁免，也请告知我们。在这种情况下，我们可以更快地处理您的订单。
如果您没有提及这一点，我们会将您的请求传递给我们的会计部门，该部门将检查是否免税。请注意，这可能需要几个工作日。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;直接回复这份邮件，将准备好的订单作为附件发送过去。&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-18.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-18.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-18.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;发送之后就可以美滋滋的等待免税成功的通知和账户包含CCP的通知&lt;/p&gt;
&lt;p&gt;里面会含有你的账户，密码。类似这样的&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-19.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-19.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-19.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;同时会收到他们的恭喜信息和账单说明&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-20.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-20.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-20.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;这封代表你的免税已经完成，需要你完全支付，人工确认你的订单&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-22.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-22.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-22.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-21.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-21.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-21.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;你可以用上面的CCP进行登陆支付啦&lt;/p&gt;
&lt;h2&gt;CCP支付订单&lt;/h2&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://www.customercontrolpanel.de/&quot;&gt;https://www.customercontrolpanel.de&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-23.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-23.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-23.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;一般来说，网址的右上角会有你未付的订单，你需要完成付款&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-24.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-24.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-24.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;付款完成等待Netcup官方确认后，你会收到一封名字叫 &lt;strong&gt;Access data for SCP&lt;/strong&gt; 的邮件。&lt;/p&gt;
&lt;p&gt;里面包含了你的SCP的账户密码，用于管理Netcup给你的服务器&lt;/p&gt;
&lt;p&gt;地址是：&lt;a href=&quot;https://www.servercontrolpanel.de/SCP/&quot;&gt;https://www.servercontrolpanel.de/SCP/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-25.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-25.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-25.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;第二份邮件是你的服务器信息，名字叫 &lt;strong&gt;A Server has been created&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;里面会给到你的IP地址，root密码等信息。&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-26.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-26.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-26.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;这样，你就完成了Netcup免税,注册，购买的一条龙服务器啦。&lt;/p&gt;
&lt;h2&gt;取消Netcup机器&lt;/h2&gt;
&lt;p&gt;先登陆CCP，地址：&lt;a href=&quot;https://www.customercontrolpanel.de/&quot;&gt;https://www.customercontrolpanel.de&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;点击左边的 Products&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-27.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-27.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-27.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-28.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-28.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-28.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;点击机器前面的放大镜，点击&lt;strong&gt;Cancellation&lt;/strong&gt;，选择里面的&lt;strong&gt;Cancel product&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;特别说明：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;netcup针对使用中的主机VPS取消，要在下一次续约时间前至少31天提交，也就是至少提前一个月提交取消申请。假如你购买的是计费周期按月计算的VPS，你只想用一个月，不想续约，那么就要在你购买付款后的第一天就要在后台点取消产品，否则将进入下个计费周期，至少订购2个月。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当然不知道具体取消时间也很简单，后台管理界面Cancellation里显示了当前时间终止合同后的生效时间。上面显示的时间就是你现在终止后，你的VPS最后使用的到期时间。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-29.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-29.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-29.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;h2&gt;Netcup机器价格说明&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;以RS1000为例：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;月付价格是11,76 €，免税后是9.88欧/月，每月付一次款，如果不想用了，要提前31天在后台取消。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;由于新帐号都会使用5欧的优惠券，因此免税后，第一个月的帐单是5.67欧，后面每月是9.88欧。最短时间可以在第一次付款后，机器出现第一时间后台取消，因为要提前31天，可能是就这一个月就结束了，也有可能是下一个月结束。如果是下个月结束，2个月成本就是5.67+9.88欧。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;年合约价格是9.81欧/月，免税后是8.24欧/月，每半年付一次款，至少要用1年。正常半年价格是8.24*6=49.44欧。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果帐号是使用了3个月免费券的，因此前半年价格是8.24*3=24.72欧，后面半年是49.44欧。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;像很多人说的活动款，大部分是硬盘翻倍的，如RS1000 G9.5 SE，此类就是年合约，半年付，免税后的半年付价格是8.24*6=49.44欧，每半年付，至少用一年！没有任何其它优惠。不能使用任何券。相对于普通版RS1000贵了3个月费用，在高速流量120T的情况下，其实就单刷PT来说普通版年付性价比会更高。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;如何确认Netcup机器的订单周期&lt;/h2&gt;
&lt;p&gt;可以点击机器的订单界面，&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contract period代表合同期，意味着必须付款这12个月&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Billing period 代表结算周期，代表费用多久缴一次&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;figure&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-30.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-30.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-30.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;figcaption&amp;gt;&lt;/p&gt;
&lt;p&gt;RS1000&lt;/p&gt;
&lt;p&gt;&amp;lt;/figcaption&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/figure&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;figure&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-31.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-31.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-31.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;figcaption&amp;gt;&lt;/p&gt;
&lt;p&gt;ARM G11&lt;/p&gt;
&lt;p&gt;&amp;lt;/figcaption&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/figure&amp;gt;&lt;/p&gt;
&lt;h2&gt;如何确认你的账户是否免税成功&lt;/h2&gt;
&lt;p&gt;先登陆CCP，地址：&lt;a href=&quot;https://www.customercontrolpanel.de/&quot;&gt;https://www.customercontrolpanel.de&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;点击左侧，&lt;strong&gt;Master Data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-34.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2024/05/image-34.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2024/05/image-34.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;h2&gt;如何PUSH机器&lt;/h2&gt;
&lt;p&gt;和上面取消机器在同一个地方，会生成一个转移码，这里不再过多赘述。&lt;/p&gt;
&lt;p&gt;netcup对于后台有帐单未付的情况下，是无法接收其它人的机器的，因此对于新帐号注册时的订单，你需要付款或者发邮件取消，但一般也会回复你15天后会自动消失。因此一般情况下就是要么将未付的订单付款，要么等15天自动取消即可。&lt;/p&gt;
&lt;h2&gt;带宽流量规则&lt;/h2&gt;
&lt;p&gt;普通VPS流量为80TB，1G的带宽，超过80TB后会宽带会限制在100M带宽，可以无限流量，没有任何额外费用。&lt;/p&gt;
&lt;p&gt;Root-Server系列是不限流量的，根服务器2.5G带宽，每个VPS保证至少1G可用带宽。为了保证其它客户的公平性，在同时满足以下条件时会被限制在200M带宽使用。&lt;/p&gt;
&lt;p&gt;1、一个月内超过120TB流量。&lt;/p&gt;
&lt;p&gt;2、 超过60分钟的时间连续使用超过1Gbit/s的带宽。&lt;/p&gt;
&lt;p&gt;上述2个条件，第一个很好理解，第二个估计部分人会觉得绕口，这里简单描述一下具体情况：就是你的VPS在一个小时内的流量超过了128M/s*3600s=460800M=460G，就是说只要保证一小时流量不超过460G，就可以一直以2.5G带宽运行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;新款Root Server G11最新流量规则是：如果过去24小时内流量超过3TB，则会临时限制为300Mbps。一旦条件不再适用，限制就会取消&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Netcup优惠活动时间&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;黑色星期五(11月下旬)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;圣诞节/元旦(12月下旬至1月初)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;春季特卖(3-4月)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;生日周年庆(5-6月份)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;夏季特卖(7-8月)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;NetCup 优惠券&lt;/h2&gt;
&lt;h3&gt;5欧优惠券&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;36nc17454213600
36nc17454213601
36nc17454213602
36nc17454213603
36nc17454213604
36nc17454213605
36nc17454213606
36nc17454213607
36nc17454213608
36nc17454213609

&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;VPS 1000 G11&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;4095nc17454214330
4095nc17454214331
4095nc17454214332
4095nc17454214333
4095nc17454214334
4095nc17454214335
4095nc17454214336
4095nc17454214337
4095nc17454214338
4095nc17454214339
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;RS 1000 优惠券&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;4096nc17454210800
4096nc17454210801
4096nc17454210802
4096nc17454210803
4096nc17454210804
4096nc17454210805
4096nc17454210806
4096nc17454210807
4096nc17454210808
4096nc17454210809
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;RS 2000 优惠券&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;4098nc17454214730
4098nc17454214731
4098nc17454214732
4098nc17454214733
4098nc17454214734
4098nc17454214735
4098nc17454214736
4098nc17454214737
4098nc17454214738
4098nc17454214739
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><category>category:教程</category><category>tag:德国</category><category>tag:Netcup</category></item><item><title>什么值得买-持续更新ing（VPS推荐）</title><link>https://catcat.blog/vps-recommend/</link><guid isPermaLink="true">https://catcat.blog/vps-recommend/</guid><description>持续更新的高性价比VPS推荐清单，拒绝超兽商家，仅收录本人长期持有与实测。覆盖Hetzner、Crunchbits、Liteserver、Netcup等，附详尽测评与购买链接，适合建站、项目与性能需求人群参考。</description><pubDate>Wed, 05 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;经常有朋友会问我 &quot;什么 VPS 适合建站、跑项目&quot;、&quot;什么 VPS 适合用来科学上网&quot;、&quot;什么 VPS 适合离线下载，PT下载&quot; 之类的问题。于是准备写一篇我使用的VPS（什么值得买推荐）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;PS:这里不会出现CloudCone,Racknerd等超兽大王商家的推荐，以下均目前本人所持，长期使用的商家。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;项目,建站,性能需求型推荐&lt;/h2&gt;
&lt;h3&gt;1.Hetzner&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;俗称欧洲阿里云，性能钢炮。Hetzner 拥有数十万台服务器，是欧洲最大的数据中心运营商之一。自 1997 年成立以来，Hetzner 一直为私人和企业客户提供强大的托管产品和可靠的 IT 基础设施。通过结合其在创新技术、有吸引力的价格、专家支持和灵活的客户服务方面的优势，Hetzner 在德国和欧洲内外扩大了市场。Hetzner 是一家德国公司，在纽伦堡和法尔肯施泰因（均位于德国）和芬兰赫尔辛基拥有并运营着自己的高科技数据中心，最近又在美国弗吉尼亚州阿什本增设了一个新机房。一共有四个数据中心：德国 2 个，芬兰 1 个，美国 1 个。Hetzner 家的 VPS 和独服价格实惠，性能稳定，NVMe SSD，10Gbp 带宽，支持信用卡、Paypal 付款。就是到国内网络比较慢。AMD EPYC 处理器的 VDS 套餐性能可以。2024年还升级了旧的 CX产品线，价格同ARM系列持平。非常适合一些小业务需求。2024年 8 月更新，新上的新加坡地区，性价比较差。&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;相关测试&lt;/h4&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hetzner-dedicated-benchmark.html&quot;&gt;Hetzner-Dedicated-VDS-EPYC-9654&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hetzner-us-cpx11.html&quot;&gt;Hetzner-Shared vCPU-VPS-X86&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hetzner-arm-x86-compare.html&quot;&gt;Hetzner-Shared vCPU-VPS-ARM&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hetzner-intel-i7-7700-benchmark.html&quot;&gt;Hetzner-Dedicated server&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hetzner-sg-vds.html&quot;&gt;Hetzner 新加坡 VDS 测评&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;picture&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2023/07/image.avif&quot; type=&quot;image/avif&quot;&amp;gt;
&amp;lt;source srcset=&quot;https://s3.catcat.blog/images/2023/07/image.webp&quot; type=&quot;image/webp&quot;&amp;gt;
&amp;lt;img src=&quot;https://s3.catcat.blog/images/2023/07/image.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/p&gt;
&lt;h4&gt;购买链接&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;官网地址：&lt;a href=&quot;https://hetzner.cloud/?ref=5WVbNP94ckFR&quot;&gt;Hetzner 官网&lt;/a&gt;（使用该链接首次注册或者购买机器，可以得到 20 欧的试用金（有效期一个月），可以试用各种型号的 VPS）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2025年社区20欧信用代码：HCC25-L4ET82&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;2.Crunchbits&lt;/h3&gt;
&lt;p&gt;一家 2021 年 11 月 30 日成立的美国主机商，主营 NVMe KVM VPS、EPYC 高频 NVMe VPS、锐龙 5950X NVMe KVM VPS、大硬盘存储、VDS锐龙 7950X 、GPU 显卡服务器和独立服务器，数据中心位于美国 爱达荷州。最近在Low促销，生意不错，荣获 2023 最受推荐的供应商。机器稳定性不错，已有一台年兽近 360 天运行，2024年初的时候有年兽套餐，性价比极高，4.5G内存配125G 硬盘跑一些监控，小日志什么的非常合适。（目前年兽套餐已经无法循环计费，商家给出了升级版的迁移方案。）&lt;/p&gt;
&lt;h4&gt;相关测试&lt;/h4&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/crunchbits.html&quot;&gt;Crunchbits-5950X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/crunchbits-17-vds.html&quot;&gt;Crunchbits-7950x VDS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/crunchbits-special.html&quot;&gt;Crunchbits Special&lt;/a&gt;&lt;a href=&quot;http://img.laoda.de/i/2023/02/11/ibby0z-2.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;购买链接&lt;/h4&gt;
&lt;p&gt;官网地址：&lt;a href=&quot;https://crunchbits.com/&quot;&gt;Crunchbits 官网&lt;/a&gt;（无AFF）&lt;/p&gt;
&lt;p&gt;促销请关注 &lt;a href=&quot;https://lowendtalk.com/profile/crunchbits&quot;&gt;Crunchbits-lowendtalk&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;3.Liteserver （近两年涨价离谱，非黑五不推荐）&lt;/h3&gt;
&lt;p&gt;2007年的老商家，自有ASN AS60404，主机托管于荷兰Serverius DC1资料中心，有NVMe及HDD可选，均提供1Gbps网络线路，流量会使用完成后会限速10Mbps。Liteserver的性价比很不错，在欧洲的口碑良好。支持NVME和HDD款互相切换，每年黑五都有五折优惠。2023年黑五进货了AMD 四代 9754系列，现在nvme款有两套选择，CPU不同，7763和9754。两款CPU性能差距不是很大，但是9754款存在io限制。建议的慎入。&lt;/p&gt;
&lt;h4&gt;相关测试&lt;/h4&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/liteserver-nl-amd-epyc-genoa-9754-benchmark.html&quot;&gt;LiteServer 荷兰  AMD EPYC™ Genoa 9754 测评&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/liteserver-2023bf.html&quot;&gt;LiteServer 荷兰 AMD Milan 7763 测评&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;购买链接&lt;/h4&gt;
&lt;p&gt;官网地址：&lt;a href=&quot;https://clients.liteserver.nl/aff.php?aff=621&quot;&gt;Liteserver官网&lt;/a&gt;（有AFF）&lt;/p&gt;
&lt;h3&gt;4.Netcup&lt;/h3&gt;
&lt;p&gt;德国和 Hetzner 齐名的供应商，有 ARM，VDS，VPS，域名，块存储等一系列业务。经常做活动，有概率可以拿到很不错的配置，例如 RS2000 硬盘翻倍到 1T 的配置。唯一缺点是德国人对于合同的严谨性，部分机型存在合同期，购买前需谨慎。Netcup连续多年荣获欧洲最喜爱的网络托管商，他们非常在乎口碑，服务也非常好。&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/netcup-rs-1000-g11-at-amd-9634.html&quot;&gt;Netcup RS 1000 G11 维也纳 AMD 9634 测评&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;注册教程：&lt;a href=&quot;https://catcat.blog/netcup-signup.html&quot;&gt;Netcup 注册免税入坑指南&lt;/a&gt;(内含优惠券)&lt;/p&gt;
&lt;h3&gt;5.Alwyzon&lt;/h3&gt;
&lt;p&gt;奥地利云服务商 Alwyzon，Hohl IT e.U.旗下品牌，主要售卖 KVM 虚拟化的 VPS，大硬盘存储 VPS 和独立服务器，在奥地利最大互联网中心 Interxion 园区内运营所有服务器。欧洲对等互联优秀。2024年也更新了性能款的产品线，目前使用的四代EPYC，Raid10 存储。&lt;/p&gt;
&lt;h4&gt;相关测试&lt;/h4&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/alwyzon-at-amd-epyc-genoa-9354p.html&quot;&gt;Alwyzon 维也纳 AMD EPYC™ Genoa 9354P 测评&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;购买链接&lt;/h4&gt;
&lt;p&gt;官网地址：&lt;a href=&quot;https://www.alwyzon.com/en&quot;&gt;Alwyzon 官网&lt;/a&gt;（无AFF）&lt;/p&gt;
&lt;h3&gt;6.Nube.sh&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;快车道老板的品牌，知名上游，很多常见的例如lain 都是他们的下游。虚拟机流量计费为单向计费，只计算流出流量，不记流入。支持按小时计费。也有裸金属租用等，价格从亚太的角度来说挺不错。目前地区已经有了HK,US,SG,JP。机器性能比较不错，Zen 3 EPYC的1 vCPU 加 1GB DDR4内存最低每月2.82美金起。自营 IP 骨干网。控制台也是出钱自研的，非常简洁直观。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://static.nube.sh/html-image/speed-sc/336x280/index.html?lp=https%3A%2F%2Fnube.sh%2Finvite%2F424692390H4EEM&quot; style=&quot;width:336px;height:280px;border:none;&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h4&gt;相关测试&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;测评地址：&lt;a href=&quot;https://catcat.blog/nube-cloud-hk-amd-7713.html&quot;&gt;Nube Cloud 香港 AMD 7713 测评&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;测评地址：&lt;a href=&quot;https://catcat.blog/nube-cloud-hk-amd-7950x.html&quot;&gt;Nube Cloud 香港 AMD 7950X 独立服务器 测评&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;测评地址：&lt;a href=&quot;https://catcat.blog/nube-amd-7663-sjc.html&quot;&gt;Nube Cloud 美国 AMD 7663 测评&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;测评地址：&lt;a href=&quot;https://catcat.blog/nube-cloud-hk-amd-7532-dedicated-server.html&quot;&gt;Nube Cloud 香港 AMD 7532 独立服务器 测评&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;测评地址：&lt;a href=&quot;https://catcat.blog/nube-sh-hk-amd-9950x.html&quot;&gt;Nube.SH 香港 AMD 9950X 裸金属服务器测评&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;购买链接&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;官网地址：&lt;a href=&quot;https://nube.sh/invite/424692390H4EEM&quot;&gt;Nube.sh 官网&lt;/a&gt;（有AFF）&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;7.Evoxt&lt;/h3&gt;
&lt;p&gt;Evoxt，美国商家，成立于2020年，自有ASN 212083。老板是马来西亚华裔，工单支持中文，目前数据中心有12 个节点。机器的 CPU 和 IO 配置都比较可以，有些热门地区托管在比较知名的上游，比如香港日本在 xtom 的数据中心。香港也使用 7950x，其他地区也有像 epyc 四代一样的配置。&lt;/p&gt;
&lt;h4&gt;相关测试&lt;/h4&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/evoxt-amd-epyc-genoa-nl.html&quot;&gt;Evoxt AMD EPYC-Genoa 荷兰测评&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/evoxt-amd-epyc-genoa-pl.html&quot;&gt;Evoxt AMD EPYC-Genoa 波兰测评&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/evoxt-hk-benchmark.html&quot;&gt;Evoxt AMD Ryzen 7950x 香港测评&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;购买链接&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;官网地址：&lt;a href=&quot;https://console.evoxt.com/aff.php?aff=292&quot;&gt;Evoxt 官网&lt;/a&gt;（有AFF）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;优惠码: AFF292-sa （5%折扣）&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;离线下载,存储PT下载型推荐&lt;/h2&gt;
&lt;p&gt;对于下载需求分为两类，短期存储和长期存储。通过 VPS 下载中转然后上传到网盘，不需要长期保存，下载完传到网盘就删除，通常一部电影的大小在 5G 左右，一般 VPS 只有 10-20G 左右磁盘容量，除去系统和软件的占用，最多只能 1-2 个任务同时进行。如果有同时下载更多任务的需求，或者需要长期存储，那就需要考虑更大的空间，或者直接上大盘鸡了。&lt;/p&gt;
&lt;p&gt;PT下载对网络和内存CPU都有一定的考验，流量消耗极大，常规机器刷力堪忧。&lt;/p&gt;
&lt;h3&gt;1.HostBrr （可刷PT，但注意流量，Hetzner转售）&lt;/h3&gt;
&lt;p&gt;Hetzner转售商，性价比极高。价格低廉（平均单价 2.2$/1TB），适合保种，离线下载用。目前开业一年有余，非常好。服务器主要位于&lt;strong&gt;德国/芬兰&lt;/strong&gt;，支持Linux/Windows有储存鸡、高配鸡（7950XD、5950X、3900x、12900k）、独服、虚拟主机、Nat鸡，可以说什么都有。商家工单回复还算快、急的话可以直接去LET私聊商家，态度很好，无客户歧视。退款政策：14天内无条件退款（非常爽快），发工单即可。&lt;/p&gt;
&lt;h4&gt;相关测试&lt;/h4&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hostbrr-amd-9454p.html&quot;&gt;Hostbrr 德国 AMD 9454P 测评&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hostbbr-3t-benchmark.html&quot;&gt;Hostbbr 3T超大存储年付72刀翻倍款vps测评&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hostbbr-nat-benchmark.html&quot;&gt;Hostbbr 存储 NAT VPS 测评&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hostbrr-fi-6t.html&quot;&gt;Hostbrr 芬兰周年庆6T存储优惠 测评&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hostbrr-1-year-celebration-deals-6t.html&quot;&gt;Hostbrr 德国周年庆6T存储优惠 测评&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/hostbrr-de-amd-7950x3d-benchmark.html&quot;&gt;Hostbrr DE AMD 7950X3D 测评&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;购买链接&lt;/h4&gt;
&lt;p&gt;官网地址：&lt;a href=&quot;https://my.hostbrr.com/order/forms/a/MzQw&quot;&gt;HostBrr 官网&lt;/a&gt;（含AFF）&lt;/p&gt;
&lt;p&gt;促销请关注 &lt;a href=&quot;https://lowendtalk.com/profile/labze&quot;&gt;HostBrr-lowendtalk&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;2.BuyVM（PT刷力很烂，离线下载不错，唯一优点抗DMCA）&lt;/h3&gt;
&lt;p&gt;运营了十多年的老牌 VPS 商家，其无限流量 VPS 低至 3.5 美元/月，加上仅需 1.25 美元/月的 256G 附加存储空间，总共只需 4.75 美元/月就可以拥有一个 256G 无限流量大盘鸡。。连续付三个月可以升级为PRO用户，带宽升级到10G无限。由于极具性价比，所以经常处于缺货状态。有需求建议先&lt;strong&gt;注册账号&lt;/strong&gt;。晚上凌晨为补货时间。&lt;/p&gt;
&lt;p&gt;2025年更新：目前已经被 Cloudzy AI 收购。卢森堡地区可能会迁移去瑞士或者荷兰，具体方案还没给出。DMCA抗的效果未知。&lt;/p&gt;
&lt;h4&gt;相关测试&lt;/h4&gt;
&lt;p&gt;测评地址：&lt;a href=&quot;https://catcat.blog/buyvm-lu-5900x.html&quot;&gt;BuyVM-Luxembourg-5900X&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;购买链接&lt;/h4&gt;
&lt;p&gt;官网地址：&lt;a href=&quot;https://my.frantech.ca/aff.php?aff=6455&quot;&gt;BuyVM官网&lt;/a&gt;(有 AFF)&lt;/p&gt;
</content:encoded><category>category:什么值得买</category><category>tag:什么值得买</category></item><item><title>VPS 常用测试脚本</title><link>https://catcat.blog/vps-benchmark/</link><guid isPermaLink="true">https://catcat.blog/vps-benchmark/</guid><description>汇总VPS常用脚本：体检跑分（Yabs/GB5）、融合怪Go、回程与解锁/流媒体测试，以及Docker、Zsh、qBittorrent、代理、Snell等一键安装；另附NVM与国内外加速源，复制即用。</description><pubDate>Tue, 28 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;1.体检脚本&lt;/h2&gt;
&lt;h3&gt;Yabs 脚本&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;GB6 跑分脚本，附带宽测试：
curl -sL yabs.sh | bash

GB6 剔除带宽测试，因为都是国外节点测试，国内跑没多大意义：
curl -sL yabs.sh | bash -s -- -i

GB5 跑分脚本，附带宽测试：
curl -sL yabs.sh | bash -5

GB5 剔除带宽测试：
curl -sL yabs.sh | bash -s -- -i -5

GB5 单向测试脚本
bash &amp;lt;(wget -qO- https://raw.githubusercontent.com/i-abc/GB5/main/gb5-test.sh)

Benchy Yabs 分支测试脚本
curl -Ls benchy.pw | sh

上古老脚本
curl -sL bench.monster | bash -s -- -asia
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;融合怪Go脚本&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;国际用户无加速：

export noninteractive=true &amp;amp;&amp;amp; curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh &amp;amp;&amp;amp; chmod +x goecs.sh &amp;amp;&amp;amp; bash goecs.sh env &amp;amp;&amp;amp; bash goecs.sh install &amp;amp;&amp;amp; goecs

国际/国内使用 CDN 加速：

export noninteractive=true &amp;amp;&amp;amp; curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh &amp;amp;&amp;amp; chmod +x goecs.sh &amp;amp;&amp;amp; bash goecs.sh env &amp;amp;&amp;amp; bash goecs.sh install &amp;amp;&amp;amp; goecs

国内用户使用 CNB 加速：

export noninteractive=true &amp;amp;&amp;amp; curl -L https://cnb.cool/oneclickvirt/ecs/-/git/raw/main/goecs.sh -o goecs.sh &amp;amp;&amp;amp; chmod +x goecs.sh &amp;amp;&amp;amp; bash goecs.sh env &amp;amp;&amp;amp; bash goecs.sh install &amp;amp;&amp;amp; goecs

短链接：

export noninteractive=true &amp;amp;&amp;amp; curl -L https://bash.spiritlhl.net/goecs -o goecs.sh &amp;amp;&amp;amp; chmod +x goecs.sh &amp;amp;&amp;amp; bash goecs.sh env &amp;amp;&amp;amp; bash goecs.sh install &amp;amp;&amp;amp; goecs
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2.回程脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;curl https://raw.githubusercontent.com/ludashi2020/backtrace/main/install.sh -sSf | sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3.一键安装脚本&lt;/h2&gt;
&lt;h3&gt;Docker&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://ba.sh/install-docker | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Zsh&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://ba.sh/install-zsh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;qbittorrent&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://ba.sh/install-qbt | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;TCP内核一键调整&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;wget https://ba.sh/network &amp;amp;&amp;amp; chmod 755 network &amp;amp;&amp;amp; bash network
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代理一键设置脚本&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;wget https://ba.sh/proxy &amp;amp;&amp;amp; chmod 755 proxy &amp;amp;&amp;amp; bash proxy
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Snell 脚本&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -fsSL snell-ten.vercel.app)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代理一键安装&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;wget -P /root -N --no-check-certificate &quot;https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh&quot; &amp;amp;&amp;amp; chmod 700 /root/install.sh &amp;amp;&amp;amp; /root/install.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;4.NodeJS NVM脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# in lieu of restarting the shell
\. &quot;$HOME/.nvm/nvm.sh&quot;
# Download and install Node.js:
nvm install 22
# Verify the Node.js version:
node -v # Should print &quot;v22.17.1&quot;.
nvm current # Should print &quot;v22.17.1&quot;.
# Verify npm version:
npm -v # Should print &quot;10.9.2&quot;.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;5.解锁测试&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -Ls unlock.icmp.ing/test.sh)
bash &amp;lt;(curl -sL IP.Check.Place)
bash &amp;lt;(curl -Ls Net.Check.Place)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;6.综合工具箱&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh &amp;amp;&amp;amp; chmod +x box.sh &amp;amp;&amp;amp; clear &amp;amp;&amp;amp; ./box.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;7.流媒体测试&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -Ls unlock.icmp.ing/test.sh) -m 4
bash &amp;lt;(curl -Ls unlock.icmp.ing/test.sh)
bash &amp;lt;(curl -sL IP.Check.Place)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;8.Oracle 修改root脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash
echo root:11235879 |sudo chpasswd root
sudo sed -i &apos;s/^#\?PermitRootLogin.*/PermitRootLogin yes/g&apos; /etc/ssh/sshd_config;
sudo sed -i &apos;s/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g&apos; /etc/ssh/sshd_config;
sudo service sshd restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;默认密码是: 11235879&lt;br /&gt;
登录后一定要修改密码！命令：&lt;code&gt;passwd&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;9.Swap脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;wget https://www.moerats.com/usr/shell/swap.sh &amp;amp;&amp;amp; bash swap.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;10.Oracle dd Debian11 脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(wget --no-check-certificate -qO- &apos;https://moeclub.org/attachment/LinuxShell/InstallNET.sh&apos;) -d 11 -v 64 -a  -p 自定义密码
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;11.byte-unixbench 性能测试&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;wget --no-check-certificate https://ba.sh/unixbench &amp;amp;&amp;amp; chmod +x unixbench.sh &amp;amp;&amp;amp; ./unixbench.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;12.&lt;a href=&quot;https://www.passmark.com/products/pt_linux/download.php&quot;&gt;PerformanceTest Linux&lt;/a&gt; 测试&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;wget -O PerformanceTest_Linux_x86-64 https://catcat.cloud/d/ftp/PerformanceTest_Linux_x86-64 &amp;amp;&amp;amp; chmod +x PerformanceTest_Linux_x86-64 &amp;amp;&amp;amp; apt update &amp;amp;&amp;amp; apt install -y libncurses6 libtinfo6 &amp;amp;&amp;amp; ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5 &amp;amp;&amp;amp; ln -sf /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5 &amp;amp;&amp;amp; ldconfig &amp;amp;&amp;amp; ./PerformanceTest_Linux_x86-64

&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;13.杜甫通用检测脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# English
curl -sL https://ba.sh/sick | bash 

# Chinese
curl -sL https://ba.sh/sick | bash -s -- -cn
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;14.独立服务器检测硬盘通电时间&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;wget https://github.com/Aniverse/A/raw/i/a &amp;amp;&amp;amp; bash a
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;15.网络测试脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;region_name = na, sa, eu, asia, africa, au, middle-east, india, china, iran, indonesia
curl -sL nws.sh | bash -s -- -r region_name

wget -qO- bench.sh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;wget -qO- nws.sh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;wget -qO- nws.sh | bash -s -- -r region_name
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;16.Warp 脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;https://gitlab.com/fscarmen/warp.git

warp 一键脚本
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh &amp;amp;&amp;amp; bash menu.sh
warp-go 一键脚本
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/warp-go.sh &amp;amp;&amp;amp; bash warp-go.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;17.SpeedTest 安装&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install curl
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;18.国内常用脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;更换镜像源
bash &amp;lt;(curl -sSL https://linuxmirrors.cn/main.sh) 
Docker 安装
export DOWNLOAD_URL=&quot;https://mirrors.tuna.tsinghua.edu.cn/docker-ce&quot;# 如您使用 curl
curl -fsSL https://raw.githubusercontent.com/docker/docker-install/master/install.sh | sh
# 如您使用 wget
wget -O- https://raw.githubusercontent.com/docker/docker-install/master/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;19.ServerStatus 部署&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;curl -sS -O https://raw.githubusercontent.com/Yuri-NagaSaki/Shell/refs/heads/main/setup_serverstatus.sh &amp;amp;&amp;amp; chmod +x setup_serverstatus.sh &amp;amp;&amp;amp; ./setup_serverstatus.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;20.PVE 脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;更换PVE主题脚本
git clone https://github.com/Happyrobot33/PVEThemes &amp;amp;&amp;amp; cd PVEThemes &amp;amp;&amp;amp; chmod +x install.sh &amp;amp;&amp;amp; ./install.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -sSL https://gh-proxy.sakiko.de/https://raw.githubusercontent.com/Yuri-NagaSaki/Shell/refs/heads/main/PVE-Tools.sh)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;21.Clash 一键设置&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;git clone --branch master --depth 1 https://github.com/nelvko/clash-for-linux-install.git \
  &amp;amp;&amp;amp; cd clash-for-linux-install \
  &amp;amp;&amp;amp; sudo bash install.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;22.DD 一键重装脚本&lt;/h2&gt;
&lt;p&gt;具体参考 &lt;a href=&quot;https://github.com/bin456789/reinstall&quot;&gt;https://github.com/bin456789/reinstall&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh || wget -O reinstall.sh $_
bash reinstall.sh debian --ssh-key &quot;&quot;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><category>category:教程</category><category>tag:脚本</category></item><item><title>什么值得买-持续更新ing(自用机场推荐)</title><link>https://catcat.blog/recommended-proxy/</link><guid isPermaLink="true">https://catcat.blog/recommended-proxy/</guid><description>持续更新的自用机场推荐：详评YToo与花云，专线稳定、多协议支持、低倍率高性价比，节点覆盖广含IPv6与EMBY，价格与年付注意事项一并解析，助你选到省心好用的梯子。</description><pubDate>Thu, 23 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::caution
任何机场服务商都存在跑路风险，建议谨慎选择年付套餐，并准备多个备用服务以防失联。建议优先选择月付或季付套餐，分散风险。
:::&lt;/p&gt;
&lt;h2&gt;目前在使用的&lt;/h2&gt;
&lt;h3&gt;YToo&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://aff.af/ytoo&quot;&gt;官网链接&lt;/a&gt;（含 AFF）&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一线顶级机场，稳定性表现优秀，价格合理，提供低倍率节点。&lt;/li&gt;
&lt;li&gt;支持 SSR、SS、Trojan 三种协议，兼容 Clash 客户端。&lt;/li&gt;
&lt;li&gt;年付套餐非按 12 个月价格计算，例如 36 元月套餐年付为 372 元，配合 0.2 倍率节点使用性价比极高。&lt;/li&gt;
&lt;li&gt;全专线机场，线路分布：港新方向采用深圳电信⚡/移动📱，日美🇯🇵🇺🇸方向采用镇江 BGP（边界网关协议，Border Gateway Protocol），欧洲方向采用深圳电信⚡/移动📱。&lt;/li&gt;
&lt;li&gt;节点倍率：日用 0.2、标准 0.5、高级/特殊/购物 1.0。倍率解释：使用 0.2 倍率节点时，实际消耗 10GB 流量，系统仅计量 2GB，其他倍率以此类推。&lt;/li&gt;
&lt;li&gt;落地节点：香港、台湾、日本、新加坡、美国等主要地区主要使用 Kirino。此外，日本还提供 NTT、SONET、Oracle 等线路；新加坡提供 M247、LeaseWeb；韩国提供 KT、Oracle；美国提供 Cogent、Zenlayer、SharkTech。近期新增多个非主流地区：泰国、越南、印度、菲律宾、迪拜、以色列、加拿大、巴西、阿根廷、英国、德国、意大利、西班牙、匈牙利、土耳其、澳大利亚。&lt;/li&gt;
&lt;li&gt;机场限速千兆，低倍率节点限速相对严格但仍可达数百兆，足够日常使用。按 0.2 倍率计算，每月 200GB 套餐相当于可使用 1000GB 流量。不限制客户端设备数量，但严禁账号共享。&lt;/li&gt;
&lt;li&gt;SSH 端口限制：屏蔽 22 端口&lt;/li&gt;
&lt;li&gt;官方监控：https://status.waitu.de/status/services&lt;/li&gt;
&lt;li&gt;Telegram 频道：https://t.me/waitu_channel&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;节点分析&lt;/h3&gt;
&lt;h4&gt;电信&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229200255610.avif&quot; alt=&quot;上海电信&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;联通&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229200310617.avif&quot; alt=&quot;佛山联通&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;移动&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229200310617.avif&quot; alt=&quot;广西移动&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;拓扑分析&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229195531151.avif&quot; alt=&quot;YTOO电信拓扑分析&quot; /&gt;
&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229195629808.avif&quot; alt=&quot;YTOO联通拓扑分析&quot; /&gt;
&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229195659981.avif&quot; alt=&quot;YTOO移动拓扑分析&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;价格&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229202312200.avif&quot; alt=&quot;image-20251229202311790&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;青云梯&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://aff.af/QingYunTi&quot;&gt;官方链接（含 AFF）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;根据公开信息，该机场于 2021 年开设，至今已运营四年有余。采用专线内网传输，最高速率可达 4Gbps，由新加坡海外团队运营。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;采用 IPLC（国际专线，International Private Leased Circuit）线路，价格优势明显。最低年付套餐为 96 元/60GB 每月。&lt;/li&gt;
&lt;li&gt;支持 Clash、Surge、Shadowrocket、Quantumult X、Stash 订阅。&lt;/li&gt;
&lt;li&gt;落地节点相对单一，目前提供 Akari、Nearoute、CHOOPA、Hytron、Cogent、Fibert、ReliableSite 等线路。&lt;/li&gt;
&lt;li&gt;月付/季付/半年付：享受 85 折优惠，优惠码：&lt;strong&gt;0080&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;年付及以上周期：享受 8 折优惠，优惠码：&lt;strong&gt;0080&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;不限制客户端设备数量，支持多设备同时在线。&lt;/li&gt;
&lt;li&gt;线路架构：香港透传入口 + IEPL（国际以太网专线，International Ethernet Private Line）传输&lt;/li&gt;
&lt;li&gt;线路倍率：香港 ×20、台湾 ×10、日本 ×10、新加坡 ×10、马来西亚 ×10、美国 ×10、韩国 ×2、越南 ×1、菲律宾 ×1、泰国 ×1、印度 ×1、德国 ×1、法国 ×1、英国 ×1、阿根廷 ×2&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;线路&lt;/h3&gt;
&lt;h4&gt;电信&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229201835313.avif&quot; alt=&quot;青云梯-广东电信1000M&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;联通&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229201908670.avif&quot; alt=&quot;青云梯-佛山联通2000M&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;移动&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229201839700.avif&quot; alt=&quot;青云梯-广西移动2000M&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;拓扑分析&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229201927253.avif&quot; alt=&quot;青云梯拓扑分析&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;价格&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229201414305.avif&quot; alt=&quot;image-20251229201413801&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229201324809.avif&quot; alt=&quot;image-20251229201324087&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;星岛梦&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://aff.af/GKqU&quot;&gt;官方链接（含 AFF）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2025 年下半年新开业的机场服务商，目前采用全 IPLC 专线。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;支持 Trojan/SS 等协议。价格较为实惠，但开业时间较短，建议谨慎选择年付套餐。&lt;/li&gt;
&lt;li&gt;套餐特点：无限速、无倍率限制、不限制设备数量。&lt;/li&gt;
&lt;li&gt;优惠码：66 折 &lt;strong&gt;XDM666&lt;/strong&gt;，最低套餐年付 98.56 元，100GB/月&lt;/li&gt;
&lt;li&gt;提供永久不限时套餐，请谨慎评估后购买。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;测试&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229203322156.avif&quot; alt=&quot;image-20251229203321836&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;价格&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229203237992.avif&quot; alt=&quot;image-20251229203237460&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;MujikaNetwork&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://aff.af/Mujika&quot;&gt;官方链接（含 AFF）&lt;/a&gt;
2024 年开业的机场服务商，采用 IEPL 专线。
主要优势是价格亲民，月付套餐仅需 5 元。&lt;/p&gt;
&lt;h3&gt;测试&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229203533864.avif&quot; alt=&quot;image-20251229203533760&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;节点列表&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229203823538.avif&quot; alt=&quot;image-20251229203823117&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;价格&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229203612521.avif&quot; alt=&quot;image-20251229203612234&quot; /&gt;
&lt;img src=&quot;https://s3.catcat.blog/images/2025/12/20251229203626194.avif&quot; alt=&quot;image-20251229203625977&quot; /&gt;&lt;/p&gt;
</content:encoded><category>category:机场</category><category>tag:机场</category></item><item><title>ASS 字幕字体子集化：从原理到实践</title><link>https://catcat.blog/2026/03/ass-font-subsetting-fontinass/</link><guid isPermaLink="true">https://catcat.blog/2026/03/ass-font-subsetting-fontinass/</guid><description>什么是 ASS 字幕字体子集化？为什么你的番剧体积翻倍了？本文从原理讲起，介绍子集化的好处，并分享我的在线子集化工具 FontInAss。</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;终于收藏整理的BD破500了，本次放出一个自己用的项目&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260320143400732.avif&quot; alt=&quot;image-20260320143357921&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260320143132223.avif&quot; alt=&quot;image-20260320143131097&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260320143319218.avif&quot; alt=&quot;image-20260320143317481&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;什么是 ASS 字幕？&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/SubStation_Alpha&quot;&gt;ASS（Advanced SubStation Alpha）&lt;/a&gt;是一种功能强大的字幕格式。与常见的 SRT 字幕相比，ASS 字幕支持：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自定义字体&lt;/strong&gt;——可以为不同的文本指定不同字体&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特效与动画&lt;/strong&gt;——淡入淡出、卡拉 OK 效果、位移动画&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;精确定位&lt;/strong&gt;——字幕可以放在画面的任意位置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;丰富样式&lt;/strong&gt;——边框、阴影、颜色渐变等&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些能力让 ASS 字幕成为了番剧字幕组的首选格式，尤其是制作精良的内嵌特效字幕。&lt;/p&gt;
&lt;p&gt;但 ASS 的表现力依赖一个前提：&lt;strong&gt;播放端必须有字幕引用的字体&lt;/strong&gt;。&lt;/p&gt;
&lt;h2&gt;字体问题的由来&lt;/h2&gt;
&lt;p&gt;问题很简单：你的电脑上可能装了方正FW筑紫A丸ゴシック、思源宋体、华文行楷，但你的电视、手机、平板上大概率没有。&lt;/p&gt;
&lt;p&gt;缺少字体时，播放器会使用默认字体来替代。于是原本精心排版的字幕变成了这样：&lt;/p&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;pre&gt;&lt;code&gt;flowchart TD
    A[&quot;ASS 字幕引用字体\n（如：方正FW筑紫A丸ゴシック）&quot;] --&amp;gt; B{&quot;播放器检查\n本地是否有该字体&quot;}
    B --&amp;gt;|&quot;有&quot;| C[&quot;✅ 正常显示\n视觉效果完美&quot;]
    B --&amp;gt;|&quot;没有&quot;| D[&quot;❌ 回退到默认字体&quot;]
    D --&amp;gt; E[&quot;样式崩坏\n排版错乱&quot;]
    D --&amp;gt; F[&quot;缺字显示豆腐块 □&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就引出了两种常见情况：&lt;/p&gt;
&lt;h3&gt;情况一：字幕裸奔，完全没有字体&lt;/h3&gt;
&lt;p&gt;很多时候，你从网上下载的字幕就是一个光秃秃的 ASS 文件，里面引用了一堆花里胡哨的字体名，但字体本身？没有。不在 MKV 里，也不在压缩包里，字幕组默认你自己去找。&lt;/p&gt;
&lt;p&gt;于是你打开视频，字幕全是宋体，特效字变成了方块豆腐，歌词字幕挤成一坨——这就是&quot;字幕裸奔&quot;的下场。想看正常效果？你得自己满世界找字体，手动安装到系统里，而且换一台设备就要重来一遍。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260320142306271.avif&quot; alt=&quot;原效果&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260320142310331.avif&quot; alt=&quot;子集化嵌入字体后&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;情况二：字体全塞进去，体积爆炸&lt;/h3&gt;
&lt;p&gt;负责任的字幕组会把字体打包进 MKV 容器。MKV 支持附件（Attachment），可以把 TTF/OTF 字体文件嵌入视频文件中。这样无论在哪台设备播放，字体都在。&lt;/p&gt;
&lt;p&gt;但问题来了——一个 CJK（中日韩）字体动辄 20-70MB，一部番剧字幕引用 5-6 个字体是常态。于是一个 200MB 的视频，嵌入字体后轻松变成 400MB。&lt;/p&gt;
&lt;h3&gt;两难困境&lt;/h3&gt;
&lt;p&gt;不带字体，效果崩坏；带完整字体，体积翻倍。&lt;strong&gt;字体子集化就是解决这个两难问题的方案。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;什么是字体子集化？&lt;/h2&gt;
&lt;p&gt;**字体子集化（Font Subsetting）**的核心思想非常简单：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;字幕里只用了 200 个汉字，为什么要嵌入包含 30000+ 字形的完整字体？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;子集化就是从完整字体中&lt;strong&gt;只提取字幕实际用到的字形&lt;/strong&gt;，重新打包为一个精简的字体文件。&lt;/p&gt;
&lt;p&gt;一个实际的例子：&lt;/p&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;思源黑体&lt;/td&gt;
&lt;td&gt;16.4 MB&lt;/td&gt;
&lt;td&gt;~200 KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;方正FW筑紫A丸ゴシック&lt;/td&gt;
&lt;td&gt;8.7 MB&lt;/td&gt;
&lt;td&gt;~150 KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;总计 6 个字体&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;70 MB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~2 MB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;没错，&lt;strong&gt;70MB 的字体可以压缩到 2MB&lt;/strong&gt;，而视觉效果完全不变——因为字幕需要的每一个字形都完整保留了。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;flowchart LR
    A[&quot;ASS 字幕文件&quot;] --&amp;gt; B[&quot;解析用到的字符&quot;]
    B --&amp;gt; C[&quot;从字体中\n提取对应字形&quot;]
    C --&amp;gt; D[&quot;生成子集字体&quot;]
    D --&amp;gt; E{&quot;输出方式&quot;}
    E --&amp;gt; F[&quot;嵌入 ASS\n（UUEncode 附件）&quot;]
    E --&amp;gt; G[&quot;打包进 MKV\n（附件形式）&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;子集化的好处&lt;/h2&gt;
&lt;h3&gt;节约存储空间&lt;/h3&gt;
&lt;p&gt;这是最直观的好处。一季 12 集番剧，每集节省 200MB 字体，整季就能节省 &lt;strong&gt;2.4GB&lt;/strong&gt; 空间。&lt;/p&gt;
&lt;h3&gt;加快网络传输&lt;/h3&gt;
&lt;p&gt;无论是 NAS 串流到电视，还是在线播放，更小的文件意味着更快的缓冲和更少的卡顿。30Mbps 带宽下，200MB 字体需要约 53 秒才能加载完，而 2MB 只需要不到 1 秒。&lt;/p&gt;
&lt;h3&gt;跨设备兼容&lt;/h3&gt;
&lt;p&gt;子集化后的字体可以嵌入到 ASS 文件本身（通过 UUEncode 编码的 &lt;code&gt;[Fonts]&lt;/code&gt; 段），或者嵌入 MKV 容器。无论在什么设备上播放——电视、手机、平板、电脑——都能正确显示字幕样式，无需手动安装字体。&lt;/p&gt;
&lt;h3&gt;简化分发&lt;/h3&gt;
&lt;p&gt;一个包含嵌入字体的 ASS 文件，就是一个完全自包含的字幕文件。分享给别人时，不需要额外附带字体包。&lt;/p&gt;
&lt;h2&gt;现有工具&lt;/h2&gt;
&lt;p&gt;字体子集化并非新概念，社区已有一些优秀的工具：&lt;/p&gt;
&lt;h3&gt;Assfonts&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://bbs.acgrip.com/thread-9897-1-1.html&quot;&gt;Assfonts&lt;/a&gt; 是一个跨平台的 GUI/CLI 工具，支持 Windows、macOS 和 Linux。它可以从本地字体库中查找字幕引用的字体，进行子集化后嵌入 ASS 或打包进 MKV。&lt;/p&gt;
&lt;h3&gt;MkvAutoSubset&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/KaranDhillon/MkvAutoSubset&quot;&gt;MkvAutoSubset&lt;/a&gt; 等工具也提供了类似的功能，主要面向 MKV 封装场景。&lt;/p&gt;
&lt;h3&gt;本地工具的痛点&lt;/h3&gt;
&lt;p&gt;这些工具都很好用，但有一个共同的限制：&lt;strong&gt;它们都是本地工具&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要在本地维护一个庞大的字体库（通常几十 GB）&lt;/li&gt;
&lt;li&gt;换一台电脑就要重新配置&lt;/li&gt;
&lt;li&gt;服务器上没有 GUI 环境时使用不便&lt;/li&gt;
&lt;li&gt;字体库更新需要手动管理&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;FontInAss —— 我的在线子集化方案&lt;/h2&gt;
&lt;p&gt;受 Assfonts 的启发，我开发了 &lt;a href=&quot;https://font.anibt.net&quot;&gt;FontInAss&lt;/a&gt;——一个基于 Cloudflare Workers 的&lt;strong&gt;全在线&lt;/strong&gt;字幕字体子集化服务。&lt;/p&gt;
&lt;p&gt;之前我写过一篇 &lt;a href=&quot;/2026/01/deploy-fontinass-emby-subtitle-font.html&quot;&gt;使用 Docker Compose 部署 fontInAss 字幕字体处理服务&lt;/a&gt;，介绍了如何自托管 FontInAss 并与 Emby/Jellyfin 集成，实现播放时自动处理字幕字体。今天这篇文章则从原理层面展开，聊聊字体子集化本身，以及 FontInAss 在线版的设计。&lt;/p&gt;
&lt;h3&gt;为什么做这个？&lt;/h3&gt;
&lt;p&gt;我的需求很简单：我不想在每台电脑上都维护一个几十 GB 的字体库，我希望有一个在线服务，上传 ASS 文件就能得到子集化后的结果。&lt;/p&gt;
&lt;h3&gt;核心特点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;全在线&lt;/strong&gt;：基于 Cloudflare Workers，无需安装任何软件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;海量字体库&lt;/strong&gt;：105GB 字体库（VCB-Studio + Lam 字体集），存储在 Cloudflare R2 对象存储&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;批量处理&lt;/strong&gt;：一次最多上传 20 个文件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多格式支持&lt;/strong&gt;：支持 ASS / SSA / SRT 格式，SRT 自动转换为 ASS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能字体匹配&lt;/strong&gt;：根据 weight、italic 等属性评分匹配最合适的字体&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缓存加速&lt;/strong&gt;：KV 缓存（7 天 TTL），相同请求秒返回结果&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中英文双语&lt;/strong&gt;：界面支持中文和英文切换&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;flowchart TD
    A[&quot;用户上传 ASS 文件&quot;] --&amp;gt; B[&quot;Cloudflare Worker\n解析字幕&quot;]
    B --&amp;gt; C[&quot;提取引用的字体名\n和使用的字符&quot;]
    C --&amp;gt; D[&quot;D1 数据库\n查询字体元数据&quot;]
    D --&amp;gt; E[&quot;R2 对象存储\n获取字体文件&quot;]
    E --&amp;gt; F[&quot;opentype.js\n执行子集化&quot;]
    F --&amp;gt; G[&quot;UUEncode 编码\n嵌入 ASS&quot;]
    G --&amp;gt; H[&quot;返回子集化后的 ASS&quot;]

    I[&quot;KV 缓存&quot;] -.-&amp;gt;|&quot;命中缓存\n直接返回&quot;| H
    B -.-&amp;gt;|&quot;检查缓存&quot;| I
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;使用方式&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://font.anibt.net/&quot;&gt;font.anibt.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;将 ASS / SSA / SRT 文件拖拽到上传区域（或点击选择文件）&lt;/li&gt;
&lt;li&gt;等待处理完成&lt;/li&gt;
&lt;li&gt;下载子集化后的文件&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果遇到字体库中缺少的字体，可以通过网站上的留言功能或 Telegram 联系提交字体需求。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nodeimage.com/i/HCSzG90PB32r8f3UIXU3WzPHG1VaOosg.webp&quot; alt=&quot;子集合集&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nodeimage.com/i/TTWhn74vOSJFDMshuzXIy0ARTja3vBAl.webp&quot; alt=&quot;46MB超大处理&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;字体子集化是一个看似小众但实际影响很大的优化手段。它能让你的番剧体积减半，让串流播放更流畅，让字幕在任何设备上都完美呈现。&lt;/p&gt;
&lt;p&gt;如果你是字幕组成员、动画收藏爱好者、或者 NAS 用户，不妨试试 &lt;a href=&quot;https://font.anibt.net&quot;&gt;FontInAss&lt;/a&gt;。有任何问题或建议，欢迎反馈。&lt;/p&gt;
&lt;h2&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.himiku.com/archives/my-solution-for-perfect-anime-subtitle-fonts.html&quot;&gt;我的字幕字体完美解决方案 - Himiku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wushuo.me/posts/subtitle/&quot;&gt;字幕字体子集化 - wushuo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bbs.acgrip.com/thread-9897-1-1.html&quot;&gt;Assfonts - ACG.RIP 论坛&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://seailor.com/posts/a0b93f0f/&quot;&gt;ASS 字幕字体子集化 - Seailor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>category:教程</category><category>tag:字幕</category><category>tag:ASS</category><category>tag:字体子集化</category><category>tag:Cloudflare Workers</category><category>tag:MKV</category></item><item><title>ASS Subtitle Font Subsetting: From Theory to Practice</title><link>https://catcat.blog/2026/03/ass-font-subsetting-fontinass-en/</link><guid isPermaLink="true">https://catcat.blog/2026/03/ass-font-subsetting-fontinass-en/</guid><description>What is ASS subtitle font subsetting? Why did your anime file double in size? This article explains the principles, the benefits, and introduces my online subsetting tool FontInAss.</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;What Are ASS Subtitles?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/SubStation_Alpha&quot;&gt;ASS (Advanced SubStation Alpha)&lt;/a&gt; is a powerful subtitle format. Compared to common SRT subtitles, ASS subtitles support:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Custom fonts&lt;/strong&gt; — different fonts for different text elements&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Effects and animations&lt;/strong&gt; — fade in/out, karaoke effects, motion animations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Precise positioning&lt;/strong&gt; — subtitles can be placed anywhere on screen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rich styling&lt;/strong&gt; — borders, shadows, color gradients, and more&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These capabilities make ASS the go-to format for fansubbing groups, especially for polished typeset subtitles.&lt;/p&gt;
&lt;p&gt;But ASS&apos;s expressive power relies on one prerequisite: &lt;strong&gt;the playback device must have the fonts referenced by the subtitle&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Where the Font Problem Comes From&lt;/h2&gt;
&lt;p&gt;The problem is straightforward: your PC might have fonts like FZCuHeiSongS, Source Han Serif, or STXingkai installed, but your TV, phone, or tablet almost certainly doesn&apos;t.&lt;/p&gt;
&lt;p&gt;When fonts are missing, the player falls back to a default font. The carefully typeset subtitles end up looking like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Artistic title fonts → replaced with a generic serif&lt;/li&gt;
&lt;li&gt;Special Japanese kana fonts → tofu blocks (□)&lt;/li&gt;
&lt;li&gt;Carefully adjusted kerning and line spacing → completely broken&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;flowchart TD
    A[&quot;ASS subtitle references font\n(e.g. FZCuHeiSongS)&quot;] --&amp;gt; B{&quot;Player checks:\nis the font installed locally?&quot;}
    B --&amp;gt;|&quot;Yes&quot;| C[&quot;✅ Displays correctly\nPerfect visual effect&quot;]
    B --&amp;gt;|&quot;No&quot;| D[&quot;❌ Falls back to default font&quot;]
    D --&amp;gt; E[&quot;Styling breaks\nLayout goes haywire&quot;]
    D --&amp;gt; F[&quot;Missing glyphs show\nas tofu blocks □&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This leads to two common scenarios:&lt;/p&gt;
&lt;h3&gt;Scenario 1: Naked subtitles — no fonts at all&lt;/h3&gt;
&lt;p&gt;More often than not, the subtitles you download are just a bare ASS file. It references a bunch of fancy font names, but the fonts themselves? Nowhere to be found — not in the MKV, not in the archive. The fansubbers assume you&apos;ll track them down yourself.&lt;/p&gt;
&lt;p&gt;So you open the video, and the subtitles are all in a generic system font, styled text turns into tofu blocks, and lyric subtitles are a jumbled mess — that&apos;s what &quot;naked subtitles&quot; look like. Want the intended look? You&apos;ll need to hunt down each font, manually install them, and repeat the whole process on every device.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Without fonts&lt;/th&gt;
&lt;th&gt;With subsetted fonts embedded&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260320142306271.avif&quot; alt=&quot;Without fonts&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260320142310331.avif&quot; alt=&quot;With subsetted fonts embedded&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Scenario 2: All fonts bundled in — file size explodes&lt;/h3&gt;
&lt;p&gt;Responsible fansubbing groups bundle fonts into the MKV container. MKV supports attachments, allowing TTF/OTF font files to be embedded directly in the video file. This way, fonts are available on any device.&lt;/p&gt;
&lt;p&gt;But here&apos;s the catch — a single CJK (Chinese/Japanese/Korean) font can easily be 20–70 MB, and it&apos;s common for a single episode&apos;s subtitles to reference 5–6 fonts. A 200 MB video can balloon to 400 MB after embedding fonts.&lt;/p&gt;
&lt;h3&gt;The Dilemma&lt;/h3&gt;
&lt;p&gt;No fonts means broken visuals; full fonts means doubled file size. &lt;strong&gt;Font subsetting is the solution to this dilemma.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;What Is Font Subsetting?&lt;/h2&gt;
&lt;p&gt;The core idea behind &lt;strong&gt;font subsetting&lt;/strong&gt; is simple:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If the subtitles only use 200 Chinese characters, why embed a full font containing 30,000+ glyphs?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Subsetting extracts &lt;strong&gt;only the glyphs actually used in the subtitles&lt;/strong&gt; from the full font and repackages them into a trimmed-down font file.&lt;/p&gt;
&lt;p&gt;A real-world example:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Full font&lt;/th&gt;
&lt;th&gt;After subsetting&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Source Han Sans&lt;/td&gt;
&lt;td&gt;16.4 MB&lt;/td&gt;
&lt;td&gt;~200 KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FZCuHeiSongS&lt;/td&gt;
&lt;td&gt;8.7 MB&lt;/td&gt;
&lt;td&gt;~150 KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total (6 fonts)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;70 MB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~2 MB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That&apos;s right — &lt;strong&gt;70 MB of fonts can be reduced to 2 MB&lt;/strong&gt;, with zero visual difference — because every glyph the subtitles need is fully preserved.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;flowchart LR
    A[&quot;ASS subtitle file&quot;] --&amp;gt; B[&quot;Parse characters\nin use&quot;]
    B --&amp;gt; C[&quot;Extract matching\nglyphs from font&quot;]
    C --&amp;gt; D[&quot;Generate\nsubset font&quot;]
    D --&amp;gt; E{&quot;Output method&quot;}
    E --&amp;gt; F[&quot;Embed in ASS\n(UUEncode attachment)&quot;]
    E --&amp;gt; G[&quot;Bundle into MKV\n(as attachment)&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Benefits of Subsetting&lt;/h2&gt;
&lt;h3&gt;Save Storage Space&lt;/h3&gt;
&lt;p&gt;This is the most obvious benefit. A 12-episode anime season saving 200 MB of fonts per episode adds up to &lt;strong&gt;2.4 GB&lt;/strong&gt; of saved space. That&apos;s significant for NAS users with limited storage.&lt;/p&gt;
&lt;h3&gt;Faster Network Transfer&lt;/h3&gt;
&lt;p&gt;Whether streaming from a NAS to your TV or playing online, smaller files mean faster buffering and less stuttering. At 30 Mbps, loading 200 MB of fonts takes about 53 seconds, while 2 MB takes less than 1 second.&lt;/p&gt;
&lt;h3&gt;Cross-Device Compatibility&lt;/h3&gt;
&lt;p&gt;Subsetted fonts can be embedded in the ASS file itself (via UUEncoded &lt;code&gt;[Fonts]&lt;/code&gt; section) or in the MKV container. No matter what device you&apos;re watching on — TV, phone, tablet, or PC — subtitle styles display correctly without manual font installation.&lt;/p&gt;
&lt;h3&gt;Simplified Distribution&lt;/h3&gt;
&lt;p&gt;An ASS file with embedded fonts is a fully self-contained subtitle file. When sharing with others, no need to attach a separate font pack.&lt;/p&gt;
&lt;h2&gt;Existing Tools&lt;/h2&gt;
&lt;p&gt;Font subsetting isn&apos;t a new concept. The community already has some great tools:&lt;/p&gt;
&lt;h3&gt;Assfonts&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://bbs.acgrip.com/thread-9897-1-1.html&quot;&gt;Assfonts&lt;/a&gt; is a cross-platform GUI/CLI tool supporting Windows, macOS, and Linux. It finds fonts referenced by subtitles from the local font library, subsets them, and embeds them into ASS or MKV files.&lt;/p&gt;
&lt;h3&gt;MkvAutoSubset&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/KaranDhillon/MkvAutoSubset&quot;&gt;MkvAutoSubset&lt;/a&gt; and similar tools provide comparable functionality, mainly targeting MKV muxing workflows.&lt;/p&gt;
&lt;h3&gt;Pain Points of Local Tools&lt;/h3&gt;
&lt;p&gt;These tools work well, but share a common limitation: &lt;strong&gt;they&apos;re all local tools&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires maintaining a massive local font library (typically tens of GB)&lt;/li&gt;
&lt;li&gt;Switching computers means reconfiguring everything&lt;/li&gt;
&lt;li&gt;Inconvenient on servers without a GUI environment&lt;/li&gt;
&lt;li&gt;Font library updates require manual management&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;FontInAss — My Online Subsetting Solution&lt;/h2&gt;
&lt;p&gt;Inspired by Assfonts, I built &lt;a href=&quot;https://font.anibt.net&quot;&gt;FontInAss&lt;/a&gt; — a fully online subtitle font subsetting service powered by Cloudflare Workers.&lt;/p&gt;
&lt;p&gt;I previously wrote about &lt;a href=&quot;/2026/01/deploy-fontinass-emby-subtitle-font.html&quot;&gt;deploying FontInAss with Docker Compose for Emby/Jellyfin integration&lt;/a&gt;, which covers self-hosting FontInAss to automatically process subtitle fonts during playback. This article takes a step back to explain font subsetting itself and the design of FontInAss&apos;s online version.&lt;/p&gt;
&lt;h3&gt;Why Build This?&lt;/h3&gt;
&lt;p&gt;My need was simple: I didn&apos;t want to maintain a multi-GB font library on every machine. I wanted an online service where I could upload ASS files and get subsetted results back.&lt;/p&gt;
&lt;h3&gt;Key Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fully online&lt;/strong&gt;: Powered by Cloudflare Workers — no software to install&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Massive font library&lt;/strong&gt;: 105 GB font library (VCB-Studio + Lam font collections) stored on Cloudflare R2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Batch processing&lt;/strong&gt;: Upload up to 20 files at once&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-format support&lt;/strong&gt;: ASS / SSA / SRT formats, with automatic SRT-to-ASS conversion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smart font matching&lt;/strong&gt;: Scores and matches the best font based on weight, italic, and other attributes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache acceleration&lt;/strong&gt;: KV cache with 7-day TTL — repeated requests return instantly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bilingual UI&lt;/strong&gt;: Interface supports both Chinese and English&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;flowchart TD
    A[&quot;User uploads ASS file&quot;] --&amp;gt; B[&quot;Cloudflare Worker\nparses subtitle&quot;]
    B --&amp;gt; C[&quot;Extract referenced font names\nand characters used&quot;]
    C --&amp;gt; D[&quot;D1 Database\nquery font metadata&quot;]
    D --&amp;gt; E[&quot;R2 Object Storage\nfetch font files&quot;]
    E --&amp;gt; F[&quot;opentype.js\nperform subsetting&quot;]
    F --&amp;gt; G[&quot;UUEncode\nembed into ASS&quot;]
    G --&amp;gt; H[&quot;Return subsetted ASS&quot;]

    I[&quot;KV Cache&quot;] -.-&amp;gt;|&quot;Cache hit:\nreturn directly&quot;| H
    B -.-&amp;gt;|&quot;Check cache&quot;| I
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;How to Use&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Visit &lt;a href=&quot;https://font.anibt.net/&quot;&gt;font.anibt.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Drag and drop ASS / SSA / SRT files into the upload area (or click to select files)&lt;/li&gt;
&lt;li&gt;Wait for processing to complete&lt;/li&gt;
&lt;li&gt;Download the subsetted files&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you encounter missing fonts in the library, you can submit font requests via the on-site comment system or Telegram.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nodeimage.com/i/HCSzG90PB32r8f3UIXU3WzPHG1VaOosg.webp&quot; alt=&quot;Batch subsetting&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nodeimage.com/i/TTWhn74vOSJFDMshuzXIy0ARTja3vBAl.webp&quot; alt=&quot;Processing 46MB+ fonts&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Font subsetting may seem niche, but its impact is significant. It can halve your anime file sizes, make streaming smoother, and ensure subtitles look perfect on any device.&lt;/p&gt;
&lt;p&gt;If you&apos;re a fansubber, anime collector, or NAS user, give &lt;a href=&quot;https://font.anibt.net&quot;&gt;FontInAss&lt;/a&gt; a try. Feedback and suggestions are always welcome.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.himiku.com/archives/my-solution-for-perfect-anime-subtitle-fonts.html&quot;&gt;My Solution for Perfect Anime Subtitle Fonts - Himiku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wushuo.me/posts/subtitle/&quot;&gt;Subtitle Font Subsetting - wushuo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bbs.acgrip.com/thread-9897-1-1.html&quot;&gt;Assfonts - ACG.RIP Forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://seailor.com/posts/a0b93f0f/&quot;&gt;ASS Subtitle Font Subsetting - Seailor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>category:Tutorial</category><category>tag:Subtitles</category><category>tag:ASS</category><category>tag:Font Subsetting</category><category>tag:Cloudflare Workers</category><category>tag:MKV</category></item><item><title>Tailscale Peer Relay 配置指南：告别自建DERP</title><link>https://catcat.blog/2026/03/tailscale-peer-relay-setup/</link><guid isPermaLink="true">https://catcat.blog/2026/03/tailscale-peer-relay-setup/</guid><description>详解 Tailscale Peer Relay 功能：原理、配置步骤、性能优势及最佳实践，让你的 Tailscale 网络告别高延迟</description><pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;千呼万唤始出来 Tailscale的Peer Relay  终于正式发布了&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;用 Tailscale 的人大概都遇到过这种情况：两台设备明明都在线，但实际传输速度慢得离谱，延迟也高。打开 &lt;code&gt;tailscale status&lt;/code&gt; 一看，连接类型显示 &lt;code&gt;relay&lt;/code&gt; —— 流量绕到了 Tailscale 官方的 DERP 中继服务器上。&lt;/p&gt;
&lt;p&gt;这在双方都处于NAT后面时尤其常见。WireGuard 的 NAT 穿透失败后，Tailscale 会回退到 DERP 中继，而公共 DERP 服务器带宽有限、延迟不可控，体验自然不好。&lt;/p&gt;
&lt;p&gt;虽然之前有自建DERP的方案，但是那总归还需要动手搭建和配置规则，相当的麻烦，还要考虑被别人套用。&lt;/p&gt;
&lt;p&gt;现在Tailscale 推出了 &lt;strong&gt;Peer Relay&lt;/strong&gt; 功能，允许你指定 Tailnet 内的某个节点充当私有中继，绕过公共 DERP 的性能瓶颈。&lt;/p&gt;
&lt;h2&gt;什么是 Peer Relay？&lt;/h2&gt;
&lt;p&gt;Peer Relay 是 Tailscale 在 1.86 版本引入的功能，允许将 Tailnet 内的一个节点配置为中继服务器。当两台设备无法直连时，流量可以通过这个私有中继节点转发，而不是走公共 DERP。&lt;/p&gt;
&lt;p&gt;简单来说，它和自建 DERP 的目标类似 —— 解决直连失败时的性能问题，但配置更简单、集成更原生。&lt;/p&gt;
&lt;h3&gt;Peer Relay vs DERP 对比&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;特性&lt;/th&gt;
&lt;th&gt;Peer Relay&lt;/th&gt;
&lt;th&gt;公共 DERP&lt;/th&gt;
&lt;th&gt;自建 DERP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;协议&lt;/td&gt;
&lt;td&gt;WireGuard（UDP）&lt;/td&gt;
&lt;td&gt;HTTPS + WebSocket&lt;/td&gt;
&lt;td&gt;HTTPS + WebSocket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;延迟&lt;/td&gt;
&lt;td&gt;低（取决于中继节点位置）&lt;/td&gt;
&lt;td&gt;高（共享基础设施）&lt;/td&gt;
&lt;td&gt;低（自控）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;带宽&lt;/td&gt;
&lt;td&gt;取决于中继节点带宽&lt;/td&gt;
&lt;td&gt;有限（QoS 限制）&lt;/td&gt;
&lt;td&gt;取决于服务器&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;配置难度&lt;/td&gt;
&lt;td&gt;低（一条命令）&lt;/td&gt;
&lt;td&gt;无需配置&lt;/td&gt;
&lt;td&gt;中等（需部署服务）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;加密&lt;/td&gt;
&lt;td&gt;WireGuard 端到端加密&lt;/td&gt;
&lt;td&gt;WireGuard 端到端加密&lt;/td&gt;
&lt;td&gt;WireGuard 端到端加密&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;作用范围&lt;/td&gt;
&lt;td&gt;仅限同一 Tailnet&lt;/td&gt;
&lt;td&gt;全球公共&lt;/td&gt;
&lt;td&gt;需要额外配置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;需要公网 IP&lt;/td&gt;
&lt;td&gt;否（但建议有）&lt;/td&gt;
&lt;td&gt;否&lt;/td&gt;
&lt;td&gt;是&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;:::tip
Peer Relay 使用的是原生 WireGuard UDP 协议，而非 DERP 的 HTTPS/WebSocket 封装，这是它性能更好的主要原因之一。
:::&lt;/p&gt;
&lt;h2&gt;连接优先级&lt;/h2&gt;
&lt;p&gt;Tailscale 在建立连接时会按以下优先级尝试：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Direct（直连） → Peer Relay（私有中继） → DERP（公共中继）
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Direct&lt;/strong&gt;：两台设备通过 NAT 穿透直接建立 WireGuard 隧道，延迟最低、速度最快&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Peer Relay&lt;/strong&gt;：直连失败时，通过你指定的 Tailnet 内节点中继，流量不出你的网络&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DERP&lt;/strong&gt;：前两者都失败时，回退到 Tailscale 官方 DERP 服务器&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;:::note
Peer Relay 不会替代 DERP。DERP 仍然用于连接协商和最终兜底。Peer Relay 是在直连失败后、回退 DERP 之前的一个优化层。
:::&lt;/p&gt;
&lt;h2&gt;前置要求&lt;/h2&gt;
&lt;p&gt;在开始配置之前，确认以下条件：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;Tailscale 版本&lt;/td&gt;
&lt;td&gt;客户端和中继节点均需 &lt;strong&gt;1.86+&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;操作系统&lt;/td&gt;
&lt;td&gt;中继节点支持 Linux、macOS、Windows 等（&lt;strong&gt;不支持&lt;/strong&gt; iOS、Android、Apple TV）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;账户权限&lt;/td&gt;
&lt;td&gt;需要 Owner、Admin 或 Network admin 权限来配置 ACL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;配额&lt;/td&gt;
&lt;td&gt;免费版和付费版均可配置 &lt;strong&gt;2 个&lt;/strong&gt; Peer Relay 节点&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;:::warning
用作 Peer Relay 的节点应该是网络稳定、带宽充足的设备，比如 VPS 或家中的固定服务器，不建议用笔记本或手机等移动设备。
:::&lt;/p&gt;
&lt;h2&gt;配置步骤&lt;/h2&gt;
&lt;h3&gt;Step 1：在中继节点启用 Relay&lt;/h3&gt;
&lt;p&gt;SSH 到你想要用作中继的节点，执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tailscale set --relay-server-port=40000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这会在 UDP 端口 40000 上启动 Peer Relay 服务。端口号可以自行选择，确保防火墙允许该端口的 UDP 入站流量。&lt;/p&gt;
&lt;p&gt;:::tip
如果你的中继节点在云服务商上（如 AWS、GCP），记得在安全组/防火墙规则中放行对应的 UDP 端口。
:::&lt;/p&gt;
&lt;p&gt;关闭 Relay 只需将端口设为空：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tailscale set --relay-server-port=&quot;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Step 2：配置 ACL Grants&lt;/h3&gt;
&lt;p&gt;启用 Relay 端口后，还需要在 Tailscale 的 ACL 策略中授权哪些节点可以使用这个中继。&lt;/p&gt;
&lt;p&gt;打开 &lt;a href=&quot;https://login.tailscale.com/admin/acls/file&quot;&gt;Tailscale Admin Console&lt;/a&gt;，在 ACL 文件中添加 &lt;code&gt;grants&lt;/code&gt; 规则：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;grants&quot;: [
    {
      &quot;src&quot;: [&quot;tag:office&quot;],
      &quot;dst&quot;: [&quot;tag:relay&quot;],
      &quot;app&quot;: {
        &quot;tailscale.com/cap/relay&quot;: []
      }
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;参数说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;src&lt;/code&gt;：允许使用中继的设备（如 &lt;code&gt;tag:office&lt;/code&gt; 标记的所有设备）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dst&lt;/code&gt;：被授权作为中继的节点（如 &lt;code&gt;tag:relay&lt;/code&gt; 标记的节点）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tailscale.com/cap/relay&lt;/code&gt;：授予中继能力的 capability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;:::important
&lt;code&gt;src&lt;/code&gt; 的范围应尽量收窄。避免使用通配符 &lt;code&gt;*&lt;/code&gt;，明确指定需要使用中继的设备标签或节点。
:::&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;其他常见配置示例：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;让某个节点同时作为自己的中继（适用于该节点也需要被中继的场景）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;grants&quot;: [
    {
      &quot;src&quot;: [&quot;my-server&quot;],
      &quot;dst&quot;: [&quot;my-server&quot;],
      &quot;app&quot;: {
        &quot;tailscale.com/cap/relay&quot;: []
      }
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按地区划分中继节点：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;grants&quot;: [
    {
      &quot;src&quot;: [&quot;tag:asia-devices&quot;],
      &quot;dst&quot;: [&quot;tag:asia-relay&quot;],
      &quot;app&quot;: {
        &quot;tailscale.com/cap/relay&quot;: []
      }
    },
    {
      &quot;src&quot;: [&quot;tag:us-devices&quot;],
      &quot;dst&quot;: [&quot;tag:us-relay&quot;],
      &quot;app&quot;: {
        &quot;tailscale.com/cap/relay&quot;: []
      }
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Step 3：验证连接&lt;/h3&gt;
&lt;p&gt;配置完成后，在客户端设备上检查连接状态：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tailscale status | grep peer-relay
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果配置正确，你会看到连接类型变为 &lt;code&gt;peer-relay&lt;/code&gt;，并显示中继节点的地址和端口：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;peer-relay 100.x.x.x:40000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;之前显示 &lt;code&gt;relay&lt;/code&gt; 的连接现在应该变成了 &lt;code&gt;peer-relay&lt;/code&gt;，延迟和速度都会有明显改善。&lt;/p&gt;
&lt;h2&gt;进阶配置&lt;/h2&gt;
&lt;h3&gt;静态端点&lt;/h3&gt;
&lt;p&gt;如果中继节点位于 NAT 后面（如云服务商的 Managed NAT Gateway），Tailscale 可能无法自动发现其公网地址。这时可以手动指定静态端点：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tailscale set --relay-server-port=40000 \
  --relay-server-static-endpoints=&quot;203.0.113.10:40000&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;支持同时指定多个地址（IPv4 + IPv6）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tailscale set --relay-server-port=40000 \
  --relay-server-static-endpoints=&quot;[2001:db8::1]:40000,203.0.113.10:40000&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
静态端点适用于有固定公网 IP 的 VPS 或使用了 NAT Gateway 的云环境。如果你的节点能被 Tailscale 自动发现，不需要配置这项。
:::&lt;/p&gt;
&lt;h3&gt;Prometheus 监控指标&lt;/h3&gt;
&lt;p&gt;Peer Relay 节点会暴露 Prometheus 格式的监控指标，方便接入 Grafana 等监控系统：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;code&gt;forwarded_packets_total&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;中继转发的总包数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;forwarded_bytes_total&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;中继转发的总字节数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;relay_latency&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;中继连接延迟&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;ACL 规则建议&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;按地理区域分组设备和中继节点（如上面的区域配置示例）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src&lt;/code&gt; 范围尽量精确，只授权需要中继的设备&lt;/li&gt;
&lt;li&gt;定期检查 ACL 规则，移除不再需要的授权&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;防火墙配置&lt;/h3&gt;
&lt;p&gt;确保中继节点的防火墙放行了对应的 UDP 端口：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ufw allow 40000/udp
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo iptables -A INPUT -p udp --dport 40000 -j ACCEPT
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo firewall-cmd --permanent --add-port=40000/udp
sudo firewall-cmd --reload
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::warning
只放行 UDP 端口即可，Peer Relay 不使用 TCP。同时建议限制来源 IP 为 Tailscale 的 CGNAT 地址段 &lt;code&gt;100.64.0.0/10&lt;/code&gt;，增强安全性。
:::&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;Peer Relay 解决了 Tailscale 在严格 NAT 环境下的性能痛点。相比自建 DERP，它的配置更简单，且使用原生 WireGuard 协议，性能更优。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;相关链接：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tailscale Peer Relay 官方文档：https://tailscale.com/kb/1532/peer-relay&lt;/li&gt;
&lt;li&gt;Tailscale ACL Grants 文档：https://tailscale.com/kb/1324/acl-grants&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>category:教程</category><category>tag:Tailscale</category><category>tag:WireGuard</category><category>tag:Peer Relay</category><category>tag:VPN</category><category>tag:网络优化</category></item><item><title>Tracearr 部署教程：一站式媒体服务器监控平台</title><link>https://catcat.blog/2026/03/tracearr-deployment-guide/</link><guid isPermaLink="true">https://catcat.blog/2026/03/tracearr-deployment-guide/</guid><description>详细介绍 Tracearr 的功能特点，以及使用 Dokploy 模板和 Docker Compose 部署的完整教程</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;众所周知，我有一个 Emby 服。之前一段时间没怎么关注客户端使用情况。虽然一开始就声明过不要使用网页播放，也不要随意共享账号，但实际运行下来还是有不少人这么用。结果就是很多人直接在网页端播放触发转码，服务器 CPU 长时间被大量占用。因为当时也没有精力去逐个排查和管理用户，这件事就一直拖着。&lt;/p&gt;
&lt;p&gt;过去如果想做这类监控，通常需要依赖像 Tautulli（只支持 Plex）或 Jellystat（只支持 Jellyfin）这样的工具。而今天要介绍的 Tracearr，则是一款同时支持三个媒体服务器平台的统一监控解决方案。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;connorgallopo/tracearr&quot;}&lt;/p&gt;
&lt;h2&gt;什么是 Tracearr？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tracearr&lt;/strong&gt; 是一个开源的媒体服务器实时监控平台，支持同时监控 Plex、Jellyfin 和 Emby。它可以实时跟踪流媒体播放情况，深入分析播放数据，并在账户共享失控之前发现并解决这些问题。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312101135472.avif&quot; alt=&quot;image-20260312101127620&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::note
事先声明，我不会主动收集记录服里人播放和历史记录也不用担心我公开，数据仅仅用于排查违规账户。
:::&lt;/p&gt;
&lt;h3&gt;主要功能&lt;/h3&gt;
&lt;p&gt;:::note
有个缺点，目前中文是支持的，但是是繁体中文，挺变扭。而且不支持旧，只能从新数据开始查起。
:::&lt;/p&gt;
&lt;h4&gt;实时监控面板&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多服务器仪表盘&lt;/strong&gt;：在一个界面查看所有媒体服务器状态&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实时会话追踪&lt;/strong&gt;：WebSocket 推送，延迟极低&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;交互式世界地图&lt;/strong&gt;：直观展示观众地理位置分布&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务器资源监控&lt;/strong&gt;：CPU、内存、转码器使用率&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;账号分享检测&lt;/h4&gt;
&lt;p&gt;Tracearr 提供六种智能检测规则，协助异常使用行为：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;strong&gt;不可能旅行&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;短时间内出现在地理位置相距过远的两个地方&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;同时多地点登录&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;同一账号在多个不同地点同时活跃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;设备速度异常&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;设备在物理上不可能的速度移动&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;并发流过多&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;超出正常个人使用范围的并发观看&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;地理限制违规&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;来自被限制地区的访问&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;账号长期不活跃&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;识别僵尸账号或被遗忘的分享&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;信任评分系统&lt;/h4&gt;
&lt;p&gt;基于用户行为自动计算&lt;strong&gt;信任分数&lt;/strong&gt;，违规行为会降低评分，帮助你快速识别高风险账号。&lt;/p&gt;
&lt;h4&gt;数据分析&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;观看历史记录与统计&lt;/li&gt;
&lt;li&gt;流媒体分析（转码 vs 直推、带宽使用、编码格式分布）&lt;/li&gt;
&lt;li&gt;媒体库分析（内容概览、质量分布、存储统计、观看热度）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;通知系统&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Discord Webhook&lt;/strong&gt; 集成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apprise&lt;/strong&gt; 支持（覆盖 80+ 通知服务）&lt;/li&gt;
&lt;li&gt;完全可自定义的通知模板&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;数据迁移&lt;/h4&gt;
&lt;p&gt;支持从 &lt;strong&gt;Tautulli&lt;/strong&gt; 和 &lt;strong&gt;Jellystat&lt;/strong&gt; 导入历史数据。&lt;/p&gt;
&lt;h3&gt;技术栈&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;前端&lt;/td&gt;
&lt;td&gt;React 19 + TypeScript + Tailwind CSS + shadcn/ui&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;后端&lt;/td&gt;
&lt;td&gt;Node.js + Fastify&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;数据库&lt;/td&gt;
&lt;td&gt;TimescaleDB（PostgreSQL 时序扩展）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;缓存&lt;/td&gt;
&lt;td&gt;Redis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;实时通信&lt;/td&gt;
&lt;td&gt;Socket.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;图表&lt;/td&gt;
&lt;td&gt;Highcharts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;地图&lt;/td&gt;
&lt;td&gt;Leaflet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;部署方式&lt;/h2&gt;
&lt;p&gt;Tracearr 提供三种 Docker 镜像标签：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;supervised&lt;/code&gt;：All-in-one 版本，内置数据库（最简单，适合新手）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;latest&lt;/code&gt;：标准版本，需要外部 TimescaleDB 和 Redis（推荐生产环境）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nightly&lt;/code&gt;：每日构建版，包含最新功能但可能不稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面介绍两种部署方式：&lt;strong&gt;Dokploy 模板部署&lt;/strong&gt;（推荐）和 &lt;strong&gt;Docker Compose 部署&lt;/strong&gt;。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;方式一：Dokploy 模板部署（推荐）&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://dokploy.com/&quot;&gt;Dokploy&lt;/a&gt; 是一个开源的 PaaS 平台，类似 Vercel 和 Heroku 的替代品，支持自托管。我封装了模板可以直接导入使用。&lt;/p&gt;
&lt;h3&gt;模板导入步骤&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxuc2VydmljZXM6XG4gIHRyYWNlYXJyOlxuICAgIGltYWdlOiBnaGNyLmlvL2Nvbm5vcmdhbGxvcG8vdHJhY2VhcnI6bGF0ZXN0XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gREFUQUJBU0VfVVJMPXBvc3RncmVzcWw6Ly8ke1BPU1RHUkVTX1VTRVJ9OiR7UE9TVEdSRVNfUEFTU1dPUkR9QHRpbWVzY2FsZTo1NDMyLyR7UE9TVEdSRVNfREJ9XG4gICAgICAtIFJFRElTX1VSTD1yZWRpczovLzoke1JFRElTX1BBU1NXT1JEfUByZWRpczo2Mzc5LzBcbiAgICAgIC0gSldUX1NFQ1JFVD0ke0pXVF9TRUNSRVR9XG4gICAgICAtIENPT0tJRV9TRUNSRVQ9JHtDT09LSUVfU0VDUkVUfVxuICAgICAgLSBORVhUX1BVQkxJQ19VUkw9aHR0cHM6Ly8ke0RPTUFJTn1cbiAgICAgIC0gTk9ERV9FTlY9cHJvZHVjdGlvblxuICAgIHZvbHVtZXM6XG4gICAgICAtIHRyYWNlYXJyLWRhdGE6L2FwcC9kYXRhXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHRpbWVzY2FsZTpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICAgIHJlZGlzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2Vfc3RhcnRlZFxuXG4gIHRpbWVzY2FsZTpcbiAgICBpbWFnZTogdGltZXNjYWxlL3RpbWVzY2FsZWRiLWhhOnBnMThcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBQT1NUR1JFU19VU0VSPSR7UE9TVEdSRVNfVVNFUn1cbiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIC0gUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQn1cbiAgICB2b2x1bWVzOlxuICAgICAgLSB0aW1lc2NhbGUtZGF0YTovaG9tZS9wb3N0Z3Jlcy9wZ2RhdGEvZGF0YVxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDogW1wiQ01ELVNIRUxMXCIsIFwicGdfaXNyZWFkeSAtVSAke1BPU1RHUkVTX1VTRVJ9IC1kICR7UE9TVEdSRVNfREJ9XCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogNVxuXG4gIHJlZGlzOlxuICAgIGltYWdlOiByZWRpczo3LWFscGluZVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgY29tbWFuZDogcmVkaXMtc2VydmVyIC0tcmVxdWlyZXBhc3MgJHtSRURJU19QQVNTV09SRH1cbiAgICB2b2x1bWVzOlxuICAgICAgLSByZWRpcy1kYXRhOi9kYXRhXG5cbnZvbHVtZXM6XG4gIHRyYWNlYXJyLWRhdGE6IHt9XG4gIHRpbWVzY2FsZS1kYXRhOiB7fVxuICByZWRpcy1kYXRhOiB7fVxuIiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbmRiX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjE2fVwiXG5yZWRpc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZDoxNn1cIlxuand0X3NlY3JldCA9IFwiJHtwYXNzd29yZDozMn1cIlxuY29va2llX3NlY3JldCA9IFwiJHtwYXNzd29yZDozMn1cIlxuXG5bY29uZmlnXVxubW91bnRzID0gW11cbmVudiA9IFtcbiAgXCJET01BSU49JHttYWluX2RvbWFpbn1cIixcbiAgXCJQT1NUR1JFU19VU0VSPXRyYWNlYXJyXCIsXG4gIFwiUE9TVEdSRVNfUEFTU1dPUkQ9JHtkYl9wYXNzd29yZH1cIixcbiAgXCJQT1NUR1JFU19EQj10cmFjZWFyclwiLFxuICBcIlJFRElTX1BBU1NXT1JEPSR7cmVkaXNfcGFzc3dvcmR9XCIsXG4gIFwiSldUX1NFQ1JFVD0ke2p3dF9zZWNyZXR9XCIsXG4gIFwiQ09PS0lFX1NFQ1JFVD0ke2Nvb2tpZV9zZWNyZXR9XCJcbl1cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwidHJhY2VhcnJcIlxucG9ydCA9IDMwMDBcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcbiIKfQ==
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;填写配置参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Domain&lt;/strong&gt;：你的域名（如 &lt;code&gt;tracearr.example.com&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;其他密码字段留空，系统会自动生成强密码&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击 &lt;strong&gt;Deploy&lt;/strong&gt;，等待约 2-3 分钟完成部署&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;访问填写的域名，注册管理员账号即可开始使用&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312101755125.avif&quot; alt=&quot;image-20260312101754497&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;方式二：官方docker compose 部署&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 创建目录
mkdir -p tracearr &amp;amp;&amp;amp; cd tracearr

# 下载官方示例配置
curl -O https://raw.githubusercontent.com/connorgallopo/Tracearr/main/docker/examples/docker-compose.pg18.yml

# 生成随机密钥
echo &quot;JWT_SECRET=$(openssl rand -hex 32)&quot; &amp;gt; .env
echo &quot;COOKIE_SECRET=$(openssl rand -hex 32)&quot; &amp;gt;&amp;gt; .env

# 启动服务
docker compose -f docker-compose.pg18.yml up -d

echo &quot;Tracearr 已启动，访问 http://localhost:3000&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;初始配置&lt;/h2&gt;
&lt;p&gt;首次访问 Tracearr 时，系统会引导你完成初始化：&lt;/p&gt;
&lt;h3&gt;1. 创建管理员账号&lt;/h3&gt;
&lt;p&gt;填写邮箱和密码注册第一个管理员账号。&lt;/p&gt;
&lt;h3&gt;2. 添加媒体服务器&lt;/h3&gt;
&lt;p&gt;Tracearr 支持同时添加多个 Plex / Jellyfin / Emby 服务器：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;strong&gt;Plex&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Token 认证（从 Plex 设置中获取）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jellyfin&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;API Key + 服务器地址&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Emby&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;API Key + 服务器地址&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260311161357682.avif&quot; alt=&quot;image-20260311161357191&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击 Sync 开始同步数据
&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260311161426571.avif&quot; alt=&quot;image-20260311161426432&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 导入历史数据（可选）&lt;/h3&gt;
&lt;p&gt;如果你之前使用 Tautulli 或 Jellystat：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;进入 &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Import&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;选择数据来源&lt;/li&gt;
&lt;li&gt;上传备份文件或连接原数据库&lt;/li&gt;
&lt;li&gt;等待导入完成&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312102140109.avif&quot; alt=&quot;image-20260312102138977&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;使用指南&lt;/h2&gt;
&lt;h3&gt;仪表盘概览&lt;/h3&gt;
&lt;p&gt;主界面分为几个区域：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;顶部统计&lt;/strong&gt;：当前在线用户、今日播放量、总用户数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;世界地图&lt;/strong&gt;：实时显示观众分布&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;活动会话&lt;/strong&gt;：当前正在播放的内容、进度、码率、转码状态&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务器状态&lt;/strong&gt;：CPU、内存、网络、转码器使用情况&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312101135472.avif&quot; alt=&quot;image-20260312101127620&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312102306529.avif&quot; alt=&quot;image-20260312102305962&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312102611547.avif&quot; alt=&quot;image-20260312102610283&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312102340504.avif&quot; alt=&quot;image-20260312102339238&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;用户管理&lt;/h3&gt;
&lt;p&gt;在 &lt;strong&gt;Users&lt;/strong&gt; 页面可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看所有用户的信任评分&lt;/li&gt;
&lt;li&gt;查看用户观看历史&lt;/li&gt;
&lt;li&gt;标记可疑账号&lt;/li&gt;
&lt;li&gt;查看账号违规记录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312102514887.avif&quot; alt=&quot;image-20260312102513677&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;数据分析&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Analytics&lt;/strong&gt; 菜单提供多维度统计：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;观看统计&lt;/strong&gt;：时段分布、内容类型偏好、设备分布&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;流媒体分析&lt;/strong&gt;：转码 vs 直推比例、平均码率、编码格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;媒体库分析&lt;/strong&gt;：存储使用、内容质量分布、热门内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312102439058.avif&quot; alt=&quot;image-20260312102437916&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312102902659.avif&quot; alt=&quot;image-20260312102902338&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;违规规则设定以及分析&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260312102739665.avif&quot; alt=&quot;image-20260312102739241&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;API 使用&lt;/h3&gt;
&lt;p&gt;Tracearr 提供完整的 REST API，文档位于 &lt;code&gt;/api-docs&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 获取当前会话
curl -H &quot;Authorization: Bearer YOUR_TOKEN&quot; \
  https://tracearr.example.com/api/sessions/active

# 获取用户列表
curl -H &quot;Authorization: Bearer YOUR_TOKEN&quot; \
  https://tracearr.example.com/api/users

# 获取统计数据
curl -H &quot;Authorization: Bearer YOUR_TOKEN&quot; \
  https://tracearr.example.com/api/analytics/overview
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;与 Tautulli / Jellystat 对比&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;功能&lt;/th&gt;
&lt;th&gt;Tracearr&lt;/th&gt;
&lt;th&gt;Tautulli&lt;/th&gt;
&lt;th&gt;Jellystat&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Plex 支持&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jellyfin 支持&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Emby 支持&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;多服务器统一&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;分享检测&lt;/td&gt;
&lt;td&gt;✅ 高级&lt;/td&gt;
&lt;td&gt;✅ 基础&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;信任评分&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;实时地图&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开源协议&lt;/td&gt;
&lt;td&gt;AGPL-3.0&lt;/td&gt;
&lt;td&gt;GPL-3.0&lt;/td&gt;
&lt;td&gt;GPL-3.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Tracearr 的优势&lt;/strong&gt;在于统一管理和高级的账号分享检测，适合同时运行多个媒体服务器的用户。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;Tracearr 作为新兴的媒体服务器监控工具，凭借其&lt;strong&gt;多平台支持&lt;/strong&gt;和&lt;strong&gt;智能分享检测&lt;/strong&gt;功能，填补了 Tautulli 和 Jellystat 的空白。对于同时运行 Plex、Jellyfin 或 Emby 的用户来说，这是一个值得尝试的一站式解决方案。&lt;/p&gt;
&lt;p&gt;项目仍在积极开发中，未来计划包括更多通知渠道、移动端 App、以及更丰富的数据分析功能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;相关链接：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub：https://github.com/connorgallopo/tracearr&lt;/li&gt;
&lt;li&gt;官方文档：https://docs.tracearr.com/&lt;/li&gt;
&lt;li&gt;Docker Hub：https://ghcr.io/connorgallopo/tracearr&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
</content:encoded><category>category:教程</category><category>tag:Tracearr</category><category>tag:Plex</category><category>tag:Jellyfin</category><category>tag:Emby</category><category>tag:监控</category><category>tag:Docker</category><category>tag:Dokploy</category><category>tag:自托管</category></item><item><title>每次新机器都要重新配环境？试试这个 rig</title><link>https://catcat.blog/2026/03/rig-bootstrap-development-environment/</link><guid isPermaLink="true">https://catcat.blog/2026/03/rig-bootstrap-development-environment/</guid><description>介绍 rig 这个用 Bash 编写的开发环境配置框架：支持 Linux 与 macOS，一行命令安装 Shell、语言运行时、Docker、AI 编程工具，并支持预设、导出导入与代理配置。</description><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;每次新机器都要重新配环境？试试这个 rig&lt;/h1&gt;
&lt;p&gt;群友最近做了个小工具，专门解决一个很常见、但也挺烦的问题：&lt;strong&gt;新机器初始化环境&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;只要你经常折腾服务器或者开发机，大概率都经历过这个流程：&lt;/p&gt;
&lt;p&gt;装 &lt;code&gt;zsh&lt;/code&gt;，配 &lt;code&gt;Oh My Zsh&lt;/code&gt;，装 &lt;code&gt;nvm&lt;/code&gt;，跑 Docker，补 Git 配置，再把&lt;code&gt;ripgrep&lt;/code&gt;、&lt;code&gt;fd&lt;/code&gt;、&lt;code&gt;bat&lt;/code&gt;、&lt;code&gt;jq&lt;/code&gt;、&lt;code&gt;gh&lt;/code&gt; 这些常用工具装一遍。&lt;/p&gt;
&lt;p&gt;在 Ubuntu 上还算熟练，一旦换到 CentOS、Fedora、Arch，甚至 macOS，包名和安装命令又变了一套。&lt;/p&gt;
&lt;p&gt;云服务器、本地开发机、WSL、临时测试机……几乎每台机器都要重新折腾一遍。&lt;/p&gt;
&lt;p&gt;如果你也对这种事情有点烦，那可以试试这个项目：&lt;strong&gt;rig&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;X-Zero-L/rig&quot;}&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;快速开始&lt;/h1&gt;
&lt;p&gt;交互式 TUI — 选择要安装的组件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://ba.sh/rig | bash
# 或: curl -fsSL https://raw.githubusercontent.com/X-Zero-L/rig/master/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;通过代理（推荐国内用户）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://z.ls/rig | bash -s -- --gh-proxy https://gh-proxy.org
# 或: curl -fsSL https://gh-proxy.org/https://raw.githubusercontent.com/X-Zero-L/rig/master/install.sh | bash -s -- --gh-proxy https://gh-proxy.org

&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260311100720731.avif&quot; alt=&quot;image-20260311100713236&quot; /&gt;&lt;/h2&gt;
&lt;h1&gt;rig 能做什么&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;rig&lt;/code&gt; 主要解决的其实就是一件事：&lt;strong&gt;把一台新机器常见的开发环境一次性配好。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;目前已经内置了十几种常见组件，大致分成几类：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;基础环境&lt;/td&gt;
&lt;td&gt;&lt;code&gt;zsh&lt;/code&gt;、Oh My Zsh、Starship、Tmux、Git、&lt;code&gt;ripgrep&lt;/code&gt;、&lt;code&gt;fd&lt;/code&gt;、&lt;code&gt;bat&lt;/code&gt;、&lt;code&gt;jq&lt;/code&gt;、&lt;code&gt;gh&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;语言运行时&lt;/td&gt;
&lt;td&gt;Node.js（&lt;code&gt;nvm&lt;/code&gt;）、Python（&lt;code&gt;uv&lt;/code&gt;）、Go（&lt;code&gt;goenv&lt;/code&gt;）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;基础设施&lt;/td&gt;
&lt;td&gt;Docker、Compose、SSH 加固、Tailscale、Clash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 编程助手&lt;/td&gt;
&lt;td&gt;Claude Code、Codex CLI、Gemini CLI、Agent Skills&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;基本上把开发和运维常用的一些工具都覆盖到了。&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;为什么不用 Ansible&lt;/h1&gt;
&lt;p&gt;很多人看到这种项目，第一反应可能是：&lt;strong&gt;“那为什么不用 Ansible？”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;其实两者解决的不是同一件事。&lt;/p&gt;
&lt;p&gt;Ansible 更适合管理&lt;strong&gt;大量服务器&lt;/strong&gt;，比如机房里几十台甚至几百台机器统一编排。&lt;/p&gt;
&lt;p&gt;而 &lt;code&gt;rig&lt;/code&gt; 的场景更简单一点：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我刚拿到一台新机器，想把自己的开发环境尽快装齐。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1&gt;跨平台支持&lt;/h1&gt;
&lt;p&gt;很多脚本都号称“跨平台”，但现实往往是：
作者在 Ubuntu 写完，其他系统只是&lt;strong&gt;刚好没报错&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rig&lt;/code&gt; 这里其实认真做了一层抽象，大致结构是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;OS 检测
   ↓
包名映射
   ↓
包管理器调用
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;简单理解就是：&lt;/p&gt;
&lt;p&gt;不同系统的软件包名称差异，由 &lt;code&gt;rig&lt;/code&gt; 内部去处理。&lt;/p&gt;
&lt;p&gt;例如 &lt;code&gt;fd&lt;/code&gt; 这个工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Debian / Ubuntu：&lt;code&gt;fd-find&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Arch Linux：&lt;code&gt;fd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS（Homebrew）：&lt;code&gt;fd&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些差异不需要你自己记，脚本会自动处理。&lt;/p&gt;
&lt;p&gt;目前支持的系统包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Debian / Ubuntu&lt;/li&gt;
&lt;li&gt;CentOS / RHEL&lt;/li&gt;
&lt;li&gt;Fedora&lt;/li&gt;
&lt;li&gt;Arch Linux&lt;/li&gt;
&lt;li&gt;macOS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装完成之后，可以用这个命令查看当前环境状态：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rig status
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;能很直观地看到哪些组件已经安装、版本是否正常。&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;预设安装模式&lt;/h1&gt;
&lt;p&gt;如果不想在菜单里一个个勾选组件，&lt;code&gt;rig&lt;/code&gt; 也提供了一些预设配置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;minimal&lt;/code&gt;：基础 shell + CLI 工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent&lt;/code&gt;：AI 编程工具（Claude / Codex / Gemini）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;devops&lt;/code&gt;：Docker、SSH、Tailscale 这类基础设施&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fullstack&lt;/code&gt;：全部安装&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如只想装 AI 编程相关工具：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rig install --preset agent
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果是远程脚本安装，也可以直接指定：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://raw.githubusercontent.com/X-Zero-L/rig/master/install.sh | bash -s -- --preset fullstack
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样一条命令基本就能把环境拉起来。&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;环境导出和迁移&lt;/h1&gt;
&lt;p&gt;执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rig export
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260311120855898.avif&quot; alt=&quot;image-20260311120855632&quot; /&gt;&lt;/p&gt;
&lt;p&gt;会生成两个文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rig-config.json&lt;/code&gt;：保存环境配置&lt;/li&gt;
&lt;li&gt;&lt;code&gt;secrets.env&lt;/code&gt;：保存 API Key 等敏感信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rig-config.json&lt;/code&gt; 可以直接放进 Git&lt;/li&gt;
&lt;li&gt;&lt;code&gt;secrets.env&lt;/code&gt; 权限默认是 &lt;code&gt;600&lt;/code&gt;，并自动加入 &lt;code&gt;.gitignore&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果以后换机器或者重装系统，只需要：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rig import ~/.rig/rig-config.json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;很多原本要重新配置的环境就可以直接复用了。&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;最终效果&lt;/h1&gt;
&lt;p&gt;如果你装的是一套比较完整的配置，最后得到的大概会是这样一套环境：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;zsh&lt;/code&gt; + Oh My Zsh（自动补全、语法高亮、历史搜索）&lt;/li&gt;
&lt;li&gt;Starship 统一提示符&lt;/li&gt;
&lt;li&gt;带主题和导航优化的 Tmux&lt;/li&gt;
&lt;li&gt;一套现代 CLI 工具链：&lt;code&gt;rg&lt;/code&gt;、&lt;code&gt;fd&lt;/code&gt;、&lt;code&gt;bat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;已经配置好的 Docker 环境&lt;/li&gt;
&lt;li&gt;可直接使用的 AI 编程助手工具&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260311120759190.avif&quot; alt=&quot;image-20260311120758868&quot; /&gt;&lt;/h2&gt;
&lt;h1&gt;总结&lt;/h1&gt;
&lt;p&gt;如果你经常要在新机器上重新配置开发环境，这个项目还是挺值得试试的。
有时候装环境本身并不难，但&lt;strong&gt;重复做很多次&lt;/strong&gt;就有点烦了。
如果能把这些事情自动化掉，日常效率确实会轻松不少。&lt;/p&gt;
&lt;hr /&gt;
</content:encoded><category>category:教程</category><category>tag:rig</category><category>tag:Bash</category><category>tag:Linux</category><category>tag:macOS</category><category>tag:Docker</category><category>tag:AI</category></item><item><title>部署 OpenClaw：开源 AI 个人助手从安装到 QQ 机器人接入</title><link>https://catcat.blog/2026/03/deploy-openclaw-ai-assistant/</link><guid isPermaLink="true">https://catcat.blog/2026/03/deploy-openclaw-ai-assistant/</guid><description>从零部署 OpenClaw 开源 AI 个人助手：安装配置、接入 AI 模型、QQ 机器人集成全流程教程</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;OpenClaw 是一款开源 AI 个人助手，运行在本地机器上，通过各种聊天应用与你交互。它支持多种 AI 模型提供商，拥有丰富的插件和技能系统，让你轻松打造属于自己的 AI 助手。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;openclaw/openclaw&quot;}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;官网：https://openclaw.ai&lt;/li&gt;
&lt;li&gt;文档：https://docs.openclaw.ai&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;什么是 OpenClaw？&lt;/h2&gt;
&lt;p&gt;OpenClaw 是一个本地优先的开源 AI 个人助手框架，核心特性包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多平台聊天接入&lt;/strong&gt;：支持 QQ、Telegram、Discord、微信等主流聊天平台&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型无关&lt;/strong&gt;：可接入 Anthropic、OpenAI、DeepSeek、Moonshot 等多种 AI 模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;插件/技能系统&lt;/strong&gt;：通过插件扩展功能，支持自定义技能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地优先&lt;/strong&gt;：数据存储在本地，保护隐私&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可视化面板&lt;/strong&gt;：内置 Dashboard 管理界面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;支持的聊天渠道：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;QQ（通过 QQ 开放平台）&lt;/li&gt;
&lt;li&gt;Telegram&lt;/li&gt;
&lt;li&gt;Discord&lt;/li&gt;
&lt;li&gt;微信（企业微信）&lt;/li&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;命令行（CLI）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;支持的 AI 模型提供商：&lt;/p&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;Anthropic&lt;/td&gt;
&lt;td&gt;Claude 4 Sonnet&lt;/td&gt;
&lt;td&gt;综合能力强&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;多模态支持好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenRouter&lt;/td&gt;
&lt;td&gt;多种模型&lt;/td&gt;
&lt;td&gt;聚合平台，按需选择&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;DeepSeek-V3&lt;/td&gt;
&lt;td&gt;性价比高&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Moonshot（Kimi）&lt;/td&gt;
&lt;td&gt;Kimi 2.5&lt;/td&gt;
&lt;td&gt;中文优化，长上下文&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;本地模型&lt;/td&gt;
&lt;td&gt;Ollama / LM Studio&lt;/td&gt;
&lt;td&gt;完全离线运行&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;环境准备&lt;/h2&gt;
&lt;p&gt;OpenClaw 基于 Node.js 运行，需要 &lt;strong&gt;Node.js 22+&lt;/strong&gt; 环境。&lt;/p&gt;
&lt;p&gt;推荐使用 nvm 管理 Node.js 版本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

# 安装 Node.js 22
nvm install 22
nvm use 22

# 验证版本
node --version  # 应该显示 v22.x.x
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
国内用户如果 npm 下载速度慢，可以使用 npmmirror 镜像：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm config set registry https://registry.npmmirror.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h2&gt;第一步：安装 OpenClaw&lt;/h2&gt;
&lt;p&gt;通过 npm 全局安装 OpenClaw：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g openclaw
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完成后验证：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;openclaw --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308210730820.avif&quot; alt=&quot;image-20260308210730699&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;第二步：运行初始化向导&lt;/h2&gt;
&lt;p&gt;首次安装完成后，运行初始化向导进行配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;openclaw onboard
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;向导会引导你完成以下步骤。&lt;/p&gt;
&lt;h3&gt;安全提示&lt;/h3&gt;
&lt;p&gt;初次运行时会显示安全提示，告知 OpenClaw 将在本地启动 Gateway 服务。确认后选择 &lt;strong&gt;Yes&lt;/strong&gt; 继续。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308210856238.avif&quot; alt=&quot;image-20260308210855911&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;选择 Onboarding 模式&lt;/h3&gt;
&lt;p&gt;向导提供两种模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QuickStart（推荐）&lt;/strong&gt;：快速配置，适合大部分用户&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advanced&lt;/strong&gt;：高级配置，可自定义更多选项&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;建议选择 QuickStart 模式快速上手。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308211017720.avif&quot; alt=&quot;image-20260308211017473&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;配置 AI 模型&lt;/h3&gt;
&lt;p&gt;选择你要接入的 AI 模型提供商，填写对应的 API Key。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;提供商&lt;/th&gt;
&lt;th&gt;API Key 获取地址&lt;/th&gt;
&lt;th&gt;备注&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;https://console.anthropic.com&lt;/td&gt;
&lt;td&gt;Claude 系列模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;https://platform.openai.com&lt;/td&gt;
&lt;td&gt;GPT 系列模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenRouter&lt;/td&gt;
&lt;td&gt;https://openrouter.ai&lt;/td&gt;
&lt;td&gt;聚合多种模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;https://platform.deepseek.com&lt;/td&gt;
&lt;td&gt;国产高性价比&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Moonshot&lt;/td&gt;
&lt;td&gt;https://platform.moonshot.cn&lt;/td&gt;
&lt;td&gt;Kimi 系列模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;本地模型&lt;/td&gt;
&lt;td&gt;Ollama / LM Studio&lt;/td&gt;
&lt;td&gt;无需 API Key&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里以 Kimi 2.5 为例，在 Moonshot 平台获取 API Key 后填入即可，其他提供商的配置流程类似。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308211053964.avif&quot; alt=&quot;image-20260308211053756&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308211309169.avif&quot; alt=&quot;image-20260308211308708&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::tip
每个提供商的详细配置方式可参考 OpenClaw 官方文档：https://docs.openclaw.ai/models
:::&lt;/p&gt;
&lt;h3&gt;选择聊天频道&lt;/h3&gt;
&lt;p&gt;选择你要接入的聊天平台。可以选择多个频道，后续也可以在 Dashboard 中添加。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308211208411.avif&quot; alt=&quot;image-20260308211208196&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::note
QQ 频道需要额外的配置步骤（注册 QQ 开放平台、创建机器人等），将在下一节详细说明。初始化时可以先跳过 QQ，后续再接入。
:::&lt;/p&gt;
&lt;h3&gt;配置技能&lt;/h3&gt;
&lt;p&gt;根据自己所需，如果你是Linux/mac，最好安装一下brew。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308211417495.avif&quot; alt=&quot;image-20260308211416956&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308211455841.avif&quot; alt=&quot;image-20260308211455555&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::note
这些 API Key 都是可选的，用于特定技能。没有的话全部选 No 跳过即可，后续可通过 openclaw configure 随时补充。
:::&lt;/p&gt;
&lt;h3&gt;确认UI&lt;/h3&gt;
&lt;p&gt;这是最后一步&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;**Hatch in TUI (recommended) **&lt;/td&gt;
&lt;td&gt;直接在终端进入交互式 TUI 界面，与 Bot 对话并设定人设。推荐选择此方式。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Open the Web UI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;打开浏览器中的 Web 控制面板完成初始化配置。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Do this later&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;跳过初始化流程，以后再进行设置。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308211607877.avif&quot; alt=&quot;image-20260308211607580&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择 Hatch in TUI 后，会自动进入终端聊天界面：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;openclaw tui - ws://127.0.0.1:18789 - agent main - session main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308211819167.avif&quot; alt=&quot;image-20260308211818888&quot; /&gt;
Bot 会发送 “Wake up, my friend!” 作为第一条消息。你可以开始和它对话，告诉它你的需求和偏好——描述越详细，后续体验越好。&lt;/p&gt;
&lt;p&gt;退出 TUI：按 Ctrl+C 即可退出。Bot 的 Gateway 服务仍在后台运行。&lt;/p&gt;
&lt;h3&gt;完成安装&lt;/h3&gt;
&lt;p&gt;向导完成后，OpenClaw 会自动启动 Gateway 服务。&lt;/p&gt;
&lt;p&gt;验证运行状态：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;openclaw status
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;打开可视化管理面板：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;openclaw dashboard
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;默认面板地址为 &lt;code&gt;http://localhost:3210&lt;/code&gt;，可以在面板中查看和管理你的 AI 助手。&lt;/p&gt;
&lt;h2&gt;第三步：QQ 机器人接入&lt;/h2&gt;
&lt;p&gt;将 OpenClaw 接入 QQ 机器人，需要完成以下步骤。&lt;/p&gt;
&lt;h3&gt;注册 QQ 开放平台&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://q.qq.com/qqbot/openclaw/login.html&quot;&gt;QQ 开放平台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;使用手机 QQ 扫码登录或注册开发者账号&lt;/li&gt;
&lt;li&gt;完成开发者认证&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308212008809.avif&quot; alt=&quot;image-20260308212007378&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;创建 QQ Bot 机器人&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录后进入 &lt;a href=&quot;https://q.qq.com/#/app/bot&quot;&gt;QQ 机器人管理页面&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;创建机器人&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;填写机器人基本信息（名称、头像、简介等）&lt;/li&gt;
&lt;li&gt;创建成功后，在机器人详情页获取 &lt;strong&gt;AppID&lt;/strong&gt; 和 &lt;strong&gt;AppSecret&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308211927944.avif&quot; alt=&quot;image-20260308211927499&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::important
AppID 和 AppSecret 是机器人的核心凭据，请妥善保管，不要泄露到公开仓库或分享给他人。
:::&lt;/p&gt;
&lt;h3&gt;安装 QQ Bot 插件并配置&lt;/h3&gt;
&lt;p&gt;安装 OpenClaw 的 QQ Bot 插件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;openclaw plugins install @sliverp/qqbot@latest

openclaw channels add --channel qqbot --token &quot;&quot;

openclaw gateway restart
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;使用&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/03/20260308212208744.avif&quot; alt=&quot;image-20260308212208310&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;安全注意事项&lt;/h2&gt;
&lt;p&gt;:::warning
OpenClaw 的 Gateway 服务默认监听本地端口，以下安全建议请务必注意：
:::&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;不要将 Gateway 端口直接暴露到公网&lt;/strong&gt;，避免未授权访问&lt;/li&gt;
&lt;li&gt;如需远程访问，使用 &lt;strong&gt;反向代理&lt;/strong&gt;（如 Nginx、Caddy）+ &lt;strong&gt;HTTPS&lt;/strong&gt; 加密&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定期更新&lt;/strong&gt; OpenClaw 到最新版本，获取安全修复&lt;/li&gt;
&lt;li&gt;API Key 等敏感信息不要提交到版本控制系统&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;常用命令&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;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;运行初始化向导&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;查看运行状态&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw dashboard&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;打开管理面板&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw gateway start&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;启动 Gateway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw gateway stop&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;停止 Gateway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw gateway restart&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;重启 Gateway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw plugins install &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;安装插件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw plugins list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;查看已安装插件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw skills list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;查看可用技能&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw config edit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;编辑配置文件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw update&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;更新到最新版本&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;通过本文，我们完成了以下步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;安装 OpenClaw&lt;/strong&gt;：通过 npm 全局安装&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;初始化配置&lt;/strong&gt;：运行向导完成 AI 模型和聊天频道配置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QQ 机器人接入&lt;/strong&gt;：注册 QQ 开放平台、创建机器人、安装插件并配置&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;OpenClaw 的插件和技能系统非常灵活，建议进一步探索：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安装更多插件扩展功能&lt;/li&gt;
&lt;li&gt;尝试接入不同的 AI 模型对比效果&lt;/li&gt;
&lt;li&gt;自定义技能满足个性化需求&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;相关链接：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenClaw 官网：https://openclaw.ai&lt;/li&gt;
&lt;li&gt;OpenClaw 文档：https://docs.openclaw.ai&lt;/li&gt;
&lt;li&gt;OpenClaw GitHub：https://github.com/openclaw/openclaw&lt;/li&gt;
&lt;li&gt;QQ 开放平台：https://q.qq.com&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>category:教程</category><category>tag:OpenClaw</category><category>tag:AI</category><category>tag:QQ Bot</category><category>tag:Node.js</category><category>tag:自托管</category></item><item><title>Hetzner CX33 部署 Proxmox Backup Server 并集成对象存储完整指南</title><link>https://catcat.blog/2026/02/hetzner-cx33-proxmox-backup-server-object-storage/</link><guid isPermaLink="true">https://catcat.blog/2026/02/hetzner-cx33-proxmox-backup-server-object-storage/</guid><description>详细教程：在 Hetzner CX33 云服务器上部署 Proxmox Backup Server，配置 Hetzner 对象存储作为后端，并与 Proxmox VE 集成实现自动化备份策略</description><pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;引言&lt;/h2&gt;
&lt;p&gt;在现代数据中心管理中，数据备份是确保业务连续性和灾难恢复能力的核心环节。Proxmox Virtual Environment (PVE) 作为开源虚拟化平台的佼佼者，配合其官方推出的 Proxmox Backup Server (PBS)，能够构建一套完整、高效且经济的企业级备份解决方案。&lt;/p&gt;
&lt;p&gt;本教程将详细介绍如何在 Hetzner Cloud 的 CX33 实例上部署 Proxmox Backup Server，利用 Hetzner 对象存储作为高性价比的后端存储，并与现有的 Proxmox VE 环境无缝集成，实现自动化的备份与保留策略。&lt;/p&gt;
&lt;h2&gt;为什么选择 Proxmox Backup Server&lt;/h2&gt;
&lt;p&gt;Proxmox Backup Server 是专为 PVE 环境设计的备份解决方案，相比传统的文件级备份工具，它具有以下显著优势：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;strong&gt;增量备份&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;基于变长块去重技术，仅传输和存储变化的数据块，显著降低存储占用和备份时间&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;端到端加密&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;支持客户端加密，确保备份数据在传输和存储过程中的安全性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;压缩支持&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;内置 Zstandard 压缩算法，在 CPU 开销和压缩率之间取得良好平衡&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;自动保留策略&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;灵活的备份保留规则，支持按时间维度（日/周/月/年）自动清理过期备份&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PVE 原生集成&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;与 Proxmox VE 深度集成，支持一键备份/恢复，无需额外配置&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;第一部分：创建 Hetzner CX33 服务器&lt;/h2&gt;
&lt;h3&gt;实例规格选择&lt;/h3&gt;
&lt;p&gt;Hetzner CX33 是一款性价比极高的云服务器，其规格如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;vCPU&lt;/strong&gt;: 4 核（Intel Xeon 或 AMD EPYC）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内存&lt;/strong&gt;: 8 GB&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;存储&lt;/strong&gt;: 80 GB SSD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网络&lt;/strong&gt;: 1 Gbps 带宽，20 TB 月流量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格&lt;/strong&gt;: 约 4.99 欧元/月&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于中小型 PVE 环境的备份需求，CX33 的性能完全足够。PBS 本身对计算资源要求不高，主要依赖内存进行去重索引，8GB 内存可以支持数 TB 级别的备份存储。&lt;/p&gt;
&lt;h3&gt;创建步骤&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录 &lt;a href=&quot;https://console.hetzner.cloud/&quot;&gt;Hetzner Cloud Console&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;选择项目，点击 &quot;Add Server&quot;&lt;/li&gt;
&lt;li&gt;选择 Location（建议选择与 PVE 主机相同的区域以降低延迟）&lt;/li&gt;
&lt;li&gt;选择 Type: &lt;strong&gt;CX33&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;选择 Image: &lt;strong&gt;Debian 13&lt;/strong&gt; (Trixie)&lt;/li&gt;
&lt;li&gt;配置 SSH Key 或密码认证&lt;/li&gt;
&lt;li&gt;确认防火墙规则，确保 &lt;strong&gt;8007&lt;/strong&gt; 端口可访问&lt;/li&gt;
&lt;li&gt;创建服务器并记录分配的 IP 地址&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154048305.avif&quot; alt=&quot;firewall&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;第二部分：安装 Proxmox Backup Server&lt;/h2&gt;
&lt;p&gt;通过 SSH 连接到新创建的 CX33 服务器，执行以下安装步骤：&lt;/p&gt;
&lt;h3&gt;添加 Proxmox 软件源&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 下载并添加 Proxmox 发行版签名密钥
sudo wget https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg \
  -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg

# 添加 PBS 社区版软件源（无订阅）
echo &quot;deb http://download.proxmox.com/debian/pbs trixie pbs-no-subscription&quot; | \
  sudo tee /etc/apt/sources.list.d/proxmox-backup-server.list
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;安装软件包&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install proxmox-backup -y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装过程中，系统会提示配置 Postfix 邮件传输代理。如果您尚未配置邮件发送策略，建议暂时选择 &lt;strong&gt;&quot;No configuration&quot;&lt;/strong&gt;，后续可通过 &lt;code&gt;dpkg-reconfigure postfix&lt;/code&gt; 重新配置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154020117.avif&quot; alt=&quot;Postfix&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;访问 Web 管理界面&lt;/h3&gt;
&lt;p&gt;安装完成后，PBS 服务将自动启动。通过浏览器访问：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://&amp;lt;your-server-ip&amp;gt;:8007
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154130411.avif&quot; alt=&quot;pbs&quot; /&gt;&lt;/p&gt;
&lt;p&gt;首次访问时会遇到 SSL 证书警告，这是因为 PBS 使用自签名证书。添加安全例外后即可进入登录页面。默认使用 Linux 系统用户 &lt;code&gt;root&lt;/code&gt; 及其密码登录。&lt;/p&gt;
&lt;h2&gt;第三部分：配置 Hetzner 对象存储&lt;/h2&gt;
&lt;p&gt;Hetzner 对象存储是基于 S3 兼容 API 的高性价比存储服务，价格仅为 €0.006/GB/月，非常适合作为 PBS 的远程存储后端。&lt;/p&gt;
&lt;h3&gt;创建对象存储桶&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;进入 &lt;a href=&quot;https://console.hetzner.cloud/&quot;&gt;Hetzner Cloud Console&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;导航至左侧菜单的 &lt;strong&gt;Object Storage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;选择 &lt;strong&gt;Locations&lt;/strong&gt; 标签，启用所需区域（如 hel1、fsn1 或 nbg1）&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Create Bucket&lt;/strong&gt;，输入桶名称（如 &lt;code&gt;proxmox-backups&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;记录桶的 &lt;strong&gt;Endpoint URL&lt;/strong&gt; 格式：&lt;code&gt;https://&amp;lt;bucket-name&amp;gt;.&amp;lt;region&amp;gt;.your-objectstorage.com&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Available endpoints&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Endpoint&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Falkenstein&lt;/td&gt;
&lt;td&gt;&lt;code&gt;fsn1.your-objectstorage.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nuremberg&lt;/td&gt;
&lt;td&gt;&lt;code&gt;nbg1.your-objectstorage.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Helsinki&lt;/td&gt;
&lt;td&gt;&lt;code&gt;hel1.your-objectstorage.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154157794.avif&quot; alt=&quot;object-storage&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;生成访问密钥&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;在 Object Storage 页面，切换到 &lt;strong&gt;Credentials&lt;/strong&gt; 标签&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;S3 Credentials&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;输入描述（如 &lt;code&gt;PBS-Access&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;复制生成的 &lt;strong&gt;Access Key&lt;/strong&gt; 和 &lt;strong&gt;Secret Key&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154204072.avif&quot; alt=&quot;S3 Credentials&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::caution[密钥安全]
Secret Key 仅在创建时显示一次，请妥善保存。如遗失，需要重新生成新的凭证。
:::&lt;/p&gt;
&lt;h2&gt;第四部分：PBS 配置对象存储集成&lt;/h2&gt;
&lt;h3&gt;创建 S3 端点配置&lt;/h3&gt;
&lt;p&gt;登录 PBS Web 界面，按以下步骤配置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;导航至 &lt;strong&gt;Configuration → S3 Endpoints&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Add&lt;/strong&gt; 按钮&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;填写端点配置：&lt;/p&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;&lt;strong&gt;S3 Endpoint ID&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;hetzner-obs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;PBS 内部标识符，可自定义&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Endpoint&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://&amp;lt;region&amp;gt;.your-objectstorage.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;用上面默认的&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Region&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;hel1&lt;/code&gt; / &lt;code&gt;fsn1&lt;/code&gt; / &lt;code&gt;nbg1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;根据创建桶时选择的区域填写&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access Key&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;YOUR_ACCESS_KEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;从 Credentials 页面获取&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Secret Key&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;YOUR_SECRET_KEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;从 Credentials 页面获取&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ol&gt;
&lt;li&gt;展开 &lt;strong&gt;Advanced&lt;/strong&gt; 选项&lt;/li&gt;
&lt;li&gt;将 &lt;strong&gt;Provider Quirks&lt;/strong&gt; 设置为 &lt;strong&gt;Skip&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154430214.avif&quot; alt=&quot;Create S3 Endpoint&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::tip[Provider Quirks 说明]
Hetzner 对象存储在某些 S3 API 实现上与 AWS S3 存在细微差异。启用 &quot;Skip&quot;  quirks 可以确保 PBS 正确处理这些差异，避免备份操作失败。
:::&lt;/p&gt;
&lt;h3&gt;创建数据存储&lt;/h3&gt;
&lt;p&gt;配置好 S3 端点后，创建实际的数据存储：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;导航至 &lt;strong&gt;Datastore&lt;/strong&gt; 菜单&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Add Datastore&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;填写配置：&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;hetzner-backup&lt;/code&gt;（可自定义）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;S3&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Local Path&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/var/lib/proxmox-backup/s3-cache&lt;/code&gt;（本地缓存目录）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;S3 Endpoint&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;选择刚才创建的 &lt;code&gt;hetzner-pbs&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bucket&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;下拉选择自动识别的存储桶&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154432954.avif&quot; alt=&quot;Create Datastore&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击 &lt;strong&gt;Add&lt;/strong&gt; 完成创建&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PBS 会在本地维护一个缓存层，用于存储去重索引和最近访问的数据块，从而减少对对象存储的 API 调用次数，提升备份和恢复性能。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154615833.avif&quot; alt=&quot;Cache&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;第五部分：PVE 集成与备份配置&lt;/h2&gt;
&lt;h3&gt;创建 PBS 备份用户&lt;/h3&gt;
&lt;p&gt;为了遵循最小权限原则，建议为 PVE 连接创建专用用户：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 PBS 中，导航至 &lt;strong&gt;Configuration → Access Control → User Management&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Add&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;填写用户信息：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;User name&lt;/strong&gt;: &lt;code&gt;dataguard&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Realm&lt;/strong&gt;: &lt;code&gt;pbs&lt;/code&gt;（本地认证）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;设置强密码并记录&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;配置用户权限&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;进入 &lt;strong&gt;Permissions&lt;/strong&gt; 标签&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Add → User Permission&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;配置：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Path&lt;/strong&gt;: &lt;code&gt;/hetzner-backup&lt;/code&gt;（选择创建的数据存储）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User&lt;/strong&gt;: &lt;code&gt;dataguard@pbs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Role&lt;/strong&gt;: &lt;strong&gt;DatastoreBackup&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此角色允许用户创建、读取和删除备份，但无法修改 PBS 系统配置。&lt;/p&gt;
&lt;h3&gt;在 PVE 中添加 PBS 存储&lt;/h3&gt;
&lt;p&gt;登录 PVE Web 界面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;导航至 &lt;strong&gt;Datacenter → Storage → Add → Proxmox Backup Server&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;填写配置：&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;strong&gt;ID&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pbs-hetzner&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Server&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PBS 服务器 IP 或域名&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Username&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dataguard@pbs&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Password&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;上述设置的密码&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Datastore&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;hetzner-backup&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fingerprint&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;从 PBS 证书页面获取的 SHA-256 指纹&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154646307.avif&quot; alt=&quot;Get Fingerprint&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154652817.avif&quot; alt=&quot;ADD Storage&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154656334.avif&quot; alt=&quot;Add Storage Success&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击 &lt;strong&gt;Add&lt;/strong&gt; 完成添加&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;配置虚拟机备份任务&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;选择目标节点，进入 &lt;strong&gt;Backup&lt;/strong&gt; 标签&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Add&lt;/strong&gt; 创建备份任务&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154803391.avif&quot; alt=&quot;create backup&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260204154939254.avif&quot; alt=&quot;backup task&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基本设置：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;strong&gt;Storage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pbs-hetzner&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Schedule&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0 2 * * *&lt;/code&gt;（每天凌晨 2 点）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Selection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;选择需要备份的 VM/CT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mode&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Snapshot&lt;/strong&gt;（推荐，零停机）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compression&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ZSTD&lt;/strong&gt;（平衡压缩率和速度）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Encryption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;启用并设置加密密钥（可选但推荐）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;配置自动修剪策略&lt;/h3&gt;
&lt;p&gt;在 PBS Web 界面中，为数据存储配置保留策略：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;进入 &lt;strong&gt;Datastore → hetzner-backup → Prune &amp;amp; GC&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Add&lt;/strong&gt; 创建保留规则&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;示例配置（3-2-1 备份策略变体）：&lt;/strong&gt;&lt;/p&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;&lt;strong&gt;Keep Daily&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;保留最近 7 天的每日备份&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Keep Weekly&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;保留最近 4 周的每周备份&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Keep Monthly&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;保留最近 6 个月的每月备份&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ol&gt;
&lt;li&gt;启用 &lt;strong&gt;Prune Jobs&lt;/strong&gt; 自动执行修剪&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此配置确保：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;短期恢复：可回滚到最近 7 天内的任意一天&lt;/li&gt;
&lt;li&gt;中期恢复：可获取过去 4 周的周级快照&lt;/li&gt;
&lt;li&gt;长期归档：保留 6 个月的月度备份用于合规或审计&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;第六部分：验证与监控&lt;/h2&gt;
&lt;h3&gt;测试备份流程&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;在 PVE 中手动触发一次备份任务&lt;/li&gt;
&lt;li&gt;观察任务日志，确认无错误&lt;/li&gt;
&lt;li&gt;在 PBS Web 界面中验证备份快照已创建&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;测试恢复流程&lt;/h3&gt;
&lt;p&gt;定期进行恢复测试是备份策略的关键环节：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 PBS 中选择备份快照，点击 &lt;strong&gt;Restore&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;选择目标 PVE 节点和存储&lt;/li&gt;
&lt;li&gt;执行恢复并验证虚拟机/容器可正常启动&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;监控与告警建议&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;备份任务通知&lt;/strong&gt;: 在 PVE 中配置通知邮箱，接收备份失败告警&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;存储容量监控&lt;/strong&gt;: 通过 Hetzner Console 监控对象存储使用量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PBS 指标&lt;/strong&gt;: 访问 &lt;strong&gt;Metrics&lt;/strong&gt; 页面查看去重率、传输速率等关键指标&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;通过本教程，您已成功构建了一套基于 Hetzner CX33 和对象存储的 Proxmox Backup Server 解决方案。该架构具有以下特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;成本效益&lt;/strong&gt;: CX33 实例+ 对象存储，远低于商业备份方案&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可靠性&lt;/strong&gt;: Hetzner 对象存储基于分布式架构，提供 99.9% 的可用性 SLA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全性&lt;/strong&gt;: 支持传输层 TLS 加密和备份数据客户端加密&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动化&lt;/strong&gt;: 完整的定时备份和自动修剪，减少人工干预&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于生产环境，建议进一步考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;配置 PBS 的冗余部署或定期异地复制&lt;/li&gt;
&lt;li&gt;启用备份加密并安全保管密钥&lt;/li&gt;
&lt;li&gt;建立定期的恢复演练机制&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;参考资源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pbs.proxmox.com/docs/&quot;&gt;Proxmox Backup Server 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.hetzner.com/storage/object-storage/&quot;&gt;Hetzner 对象存储文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pve.proxmox.com/wiki/Backup_and_Restore&quot;&gt;PVE 备份最佳实践&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>category:教程</category><category>tag:Proxmox</category><category>tag:Hetzner</category><category>tag:备份</category><category>tag:对象存储</category><category>tag:PBS</category><category>tag:教程</category></item><item><title>玩转IX与Mkcloud互联互通</title><link>https://catcat.blog/2026/01/mkcloud-benchamrk-and-ix-cloud-connectivity/</link><guid isPermaLink="true">https://catcat.blog/2026/01/mkcloud-benchamrk-and-ix-cloud-connectivity/</guid><description>深入解析IX互联网交换中心的工作原理，对比IX与传统专线的优缺点，并实测Mkcloud的广港IEPL、沪日IPLC及IX专线产品性能表现</description><pubDate>Thu, 29 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;之前一直听群友之间传一款IX专线或者上云专线类似的产品，无奈我没有相关的机器和渠道，最终也只是停留在了解阶段。最近刚好有个机会，Mkcloud找我测试他们家的IX和专线等产品，本着学习的精神立马入手了相关IX的前置条件和浅浅的了解了一下。&lt;/p&gt;
&lt;h2&gt;什么是IX?&lt;/h2&gt;
&lt;p&gt;IX（Internet Exchange）或 IXP（Internet Exchange Point），中文全称是“互联网交换中心”。简单来说，就是多个网络运营商在一个物理位置建立的交换中心，用于交换网络流量。他是没有公网入口的专线，他的入口是IX交换中心的内网IP没有公网的路由，只与几个大厂如腾讯阿里华为等大厂交换路由。所以需要用户准备前置的入口来接入。&lt;/p&gt;
&lt;h2&gt;IX和传统专线的对比&lt;/h2&gt;
&lt;h3&gt;优点&lt;/h3&gt;
&lt;p&gt;IX 架构的一个显著优势在于其不暴露公网 IP。
由于业务运行在交换网络的内网地址之上，天然规避了来自公网的直接攻击面。相比依赖公网 IP 的网络形态，IX 环境下几乎不存在传统意义上的大规模公网 DDoS 风险。即便发生异常流量，也能够在交换层或成员网络内部快速定位来源。与此同时，发起攻击的成本被显著抬高——相关资源通常依赖云厂商或运营网络的强实名体系，无论是合规性还是经济成本，都远高于普通公网 DDoS 行为。&lt;/p&gt;
&lt;p&gt;同样由于不暴露公网地址，IX 网络几乎无法被公网扫描。
这意味着相关服务难以被自动化扫描工具发现，也就极大降低了被安全机构通报、误报或连带清退的风险。与部分依赖公网专线、频繁因扫描或流量异常触发通报的方案相比，IX 在稳定性与合规风险控制方面具有明显优势。(近期听说通报越来越频繁)&lt;/p&gt;
&lt;h3&gt;缺点&lt;/h3&gt;
&lt;p&gt;优点说完了，那缺点呢。尽管 IX 架构在安全性与合规风险控制方面具备明显优势，但传统专线模式所固有的一些问题并未消失，而是以另一种形式转移给了终端使用者。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;DDoS 防护责任前移至用户侧
在多数情况下，IX 专线并不自带公网级别的 DDoS 清洗能力，相关防护需要由用户自行配置或额外购买。对于普通云服务器而言，一旦遭遇攻击，往往会直接触发黑洞机制，且缺乏明确的前置 SLA 保障。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通报风险并未消失，而是由用户直接承担
所谓“抗通报”，本质上并非问题被消解，而是合规与责任被前置到使用者一侧。当前主流云厂商普遍采用强实名制度，一旦出现违规流量或合规问题，追责路径十分清晰，最终责任需要由用户自行承担。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;时延表现略逊于极致优化的传统专线
在网络路径上，IX 架构通常需要经过一段前置网络才能进入专线内网，相比直连型传统专线，客观上会引入额外延迟。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;IX总结&lt;/h2&gt;
&lt;p&gt;综合来看，前文提到的这些不足，在 IX 相对低廉的定价面前其实是可以接受的(其实也不算低)。对于大多数个人用户而言，被大规模 DDoS 攻击的概率并不高。&lt;/p&gt;
&lt;p&gt;在实际使用中，IX 的主要门槛反而并不在链路本身，而在于前置资源的选择与对端配置能力。目前性价比较高、带宽较大的前置方案主要集中在阿里云和腾讯云的轻量实例（如标称 200M 带宽），但其带宽并不具备强保证，已有不少实例被限速至 20M 甚至 1M 的实际案例。另一方面，延迟表现更优的火山云并未提供轻量实例形态，其按量计费的流量成本（约 0.8 元/GB）在长期使用场景下显得较为高昂。&lt;/p&gt;
&lt;p&gt;因此，IX 的使用门槛更多体现在前置网络的稳定性、成本控制，以及用户自行完成链路与对端配置的能力上；而传统专线方案则已经在这些环节完成了预配置与整合，用户只需“即开即用”。这也是两种方案在使用体验上的核心差异所在。&lt;/p&gt;
&lt;h2&gt;Mkcloud介绍&lt;/h2&gt;
&lt;p&gt;以下介绍来自商家自述。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公司名称：MKADMD&lt;/li&gt;
&lt;li&gt;成立时间：2023年11月25日&lt;/li&gt;
&lt;li&gt;运营时间：接近三年&lt;/li&gt;
&lt;li&gt;业务介绍：提供广港IEPL、沪日/沪港IPLC及IXP等多种跨境专线资源，全线产品均需实名认证并限正规用途，无论共享或独享带宽均配有独立IP&lt;/li&gt;
&lt;li&gt;产品介绍：https://www.mkcloud.net/index.php/knowledgebase/38 (我们是第一家发布以及售卖的ixp专线商家)&lt;/li&gt;
&lt;li&gt;TOS地址：https://www.mkcloud.net/index.php/announcements/2&lt;/li&gt;
&lt;li&gt;SLA说明：全部产品均无SLA保证，上一年出现突发故障约3次(不包含提前告知的网络维护等通知)，虽然无SLA保证，但是我们会尽力保证可用性。如需SLA保证也可以定制化&lt;/li&gt;
&lt;li&gt;退款政策：24小时内产品无质量问题不支持退款&lt;/li&gt;
&lt;li&gt;官方网站：https://www.mkcloud.net/&lt;/li&gt;
&lt;li&gt;官方交流群：https://t.me/mkcloudchat&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;转述一个他们对于正规用途的定义:我们对正规用途的定义是不进行回国等违法行为即为合规用途&lt;/p&gt;
&lt;h2&gt;测评&lt;/h2&gt;
&lt;h3&gt;测评环境&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;前置：火山引擎ECS&lt;/li&gt;
&lt;li&gt;带宽：2000M&lt;/li&gt;
&lt;li&gt;计费：按量计费 机器550/年，共享流量包 437/T/年&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260201214048128.avif&quot; alt=&quot;image-20260201214040914&quot; /&gt;&lt;/p&gt;
&lt;p&gt;提供测试的机器有  广港专线、沪日专线、深港ix专线、沪港ix专线、沪日ix专线。&lt;/p&gt;
&lt;p&gt;由于我没有买华南的火山包和机器，深港ix咱们就不看。其中广港专线、沪日专线是仅限一个省份连入的，这个需要额外注意。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;线路名称&lt;/th&gt;
&lt;th&gt;CPU&lt;/th&gt;
&lt;th&gt;内存&lt;/th&gt;
&lt;th&gt;硬盘&lt;/th&gt;
&lt;th&gt;峰值带宽&lt;/th&gt;
&lt;th&gt;月流量&lt;/th&gt;
&lt;th&gt;入口&lt;/th&gt;
&lt;th&gt;出口&lt;/th&gt;
&lt;th&gt;IPv4&lt;/th&gt;
&lt;th&gt;端内延迟&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;广港专线&lt;/td&gt;
&lt;td&gt;1核&lt;/td&gt;
&lt;td&gt;2GB&lt;/td&gt;
&lt;td&gt;20GB&lt;/td&gt;
&lt;td&gt;150M&lt;/td&gt;
&lt;td&gt;500GB&lt;/td&gt;
&lt;td&gt;腾讯广州八线 BGP&lt;/td&gt;
&lt;td&gt;香港 BGP&lt;/td&gt;
&lt;td&gt;独享 x2&lt;/td&gt;
&lt;td&gt;1–2 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;沪日专线&lt;/td&gt;
&lt;td&gt;1核&lt;/td&gt;
&lt;td&gt;2GB&lt;/td&gt;
&lt;td&gt;20GB&lt;/td&gt;
&lt;td&gt;150M&lt;/td&gt;
&lt;td&gt;500GB&lt;/td&gt;
&lt;td&gt;上海电信&lt;/td&gt;
&lt;td&gt;日本 BGP&lt;/td&gt;
&lt;td&gt;独享 x2&lt;/td&gt;
&lt;td&gt;25–28 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;沪港 IX 专线&lt;/td&gt;
&lt;td&gt;2核&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;td&gt;40GB&lt;/td&gt;
&lt;td&gt;500M&lt;/td&gt;
&lt;td&gt;2TB&lt;/td&gt;
&lt;td&gt;云厂优化网络通道&lt;/td&gt;
&lt;td&gt;香港 BGP&lt;/td&gt;
&lt;td&gt;独享 x2&lt;/td&gt;
&lt;td&gt;21 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;沪日 IX 专线&lt;/td&gt;
&lt;td&gt;2核&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;td&gt;40GB&lt;/td&gt;
&lt;td&gt;200M&lt;/td&gt;
&lt;td&gt;1TB&lt;/td&gt;
&lt;td&gt;云厂优化网络通道&lt;/td&gt;
&lt;td&gt;日本 BGP&lt;/td&gt;
&lt;td&gt;独享 x2&lt;/td&gt;
&lt;td&gt;25–28 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;深港 IX 专线&lt;/td&gt;
&lt;td&gt;2核&lt;/td&gt;
&lt;td&gt;4GB&lt;/td&gt;
&lt;td&gt;40GB&lt;/td&gt;
&lt;td&gt;500M&lt;/td&gt;
&lt;td&gt;2TB&lt;/td&gt;
&lt;td&gt;云厂优化网络通道&lt;/td&gt;
&lt;td&gt;香港 BGP&lt;/td&gt;
&lt;td&gt;独享 x2&lt;/td&gt;
&lt;td&gt;1~2ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;入口延迟,时间短就没放grafana，后面我会补上。
&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260129175110667.avif&quot; alt=&quot;image-20260129175109780&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;火山ECS&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Basic System Information:
---------------------------------
Uptime     : 0 days, 0 hours, 41 minutes
Processor  : AMD EPYC 9Y95 192-Core Processor
CPU cores  : 2 @ 2246.622 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM        : 3.8 GiB
Swap       : 0.0 KiB
Disk       : 39.3 GiB
Distro     : Debian GNU/Linux 12 (bookworm)
Kernel     : 6.1.0-18-amd64
VM Type    : KVM
IPv4/IPv6  : ✔ Online / ❌ Offline

IPv4 Network Information:
---------------------------------
ISP        : BITNET
ASN        : AS137718 Beijing Volcano Engine Technology Co., Ltd.
Host       : Beijing Bitone United Networks Technology Service Co., Ltd.
Location   : Beijing, Beijing (BJ)
Country    : China

fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda2):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 4.68 MB/s     (1.1k) | 57.82 MB/s     (903)
Write      | 4.71 MB/s     (1.1k) | 58.37 MB/s     (912)
Total      | 9.40 MB/s     (2.3k) | 116.19 MB/s   (1.8k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 55.77 MB/s     (108) | 54.98 MB/s      (53)
Write      | 58.68 MB/s     (114) | 58.80 MB/s      (57)
Total      | 114.45 MB/s    (222) | 113.79 MB/s    (110)

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 1802                          
Multi Core      | 2335                          
Full Test       | https://browser.geekbench.com/v5/cpu/24072017

YABS completed in 12 min 21 sec

&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;上海IX-香港BGP&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Basic System Information:
---------------------------------
Uptime     : 0 days, 23 hours, 10 minutes
Processor  : AMD EPYC-Rome Processor
CPU cores  : 2 @ 2794.750 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM        : 3.8 GiB
Swap       : 0.0 KiB
Disk       : 39.3 GiB
Distro     : Debian GNU/Linux 13 (trixie)
Kernel     : 6.12.38+deb13-amd64
VM Type    : KVM
IPv4/IPv6  : ✔ Online / ❌ Offline

IPv4 Network Information:
---------------------------------
ISP        : Nearoute Limited
ASN        : AS147293 Nearoute Limited.
Host       : Private Customer
Location   : Hong Kong, Kowloon ()
Country    : Hong Kong

fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda3):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 51.96 MB/s   (12.9k) | 143.03 MB/s   (2.2k)
Write      | 52.04 MB/s   (13.0k) | 143.79 MB/s   (2.2k)
Total      | 104.01 MB/s  (26.0k) | 286.82 MB/s   (4.4k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 118.22 MB/s    (230) | 90.71 MB/s      (88)
Write      | 124.51 MB/s    (243) | 96.75 MB/s      (94)
Total      | 242.73 MB/s    (473) | 187.46 MB/s    (182)

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 921                           
Multi Core      | 1818                          
Full Test       | https://browser.geekbench.com/v5/cpu/24072348
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260129163827175.avif&quot; alt=&quot;image-20260129163826530&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;上海IX-日本BGP&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Basic System Information:
---------------------------------
Uptime     : 0 days, 23 hours, 13 minutes
Processor  : AMD EPYC-Rome Processor
CPU cores  : 2 @ 2794.750 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM        : 3.8 GiB
Swap       : 0.0 KiB
Disk       : 39.3 GiB
Distro     : Debian GNU/Linux 13 (trixie)
Kernel     : 6.12.38+deb13-amd64
VM Type    : KVM
IPv4/IPv6  : ✔ Online / ❌ Offline

IPv4 Network Information:
---------------------------------
ISP        : Nearoute Limited
ASN        : AS51847 Nearoute Limited
Location   : Tokyo, Tokyo (13)
Country    : Japan

fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda3):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 52.02 MB/s   (13.0k) | 65.04 MB/s    (1.0k)
Write      | 52.10 MB/s   (13.0k) | 65.43 MB/s    (1.0k)
Total      | 104.12 MB/s  (26.0k) | 130.47 MB/s   (2.0k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 144.98 MB/s    (283) | 178.37 MB/s    (174)
Write      | 152.69 MB/s    (298) | 190.25 MB/s    (185)
Total      | 297.67 MB/s    (581) | 368.63 MB/s    (359)

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 925                           
Multi Core      | 1757                          
Full Test       | https://browser.geekbench.com/v5/cpu/24072349

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260129163745554.avif&quot; alt=&quot;image-20260129163744890&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260129175836826.avif&quot; alt=&quot;image-20260129175836377&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;广港IEPL&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Basic System Information:
---------------------------------
Uptime     : 0 days, 23 hours, 7 minutes
Processor  : AMD EPYC-Rome Processor
CPU cores  : 1 @ 2395.500 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM        : 1.9 GiB
Swap       : 0.0 KiB
Disk       : 19.6 GiB
Distro     : Debian GNU/Linux 13 (trixie)
Kernel     : 6.12.38+deb13-amd64
VM Type    : KVM
IPv4/IPv6  : ✔ Online / ❌ Offline

IPv4 Network Information:
---------------------------------
ISP        : Nearoute Limited
ASN        : AS147293 Nearoute Limited.
Location   : Hong Kong, Kowloon ()
Country    : Hong Kong

fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda3):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 121.26 MB/s  (30.3k) | 195.38 MB/s   (3.0k)
Write      | 121.58 MB/s  (30.3k) | 196.41 MB/s   (3.0k)
Total      | 242.85 MB/s  (60.7k) | 391.80 MB/s   (6.1k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 201.44 MB/s    (393) | 208.35 MB/s    (203)
Write      | 212.15 MB/s    (414) | 222.22 MB/s    (217)
Total      | 413.59 MB/s    (807) | 430.58 MB/s    (420)

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 735                           
Multi Core      | 630                           
Full Test       | https://browser.geekbench.com/v5/cpu/24072352

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260129163906453.avif&quot; alt=&quot;image-20260129163905906&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;沪日IPLC&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Basic System Information:
---------------------------------
Uptime     : 0 days, 23 hours, 12 minutes
Processor  : AMD EPYC-Rome Processor
CPU cores  : 1 @ 2794.750 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM        : 1.9 GiB
Swap       : 0.0 KiB
Disk       : 19.6 GiB
Distro     : Debian GNU/Linux 13 (trixie)
Kernel     : 6.12.38+deb13-amd64
VM Type    : KVM
IPv4/IPv6  : ✔ Online / ❌ Offline

IPv4 Network Information:
---------------------------------
ISP        : Nearoute Limited
ASN        : AS51847 Nearoute Limited
Host       : Private Customer
Location   : Tokyo, Tokyo (13)
Country    : Japan

fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda3):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 101.10 MB/s  (25.2k) | 197.13 MB/s   (3.0k)
Write      | 101.37 MB/s  (25.3k) | 198.17 MB/s   (3.0k)
Total      | 202.48 MB/s  (50.6k) | 395.31 MB/s   (6.1k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 210.97 MB/s    (412) | 214.51 MB/s    (209)
Write      | 222.18 MB/s    (433) | 228.80 MB/s    (223)
Total      | 433.16 MB/s    (845) | 443.32 MB/s    (432)

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 930                           
Multi Core      | 948                           
Full Test       | https://browser.geekbench.com/v5/cpu/24072355

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260129163943030.avif&quot; alt=&quot;image-20260129163942379&quot; /&gt;&lt;/p&gt;
&lt;p&gt;到日本aws延迟
&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260129175746362.avif&quot; alt=&quot;image-20260129175745684&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;节点测速&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/02/20260201214302632.avif&quot; alt=&quot;image-20260201214301686&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260129191618773.avif&quot; alt=&quot;image-20260129191611288&quot; /&gt;&lt;/p&gt;
</content:encoded><category>category:测评</category><category>tag:VPS测评</category><category>tag:专线</category><category>tag:IX</category><category>tag:IEPL</category><category>tag:IPLC</category><category>tag:Mkcloud</category></item><item><title>qBitWebUI：现代化的 qBittorrent 多实例管理界面</title><link>https://catcat.blog/2026/01/qbitwebui-modern-qbittorrent-web-interface/</link><guid isPermaLink="true">https://catcat.blog/2026/01/qbitwebui-modern-qbittorrent-web-interface/</guid><description>介绍 qBitWebUI - 一个功能强大的 qBittorrent Web 管理工具,支持多实例管理、Prowlarr 集成和 PWA,提供 Docker 和 Dokploy 两种便捷部署方式</description><pubDate>Fri, 23 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;引言&lt;/h2&gt;
&lt;p&gt;qBittorrent 作为一款开源的 BitTorrent 客户端,凭借其轻量、无广告和跨平台的特性,深受用户喜爱。然而,当你需要管理多个 qBittorrent 实例时,在不同的 Web UI 之间来回切换就会变得非常繁琐。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;Maciejonos/qbitwebui&quot;}&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Maciejonos/qbitwebui&quot;&gt;qBitWebUI&lt;/a&gt; 正是为了解决这个痛点而诞生的现代化管理界面。它不仅提供了统一的多实例管理能力,还带来了更现代化的用户体验、PWA 支持、Prowlarr 集成等强大功能。&lt;/p&gt;
&lt;h2&gt;项目介绍&lt;/h2&gt;
&lt;p&gt;qBitWebUI 是一个基于 Web 的 qBittorrent 管理工具,允许你从单一界面管理多个 qBittorrent 实例。项目采用现代化的技术栈构建,提供流畅的用户体验。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心特性:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多实例管理&lt;/strong&gt; - 在一个界面中管理所有 qBittorrent 实例&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实时监控&lt;/strong&gt; - 自动刷新种子状态和下载进度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全认证&lt;/strong&gt; - AES-256-GCM 加密存储连接凭证&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prowlarr 集成&lt;/strong&gt; - 直接搜索索引器并添加种子&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PWA 支持&lt;/strong&gt; - 可安装为移动应用,支持离线访问&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多主题支持&lt;/strong&gt; - Catppuccin、Gruvbox、Dracula、Nord 等主题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文件浏览器&lt;/strong&gt; - 直接浏览和管理下载目录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RSS 管理&lt;/strong&gt; - 订阅 RSS 源并设置自动下载规则&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高度可定制&lt;/strong&gt; - 自定义列布局、过滤器和显示选项&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;技术栈:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目使用 React 19、TypeScript、Tailwind CSS v4、Vite、TanStack Query、Hono、SQLite 和 Bun 构建,确保了现代化的开发体验和优秀的性能表现。&lt;/p&gt;
&lt;h2&gt;核心优势&lt;/h2&gt;
&lt;h3&gt;多实例统一管理&lt;/h3&gt;
&lt;p&gt;这是 qBitWebUI 最核心的功能。如果你有多台服务器运行 qBittorrent,传统方式需要记住每个实例的地址和端口,然后在浏览器标签页之间来回切换。qBitWebUI 让你可以:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在一个界面中添加和管理所有 qBittorrent 实例&lt;/li&gt;
&lt;li&gt;快速切换不同实例,查看各自的下载状态&lt;/li&gt;
&lt;li&gt;为每个实例设置独立的速度限制(全局和备用速度)&lt;/li&gt;
&lt;li&gt;统一的操作体验,无需适应不同版本的 UI&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;现代化的用户界面&lt;/h3&gt;
&lt;p&gt;相比 qBittorrent 原生的 Web UI,qBitWebUI 提供了更加现代化和美观的界面:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;响应式设计,完美适配桌面和移动设备&lt;/li&gt;
&lt;li&gt;流畅的动画和交互效果&lt;/li&gt;
&lt;li&gt;直观的信息展示,一目了然&lt;/li&gt;
&lt;li&gt;支持拖放操作,自定义列顺序&lt;/li&gt;
&lt;li&gt;键盘快捷键支持,提高操作效率&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;:::tip
最最最重要的一点：如果你用过原版UI，可以发现他经常大批量种子卡死的情况。（PT 玩家肯定知道我在说什么）
:::&lt;/p&gt;
&lt;h2&gt;UI 预览和使用&lt;/h2&gt;
&lt;h3&gt;主页&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260123115111765.avif&quot; alt=&quot;Homepage&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;登录注册页面&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260123114453772.avif&quot; alt=&quot;login&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;添加节点页面&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260123114500472.avif&quot; alt=&quot;Add node&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;种子页面&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260123114507304.avif&quot; alt=&quot;seed&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;管理页面&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260123114514891.avif&quot; alt=&quot;manager page&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;工具页面&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260123114533774.avif&quot; alt=&quot;Tools&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;部署方式&lt;/h2&gt;
&lt;p&gt;qBitWebUI 提供了多种部署方式,这里介绍两种最便捷的方法:Docker Compose 和 Dokploy 一键部署。&lt;/p&gt;
&lt;h3&gt;方式一: Docker Compose 部署&lt;/h3&gt;
&lt;h4&gt;1. 创建 docker-compose.yml&lt;/h4&gt;
&lt;p&gt;首先创建一个目录用于存放配置文件,然后创建 &lt;code&gt;docker-compose.yml&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;version: &quot;3.8&quot;

services:
  qbitwebui:
    image: ghcr.io/maciejonos/qbitwebui:latest
    restart: unless-stopped
    ports:
      - &quot;3000:3000&quot;
    environment:
      # 必需: 加密密钥,用于存储凭证(至少 32 个字符)
      - ENCRYPTION_KEY=your-secret-key-min-32-chars-long
      # 可选: 服务器端口(默认: 3000)
      - PORT=3000
      # 可选: 数据库位置(默认: ./data/qbitwebui.db)
      - DATABASE_PATH=/data/qbitwebui.db
      # 可选: Salt 文件位置(默认: ./data/.salt)
      - SALT_PATH=/data/.salt
      # 可选: 允许自签名证书(默认: false)
      # - ALLOW_SELF_SIGNED_CERTS=false
      # 可选: 禁用认证/登录,单用户模式(默认: false)
      # - DISABLE_AUTH=false
      # 可选: 禁用新用户注册,创建默认管理员账户(默认: false)
      # - DISABLE_REGISTRATION=false
      # 可选: 启用文件浏览器,设置下载路径
      # - DOWNLOADS_PATH=/downloads
    volumes:
      - qbitwebui_data:/data
      # 可选: 挂载下载目录以启用文件浏览器功能
      # 只读挂载(仅浏览和下载):
      # - /path/to/your/downloads:/downloads:ro
      # 读写挂载(允许删除/移动/复制/重命名):
      # - /path/to/your/downloads:/downloads
    healthcheck:
      test: [&quot;CMD&quot;, &quot;wget&quot;, &quot;--no-verbose&quot;, &quot;--tries=1&quot;, &quot;--spider&quot;, &quot;http://localhost:3000&quot;]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 10s

volumes:
  qbitwebui_data:
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;2. 生成加密密钥&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;ENCRYPTION_KEY&lt;/code&gt; 是必需的环境变量,用于加密存储 qBittorrent 的连接凭证。你可以使用以下命令生成一个安全的密钥:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;openssl rand -hex 32
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将生成的密钥替换 &lt;code&gt;docker-compose.yml&lt;/code&gt; 中的 &lt;code&gt;your-secret-key-min-32-chars-long&lt;/code&gt;。&lt;/p&gt;
&lt;h4&gt;3. 启动服务&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;docker-compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;4. 访问界面&lt;/h4&gt;
&lt;p&gt;启动后,在浏览器中访问 &lt;code&gt;http://your-server-ip:3000&lt;/code&gt;,首次访问会提示注册账户。&lt;/p&gt;
&lt;h4&gt;5. 添加 qBittorrent 实例&lt;/h4&gt;
&lt;p&gt;登录后,点击添加实例按钮,填写以下信息:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;名称&lt;/strong&gt;: 给实例起个名字(如 &quot;家庭 NAS&quot;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;URL&lt;/strong&gt;: qBittorrent Web UI 地址(如 &lt;code&gt;http://192.168.1.100:8080&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户名&lt;/strong&gt;: qBittorrent 的用户名&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密码&lt;/strong&gt;: qBittorrent 的密码&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;保存后即可开始管理该实例。&lt;/p&gt;
&lt;h3&gt;方式二: Dokploy 一键部署&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://dokploy.com/&quot;&gt;Dokploy&lt;/a&gt; 是一个开源的 PaaS 平台,类似于 Vercel/Netlify,但可以自托管。如果你已经在使用 Dokploy,可以通过导入模板的方式一键部署 qBitWebUI。&lt;/p&gt;
&lt;h4&gt;使用模板部署&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注&lt;/strong&gt;: Dokploy 模板目前已提交到官方模板库(&lt;a href=&quot;https://github.com/Dokploy/templates/pull/675&quot;&gt;PR #675&lt;/a&gt;),等待合并后可以直接在模板市场中找到。在此之前,你也可以手动导入模板配置。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260123114327524.avif&quot; alt=&quot;dokply import&quot; /&gt;&lt;/p&gt;
&lt;p&gt;复制下面的导入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxuc2VydmljZXM6XG4gIHFiaXR3ZWJ1aTpcbiAgICBpbWFnZTogZ2hjci5pby9tYWNpZWpvbm9zL3FiaXR3ZWJ1aTpsYXRlc3RcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGVudmlyb25tZW50OlxuICAgICAgIyBSZXF1aXJlZDogRW5jcnlwdGlvbiBrZXkgZm9yIHN0b3JpbmcgY3JlZGVudGlhbHMgKG1pbiAzMiBjaGFycylcbiAgICAgIC0gRU5DUllQVElPTl9LRVk9JHtFTkNSWVBUSU9OX0tFWX1cbiAgICAgICMgT3B0aW9uYWw6IFNlcnZlciBwb3J0IChkZWZhdWx0OiAzMDAwKVxuICAgICAgLSBQT1JUPSR7UE9SVDotMzAwMH1cbiAgICAgICMgT3B0aW9uYWw6IERhdGFiYXNlIGxvY2F0aW9uIChkZWZhdWx0OiAuL2RhdGEvcWJpdHdlYnVpLmRiKVxuICAgICAgLSBEQVRBQkFTRV9QQVRIPSR7REFUQUJBU0VfUEFUSDotL2RhdGEvcWJpdHdlYnVpLmRifVxuICAgICAgIyBPcHRpb25hbDogU2FsdCBmaWxlIGxvY2F0aW9uIChkZWZhdWx0OiAuL2RhdGEvLnNhbHQpXG4gICAgICAtIFNBTFRfUEFUSD0ke1NBTFRfUEFUSDotL2RhdGEvLnNhbHR9XG4gICAgICAjIE9wdGlvbmFsOiBBbGxvdyBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZXMgZm9yIHFCaXR0b3JyZW50IGluc3RhbmNlcyAoZGVmYXVsdDogZmFsc2UpXG4gICAgICAjIC0gQUxMT1dfU0VMRl9TSUdORURfQ0VSVFM9JHtBTExPV19TRUxGX1NJR05FRF9DRVJUUzotZmFsc2V9XG4gICAgICAjIE9wdGlvbmFsOiBEaXNhYmxlIGF1dGhlbnRpY2F0aW9uL2xvZ2luIChzaW5nbGUtdXNlciBtb2RlKSAoZGVmYXVsdDogZmFsc2UpXG4gICAgICAjIC0gRElTQUJMRV9BVVRIPSR7RElTQUJMRV9BVVRIOi1mYWxzZX1cbiAgICAgICMgT3B0aW9uYWw6IERpc2FibGUgbmV3IHJlZ2lzdHJhdGlvbnMsIGNyZWF0ZXMgZGVmYXVsdCBhZG1pbiBhY2NvdW50IChkZWZhdWx0OiBmYWxzZSlcbiAgICAgICMgLSBESVNBQkxFX1JFR0lTVFJBVElPTj0ke0RJU0FCTEVfUkVHSVNUUkFUSU9OOi1mYWxzZX1cbiAgICAgICMgT3B0aW9uYWw6IEVuYWJsZSBmaWxlIGJyb3dzZXIgYnkgc2V0dGluZyBkb3dubG9hZHMgcGF0aFxuICAgICAgIyAtIERPV05MT0FEU19QQVRIPS9kb3dubG9hZHNcbiAgICB2b2x1bWVzOlxuICAgICAgLSBxYml0d2VidWlfZGF0YTovZGF0YVxuICAgICAgIyBPcHRpb25hbDogTW91bnQgZG93bmxvYWRzIGRpcmVjdG9yeSBmb3IgZmlsZSBicm93c2VyIGZlYXR1cmVcbiAgICAgICMgUmVhZC1vbmx5IG1vdW50IChicm93c2UgJiBkb3dubG9hZCBvbmx5KTpcbiAgICAgICMgLSAvcGF0aC90by95b3VyL2Rvd25sb2FkczovZG93bmxvYWRzOnJvXG4gICAgICAjIE9yIHJlYWQtd3JpdGUgbW91bnQgKGVuYWJsZXMgZGVsZXRlL21vdmUvY29weS9yZW5hbWUpOlxuICAgICAgIyAtIC9wYXRoL3RvL3lvdXIvZG93bmxvYWRzOi9kb3dubG9hZHNcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcIndnZXRcIiwgXCItLW5vLXZlcmJvc2VcIiwgXCItLXRyaWVzPTFcIiwgXCItLXNwaWRlclwiLCBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMFwiXVxuICAgICAgaW50ZXJ2YWw6IDMwc1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDNcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzXG5cbnZvbHVtZXM6XG4gIHFiaXR3ZWJ1aV9kYXRhOlxuIiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbmVuY3J5cHRpb25fa2V5ID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5cbltjb25maWddXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJxYml0d2VidWlcIlxucG9ydCA9IDMwMDBcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcbnBhdGggPSBcIi9cIlxuXG5bY29uZmlnLmVudl1cbkVOQ1JZUFRJT05fS0VZID0gXCIke2VuY3J5cHRpb25fa2V5fVwiXG5QT1JUID0gXCIzMDAwXCJcbkRBVEFCQVNFX1BBVEggPSBcIi9kYXRhL3FiaXR3ZWJ1aS5kYlwiXG5TQUxUX1BBVEggPSBcIi9kYXRhLy5zYWx0XCJcbiIKfQ==

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你正在寻找一个更好的 qBittorrent 管理方案,qBitWebUI 绝对值得一试。&lt;/p&gt;
&lt;h2&gt;相关链接&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;项目地址: &lt;a href=&quot;https://github.com/Maciejonos/qbitwebui&quot;&gt;https://github.com/Maciejonos/qbitwebui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docker 镜像: &lt;a href=&quot;https://github.com/Maciejonos/qbitwebui/pkgs/container/qbitwebui&quot;&gt;ghcr.io/maciejonos/qbitwebui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dokploy 模板 PR: &lt;a href=&quot;https://github.com/Dokploy/templates/pull/675&quot;&gt;https://github.com/Dokploy/templates/pull/675&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;模板预览: &lt;a href=&quot;https://yuri-nagasaki-add-qbitwebui.templates-70k.pages.dev/?q=qBittorrent+Web+UI&quot;&gt;qBitWebUI Template Preview&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>category:教程</category><category>tag:qBittorrent</category><category>tag:Docker</category><category>tag:Dokploy</category><category>tag:WebUI</category><category>tag:自托管</category><category>tag:BT下载</category></item><item><title>解决三星 990 Pro SSD ext4 文件系统只读问题</title><link>https://catcat.blog/2026/01/samsung-990-pro-ext4-readonly-fix/</link><guid isPermaLink="true">https://catcat.blog/2026/01/samsung-990-pro-ext4-readonly-fix/</guid><description>记录三星 990 Pro SSD 在 Linux 系统下出现 ext4 文件系统只读和掉盘问题的排查与解决方案，包括固件更新和内核参数调整</description><pubDate>Wed, 21 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;问题背景&lt;/h2&gt;
&lt;p&gt;三星 990 Pro SSD 的 Linux 系统上遇到了 ext4 文件系统突然变为只读（read-only）的问题，或者系统日志中出现掉盘现象，但硬件检测工具却没有报告任何错误，那么你可能遇到了三星 SSD 的一个已知问题。&lt;/p&gt;
&lt;p&gt;这个问题的典型症状包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件系统突然变为只读模式&lt;/li&gt;
&lt;li&gt;无法写入任何数据&lt;/li&gt;
&lt;li&gt;系统日志中可能出现 I/O 错误&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;smartctl&lt;/code&gt; 等工具检查硬盘健康状态显示正常&lt;/li&gt;
&lt;li&gt;特别是固件版本为 &lt;code&gt;4B2QJXD7&lt;/code&gt; 的三星 990 Pro 更容易出现此问题 或者之前的 版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;具体表现为以下图片类似的症状，(重启服务器后症状消失，类似掉盘)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260121102910826.avif&quot; alt=&quot;Ext4 只读问题&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::warning
在进行任何操作之前，请务必备份重要数据！虽然这个问题通常不会导致数据丢失，但安全起见还是要做好备份。
:::&lt;/p&gt;
&lt;h2&gt;问题排查&lt;/h2&gt;
&lt;h3&gt;1. 检查文件系统状态&lt;/h3&gt;
&lt;p&gt;首先确认文件系统是否真的变为只读：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 查看挂载状态
mount | grep &quot;ro,&quot;

# 尝试创建测试文件
touch /path/to/mountpoint/test.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果看到 &lt;code&gt;Read-only file system&lt;/code&gt; 错误，说明文件系统确实变为只读了。&lt;/p&gt;
&lt;h3&gt;2. 查看系统日志&lt;/h3&gt;
&lt;p&gt;检查系统日志以获取更多信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 查看内核日志
dmesg | grep -i &quot;error\|ext4\|nvme&quot;

# 查看系统日志
journalctl -xe | grep -i &quot;error\|ext4\|nvme&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. 检查 SSD 信息&lt;/h3&gt;
&lt;p&gt;查看 SSD 的型号和固件版本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 查看 NVMe 设备信息
sudo nvme list

# 查看详细信息
sudo nvme id-ctrl /dev/nvme0

# 使用 smartctl 查看
sudo smartctl -a /dev/nvme0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你的设备是三星 990 Pro，并且固件版本是 &lt;code&gt;4B2QJXD7&lt;/code&gt; 或类似版本，那么很可能是遇到了三星 SSD 的电源管理 bug。&lt;/p&gt;
&lt;h2&gt;解决方案&lt;/h2&gt;
&lt;p&gt;这个问题有两个主要的解决方案，建议先尝试方案二（内核参数修复），因为它更简单且立即生效。如果问题依然存在，再考虑更新固件。&lt;/p&gt;
&lt;h3&gt;方案一：更新 SSD 固件&lt;/h3&gt;
&lt;p&gt;三星为 Windows 用户提供了 Samsung Magician 软件，但 Linux 用户可以使用三星提供的可启动 ISO 镜像来更新固件。&lt;/p&gt;
&lt;h4&gt;步骤 1：下载固件&lt;/h4&gt;
&lt;p&gt;访问三星官方固件下载页面：&lt;/p&gt;
&lt;p&gt;https://semiconductor.samsung.com/consumer-storage/support/tools/&lt;/p&gt;
&lt;p&gt;找到适合你的 SSD 型号的最新固件 ISO 镜像并下载。&lt;/p&gt;
&lt;h4&gt;步骤 2：提取并运行固件更新工具&lt;/h4&gt;
&lt;p&gt;你不需要刻录 CD 或制作启动 U 盘，可以直接在 Linux 系统中提取并运行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 下载 ISO 镜像（替换为实际的下载链接）
curl -OL https://semiconductor.samsung.com/.../firmware.iso

# 提取 initrd
bsdtar -xf firmware.iso initrd

# 提取 root 文件系统
bsdtar -xf initrd root

# 运行固件更新工具
sudo ./root/fumagician/fumagician
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260121103220971.avif&quot; alt=&quot;Upgrade Firmware 1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260121103258252.avif&quot; alt=&quot;Upgrade Firmware 2&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;步骤 3：重启系统&lt;/h4&gt;
&lt;p&gt;固件更新完成后，需要重启系统使更新生效：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;方案二：内核参数修复（推荐）&lt;/h3&gt;
&lt;p&gt;这是一个更简单且经过验证的永久性解决方案。问题的根源是三星 SSD 的电源管理功能在 Linux 下存在兼容性问题，通过禁用 NVMe 电源状态管理可以彻底解决。&lt;/p&gt;
&lt;p&gt;:::tip
这个方案已经在多个受影响的系统上验证有效，是最推荐的解决方法。
:::&lt;/p&gt;
&lt;h4&gt;步骤 1：编辑 GRUB 配置&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/default/grub
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;找到 &lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/code&gt; 这一行，在引号内添加以下参数：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nvme_core.default_ps_max_latency_us=0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改后的示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash nvme_core.default_ps_max_latency_us=0&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;步骤 2：更新 GRUB 配置&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;# Debian/Ubuntu 系统
sudo update-grub

# RHEL/CentOS/Fedora 系统
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

# Arch Linux 系统
sudo grub-mkconfig -o /boot/grub/grub.cfg
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;步骤 3：重启系统&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;步骤 4：验证参数已生效&lt;/h4&gt;
&lt;p&gt;重启后，验证内核参数是否已经生效：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /proc/cmdline | grep nvme_core
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你应该能看到 &lt;code&gt;nvme_core.default_ps_max_latency_us=0&lt;/code&gt; 出现在输出中。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260121103343396.avif&quot; alt=&quot;image-20260121103343206&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;问题原因&lt;/h2&gt;
&lt;p&gt;这个问题是三星 SSD 在 Linux 系统下的一个老问题的复现。多年来，不同型号的三星 SSD（包括 970 EVO、980 Pro 等）都曾出现过类似的问题。&lt;/p&gt;
&lt;p&gt;根本原因是三星 SSD 的电源状态管理（Power State Management）功能与 Linux 内核的 NVMe 驱动存在兼容性问题。当 SSD 进入某些电源状态时，可能会导致 I/O 超时，进而触发文件系统的保护机制，将文件系统切换为只读模式以防止数据损坏。&lt;/p&gt;
&lt;p&gt;通过设置 &lt;code&gt;nvme_core.default_ps_max_latency_us=0&lt;/code&gt;，我们禁用了 NVMe 设备的自动电源状态切换（APST），强制 SSD 保持在高性能状态，从而避免了这个问题。&lt;/p&gt;
&lt;h2&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://superuser.com/questions/1829511/how-to-investigate-ext4-filesystem-going-read-only-no-hardware-errors-reported&quot;&gt;SuperUser: How to investigate ext4 filesystem going read-only&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://semiconductor.samsung.com/consumer-storage/support/tools/&quot;&gt;Samsung 官方固件下载页面&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>category:教程</category><category>tag:Linux</category><category>tag:SSD</category><category>tag:三星</category><category>tag:固件更新</category><category>tag:ext4</category><category>tag:故障排查</category></item><item><title>InterServer 新泽西 AMD 7950X3D 192G 独服测试</title><link>https://catcat.blog/2026/01/interserver-new-jersey-amd-7950x3d-benchmark/</link><guid isPermaLink="true">https://catcat.blog/2026/01/interserver-new-jersey-amd-7950x3d-benchmark/</guid><description>InterServer 新泽西机房 AMD Ryzen 9 7950X3D 16核独立服务器测试，192GB DDR5 5600MHz 内存，双 4TB NVMe 硬盘，1Gbps 不限流量，月付仅 $89。老牌美国主机商，性价比极高。</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;商家介绍&lt;/h2&gt;
&lt;p&gt;InterServer 是一家成立于 1999 年的美国老牌主机服务商，总部位于新泽西州，自建机房运营超过 25 年。这次测试的是他们的黑五闪购款，性价比不错。
但是硬盘是比较糟糕的，他们不像Hetzner之类的，这种健康度允许更换。他们不行，只会让你加钱更换别的硬盘。除非盘炸了他们才会更换。&lt;/p&gt;
&lt;p&gt;:::tip
本人不鼓励溢价炒鸡，请勿跟风溢价，你要相信总会有更好的。
:::&lt;/p&gt;
&lt;h2&gt;配置与价格&lt;/h2&gt;
&lt;h3&gt;基础配置 - $89/月&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;strong&gt;主板&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;B650D4U&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AMD Ryzen 9 7950X3D 16核32线程&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;内存&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;192GB DDR5 5600MHz (4 × 48GB)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;硬盘&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2 × Crucial 4TB NVMe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RAID&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;软raid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;系统&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ubuntu 24.04.3 LTS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;网络&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1Gbps 不限流量&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1 个 Vlan IP (/30)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;控制面板&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IPMI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;可选升级&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;带宽升级：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10Gbps 带宽（330TB 双向流量）：+$20/月&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;硬盘升级选项：&lt;/strong&gt;&lt;/p&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;Samsung 990 PRO&lt;/td&gt;
&lt;td&gt;2TB&lt;/td&gt;
&lt;td&gt;$40/月&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Samsung 990 PRO&lt;/td&gt;
&lt;td&gt;4TB&lt;/td&gt;
&lt;td&gt;$60/月&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Samsung 9100 PRO&lt;/td&gt;
&lt;td&gt;2TB&lt;/td&gt;
&lt;td&gt;$60/月&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Samsung 9100 PRO&lt;/td&gt;
&lt;td&gt;4TB&lt;/td&gt;
&lt;td&gt;$85/月&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;测试&lt;/h2&gt;
&lt;h3&gt;硬件检测&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;════════════════════════════════════════════════════════════════════════════════
                       System Hardware Information Report                       
════════════════════════════════════════════════════════════════════════════════

┌─ System Information
├────────────────────
│ Hostname            : catcat.blog
│ Operating System    : Debian GNU/Linux 13 (trixie)
│ Kernel Version      : 6.17.4-2-pve
│ System Uptime       : up 2 hours, 6 minutes
└──────────────────────────────────────────────────
┌─ CPU Information
├─────────────────
│ Model               : AMD Ryzen 9 7950X3D 16-Core Processor
│ Cores               : 16
│ Threads             : 32
│ Frequency           : 2985.835 MHz
│ Cache               : 1024 KB
│ Usage               : 0%
│ CPU Temperature     : +45.5°C
└──────────────────────────────────────────────────
┌─ Memory (RAM) Information
├──────────────────────────
│ Total               : 187.78 GB
│ Used                : 3.0Gi
│ Available           : 184.76 GB
│
│ Memory Modules:
├────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Size     │ Type   │ Frequency    │ Manufacturer │ Serial Number   │ Model                │
├────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 48 GB    │ DDR5   │ 5600 MT/s    │ Unknown      │ E8523ECE        │ CP48G56C46U5.M16B1   │
│ 48 GB    │ DDR5   │ 5600 MT/s    │ Unknown      │ E83EE4CE        │ CP48G56C46U5.M16B1   │
│ 48 GB    │ DDR5   │ 5600 MT/s    │ Unknown      │ E8523EBA        │ CP48G56C46U5.M16B1   │
│ 48 GB    │ DDR5   │ 5600 MT/s    │ Unknown      │ E83EEAC2        │ CP48G56C46U5.M16B1   │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
└──────────────────────────────────────────────────
┌─ Disk Drive Information
├────────────────────────
│ /dev/nvme1n1p2  3.6T  4.4G  3.4T   1% /
│ /dev/nvme1n1p1   99M  8.8M   90M   9% /boot/efi
│ /dev/fuse       128M   16K  128M   1% /etc/pve
│
│ ═══════════════════════════════════════════════════
│ Other Disks (NVMe / SATA / SAS)
│ ═══════════════════════════════════════════════════
│
│ ═══ /dev/nvme1n1 ═══
│   Basic Info:  3.6T CT4000P3PSSD8 
│   SMART Status: PASSED
│   Power On Hours: 14746 hours
│   Total Reads: 26.47 TB
│   Total Writes: 513.44 TB
│   Percentage Used: 34%
│   Health Status: 66%
│   Available Spare: 100%
│   Temperature: 38°C
│
│ ═══ /dev/nvme0n1 ═══
│   Basic Info:  3.6T CT4000P3PSSD8 
│   SMART Status: PASSED
│   Power On Hours: 14729 hours
│   Total Reads: 46.69 TB
│   Total Writes: 544.87 TB
│   Percentage Used: 36%
│   Health Status: 64%
│   Available Spare: 100%
│   Temperature: 37°C
└──────────────────────────────────────────────────
┌─ RAID Controller Information
├─────────────────────────────
│ Status              : Not detected
└──────────────────────────────────────────────────
┌─ Network Interface Information
├───────────────────────────────
│
│ ═══ enp4s0 ═══
│   Model: Intel Corporation I210 Gigabit Network Connection (rev 03)
│   Status: UP
│   MAC Address: 9c:6b:00:XX:XX:XX
│   Speed: 1000 Mbps
│   Duplex: full
│   Link Detected: Yes
│   RX: 0 GB
│   TX: 0 GB
│
│ ═══ enp5s0 ═══
│   Model: Intel Corporation I210 Gigabit Network Connection (rev 03)
│   Status: DOWN
│   MAC Address: 9c:6b:00:XX:XX:XX
│   Link Detected: No
│   RX: 0 GB
│   TX: 0 GB
│
│ ═══ enxca8853f5217b ═══
│   Model: cdc_ether (usb-0000:0a:00.0-9.3)
│   Status: DOWN
│   MAC Address: ca:88:53:XX:XX:XX
│   Link Detected: No
│   RX: 0 GB
│   TX: 0 GB
└──────────────────────────────────────────────────
┌─ Graphics Card Information
├───────────────────────────
│
│ Graphics Cards (PCI):
│   07:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 52)
│   0d:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Raphael (rev c9)
│
│ Display Hardware Summary:
│   ===================================================================
│   /0/100/2.1/0/3/0/0      /dev/fb0         display        ASPEED Graphics Family
│   /0/100/8.1/0            /dev/fb0         display        Raphael
└──────────────────────────────────────────────────
┌─ Motherboard Information
├─────────────────────────
│ Vendor              : ASRockRack
│ Model               : B650D4U
│ Version             : To be filled by O.E.M.                                            
│ BIOS Vendor         : American Megatrends International, LLC.
│ BIOS Version        : 20.05
└──────────────────────────────────────────────────
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Yabs&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Basic System Information:
---------------------------------
Uptime     : 0 days, 2 hours, 23 minutes
Processor  : AMD Ryzen 9 7950X3D 16-Core Processor
CPU cores  : 32 @ 2985.835 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 187.8 GiB
Swap       : 0.0 KiB
Disk       : 3.6 TiB
Distro     : Debian GNU/Linux 13 (trixie)
Kernel     : 6.17.4-2-pve
VM Type    : NONE
IPv4/IPv6  : ✔ Online / ❌ Offline

IPv4 Network Information:
---------------------------------
ISP        : Interserver, Inc
ASN        : AS19318 Interserver, Inc
Host       : Host Department NJ, LLC
Location   : Englewood Cliffs, New Jersey (NJ)
Country    : United States

fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/nvme1n1p2):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 972.77 MB/s (243.1k) | 246.65 MB/s   (3.8k)
Write      | 975.34 MB/s (243.8k) | 247.95 MB/s   (3.8k)
Total      | 1.94 GB/s   (487.0k) | 494.61 MB/s   (7.7k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 331.25 MB/s    (646) | 482.19 MB/s    (470)
Write      | 348.86 MB/s    (681) | 514.31 MB/s    (502)
Total      | 680.11 MB/s   (1.3k) | 996.50 MB/s    (972)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed      | Ping           
-----           | -----                     | ----            | ----            | ----           
Clouvider       | London, UK (10G)          | 890 Mbits/sec   | 889 Mbits/sec   | 70.0 ms        
Eranium         | Amsterdam, NL (100G)      | 894 Mbits/sec   | 849 Mbits/sec   | 81.4 ms        
Uztelecom       | Tashkent, UZ (10G)        | 826 Mbits/sec   | 764 Mbits/sec   | 166 ms         
Leaseweb        | Singapore, SG (10G)       | 564 Mbits/sec   | 671 Mbits/sec   | 249 ms         
Clouvider       | Los Angeles, CA, US (10G) | 902 Mbits/sec   | 903 Mbits/sec   | 55.9 ms        
Leaseweb        | NYC, NY, US (10G)         | 940 Mbits/sec   | 940 Mbits/sec   | 3.27 ms        
Edgoo           | Sao Paulo, BR (1G)        | 852 Mbits/sec   | 844 Mbits/sec   | 113 ms         


Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 2208                          
Multi Core      | 19433                         
Full Test       | https://browser.geekbench.com/v5/cpu/24038564

Geekbench 6 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 2920                          
Multi Core      | 16738                         
Full Test       | https://browser.geekbench.com/v6/cpu/16093555

YABS completed in 8 min 0 sec
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;PassMark PerformanceTest Linux&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;AMD Ryzen 9 7950X3D 16-Core Processor           (x86_64)
16 cores @ 5763 MHz  |  187.8 GiB RAM
Number of Processes: 32  |  Test Iterations: 1  |  Test Duration: Medium
--------------------------------------------------------------------------------
CPU Mark:                          57392
  Integer Math                     204894 Million Operations/s
  Floating Point Math              114559 Million Operations/s
  Prime Numbers                    371 Million Primes/s
  Sorting                          85992 Thousand Strings/s
  Encryption                       47249 MB/s
  Compression                      704293 KB/s
  CPU Single Threaded              4127 Million Operations/s
  Physics                          5428 Frames/s
  Extended Instructions (SSE)      43037 Million Matrices/s

Memory Mark:                       3200
  Database Operations              12933 Thousand Operations/s
  Memory Read Cached               39688 MB/s
  Memory Read Uncached             37096 MB/s
  Memory Write                     21442 MB/s
  Available RAM                    189454 Megabytes
  Memory Latency                   65 Nanoseconds
  Memory Threaded                  53862 MB/s
--------------------------------------------------------------------------------
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;网络测试&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;
---------------------------------- nws.sh ---------------------------------
      A simple script to bench network performance using speedtest-cli     
---------------------------------------------------------------------------
 Version            : v2025.11.07
 Global Speedtest   : wget -qO- nws.sh | bash
 Region Speedtest   : wget -qO- nws.sh | bash -s -- -r &amp;lt;region&amp;gt;
 Ping &amp;amp; Routing     : wget -qO- nws.sh | bash -s -- -rt &amp;lt;region&amp;gt;
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : AMD Ryzen 9 7950X3D 16-Core Processor
 CPU Cores          : 32 @ 2985.835 MHz
 CPU Cache          : 1024 KB
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ✔ Enabled
 Total Disk         : 3.6 TB (4.3 GB Used)
 Total RAM          : 187.8 GB (3.0 GB Used)
 System uptime      : 0 days, 2 hour 34 min
 Load average       : 4.30, 3.45, 1.52
 OS                 : Debian GNU/Linux 13
 Arch               : x86_64 (64 Bit)
 Kernel             : 6.17.4-2-pve
 Virtualization     : NONE
 TCP Control        : cubic
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv4
 IPv6 Access        : ❌ Offline
 IPv4 Access        : ✔ Online
 ISP                : Interserver, Inc
 ASN                : AS19318 Interserver, Inc
 Host               : Host Department NJ, LLC
 Location           : Englewood Cliffs, New Jersey-NJ, United States
 Location (IPv4)    : New York City, New York, US
---------------------------------------------------------------------------
 Speedtest.net (Region: GLOBAL)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: Interserver 

 Nearest          0.72 ms     0.0%    937.69 Mbps    937.33 Mbps    Interserver.Net - Secaucus, NJ 

 Bangalore, IN    217.98 ms   0.0%    958.89 Mbps    395.23 Mbps    Bharti Airtel Ltd - Bangalore 
 Chennai, IN      222.87 ms   0.0%    949.90 Mbps    384.02 Mbps    RailTel Corporation of India Ltd - Chennai 
 Mumbai, IN       199.74 ms   0.0%    905.91 Mbps    423.93 Mbps    Melbicom - Mumbai 

 Seattle, US      80.36 ms    N/A     954.42 Mbps    907.84 Mbps    Comcast - Seattle, WA 
 Los Angeles, US  66.27 ms    0.0%    955.76 Mbps    919.94 Mbps    ReliableSite Hosting - Los Angeles, CA 
 Dallas, US       39.52 ms    0.0%    946.64 Mbps    941.47 Mbps    Hivelocity - Dallas, TX 
 Miami, US        33.71 ms    0.0%    946.43 Mbps    940.73 Mbps    Frontier - Miami, FL 
 New York, US     1.76 ms     0.0%    939.65 Mbps    941.23 Mbps    GSL Networks - New York, NY 
 Toronto, CA      19.56 ms    0.0%    945.22 Mbps    941.07 Mbps    Rogers - Toronto, ON 
 Mexico City, MX  102.21 ms   0.0%    949.87 Mbps    419.93 Mbps    INFINITUM - Ciudad de México 

 London, UK       71.03 ms    0.0%    964.75 Mbps    904.19 Mbps    VeloxServ Communications - London 
 Amsterdam, NL    FAILED                                                        
 Paris, FR        73.65 ms    0.0%    959.77 Mbps    936.20 Mbps    Scaleway - Paris 
 Frankfurt, DE    80.40 ms    0.0%    954.08 Mbps    916.38 Mbps    Clouvider Ltd - Frankfurt am Main 
 Warsaw, PL       98.34 ms    0.0%    949.94 Mbps    847.94 Mbps    Play - Warszawa 
 Bucharest, RO    109.47 ms   0.0%    946.64 Mbps    796.61 Mbps    Digi        
 Moscow, RU       112.90 ms   0.0%    955.58 Mbps    743.76 Mbps    Misaka Network, Inc. - Moscow 

 Jeddah, SA       131.21 ms   0.0%    946.02 Mbps    655.89 Mbps    Saudi Telecom Company 
 Dubai, AE        185.54 ms   N/A     916.94 Mbps    118.25 Mbps    e&amp;amp; UAE - Dubai 
 Istanbul, TR     116.75 ms   0.0%    958.16 Mbps    736.51 Mbps    Turkcell - Istanbul 
 Tehran, IR       FAILED                                                        
 Cairo, EG        140.04 ms   0.0%    952.81 Mbps    621.43 Mbps    Telecom Egypt - Cairo 

 Tokyo, JP        FAILED                                                        
 Shanghai, CU-CN  322.00 ms   N/A     23.89 Mbps     194.30 Mbps    China Unicom 5G - Shanghai 
 Hong Kong, CN    202.61 ms   0.0%    819.95 Mbps    214.50 Mbps    Misaka Network, Inc. - Hong Kong 
 Singapore, SG    216.00 ms   0.0%    963.37 Mbps    412.30 Mbps    ViewQwest - Singapore 
 Jakarta, ID      231.63 ms   0.0%    954.22 Mbps    384.53 Mbps    PT Solnet Indonesia - Jakarta 

 Sydney, AU       263.66 ms   0.0%    96.55 Mbps     181.70 Mbps    Aussie Broadband - Sydney 
---------------------------------------------------------------------------
 Avg DL Speed       : 875.12 Mbps
 Avg UL Speed       : 646.82 Mbps

 Total DL Data      : 32.49 GB
 Total UL Data      : 20.48 GB
 Total Data         : 52.97 GB
---------------------------------------------------------------------------
 Duration           : 12 min 22 sec
 System Time        : 15/01/2026 - 15:08:04 CST
 Total Script Runs  : 516268
---------------------------------------------------------------------------

&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;UnixBench&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;------------------------------------------------------------------------
Benchmark Run: Thu Jan 15 2026 15:17:05 - 15:45:24
32 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       83907129.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                    14554.2 MWIPS (10.0 s, 7 samples)
Execl Throughput                               4710.1 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1196710.6 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          308240.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       4129359.1 KBps  (30.0 s, 2 samples)
Pipe Throughput                             2155090.9 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 182683.1 lps   (10.0 s, 7 samples)
Process Creation                               7388.3 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  15437.8 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                  12089.7 lpm   (60.0 s, 2 samples)
System Call Overhead                        2002520.4 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   83907129.3   7190.0
Double-Precision Whetstone                       55.0      14554.2   2646.2
Execl Throughput                                 43.0       4710.1   1095.4
File Copy 1024 bufsize 2000 maxblocks          3960.0    1196710.6   3022.0
File Copy 256 bufsize 500 maxblocks            1655.0     308240.9   1862.5
File Copy 4096 bufsize 8000 maxblocks          5800.0    4129359.1   7119.6
Pipe Throughput                               12440.0    2155090.9   1732.4
Pipe-based Context Switching                   4000.0     182683.1    456.7
Process Creation                                126.0       7388.3    586.4
Shell Scripts (1 concurrent)                     42.4      15437.8   3641.0
Shell Scripts (8 concurrent)                      6.0      12089.7  20149.6
System Call Overhead                          15000.0    2002520.4   1335.0
                                                                   ========
System Benchmarks Index Score                                        2407.7

------------------------------------------------------------------------
Benchmark Run: Thu Jan 15 2026 15:45:24 - 16:13:25
32 CPUs in system; running 32 parallel copies of tests

Dhrystone 2 using register variables     1529550144.4 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                   322662.2 MWIPS (10.2 s, 7 samples)
Execl Throughput                              60526.8 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks      22929781.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks         6472347.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks      18945800.5 KBps  (30.0 s, 2 samples)
Pipe Throughput                            46109263.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                6487007.9 lps   (10.0 s, 7 samples)
Process Creation                             119254.9 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                 213576.3 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                  28400.8 lpm   (60.0 s, 2 samples)
System Call Overhead                       44358031.6 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0 1529550144.4 131066.9
Double-Precision Whetstone                       55.0     322662.2  58665.9
Execl Throughput                                 43.0      60526.8  14076.0
File Copy 1024 bufsize 2000 maxblocks          3960.0   22929781.9  57903.5
File Copy 256 bufsize 500 maxblocks            1655.0    6472347.5  39107.8
File Copy 4096 bufsize 8000 maxblocks          5800.0   18945800.5  32665.2
Pipe Throughput                               12440.0   46109263.3  37065.3
Pipe-based Context Switching                   4000.0    6487007.9  16217.5
Process Creation                                126.0     119254.9   9464.7
Shell Scripts (1 concurrent)                     42.4     213576.3  50371.8
Shell Scripts (8 concurrent)                      6.0      28400.8  47334.6
System Call Overhead                          15000.0   44358031.6  29572.0
                                                                   ========
System Benchmarks Index Score                                       34851.9

&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;IP 测试&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115151347365.avif&quot; alt=&quot;image-20260115151346597&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115152037324.avif&quot; alt=&quot;image-20260115152036497&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;7950X3D + 192G DDR5 + 8TB NVMe，月付 $89，性价比拉满。&lt;/p&gt;
&lt;p&gt;老牌商家，稳定性有一定保障。国内延迟较高（200ms+）。&lt;/p&gt;
&lt;p&gt;没有任何自动化安装程序，需要手动安装，提供IPMI自助。&lt;/p&gt;
&lt;p&gt;提供一定的抗DDOS能力。&lt;/p&gt;
</content:encoded><category>category:测评</category><category>tag:美国</category></item><item><title>使用 IPMI + netboot.xyz 为独立服务器/裸金属安装系统</title><link>https://catcat.blog/2026/01/ipmi-netboot-xyz-os-installation/</link><guid isPermaLink="true">https://catcat.blog/2026/01/ipmi-netboot-xyz-os-installation/</guid><description>通过 IPMI 远程控制台挂载 netboot.xyz ISO，实现独立服务器和裸金属的自由系统安装，无需依赖服务商提供的有限模板</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;租用独立服务器或裸金属时，服务商通常只提供有限的系统模板。想装个特定版本的 Debian？想试试 Arch Linux？想用 Proxmox VE？模板里没有就很麻烦。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;netboot.xyz 解决了这个问题&lt;/strong&gt; —— 一个只有几 MB 的 ISO，却能让你通过网络安装几乎任何操作系统。配合 IPMI 远程控制，即使服务器在地球另一端，也能像操作本地机器一样自由安装系统。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;netbootxyz/netboot.xyz&quot;}&lt;/p&gt;
&lt;h2&gt;什么是 netboot.xyz？&lt;/h2&gt;
&lt;p&gt;netboot.xyz 是一个基于 iPXE 的网络启动工具。它的工作原理很简单：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;服务器从这个小型 ISO 启动&lt;/li&gt;
&lt;li&gt;ISO 中的 iPXE 引导程序连接到 netboot.xyz 服务器&lt;/li&gt;
&lt;li&gt;获取最新的操作系统安装菜单&lt;/li&gt;
&lt;li&gt;用户选择想要的系统后，直接从官方源下载并安装&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;核心优势：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;轻量级&lt;/strong&gt;：ISO 只有几 MB，加载快，对带宽要求低&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;始终最新&lt;/strong&gt;：菜单和安装源都是实时获取的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;选择丰富&lt;/strong&gt;：支持几乎所有主流 Linux 发行版、BSD、Windows PE、各种工具盘&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无需本地镜像&lt;/strong&gt;：不用提前下载几 GB 的 ISO 文件&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;什么是 IPMI？&lt;/h2&gt;
&lt;p&gt;IPMI（Intelligent Platform Management Interface）是服务器的带外管理接口，也叫 BMC（Baseboard Management Controller）。不同厂商有不同的品牌名：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;Dell&lt;/td&gt;
&lt;td&gt;iDRAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HPE&lt;/td&gt;
&lt;td&gt;iLO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supermicro&lt;/td&gt;
&lt;td&gt;IPMI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lenovo&lt;/td&gt;
&lt;td&gt;XCC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;华为&lt;/td&gt;
&lt;td&gt;iBMC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;IPMI 能做什么：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;远程开关机、重启&lt;/li&gt;
&lt;li&gt;远程控制台（KVM）—— 就像坐在服务器前操作&lt;/li&gt;
&lt;li&gt;挂载虚拟媒体（ISO/USB 镜像）&lt;/li&gt;
&lt;li&gt;监控硬件状态（温度、风扇、电源）&lt;/li&gt;
&lt;li&gt;查看系统日志&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关键功能是 &lt;strong&gt;虚拟媒体&lt;/strong&gt; —— 可以把本地的 ISO 文件&quot;插入&quot;到远程服务器的虚拟光驱中，服务器就能从这个 ISO 启动。&lt;/p&gt;
&lt;h2&gt;准备工作&lt;/h2&gt;
&lt;h3&gt;1. 获取 IPMI 访问权限&lt;/h3&gt;
&lt;p&gt;租用服务器时，服务商通常会提供：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IPMI IP 地址（通常是独立的管理网段 IP）&lt;/li&gt;
&lt;li&gt;用户名和密码&lt;/li&gt;
&lt;li&gt;Web 控制台地址&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;:::tip
如果服务商没有主动提供 IPMI 权限，可以开工单申请。大部分独服/裸金属服务商都支持。
:::&lt;/p&gt;
&lt;h3&gt;2. 下载 netboot.xyz ISO&lt;/h3&gt;
&lt;p&gt;访问 &lt;a href=&quot;https://netboot.xyz/downloads/&quot;&gt;netboot.xyz 下载页面&lt;/a&gt; 获取 ISO 文件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;选择正确的版本：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;code&gt;netboot.xyz.iso&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;推荐&lt;/strong&gt; - 通用版本，同时支持 Legacy BIOS 和 UEFI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;netboot.xyz-efi.iso&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;仅 UEFI 模式&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;netboot.xyz.img&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;USB 启动盘制作&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;大多数情况下，下载 &lt;code&gt;netboot.xyz.iso&lt;/code&gt; 即可。&lt;/p&gt;
&lt;h3&gt;3. 确认网络环境&lt;/h3&gt;
&lt;p&gt;服务器需要能够访问外网，因为 netboot.xyz 需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;连接 boot.netboot.xyz 获取菜单&lt;/li&gt;
&lt;li&gt;从各发行版官方镜像站下载安装文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;:::important
如果服务器在内网环境或有严格的防火墙限制，netboot.xyz 可能无法正常工作。可以考虑自建 netboot.xyz 服务器。
:::&lt;/p&gt;
&lt;h2&gt;操作步骤&lt;/h2&gt;
&lt;h3&gt;步骤 1：登录 IPMI 控制台&lt;/h3&gt;
&lt;p&gt;在浏览器中访问 IPMI 的 Web 地址，使用提供的用户名密码登录。&lt;/p&gt;
&lt;p&gt;:::note
部分旧款 IPMI 只支持特定浏览器（如 IE）或需要安装 Java 插件。现代 IPMI 通常支持 HTML5 控制台。
:::&lt;/p&gt;
&lt;h3&gt;步骤 2：打开远程控制台（KVM）&lt;/h3&gt;
&lt;p&gt;登录后，找到远程控制台或 KVM 功能。不同厂商的位置略有不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dell iDRAC&lt;/strong&gt;：Configuration → Virtual Console&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HPE iLO&lt;/strong&gt;：Remote Console → HTML5 Console&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Supermicro&lt;/strong&gt;：Remote Control → iKVM/HTML5&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115141118572.avif&quot; alt=&quot;打开KVM控制台&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击启动后，会打开一个新窗口显示服务器的实时画面。&lt;/p&gt;
&lt;h3&gt;步骤 3：挂载 netboot.xyz ISO&lt;/h3&gt;
&lt;p&gt;在 KVM 控制台或 IPMI 主界面中，找到虚拟媒体（Virtual Media）功能：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击 &lt;strong&gt;Virtual Media&lt;/strong&gt; 或 &lt;strong&gt;虚拟媒体&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;选择 &lt;strong&gt;CD/DVD&lt;/strong&gt; 或 &lt;strong&gt;ISO Image&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;浏览并选择下载好的 &lt;code&gt;netboot.xyz.iso&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Connect&lt;/strong&gt; 或 &lt;strong&gt;Mount&lt;/strong&gt; 挂载&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115141205765.avif&quot; alt=&quot;挂载 netboot.xyz ISO&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::caution
ISO 挂载可能需要几秒到几十秒，取决于网络状况。等待
:::&lt;/p&gt;
&lt;h3&gt;步骤 4：设置从虚拟光驱启动&lt;/h3&gt;
&lt;p&gt;有两种方式：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方式 A：临时更改启动顺序（推荐）&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;重启服务器&lt;/li&gt;
&lt;li&gt;在 POST 画面按相应按键进入启动菜单
&lt;ul&gt;
&lt;li&gt;Dell：F11&lt;/li&gt;
&lt;li&gt;HP：F11&lt;/li&gt;
&lt;li&gt;Supermicro：F11&lt;/li&gt;
&lt;li&gt;通用：Esc 或 F12&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;选择 &lt;strong&gt;Virtual CD/DVD&lt;/strong&gt; 或 &lt;strong&gt;UEFI: Virtual CD&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;方式 B：通过 BIOS 设置&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;重启服务器，按 Del 或 F2 进入 BIOS&lt;/li&gt;
&lt;li&gt;找到 Boot 选项&lt;/li&gt;
&lt;li&gt;将虚拟光驱设为第一启动项&lt;/li&gt;
&lt;li&gt;保存并退出&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115141305741.avif&quot; alt=&quot;设置启动项&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115141356179.avif&quot; alt=&quot;启动菜单&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择第四个选项，进入 netboot.xyz 菜单。&lt;/p&gt;
&lt;h3&gt;步骤 5：进入 netboot.xyz 菜单&lt;/h3&gt;
&lt;p&gt;服务器从 ISO 启动后，会自动尝试 DHCP 获取 IP 地址并连接到 netboot.xyz 服务器。成功后会显示主菜单&lt;/p&gt;
&lt;p&gt;像我这里就没获取到，所以接下来会是手动&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115141454857.avif&quot; alt=&quot;IP获取&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115141550025.avif&quot; alt=&quot;输入服务商的IP等信息&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115141709629.avif&quot; alt=&quot;菜单选项&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择你需要安装的系统点击进入即可，下面以PVE为例。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115142015868.avif&quot; alt=&quot;PVE 安装1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115142023866.avif&quot; alt=&quot;PVE 安装2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260115142029522.avif&quot; alt=&quot;PVE 安装3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;到这和后面的正常ISO安装就没啥区别了。主要用这个可以省时间，不需要你去下载一个大的iso挂载上传上去，毕竟大陆上传到海外ipmi速度并不好。&lt;/p&gt;
&lt;h2&gt;netboot.xyz 菜单详解&lt;/h2&gt;
&lt;h3&gt;Linux Network Installs&lt;/h3&gt;
&lt;p&gt;这是最常用的选项，支持主流 Linux 发行版的网络安装：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;Debian&lt;/td&gt;
&lt;td&gt;支持 Stable、Testing、Unstable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ubuntu&lt;/td&gt;
&lt;td&gt;Server 和 Desktop 版本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CentOS / Rocky / Alma&lt;/td&gt;
&lt;td&gt;RHEL 系发行版&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fedora&lt;/td&gt;
&lt;td&gt;Server 和 Workstation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arch Linux&lt;/td&gt;
&lt;td&gt;滚动更新发行版&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;openSUSE&lt;/td&gt;
&lt;td&gt;Leap 和 Tumbleweed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NixOS&lt;/td&gt;
&lt;td&gt;声明式配置的发行版&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;选择发行版后，通常还可以选择具体版本和安装模式（最小安装、桌面环境等）。&lt;/p&gt;
&lt;h3&gt;Live CDs&lt;/h3&gt;
&lt;p&gt;实时系统，直接运行在内存中，不会修改硬盘：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;System Rescue&lt;/strong&gt; - 系统救援工具集&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GParted Live&lt;/strong&gt; - 分区管理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clonezilla&lt;/strong&gt; - 磁盘克隆和备份&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;各发行版 Live 版本&lt;/strong&gt; - 体验或临时使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;:::warning
Live CD 需要将整个系统加载到内存，通常需要 4GB 以上内存。内存不足会导致启动失败。
:::&lt;/p&gt;
&lt;h3&gt;Utilities&lt;/h3&gt;
&lt;p&gt;各种实用工具：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;Memtest86+&lt;/td&gt;
&lt;td&gt;内存测试&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hardware Detection Tool&lt;/td&gt;
&lt;td&gt;硬件检测&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DBAN&lt;/td&gt;
&lt;td&gt;安全擦除硬盘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Super Grub2 Disk&lt;/td&gt;
&lt;td&gt;引导修复&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content:encoded><category>category:教程</category><category>tag:IPMI</category><category>tag:netboot.xyz</category><category>tag:服务器</category><category>tag:Linux</category><category>tag:裸金属</category></item><item><title>使用 Docker Compose 部署 fontInAss 字幕字体处理服务</title><link>https://catcat.blog/2026/01/deploy-fontinass-emby-subtitle-font/</link><guid isPermaLink="true">https://catcat.blog/2026/01/deploy-fontinass-emby-subtitle-font/</guid><description>通过 Docker Compose 部署 fontInAss 字幕字体处理服务，解决 Emby/Jellyfin 特殊字体字幕显示问题，支持 ASS/SRT 格式自动字体嵌入和字体子集化</description><pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;你是否遇到过这样的情况：在 Emby 或 Jellyfin 上播放带有精美 ASS 字幕的动漫或电影时，字幕却显示为系统默认字体，完全失去了原有的视觉效果？这是因为字幕文件使用了设备上不存在的特殊字体（如方正字体、思源字体等），导致播放器只能回退到默认字体显示。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;fontInAss 正是为解决这个问题而生的开源项目，它能够自动将字幕所需的字体嵌入到字幕文件中，确保在任何设备上都能正确显示特殊字体效果。本文将详细介绍如何使用 Docker Compose 部署 fontInAss 服务，并与 Emby/Jellyfin 无缝集成。但是注意，本项目的效果完全取决于你的字体库规模，如果只有很少的字体，那么可能无法正常显示/出现有的有字体有的无的难看情况。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;本服不需要使用，因为大部分都已经我自己处理过字幕子集化。本文仅作学习用。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;fontInAss 是什么？&lt;/h2&gt;
&lt;p&gt;::github{repo=&quot;RiderLty/fontInAss&quot;}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;fontInAss 是一个专为 Emby/Jellyfin 设计的字幕字体子集化和嵌入工具&lt;/strong&gt;。它通过拦截播放器的字幕请求，实时提取字幕中使用的字体并嵌入到 ASS 格式字幕中，从而确保特殊字体能够正确显示。&lt;/p&gt;
&lt;h3&gt;对比参照&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260112201307231.avif&quot; alt=&quot;image-20260112201306301&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260112201319714.avif&quot; alt=&quot;image-20260112201318797&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;主要功能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;实时字幕处理&lt;/strong&gt;: 播放视频时自动拦截字幕请求，无需手动处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字体子集化&lt;/strong&gt;: 仅提取字幕实际使用的字形，大幅减小文件体积（从 10MB 压缩到 50KB）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;双模式字体支持&lt;/strong&gt;: 支持本地字体库 + 在线字体下载（可选）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web UI 批处理&lt;/strong&gt;: 提供 Web 界面用于批量处理字幕文件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;格式转换&lt;/strong&gt;: 自动将 SRT 字幕转换为 ASS 格式并嵌入字体&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能匹配&lt;/strong&gt;: 采用评分算法智能匹配字体名称、粗细、斜体等属性&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;工作原理&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;原始 ASS 字幕（100KB）
├─ 字幕文本: &quot;这是中文字幕&quot;
└─ 字体声明: Font: 思源黑体 CN Bold

         ↓ fontInAss 处理流程

1. 拦截字幕请求
2. 分析字幕使用的所有字符
3. 从字体库提取对应字形
4. 压缩字体（10MB → 50KB）
5. UUEncode 编码并嵌入字幕

         ↓

处理后的 ASS 字幕（150KB）
├─ 字幕文本: &quot;这是中文字幕&quot;
├─ 字体声明: Font: 思源黑体 CN Bold
└─ [Fonts] 段: &amp;lt;嵌入的字体数据&amp;gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;架构设计&lt;/h2&gt;
&lt;p&gt;本文采用&lt;strong&gt;双轨模式部署&lt;/strong&gt;，确保不影响现有的 Emby 服务：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;路径 A（原有方式，保持不变）:
客户端 → http://localhost:8096 → Emby 服务器

路径 B（新增的字幕增强方式）:
客户端 → HTTPS (443) → Nginx 反向代理
                   ↓
         内部端口 8011 → fontInAss 容器
                   ↓
         http://localhost:8096 → Emby 服务器
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;优势&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 原有 Emby 访问方式完全不受影响&lt;/li&gt;
&lt;li&gt;✅ fontInAss 作为可选的增强功能&lt;/li&gt;
&lt;li&gt;✅ 两种访问方式并存，随时切换&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;组件说明&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&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;&lt;strong&gt;fontInAss 容器&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;使用 &lt;code&gt;riderlty/fontinass:noproxy&lt;/code&gt; 镜像，监听 8011 端口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nginx 反向代理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;处理 SSL 终止、字幕请求拦截、WebSocket 代理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;本地字体库&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;存储 TTF/TTC/OTF 字体文件，支持自动监控和扫描&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Emby 服务器&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;现有的 Emby 服务，无需修改任何配置&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;部署准备&lt;/h2&gt;
&lt;h3&gt;系统要求&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Linux 服务器（Debian/Ubuntu 推荐）&lt;/li&gt;
&lt;li&gt;Docker 和 Docker Compose&lt;/li&gt;
&lt;li&gt;Nginx（用于反向代理）&lt;/li&gt;
&lt;li&gt;运行中的 Emby/Jellyfin 服务器&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;推荐配置&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;本地字体库（可选但强烈推荐，避免依赖网络）&lt;/li&gt;
&lt;li&gt;域名和 SSL 证书（生产环境必需）&lt;/li&gt;
&lt;li&gt;至少 2GB 内存和 10GB 磁盘空间&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
如果你没有字体库，可以先使用在线字体模式部署，稍后再添加本地字体。本文示例使用本地字体库模式。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;部署步骤&lt;/h2&gt;
&lt;h3&gt;1. 创建工作目录&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 创建项目目录
mkdir -p /root/docker_yaml/fontInAss
cd /root/docker_yaml/fontInAss

# 创建必要的子目录
mkdir -p fonts data logs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;目录说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fonts/&lt;/code&gt;: 存储本地字体文件（支持子目录）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data/&lt;/code&gt;: 存储 SQLite 字体数据库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logs/&lt;/code&gt;: 存储运行日志和字体缺失记录&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 创建 Docker Compose 配置&lt;/h3&gt;
&lt;p&gt;创建 &lt;code&gt;docker-compose.yml&lt;/code&gt; 文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;version: &apos;3.8&apos;

services:
  fontinass:
    image: riderlty/fontinass:noproxy
    container_name: fontinass
    restart: unless-stopped
    ports:
      - &quot;127.0.0.1:8011:8011&quot;  # 仅监听本地，不暴露到外网
    environment:
      # Emby 服务器地址（容器内访问宿主机）
      EMBY_SERVER_URL: &quot;http://host.docker.internal:8096&quot;
      # Web 端字体渲染支持
      EMBY_WEB_EMBED_FONT: &quot;True&quot;
      # 日志级别
      LOG_LEVEL: &quot;INFO&quot;
      # 禁用在线字体，仅使用本地字体库
      DISABLE_ONLINE_FONTS: &quot;True&quot;
      # 字体缓存配置
      FONT_CACHE_SIZE: &quot;50&quot;
      FONT_CACHE_TTL: &quot;60&quot;
      # 字幕缓存配置
      SUB_CACHE_SIZE: &quot;50&quot;
      SUB_CACHE_TTL: &quot;60&quot;
      SRT_2_ASS_FORMAT: &quot;Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding&quot;
      SRT_2_ASS_STYLE: &quot;Style: Default,楷体,20,&amp;amp;H03FFFFFF,&amp;amp;H00FFFFFF,&amp;amp;H00000000,&amp;amp;H02000000,-1,0,0,0,100,100,0,0,1,2,0,2,10,10,10,1&quot;
    volumes:
      - ./fonts:/fonts           # 字体目录
      - ./data:/data             # 数据库目录
      - ./logs:/logs             # 日志目录
    extra_hosts:
      # 允许容器访问宿主机的 Emby 服务
      - &quot;host.docker.internal:host-gateway&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!IMPORTANT]
&lt;code&gt;DISABLE_ONLINE_FONTS: &quot;True&quot;&lt;/code&gt; 配置禁用在线字体下载，完全使用本地字体库。如果你希望在本地字体缺失时自动从网络下载，可以设置为 &lt;code&gt;&quot;False&quot;&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;3. 配置 Nginx 反向代理&lt;/h3&gt;
&lt;p&gt;创建 Nginx 配置文件 &lt;code&gt;/etc/nginx/sites-available/fontinass&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;这是我的nginx，仅供参考。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 上游服务器配置
upstream fontinass_backend {
    server 127.0.0.1:8011;
    keepalive 32;
}

upstream emby_backend {
    server 127.0.0.1:8096;
    keepalive 32;
}

# HTTP 重定向到 HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name your-domain.com;

    # 重定向所有HTTP请求到HTTPS
    return 301 https://$host$request_uri;
}

# HTTPS 主配置
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    server_name your-domain.com;

    # SSL 证书配置
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # SSL 优化配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers &apos;ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384&apos;;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # 安全头
    add_header Strict-Transport-Security &quot;max-age=31536000; includeSubDomains&quot; always;
    add_header X-Content-Type-Options &quot;nosniff&quot; always;
    add_header X-Frame-Options &quot;SAMEORIGIN&quot; always;

    # 日志
    access_log /var/log/nginx/fontinass.access.log;
    error_log /var/log/nginx/fontinass.error.log;

    # 客户端上传大小限制
    client_max_body_size 100M;

    # WebSocket 支持（直接转发到 Emby）
    location ~ /(socket|embywebsocket) {
        proxy_pass http://emby_backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &quot;upgrade&quot;;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 86400;
    }

    # 字幕文件拦截（转发到 fontInAss 处理）
    location ~* /videos/(.*)/Subtitles/(.*)/(Stream\.ass|Stream\.ssa|Stream\.srt|Stream\.)$ {
        proxy_pass http://fontinass_backend;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 300;
        proxy_connect_timeout 75;

        # Gzip 压缩（针对字幕文件）
        gzip on;
        gzip_comp_level 6;
        gzip_types text/x-ssa text/plain application/x-subrip;
    }

    # 飞牛/Jellyfin 字幕 API（转发到 fontInAss）
    location ~ /v/api/v1/subtitle/dl/(.*) {
        proxy_pass http://fontinass_backend;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # JS 文件修改（Web 端字体渲染支持）
    location ~ /web/modules/htmlvideoplayer/plugin\.js {
        proxy_pass http://fontinass_backend;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_cache_bypass 1;
        add_header Content-Type &quot;application/javascript&quot; always;
    }

    location ~ /web/bower_components/(.*)/subtitles-octopus\.js {
        proxy_pass http://fontinass_backend;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_cache_bypass 1;
        add_header Content-Type &quot;application/javascript&quot; always;
    }

    # fontInAss Web UI 和 API
    location ~ ^/(subset|api|color|fontinass)/ {
        proxy_pass http://fontinass_backend;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 默认转发到 Emby 服务器
    location / {
        proxy_pass http://emby_backend;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;

        # 缓冲配置
        proxy_buffering off;
        proxy_redirect off;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启用 Nginx 配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 创建软链接启用配置
ln -s /etc/nginx/sites-available/fontinass /etc/nginx/sites-enabled/

# 测试配置
nginx -t

# 重载 Nginx
systemctl reload nginx
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4. 启动 fontInAss 服务&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;cd /root/docker_yaml/fontInAss

# 启动容器
docker compose up -d

# 查看日志确认启动成功
docker compose logs -f fontinass
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;正常启动的日志输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;🤖 INFO   本地字体文件夹:/fonts
🤖 INFO   开始检查数据库与目录的一致性...
🤖 INFO   监控中:/fonts
🌏 INFO   Started server process [8]
🌏 INFO   Waiting for application startup.
🌏 INFO   Application startup complete.
🌏 INFO   Uvicorn running on http://0.0.0.0:8011
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260112194835820.avif&quot; alt=&quot;image-20260112194828646&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;字体库配置&lt;/h2&gt;
&lt;h3&gt;添加本地字体&lt;/h3&gt;
&lt;p&gt;fontInAss 支持自动监控 &lt;code&gt;fonts&lt;/code&gt; 目录，添加字体后会自动扫描并添加到数据库。&lt;/p&gt;
&lt;p&gt;字体下载：https://pan.acgrip.com/&lt;/p&gt;
&lt;p&gt;注意：本项目的可用程度完全取决于你的字体库的规模。如果只有很少的字体，那么可能无法正常显示/出现有的有字体有的无的难看情况。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 复制字体文件到字体目录
cp /path/to/your/*.ttf /root/docker_yaml/fontInAss/fonts/

# 或创建子目录分类管理
mkdir -p fonts/中文字体 fonts/日文字体 fonts/英文字体
cp SourceHanSans*.ttf fonts/中文字体/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;支持的字体格式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.ttf&lt;/code&gt; (TrueType Font)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.ttc&lt;/code&gt; (TrueType Collection)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.otf&lt;/code&gt; (OpenType Font)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;字体自动识别流程&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;1. watchdog 实时监控 /fonts 目录
2. 发现新字体 → 提取元信息
   - 字体族名（familyName）
   - 完整名称（fullName）
   - PostScript 名称
   - 粗细（weight）
   - 样式（bold/italic）
3. 添加到 SQLite 数据库
4. 立即可用（无需重启容器）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看字体统计：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 查看字体文件数量
find /root/docker_yaml/fontInAss/fonts -type f \( -name &quot;*.ttf&quot; -o -name &quot;*.ttc&quot; -o -name &quot;*.otf&quot; \) | wc -l

# 查看字体目录占用空间
du -sh /root/docker_yaml/fontInAss/fonts
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;验证部署&lt;/h2&gt;
&lt;h3&gt;1. 检查容器状态&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 查看容器运行状态
docker compose ps

# 应该显示 fontinass 容器状态为 &quot;Up&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. 测试本地 API&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 测试 fontInAss API
curl -I http://localhost:8011/subset/

# 应该返回 HTTP/1.1 200 OK

![image-20260112164358436](https://s3.catcat.blog/images/2026/01/20260112164358682.avif)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. 测试 Nginx 代理&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 测试代理是否工作
curl -I https://your-domain.com/subset/

# 应该返回 200 OK 并显示 fontInAss Web UI

![image-20260112162104129](https://s3.catcat.blog/images/2026/01/20260112162133271.avif)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;客户端配置&lt;/h2&gt;
&lt;h3&gt;双轨访问模式&lt;/h3&gt;
&lt;p&gt;fontInAss 采用&lt;strong&gt;双轨模式&lt;/strong&gt;，不影响现有的 Emby 使用习惯：&lt;/p&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;&lt;strong&gt;方式 A（原有）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;http://localhost:8096&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;日常观看，不处理字幕&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;方式 B（新增）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://your-domain.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;字幕字体增强，自动处理特殊字体&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;配置步骤&lt;/h3&gt;
&lt;p&gt;大多数 Emby 客户端支持多服务器配置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;保留原有服务器配置&lt;/strong&gt;（不改动）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;添加新服务器&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打开 Emby 客户端设置&lt;/li&gt;
&lt;li&gt;添加新服务器：&lt;code&gt;https://your-domain.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;使用相同的账号登录&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;切换使用&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要字幕字体增强时，使用新地址&lt;/li&gt;
&lt;li&gt;日常观看使用原地址&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Web UI 使用&lt;/h2&gt;
&lt;p&gt;fontInAss 提供了 Web UI 用于批量处理字幕文件。&lt;/p&gt;
&lt;h3&gt;访问地址&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;https://your-domain.com/subset/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260112162133271.avif&quot; alt=&quot;image-20260112162104129&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;使用流程&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;1. 访问 Web UI
2. 上传字幕文件（支持拖拽）
3. 等待处理（通常几秒钟）
4. 下载带字体的字幕文件
5. 替换原字幕使用
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
Web UI 适合批量预处理字幕库，或在非 Emby 播放器上使用的字幕文件。日常通过 Emby 观看时，字幕会自动处理，无需手动使用 Web UI。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;常见问题&lt;/h2&gt;
&lt;h3&gt;Q1: 字幕不显示字体效果？&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;可能原因和解决方案：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;字体库中没有所需字体&lt;/strong&gt;&lt;pre&gt;&lt;code&gt;# 查看容器日志，确认缺失的字体
docker compose logs -f fontinass | grep &quot;缺失&quot;

# 添加缺失的字体到 fonts 目录
cp missing-font.ttf /root/docker_yaml/fontInAss/fonts/
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Q2: 如何切换回在线字体模式？&lt;/h3&gt;
&lt;p&gt;如果你发现本地字体库不完整，可以启用在线字体下载作为补充：&lt;/p&gt;
&lt;p&gt;我查了代码，应该是部署存了一份XZ的字体包在123网盘。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260112162515869.avif&quot; alt=&quot;image-20260112162515483&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;environment:
  DISABLE_ONLINE_FONTS: &quot;True&quot;  # 禁用在线字体
  DISABLE_ONLINE_FONTS: &quot;False&quot; # 启用在线字体
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改后重启容器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker compose down
docker compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在线字体会自动下载到 &lt;code&gt;fonts/download/&lt;/code&gt; 目录。&lt;/p&gt;
&lt;h3&gt;Q3: 如何查看字幕处理日志？&lt;/h3&gt;
&lt;p&gt;fontInAss 提供详细的日志记录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 实时查看容器日志
docker compose logs -f fontinass

# 查看缺失字体记录
cat /root/docker_yaml/fontInAss/logs/miss_logs.txt

# 查看 Nginx 访问日志
tail -f /var/log/nginx/fontinass.access.log
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260112194939553.avif&quot; alt=&quot;image-20260112194939138&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;性能优化&lt;/h2&gt;
&lt;h3&gt;字体缓存配置&lt;/h3&gt;
&lt;p&gt;fontInAss 使用三级缓存策略：内存缓存 → 本地数据库 → 在线数据库。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;environment:
  FONT_CACHE_SIZE: &quot;50&quot;   # 字体缓存数量（可根据内存调整）
  FONT_CACHE_TTL: &quot;60&quot;    # 字体缓存过期时间（分钟）

  SUB_CACHE_SIZE: &quot;50&quot;    # 字幕缓存数量
  SUB_CACHE_TTL: &quot;60&quot;     # 字幕缓存过期时间（分钟）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;建议配置：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内存充足（8GB+）：&lt;code&gt;FONT_CACHE_SIZE: &quot;100&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;内存有限（2-4GB）：&lt;code&gt;FONT_CACHE_SIZE: &quot;30&quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Nginx 优化&lt;/h3&gt;
&lt;p&gt;如果你的用户量较大，可以启用 Nginx 缓存：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 在 http 块中添加
proxy_cache_path /var/cache/nginx/fontinass levels=1:2 keys_zone=fontinass_cache:10m max_size=1g inactive=60m;

# 在 location ~ /videos/.*/Subtitles/ 块中添加
proxy_cache fontinass_cache;
proxy_cache_valid 200 60m;
proxy_cache_key &quot;$scheme$request_method$host$request_uri&quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;维护操作&lt;/h2&gt;
&lt;h3&gt;日常维护&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 查看运行状态
docker compose ps

# 查看日志
docker compose logs --tail=100 fontinass

# 重启服务
docker compose restart fontinass

# 更新镜像
docker compose pull
docker compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;备份重要数据&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 备份字体数据库和配置
tar -czf fontinass-backup-$(date +%Y%m%d).tar.gz \
  docker-compose.yml \
  data/ \
  fonts/
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;清理缓存&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 清理 Docker 缓存
docker system prune -a

# 清理 Nginx 缓存（如果启用）
rm -rf /var/cache/nginx/fontinass/*
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;fontInAss 通过智能的字体子集化和嵌入技术，完美解决了 Emby/Jellyfin 特殊字体字幕显示问题。本文介绍的双轨部署模式，既保留了原有服务的稳定性，又提供了字幕字体增强功能，是一个适合懒人的解决方案。&lt;/p&gt;
&lt;h3&gt;适用场景&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;观看带有特殊字体的动漫字幕&lt;/li&gt;
&lt;li&gt;在移动设备上正确显示字幕效果&lt;/li&gt;
&lt;li&gt;字幕组制作和分发带字体的字幕&lt;/li&gt;
&lt;li&gt;家庭媒体中心字幕优化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;希望本文能帮助你顺利部署 fontInAss 服务，享受完美的字幕观看体验！&lt;/p&gt;
</content:encoded><category>category:教程</category><category>tag:Docker</category><category>tag:fontInAss</category><category>tag:Emby</category><category>tag:字幕</category><category>tag:自托管</category><category>tag:Nginx</category></item><item><title>DokPloy 部署Garage与登录失败排查</title><link>https://catcat.blog/2026/01/dokploy-garage-s3-deployment-guide/</link><guid isPermaLink="true">https://catcat.blog/2026/01/dokploy-garage-s3-deployment-guide/</guid><description>排查 Garage WebUI 在 DokPloy 部署后登录问题，以及升级后显示 Unavailable 的问题</description><pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;背景&lt;/h2&gt;
&lt;h3&gt;MinIO 进入维护模式&lt;/h3&gt;
&lt;p&gt;2025年12月3日，MinIO 官方宣布开源项目进入维护模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;停止接受新功能和 PR&lt;/li&gt;
&lt;li&gt;不再积极处理现有 Issue 和 PR&lt;/li&gt;
&lt;li&gt;仅对严重安全漏洞&quot;视情况而定&quot;修复&lt;/li&gt;
&lt;li&gt;社区支持仅限&quot;尽力而为&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一举措在开源社区引发强烈反响。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260108175154139.avif&quot; alt=&quot;image-20260108175153529&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;为什么选择 Garage&lt;/h3&gt;
&lt;p&gt;::github{repo=&quot;deuxfleurs-org/garage&quot;}&lt;/p&gt;
&lt;p&gt;Garage 是一个用 Rust 编写的分布式对象存储系统，具有以下特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;S3 兼容&lt;/strong&gt;：可作为 MinIO 的平替&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;轻量级&lt;/strong&gt;：单二进制文件，资源占用低&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;去中心化&lt;/strong&gt;：适合边缘部署和多节点场景&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自托管友好&lt;/strong&gt;：配置简单，易于维护&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;配合 Garage WebUI 可以获得可视化管理界面：&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;khairul169/garage-webui&quot;}&lt;/p&gt;
&lt;h3&gt;Dokploy 部署配置&lt;/h3&gt;
&lt;p&gt;在 Dokploy 中部署 Garage + WebUI，需要配置以下环境变量：&lt;/p&gt;
&lt;p&gt;直接选择模板部署&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260108174434801.avif&quot; alt=&quot;image-20260108174433376&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# WebUI 环境变量
API_BASE_URL=http://garage:3903      # Admin API（内部通信，使用服务名）
S3_ENDPOINT_URL=http://garage:3900   # S3 API（内部通信）

# 认证配置（使用 htpasswd 生成）
AUTH_USER_PASS=admin:$2y$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;密码生成&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;htpasswd -nbBC 10 &quot;YOUR_USERNAME&quot; &quot;YOUR_PASSWORD&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果没有的htpasswd库的，需要安装 apache2-utils&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Garage 端口说明&lt;/strong&gt;：&lt;/p&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;3900&lt;/td&gt;
&lt;td&gt;S3 API&lt;/td&gt;
&lt;td&gt;garage.xx.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3901&lt;/td&gt;
&lt;td&gt;RPC (节点通信)&lt;/td&gt;
&lt;td&gt;仅内部&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3902&lt;/td&gt;
&lt;td&gt;Web 静态托管&lt;/td&gt;
&lt;td&gt;可选配置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3903&lt;/td&gt;
&lt;td&gt;Admin API&lt;/td&gt;
&lt;td&gt;仅内部&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3909&lt;/td&gt;
&lt;td&gt;WebUI&lt;/td&gt;
&lt;td&gt;garage-ui.xx.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;:::tip
&lt;code&gt;API_BASE_URL&lt;/code&gt; 和 &lt;code&gt;S3_ENDPOINT_URL&lt;/code&gt; 使用 Docker 服务名 &lt;code&gt;garage&lt;/code&gt; 而非外部域名，因为这是容器间内部通信。
:::&lt;/p&gt;
&lt;h2&gt;问题一：登录失败&lt;/h2&gt;
&lt;h3&gt;现象&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;htpasswd&lt;/code&gt; 生成了正确格式的密码哈希：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;htpasswd -nbBC 10 &quot;admin&quot; &quot;your-password&quot;
# 输出: admin:$2y$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置到 &lt;code&gt;.env&lt;/code&gt; 文件中：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;AUTH_USER_PASS=admin:$2y$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但登录时始终提示账户密码错误。&lt;/p&gt;
&lt;h3&gt;排查过程&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;docker inspect&lt;/code&gt; 查看容器内实际收到的环境变量：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker inspect garage-webui-1 --format &apos;{{range .Config.Env}}{{println .}}{{end}}&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;发现问题：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;AUTH_USER_PASS=admin:$2y$10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;密码哈希被截断了！期望的完整值是 &lt;code&gt;admin:$2y$10$xxxxxx...&lt;/code&gt;，但实际只有 &lt;code&gt;admin:$2y$10&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;原因分析&lt;/h3&gt;
&lt;p&gt;:::warning
Docker Compose 会将 &lt;code&gt;.env&lt;/code&gt; 文件中的 &lt;code&gt;$&lt;/code&gt; 解释为变量替换符号。
:::&lt;/p&gt;
&lt;p&gt;bcrypt 哈希中包含多个 &lt;code&gt;$&lt;/code&gt; 符号（如 &lt;code&gt;$2y$10$Qtra4...&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$2y&lt;/code&gt; 被当作变量 &lt;code&gt;2y&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$10&lt;/code&gt; 被当作变量 &lt;code&gt;10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$Qtra4...&lt;/code&gt; 被当作变量 &lt;code&gt;Qtra4...&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;由于这些变量不存在，Docker Compose 将它们替换为空字符串，导致哈希被截断。&lt;/p&gt;
&lt;h3&gt;解决方案&lt;/h3&gt;
&lt;p&gt;在 &lt;code&gt;docker-compose.yml&lt;/code&gt; 中直接硬编码环境变量，使用 &lt;code&gt;$$&lt;/code&gt; 转义 &lt;code&gt;$&lt;/code&gt; 符号：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;services:
  garage-webui:
    environment:
      - AUTH_USER_PASS=admin:$$2y$$10$$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      - API_BASE_URL=http://garage:3903
      - S3_ENDPOINT_URL=http://garage:3900
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
&lt;code&gt;$$&lt;/code&gt; 在 Docker Compose 中会被转义为单个 &lt;code&gt;$&lt;/code&gt;，这样密码哈希就能完整传递给容器了。
:::&lt;/p&gt;
&lt;h2&gt;问题二：升级后状态显示 Unavailable&lt;/h2&gt;
&lt;h3&gt;现象&lt;/h3&gt;
&lt;p&gt;将 Garage 从 v2.0.0 升级到 v2.1.0 后，WebUI 显示连接状态为 &lt;strong&gt;Unavailable&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;排查过程&lt;/h3&gt;
&lt;p&gt;查看 Garage 日志：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker logs garage-1 --tail 30
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;发现大量错误：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;WARN Response: error 500 Internal Server Error, Internal error: Layout not ready
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查集群状态：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker exec garage-1 /garage status
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出显示节点没有分配角色：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;==== HEALTHY NODES ====
ID                Hostname  Address      Tags  Zone  Capacity          Version
7740e73cc75036ef  67993cf5  [::1]:3901         NO ROLE ASSIGNED        v2.1.0
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;原因分析&lt;/h3&gt;
&lt;p&gt;:::important
升级 Garage 后，需要重新配置集群布局（Cluster Layout）。节点没有分配角色时，无法提供 S3 服务。
:::&lt;/p&gt;
&lt;h3&gt;解决方案&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;分配节点角色&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;docker exec garage-1 /garage layout assign -z dc1 -c 1G 7740e73cc75036ef
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;参数说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-z dc1&lt;/code&gt;：Zone 名称&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c 1G&lt;/code&gt;：分配的存储容量&lt;/li&gt;
&lt;li&gt;&lt;code&gt;7740e73cc75036ef&lt;/code&gt;：节点 ID（从 status 命令获取）&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;应用布局更改&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;docker exec garage-1 /garage layout apply --version 1
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;docker exec garage-1 /garage status
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在应该显示：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;==== HEALTHY NODES ====
ID                Hostname  Address      Tags  Zone  Capacity   DataAvail  Version
7740e73cc75036ef  67993cf5  [::1]:3901   []    dc1   1000.0 MB  978.9 GB   v2.1.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;刷新 WebUI，连接状态应恢复正常。&lt;/p&gt;
&lt;h2&gt;总结&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;登录失败&lt;/td&gt;
&lt;td&gt;Docker Compose &lt;code&gt;$&lt;/code&gt; 变量替换&lt;/td&gt;
&lt;td&gt;使用 &lt;code&gt;$$&lt;/code&gt; 转义&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;登录不稳定&lt;/td&gt;
&lt;td&gt;多个容器负载均衡&lt;/td&gt;
&lt;td&gt;删除旧容器&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unavailable&lt;/td&gt;
&lt;td&gt;升级后节点无角色&lt;/td&gt;
&lt;td&gt;&lt;code&gt;layout assign&lt;/code&gt; + &lt;code&gt;apply&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;:::note
在 Dokploy 中管理 Docker Compose 项目时，环境变量的特殊字符处理需要特别注意。直接在 &lt;code&gt;docker-compose.yml&lt;/code&gt; 中硬编码可以避免 &lt;code&gt;.env&lt;/code&gt; 文件的变量替换问题。
:::&lt;/p&gt;
&lt;h2&gt;界面预览&lt;/h2&gt;
&lt;p&gt;界面还是挺不错，简洁又好看。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260108174812934.avif&quot; alt=&quot;image-20260108174812353&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260108174831624.avif&quot; alt=&quot;image-20260108174831129&quot; /&gt;&lt;/p&gt;
</content:encoded><category>category:教程</category><category>tag:Garage</category><category>tag:Docker</category><category>tag:Dokploy</category><category>tag:S3</category></item><item><title>Docker 代理设置指南 - 国内环境下的镜像加速与代理配置</title><link>https://catcat.blog/2026/01/docker-proxy-setup/</link><guid isPermaLink="true">https://catcat.blog/2026/01/docker-proxy-setup/</guid><description>详解 Docker 在中国大陆的代理设置方法，包括镜像加速、systemd 代理配置、build 时代理、全局代理等多种方案</description><pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;由于众所周知的原因，在国内使用 Docker 时，经常会遇到拉取镜像缓慢甚至失败的问题。本文整理了两种主要的解决方案：使用国内镜像加速和配置代理。&lt;/p&gt;
&lt;h2&gt;方案一：国内镜像加速&lt;/h2&gt;
&lt;p&gt;最简单的方式是配置国内镜像源。编辑 &lt;code&gt;/etc/docker/daemon.json&lt;/code&gt; 文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
    &quot;registry-mirrors&quot;: [&quot;https://docker.1ms.run&quot;]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是这个方法总归是权宜之计，速度并不是很好。而一些部署的国内镜像源是需要付费的，怕麻烦的可以购买付费用这些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;毫秒镜像：&lt;a href=&quot;https://1ms.run/&quot;&gt;https://1ms.run/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;轩辕镜像：&lt;a href=&quot;https://xuanyuan.cloud/&quot;&gt;https://xuanyuan.cloud/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;配置完成后重启 Docker 服务：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl daemon-reload
sudo systemctl restart docker
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;方案二：使用代理&lt;/h2&gt;
&lt;h3&gt;快速搭建 Linux 代理环境&lt;/h3&gt;
&lt;p&gt;如果你还没有在 Linux 上配置代理，推荐使用 &lt;a href=&quot;https://github.com/nelvko/clash-for-linux-install&quot;&gt;clash-for-linux-install&lt;/a&gt; 项目快速部署。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;nelvko/clash-for-linux-install&quot;}&lt;/p&gt;
&lt;p&gt;:::note
不要在公网部署这个，尤其面板之类的。务必关掉端口，走私网链接。
:::&lt;/p&gt;
&lt;p&gt;安装命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone --branch master --depth 1 https://gh-proxy.org/https://github.com/nelvko/clash-for-linux-install.git &amp;amp;&amp;amp; cd clash-for-linux-install &amp;amp;&amp;amp; bash install.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;常用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Usage:
  clashctl COMMAND [OPTIONS]

Commands:
    on                    开启代理
    off                   关闭代理
    status                内核状况
    proxy                 系统代理
    ui                    Web 面板
    secret                Web 密钥
    sub                   订阅管理
    upgrade               升级内核
    tun                   Tun 模式
    mixin                 Mixin 配置

Global Options:
    -h, --help            显示帮助信息
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;理解代理地址的选择&lt;/h3&gt;
&lt;p&gt;在配置 Docker 代理之前，需要先理解你的代理部署在哪里：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;场景一：代理在远程服务器（如通过 Tailscale/WireGuard 访问）&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────┐      VPN 网络        ┌─────────────────┐
│  代理服务器      │◄──────────────────►│  本机 (Docker)  │
│  100.98.32.42   │                      │                 │
│  :7890          │                      │                 │
└─────────────────┘                      └─────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这种情况下，无论是宿主机还是容器，都直接使用远程代理地址 &lt;code&gt;100.98.32.42:7890&lt;/code&gt;。Docker 容器（即使使用 bridge 网络）的流量会经过宿主机路由，可以正常访问 VPN 网络。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;场景二：代理运行在宿主机本地&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────────────────────────────┐
│  宿主机                                  │
│  ┌─────────────┐    ┌─────────────────┐ │
│  │ 代理服务    │    │ Docker 容器     │ │
│  │ 127.0.0.1   │◄───│ (bridge 网络)   │ │
│  │ :7890       │    │                 │ │
│  └─────────────┘    └─────────────────┘ │
└─────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这种情况下比较复杂：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;宿主机上的服务可以直接使用 &lt;code&gt;127.0.0.1:7890&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;但容器内的 &lt;code&gt;127.0.0.1&lt;/code&gt; 指向容器自己，不是宿主机&lt;/li&gt;
&lt;li&gt;容器需要使用 &lt;code&gt;172.17.0.1:7890&lt;/code&gt;（docker0 网桥地址）来访问宿主机上的代理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Docker Pull/Push 代理配置&lt;/h3&gt;
&lt;p&gt;Docker 的 &lt;code&gt;pull&lt;/code&gt; 和 &lt;code&gt;push&lt;/code&gt; 命令由 systemd 管理，需要为 Docker 服务配置代理环境变量。&lt;/p&gt;
&lt;p&gt;创建配置目录和文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;写入以下内容（将代理地址替换为你自己的）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Service]
Environment=&quot;HTTP_PROXY=http://100.98.32.42:7890&quot;
Environment=&quot;HTTPS_PROXY=http://100.98.32.42:7890&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
如果代理运行在宿主机本地，这里可以直接使用 &lt;code&gt;127.0.0.1:7890&lt;/code&gt;，因为 Docker daemon 运行在宿主机上。
:::&lt;/p&gt;
&lt;p&gt;重新加载配置并重启 Docker：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl daemon-reload
sudo systemctl restart docker
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;验证配置是否生效：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl show --property=Environment docker
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时 &lt;code&gt;docker pull&lt;/code&gt; 就会通过代理拉取镜像了。&lt;/p&gt;
&lt;h3&gt;Docker Build 时使用代理&lt;/h3&gt;
&lt;p&gt;构建镜像时需要通过 &lt;code&gt;--build-arg&lt;/code&gt; 参数传递代理设置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker build \
    --build-arg http_proxy=http://100.98.32.42:7890 \
    --build-arg https_proxy=http://100.98.32.42:7890 \
    -t image_name .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
如果你的代理在远程服务器（通过 VPN 访问），直接使用远程地址即可。容器的网络流量会经过宿主机路由，可以正常访问 VPN 网络中的代理。
:::&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果代理在宿主机本地&lt;/strong&gt;，需要使用 docker0 网桥地址：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker build \
    --build-arg http_proxy=http://172.17.0.1:7890 \
    --build-arg https_proxy=http://172.17.0.1:7890 \
    -t image_name .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者使用 &lt;code&gt;--network=host&lt;/code&gt; 让构建过程直接使用宿主机网络：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker build --network=host \
    --build-arg http_proxy=http://127.0.0.1:7890 \
    --build-arg https_proxy=http://127.0.0.1:7890 \
    -t image_name .
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Docker 全局代理配置&lt;/h3&gt;
&lt;p&gt;通过配置 &lt;code&gt;~/.docker/config.json&lt;/code&gt; 可以为所有新创建的容器设置代理：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vim ~/.docker/config.json
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;{
    &quot;proxies&quot;: {
        &quot;default&quot;: {
            &quot;httpProxy&quot;: &quot;http://100.98.32.42:7890&quot;,
            &quot;httpsProxy&quot;: &quot;http://100.98.32.42:7890&quot;,
            &quot;noProxy&quot;: &quot;localhost,127.0.0.1,.local&quot;
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
这个配置只对 &lt;code&gt;build&lt;/code&gt; 和 &lt;code&gt;run&lt;/code&gt; 创建的新容器生效，&lt;strong&gt;不影响 &lt;code&gt;docker pull&lt;/code&gt;&lt;/strong&gt;。pull 仍需按上文配置 systemd 代理。
:::&lt;/p&gt;
&lt;p&gt;:::caution
容器一旦创建，代理环境变量就会被固化。即使之后修改或删除 &lt;code&gt;config.json&lt;/code&gt;，已有容器仍会使用创建时的代理设置。如需关闭代理，需要在容器内手动清除环境变量：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export http_proxy=
export https_proxy=
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;最终验证&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.catcat.blog/images/2026/01/20260107153907860.avif&quot; alt=&quot;image-20260107153901735&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h3&gt;容器内使用代理&lt;/h3&gt;
&lt;p&gt;有时需要在运行中的容器内访问外网，以下是几种常用方法。&lt;/p&gt;
&lt;h4&gt;方法一：直接设置环境变量（推荐）&lt;/h4&gt;
&lt;p&gt;在容器内执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export ALL_PROXY=&apos;socks5://100.98.32.42:7890&apos;
# 或者
export http_proxy=&apos;http://100.98.32.42:7890&apos;
export https_proxy=&apos;http://100.98.32.42:7890&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果代理在宿主机本地，使用 docker0 地址：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export ALL_PROXY=&apos;socks5://172.17.0.1:7890&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;方法二：使用 host 网络模式&lt;/h4&gt;
&lt;p&gt;创建容器时使用 &lt;code&gt;--network=host&lt;/code&gt; 参数：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run --network=host your_image
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时容器与宿主机共享网络栈。如果代理在宿主机本地，可以直接使用 &lt;code&gt;127.0.0.1&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export ALL_PROXY=&apos;socks5://127.0.0.1:7890&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
使用 &lt;code&gt;--network=host&lt;/code&gt; 后，&lt;code&gt;-p&lt;/code&gt; 端口映射参数将失效，容器的所有端口都会直接暴露在宿主机上。
:::&lt;/p&gt;
&lt;h4&gt;方法三：使用 Docker 全局代理配置&lt;/h4&gt;
&lt;p&gt;如上文所述，配置 &lt;code&gt;~/.docker/config.json&lt;/code&gt; 后，新创建的容器会自动继承代理设置。&lt;/p&gt;
&lt;h2&gt;网络问题排查&lt;/h2&gt;
&lt;h3&gt;验证容器能否访问代理&lt;/h3&gt;
&lt;p&gt;在容器内测试代理连通性：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 测试 HTTP 代理
curl -x http://100.98.32.42:7890 https://www.google.com

# 测试 SOCKS5 代理
curl -x socks5://100.98.32.42:7890 https://www.google.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;查看 docker0 网桥地址&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ip addr show docker0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;通常是 &lt;code&gt;172.17.0.1&lt;/code&gt;，但可能因配置而异。&lt;/p&gt;
&lt;h3&gt;确认 VPN 网络可达&lt;/h3&gt;
&lt;p&gt;如果代理通过 VPN 访问，先在宿主机上确认能正常连接：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -x http://100.98.32.42:7890 https://www.google.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;代理地址速查表&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;systemd 配置&lt;/td&gt;
&lt;td&gt;远程地址（如 &lt;code&gt;100.98.32.42:7890&lt;/code&gt;）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;127.0.0.1:7890&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker build (bridge)&lt;/td&gt;
&lt;td&gt;远程地址&lt;/td&gt;
&lt;td&gt;&lt;code&gt;172.17.0.1:7890&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker build (host)&lt;/td&gt;
&lt;td&gt;远程地址&lt;/td&gt;
&lt;td&gt;&lt;code&gt;127.0.0.1:7890&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;容器内 (bridge)&lt;/td&gt;
&lt;td&gt;远程地址&lt;/td&gt;
&lt;td&gt;&lt;code&gt;172.17.0.1:7890&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;容器内 (host)&lt;/td&gt;
&lt;td&gt;远程地址&lt;/td&gt;
&lt;td&gt;&lt;code&gt;127.0.0.1:7890&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;config.json&lt;/td&gt;
&lt;td&gt;远程地址&lt;/td&gt;
&lt;td&gt;&lt;code&gt;172.17.0.1:7890&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;常见问题&lt;/h2&gt;
&lt;h3&gt;SOCKS5 代理支持&lt;/h3&gt;
&lt;p&gt;Docker 的 &lt;code&gt;config.json&lt;/code&gt; 配置目前只支持 HTTP/HTTPS/FTP 协议，不直接支持 SOCKS5。如果你使用的是 Clash 等支持混合端口的代理，同一端口通常同时支持 HTTP 和 SOCKS5，直接使用 HTTP 方式配置即可。&lt;/p&gt;
&lt;h3&gt;临时禁用代理&lt;/h3&gt;
&lt;p&gt;如果配置了全局代理但临时需要禁用：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;重命名 &lt;code&gt;~/.docker/config.json&lt;/code&gt; 文件&lt;/li&gt;
&lt;li&gt;在容器内清除环境变量：&lt;code&gt;export http_proxy= https_proxy=&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;--build-arg http_proxy= --build-arg https_proxy=&lt;/code&gt; 覆盖&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;总结&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;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;加速镜像拉取&lt;/td&gt;
&lt;td&gt;systemd 代理配置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;构建时访问外网&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--build-arg&lt;/code&gt; 或全局配置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;容器内临时访问外网&lt;/td&gt;
&lt;td&gt;直接设置 &lt;code&gt;ALL_PROXY&lt;/code&gt; 环境变量&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;所有容器默认使用代理&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.docker/config.json&lt;/code&gt; 全局配置&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;关键是理解你的代理部署位置：远程代理直接用远程地址，本地代理在容器内需要用 &lt;code&gt;172.17.0.1&lt;/code&gt;。&lt;/p&gt;
</content:encoded><category>category:教程</category><category>tag:Docker</category><category>tag:Proxy</category><category>tag:Linux</category></item></channel></rss>