<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Leuの小站</title><description>LeuBlog</description><link>https://blog.leuxx.de/</link><language>zh_CN</language><item><title>esim.gg仅需32元永久使用爱沙尼亚eSIM 并写入实体eSIM卡</title><link>https://blog.leuxx.de/posts/26/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/26/</guid><description>超高性价比的永久爱沙尼亚 eSIM 解决方案。优惠码：techleu</description><pubDate>Thu, 20 Nov 2025 00:32:16 GMT</pubDate><content:encoded>&lt;p&gt;最近因为注册某些app需要用到海外的电话号码，目前海外大部分国家都支持esim，且部分国家的电话号码并不需要实名（上传护照等信息），但国内大部分手机都是不支持esim的，所以还需要把esim写入到实体sim卡，这里我就选择了爱沙尼亚的esim.gg卡（俗称乌龟卡），3.99欧（31.71元）即可永久使用，如果使用&lt;strong&gt;币安&lt;/strong&gt;付款，价格可以在少0.2欧，3.79欧即可购买，不用实名且可以免费收短信。
:::tip[提示]
官网：&lt;a href=&quot;https://esim.gg&quot;&gt;https://esim.gg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;优惠码：&lt;code&gt;techleu&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;使用优惠码购买链接：&lt;a href=&quot;https://esim.gg/new/number/estonia?coupon=techleu&quot;&gt;https://esim.gg/new/number/estonia?coupon=techleu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;连接基站即可免费保号一年&lt;/strong&gt;
:::&lt;/p&gt;
&lt;h2&gt;一、关于乌龟卡&lt;/h2&gt;
&lt;p&gt;这个esim购买网址是 &lt;a href=&quot;https://esim.gg&quot;&gt;esim.gg&lt;/a&gt;，而网站图标又是个乌龟，就俗称乌龟卡，他们家主要是爱沙尼亚的esim卡，其他地区的也有，但是太贵了，这个爱沙尼亚（区号为+372）的最便宜。他们那个网站有中文，工单也支持中文。&lt;/p&gt;
&lt;p&gt;说下具体资费，一次性购买费用3.99欧，相当于31.71rmb。为什么说是永久使用呢，因为除此之外就没有套餐费，收短信免费，在国内接听电话也免费，只要自己不发短信不开流量，当个接收短信的号码完全0额外成本。他这个保号规则也很简单，只要1年只能连接上一次基站，就可以延长1年使用期（或者余额有变动也可以延长1年），所以平常接收完验证码，直接拔卡就行，一年内连上一次基站，实现0额外成本一直使用。&lt;/p&gt;
&lt;h2&gt;二、购买乌龟卡&lt;/h2&gt;
&lt;p&gt;上面也说了网址，直接浏览器打开，进入购买，进入到购买界面就有简体中文了，往下拉选择全球地区，输入折扣码&lt;code&gt;techleu&lt;/code&gt;可以减0.4欧，不然开卡费就要4.39欧，下面那个充值金额最低就是1欧，之后就是选择个自己喜欢的号码，这里因为只充值1欧所以可选的免费号码比较少（嗯靓号也是要收费的），最后支付宝完成支付，这个非常贴心，直接用支付宝就行。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/ON6vBnVY.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;阅读并同意条款&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/2qSj8uGz.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择自己需要充值的余额 这里我选择充值最低1欧&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/NcLki0hY.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择自己喜欢的号码 有免费的也有付费的 这里我选择免费的&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/M46Bux6z.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择不选购流量包&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/tSZ0rF21.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;输入折扣代码&lt;code&gt;techleu&lt;/code&gt;减0.4欧 最后选择支付方式即可&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/r45jbntx.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;我想肯定是有人想拿这个上网，，，，怎么说呢，也能用，但是流量费肯定是贵。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763008236372_IMG_3731.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;支付完成后就可以下卡了，自己账户里面就会出现这个号码，选择install esim，就会出现二维码，此时用支持esim的手机扫描就可以下卡了，如果自己手机不支持esim，就需要写入到实体sim卡。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763008241087_IMG_3732.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;三、写入实体sim卡&lt;/h2&gt;
&lt;p&gt;开头前先了解一下基础知识，所谓的写入实体sim卡，是自己购买euicc卡，然后通过软件或者读卡器把esim信息写入到euicc。euicc就是一个能写入多个esim的实体卡，不同euicc卡片容量不同，能写入的数量也不同，一般都是500k，可以写20个esim（可以不同运营商），这样当你需要哪个卡的适合就直接切换到对应的esim，一个卡顶20个传统卡。
可能大火有听说过5ber/9esim这种，其实都是euicc卡，只是前者有牌子，卖的非常贵，普通euicc卡俗称小白卡，即小作坊产品，质量不好说（有人写入一次就炸鸡），但是非常便宜，40不到就能拿下（500k容量）。需要注意的是，安卓目前写入和切卡（切换euicc内的esim信息）非常方便，但是苹果只能切卡，而且需要特定的euicc才支持，这类euicc也要贵几块钱，如果自己用苹果的建议买海外esim版的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763008234018_IMG_3733.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;刚刚说了，苹果只支持切卡，不能写卡，所以苹果写卡是需要专门的读卡器，这玩意也要40多，安卓则不需要，直接用app写入就行。本篇就用安卓做演示，至于苹果，我也没设备。苹果不但卖的比安卓贵，在各个方面都要多掏一笔钱hhhhh。忘记说了，买之前记得问问店家这个卡带不带ara-m（证书），如果不带这玩意安卓需要root才能写入，如果带的话就不用。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763008234477_IMG_3734.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;记得关掉短信、语音避免扣费&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763008238196_IMG_3735.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安卓写入需要用到一个叫做“easyeuicc”的app，这个自己谷歌下载，安装好后可以运行检测下，前三项能通过就没问题，基本上大部分手机都可以通过，我这好几年前的红米都可以，至于后面几项不用管。对了，有些手机只能sim卡1槽才支持写卡，卡2槽不行，，，，
easyeuicc下载网站：&lt;a href=&quot;https://gitea.angry.im/PeterCxy/OpenEUICC/releases&quot;&gt;https://gitea.angry.im/PeterCxy/OpenEUICC/releases&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763008237313_IMG_3736.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;上面的检查没问题后就可以准备把euicc卡插到手机准备写卡，但是，我要说但是了，如果是小米手机，请务必关闭手机查找功能，这玩意会插入新的sim卡自动发短信，乌龟卡发一条就会扣0.24欧，给我气的，我一共就充了1欧，一下子就被小米给花了0.24欧？？？？？？然后小米还会偷跑流量，我干，后面又给我跑了0.3k流量扣了0.0001欧，本来就不富裕的家庭更是雪上加霜。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763008232677_IMG_3737.jpeg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;/uploads/1763008238329_IMG_3738.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763008233562_IMG_3739.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;四、测试短信&lt;/h2&gt;
&lt;p&gt;随便写一个手机号 发送测试短信&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763008235812_IMG_3740.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763008232053_IMG_3741.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;五、保号、重新写入esim&lt;/h2&gt;
&lt;h3&gt;关于保号&lt;/h3&gt;
&lt;p&gt;连接基站即可免费保号一年，可在官网查看有效期。&lt;/p&gt;
&lt;h3&gt;关于重新写入esim&lt;/h3&gt;
&lt;p&gt;联网删掉esim，在app内发送通知，即可在新的esim实体卡中写入esim（重新官网扫码写入即可 PS.二维码可写入十次，超出后需要补卡换新码）&lt;/p&gt;
</content:encoded></item><item><title>Zouter HK BGP Global - Lite测评</title><link>https://blog.leuxx.de/posts/34/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/34/</guid><description>Zouter HK BGP Global - Lite 测评，包含延迟、路由、iperf3测速</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;测试配置&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;CPU 核心数：1 vCPU&lt;/li&gt;
&lt;li&gt;内存：768 MB&lt;/li&gt;
&lt;li&gt;硬盘空间：10 GB&lt;/li&gt;
&lt;li&gt;流量：1 TB 双向流量&lt;/li&gt;
&lt;li&gt;带宽速率：520 Mbps&lt;/li&gt;
&lt;li&gt;IPv6 数量：免费添加&lt;/li&gt;
&lt;li&gt;价格：9.98CNY/月&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;购买链接:&lt;a href=&quot;https://console.zouter.io/products/cvm&quot;&gt;https://console.zouter.io/products/cvm&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;基本信息&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/fa192a0889a3d766fa1d027d5fc2bae0.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;IP质量&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/9d63a33ca6b0734b9a6732a56d37df4a.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;网络质量&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/738f8cb1cda78a617ea299a004a1f908.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;回程路由&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/8626607a155716ebebc3e16796e3eb61.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;iperf3测速&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;测试网络为华北移动&lt;/li&gt;
&lt;li&gt;测试结果仅供参考&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;晚高峰移动ipv6速度不错&lt;/p&gt;
&lt;h2&gt;ipv4&lt;/h2&gt;
&lt;p&gt;单线程&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  8.97 MBytes  75.2 Mbits/sec                  
[  5]   1.00-2.00   sec  27.2 MBytes   229 Mbits/sec                  
[  5]   2.00-3.00   sec  26.7 MBytes   224 Mbits/sec                  
[  5]   3.00-4.00   sec  26.4 MBytes   221 Mbits/sec                  
[  5]   4.00-5.00   sec  26.9 MBytes   226 Mbits/sec                  
[  5]   5.00-6.00   sec  26.4 MBytes   221 Mbits/sec                  
[  5]   6.00-7.00   sec  26.8 MBytes   225 Mbits/sec                  
[  5]   7.00-8.00   sec  26.4 MBytes   221 Mbits/sec                  
[  5]   8.00-9.00   sec  26.4 MBytes   221 Mbits/sec                  
[  5]   9.00-10.00  sec  26.8 MBytes   225 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.10  sec   252 MBytes   209 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   249 MBytes   209 Mbits/sec                  receiver
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;多线程&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.14  sec   134 MBytes   111 Mbits/sec  6135             sender
[  5]   0.00-10.00  sec   131 MBytes   110 Mbits/sec                  receiver
[  7]   0.00-10.14  sec   122 MBytes   101 Mbits/sec  4135             sender
[  7]   0.00-10.00  sec   119 MBytes  99.4 Mbits/sec                  receiver
[  9]   0.00-10.14  sec   118 MBytes  97.9 Mbits/sec  3814             sender
[  9]   0.00-10.00  sec   115 MBytes  96.6 Mbits/sec                  receiver
[ 11]   0.00-10.14  sec   126 MBytes   104 Mbits/sec  4108             sender
[ 11]   0.00-10.00  sec   123 MBytes   103 Mbits/sec                  receiver
[ 13]   0.00-10.14  sec   126 MBytes   104 Mbits/sec  5283             sender
[ 13]   0.00-10.00  sec   122 MBytes   102 Mbits/sec                  receiver
[SUM]   0.00-10.14  sec   626 MBytes   518 Mbits/sec  23475             sender
[SUM]   0.00-10.00  sec   610 MBytes   512 Mbits/sec                  receiver
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;ipv6&lt;/h2&gt;
&lt;p&gt;单线程&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  20.1 MBytes   169 Mbits/sec                  
[  5]   1.00-2.00   sec  37.4 MBytes   313 Mbits/sec                  
[  5]   2.00-3.00   sec  37.1 MBytes   311 Mbits/sec                  
[  5]   3.00-4.00   sec  37.2 MBytes   312 Mbits/sec                  
[  5]   4.00-5.00   sec  37.1 MBytes   311 Mbits/sec                  
[  5]   5.00-6.00   sec  37.5 MBytes   314 Mbits/sec                  
[  5]   6.00-7.00   sec  37.6 MBytes   315 Mbits/sec                  
[  5]   7.00-8.00   sec  37.8 MBytes   317 Mbits/sec                  
[  5]   8.00-9.00   sec  37.2 MBytes   312 Mbits/sec                  
[  5]   9.00-10.00  sec  37.6 MBytes   315 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.07  sec   360 MBytes   300 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   356 MBytes   299 Mbits/sec                  receiver
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;多线程&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.09  sec   141 MBytes   117 Mbits/sec  16512             sender
[  5]   0.00-10.00  sec   137 MBytes   115 Mbits/sec                  receiver
[  7]   0.00-10.09  sec   123 MBytes   102 Mbits/sec  8973             sender
[  7]   0.00-10.00  sec   120 MBytes   100 Mbits/sec                  receiver
[  9]   0.00-10.09  sec   125 MBytes   104 Mbits/sec  11980             sender
[  9]   0.00-10.00  sec   122 MBytes   102 Mbits/sec                  receiver
[ 11]   0.00-10.09  sec   120 MBytes   100 Mbits/sec  10412             sender
[ 11]   0.00-10.00  sec   117 MBytes  98.4 Mbits/sec                  receiver
[ 13]   0.00-10.09  sec   129 MBytes   107 Mbits/sec  16134             sender
[ 13]   0.00-10.00  sec   125 MBytes   105 Mbits/sec                  receiver
[SUM]   0.00-10.09  sec   639 MBytes   531 Mbits/sec  64011             sender
[SUM]   0.00-10.00  sec   621 MBytes   521 Mbits/sec                  receiver
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>通过 acme.sh 轻松申请 Let&apos;s Encrypt 通配符证书</title><link>https://blog.leuxx.de/posts/33/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/33/</guid><description>通过acme.sh申请通配符证书</description><pubDate>Sat, 27 Jun 2026 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在网站部署过程中，HTTPS 已经成为标配。如果拥有多个子域名，例如：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;blog.example.com&lt;/code&gt; &lt;code&gt;api.example.com&lt;/code&gt; &lt;code&gt;cdn.example.com &lt;/code&gt; &lt;code&gt;panel.example.com&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;那么申请一张 &lt;strong&gt;通配符证书（Wildcard Certificate）&lt;/strong&gt; 会更加方便。&lt;/p&gt;
&lt;p&gt;通过 &lt;code&gt;*.example.com&lt;/code&gt; 可以覆盖所有一级子域名，避免为每个子域名单独申请证书。&lt;/p&gt;
&lt;p&gt;本文将介绍如何使用 &lt;strong&gt;acme.sh&lt;/strong&gt; 免费申请和自动续期通配符 SSL 证书。&lt;/p&gt;
&lt;h2&gt;什么是 acme.sh&lt;/h2&gt;
&lt;p&gt;acme.sh 是一个纯 Shell 编写的 ACME 客户端，具有以下特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;轻量级，无需 Python&lt;/li&gt;
&lt;li&gt;支持 Linux、macOS、BSD&lt;/li&gt;
&lt;li&gt;支持 Let&apos;s Encrypt、ZeroSSL 等 CA&lt;/li&gt;
&lt;li&gt;支持自动续期&lt;/li&gt;
&lt;li&gt;支持数十种 DNS API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;项目地址：
&lt;a href=&quot;https://github.com/acmesh-official/acme.sh&quot;&gt;https://github.com/acmesh-official/acme.sh&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;为什么通配符证书必须使用 DNS 验证&lt;/h2&gt;
&lt;p&gt;普通证书可以通过 HTTP 验证：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;example.com&lt;/code&gt;  &lt;code&gt;www.example.com&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;但是通配符证书：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;*.example.com&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;只能通过 DNS TXT 记录验证。&lt;/p&gt;
&lt;p&gt;因此以下方式无法申请通配符证书：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--standalone&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--webroot&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;必须使用：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--dns&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;安装 acme.sh&lt;/h2&gt;
&lt;p&gt;执行官方安装脚本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl https://get.acme.sh | sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完成后重新加载环境变量：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查版本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acme.sh --version
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;注册账户&lt;/h2&gt;
&lt;p&gt;推荐使用邮箱注册：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acme.sh --register-account -m your@email.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;切换默认 CA 为 ZeroSSL：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acme.sh --set-default-ca --server zerossl
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果更喜欢 Let&apos;s Encrypt：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acme.sh --set-default-ca --server letsencrypt
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Cloudflare DNS 自动验证&lt;/h2&gt;
&lt;p&gt;以 Cloudflare 为例。&lt;/p&gt;
&lt;h3&gt;创建 API Token&lt;/h3&gt;
&lt;p&gt;进入 Cloudflare 控制台：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;My Profile → API Tokens → Create Token&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;授予以下权限：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Zone → DNS → Edit&lt;/code&gt;
&lt;code&gt;Zone → Zone → Read&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;保存 Token。&lt;/p&gt;
&lt;h3&gt;配置环境变量&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;export CF_Token=&quot;xxxxxxxxxxxxxxxx&quot;
export CF_Account_ID=&quot;xxxxxxxxxxxxxxxx&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为了避免重启后失效，可写入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~/.profile
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;申请通配符证书&lt;/h2&gt;
&lt;p&gt;执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acme.sh --issue \
  --dns dns_cf \
  -d example.com \
  -d &apos;*.example.com&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;参数说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;-d example.com
覆盖根域名&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;-d &apos;*.example.com&apos;
覆盖所有一级子域名&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;--dns dns_cf
使用 Cloudflare DNS API 验证&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;申请成功后会显示：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Your cert is in: ~/.acme.sh/example.com/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;目录结构类似：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;example.com.cer&lt;/code&gt;
&lt;code&gt;example.com.key&lt;/code&gt;
&lt;code&gt;fullchain.cer&lt;/code&gt;
&lt;code&gt;ca.cer&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;安装证书&lt;/h2&gt;
&lt;p&gt;例如安装到 Nginx：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p /etc/nginx/ssl
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acme.sh --install-cert -d example.com \
  --key-file       /etc/nginx/ssl/example.com.key \
  --fullchain-file /etc/nginx/ssl/example.com.pem \
  --reloadcmd &quot;systemctl reload nginx&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样在证书续期后会自动重载 Nginx。&lt;/p&gt;
&lt;h2&gt;Nginx 配置示例&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;server {
    listen 443 ssl http2;
    server_name example.com *.example.com;

    ssl_certificate     /etc/nginx/ssl/example.com.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    location / {
        root /var/www/html;
        index index.html;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nginx -t
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重载：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl reload nginx
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;自动续期&lt;/h2&gt;
&lt;p&gt;acme.sh 安装后会自动创建定时任务。&lt;/p&gt;
&lt;p&gt;查看：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;crontab -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;手动测试续期：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acme.sh --renew -d example.com --force
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看所有证书：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acme.sh --list
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;常见问题&lt;/h2&gt;
&lt;h3&gt;申请失败：Invalid DNS Record&lt;/h3&gt;
&lt;p&gt;原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API Token 权限不足&lt;/li&gt;
&lt;li&gt;域名解析未托管到 Cloudflare&lt;/li&gt;
&lt;li&gt;DNS TXT 记录未及时同步&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;建议等待几分钟后重试。&lt;/p&gt;
&lt;h3&gt;只申请了 *.example.com&lt;/h3&gt;
&lt;p&gt;如果命令只有：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-d &apos;*.example.com&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;则证书不会覆盖：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;example.com&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;正确写法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-d example.com
-d &apos;*.example.com&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;查看当前 CA&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;acme.sh --info -d example.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出类似：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CA: https://acme.zerossl.com/v2/DV90&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;相比传统的证书申请方式，acme.sh 具有轻量、稳定、自动续期等优势。结合 Cloudflare、腾讯云 DNSPod、阿里云 DNS 等 DNS API，可以实现全自动申请和续期通配符证书。&lt;/p&gt;
&lt;p&gt;推荐组合：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;acme.sh + Cloudflare DNS + ZeroSSL&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;或者：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;acme.sh + Cloudflare DNS + Let&apos;s Encrypt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;基本可以实现零人工干预的 HTTPS 证书管理。&lt;/p&gt;
</content:encoded></item><item><title>OpenAI Codex安装配置中转API超详细教程 AI编程工具Codex实战配置文件常见错误总结</title><link>https://blog.leuxx.de/posts/32/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/32/</guid><description>安装，配置使用codex中转站完整教程。</description><pubDate>Wed, 17 Jun 2026 07:30:00 GMT</pubDate><content:encoded>&lt;p&gt;在现代软件开发中，&lt;strong&gt;代码规模越来越大、技术栈越来越复杂&lt;/strong&gt;，开发者花在“理解代码、改动代码、反复验证”的时间，往往远多于真正写新功能的时间。为了解决这一问题，&lt;strong&gt;Codex&lt;/strong&gt; 应运而生。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Codex（Codex CLI）&lt;/strong&gt; 是一个运行在终端中的 AI 编程助手。与普通聊天式 AI 不同，它可以直接读取你的项目代码、理解文件结构，在你的确认下修改源码、执行命令，并一步步完成真实的开发任务。你可以把它理解为一个“懂代码、会动手、但始终受你控制的编程搭档”。&lt;/p&gt;
&lt;p&gt;在本文中，你将从零开始学习 Codex 的&lt;strong&gt;安装、配置与实际使用方法&lt;/strong&gt;，包括如何接入第三方 API、如何在终端和 VS Code 中高效使用，以及遇到常见问题时如何快速排查。即使你从未使用过类似工具，也可以按照本文一步步完成配置，并真正把 Codex 用到你的日常开发中。&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;安装前准备（所有系统通用）&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Node.js 22+&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;npm 10+&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;稳定网络连接&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Windows 额外注意：OpenAI 官方也提到 Windows 支持偏“实验性”，更稳的方式是用 WSL 环境；&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;&lt;strong&gt;安装 Codex CLI&lt;/strong&gt;&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;安装 &lt;strong&gt;Git Bash&lt;/strong&gt;（按安装向导一直下一步即可）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;安装 Node.js（建议装最新 LTS）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;安装 Codex CLI（在 CMD / PowerShell 里执行）：&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;npm install -g @openai/codex
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;验证：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;codex --version
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;strong&gt;macOS&lt;/strong&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;npm install -g @openai/codex
codex --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;必要时加 sudo。&lt;/p&gt;
&lt;p&gt;OpenAI 官方也提供了 Homebrew 安装方式（可选）：brew install codex。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;1）先装 Node.js / npm（不同发行版命令不同）。&lt;/p&gt;
&lt;p&gt;2）安装与验证：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo npm install -g @openai/codex
codex --version
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;strong&gt;配置中转API作为第三方API&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Codex CLI 会读取你的配置文件：一般在 ~/.codex/（Windows 也是用户目录下的 .codex）。创建两份文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;auth.json：放密钥&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;config.toml：放模型与网关配置&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Windows 配置路径与文件&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;1）进入用户目录的 .codex（示例：C:\Users\Administrator.codex）。如果看不到，先在资源管理器开启“显示隐藏项目”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/69831685d9c88c98816d0434.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;2）没有就手动创建 .codex 文件夹，并创建：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;auth.json&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;config.toml&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/69831ac3d9c88c98816d088e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;auth.json（把 sk-xxx 换成你的中转API Key）&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{&quot;OPENAI_API_KEY&quot;: &quot;sk-xxx&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;config.toml（把 base_url 换成你的中转地址）&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;model_provider = &quot;whatai&quot;
model = &quot;gpt-5-codex&quot;
model_reasoning_effort = &quot;high&quot;
disable_response_storage = true
preferred_auth_method = &quot;apikey&quot;

[model_providers.whatai]
name = &quot;whatai&quot;
base_url = &quot;https://api.whatai.cc/v1&quot;
wire_api = &quot;responses&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;strong&gt;macOS / Linux 配置命令&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;创建文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p ~/.codex
touch ~/.codex/auth.json
touch ~/.codex/config.toml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编辑 auth.json（粘贴同样的 JSON）与 config.toml。&lt;strong&gt;要保证上下一致&lt;/strong&gt;：model_provider = &quot;xxx&quot; 要和 [model_providers.xxx] 的段名一致。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;配置改完一定要“重启终端”&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;关闭终端/重启终端后再启动 codex&lt;/strong&gt;，让配置生效。&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;启动与基本使用（终端）&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;进入你的项目目录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd your-project-folder
codex
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你也可以直接在命令后跟一个初始任务，例如让它先解释仓库结构：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;codex &quot;Explain this codebase to me&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/69831a5ed9c88c98816d0670.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;推荐的使用习惯（很实用）&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&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;：每次只让它做一件事（修一个 bug / 加一个功能点）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;用 Git 做检查点&lt;/strong&gt;：Codex 会改文件，OpenAI 官方建议任务前后做 git checkpoint，方便回滚。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;strong&gt;交互技巧：Slash 命令与快捷操作&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;在 Codex 交互界面里，输入 / 可以打开 slash 命令菜单，用来切换模型、调整权限、总结对话等。&lt;/p&gt;
&lt;p&gt;一些常见命令（示例来源于体验分享与官方说明思路一致）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;/status：查看当前会话配置/状态&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;/new：开新会话（清空上下文）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;/model：切换模型&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;/init：初始化一些模板/设置（视版本而定）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外，很多版本支持用 ! 直接跑终端命令（例如 !git status / !ls），能减少你“让模型代跑命令”的成本。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;&lt;strong&gt;VS Code插件Codex&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;流程是：&lt;strong&gt;完成上述 .codex 配置后&lt;/strong&gt;，在 VS Code 扩展商店搜索并安装 codex，安装后会出现在侧边栏。&lt;/p&gt;
&lt;p&gt;OpenAI 官方 quickstart 也提到：安装后 Codex 面板会出现在侧边栏（有时在折叠区）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/698317aad9c88c98816d04bb.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;常见问题（FAQ）与排查清单&lt;/strong&gt;&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;Q1：codex: command not found 找不到命令&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;原因常见是 npm 全局安装路径没加入 PATH&lt;/strong&gt;，或安装没成功。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;先运行 codex --version 验证是否安装成功。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重新安装：npm install -g @openai/codex&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Q2：Linux/macOS 安装时报权限错误（EACCES）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;用 sudo npm install -g @openai/codex（Linux 写法）。&lt;/p&gt;
&lt;p&gt;（更长期的做法是把 npm 全局目录改到用户目录，但这属于通用 Node/npm 运维，不是 Codex 专属。）&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Q3：Windows 找不到 &lt;strong&gt;&lt;strong&gt;.codex&lt;/strong&gt;&lt;/strong&gt;文件夹&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;提醒：需要在资源管理器里打开“显示隐藏的项目”，因为 .codex 是隐藏目录风格。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Q4：配置了 Key 但仍提示未认证 / 401&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;确认两点：&lt;/p&gt;
&lt;p&gt;1）auth.json 内容必须是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{&quot;OPENAI_API_KEY&quot;: &quot;sk-xxx&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2）&lt;strong&gt;重启终端&lt;/strong&gt;后再运行 codex。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Q5：一直连不上 / 超时 / 网络错误&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;检查 base_url 是否完全一致&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;公司/校园网络可能需要代理或放行相关域名（这是网络环境问题，不是 Codex 本身）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Q6：模型不可用 / 报 model not found&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;先用提供的模型名：gpt-5.2-codex。&lt;/p&gt;
&lt;p&gt;如果你在中转API模型列表看到的名称不同，就要以实际可用模型为准（模型名不匹配会直接失败）。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Q7：&lt;strong&gt;&lt;strong&gt;config.toml&lt;/strong&gt;&lt;/strong&gt;写了但好像没生效&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;最常见原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;model_provider = &quot;X&quot; 和 [model_providers.X] &lt;strong&gt;名字不一致&lt;/strong&gt;（比如一个写 whatai，另一个写 api111）。whatai的不同系统示例里名字确实不一样，所以你改的时候要保持一致。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;忘记重启终端。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Q8：怎么升级 / 更新 Codex CLI？&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;OpenAI 官方给的升级方式是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm i -g @openai/codex@latest
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;strong&gt;Q9：有哪些命令行参数/高级配置可以查？&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;命令与 flag 参考：官方提供了“command line options”参考页，并说明 CLI 默认从 ~/.codex/config.toml 读取配置，也支持用 -c key=value 临时覆盖。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配置字段的完整参考：官方也有 config reference 页面。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>永久免费kdns.fr域名 无需续费 支持绑定至CloudFlare</title><link>https://blog.leuxx.de/posts/31/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/31/</guid><description>免费注册kdns.fr域名、无需绑卡、无需续费，支持绑定至CloudFlare。</description><pubDate>Tue, 16 Jun 2026 06:10:00 GMT</pubDate><content:encoded>&lt;h2&gt;注册账号&lt;/h2&gt;
&lt;p&gt;点击&lt;a href=&quot;https://dashboard.katabump.com/auth/register&quot;&gt;https://dashboard.katabump.com/auth/register&lt;/a&gt;注册账号&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1781009133870_IMG_4207.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;注册域名&lt;/h2&gt;
&lt;p&gt;打开&lt;a href=&quot;https://dashboard.katabump.com/domains/create&quot;&gt;https://dashboard.katabump.com/domains/create&lt;/a&gt;注册自己想要的域名&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1781065828995_IMG_4213.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;托管至CloudFlare&lt;/h2&gt;
&lt;p&gt;在CloudFlare添加自己注册的域名&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1781009378827_IMG_4208.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1781009385380_IMG_4209.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;复制ns记录添加过去并保存&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1781009130683_IMG_4204.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1781009133528_IMG_4205.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;最后更新名称服务器等待解析完成&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1781009139142_IMG_4206.webp&quot; alt=&quot;更新名称服务器&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Linux VPS 使用 tc 实现端口限速教程（支持动态解除限速）</title><link>https://blog.leuxx.de/posts/30/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/30/</guid><description>详细讲解 Linux VPS 使用 tc 实现端口限速、流量控制、自动限速与解除限速的方法，支持 Xray、Hysteria、Docker 等服务。</description><pubDate>Sun, 07 Jun 2026 01:30:00 GMT</pubDate><content:encoded>&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;li&gt;流量达到一定值后自动限速&lt;/li&gt;
&lt;li&gt;高峰期自动限速保护 VPS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Linux 自带的 &lt;code&gt;tc&lt;/code&gt;（Traffic Control）就可以实现这些功能。&lt;/p&gt;
&lt;p&gt;相比 &lt;code&gt;wondershaper&lt;/code&gt; 这种整网卡限速工具，&lt;code&gt;tc&lt;/code&gt; 更强：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持端口限速&lt;/li&gt;
&lt;li&gt;支持 IP 限速&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;这篇文章记录一下 VPS 上常用的 tc 限速玩法。&lt;/p&gt;
&lt;h2&gt;一、什么是 tc&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;tc&lt;/code&gt; 是 Linux 内核自带的流量控制工具。&lt;/p&gt;
&lt;p&gt;它属于：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iproute2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;套件的一部分。&lt;/p&gt;
&lt;p&gt;Debian / Ubuntu 一般默认自带。&lt;/p&gt;
&lt;p&gt;检查：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tc -V
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果没安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt update
apt install iproute2 -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;二、tc 基本原理&lt;/h2&gt;
&lt;p&gt;tc 的工作方式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables 标记流量
        ↓
tc 根据 mark 分类
        ↓
限制对应流量速度
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;简单理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;iptables 负责“识别流量”&lt;/li&gt;
&lt;li&gt;tc 负责“限速”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;三、限制单个端口速度&lt;/h2&gt;
&lt;p&gt;这里以：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;3001 端口
限制为 5Mbps
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为例。&lt;/p&gt;
&lt;h3&gt;1. 添加根队列&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;tc qdisc add dev eth0 root handle 1: htb default 30
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;eth0&lt;/code&gt; 为网卡&lt;/li&gt;
&lt;li&gt;&lt;code&gt;htb&lt;/code&gt; 为限速队列&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1:&lt;/code&gt; 为主队列 ID&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 设置总带宽&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;tc class add dev eth0 parent 1: classid 1:1 htb rate 1000mbit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1000mbit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;只是总带宽上限。&lt;/p&gt;
&lt;p&gt;可以改成你 VPS 实际带宽。&lt;/p&gt;
&lt;h3&gt;3. 创建限速规则&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;tc class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit ceil 5mbit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1:10&lt;/code&gt; 为限速分类&lt;/li&gt;
&lt;li&gt;&lt;code&gt;5mbit&lt;/code&gt; 为最大速度&lt;/li&gt;
&lt;li&gt;rate（保证带宽）&lt;/li&gt;
&lt;li&gt;ceil（峰值带宽）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. 使用 iptables 标记端口&lt;/h3&gt;
&lt;p&gt;ipv4标记&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t mangle -A OUTPUT -p tcp --sport 3001 -j MARK --set-mark 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ipv6标记&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip6tables -t mangle -A OUTPUT -p tcp --sport 3001 -j MARK --set-mark 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--sport 3001
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;表示：&lt;/p&gt;
&lt;p&gt;限制 VPS 发出的 3001 端口流量。&lt;/p&gt;
&lt;p&gt;适用于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;节点下载限速&lt;/li&gt;
&lt;li&gt;Web 服务限速&lt;/li&gt;
&lt;li&gt;用户下行限速&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;设置某个端口ip连接数&lt;/h4&gt;
&lt;p&gt;如果你的 24014 是 TCP 端口，可以直接用 iptables 限制：&lt;/p&gt;
&lt;h5&gt;ipv4&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;iptables -I INPUT -p tcp --syn --dport 24014 -m connlimit --connlimit-above 20 --connlimit-mask 32 -j REJECT
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;ipv6&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;ip6tables -I INPUT -p tcp --syn --dport 24014 -m connlimit --connlimit-above 20 --connlimit-mask 128 -j DROP
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;含义：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;24014端口&lt;/li&gt;
&lt;li&gt;每个来源 IP 最多 20 个并发连接&lt;/li&gt;
&lt;li&gt;超过立即拒绝&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是 connlimit 模块的标准用法。&lt;/p&gt;
&lt;h4&gt;按规则编号删除&lt;/h4&gt;
&lt;p&gt;先查看规则编号：&lt;/p&gt;
&lt;h5&gt;ipv4&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;iptables -L INPUT --line-numbers -n
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;ipv6&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;ip6tables -L INPUT --line-numbers -n
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如看到：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;num  target     prot opt source      destination
1    REJECT     tcp  --  0.0.0.0/0   0.0.0.0/0   tcp dpt:24014 connlimit above 3 reject-with icmp-port-unreachable
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除第 1 条：&lt;/p&gt;
&lt;h5&gt;ipv4&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;iptables -D INPUT 1
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;ipv6&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;ip6tables -D INPUT 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;确认是否删除成功&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -L INPUT -n
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;5. tc 绑定流量标记&lt;/h3&gt;
&lt;h4&gt;ipv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tc filter add dev eth0 parent 1: protocol ip handle 10 fw flowid 1:10
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;ipv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tc filter add dev eth0 parent 1: protocol ipv6 handle 10 fw flowid 1:10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;到这里限速已经生效。&lt;/p&gt;
&lt;h3&gt;6. 更改限速规则&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;tc class change dev eth0 parent 1:1 classid 1:10 htb rate 100mbit ceil 100mbit
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;rate（保证带宽）更改为100mbit&lt;/li&gt;
&lt;li&gt;ceil（峰值带宽）更改为100mbit&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;7. 更改iptables 标记端口&lt;/h3&gt;
&lt;p&gt;如果想先删除旧规则再添加新规则：&lt;/p&gt;
&lt;h4&gt;ipv4更改新端口&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;查看规则编号&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;iptables -t mangle -L OUTPUT --line-numbers
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;会看到类似：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;num  target     prot opt source    destination
1    MARK       tcp  --  anywhere  anywhere tcp spt:3001 MARK set 0xa
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;删除旧规则
比如编号是 1：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;iptables -t mangle -D OUTPUT 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者直接按内容删除：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t mangle -D OUTPUT -p tcp --sport 3001 -j MARK --set-mark 1
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;添加新端口规则&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;例如改成 443：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t mangle -A OUTPUT -p tcp --sport 443 -j MARK --set-mark 10
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;ipv6更改新端口&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;查看ipv6规则&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;ip6tables -t mangle -L OUTPUT --line-numbers
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;删除旧规则&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;ip6tables -t mangle -D OUTPUT 1
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;添加新端口&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;ip6tables -t mangle -A OUTPUT -p tcp --sport 3001 -j MARK --set-mark 10
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;四、查看限速状态&lt;/h2&gt;
&lt;p&gt;使用以下命令查看当前限速&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tc class show dev eth0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出示例解读：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class htb 1:10 parent 1:1 prio 0 rate 100Mbit ceil 100Mbit burst 1600b cburst 1600b
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rate 100Mbit&lt;/code&gt;保证带宽（最低保障）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ceil 100Mbit&lt;/code&gt;峰值带宽（最大上限）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;burst&lt;/code&gt;突发允许字节数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cburstceil &lt;/code&gt;突发允许字节数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;查看 iptables 命中：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t mangle -L -n -v
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;五、解除限速&lt;/h2&gt;
&lt;h3&gt;删除 tc 限速&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;tc qdisc del dev eth0 root
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;删除 iptables 标记&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;iptables -t mangle -F
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;六、流量达到一定值后自动限速&lt;/h2&gt;
&lt;p&gt;很多人真正需要的是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;平时不限速
流量达到一定值后自动限速
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;月流量超过 1TB&lt;/li&gt;
&lt;li&gt;自动限制为 10Mbps&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种通常配合：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vnstat + shell
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;实现。&lt;/p&gt;
&lt;h2&gt;七、安装 vnStat&lt;/h2&gt;
&lt;p&gt;安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt install vnstat -y
systemctl enable vnstat
systemctl start vnstat
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看月流量：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vnstat -m
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;八、自动限速脚本&lt;/h2&gt;
&lt;p&gt;创建：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /root/limit.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;写入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash

LIMIT=&quot;1000&quot;   # 1000GB
USED=$(vnstat --json m | jq &apos;.interfaces[0].traffic.month[0].tx + .interfaces[0].traffic.month[0].rx&apos;)

USED_GB=$((USED / 1024))

if [ &quot;$USED_GB&quot; -ge &quot;$LIMIT&quot; ]; then
    tc qdisc replace dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms
fi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;赋予权限：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod +x /root/limit.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;九、定时检测&lt;/h2&gt;
&lt;p&gt;编辑 crontab：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;crontab -e
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每 5 分钟检测：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*/5 * * * * /root/limit.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;十、恢复不限速&lt;/h2&gt;
&lt;p&gt;删除限速：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 删除 tc
tc qdisc del dev eth0 root

# 清空 mangle 表
iptables -t mangle -F
ip6tables -t mangle -F

# 删除自定义链（如果有）
iptables -t mangle -X
ip6tables -t mangle -X
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;即可恢复满速。&lt;/p&gt;
&lt;h2&gt;十一、常见问题&lt;/h2&gt;
&lt;h3&gt;1. RTNETLINK answers: No such file or directory&lt;/h3&gt;
&lt;p&gt;原因：&lt;/p&gt;
&lt;p&gt;没有创建 root qdisc。&lt;/p&gt;
&lt;p&gt;先执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tc qdisc add dev eth0 root handle 1: htb default 30
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. 限速不生效&lt;/h3&gt;
&lt;p&gt;检查：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t mangle -L -n -v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看看 MARK 是否命中。&lt;/p&gt;
&lt;h3&gt;3. VPS 网卡不是 eth0&lt;/h3&gt;
&lt;p&gt;查看：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip addr
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;有些系统可能是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ens3
enp1s0
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;十二、推荐用途&lt;/h2&gt;
&lt;p&gt;tc 很适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xray / Hysteria 节点限速&lt;/li&gt;
&lt;li&gt;Docker 容器限速&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;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;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;wondershaper&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;trickle&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;tc&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;如果你只是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;整个 VPS 限速
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;那 &lt;code&gt;wondershaper&lt;/code&gt; 足够。&lt;/p&gt;
&lt;p&gt;但如果你想：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;精准控制某个服务
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;那 &lt;code&gt;tc + iptables&lt;/code&gt; 才是 Linux 最强方案。&lt;/p&gt;
</content:encoded></item><item><title>Debian安装fail2ban封禁恶意ip</title><link>https://blog.leuxx.de/posts/29/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/29/</guid><description>VPS安全防护 解决VPS被扫 CPU高占用</description><pubDate>Mon, 25 May 2026 23:30:00 GMT</pubDate><content:encoded>&lt;h2&gt;安装Fail2Ban&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update
sudo apt install fail2ban rsyslog -y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;安装 rsyslog，以确保日志文件能够正常生成并供 Fail2Ban 使用&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;启动服务&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl enable --now fail2ban
sudo systemctl enable --now rsyslog
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;检查服务状态&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl status fail2ban
sudo systemctl status rsyslog
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;配置 Fail2Ban&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/fail2ban/jail.local
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;粘贴以下内容，记得把 5522 改成你的SSH端口&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[sshd]
ignoreip = 127.0.0.1/8
enabled = true
filter = sshd
port = 5522
maxretry = 3
findtime = 300
bantime = -1
banaction = nftables-multiport
logpath = /var/log/auth.log
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;配置说明：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;enabled = true 启用 SSH 防护&lt;/li&gt;
&lt;li&gt;port = 5522 指定 SSH 端口&lt;/li&gt;
&lt;li&gt;maxretry = 3 3次失败后封禁&lt;/li&gt;
&lt;li&gt;findtime = 300 在 300 秒（5 分钟）内统计失败尝试次数&lt;/li&gt;
&lt;li&gt;bantime = -1 封禁时间设为 -1，表示永久封禁&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;重启服务使配置生效&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl restart fail2ban
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;管理和监控&lt;/h2&gt;
&lt;h3&gt;查看运行状态&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl status fail2ban
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;查看日志&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo tail -f /var/log/fail2ban.log
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;管理封禁IP&lt;/h2&gt;
&lt;h3&gt;查询封禁情况&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo fail2ban-client status sshd
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;手动解封IP：&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo fail2ban-client unban IP地址
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;常见问题处理&lt;/h2&gt;
&lt;p&gt;如果服务启动失败，检查配置文件语法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo fail2ban-client -t
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果日志不更新，重启 rsyslog 服务：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl restart rsyslog
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;卸载&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl stop fail2ban
sudo systemctl disable fail2ban
sudo apt-get remove --purge fail2ban
sudo apt-get autoremove
sudo apt-get clean
sudo rm -rf /var/log/fail2ban.log
sudo rm -rf /var/lib/fail2ban
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>VPS 上禁用与启用 IPv6 全教程</title><link>https://blog.leuxx.de/posts/28/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/28/</guid><description>VPS禁用、启用ipv6教程</description><pubDate>Sun, 24 May 2026 00:30:00 GMT</pubDate><content:encoded>&lt;p&gt;在 VPS 上，有时出于安全或网络需求，你可能想 &lt;strong&gt;禁用 IPv6&lt;/strong&gt;；有时又需要 &lt;strong&gt;开启 IPv6&lt;/strong&gt; 来使用新一代网络服务。本文就来详细讲解如何在 Linux VPS 上管理 IPv6。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ 本文以 Ubuntu / Debian / CentOS 系统为例，其他 Linux 发行版也适用，只需根据网络配置方式做小调整。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;一、检查当前 IPv6 状态&lt;/h2&gt;
&lt;p&gt;在动手前，先确认 VPS 的 IPv6 当前状态：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; # 查看内核 IPv6 是否禁用
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
    
# 查看网卡是否有 IPv6 地址
ip a
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;如果 &lt;code&gt;disable_ipv6&lt;/code&gt; 输出 &lt;code&gt;0&lt;/code&gt;，表示 IPv6 功能已启用&lt;/li&gt;
&lt;li&gt;如果输出 &lt;code&gt;1&lt;/code&gt;，表示 IPv6 已禁用&lt;/li&gt;
&lt;li&gt;网卡下有 &lt;code&gt;inet6&lt;/code&gt; 地址，则 IPv6 已可用&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;二、禁用 IPv6&lt;/h2&gt;
&lt;p&gt;禁用 IPv6 主要有两种方式：&lt;strong&gt;内核级&lt;/strong&gt; 和 &lt;strong&gt;系统级&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;1️⃣ 方法一：通过 sysctl 永久禁用&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;编辑配置文件（如果不存在可以新建）：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/sysctl.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;添加以下内容：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;立即生效：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo sysctl -p
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;验证：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;ip a | grep inet6
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果没有输出 IPv6 地址，禁用成功 ✅&lt;/p&gt;
&lt;h3&gt;2️⃣ 方法二：通过 GRUB 禁用（彻底禁用）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;编辑 GRUB 配置：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/default/grub
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;找到：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;改成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet ipv6.disable=1&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;更新 GRUB 并重启：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;# Ubuntu/Debian
sudo update-grub
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# CentOS / Rocky / AlmaLinux
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;三、启用 IPv6&lt;/h2&gt;
&lt;p&gt;如果你之前禁用了 IPv6 或系统没有自动启用：&lt;/p&gt;
&lt;h3&gt;1️⃣ 方法一：通过 sysctl 启用&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/sysctl.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加/修改：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.all.forwarding = 1  # 如果需要路由转发
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;生效：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sysctl -p
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2️⃣ 方法二：通过 GRUB 启用&lt;/h3&gt;
&lt;p&gt;如果 GRUB 中有 &lt;code&gt;ipv6.disable=1&lt;/code&gt;，删除该参数并更新 GRUB：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 修改 /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet&quot;
    
# 更新 GRUB
sudo update-grub   # Ubuntu/Debian
sudo grub2-mkconfig -o /boot/grub2/grub.cfg   # CentOS
sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3️⃣ 配置网卡获取 IPv6 地址（Ubuntu/Debian Netplan 示例）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/netplan/01-netcfg.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;network:
    version: 2
    ethernets:
    eth0:
        dhcp4: true
        dhcp6: true
        accept-ra: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;应用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo netplan apply
ip a | grep inet6
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;如果没有分配公网 IPv6，可能需要在 VPS 控制台开启 IPv6。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;四、测试 IPv6 是否可用&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;ping6 ipv6.google.com
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;返回 &lt;code&gt;64 bytes from ...&lt;/code&gt; → IPv6 已生效&lt;/li&gt;
&lt;li&gt;返回 &lt;code&gt;Network unreachable&lt;/code&gt; → 可能没有分配 IPv6 地址&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;/td&gt;
&lt;td&gt;方法&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;禁用 IPv6&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sysctl&lt;/code&gt; 或 &lt;code&gt;GRUB&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;启用 IPv6&lt;/td&gt;
&lt;td&gt;删除 GRUB 参数 + sysctl + 网卡配置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;检查状态&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cat /proc/sys/net/ipv6/conf/all/disable_ipv6&lt;/code&gt; 和 &lt;code&gt;ip a&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;测试网络&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ping6 ipv6.google.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;通过以上步骤，你可以灵活地在 VPS 上开启或禁用 IPv6，满足不同的网络需求。&lt;/p&gt;
</content:encoded></item><item><title>Docker部署chevereto图床开心版</title><link>https://blog.leuxx.de/posts/27/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/27/</guid><description>部署chevereto图床</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;效果图&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/67f1f97a74fd6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;部署教程&lt;/h2&gt;
&lt;h3&gt;docker compose部署&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;version: &apos;3.8&apos;

services:
    chevereto:
    image: ghcr.io/chevereto/chevereto:4.0.9
    container_name: chevereto
    restart: unless-stopped
    ports:
        - &quot;8090:80&quot;
    environment:
        CHEVERETO_DB_HOST: db
        CHEVERETO_DB_PORT: 3306
        CHEVERETO_DB_NAME: chevreto
        CHEVERETO_DB_USER: chevreto
        CHEVERETO_DB_PASS: passwd
    depends_on:
        - db
    volumes:
        - /opt/chevereto:/var/www/html/
        - /opt/chevereto/asset:/var/www/html/images/_assets/
    
    db:
    image: mysql:8.1
    container_name: chevereto_db
    restart: unless-stopped
    environment:
        MYSQL_ROOT_PASSWORD: passwd
        MYSQL_DATABASE: chevreto
        MYSQL_USER: chevreto
        MYSQL_PASSWORD: passwd
    volumes:
        - /opt/chevereto/db:/var/lib/mysql
&lt;/code&gt;&lt;/pre&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;docker compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;下载开心版文件&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;使用蓝奏网盘下载 Chevereto V4.0.7：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://itxe.lanzout.com/itD5M0ozrzif&quot;&gt;&lt;strong&gt;https://itxe.lanzout.com/itD5M0ozrzif&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;把压缩包放入&lt;code&gt;/opt/chevereto&lt;/code&gt;文件夹内解压 赋予权限&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod -R 077 /opt/chevereto
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后打开&lt;code&gt;ip:8090&lt;/code&gt;即可&lt;/p&gt;
</content:encoded></item><item><title>Nginx Proxy Manager 一款Nginx可视化面板 docker部署教程</title><link>https://blog.leuxx.de/posts/24/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/24/</guid><description>Nginx反代面板</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;搭建教程&lt;/h2&gt;
&lt;h3&gt;docker compose:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;version: &apos;3.8&apos;
services:
    app:
    image: &apos;jc21/nginx-proxy-manager:latest&apos;
    restart: unless-stopped
    ports:
        - &apos;80:80&apos;
        - &apos;81:81&apos;
        - &apos;443:443&apos;
    volumes:
        - ./data:/data
        - ./letsencrypt:/etc/letsencrypt
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;默认用户名密码&lt;/li&gt;
&lt;li&gt;Email:             admin@example.com&lt;/li&gt;
&lt;li&gt;Password:       changeme&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;查看docker内部ip:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ip addr show docker0
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>VPS 添加 IPv6 超详细教程（含静态 IPv6、SLAAC、临时 IPv6）</title><link>https://blog.leuxx.de/posts/25/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/25/</guid><description>VPS添加临时ipv6</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;如果只需要临时IPv6地址，可以使用此教程添加ipv6。&lt;/p&gt;
&lt;h2&gt;1. IPv6 基础概念&lt;/h2&gt;
&lt;p&gt;如果你是第一次折腾 IPv6，这几个概念一定要搞清楚：&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;说明&lt;/td&gt;
&lt;td&gt;是否可自定义&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;静态 IPv6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;上游给你一个固定 IPv6，如 &lt;code&gt;2606:4700:1234:5678::2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✔️ 可自定义尾段&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SLAAC 自动 IPv6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;由路由器自动分配，如 &lt;code&gt;2606:4700:abcd:ef01:xxxx:xxxx:xxxx:xxxx&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌ 不可控&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;临时 IPv6（Privacy IPv6）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;系统自动生成的随机 IPv6，用于保护隐私&lt;/td&gt;
&lt;td&gt;❌ 默认不可控&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stable Privacy IPv6（Token 自定义）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;可自定义 EUI64 或 Token，稳定又隐私&lt;/td&gt;
&lt;td&gt;✔️ 可控、可长期使用&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;2. 检查 VPS 是否支持 IPv6&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;检查 IPv6 是否可用&lt;/strong&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ping6 ipv6.google.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;strong&gt;查看接口是否分配了 IPv6&lt;/strong&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ip -6 addr
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果没有 IPv6，则需要自己配置（见下文）。&lt;/p&gt;
&lt;h2&gt;3. 配置静态 IPv6（可自定义 IPv6）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;你可以完全自定义你的 IPv6，比如&lt;br /&gt;
&lt;code&gt;2a03:1234:abcd:5678::leu&lt;/code&gt; 也就是：&lt;br /&gt;
&lt;code&gt;2a03:1234:abcd:5678::1337&lt;/code&gt;、&lt;code&gt;::666&lt;/code&gt;, &lt;code&gt;::114&lt;/code&gt; 等等。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;只要尾段在 &lt;code&gt;/64&lt;/code&gt; 内就可任意自定义。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;3.1 Debian / Ubuntu&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;编辑：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/network/interfaces
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iface eth0 inet6 static
address 2a03:1234:abcd:5678::114
netmask 64
gateway 2a03:1234:abcd:5678::1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后重载：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart networking
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;strong&gt;3.2 CentOS / AlmaLinux / RockyLinux（NetworkManager）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;编辑：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nmcli con mod eth0 ipv6.method manual
nmcli con mod eth0 ipv6.addresses &quot;2a03:1234:abcd:5678::114/64&quot;
nmcli con mod eth0 ipv6.gateway &quot;2a03:1234:abcd:5678::1&quot;
nmcli con up eth0
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;4. 配置 SLAAC 自动 IPv6&lt;/h2&gt;
&lt;p&gt;SLAAC = VPS 上网后自动从上游路由器获取 IPv6。&lt;/p&gt;
&lt;h3&gt;Debian / Ubuntu:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/network/interfaces
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;加入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iface eth0 inet6 auto
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;或 systemd-networkd：&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;[Network]
DHCP=no
IPv6AcceptRA=yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart systemd-networkd
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;5. 配置临时 IPv6（Privacy IPv6）&lt;/h1&gt;
&lt;p&gt;用于浏览网页时隐藏真实 IPv6。&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Debian / Ubuntu&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;编辑：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/sysctl.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加两行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;立即生效：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sysctl -p
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你会看到类似：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2606:4700:abcd:ef01:7d27:89ad:4323:a91c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就是临时 IPv6。&lt;/p&gt;
&lt;h2&gt;6. 自定义临时 IPv6（Stable Privacy + Token）&lt;/h2&gt;
&lt;p&gt;如果你想要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;临时 IPv6 但又不想随机变动&lt;/li&gt;
&lt;li&gt;稳定、可预测&lt;/li&gt;
&lt;li&gt;可以自定义后 64 位 Token（比如：&lt;code&gt;::abcd:114:514&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以使用 &lt;code&gt;stable_secret&lt;/code&gt; 功能。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;6.1 设置稳定的 Token（可自定义）&lt;/strong&gt;&lt;/h3&gt;
&lt;h4&gt;查看你的网卡名&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;ip link
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;假设为 &lt;code&gt;eth0&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;6.2 创建 Token&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;随便写一个 128-bit 十六进制，例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;f3a1c0ffee1234567890abcd19260811&quot; &amp;gt; /etc/ipv6token
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;strong&gt;6.3 写入 Networkd 配置（推荐）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;创建：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/systemd/network/10-eth0.network
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Match]
Name=eth0
    
[Network]
DHCP=no
IPv6AcceptRA=yes

[IPv6Token]
 Token=f3a1c0ffee1234567890abcd19260811
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart systemd-networkd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后查看：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip -6 addr show dev eth0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你会看到一个稳定的隐私 IPv6，例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2606:4700:abcd:ef01:f3a1:c0ff:ee12:3456
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你也可以自定义它：&lt;/p&gt;
&lt;p&gt;例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Token=00000000000000000000000000000114  → ::114
Token=00000000000000000000000000000ACG  → ::acg
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;7. 验证 IPv6 是否生效&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;ip -6 addr
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查能否访问 IPv6：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ping6 ipv6.google.com
curl -6 https://ifconfig.co
curl -6 https://api64.ipify.org
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果能显示 IPv6 地址代表成功。&lt;/p&gt;
&lt;h2&gt;8. 常见问题（FAQ）&lt;/h2&gt;
&lt;h3&gt;❓ 我可以自己创建任意 IPv6 吗？&lt;/h3&gt;
&lt;p&gt;✔️ 只要在你的 &lt;code&gt;/64&lt;/code&gt; 网段内，你可以完全自定义：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;自己的静态 IPv6：&lt;code&gt;::1&lt;/code&gt; ~ &lt;code&gt;::ffff:ffff:ffff:ffff&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Token 从 0～2^64 自定义&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2a03:1234:abcd:5678::114514
2a03:1234:abcd:5678::233
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;❓ 有 IPv6 但 ping6 不通？&lt;/h3&gt;
&lt;p&gt;解决：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -A INPUT -p ipv6-icmp -j ACCEPT
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;❓ 系统有 IPv6 但 curl -6 出不来？&lt;/h3&gt;
&lt;p&gt;要加 NAT66 或开启路由器 RA，取决于你的上游。&lt;/p&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;以上就是 &lt;strong&gt;VPS 添加 IPv6 的最完整教程&lt;/strong&gt;，包含：
✔ 静态 IPv6（任意自定义）&lt;br /&gt;
✔ SLAAC 自动 IPv6&lt;br /&gt;
✔ 临时 IPv6（Privacy）&lt;br /&gt;
✔ 可控的 Stable IPv6 Token&lt;br /&gt;
✔ 自定义 IPv6 后缀&lt;/p&gt;
</content:encoded></item><item><title>如何查看 VPS 是否被扫描端口（Linux 服务器安全指南）</title><link>https://blog.leuxx.de/posts/22/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/22/</guid><description>查看VPS是否被爆破</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;很多人在购买 VPS 后，经常会好奇一个问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;我的服务器有没有被别人扫描？&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;实际上，只要你的 VPS 有公网 IP，几乎每天都会被扫描。&lt;br /&gt;
常见的扫描包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSH 暴力破解&lt;/li&gt;
&lt;li&gt;Web 漏洞扫描&lt;/li&gt;
&lt;li&gt;全端口扫描（nmap / masscan）
本文整理几种 &lt;strong&gt;简单有效的方法&lt;/strong&gt;，查看服务器是否被扫描。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;一、查看 SSH 被暴力破解情况&lt;/h2&gt;
&lt;p&gt;SSH 是最容易被攻击的服务。&lt;/p&gt;
&lt;p&gt;在 &lt;strong&gt;Debian / Ubuntu&lt;/strong&gt; 上可以通过日志查看失败登录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;journalctl -u ssh | grep &quot;Failed password&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果服务器被扫，你会看到类似：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Failed password for root from 185.xxx.xxx.xxx port 52341 ssh2
Failed password for admin from 45.xxx.xxx.xxx port 41211 ssh2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;统计攻击 IP：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;journalctl -u ssh | grep &quot;Failed password&quot; | awk &apos;{print $11}&apos; | sort | uniq -c | sort -nr | head
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;示例输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;120 185.xxx.xxx.xxx
85  45.xxx.xxx.xxx
60  103.xxx.xxx.xxx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;说明这些 IP 尝试登录你的服务器最多。&lt;/p&gt;
&lt;h2&gt;二、查看服务器当前连接&lt;/h2&gt;
&lt;p&gt;可以使用 &lt;code&gt;ss&lt;/code&gt; 查看服务器当前 TCP 连接：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ss -tn
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ESTAB 0 0 87.xxx.xxx.xxx:58364 87.xxx.xxx.xxx:22
ESTAB 0 0 87.xxx.xxx.xxx:46888 172.67.xx.xx:443
&lt;/code&gt;&lt;/pre&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;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local Address&lt;/td&gt;
&lt;td&gt;你的 VPS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Peer Address&lt;/td&gt;
&lt;td&gt;对方服务器&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ESTAB&lt;/td&gt;
&lt;td&gt;已建立连接&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果看到大量陌生 IP 连接，可能正在被扫描。&lt;/p&gt;
&lt;h2&gt;三、查看服务器开放端口&lt;/h2&gt;
&lt;p&gt;先确认自己的服务器到底开放了哪些端口：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ss -tulnp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tcp LISTEN 0 128 0.0.0.0:22
tcp LISTEN 0 128 0.0.0.0:80
tcp LISTEN 0 128 0.0.0.0:443
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;说明服务器开放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;22 → SSH&lt;/li&gt;
&lt;li&gt;80 → HTTP&lt;/li&gt;
&lt;li&gt;443 → HTTPS
这些端口都会被扫描。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;四、使用 tcpdump 查看端口扫描&lt;/h2&gt;
&lt;p&gt;如果想实时查看扫描，可以抓包：&lt;/p&gt;
&lt;p&gt;安装工具：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt install tcpdump
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;抓取 SYN 包：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tcpdump -i any -nn &apos;tcp[tcpflags] &amp;amp; tcp-syn != 0 and tcp[tcpflags] &amp;amp; tcp-ack == 0&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果有人扫描端口，会看到类似：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;IP 185.xxx.xxx.xxx.52341 &amp;gt; your-ip.22: Flags [S]
IP 185.xxx.xxx.xxx.52341 &amp;gt; your-ip.80: Flags [S]
IP 185.xxx.xxx.xxx.52341 &amp;gt; your-ip.443: Flags [S]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就是典型的端口扫描行为。&lt;/p&gt;
&lt;h2&gt;五、统计连接最多的 IP&lt;/h2&gt;
&lt;p&gt;可以快速查看连接你服务器最多的 IP：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ss -ant | awk &apos;{print $5}&apos; | cut -d: -f1 | sort | uniq -c | sort -nr | head
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;150 185.xxx.xxx.xxx
80  45.xxx.xxx.xxx
60  103.xxx.xxx.xxx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这些通常就是扫描你服务器的 IP。&lt;/p&gt;
&lt;h2&gt;六、如何防止 VPS 被扫描&lt;/h2&gt;
&lt;p&gt;被扫描其实是正常现象，但可以减少攻击风险。&lt;/p&gt;
&lt;h3&gt;1 安装 Fail2ban&lt;/h3&gt;
&lt;p&gt;Fail2ban 可以自动封禁暴力破解 IP：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看封禁状态：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fail2ban-client status sshd
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2 修改 SSH 端口&lt;/h3&gt;
&lt;p&gt;编辑 SSH 配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Port 22
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Port 22222
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后重启：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart ssh
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3 禁止 root 密码登录&lt;/h3&gt;
&lt;p&gt;建议使用 &lt;strong&gt;SSH Key 登录&lt;/strong&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PermitRootLogin prohibit-password
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PermitRootLogin no
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;总结只要 VPS 暴露公网 IP：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;每天都会被扫描&lt;/li&gt;
&lt;li&gt;SSH 每天几百次尝试很正常&lt;/li&gt;
&lt;li&gt;不需要过度担心
只要做好：&lt;/li&gt;
&lt;li&gt;Fail2ban&lt;/li&gt;
&lt;li&gt;SSH Key 登录&lt;/li&gt;
&lt;li&gt;关闭不必要端口
服务器基本是安全的。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>DeBee HKBGP-V6 - MO V6 | Lite 测评</title><link>https://blog.leuxx.de/posts/23/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/23/</guid><description>DeBee澳门ipv6测评</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;测试配置&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;CPU 核心数：1 vCPU&lt;/li&gt;
&lt;li&gt;内存：512 MB&lt;/li&gt;
&lt;li&gt;硬盘空间：8 GB&lt;/li&gt;
&lt;li&gt;流量：2 TB&lt;/li&gt;
&lt;li&gt;带宽速率：2 Gbps&lt;/li&gt;
&lt;li&gt;IPv6 数量：1&lt;/li&gt;
&lt;li&gt;价格：1USD/月&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;iperf3测速&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]   8.00-9.00   sec  13.8 KBytes   112 Kbits/sec                  
[  7]   8.00-9.00   sec  13.8 KBytes   112 Kbits/sec                  
[  9]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec                  
[ 11]   8.00-9.00   sec  9.62 KBytes  78.6 Kbits/sec                  
[ 13]   8.00-9.00   sec  12.4 KBytes   101 Kbits/sec                  
[SUM]   8.00-9.00   sec  49.5 KBytes   404 Kbits/sec         
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;ip质量&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;########################################################################
                IP质量体检报告：2a0f:7803:f6cc:*:*:*:*:*
                   https://github.com/xykt/IPQuality
                bash &amp;lt;(curl -sL https://Check.Place) -I
        报告时间：2025-10-29 17:18:05 CST  脚本版本：v2025-10-28
########################################################################
一、基础信息（Maxmind 数据库）
自治系统号：            AS214013
组织：                  Debee Broadband Network Ltd
坐标：                  113°33′21″E, 22°12′4″N
地图：                  https://check.place/22.201,113.5559,15,cn
城市：                  N/A, 澳门
使用地：                [MO]澳门, [AS]亚洲
注册地：                [GB]英国
时区：                  Asia/Macau
IP类型：                 广播IP

二、IP类型属性
数据库：      IPinfo    ipregistry    ipapi    IP2Location   AbuseIPDB 
使用类型：     机房        机房        家宽        机房        机房    
公司类型：     机房        机房        家宽        机房    

三、风险评分
风险等级：      极低         低       中等       高         极高
IP2Location：   3 | 低风险
Scamalytics：   0 | 低风险
ipapi：         0.00% | 极低风险
AbuseIPDB：     0 | 低风险
IPQS：          0 | 低风险
DB-IP：         （空）| 低风险

四、风险因子
库： IP2Location ipapi ipregistry IPQS Scamalytics ipdata IPinfo IPWHOIS
地区：   [GB]    [MO]    [CN]    [MO]    [MO]    [MO]    [MO]    [MO]
代理：   否      否      否      否      否      否      否      否 
Tor：    否      否      否      否      否      否      否      否 
VPN：    否      否      否      否      否      无      否      否 
服务器： 是      否      是      无      否      否      是      否 
滥用：   否      否      否      否      否      否      无      无 
机器人： 否      否      无      否      否      无      无      无 

五、流媒体及AI服务解锁检测
服务商：   TikTok   Disney+  Netflix  Youtube  AmazonPV  Spotify  ChatGPT
状态：     失败      待支持     解锁     禁会员     屏蔽      解锁      解锁
地区：               [MO]     [MO]                        [MO]     [MO]
方式：               原生     原生                        原生     原生

六、邮局连通性及黑名单检测
本地25端口出站：阻断
通信：+Gmail-Outlook-Yahoo-Apple+QQ-MailRU-AOL-GMX-MailCOM-163-Sohu-Sina
========================================================================
今日IP检测量：1344；总检测量：679706。感谢使用 xy 系列脚本！
报告链接：https://Report.Check.Place/ip/EKX4CVUIE.svg
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;回程测试ipv6&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/mvnAkXYwutNfU6HbG4LKxcgnwElY5pXT.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>永久免费qzz.io域名 支持托管至CloudFlare</title><link>https://blog.leuxx.de/posts/21/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/21/</guid><description>永久免费qzz.io域名 支持免费续期</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;免费注册 180天可以免费续期&lt;/p&gt;
&lt;h2&gt;教程&lt;/h2&gt;
&lt;p&gt;前往官网注册账号&lt;/p&gt;
&lt;p&gt;官网：&lt;a href=&quot;https://www.nodeseek.com/jump?to=https%3A%2F%2Fdash.domain.digitalplat.org&quot;&gt;https://dash.domain.digitalplat.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;选择qzz.io域名&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763009267371_IMG_3755.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;托管至CloudFlare&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763009263547_IMG_3756.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;修改ns记录&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763009261453_IMG_3757.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;已托管至Cloudflare&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763009267292_IMG_3758.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Linux 设置 IPv6 或 IPv4 优先教程（gai.conf 配置指南）</title><link>https://blog.leuxx.de/posts/20/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/20/</guid><description>Linux设置ipv6、ipv4优先</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;有时候，服务器的网络明明都通，但访问某些网站、仓库或 API 却慢得离谱。&lt;br /&gt;
这很可能是因为系统默认使用了“错误的协议栈顺序”——&lt;br /&gt;
Linux 默认&lt;strong&gt;优先使用 IPv6&lt;/strong&gt;，而不是 IPv4。&lt;/p&gt;
&lt;p&gt;如果你想手动调整这个顺序（比如让 IPv4 优先），这篇教程正是为你准备的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;🧠 为什么要调整 IPv6 / IPv4 优先级&lt;/h2&gt;
&lt;p&gt;Linux 系统在进行 DNS 解析时，会先请求域名的 &lt;strong&gt;AAAA（IPv6）&lt;/strong&gt; 和 &lt;strong&gt;A（IPv4）&lt;/strong&gt; 记录。&lt;br /&gt;
默认情况下，它会按照系统内部的优先级（policy table）选择哪种协议先尝试。
这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果 IPv6 可用 → 优先使用 IPv6；&lt;/li&gt;
&lt;li&gt;即使 IPv6 延迟高、绕路、甚至不通，也会先试 IPv6，导致访问超时；&lt;/li&gt;
&lt;li&gt;部分 VPS、Docker 镜像源、Cloudflare / GitHub / ChatGPT 等服务因此异常。
解决办法：&lt;strong&gt;调整 gai.conf 文件，修改协议优先顺序。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;⚙️ gai.conf 是什么？&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;/etc/gai.conf&lt;/code&gt; 是 Linux 系统中控制地址选择策略的配置文件，&lt;br /&gt;
由 glibc 的 &lt;code&gt;getaddrinfo()&lt;/code&gt; 函数使用。
你可以通过编辑它，改变系统在选择 IPv4 / IPv6 地址时的优先级。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;作用范围：系统级，对所有使用标准网络库的程序生效（curl、apt、wget、docker 等）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;🛠️开始修改 gai.conf&lt;/h2&gt;
&lt;h3&gt;1.打开配置文件&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/gai.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;（或者用你喜欢的编辑器，例如 &lt;code&gt;vim&lt;/code&gt;、&lt;code&gt;vi&lt;/code&gt;。）&lt;/p&gt;
&lt;h3&gt;2.查看默认配置&lt;/h3&gt;
&lt;p&gt;一般情况下，文件内会有许多被注释掉的行，比如：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;#For sites which prefer IPv4 connections change the last line to
#precedence ::ffff:0:0/96  100
这句话其实已经告诉我们答案：&lt;br /&gt;
如果你想 &lt;strong&gt;IPv4 优先&lt;/strong&gt;，只需要取消注释这一行。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;3.设置 IPv4 优先&lt;/h3&gt;
&lt;p&gt;找到并修改：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#precedence ::ffff:0:0/96  100
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;改成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;precedence ::ffff:0:0/96  100
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;✅ 保存并退出即可，无需重启系统。
这表示：&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;::ffff:0:0/96&lt;/code&gt; 表示 IPv4 映射地址；&lt;/li&gt;
&lt;li&gt;100` 是它的优先级；&lt;/li&gt;
&lt;li&gt;数字越大，优先级越高。
系统现在会优先使用 IPv4 地址。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4.如果你想让 IPv6 优先（默认）&lt;/h3&gt;
&lt;p&gt;如果之前改过，现在想恢复 IPv6 优先，只需要把这行重新注释掉：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#precedence ::ffff:0:0/96  100
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者删除整行。&lt;/p&gt;
&lt;h2&gt;🔍 测试是否生效&lt;/h2&gt;
&lt;p&gt;使用 &lt;code&gt;getent&lt;/code&gt; 检查系统地址选择顺序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;getent ahosts google.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2404:6800:4008::200e   STREAM google.com
2404:6800:4008::200e   DGRAM
2404:6800:4008::200e   RAW
142.250.204.14          STREAM
142.250.204.14          DGRAM
142.250.204.14          RAW
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📘 &lt;strong&gt;说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果 IPv6 在前面 → IPv6 优先&lt;/li&gt;
&lt;li&gt;如果 IPv4 (::ffff: 开头或纯 IPv4 地址) 在前面 → IPv4 优先&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Q1：修改后要重启网络吗？&lt;/h3&gt;
&lt;p&gt;不需要。&lt;code&gt;gai.conf&lt;/code&gt; 会在每次调用 &lt;code&gt;getaddrinfo()&lt;/code&gt; 时被读取，立即生效。&lt;/p&gt;
&lt;h3&gt;Q2：所有程序都受影响吗？&lt;/h3&gt;
&lt;p&gt;只要程序使用系统标准的 DNS 解析库（glibc），都会受影响。&lt;br /&gt;
比如 &lt;code&gt;apt&lt;/code&gt;、&lt;code&gt;curl&lt;/code&gt;、&lt;code&gt;wget&lt;/code&gt;、&lt;code&gt;ping&lt;/code&gt; 等。
但如果某个软件自己实现了解析逻辑（比如某些 Java 程序），可能不受影响。&lt;/p&gt;
&lt;h3&gt;Q3：IPv6 不通怎么办？&lt;/h3&gt;
&lt;p&gt;你可以临时关闭 IPv6：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不建议长期禁用，优先级调整更优雅。&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;配置语句&lt;/td&gt;
&lt;td&gt;效果&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IPv4 优先&lt;/td&gt;
&lt;td&gt;&lt;code&gt;precedence ::ffff:0:0/96 100&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;优先使用 IPv4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IPv6 优先（默认）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#precedence ::ffff:0:0/96 100&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;优先使用 IPv6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;🧩 总结&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Linux 默认 IPv6 优先；&lt;/li&gt;
&lt;li&gt;可通过 &lt;code&gt;/etc/gai.conf&lt;/code&gt; 改为 IPv4 优先；&lt;/li&gt;
&lt;li&gt;立即生效，对大部分命令行工具和服务生效；&lt;/li&gt;
&lt;li&gt;稳定性优先的 VPS、Docker 容器建议开启 IPv4 优先。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;🚀 未来 IPv6 会越来越普及，但在网络质量不均的今天，&lt;br /&gt;
IPv4 仍然是最稳、最“能打”的选择。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>用 iperf3 测试网络速度：最实用的教程与示例</title><link>https://blog.leuxx.de/posts/19/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/19/</guid><description>安装、使用iperf3进行网络测速教程</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;🌐 什么是 iperf3？&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;iperf3&lt;/strong&gt; 是一个强大的网络带宽测试工具，常被用于 VPS、家庭服务器、或内网节点之间的速度测试。&lt;br /&gt;
它能测试 &lt;strong&gt;上传（上行）&lt;/strong&gt;、&lt;strong&gt;下载（下行）&lt;/strong&gt;、&lt;strong&gt;延迟&lt;/strong&gt;、&lt;strong&gt;并发性能&lt;/strong&gt; 等指标，是判断线路质量的“利器”。&lt;/p&gt;
&lt;h3&gt;🧰 一、安装 iperf3&lt;/h3&gt;
&lt;h4&gt;✅ Debian / Ubuntu&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt install -y iperf3
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;✅ CentOS / AlmaLinux / Rocky&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;yum install -y iperf3
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;✅ macOS（通过 Homebrew）&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;brew install iperf3
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;⚙️ 二、基本原理&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;iperf3&lt;/code&gt; 采用 &lt;strong&gt;客户端 - 服务端&lt;/strong&gt; 模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一台服务器充当 &lt;strong&gt;测试端（Server）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;另一台主机作为 &lt;strong&gt;客户端（Client）&lt;/strong&gt;
它们之间建立连接，通过 TCP 或 UDP 数据流进行测速。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🖥️ 三、服务端启动&lt;/h3&gt;
&lt;p&gt;在你想“接收测速数据”的机器上执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iperf3 -s
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;默认监听端口：&lt;code&gt;5201&lt;/code&gt;
如果要在后台运行，可以用：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;nohup iperf3 -s &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若端口被防火墙或安全组限制，请放行 &lt;code&gt;5201/tcp&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;💻 四、客户端测速&lt;/h3&gt;
&lt;p&gt;在另一台机器上执行（替换为你的服务端 IP）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iperf3 -c 1.2.3.4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出示例：
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.00  sec  1.12 GBytes   960 Mbits/sec
这代表 &lt;strong&gt;平均下载速率约 960 Mbps&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;🔄 五、测试上传与下载方向&lt;/h3&gt;
&lt;h4&gt;📤 上传（默认模式）&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;iperf3 -c 1.2.3.4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;客户端 → 服务端，测试上传速度。&lt;/p&gt;
&lt;h4&gt;📥 下载（反向模式）&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;iperf3 -c 1.2.3.4 -R
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;服务端 → 客户端，测试下载速度。&lt;br /&gt;
（&lt;code&gt;-R&lt;/code&gt; 即 “reverse” 反向传输）&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;作用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-R&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;反向测试（下载）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-t 30&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;测试 30 秒（默认 10 秒）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-p 5201&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;指定端口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-P 4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;开启 4 个并发线程&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-u&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;使用 UDP 模式（测试抖动、丢包率）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-b 100M&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;限制带宽（仅在 UDP 模式下）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;📊 示例：多线程测速&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;iperf3 -c 1.2.3.4 -P 4 -t 30
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;适合高带宽（如千兆或多线路）测试，更能体现真实性能。&lt;/p&gt;
&lt;h3&gt;📡 七、UDP 模式（测试延迟与丢包）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;iperf3 -c 1.2.3.4 -u -b 100M
    ```
输出中你可以看到：
-   **Jitter**（抖动）
-   **Lost/Total Datagrams**（丢包统计）
这是判断 **线路稳定性** 的关键指标。
### 📘 八、示例对比
|     |     |     |
| --- | --- | --- |
| 场景  | 命令  | 测试方向 |
| VPS 上传测速 | `iperf3 -c 你的VPSIP` | 本地 → VPS |
| VPS 下载测速 | `iperf3 -c 你的VPSIP -R` | VPS → 本地 |
| 节点间测速 | `iperf3 -c 节点BIP` | 节点A → 节点B |
| 多线程测速 | `iperf3 -c 1.2.3.4 -P 8` | 多并发上传 |
### 🧭 九、简单测速结果解读
|     |     |
| --- | --- |
| 字段  | 含义  |
| **Transfer** | 传输数据总量 |
| **Bandwidth** | 平均带宽（速率） |
| **Retr** | TCP 重传次数（过高说明线路不稳） |
| **Jitter** | 抖动（UDP 模式） |
&amp;gt; 💡 一般情况下，国内外 VPS 延迟高但带宽正常；  
&amp;gt; 若丢包严重、Retr 持续上升，则可能是线路质量差或中间节点拥塞。
### 🧾 十、附加技巧
#### 📦 在 Docker 容器中测速
```bash
docker run --rm -it networkstatic/iperf3 -c 1.2.3.4
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;📜 输出结果保存&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;iperf3 -c 1.2.3.4 -t 60 --logfile result.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;🔐 改端口防扫描&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;iperf3 -s -p 25001
&lt;/code&gt;&lt;/pre&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;命令&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;启动服务端&lt;/td&gt;
&lt;td&gt;&lt;code&gt;iperf3 -s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;上传测速&lt;/td&gt;
&lt;td&gt;&lt;code&gt;iperf3 -c IP&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;下载测速&lt;/td&gt;
&lt;td&gt;&lt;code&gt;iperf3 -c IP -R&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;并发测试&lt;/td&gt;
&lt;td&gt;&lt;code&gt;iperf3 -c IP -P 4&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UDP 测试&lt;/td&gt;
&lt;td&gt;&lt;code&gt;iperf3 -c IP -u -b 100M&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;💬 写在最后&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;iperf3&lt;/code&gt; 是排查线路瓶颈、验证带宽性能的万能工具。&lt;br /&gt;
无论你是在搭建节点、优化 VPS，还是测试家庭宽带，它都值得收藏。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚡ 如果你也爱折腾服务器，欢迎常来看看 👉 Leuの小站&lt;br /&gt;
不定期分享一些实用脚本与服务器小技巧 🛠️&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>搭建NeZha探针 套CloudFlare ipv6小鸡废物利用</title><link>https://blog.leuxx.de/posts/18/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/18/</guid><description>免费域名</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;1、安装Warp（如果VPS有ipv4忽略此步骤）&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh &amp;amp;&amp;amp; bash menu.sh [option] [lisence/url/token]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果warp获取不到ip 执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wg-quick down warp &amp;amp;&amp;gt;/dev/null; sed -i &quot;s/Endpoint.*/Endpoint = engage.cloudflareclient.com:4500/&quot; /etc/wireguard/warp.conf; warp o
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、安装NeZha&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;curl -L https://raw.githubusercontent.com/nezhahq/scripts/refs/heads/main/install.sh -o nezha.sh &amp;amp;&amp;amp; chmod +x nezha.sh &amp;amp;&amp;amp; sudo ./nezha.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、安装Caddy&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;apt install caddy
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;4、Caddy反代（如需Nginx反代请移步官网查看）&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/caddy/Caddyfile
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;    dashboard.example.com {
        @grpcProto {
            path /proto.NezhaService/*
        }

        reverse_proxy @grpcProto {
            header_up Host {host}
            header_up nz-realip {http.CF-Connecting-IP} # 替换为你的 CDN 提供的私有 header，此处为 CloudFlare 默认
            # header_up nz-realip {remote_host} # 如果你使用caddy作为最外层，就把上面一行注释掉，启用此行
            transport http {
                versions h2c
                read_buffer 4096
            }
            to localhost:8008
        }
    
        reverse_proxy {
            header_up Host {host}
            header_up Origin https://{host}
            header_up nz-realip {http.CF-Connecting-IP} # 替换为你的 CDN 提供的私有 header，此处为 CloudFlare 默认
            # header_up nz-realip {remote_host} # 如果你使用caddy作为最外层，就把上面一行注释掉，启用此行
            transport http {
                read_buffer 16384
            }
            to localhost:8008
        }
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;5、CloudFlare开启grpc&lt;/h2&gt;
&lt;p&gt;网络-grpc开启 如图所示&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/67f27b28d8c4e.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;6、对接Agent&lt;/h2&gt;
&lt;p&gt;NeZha后台要把端口换成443 开启tls 如图所示&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/67f27b6b91a52.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>免费白嫖一年ggff.net域名 - 支持解析到CloudFlare</title><link>https://blog.leuxx.de/posts/17/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/17/</guid><description>免费域名</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;支持解析到CloudFlare，首年免费。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;如有问题欢迎评论留言&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;购买域名&lt;/h2&gt;
&lt;p&gt;官网：&lt;a href=&quot;https://customer.l53.net/&quot;&gt;https://customer.l53.net/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;结算时候试用优惠码自动抵扣一年&lt;code&gt;newuser&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763009211253_IMG_3753.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;解析到CloudFlare&lt;/h2&gt;
&lt;p&gt;点击控制面板 名称服务器 添加ns记录即可&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763009208969_IMG_3754.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>部署哆啦A梦转发面板 Gost转发 - Docker Compose部署</title><link>https://blog.leuxx.de/posts/16/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/16/</guid><description>部署哆啦A梦转发面板</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;&lt;strong&gt;系统要求&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;在开始之前，请确保您的系统满足以下要求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;操作系统&lt;/strong&gt;: Linux，&lt;strong&gt;推荐纯净系统安装&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt;: 20.10+&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker Compose&lt;/strong&gt;: 1.29+ 或 Docker 内置 compose 命令&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内存&lt;/strong&gt;: 至少 1GB RAM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;存储&lt;/strong&gt;: 至少 1GB 可用空间&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网络&lt;/strong&gt;: 确保相关端口未被占用&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;strong&gt;一键安装（推荐）&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;提供了交互式安装脚本，会自动检测系统环境并引导您完成配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -L https://raw.githubusercontent.com/BrunuhVille/flux-panel/refs/heads/main/panel_install.sh -o panel_install.sh &amp;amp;&amp;amp; chmod +x panel_install.sh &amp;amp;&amp;amp; ./panel_install.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;strong&gt;安装流程说明&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;运行脚本后选择操作&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;===============================================
          面板管理脚本
===============================================
请选择操作：
1. 安装面板      ← 选择这个
2. 更新面板
3. 卸载面板
4. 退出
===============================================    
&lt;/code&gt;&lt;/pre&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;strong&gt;面板服务器地址&lt;/strong&gt;: 需要节点服务器能正常访问的地址&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;前端端口&lt;/strong&gt;: 默认 6366&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;后端端口&lt;/strong&gt;: 默认 6365&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;检测 Docker 环境&lt;/li&gt;
&lt;li&gt;自动检测 IPv6 支持并选择合适的配置&lt;/li&gt;
&lt;li&gt;生成随机的数据库配置&lt;/li&gt;
&lt;li&gt;下载并启动服务&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;&lt;strong&gt;配置示例&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;当前面板服务器地址: 192.168.1.100  # 或您的公网IP
前端端口（默认 6366）: 6366         # 直接回车使用默认值
后端端口（默认 6365）: 6365         # 直接回车使用默认值&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;验证安装&lt;/strong&gt;&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;1. 检查服务状态&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;使用 docker-compose&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker-compose ps
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或使用 docker compose&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker compose ps
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;您应该看到以下服务都处于 &lt;code&gt;Up&lt;/code&gt; 状态&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gost-mysql&lt;/code&gt; - 数据库服务&lt;/li&gt;
&lt;li&gt;&lt;code&gt;springboot-backend&lt;/code&gt; - 后端 API 服务&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vue-frontend&lt;/code&gt; - 前端 Web 界面&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;2. 访问 Web 界面&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;打开浏览器访问：&lt;code&gt;http://your-server-ip:6366&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;3. 登录系统&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;使用默认管理员账号登录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用户名&lt;/strong&gt;: &lt;code&gt;admin_user&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密码&lt;/strong&gt;: &lt;code&gt;admin_user&lt;/code&gt;
⚠️ &lt;strong&gt;重要&lt;/strong&gt;: 首次登录后请立即修改默认密码！&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763035079189_IMG_3767.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;IPv6 支持&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;脚本会自动检测系统的 IPv6 支持：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;支持 IPv6&lt;/strong&gt;: 自动使用 IPv6 配置文件并配置 Docker IPv6 支持&lt;/li&gt;
&lt;li&gt;⚠️ &lt;strong&gt;不支持 IPv6&lt;/strong&gt;: 使用 IPv4 配置文件&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Docker IPv6 配置&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;如果检测到 IPv6 支持，脚本会自动配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    {
      &quot;ipv6&quot;: true,
      &quot;fixed-cidr-v6&quot;: &quot;fd00::/80&quot;
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;strong&gt;端口说明&lt;/strong&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;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;td&gt;说明&lt;/td&gt;
&lt;td&gt;可配置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6366&lt;/td&gt;
&lt;td&gt;Web 界面&lt;/td&gt;
&lt;td&gt;前端管理界面&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6365&lt;/td&gt;
&lt;td&gt;API 服务&lt;/td&gt;
&lt;td&gt;后端 REST API&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3306&lt;/td&gt;
&lt;td&gt;MySQL&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;/tbody&gt;
&lt;/table&gt;
</content:encoded></item><item><title>免费eu.cc域名 支持托管至cloudflare</title><link>https://blog.leuxx.de/posts/15/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/15/</guid><pubDate>Tue, 07 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;&lt;strong&gt;一、准备资料&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;1、一个邮箱（建议用gmail、outlook、qq等大厂邮箱）&lt;br /&gt;
点击&lt;a href=&quot;https://www.gname.vip/zhcn/register&quot;&gt;&lt;strong&gt;【注册地址】&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
点击&lt;a href=&quot;https://www.gname.vip/login&quot;&gt;&lt;strong&gt;【登录地址】&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
点击&lt;a href=&quot;https://www.gname.vip/zhcn/tld-eu-cc.html&quot;&gt;&lt;strong&gt;【申请地址】&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;strong&gt;二、注册帐号&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;1、帐号注册 点击&lt;a href=&quot;https://www.gname.vip/zhcn/register&quot;&gt;&lt;strong&gt;【注册地址】&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2、在注册页面、填写邮箱注册、登录密码、输入邮箱验证码,然后点注册&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;3、上面注册成功后,在邮箱里会收到一封邮箱(有可能在垃圾邮箱里),然后点邮箱里的激活帐号连接&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;strong&gt;三、申请域名&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;点击&lt;a href=&quot;https://www.gname.vip/zhcn/tld-eu-cc.html&quot;&gt;&lt;strong&gt;【申请地址】&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1774237069861_IMG_4062.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1774237071635_IMG_4063.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1774237067018_IMG_4064.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;四、域名绑定Cloudflare&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1774237329069_IMG_4066.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;1、申请注册免费Cloudflare帐号(邮箱就可以免费注册) &lt;a href=&quot;https://dash.cloudflare.com/sign-up&quot;&gt;&lt;strong&gt;【点击官网地址】&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录cloudflare找到 域注册-&amp;gt;管理域-&amp;gt;填你注册的域名-&amp;gt;绑定DNS-&amp;gt;cloudflare检查成dns-&amp;gt;等激活成功&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡提醒：&lt;/strong&gt;&lt;br /&gt;
PS:这个需要续期，一年一续期，免费续期 到期前90天内可续期。&lt;br /&gt;
PS:这个需要续期，一年一续期，免费续期 到期前90天内可续期。&lt;br /&gt;
PS:这个需要续期，一年一续期，免费续期 到期前90天内可续期。&lt;br /&gt;
&lt;a href=&quot;https://www.gname.vip/zhcn/tld-eu-cc.html&quot;&gt;&lt;strong&gt;【免费续期地址】&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>使用 Docker Compose 部署 qBittorrent（qbittorrentee）完整教程</title><link>https://blog.leuxx.de/posts/14/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/14/</guid><description>Docker安装qbittorrentee教程</description><pubDate>Sun, 05 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;在 NAS 或 Linux 服务器上部署一个稳定、可管理的 BT 下载工具是很多人的刚需。本文将介绍如何使用 &lt;strong&gt;Docker Compose&lt;/strong&gt; 快速部署一个基于镜像 &lt;code&gt;superng6/qbittorrentee&lt;/code&gt; 的 qBittorrent 容器服务。
本教程适用于 Ubuntu / Debian / 群晖 / OpenMediaVault 等支持 Docker 的系统。&lt;/p&gt;
&lt;h2&gt;一、环境准备&lt;/h2&gt;
&lt;h3&gt;1️⃣ 安装 Docker&lt;/h3&gt;
&lt;p&gt;如果你的系统尚未安装 Docker，可参考官方文档安装：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;官网： &lt;a href=&quot;https://www.docker.com/&quot;&gt;https://www.docker.com/&lt;/a&gt;
Ubuntu 示例：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;    sudo apt update
    sudo apt install docker.io -y
    sudo systemctl enable docker
    sudo systemctl start docker
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2️⃣ 安装 Docker Compose&lt;/h3&gt;
&lt;p&gt;新版 Docker 已自带 compose 插件，可通过以下命令确认：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    docker compose version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果没有，可安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    sudo apt install docker-compose-plugin -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;二、创建项目目录&lt;/h2&gt;
&lt;p&gt;建议为 qBittorrent 创建独立目录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    mkdir -p ~/docker/qbittorrentee
    cd ~/docker/qbittorrentee
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;三、编写 docker-compose.yml 文件&lt;/h2&gt;
&lt;p&gt;在当前目录创建文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    nano docker-compose.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;写入以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    version: &quot;3&quot;
    services:
      qbittorrentee:
        image: superng6/qbittorrentee
        container_name: qbittorrentee
        environment:
          - PUID=1026
          - PGID=100
          - TZ=Asia/Shanghai
          - WEBUIPORT=8080
          - ENABLE_DOWNLOADS_PERM_FIX=true
        volumes:
          - ./qbittorrentee/config:/config
          - ./qbittorrentee/downloads:/downloads
        ports:
          - 6881:6881
          - 6881:6881/udp
          - 8080:8080
        restart: unless-stopped
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;保存并退出。&lt;/p&gt;
&lt;h2&gt;四、参数说明&lt;/h2&gt;
&lt;h3&gt;🔹 镜像说明&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;superng6/qbittorrentee&lt;/code&gt; 是一个封装好的 qBittorrent WebUI 版本镜像。&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;用途&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6881 TCP&lt;/td&gt;
&lt;td&gt;BT 下载&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6881 UDP&lt;/td&gt;
&lt;td&gt;DHT 网络&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8080&lt;/td&gt;
&lt;td&gt;Web 管理界面&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;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;/td&gt;
&lt;td&gt;作用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;./qbittorrentee/config&lt;/td&gt;
&lt;td&gt;/config&lt;/td&gt;
&lt;td&gt;配置文件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;./qbittorrentee/downloads&lt;/td&gt;
&lt;td&gt;/downloads&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;pre&gt;&lt;code&gt;    mkdir -p qbittorrentee/config
    mkdir -p qbittorrentee/downloads
    chmod -R 775 qbittorrentee
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;五、启动服务&lt;/h2&gt;
&lt;p&gt;在 docker-compose.yml 所在目录执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    docker compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看运行状态：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    docker ps
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;六、访问 Web 管理界面&lt;/h2&gt;
&lt;p&gt;浏览器访问：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    http://服务器IP:8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;默认用户名：&lt;code&gt;admin&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;默认密码为随机生成，首次启动容器请查看日志。&lt;/p&gt;
&lt;h2&gt;七、常用管理命令&lt;/h2&gt;
&lt;h3&gt;查看日志&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;    docker compose logs -f
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;重启服务&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;    docker compose restart
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;停止服务&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;    docker compose down
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;八、升级容器&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;    docker compose pull
    docker compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;九、进阶建议&lt;/h2&gt;
&lt;h3&gt;✅ 1. 开放端口到公网（如有需要）&lt;/h3&gt;
&lt;p&gt;需在路由器上做端口转发。&lt;/p&gt;
&lt;h3&gt;✅ 2. 配合反向代理&lt;/h3&gt;
&lt;p&gt;可结合 Nginx 或 Traefik 实现 HTTPS 访问。&lt;/p&gt;
&lt;h3&gt;✅ 3. 搭配自动更新工具&lt;/h3&gt;
&lt;p&gt;可使用 Watchtower 实现自动更新容器。&lt;/p&gt;
&lt;h2&gt;十、常见问题排查&lt;/h2&gt;
&lt;h3&gt;❓ 无法下载 / 无速度&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;检查 6881 端口是否开放&lt;/li&gt;
&lt;li&gt;检查防火墙规则&lt;/li&gt;
&lt;li&gt;检查 ISP 是否封锁 BT&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;❓ 权限错误&lt;/h3&gt;
&lt;p&gt;确认 PUID/PGID 是否与下载目录用户一致。&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;使用 Docker Compose 部署 qBittorrent 的优势：&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;如果你是 NAS 用户或家庭服务器爱好者，这种部署方式非常推荐 👍&lt;/p&gt;
</content:encoded></item><item><title>Komari清理数据库</title><link>https://blog.leuxx.de/posts/13/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/13/</guid><pubDate>Sat, 04 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;komari 在随着使用的时间 数据库占用硬盘的大小也在随之增加 利用sqlite3 来清理数据库大小&lt;/p&gt;
&lt;h2&gt;安装sqlite3&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;apt install sqlite3
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;停止komari&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;systemctl stop komari.service
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;备份komari&lt;/h2&gt;
&lt;p&gt;防止修改数据库出现问题 修改前请备份 防止数据丢失&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp /opt/komari/data/komari.db /opt/komari/data/komaribf.db
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;打开数据库&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sqlite3 /opt/komari/data/komari.db
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;一行命令清理数据库&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sqlite3 /opt/komari/data/komari.db &quot;DELETE FROM records; DELETE FROM records_long_term; DELETE FROM ping_records; VACUUM;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;删除记录&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM records;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;删除长期保存的记录&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM records_long_term;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;删除延迟记录&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM ping_records;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;收缩数据库大小&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;VACUUM;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;退出数据库&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;.exit
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;重启komari&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart komari.service
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>永久免费netlib.re域名，支持托管至CloudFlare。</title><link>https://blog.leuxx.de/posts/12/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/12/</guid><description>永久免费netlib.re域名</description><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;永久免费netlib.re域名，支持托管至CloudFlare。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注&lt;/strong&gt;：添加NS记录会遇到&lt;strong&gt;名称服务器无效&lt;/strong&gt; 可以尝试多注册几个（我注册第二个才成功）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;注册账号&lt;/h2&gt;
&lt;p&gt;官网：&lt;a href=&quot;https://www.netlib.re/&quot;&gt;https://www.netlib.re/&lt;/a&gt;
密码为15位 注册后会发邮箱验证token 验证登录即可&lt;/p&gt;
&lt;h2&gt;注册域名&lt;/h2&gt;
&lt;p&gt;选择自己喜欢的域名
有netlib.re和codelib.re
&lt;img src=&quot;/uploads/1763008999483_IMG_3748.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;托管至CloudFlare&lt;/h2&gt;
&lt;p&gt;点击注册的域名&lt;img src=&quot;/uploads/1763008998442_IMG_3749.jpeg&quot; alt=&quot;&quot; /&gt;
点击&lt;code&gt;Delegate your domain to different name servers&lt;/code&gt;添加NS记录即可
&lt;img src=&quot;/uploads/1763008995963_IMG_3750.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>将 Docker 部署的 Umami 从一台服务器迁移到另一台服务器</title><link>https://blog.leuxx.de/posts/11/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/11/</guid><description>Umami迁移</description><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;简介&lt;/h2&gt;
&lt;p&gt;最近我购买了一台新的服务器，需要把 Umami 服务器从旧服务器迁移到新服务器上。但我是用 Docker 安装的 Umami。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    version: &apos;3&apos;
    services:
      umami:
        image: ghcr.io/umami-software/umami:postgresql-latest
        ports:
          - &quot;3000:3000&quot;
        environment:
          DATABASE_URL: postgresql://umami:umami@db:5432/umami
          DATABASE_TYPE: postgresql
          APP_SECRET: replace-me-with-a-random-string
        depends_on:
          db:
            condition: service_healthy
        restart: always
      db:
        image: postgres:15-alpine
        environment:
          POSTGRES_DB: umami
          POSTGRES_USER: umami
          POSTGRES_PASSWORD: umami
        volumes:
          - umami-db-data:/var/lib/postgresql/data
        restart: always
        healthcheck:
          test: [&quot;CMD-SHELL&quot;, &quot;pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}&quot;]
          interval: 5s
          timeout: 5s
          retries: 5
    volumes:
      umami-db-data:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;迁移中最困难和重要的部分就是导出 Umami 的数据。我们有几种方法可以实现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;导出 Docker 卷（非常复杂）&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;p&gt;首先，我们要知道 Umami 的数据是存储在卷（Volume）中的。因为 &lt;code&gt;docker-compose.yml&lt;/code&gt; 指定了：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    services:
      db:
        volumes:
          - umami-db-data:/var/lib/postgresql/data
    volumes:
      umami-db-data:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果我把路径挂载到容器里而不是卷，那就可以直接把路径复制到新机器上。比如:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    services:
      db:
        volumes:
          - /root/umami/data:/var/lib/postgresql/data
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后，我决定只导出数据库并导入到新实例中。让我们一步一步来。&lt;/p&gt;
&lt;h2&gt;迁移数据库&lt;/h2&gt;
&lt;h3&gt;备份&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;docker exec umami-db-1 sh -c &apos;pg_dump --username=umami umami &amp;gt; /umami.sql&apos; &amp;amp;&amp;amp; \
docker cp umami-db-1:/umami.sql /root/ &amp;amp;&amp;amp; \
docker exec umami-db-1 rm /umami.sql
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;删除数据库&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;docker exec umami-db-1 psql --username=umami --dbname=postgres -c &quot;DROP DATABASE IF EXISTS umami;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;创建新的数据库&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;docker exec umami-db-1 psql --username=umami --dbname=postgres -c &quot;CREATE DATABASE umami;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;导入备份&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;docker cp /root/umami.sql umami-db-1:/umami.sql &amp;amp;&amp;amp; \
docker exec -i umami-db-1 psql --username=umami --dbname=umami -f /umami.sql &amp;amp;&amp;amp; \
docker exec umami-db-1 rm /umami.sql
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;重启 Umami 实例：&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;docker compose down
docker compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;检查&lt;/h2&gt;
&lt;p&gt;现在可以检查数据库是否迁移成功了。打开新 Umami 的 URL，尝试用原来的账号登录。如果能登录，那数据库很可能迁移成功了（账号信息是存在数据库里的）。
为了进一步确认，你可以进入仪表盘，看看所有数据是否正常显示。
如果不正常，说明数据库没有成功迁移。你可以检查导出的备份文件（里面是否包含正确的数据？），以及导入的方式（看看备份文件是否成功导入到新的 Postgres）。&lt;/p&gt;
</content:encoded></item><item><title>给哪吒面板添加周期流量显示</title><link>https://blog.leuxx.de/posts/10/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/10/</guid><description>哪吒流量显示</description><pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;效果图：
&lt;img src=&quot;/uploads/1763009337762_IMG_3759.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;自定义代码&lt;/h1&gt;
&lt;p&gt;在面板后台自定义代码中加入如下代码 （只支持V1版）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/gh/leuxinovo/nezha-ui@main/traffic-display.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Docker部署Sub-Store订阅管理系统</title><link>https://blog.leuxx.de/posts/9/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/9/</guid><pubDate>Mon, 01 Sep 2025 06:51:40 GMT</pubDate><content:encoded>&lt;h3&gt;一、Sub-Store 简介&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Sub-Store&lt;/strong&gt; 是一款开源的订阅转换服务，支持聚合多个订阅链接并输出为不同客户端格式。&lt;/p&gt;
&lt;p&gt;它能让你：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;将多个机场或自建节点订阅整合；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;输出为 Clash / Surge / QuantumultX / Loon / Shadowrocket 等格式；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自定义节点筛选、排序、分组；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通过 Web 界面轻松管理。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GitHub 项目地址：&lt;br /&gt;
👉 &lt;a href=&quot;https://github.com/sub-store-org/Sub-Store&quot;&gt;https://github.com/sub-store-org/Sub-Store&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;二、部署环境准备&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;系统&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debian 12 / Ubuntu 22.04&lt;/td&gt;
&lt;td&gt;✅ 推荐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alpine / CentOS 7+&lt;/td&gt;
&lt;td&gt;✅ 支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;内存要求&lt;/td&gt;
&lt;td&gt;≥ 256MB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;确保系统已安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt install -y docker.io docker-compose
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;三、Docker Compose 配置文件&lt;/h3&gt;
&lt;p&gt;在服务器任意目录（如 &lt;code&gt;/root/sub-store&lt;/code&gt;）下创建文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p /root/sub-store
cd /root/sub-store
nano docker-compose.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后粘贴以下内容 👇：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;version: &quot;3.8&quot;

services:
  sub-store:
    image: xream/sub-store:latest
    container_name: sub-store
    restart: always
    ports:
      - &quot;127.0.0.1:3001:3001&quot;
    volumes:
      - ./data:/opt/app/data
    environment:
      SUB_STORE_FRONTEND_BACKEND_PATH: /MySecretToken123
      SUB_STORE_BACKEND_SYNC_CRON: &quot;55 23 * * *&quot;
      SUB_STORE_BODY_JSON_LIMIT: 10mb
&lt;/code&gt;&lt;/pre&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;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;/td&gt;
&lt;td&gt;作用&lt;/td&gt;
&lt;td&gt;说明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;version&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&quot;3.8&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Compose 文件版本&lt;/td&gt;
&lt;td&gt;指定 Docker Compose 的语法版本，3.8 适用于较新的 Docker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;services&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sub-store&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;服务定义&lt;/td&gt;
&lt;td&gt;定义一个名为 &lt;code&gt;sub-store&lt;/code&gt; 的服务&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;image&lt;/td&gt;
&lt;td&gt;&lt;code&gt;xream/sub-store:latest&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Docker 镜像&lt;/td&gt;
&lt;td&gt;使用 Sub-Store 官方镜像，&lt;code&gt;latest&lt;/code&gt; 表示最新版本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;container_name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sub-store&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;容器名称&lt;/td&gt;
&lt;td&gt;指定容器名称为 &lt;code&gt;sub-store&lt;/code&gt;，方便管理和查看日志&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;restart&lt;/td&gt;
&lt;td&gt;&lt;code&gt;always&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;自动重启策略&lt;/td&gt;
&lt;td&gt;容器异常退出或 Docker 重启时会自动重新启动&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ports&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&quot;127.0.0.1:3001:3001&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;端口映射&lt;/td&gt;
&lt;td&gt;将宿主机本地回环地址（127.0.0.1）的 3001 端口映射到容器的 3001 端口。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;volumes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;./data:/opt/app/data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;数据持久化&lt;/td&gt;
&lt;td&gt;将本地 &lt;code&gt;./data&lt;/code&gt; 目录映射到容器 &lt;code&gt;/opt/app/data&lt;/code&gt;，用于保存配置和数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;environment&lt;/td&gt;
&lt;td&gt;环境变量配置&lt;/td&gt;
&lt;td&gt;程序运行参数&lt;/td&gt;
&lt;td&gt;用来控制 Sub-Store 的运行行为&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;⚠️ 建议你修改：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SUB_STORE_FRONTEND_BACKEND_PATH=/MySecretToken123
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/rd304CYuZ2KByUk4WRHF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样可以防止被随意访问。&lt;/p&gt;
&lt;p&gt;随机生成密码网站：&lt;a href=&quot;https://1password.com/zh-cn/password-generator&quot;&gt;https://1password.com/zh-cn/password-generator&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;五、启动服务&lt;/h3&gt;
&lt;p&gt;保存文件后执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看运行状态：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若一切正常，你会看到类似输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    CONTAINER ID   IMAGE             STATUS          PORTS
    a1b2c3d4e5f6   xream/sub-store   Up 10 seconds   0.0.0.0:3001-&amp;gt;3001/tcp
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;六、Caddy反代&lt;/h3&gt;
&lt;p&gt;编辑/etc/caddy/Caddyfile&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/caddy/Caddyfile
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;example.com {
   reverse_proxy localhost:3001
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启caddy&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart caddy
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;七、访问与初始设置&lt;/h3&gt;
&lt;p&gt;浏览器访问：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;https://你的域名&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;若配置了后端路径（如 &lt;code&gt;/ks9foTp4xE8fr24pg2DZ&lt;/code&gt;），&lt;br /&gt;
打开 &lt;strong&gt;反代域名&lt;/strong&gt; 输入后端路径&lt;code&gt;ks9foTp4xE8fr24pg2DZ&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;你会看到 Sub-Store 的管理界面，可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;添加或导入订阅；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设置转换规则；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;生成统一的订阅链接。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;八、设置Gist同步&lt;/h3&gt;
&lt;h4&gt;1.拥有一个 GitHub 账号&lt;/h4&gt;
&lt;p&gt;注册或登录：&lt;a href=&quot;https://github.com/&quot;&gt;https://github.com/&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;2.获取一个 &lt;strong&gt;GitHub Personal Access Token（访问令牌）&lt;/strong&gt;&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;打开 &lt;a href=&quot;https://github.com/settings/tokens&quot;&gt;https://github.com/settings/tokens&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击Token（classic）并在右上选择Generate new token（classic）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;勾上Repo和Gist这两项后，点击底下的Generate token即生成Token了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;生成后复制该 token（⚠️ 只显示一次！）&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;建议保存到安全的地方，例如 &lt;code&gt;~/.config/sub-store/token.txt&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763035028805_IMG_3764.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;3.Sub-store设置Gist同步&lt;/h4&gt;
&lt;p&gt;将Github用户名和获取的Token粘贴进去即可&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763035001673_IMG_3765.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>AkDNS免费DNS解锁流媒体</title><link>https://blog.leuxx.de/posts/8/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/8/</guid><description>DNS解锁流媒体</description><pubDate>Sun, 10 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;AkileCloud开放自定义DNS解锁 目前可以添加10个非Akile ip和无限个Akile ip&lt;/p&gt;
&lt;h2&gt;教程&lt;/h2&gt;
&lt;p&gt;打开官网注册账号：&lt;a href=&quot;https://dns.akile.ai&quot;&gt;https://dns.akile.ai&lt;/a&gt;
添加自己的服务器ip&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1770726614422_IMG_3997.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击添加的ip&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1770726834132_IMG_3998.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择需要解锁的服务、流媒体 然后保存配置&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1770726912865_IMG_3999.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在vps中使用测试连通性脚本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget -qO- https://raw.githubusercontent.com/akile-network/aktools/refs/heads/main/akdns.sh |bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;选择最快的ip&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1770727084542_547532395-a6162ab8-3e44-4d92-bf10-6e8eaa24f62f.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在vps中添加dns解锁 将&lt;strong&gt;DNSip&lt;/strong&gt;换成连通性测试脚本中延迟最低的ip&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一键脚本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp /etc/resolv.conf /etc/resolv.conf.bak &amp;amp;&amp;amp; echo &quot;nameserver DNSip&quot; &amp;gt; /etc/resolv.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;最后使用流媒体解锁脚本查看是否生效&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -L -s https://raw.githubusercontent.com/xykt/RegionRestrictionCheck/main/check.sh)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1770727320116_IMG_4001.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>linux系统清理脚本 清理缓存、旧内核、docker镜像等</title><link>https://blog.leuxx.de/posts/7/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/7/</guid><description>vps清理脚本</description><pubDate>Sun, 13 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;一键脚本&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -sL https://raw.githubusercontent.com/leuxinovo/clearvps/main/leuql.sh)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;🧭 主要功能一览&lt;/h3&gt;
&lt;h4&gt;🖥 系统概况&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;显示系统基础信息（内核版本、架构、发行版等）&lt;/li&gt;
&lt;li&gt;查看根分区磁盘使用情况&lt;/li&gt;
&lt;li&gt;查看内存与 Swap 使用情况&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;APT / Dpkg 锁&lt;/strong&gt;&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;/li&gt;
&lt;li&gt;减少 &lt;code&gt;/var/log&lt;/code&gt; 占用空间&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;🧹 临时与缓存清理&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;清理系统临时目录与缓存文件：&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/tmp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/var/tmp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/var/cache&lt;/code&gt;&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;APT / DNF&lt;/strong&gt; 的下载缓存与历史记录&lt;/li&gt;
&lt;li&gt;删除旧版本包缓存文件&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;/li&gt;
&lt;li&gt;精简系统体积&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;🧽 系统瘦身&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;删除系统文档与手册（&lt;code&gt;/usr/share/doc&lt;/code&gt; 等）&lt;/li&gt;
&lt;li&gt;删除静态库文件（&lt;code&gt;.a&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;清理 Python 缓存文件（&lt;code&gt;.pyc&lt;/code&gt;、&lt;code&gt;__pycache__&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;进一步减少系统体积&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;🐳 Docker 清理&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;一键清理 Docker 未使用资源：&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;code&gt;docker system prune -a -f&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;⚙️ 内核清理&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;保留当前运行与最新版本内核&lt;/li&gt;
&lt;li&gt;删除旧内核包、头文件等&lt;/li&gt;
&lt;li&gt;防止 &lt;code&gt;/boot&lt;/code&gt; 分区被占满&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;⚡ 内存优化&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;检测系统负载与内存可用率&lt;/li&gt;
&lt;li&gt;在低负载时自动回收缓存（&lt;code&gt;drop_caches&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;避免在高负载时清理造成卡顿或断连&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h4&gt;🪶 SSD TRIM&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;对 SSD 执行 &lt;code&gt;fstrim&lt;/code&gt; 操作&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;/li&gt;
&lt;li&gt;最新磁盘与内存使用情况&lt;/li&gt;
&lt;li&gt;清理前后资源对比&lt;/li&gt;
&lt;li&gt;本次释放的空间总量&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;效果图&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/uploads/1763009406539_IMG_3760.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>rclone定时备份文件到网盘</title><link>https://blog.leuxx.de/posts/5/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/5/</guid><description>定时备份文件到网盘</description><pubDate>Mon, 12 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;建站都遇到过vps宕机，没有备份网站，导致网站数据丢失。可以利用这个脚本，定时备份文件到网盘。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;安装rclone&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;curl https://rclone.org/install.sh | sudo bash
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;rclone config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以mega网盘为例
&lt;img src=&quot;/uploads/1763009644983_IMG_3761.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;    #!/bin/bash
    
    # ==============================
    #        可配置项
    # ==============================
    
    # 要备份的目录（不要加 /）
    source_dir=&quot;/备份目录&quot;
    
    # 本地备份目录
    backup_dir=&quot;/本地备份目录&quot;
    mkdir -p &quot;$backup_dir&quot;
    
    # rclone 远程路径（例如 gdrive:/backup）
    remote=&quot;路径:/文件路径&quot;
    
    # 允许通过环境变量设置自定义前缀，默认值为 &quot;backup&quot;
    filename_prefix=&quot;${FILENAME_PREFIX:-backup}&quot;
    
    # ==============================
    #        自动变量
    # ==============================
    
    now=$(date +&quot;%Y-%m-%d_%H-%M-%S&quot;)
    backup_file=&quot;$backup_dir/${filename_prefix}_${now}.zip&quot;
    
    parent_dir=$(dirname &quot;$source_dir&quot;)
    target_dir=$(basename &quot;$source_dir&quot;)
    
    echo &quot;======================================&quot;
    echo &quot;📦 开始备份任务&quot;
    echo &quot;源目录: $source_dir&quot;
    echo &quot;备份文件: $backup_file&quot;
    echo &quot;======================================&quot;
    
    # ==============================
    #         开始压缩（静默）
    # ==============================
    
    cd &quot;$parent_dir&quot; || { echo &quot;❌ 无法进入目录 $parent_dir&quot;; exit 1; }
    
    echo &quot;📦 正在压缩...&quot;
    zip -r &quot;$backup_file&quot; &quot;$target_dir&quot; &amp;gt; /dev/null
    
    if [ $? -ne 0 ]; then
        echo &quot;❌ 压缩失败&quot;
        exit 1
    fi
    
    echo &quot;✅ 压缩完成&quot;
    du -h &quot;$backup_file&quot;
    
    # ==============================
    #         上传到远程（显示进度）
    # ==============================
    
    echo &quot;======================================&quot;
    echo &quot;📤 开始上传到远程：$remote&quot;
    echo &quot;======================================&quot;
    
    rclone copy &quot;$backup_file&quot; &quot;$remote&quot; \
        --progress \
        --stats 5s \
        --stats-one-line \
        --transfers=1 \
        --checkers=1
    
    if [ $? -ne 0 ]; then
        echo &quot;❌ 上传失败&quot;
        exit 1
    fi
    
    echo &quot;✅ 上传完成&quot;
    
    # ==============================
    #      清理本地旧备份
    # ==============================
    
    echo &quot;🗑️ 清理本地旧备份（保留最近 3 个）...&quot;
    
    ls -1t &quot;$backup_dir&quot;/${filename_prefix}_*.zip 2&amp;gt;/dev/null | sed -e &apos;1,3d&apos; | while read old_file; do
        echo &quot;删除本地：$old_file&quot;
        rm -f &quot;$old_file&quot;
    done
    
    # ==============================
    #      清理远程旧备份
    # ==============================
    
    echo &quot;🗑️ 清理远程旧备份（保留最近 3 个）...&quot;
    
    rclone lsf &quot;$remote&quot; --files-only | \
    grep &quot;^${filename_prefix}_&quot; | \
    sort -r | \
    awk &apos;NR&amp;gt;3&apos; | \
    while read file; do
        echo &quot;删除远程：$file&quot;
        rclone deletefile &quot;$remote/$file&quot;
    done
    
    echo &quot;======================================&quot;
    echo &quot;🎉 所有操作完成&quot;
    echo &quot;======================================&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;设置定时任务&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;crontab -e
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每天0点和中午12点执行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;0 0,12 * * * /脚本路径
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>清理哪吒数据库、修改哪吒数据库 更改服务器、报警、服务顺序等</title><link>https://blog.leuxx.de/posts/4/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/4/</guid><pubDate>Wed, 12 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注&lt;/strong&gt;：如果害怕改错可以电脑下载一个sqlite数据库工具自行修改 也可以使用下面的命令备份一个出来 &lt;strong&gt;修改后重启面板生效&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;cp /opt/nezha/dashboard/data/sqlite.db /root/sqlite.db
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装sqlite3 （用于打开sqlite数据库）&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;apt install sqlite3
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;打开哪吒数据库&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sqlite3 /opt/nezha/dashboard/data/sqlite.db
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;列出表&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.tables
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修改服务器排序&lt;/h2&gt;
&lt;p&gt;打开服务器文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM servers;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE servers SET id =要修改成的id WHERE id =修改的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM servers WHERE id =要删除的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;更新id列 让后续id减少1&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE servers
SET id = id - 1
WHERE id &amp;gt; 中间断的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把 &lt;code&gt;id = 4&lt;/code&gt; 改为 &lt;code&gt;5&lt;/code&gt;，&lt;code&gt;5 → 6&lt;/code&gt;，&lt;code&gt;6 → 7&lt;/code&gt;，以此类推（所有 &lt;code&gt;id &amp;gt;= 4&lt;/code&gt; 的值都加 1），避免主键冲突。&lt;strong&gt;注：演示id为4 自行修改&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;第 1 步：将 &lt;code&gt;id &amp;gt;= 4&lt;/code&gt; 的记录统一先加一个大值（如 1000）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE servers
SET id = id + 1000
WHERE id &amp;gt;= 4;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;第 2 步：把刚才加上大值的记录再减 999（等于 +1 的效果）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE servers
SET id = id - 999
WHERE id &amp;gt;= 1004;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重置顺序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM sqlite_sequence WHERE name = &apos;servers&apos;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;保存并退出&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.exit
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修改报警排序&lt;/h2&gt;
&lt;p&gt;打开报警文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM alert_rules;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改报警id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE alert_rules SET id =要修改成的id WHERE id =修改的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除报警&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM alert_rules WHERE id =要删除的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重置顺序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM sqlite_sequence WHERE name = &apos;alert_rules&apos;;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修改服务（网络延迟ip）&lt;/h2&gt;
&lt;p&gt;打开服务文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM services;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改服务id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE services SET id =要修改成的id WHERE id =修改的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除网络延迟id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM services WHERE id =要删除的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重置顺序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM sqlite_sequence WHERE name = &apos;services&apos;;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修改服务器分组&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM server_groups;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;打开服务器分组&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM server_groups;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改服务器分组id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE server_groups SET id =要修改成的id WHERE id =修改的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除计划服务器id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM server_groups WHERE id =要删除的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重置顺序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM sqlite_sequence WHERE name = &apos;server_groups&apos;;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修改服务器分组关联表&lt;/h2&gt;
&lt;p&gt;打开服务器分组关联表&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM server_group_servers;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改服务器分组关联表id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE server_group_servers SET id =要修改成的id WHERE id =修改的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除计划服务器关联表id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM server_group_server WHERE id =要删除的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重置顺序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM sqlite_sequence WHERE name = &apos;server_group_servers&apos;;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;清空网络延迟监控&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;如果开启了tsdb 直接删除tsdb文件即可&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    rm -rf /opt/nezha/dashboard/data/tsdb
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM service_histories;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;清空单个服务器id的网络延迟监控&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM service_histories WHERE server_id = id;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;一行命令清理网络延迟 收缩数据库文件大小&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sqlite3 /opt/nezha/dashboard/data/sqlite.db &quot;DELETE FROM service_histories; VACUUM;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;strong&gt;收缩 SQLite 数据库文件大小&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;执行完大量删除后，SQLite 文件并不会立即变小。你需要运行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;VACUUM;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个命令会重建数据库并清理空间碎片，使 sqlite.db 文件变小。&lt;/p&gt;
&lt;h2&gt;修改报警通知里面的双向流量使用多少&lt;/h2&gt;
&lt;p&gt;字节转换网站：&lt;a href=&quot;https://tooltt.com/byte-convert/&quot;&gt;https://tooltt.com/byte-convert/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;查找服务器id的流量报警&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM transfers WHERE server_id =服务器id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;清空服务器id的流量&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE transfers
SET &quot;in&quot; = 0, &quot;out&quot; = 0
WHERE server_id =服务器id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;清空字段的流量&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE transfers
SET &quot;in&quot; = 0, &quot;out&quot; = 0
WHERE id =字段;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改下载流量&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE transfers
SET out =要修改的流量字节
WHERE id =字段;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改上传流量&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE transfers
SET &quot;in&quot; =要修改的流量字节
WHERE id =字段;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重置顺序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM sqlite_sequence WHERE name = &apos;transfers&apos;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;清空服务器id的字段&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM transfers WHERE server_id = 服务器id;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修改计划任务&lt;/h2&gt;
&lt;p&gt;打开计划任务文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM crons;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改计划任务id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE crons SET id =要修改成的id WHERE id =修改的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除计划任务id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM crons WHERE id =要删除的id;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重置顺序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM sqlite_sequence WHERE name = &apos;crons&apos;;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>哪吒V1快捷更改Agent域名</title><link>https://blog.leuxx.de/posts/1/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/1/</guid><pubDate>Thu, 10 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;前言：如果小鸡有很多 一个一个更换域名很麻烦 因此利用cron可以快捷更换所有小鸡的Agent域名_&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意！！cron只能在机器在线的时候使用 如果域名快到期请在到期前在面板鸡反代上添加新的域名后使用 更改完在删掉旧域名&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原理：利用Nezha自带的cron快捷更换Agent域名&lt;/p&gt;
&lt;h1&gt;教程&lt;/h1&gt;
&lt;p&gt;登录哪吒后台 创建任务 覆盖范围选择排除特定服务器&lt;/p&gt;
&lt;p&gt;把脚本导入进命令内 替换自己的原域名和新域名&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sed -i &apos;s/server: 原来的域名:端口/server: 新域名:端口/&apos; /opt/nezha/agent/config.yml \&amp;amp;\&amp;amp; sudo systemctl restart nezha-agent.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果是Alpine系统请使用下面脚本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sed -i &apos;s/server: 原来的域名:端口/server: 新域名:端口/&apos; /opt/nezha/agent/config.yml \&amp;amp;\&amp;amp; rc-service nezha-agent restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在哪吒后台更改Agent对接地址 最后手动执行一下即可&lt;/p&gt;
</content:encoded></item><item><title>VPS设置密钥登录 一键导入公钥到VPS</title><link>https://blog.leuxx.de/posts/2/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/2/</guid><description>开启密钥登录 一键导入公钥脚本</description><pubDate>Wed, 09 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;如果没有密钥 在vps上申请一个 如果有请忽略&lt;/p&gt;
&lt;h2&gt;申请密钥&lt;/h2&gt;
&lt;h3&gt;申请密钥对&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ssh-keygen -t ed25519 -a 100
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;安装公钥&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;cat .ssh/id_ed25519.pub &amp;gt;&amp;gt; .ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;私钥设置可读权限&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;chmod 600 .ssh/id_ed25519
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;保存好私钥&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;id_ed25519&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;一键导入公钥脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -sL https://raw.githubusercontent.com/leuxinovo/clearvps/main/sshkey.sh) -g github用户名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把公钥导入到GitHub &lt;a href=&quot;https://github.com/settings/keys&quot;&gt;https://github.com/settings/keys&lt;/a&gt;
即可使用脚本一键导入公钥到VPS&lt;/p&gt;
&lt;h2&gt;设置密钥登录&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进行如下设置：
开启密钥登录：&lt;strong&gt;PubkeyAuthentication yes&lt;/strong&gt;
另外，请留意 root 用户能否通过 SSH 登录： &lt;strong&gt;PermitRootLogin yes&lt;/strong&gt;
当你完成全部设置，并以密钥方式登录成功后，再禁用密码登录: &lt;strong&gt;PasswordAuthentication no&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;最后重启ssh&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart ssh
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>VPS安装Caddy反代</title><link>https://blog.leuxx.de/posts/3/</link><guid isPermaLink="true">https://blog.leuxx.de/posts/3/</guid><description>Caddy很轻薄简单的反代工具</description><pubDate>Sun, 11 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;安装Caddy&lt;/h3&gt;
&lt;p&gt;我们按照官方的安装方法，首先，安装一些必要的软件包：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt update
apt upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后加入 Caddy 的 GPG 公钥和 apt 源：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -sSL https://dl.cloudsmith.io/public/caddy/stable/gpg.key | gpg --dearmor &amp;gt; /usr/share/keyrings/caddy.gpg
echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/caddy.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main&quot; &amp;gt; /etc/apt/sources.list.d/caddy.list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后更新系统即可安装Caddy：
apt update
apt install caddy&lt;/p&gt;
&lt;h3&gt;Caddy使用教程&lt;/h3&gt;
&lt;p&gt;例：Caddy反代本地8080端口 自动申请证书&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    example.com {
        reverse_proxy localhost:8080
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Caddy反代本地8080端口 指定证书&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    example.com {
        tls /路径/公钥.pem /路径/密钥.pem
        reverse_proxy localhost:8080
    }
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item></channel></rss>