<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://blog.leuxx.de/</id>
  <title type="text">Leuの小站</title>
  <subtitle type="text">让每一次折腾，都成为值得分享的经验。</subtitle>
  <updated>2026-10-26T00:00:00.000Z</updated>
  <author><name>Leu</name></author>
  <link rel="alternate" href="https://blog.leuxx.de/"/>
  <link rel="self" href="https://blog.leuxx.de/atom.xml"/>
  <generator uri="https://github.com/CuteLeaf/Firefly">Firefly v6.16.8</generator>
    <entry>
      <id>https://blog.leuxx.de/posts/26/</id>
      <title type="text">esim.gg仅需32元永久使用爱沙尼亚eSIM 并写入实体eSIM卡</title>
      <published>2025-11-20T00:32:16.000Z</published>
      <updated>2025-11-20T00:32:16.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/26/"/>
      <summary type="text">超高性价比的永久爱沙尼亚 eSIM 解决方案。优惠码：techleu</summary>
      <content type="html"><![CDATA[<p>最近因为注册某些app需要用到海外的电话号码，目前海外大部分国家都支持esim，且部分国家的电话号码并不需要实名（上传护照等信息），但国内大部分手机都是不支持esim的，所以还需要把esim写入到实体sim卡，这里我就选择了爱沙尼亚的esim.gg卡（俗称乌龟卡），3.99欧（31.71元）即可永久使用，如果使用<strong>币安</strong>付款，价格可以在少0.2欧，3.79欧即可购买，不用实名且可以免费收短信。</p>
<div><div><div></div><div>提示</div></div><div><p>官网：<a href="https://esim.gg" target="_blank">https://esim.gg</a></p><p>优惠码：<code>techleu</code></p><p>使用优惠码购买链接：<a href="https://esim.gg/e/techleu" target="_blank">https://esim.gg/e/techleu</a></p><p><strong>连接基站即可免费保号一年</strong></p></div></div>
<section><h2>一、关于乌龟卡<a href="#一关于乌龟卡"><span>#</span></a></h2><p>这个esim购买网址是 <a href="https://esim.gg" target="_blank">esim.gg</a>，而网站图标又是个乌龟，就俗称乌龟卡，他们家主要是爱沙尼亚的esim卡，其他地区的也有，但是太贵了，这个爱沙尼亚（区号为+372）的最便宜。他们那个网站有中文，工单也支持中文。</p><p>说下具体资费，一次性购买费用3.99欧，相当于31.71rmb。为什么说是永久使用呢，因为除此之外就没有套餐费，收短信免费，在国内接听电话也免费，只要自己不发短信不开流量，当个接收短信的号码完全0额外成本。他这个保号规则也很简单，只要1年只能连接上一次基站，就可以延长1年使用期（或者余额有变动也可以延长1年），所以平常接收完验证码，直接拔卡就行，一年内连上一次基站，实现0额外成本一直使用。</p></section>
<section><h2>二、购买乌龟卡<a href="#二购买乌龟卡"><span>#</span></a></h2><p><a href="https://esim.gg" target="_blank">https://esim.gg</a> 直接浏览器打开，进入购买，进入到购买界面就有简体中文了，往下拉选择全球地区，输入折扣码<code>techleu</code>可以减0.4欧，不然开卡费就要4.39欧，下面那个充值金额最低就是1欧，之后就是选择个自己喜欢的号码，这里因为只充值1欧所以可选的免费号码比较少（嗯靓号也是要收费的），最后支付宝完成支付，这个非常贴心，直接用支付宝就行。</p><p>也可以直接使用带优惠码的链接直接购买：<a href="https://esim.gg/e/techleu" target="_blank">https://esim.gg/e/techleu</a></p><p><img src="/uploads/ON6vBnVY.webp" alt="" /></p><p>阅读并同意条款</p><p><img src="/uploads/2qSj8uGz.webp" alt="" /></p><p>选择自己需要充值的余额 这里我选择充值最低1欧</p><p><img src="/uploads/NcLki0hY.webp" alt="" /></p><p>选择自己喜欢的号码 有免费的也有付费的 这里我选择免费的</p><p><img src="/uploads/M46Bux6z.webp" alt="" /></p><p>选择不选购流量包</p><p><img src="/uploads/tSZ0rF21.webp" alt="" /></p><p>输入折扣代码<code>techleu</code>减0.4欧 最后选择支付方式即可</p><p><img src="/uploads/r45jbntx.webp" alt="" /></p><p>我想肯定是有人想拿这个上网，，，，怎么说呢，也能用，但是流量费肯定是贵。</p><p><img src="/uploads/1763008236372_IMG_3731.jpeg" alt="" /></p><p>支付完成后就可以下卡了，自己账户里面就会出现这个号码，选择install esim，就会出现二维码，此时用支持esim的手机扫描就可以下卡了，如果自己手机不支持esim，就需要写入到实体sim卡。</p><p><img src="/uploads/1763008241087_IMG_3732.jpeg" alt="" /></p></section>
<section><h2>三、写入实体sim卡<a href="#三写入实体sim卡"><span>#</span></a></h2><p>开头前先了解一下基础知识，所谓的写入实体sim卡，是自己购买euicc卡，然后通过软件或者读卡器把esim信息写入到euicc。euicc就是一个能写入多个esim的实体卡，不同euicc卡片容量不同，能写入的数量也不同，一般都是500k，可以写20个esim（可以不同运营商），这样当你需要哪个卡的适合就直接切换到对应的esim，一个卡顶20个传统卡。
可能大火有听说过5ber/9esim这种，其实都是euicc卡，只是前者有牌子，卖的非常贵，普通euicc卡俗称小白卡，即小作坊产品，质量不好说（有人写入一次就炸鸡），但是非常便宜，40不到就能拿下（500k容量）。需要注意的是，安卓目前写入和切卡（切换euicc内的esim信息）非常方便，但是苹果只能切卡，而且需要特定的euicc才支持，这类euicc也要贵几块钱，如果自己用苹果的建议买海外esim版的。</p><p><img src="/uploads/1763008234018_IMG_3733.jpeg" alt="" /></p><p>刚刚说了，苹果只支持切卡，不能写卡，所以苹果写卡是需要专门的读卡器，这玩意也要40多，安卓则不需要，直接用app写入就行。本篇就用安卓做演示，至于苹果，我也没设备。苹果不但卖的比安卓贵，在各个方面都要多掏一笔钱hhhhh。忘记说了，买之前记得问问店家这个卡带不带ara-m（证书），如果不带这玩意安卓需要root才能写入，如果带的话就不用。</p><p><img src="/uploads/1763008234477_IMG_3734.jpeg" alt="" /></p><p>记得关掉短信、语音避免扣费</p><p><img src="/uploads/1763008238196_IMG_3735.jpeg" alt="" /></p><p>安卓写入需要用到一个叫做“easyeuicc”的app，这个自己谷歌下载，安装好后可以运行检测下，前三项能通过就没问题，基本上大部分手机都可以通过，我这好几年前的红米都可以，至于后面几项不用管。对了，有些手机只能sim卡1槽才支持写卡，卡2槽不行，，，，
easyeuicc下载网站：<a href="https://gitea.angry.im/PeterCxy/OpenEUICC/releases" target="_blank">https://gitea.angry.im/PeterCxy/OpenEUICC/releases</a></p><p><img src="/uploads/1763008237313_IMG_3736.jpeg" alt="" /></p><p>上面的检查没问题后就可以准备把euicc卡插到手机准备写卡，但是，我要说但是了，如果是小米手机，请务必关闭手机查找功能，这玩意会插入新的sim卡自动发短信，乌龟卡发一条就会扣0.24欧，给我气的，我一共就充了1欧，一下子就被小米给花了0.24欧？？？？？？然后小米还会偷跑流量，我干，后面又给我跑了0.3k流量扣了0.0001欧，本来就不富裕的家庭更是雪上加霜。</p><p><img src="/uploads/1763008232677_IMG_3737.jpeg" alt="" />
<img src="/uploads/1763008238329_IMG_3738.jpeg" alt="" /></p><p><img src="/uploads/1763008233562_IMG_3739.jpeg" alt="" /></p></section>
<section><h2>四、测试短信<a href="#四测试短信"><span>#</span></a></h2><p>随便写一个手机号 发送测试短信</p><p><img src="/uploads/1763008235812_IMG_3740.jpeg" alt="" /></p><p><img src="/uploads/1763008232053_IMG_3741.jpeg" alt="" /></p></section>
<section><h2>五、保号、重新写入esim<a href="#五保号重新写入esim"><span>#</span></a></h2><section><h3>关于保号<a href="#关于保号"><span>#</span></a></h3><p>连接基站即可免费保号一年，可在官网查看有效期。</p></section><section><h3>关于重新写入esim<a href="#关于重新写入esim"><span>#</span></a></h3><p>联网删掉esim，在app内发送通知，即可在新的esim实体卡中写入esim（重新官网扫码写入即可 <strong>PS.二维码可写入十次，超出后需要补卡换新码</strong>）</p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/40/</id>
      <title type="text">使用Caddy反代emby教程 - 支持前后端分离emby反代</title>
      <published>2026-10-26T00:00:00.000Z</published>
      <updated>2026-10-26T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/40/"/>
      <summary type="text">使用Caddy反代emby完整版教程</summary>
      <content type="html"><![CDATA[<section><h1>前言<a href="#前言"><span>#</span></a></h1><p>Emby 是一款广受欢迎的个人媒体服务器，通过反向代理，可以使用自己的域名访问 Emby，同时借助 HTTPS 加密提升访问安全性。本文将介绍如何使用 <strong>Caddy 反向代理 Emby</strong>，从安装 Caddy、配置反代规则到重启服务，带你完成整个部署流程。Caddy 支持自动申请和续期 HTTPS 证书，无需手动配置证书，能够有效简化部署过程。</p><p>此外，针对部分采用<strong>前后端分离架构、拥有独立推流服务器地址的 Emby 服务</strong>，本文还提供了专门的反代配置示例，通过路径分流将媒体流请求转发到指定的推流地址，从而实现前端访问与媒体播放请求的分离代理。</p><p>无论你使用的是普通 Emby 服务，还是需要单独处理推流地址的特殊架构，都可以参考本文的配置，根据自己的域名、客户端地址和推流地址进行修改，快速搭建属于自己的 Emby 反向代理服务。</p></section>
<section><h1>安装Caddy<a href="#安装caddy"><span>#</span></a></h1><p>Debian, Ubuntu</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl</span></div></div><div><div><div>2</div></div><div><span>curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg</span></div></div><div><div><div>3</div></div><div><span>curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list</span></div></div><div><div><div>4</div></div><div><span>sudo apt update</span></div></div><div><div><div>5</div></div><div><span>sudo apt install caddy</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>Fedora, RedHat, CentOS, AlmaLinux, RockyLinux</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>dnf install 'dnf-command(copr)'</span></div></div><div><div><div>2</div></div><div><span>dnf copr enable @caddy/caddy</span></div></div><div><div><div>3</div></div><div><span>dnf install caddy</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>设置Caddy开启启动和启动Caddy</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo systemctl enable caddy</span></div></div><div><div><div>2</div></div><div><span>sudo systemctl start caddy</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h1>编辑Caddyfile文件<a href="#编辑caddyfile文件"><span>#</span></a></h1><p>Vi编辑CaddyFile文件</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo vi /etc/caddy/Caddyfile</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>按<strong>i</strong>之后，使用 <strong>Ctrl+Shift+V</strong> 粘贴代码。</p><p>粘贴完后，使用 <strong>Esc</strong> ，然后使用 <strong></strong> 保存退出。</p></section>
<section><h1>反代代码<a href="#反代代码"><span>#</span></a></h1><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>your.domain.com { # 这里写你用的域名</span></div></div><div><div><div>2</div></div><div><span><span>        </span></span><span>reverse_proxy https://target.domain:443 { # 这里写反代的域名</span></div></div><div><div><div>3</div></div><div><span><span>                </span></span><span>header_up Host {upstream_hostport}</span></div></div><div><div><div>4</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>5</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果是前后端分离的emby 并且有推流服务器地址 使用下面的反代代码</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>your.domain.com {</span></div></div><div><div><div>2</div></div><div><span><span>    </span></span><span>request_body {</span></div></div><div><div><div>3</div></div><div><span><span>        </span></span><span>max_size 20MB</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>header {</span></div></div><div><div><div>7</div></div><div><span><span>        </span></span><span>X-Frame-Options "SAMEORIGIN"</span></div></div><div><div><div>8</div></div><div><span><span>        </span></span><span>X-XSS-Protection "1; mode=block"</span></div></div><div><div><div>9</div></div><div><span><span>        </span></span><span>X-Content-Type-Options "nosniff"</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>11</div></div><div>
</div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>handle_path /000/* {</span></div></div><div><div><div>13</div></div><div><span><span>        </span></span><span>reverse_proxy https://推流地址 {</span></div></div><div><div><div>14</div></div><div><span><span>            </span></span><span>header_up Host {http.reverse_proxy.upstream.hostport}</span></div></div><div><div><div>15</div></div><div><span><span>            </span></span><span>header_up Referer https://客户端地址/web/index.html</span></div></div><div><div><div>16</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>17</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>18</div></div><div>
</div></div><div><div><div>19</div></div><div><span><span>    </span></span><span>reverse_proxy https://客户端地址 {</span></div></div><div><div><div>20</div></div><div><span><span>        </span></span><span>header_up Host {http.reverse_proxy.upstream.hostport}</span></div></div><div><div><div>21</div></div><div><span><span>        </span></span><span>header_down Location https://推流地址 https://你的反代域名/000/</span></div></div><div><div><div>22</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>23</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>
<section><h1>重启Caddy<a href="#重启caddy"><span>#</span></a></h1><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo systemctl restart caddy</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>Caddy会自动申请证书，然后反代目标Emby网站。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/39/</id>
      <title type="text">免绑卡注册AWS 获得至少免费半年vps 升级后可以使用1年</title>
      <published>2026-10-10T00:00:00.000Z</published>
      <updated>2026-10-10T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/39/"/>
      <summary type="text">免绑卡注册VPS 三个地区随机选择 不容错过</summary>
      <content type="html"><![CDATA[<section><h1>注册最重要的就是环境<a href="#注册最重要的就是环境"><span>#</span></a></h1><p>下载并安装<a href="https://www.adspower.net/download" target="_blank">adspower指纹浏览器</a></p><p>代理软件设置稍微干净一点的节点 不一定非得要家宽 尽量开启tun 全局模式 没有干净的节点也可以关代理使用CN环境+qq邮箱注册(保底)</p><p>打开adspower指纹浏览器并创建环境</p></section>
<section><h1>注册账号<a href="#注册账号"><span>#</span></a></h1><p>打开aws注册地址 开始注册账号 可以使用域名邮箱 未开代理可以使用qq邮箱、163之类的 如提示绑卡代表环境不行 可以尝试换节点、换邮箱</p><p>aws免绑卡注册入口(以后登录也要用这个地址)：<a href="https://signin.aws.amazon.com/signup?request_type=builderId" target="_blank">https://signin.aws.amazon.com/signup?request_type=builderId</a></p><p>注册成功进入控制台有100$的抵扣金 直接搜索<code>lightsail</code>进入光帆控制台创建vps</p><p>创建时能创建24$的尽量创建高配的 创建不了再创建低配的 创建时添加设置root密码的脚本
<img src="/uploads/18e971ebc08d624c3df085908e7a9b26.webp" alt="" /></p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>echo ”root:此处修改为你的root密码“ | chpasswd root &amp;&amp; sed -i ’s/^#\?PermitRootLogin.*/PermitRootLogin yes/g‘ /etc/ssh/sshd_config &amp;&amp; sed -i ’s/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g‘ /etc/ssh/sshd_config &amp;&amp; sed -i ’s|^Include /etc/ssh/sshd_config.d/\*.conf|#&amp;|‘ /etc/ssh/sshd_config &amp;&amp; systemctl restart ssh</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>在<code>networking</code>菜单里开放防火墙
<img src="/uploads/87a4919d3cb41d96275bb9bf09a3754f.webp" alt="" /></p><p>免费领取抵扣金任务：
<img src="/uploads/dc71c41022b05f93837958c2614eacd4.png" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/38/</id>
      <title type="text">Cloudflare 免费版 Bot Fight Mode 如何添加 IP 白名单 - 踩坑实录</title>
      <published>2026-09-20T00:00:00.000Z</published>
      <updated>2026-09-20T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/38/"/>
      <summary type="text">Cloudflare免费版添加 IP 白名单</summary>
      <content type="html"><![CDATA[<section><h1>问题起因<a href="#问题起因"><span>#</span></a></h1><p>最近我又买了一台小鸡。部署 Komari Agent 后，探针页面中的节点却一直没有上线。查看 Agent 日志，可以看到：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Failed to connect to WebSocket: 403 Forbidden</span></div></div><div><div><div>2</div></div><div><span>...</span></div></div><div><div><div>3</div></div><div><span>Error uploading basic info: status code: 403</span></div></div><div><div><div>4</div></div><div><span>&lt;!DOCTYPE html&gt;&lt;html lang=”en-US“&gt;&lt;head&gt;&lt;title&gt;Just a moment...&lt;/title&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>很明显，我在探针服务前套的 Cloudflare 直接在边缘节点拦截了请求。在 Cloudflare 的安全事件中，也能看到一堆来自 Agent IP 的拦截记录。
<img src="/uploads/5748120a59c0635d38d861d8afa5eb2a.png" alt="" /></p></section>
<section><h1>第一次尝试：添加 WAF 白名单<a href="#第一次尝试添加-waf-白名单"><span>#</span></a></h1><p>我先创建了一条 WAF 自定义规则，用 Agent 的固定出口 IP 作为匹配条件：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>ip.src eq 203.0.113.10</span></div></div></code></pre><div><div></div><div></div></div></figure></div><blockquote><p><code>203.0.113.10</code> 只是示例，请替换成 Agent 的真实出口 IP。</p></blockquote><p>Action 选择 <code>Skip</code>。页面上还可以选择跳过：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Managed WAF</span></div></div><div><div><div>2</div></div><div><span>Custom Rules</span></div></div><div><div><div>3</div></div><div><span>Browser Integrity Check</span></div></div><div><div><div>4</div></div><div><span>Security Level</span></div></div><div><div><div>5</div></div><div><span>Super Bot Fight Mode</span></div></div><div><div><div>6</div></div><div><span>...</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p><img src="/uploads/1b82dd58ad903b0eab599ee03607be92.png" alt="" />
<img src="/uploads/1fe9e918ab7c1bbc82e3cc84e1d9ab96.png" alt="" />
按照常识理解：</p><blockquote><p>我都按 IP Skip 了，这台 Agent 总该放行了吧？
结果还是 <code>403</code>，后台日志依然显示请求被 Bot Fight Mode 拦截。</p></blockquote></section>
<section><h1>第一个坑：免费版 Bot Fight Mode 不受 WAF Skip 规则控制<a href="#第一个坑免费版-bot-fight-mode-不受-waf-skip-规则控制"><span>#</span></a></h1><p>查阅 Cloudflare 的 Bot Fight Mode 文档 后，原因就很清楚了：</p><ul>
<li>普通 WAF 组件运行在 Ruleset Engine 中，自定义规则的 <code>Skip</code> 可以让请求跳过指定的后续组件。</li>
<li>免费版 Bot Fight Mode 不运行在 Ruleset Engine 中，而是走独立的评估流程。因此 WAF 自定义规则中的 <code>Skip</code>、<code>Bypass</code> 和 <code>Allow</code> 对它都无效。</li>
<li>Super Bot Fight Mode 运行在 Ruleset Engine 中，支持使用 <code>Skip</code> 创建例外，但需要付费套餐。</li>
</ul><p>这就是最容易踩坑的地方：Cloudflare 页面明明给了一个 <code>Skip</code> 按钮，但免费版 Bot Fight Mode 根本不认这条规则。</p><p>难道只能二选一？</p><ul>
<li>关闭 Bot Fight Mode；</li>
<li>保留防护，但让 Agent 一直断线。</li>
</ul><section><h2>转机：IP Access Rules<a href="#转机ip-access-rules"><span>#</span></a></h2><p>同一份文档还提到：Bot Fight Mode 仍可能在配置 IP Access Rules 时触发，但如果请求先匹配到一条 IP Access Rule，Bot Fight Mode 就不会再触发。
也就是说，WAF 自定义规则不能给免费版 Bot Fight Mode 开白名单，但 IP Access Rule 可以。</p></section></section>
<section><h1>第二个坑：IP Access Rules 到底在哪？<a href="#第二个坑ip-access-rules-到底在哪"><span>#</span></a></h1><p>官方文档说有 IP Access Rules，但我翻遍 Dashboard 也没有找到入口。最后在 <a href="https://developers.cloudflare.com/waf/tools/ip-access-rules/create/" target="_blank">创建 IP Access Rule 的文档</a> 中看到了这条说明：</p><blockquote><p>只有已经配置过至少一条 IP Access Rule，Dashboard 才会显示 IP Access Rules 选项。</p></blockquote><p>对于从未创建过此类规则的 Zone，新版 Dashboard 不会直接显示入口。这就形成了一个很怪的死循环：<strong>想在页面里创建第一条规则，必须先已经有一条规则。</strong></p><section><h2>解决方案：用 API 创建第一条 IP Access Rule<a href="#解决方案用-api-创建第一条-ip-access-rule"><span>#</span></a></h2><p>Cloudflare 几乎把所有配置能力都 API 化了，Dashboard 更像是 API 之上的管理界面。既然功能本身仍然存在，而 UI 又没有入口，直接调用 API 反而最省事。</p><p>Cloudflare 提供了 <a href="https://developers.cloudflare.com/api/resources/firewall/subresources/access_rules/methods/create/" target="_blank">创建 IP Access Rule 的 API</a>，下面直接开始操作。</p></section></section>
<section><h1>1. 获取 Zone ID<a href="#1-获取-zone-id"><span>#</span></a></h1><p>进入 <code>Cloudflare Dashboard → Domain → Overview</code>，在页面右侧的 API 区域复制 <code>Zone ID</code>。</p><p><img src="/uploads/4dabe184f6b1b879dd4f508e365782dc.png" alt="" /></p></section>
<section><h1>2. 创建 API Token<a href="#2-创建-api-token"><span>#</span></a></h1><p>进入 <code>Cloudflare Dashboard → Manage account → Account API tokens → Create Token</code>。</p><p><img src="/uploads/fd2d71b828a25563b031ab15ade25772.png" alt="" /></p><p><img src="/uploads/ff5ccdab9e4aa7b078572def0ad685b9.png" alt="" /></p><div><div><div></div><div>权限与密钥安全</div></div><div><p>截图中为了快速验证选择了 <code>Write all resources</code>，这个权限过大，不建议长期使用；规则创建完成后，建议立即删除或撤销这个临时 Token。</p></div></div></section>
<section><h1>3. 调用 API 创建白名单<a href="#3-调用-api-创建白名单"><span>#</span></a></h1><p>在自己的电脑或 VPS 上设置环境变量：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>export CF_ZONE_ID=’你的 Zone ID‘</span></div></div><div><div><div>2</div></div><div><span>export CF_API_TOKEN=’你的 API Token‘</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>然后为需要放行的 IP 创建规则：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>curl -sS -X POST \</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>"https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/firewall/access_rules/rules" \</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>-H "Authorization: Bearer ${CF_API_TOKEN}" \</span></div></div><div><div><div>4</div></div><div><span><span>  </span></span><span>-H "Content-Type: application/json" \</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>--data '{</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>"mode": "whitelist",</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>"configuration": {</span></div></div><div><div><div>8</div></div><div><span><span>      </span></span><span>"target": "ip",</span></div></div><div><div><div>9</div></div><div><span><span>      </span></span><span>"value": "需要白名单的 IP"</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>"notes": "Komari agent - alibabahk"</span></div></div><div><div><div>12</div></div><div><span><span>  </span></span><span>}'</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>其中：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>"mode": "whitelist"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>对应 IP Access Rules 中的 <code>Allow</code>（白名单）。Cloudflare 的 API schema 明确支持 <code>whitelist</code>。</p><p>创建成功后，应该看到类似响应：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>{</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>"result": {</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>"id": "xxxxxxxxxxxxxxxx",</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>"mode": "whitelist",</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>"configuration": {</span></div></div><div><div><div>6</div></div><div><span><span>      </span></span><span>"target": "ip",</span></div></div><div><div><div>7</div></div><div><span><span>      </span></span><span>"value": "你的 IP"</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>9</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>10</div></div><div><span><span>  </span></span><span>"success": true,</span></div></div><div><div><div>11</div></div><div><span><span>  </span></span><span>"errors": [],</span></div></div><div><div><div>12</div></div><div><span><span>  </span></span><span>"messages": []</span></div></div><div><div><div>13</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>再次进入 Cloudflare Dashboard，你会发现 <code>IP access rules</code> 的入口已经出现，以后就可以直接在页面中管理白名单了。
<img src="/uploads/b34af89c1f738b788be1280781497ce1.png" alt="" /></p></section>
<section><h1>总结<a href="#总结"><span>#</span></a></h1><p>这套方案适用于出口 IP 固定、需要绕过免费版 Bot Fight Mode 的可信服务：</p><section><h2>优点：<a href="#优点"><span>#</span></a></h2><ul>
<li>不需要关闭整个 Zone 的 Bot Fight Mode；</li>
<li>不影响 Bot Fight Mode 对其他来源请求的拦截；</li>
<li>免费。</li>
</ul></section><section><h2>缺点：<a href="#缺点"><span>#</span></a></h2><ul>
<li>IP Access Rule 的 <code>Allow</code> 会让匹配的访问者跳过 WAF、Browser Integrity Check、Under Attack Mode 等安全检查，放行范围比单纯绕过 Bot Fight Mode 更大；</li>
<li>不能按 Host 或 Path 做精确匹配，只适合整个出口 IP 都可信的情况；</li>
<li>IP 变化后必须及时更新规则，因此不适合使用动态出口 IP 的 Agent。</li>
</ul><p>这次问题本身并不复杂，核心方案就是给被拦截的固定 IP 添加 IP Access Rule。真正让排查变复杂的，是 Cloudflare 把不同时期、运行在不同评估流程中的安全机制放进了同一个 Dashboard，看起来相似，实际却不遵循同一套跳过逻辑。</p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/37/</id>
      <title type="text">零基础 Cloudflare 优选教程</title>
      <published>2026-09-03T00:00:00.000Z</published>
      <updated>2026-09-03T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/37/"/>
      <summary type="text">你不需要具备复杂的网络知识，按照教程操作即可完成从域名接入 Cloudflare、DNS 解析到优选节点测试的基本流程。</summary>
      <content type="html"><![CDATA[<section><h1>一. 啥是优选, 对我网站的优化明显吗?<a href="#一-啥是优选-对我网站的优化明显吗"><span>#</span></a></h1><p>由于众所周知的原因, Cloudflare 的大部分节点在高峰期的表现的不堪入目. 所以引申出了节点优选. 通常是把特定区域的流量引导至我们想要的 PoP(例如 HKG/NRT/SIN). 优选的节点通常会有更优的线路和性能.</p><p>优选的原理如下:</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>用户 (海外或大陆)</span></div></div><div><div><div>2</div></div><div><span><span>         </span></span><span>|</span></div></div><div><div><div>3</div></div><div><span><span>         </span></span><span>v</span></div></div><div><div><div>4</div></div><div><span>第三方 DNS 服务商 (例如阿里云, 华为云的解析服务)</span></div></div><div><div><div>5</div></div><div><span><span>         </span></span><span>|</span></div></div><div><div><div>6</div></div><div><span><span>         </span></span><span>v</span></div></div><div><div><div>7</div></div><div><span>├── 海外用户返回 Cloudflare 分配的IP</span></div></div><div><div><div>8</div></div><div><span>└── 大陆用户返回 自定义的 Cloudflare IP</span></div></div><div><div><div>9</div></div><div><span><span>         </span></span><span>|</span></div></div><div><div><div>10</div></div><div><span><span>         </span></span><span>v</span></div></div><div><div><div>11</div></div><div><span>用户访问对应节点, 实现优化</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>至于效果是否明显, 我觉得还是挺明显的. 大部分前端文件都可以被Cloudflare Edge缓存, 最明显的效果就是静态资源和前端页面加载的更快了, 用户只需要等待Cloudflare Edge返回api请求即可.</p></section>
<section><h1>二. 如何为我的网站配置优选?<a href="#二-如何为我的网站配置优选"><span>#</span></a></h1><p>从本段开始就是正式教程了. 只要你按照教程一步一步做, 我就不信还有人能看不明白. (要是还看不明白我就真没招了)</p><p>情景带入:
我是一个新手, 我的 主域名 sin.fan 在 Cloudflare 上托管, 但是由于 Cloudflare 太卡了, 我真受不了, 所以我决定让用户从我的子域名 abab.rikka-ai.com 访问我的网站, abab.rikka-ai.com 是我要进行优选并接入到 abab.sin.fan 的域名.</p><ol>
<li>检查条件
必要条件, 没有的可以不用往下看了</li>
</ol><p>一个有支付方式的Cloudflare 账号 (据说此步骤可以卡bug跳过检查, 可自行查找解决方法)
至少一个可用的主域绑定在Cloudflare 上, 至少一个可添加多个解析的子域名(不同主域). (单域名接入请看我的另一个优选教程)
一个支持分地区解析的DNS服务商 (例: 阿里云, 腾讯云, 华为云…)</p><ol>
<li>基础配置
A. 配置回源
根据情景带入, 我的主域是 sin.fan, 回源域名为 abab.sin.fan. 所以我先为回源添加一个解析:
<img src="/uploads/fd45cdfb0ff0037298cdd072051a724c.png" alt="" />
B. 配置自定义主机名
依据情景带入和上一步添加的回源解析, 我的回源是 abab.sin.fan; 用户要访问的域名是 abab.rikka-ai.com. 根据这些信息, 进行配置:</li>
</ol><p>I. 转到配置页面
查看侧边栏, 点击自定义主机名
<img src="/uploads/3c9bb18f38f39b268bbee973b12e63e6.png" alt="" />
配置默认回源
在主页面配置回源, 回源就是你在步骤A中添加的解析. 我设置的是 abab.sin.fan. 你应该替换为你自己配置的回源.
<img src="/uploads/f8751036b9f38aec439a9ff85311a261.png" alt="" />
III. 添加自定义主机名
现在回源配置完毕, 开始添加自定义主机名.
根据情景带入, 用户应该用 abab.rikka-ai.com 访问我的网站.</p><p>首先点击 “添加自定义主机名按钮”:
<img src="/uploads/0f51e282c4f8d75199d012d3e5cde1e0.png" alt="" />
随后在新的页面中完成添加:
<img src="/uploads/3676b51c9517d2e2d9f49e7e2851c692.png" alt="" />
最后点击添加自定义主机名按钮保存设置.</p><p>至此, 你已经完成了本步骤: 基础配置.</p><ol>
<li>开始接入主机名并完成优选
还记得你在步骤 2.B.III 中配置的自定义主机名吗? 当你成功配置后, 自定义主机名主页会有
类似的卡片:
<img src="/uploads/62c91e4d548136be59bb5d50ee1bfd29.png" alt="" />
待会需要你根据卡片中的内容, 进行设置</li>
</ol><p>A.接入支持分地区解析的服务商
根据情景带入, abab.rikka-ai.com 是我要接入的域名.
这里用阿里云作为示例, 你应该根据你使用的服务商自行调整:</p><p>I. 添加域名
将 abab.rikka-ai.com 添加到阿里云中, 你应该会收到如下提示:
<img src="/uploads/db33f02f17caf8c0f91ed1152f85402b.png" alt="" />
点击 <code>TXT授权验证</code> 会打开一个新的卡片:
<img src="/uploads/525c59eaa6d70f0350a60497863b9fa6.png" alt="" />
根据卡片的描述, 我们需要给 alidnscheck.rikka-ai.com 添加TXT解析,
这里需要你转到原DNS服务商添加解析, 例如我的 rikka-ai.com 托管在 Cloudflare 上, 因此我需要到 Cloudflare 上添加解析:
<img src="/uploads/d130dbb0900d704b3110c9585792a76b.png" alt="" />
现在回到阿里云, 点击验证. 等待验证通过.</p><p>验证通过后, 进入配置页, 查看阿里云为你分配的名称服务器:
<img src="/uploads/f38b419f7ed798de0c4aa0e92ba81f12.png" alt="" />
转到原服务商, 为子域添加NS解析:
<img src="/uploads/775b5909c3ad0681c233fd950f4c7c75.png" alt="" />
添加完成后, 回到阿里云. 刷新页面后应该能看见 <code>域名的DNS信息配置正确</code> 提示.
<img src="/uploads/a96323a6bae09cded3e57d855b1c8ec5.png" alt="" />
II. 添加解析
根据自定义主机名卡片中的要求, 添加以下解析:
TXT:
<code>_acme-challenge</code>:
<img src="/uploads/351c53227f34ad285d0f442ce315dcff.png" alt="" />
<code>_cf-custom-hostname</code>:
<img src="/uploads/9f95c6e111f447ecdf9d4d3c3d4e5893.png" alt="" />
接下来是CNAME解析, 一共两条
第一条为 Cloudflare 要求你设置的回源解析, 根据情景导入, 我的回源是 abab.sin.fan, 因此我先添加一条解析请求来源为境外的 CNAME 解析:
<img src="/uploads/465914e5dfc66cec83b0130e55050c02.png" alt="" />
第二条为 为国内流量提供优化的 CNAME 解析, 因此解析请求来源设置为中国地区, 内容为任意的优选域名, 这里我推荐 <code>saas.sin.fan</code>:
<img src="/uploads/79aba80e76349a1ce2410f5fa958804a.png" alt="" />
III. 检查是否生效
现在回到 Cloudflare 的自定义主机名页面, 点击刷新. 如果两个待定均变为有效, 代表你的所有设置均是正确的! 至此本篇教程已经结束.
<img src="/uploads/9685452b67dcb7cfe071214ccf6300c3.png" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/36/</id>
      <title type="text">使用 Resend 和 Cloudflare 自建域名邮箱</title>
      <published>2026-08-13T00:00:00.000Z</published>
      <updated>2026-08-13T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/36/"/>
      <summary type="text">使用 Resend 与 Cloudflare 实现域名邮箱发信教程 免费 SMTP 替代方案</summary>
      <content type="html"><![CDATA[<section><h1>前言<a href="#前言"><span>#</span></a></h1><p>我的个人域名目前托管在 Cloudflare，并启用了其提供的「电子邮件路由（Email Routing）」服务来实现邮件转发功能。但该方案存在一个缺陷：只能接收转发邮件，无法直接通过域名邮箱发送邮件。
为了解决发件需求，我曾尝试按照 Gmail 官方教程《通过其他地址或别名发送电子邮件》配置邮件代发功能。但在实际使用过程中，发现收件方会提示「发件人未验证」警告。经排查发现，这是由于未配置 DKIM 验证机制导致的问题。</p><blockquote><p>根据 Google Workspace 的《设置 DKIM》指南文档说明：
如果您的域名提供商是 Google Domains 或  <a href="https://squarespace.com/" target="_blank">Squarespace</a>，则 Google 会自动创建 DKIM 密钥，并将其添加到网域的 DNS 记录。</p></blockquote><p>由于我的域名既非托管在 Google Domains/Squarespace，又未开通 Google Workspace，所以暂时无法使用 Google 提供的「自动创建 DKIM 密钥」服务。</p><p>现状总结：</p><p>✅ 已实现功能</p><ul>
<li>Cloudflare 域名托管</li>
<li>邮件接收及转发服务正常运作</li>
</ul><p>❌ 待解决问题</p><ul>
<li>无法通过域名邮箱直接发送邮件</li>
<li>Gmail 代发触发「未验证」警告（原因：缺失 DKIM 记录）</li>
</ul><p>咨询了 ChatGPT，又参考了多篇技术博客，最终选用 Resend 作为最终邮件发送方案，它有这些优势：</p><ul>
<li>无需自建服务器</li>
<li>API 友好</li>
<li>免费额度充足（每天 100 封，对于我这种偶尔发发邮件的场景完全够用）</li>
</ul></section>
<section><h1>前置条件<a href="#前置条件"><span>#</span></a></h1><ul>
<li>一个已接入 Cloudflare 的域名</li>
<li>一个你真实可用、能收邮件的邮箱（如 Gmail）</li>
</ul></section>
<section><h1>Cloudflare 邮箱转发设置<a href="#cloudflare-邮箱转发设置"><span>#</span></a></h1><ol>
<li>登录 Cloudflare，进入目标域名页面。</li>
<li>左侧菜单点击 “电子邮件”（Email）。</li>
<li>新建邮箱转发规则：</li>
</ol><ul>
<li>第一栏：你希望设置的邮箱名（如 admin）</li>
<li>第二栏：你实际接收邮件的邮箱（必须可用，比如 Gmail）</li>
<li>按提示完成验证</li>
</ul><ol>
<li>点击 继续，Cloudflare 会自动配置所需 DNS 记录（通常无需手动改动）。
<img src="/uploads/233ce1650be8ee38f5dff6681bb2f2ca.png" alt="" /></li>
</ol><p>验证目标地址
<img src="/uploads/c849c8ced5e582f988e54815bbf80de5.png" alt="" />
添加记录
<img src="/uploads/bb45f2a8ff55270e2539cac1f16d31ad.png" alt="" />
<img src="/uploads/263ca6310caed3e577785c153c097896.png" alt="" /></p></section>
<section><h1>注册并配置 Resend<a href="#注册并配置-resend"><span>#</span></a></h1><p>访问 <a href="https://resend.com/" target="_blank">Resend</a> 官网，注册并登录（推荐使用邮箱注册，详见：踩坑）</p><p>在 Domains 页面点击 <code>Add Domain</code> 添加域名，输入邮箱绑定的域名，并选择区域（Region），例如：<code>North Virginia (us-east-1)</code>
<img src="/uploads/b23363dc5e54ec894aa62ffbb9188619.png" alt="" /></p><p>域名添加完成后，需要配置 DNS。Resend 提供了两种配置方式：</p><ol>
<li>自动授权：点击 <code>Sign in to Cloudflare</code> 按钮登录授权后，Resend 将自动添加 DNS 记录</li>
<li>手动添加记录：参考 <a href="https://resend.com/docs/knowledge-base/cloudflare" target="_blank">官方指南</a>
<img src="/uploads/c6b347a35c11584c5a87cb25cfd43953.png" alt="" /></li>
</ol><p><img src="/uploads/9c724acab08aac8276ba302651e2d403.png" alt="" />
等待几分钟，刷新 Resend 页面，出现绿色 <code>Verified</code> 即生效
<img src="/uploads/24030f77a97897817a6e5318fa571465.png" alt="" /></p></section>
<section><h1>获取api key<a href="#获取api-key"><span>#</span></a></h1><p>API Keys 页面点击 <code>Create API Key</code> 创建并记录下密钥（格式：re_xxxxxx）</p><p><img src="/uploads/84ce782de919f9a84c7d971be9807d26.webp" alt="" /></p></section>
<section><h1>添加到Gmail<a href="#添加到gmail"><span>#</span></a></h1><p>进入<a href="https://mail.google.com/mail/u/0/#settings/accounts" target="_blank">谷歌邮箱设置</a> -&gt; 账号和导入 -&gt; 添加其他电子邮箱地址
<img src="/uploads/cfdfcb4f0586cd8c21d736289b6303b2.webp" alt="" /></p><p>添加cloudflare设置的域名邮箱
<img src="/uploads/6bc93d48026f0a41bb03c7b71ca0f169.webp" alt="" />
设置SMTP参数
SMTP 客户端配置：</p><ul>
<li>服务器：<code>smtp.resend.com</code></li>
<li>端口：<code>465</code></li>
<li>账户：<code>resend</code></li>
<li>密码：<code>API 密钥</code></li>
</ul><p><img src="/uploads/93d652a3eceda2f77aac9878b0c55243.webp" alt="" /></p></section>
<section><h1>使用与优化<a href="#使用与优化"><span>#</span></a></h1><p><strong>使用</strong>：沿用 Gmail 客户端配置模式，将发送邮件的 SMTP 服务配置改为 Resend 的配置参数。更多示例参考 <a href="https://resend.com/docs/send-with-smtp" target="_blank">官方帮助文档</a></p><p><strong>优化</strong>：使用 <a href="https://www.mail-tester.com/" target="_blank">Mail Tester</a> 测试邮件的<strong>垃圾邮件匹配度</strong>，根据建议调整相关配置。</p></section>
<section><h1>踩坑<a href="#踩坑"><span>#</span></a></h1><p>账号注册问题：使用 GitHub 直接登录后发现无法修改主邮箱，最后只能删除账号，重新使用邮箱注册。账号删除步骤：控制台 -&gt; Settings -&gt; Team -&gt; Delete Team -&gt; Delete Account</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/35/</id>
      <title type="text">解决Cloudflare Pages部署纪录过多导致无法删除项目的问题</title>
      <published>2026-07-11T00:00:00.000Z</published>
      <updated>2026-07-11T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/35/"/>
      <summary type="text">最近要在Cloudflare Pages删除项目遇到无法删除的问题 解决方法</summary>
      <content type="html"><![CDATA[<p>需要删除一个部署在 Cloudflare Pages 上的项目，但总是提示错误，错误信息是</p>
<p><code>Your project has too many deployments to be deleted, follow this guide to delete them: https://cfl.re/3CXesln。</code></p>
<section><h1>原因<a href="#原因"><span>#</span></a></h1><p>因为部署太多，导致无法删除，我测试得知，基本超过 100 次部署就会有这个问题。</p></section>
<section><h1>解决<a href="#解决"><span>#</span></a></h1><p>需要删除过的部署，让数量控制在 100 个之内即可</p><section><h2>方法一：直接手动删除<a href="#方法一直接手动删除"><span>#</span></a></h2><p>如果部署的次数比 100 多不多少，就手动删除一些，将部署的内容控制在 100 个之内即可删除项目了。</p></section><section><h2>方法二：使用 Cloudflare API 删除部署<a href="#方法二使用-cloudflare-api-删除部署"><span>#</span></a></h2><p>先要获取一些基本信息：</p><ul>
<li>Account ID：仪表盘 -&gt; 账户</li>
<li>Project Name：Pages 里这个项目的名称</li>
<li>API Token：个人资料 -&gt; API Token，注意给 Pages 的相关权限</li>
</ul><p>通过终端列出所有的部署</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>curl -X GET "https://api.cloudflare.com/client/v4/accounts/{account_id}/pages/projects/{project_name}/deployments" \</span></div></div><div><div><div>2</div></div><div><span>-H "Authorization: Bearer {api_token}"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>对应找到每个部署的 ID，然后删除（最好不要，能到这里就是因为部署量大，要批量删除）</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/{account_id}/pages/projects/{project_name}/deployments/{deployment_id}" \</span></div></div><div><div><div>2</div></div><div><span>-H "Authorization: Bearer {api_token}"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>用脚本批量删除（下面脚本只是一个参考）</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>#!/bin/bash</span></div></div><div><div><div>2</div></div><div><span>ACCOUNT_ID="your_account_id"</span></div></div><div><div><div>3</div></div><div><span>PROJECT_NAME="your_project_name"</span></div></div><div><div><div>4</div></div><div><span>API_TOKEN="your_api_token"</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span># 获取所有部署 ID</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>DEPLOYMENTS=$(curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments" \</span></div></div><div><div><div>9</div></div><div><span>-H "Authorization: Bearer $API_TOKEN" | jq -r '.result[].id')</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span># 遍历并删除每个部署</span></div></div><div><div><div>12</div></div><div><span>for DEPLOYMENT_ID in $DEPLOYMENTS; do</span></div></div><div><div><div>13</div></div><div><span><span>  </span></span><span>echo "Deleting deployment: $DEPLOYMENT_ID"</span></div></div><div><div><div>14</div></div><div><span><span>  </span></span><span>curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments/$DEPLOYMENT_ID" \</span></div></div><div><div><div>15</div></div><div><span><span>  </span></span><span>-H "Authorization: Bearer $API_TOKEN"</span></div></div><div><div><div>16</div></div><div><span><span>  </span></span><span>sleep 1  # 添加延迟以避免 API 速率限制</span></div></div><div><div><div>17</div></div><div><span>done</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>最后可以通过命令行直接删除项目，也可以去 Cloudflare 的面板去删除项目。</p></section></section>
<section><h1>参考文档<a href="#参考文档"><span>#</span></a></h1><p>Cloudflare 官方的文档：<a href="https://cfl.re/3CXesln" target="_blank">https://cfl.re/3CXesln</a></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/34/</id>
      <title type="text">Zouter HK BGP Global - Lite测评</title>
      <published>2026-06-28T00:00:00.000Z</published>
      <updated>2026-06-28T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/34/"/>
      <summary type="text">Zouter HK BGP Global - Lite 测评，包含延迟、路由、iperf3测速</summary>
      <content type="html"><![CDATA[<section><h1>测试配置<a href="#测试配置"><span>#</span></a></h1><ul>
<li>CPU 核心数：1 vCPU</li>
<li>内存：768 MB</li>
<li>硬盘空间：10 GB</li>
<li>流量：1 TB 双向流量</li>
<li>带宽速率：520 Mbps</li>
<li>IPv4 数量： 1 个</li>
<li>IPv6 数量：免费添加</li>
<li>价格：9.98CNY/月</li>
</ul><p>购买链接:<a href="https://console.zouter.io/products/cvm" target="_blank">https://console.zouter.io/products/cvm</a></p></section>
<section><h1>基本信息<a href="#基本信息"><span>#</span></a></h1><p><img src="/uploads/fa192a0889a3d766fa1d027d5fc2bae0.png" alt="" /></p></section>
<section><h1>IP质量<a href="#ip质量"><span>#</span></a></h1><p><img src="/uploads/9d63a33ca6b0734b9a6732a56d37df4a.png" alt="" /></p></section>
<section><h1>网络质量<a href="#网络质量"><span>#</span></a></h1><p><img src="/uploads/738f8cb1cda78a617ea299a004a1f908.png" alt="" /></p></section>
<section><h1>回程路由<a href="#回程路由"><span>#</span></a></h1><p><img src="/uploads/8626607a155716ebebc3e16796e3eb61.png" alt="" /></p></section>
<section><h1>iperf3测速<a href="#iperf3测速"><span>#</span></a></h1><ul>
<li>测试网络为华北移动</li>
<li>测试结果仅供参考</li>
</ul><p>晚高峰移动ipv6速度不错</p><section><h2>ipv4<a href="#ipv4"><span>#</span></a></h2><p>单线程</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[ ID] Interval           Transfer     Bitrate</span></div></div><div><div><div>2</div></div><div><span>[  5]   0.00-1.00   sec  8.97 MBytes  75.2 Mbits/sec</span></div></div><div><div><div>3</div></div><div><span>[  5]   1.00-2.00   sec  27.2 MBytes   229 Mbits/sec</span></div></div><div><div><div>4</div></div><div><span>[  5]   2.00-3.00   sec  26.7 MBytes   224 Mbits/sec</span></div></div><div><div><div>5</div></div><div><span>[  5]   3.00-4.00   sec  26.4 MBytes   221 Mbits/sec</span></div></div><div><div><div>6</div></div><div><span>[  5]   4.00-5.00   sec  26.9 MBytes   226 Mbits/sec</span></div></div><div><div><div>7</div></div><div><span>[  5]   5.00-6.00   sec  26.4 MBytes   221 Mbits/sec</span></div></div><div><div><div>8</div></div><div><span>[  5]   6.00-7.00   sec  26.8 MBytes   225 Mbits/sec</span></div></div><div><div><div>9</div></div><div><span>[  5]   7.00-8.00   sec  26.4 MBytes   221 Mbits/sec</span></div></div><div><div><div>10</div></div><div><span>[  5]   8.00-9.00   sec  26.4 MBytes   221 Mbits/sec</span></div></div><div><div><div>11</div></div><div><span>[  5]   9.00-10.00  sec  26.8 MBytes   225 Mbits/sec</span></div></div><div><div><div>12</div></div><div><span>- - - - - - - - - - - - - - - - - - - - - - - - -</span></div></div><div><div><div>13</div></div><div><span>[ ID] Interval           Transfer     Bitrate         Retr</span></div></div><div><div><div>14</div></div><div><span>[  5]   0.00-10.10  sec   252 MBytes   209 Mbits/sec    0             sender</span></div></div><div><div><div>15</div></div><div><span>[  5]   0.00-10.00  sec   249 MBytes   209 Mbits/sec                  receiver</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>多线程</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[ ID] Interval           Transfer     Bitrate         Retr</span></div></div><div><div><div>2</div></div><div><span>[  5]   0.00-10.14  sec   134 MBytes   111 Mbits/sec  6135             sender</span></div></div><div><div><div>3</div></div><div><span>[  5]   0.00-10.00  sec   131 MBytes   110 Mbits/sec                  receiver</span></div></div><div><div><div>4</div></div><div><span>[  7]   0.00-10.14  sec   122 MBytes   101 Mbits/sec  4135             sender</span></div></div><div><div><div>5</div></div><div><span>[  7]   0.00-10.00  sec   119 MBytes  99.4 Mbits/sec                  receiver</span></div></div><div><div><div>6</div></div><div><span>[  9]   0.00-10.14  sec   118 MBytes  97.9 Mbits/sec  3814             sender</span></div></div><div><div><div>7</div></div><div><span>[  9]   0.00-10.00  sec   115 MBytes  96.6 Mbits/sec                  receiver</span></div></div><div><div><div>8</div></div><div><span>[ 11]   0.00-10.14  sec   126 MBytes   104 Mbits/sec  4108             sender</span></div></div><div><div><div>9</div></div><div><span>[ 11]   0.00-10.00  sec   123 MBytes   103 Mbits/sec                  receiver</span></div></div><div><div><div>10</div></div><div><span>[ 13]   0.00-10.14  sec   126 MBytes   104 Mbits/sec  5283             sender</span></div></div><div><div><div>11</div></div><div><span>[ 13]   0.00-10.00  sec   122 MBytes   102 Mbits/sec                  receiver</span></div></div><div><div><div>12</div></div><div><span>[SUM]   0.00-10.14  sec   626 MBytes   518 Mbits/sec  23475             sender</span></div></div><div><div><div>13</div></div><div><span>[SUM]   0.00-10.00  sec   610 MBytes   512 Mbits/sec                  receiver</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h2>ipv6<a href="#ipv6"><span>#</span></a></h2><p>单线程</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[ ID] Interval           Transfer     Bitrate</span></div></div><div><div><div>2</div></div><div><span>[  5]   0.00-1.00   sec  20.1 MBytes   169 Mbits/sec</span></div></div><div><div><div>3</div></div><div><span>[  5]   1.00-2.00   sec  37.4 MBytes   313 Mbits/sec</span></div></div><div><div><div>4</div></div><div><span>[  5]   2.00-3.00   sec  37.1 MBytes   311 Mbits/sec</span></div></div><div><div><div>5</div></div><div><span>[  5]   3.00-4.00   sec  37.2 MBytes   312 Mbits/sec</span></div></div><div><div><div>6</div></div><div><span>[  5]   4.00-5.00   sec  37.1 MBytes   311 Mbits/sec</span></div></div><div><div><div>7</div></div><div><span>[  5]   5.00-6.00   sec  37.5 MBytes   314 Mbits/sec</span></div></div><div><div><div>8</div></div><div><span>[  5]   6.00-7.00   sec  37.6 MBytes   315 Mbits/sec</span></div></div><div><div><div>9</div></div><div><span>[  5]   7.00-8.00   sec  37.8 MBytes   317 Mbits/sec</span></div></div><div><div><div>10</div></div><div><span>[  5]   8.00-9.00   sec  37.2 MBytes   312 Mbits/sec</span></div></div><div><div><div>11</div></div><div><span>[  5]   9.00-10.00  sec  37.6 MBytes   315 Mbits/sec</span></div></div><div><div><div>12</div></div><div><span>- - - - - - - - - - - - - - - - - - - - - - - - -</span></div></div><div><div><div>13</div></div><div><span>[ ID] Interval           Transfer     Bitrate         Retr</span></div></div><div><div><div>14</div></div><div><span>[  5]   0.00-10.07  sec   360 MBytes   300 Mbits/sec    0             sender</span></div></div><div><div><div>15</div></div><div><span>[  5]   0.00-10.00  sec   356 MBytes   299 Mbits/sec                  receiver</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>多线程</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[ ID] Interval           Transfer     Bitrate         Retr</span></div></div><div><div><div>2</div></div><div><span>[  5]   0.00-10.09  sec   141 MBytes   117 Mbits/sec  16512             sender</span></div></div><div><div><div>3</div></div><div><span>[  5]   0.00-10.00  sec   137 MBytes   115 Mbits/sec                  receiver</span></div></div><div><div><div>4</div></div><div><span>[  7]   0.00-10.09  sec   123 MBytes   102 Mbits/sec  8973             sender</span></div></div><div><div><div>5</div></div><div><span>[  7]   0.00-10.00  sec   120 MBytes   100 Mbits/sec                  receiver</span></div></div><div><div><div>6</div></div><div><span>[  9]   0.00-10.09  sec   125 MBytes   104 Mbits/sec  11980             sender</span></div></div><div><div><div>7</div></div><div><span>[  9]   0.00-10.00  sec   122 MBytes   102 Mbits/sec                  receiver</span></div></div><div><div><div>8</div></div><div><span>[ 11]   0.00-10.09  sec   120 MBytes   100 Mbits/sec  10412             sender</span></div></div><div><div><div>9</div></div><div><span>[ 11]   0.00-10.00  sec   117 MBytes  98.4 Mbits/sec                  receiver</span></div></div><div><div><div>10</div></div><div><span>[ 13]   0.00-10.09  sec   129 MBytes   107 Mbits/sec  16134             sender</span></div></div><div><div><div>11</div></div><div><span>[ 13]   0.00-10.00  sec   125 MBytes   105 Mbits/sec                  receiver</span></div></div><div><div><div>12</div></div><div><span>[SUM]   0.00-10.09  sec   639 MBytes   531 Mbits/sec  64011             sender</span></div></div><div><div><div>13</div></div><div><span>[SUM]   0.00-10.00  sec   621 MBytes   521 Mbits/sec                  receiver</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/33/</id>
      <title type="text">通过 acme.sh 轻松申请 Let&apos;s Encrypt 通配符证书</title>
      <published>2026-06-27T02:00:00.000Z</published>
      <updated>2026-06-27T02:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/33/"/>
      <summary type="text">通过acme.sh申请通配符证书</summary>
      <content type="html"><![CDATA[<p>在网站部署过程中，HTTPS 已经成为标配。如果拥有多个子域名，例如：</p>
<p><code>blog.example.com</code> <code>api.example.com</code> <code>cdn.example.com </code> <code>panel.example.com</code></p>
<p>那么申请一张 <strong>通配符证书（Wildcard Certificate）</strong> 会更加方便。</p>
<p>通过 <code>*.example.com</code> 可以覆盖所有一级子域名，避免为每个子域名单独申请证书。</p>
<p>本文将介绍如何使用 <strong>acme.sh</strong> 免费申请和自动续期通配符 SSL 证书。</p>
<section><h2>什么是 acme.sh<a href="#什么是-acmesh"><span>#</span></a></h2><p>acme.sh 是一个纯 Shell 编写的 ACME 客户端，具有以下特点：</p><ul>
<li>轻量级，无需 Python</li>
<li>支持 Linux、macOS、BSD</li>
<li>支持 Let’s Encrypt、ZeroSSL 等 CA</li>
<li>支持自动续期</li>
<li>支持数十种 DNS API</li>
</ul><p>项目地址：
<a href="https://github.com/acmesh-official/acme.sh" target="_blank">https://github.com/acmesh-official/acme.sh</a></p></section>
<section><h2>为什么通配符证书必须使用 DNS 验证<a href="#为什么通配符证书必须使用-dns-验证"><span>#</span></a></h2><p>普通证书可以通过 HTTP 验证：</p><p><code>example.com</code>  <code>www.example.com</code></p><p>但是通配符证书：</p><p><code>*.example.com</code></p><p>只能通过 DNS TXT 记录验证。</p><p>因此以下方式无法申请通配符证书：</p><p><code>--standalone</code></p><p><code>--webroot</code></p><p>必须使用：</p><p><code>--dns</code></p></section>
<section><h2>安装 acme.sh<a href="#安装-acmesh"><span>#</span></a></h2><p>执行官方安装脚本：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>curl</span><span> </span><span>https://get.acme.sh</span><span> | </span><span>sh</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>安装完成后重新加载环境变量：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>source</span><span> </span><span>~/.bashrc</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>检查版本：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>acme.sh</span><span> </span><span>--version</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>注册账户<a href="#注册账户"><span>#</span></a></h2><p>推荐使用邮箱注册：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>acme.sh</span><span> </span><span>--register-account</span><span> </span><span>-m</span><span> </span><span>your@email.com</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>切换默认 CA 为 ZeroSSL：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>acme.sh</span><span> </span><span>--set-default-ca</span><span> </span><span>--server</span><span> </span><span>zerossl</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果更喜欢 Let’s Encrypt：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>acme.sh</span><span> </span><span>--set-default-ca</span><span> </span><span>--server</span><span> </span><span>letsencrypt</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>Cloudflare DNS 自动验证<a href="#cloudflare-dns-自动验证"><span>#</span></a></h2><p>以 Cloudflare 为例。</p><section><h3>创建 API Token<a href="#创建-api-token"><span>#</span></a></h3><p>进入 Cloudflare 控制台：</p><p><code>My Profile → API Tokens → Create Token</code></p><p>授予以下权限：</p><p><code>Zone → DNS → Edit</code>
<code>Zone → Zone → Read</code></p><p>保存 Token。</p></section><section><h3>配置环境变量<a href="#配置环境变量"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>export</span><span> </span><span>CF_Token</span><span>=</span><span>"xxxxxxxxxxxxxxxx"</span></div></div><div><div><div>2</div></div><div><span>export</span><span> </span><span>CF_Account_ID</span><span>=</span><span>"xxxxxxxxxxxxxxxx"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>为了避免重启后失效，可写入：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>~/.bashrc</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>或者：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>~/.profile</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>申请通配符证书<a href="#申请通配符证书"><span>#</span></a></h2><p>执行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>acme.sh</span><span> </span><span>--issue</span><span> </span><span>\</span></div></div><div><div><div>2</div></div><div><span>  </span><span>--dns</span><span> </span><span>dns_cf</span><span> </span><span>\</span></div></div><div><div><div>3</div></div><div><span>  </span><span>-d</span><span> </span><span>example.com</span><span> </span><span>\</span></div></div><div><div><div>4</div></div><div><span>  </span><span>-d</span><span> </span><span>'*.example.com'</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>参数说明：</p><ul>
<li>
<p>-d example.com
覆盖根域名</p>
</li>
<li>
<p>-d ‘*.example.com’
覆盖所有一级子域名</p>
</li>
<li>
<p>—dns dns_cf
使用 Cloudflare DNS API 验证</p>
</li>
</ul><p>申请成功后会显示：</p><p><code>Your cert is in: ~/.acme.sh/example.com/</code></p><p>目录结构类似：</p><p><code>example.com.cer</code>
<code>example.com.key</code>
<code>fullchain.cer</code>
<code>ca.cer</code></p></section>
<section><h2>安装证书<a href="#安装证书"><span>#</span></a></h2><p>例如安装到 Nginx：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>mkdir</span><span> </span><span>-p</span><span> </span><span>/etc/nginx/ssl</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>执行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>acme.sh</span><span> </span><span>--install-cert</span><span> </span><span>-d</span><span> </span><span>example.com</span><span> </span><span>\</span></div></div><div><div><div>2</div></div><div><span>  </span><span>--key-file</span><span>       </span><span>/etc/nginx/ssl/example.com.key</span><span> </span><span>\</span></div></div><div><div><div>3</div></div><div><span>  </span><span>--fullchain-file</span><span> </span><span>/etc/nginx/ssl/example.com.pem</span><span> </span><span>\</span></div></div><div><div><div>4</div></div><div><span>  </span><span>--reloadcmd</span><span> </span><span>"systemctl reload nginx"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>这样在证书续期后会自动重载 Nginx。</p></section>
<section><h2>Nginx 配置示例<a href="#nginx-配置示例"><span>#</span></a></h2><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>server</span><span> {</span></div></div><div><div><div>2</div></div><div><span>   <span> </span></span><span>listen </span><span>443</span><span> ssl http2;</span></div></div><div><div><div>3</div></div><div><span>   <span> </span></span><span>server_name </span><span>example.com *.example.com;</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>   <span> </span></span><span>ssl_certificate </span><span>    /etc/nginx/ssl/example.com.pem;</span></div></div><div><div><div>6</div></div><div><span>   <span> </span></span><span>ssl_certificate_key </span><span>/etc/nginx/ssl/example.com.key;</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>    </span><span>location</span><span> / {</span></div></div><div><div><div>9</div></div><div><span>       <span> </span></span><span>root </span><span>/var/www/html;</span></div></div><div><div><div>10</div></div><div><span>       <span> </span></span><span>index </span><span>index.html;</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>12</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>检查配置：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nginx</span><span> </span><span>-t</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重载：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>systemctl</span><span> </span><span>reload</span><span> </span><span>nginx</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>自动续期<a href="#自动续期"><span>#</span></a></h2><p>acme.sh 安装后会自动创建定时任务。</p><p>查看：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>crontab</span><span> </span><span>-l</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>手动测试续期：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>acme.sh</span><span> </span><span>--renew</span><span> </span><span>-d</span><span> </span><span>example.com</span><span> </span><span>--force</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>查看所有证书：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>acme.sh</span><span> </span><span>--list</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>常见问题<a href="#常见问题"><span>#</span></a></h2><section><h3>申请失败：Invalid DNS Record<a href="#申请失败invalid-dns-record"><span>#</span></a></h3><p>原因：</p><ul>
<li>API Token 权限不足</li>
<li>域名解析未托管到 Cloudflare</li>
<li>DNS TXT 记录未及时同步</li>
</ul><p>建议等待几分钟后重试。</p></section><section><h3>只申请了 *.example.com<a href="#只申请了-examplecom"><span>#</span></a></h3><p>如果命令只有：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>-d</span><span> </span><span>'*.example.com'</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>则证书不会覆盖：</p><p><code>example.com</code></p><p>正确写法：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>-d</span><span> </span><span>example.com</span></div></div><div><div><div>2</div></div><div><span>-d</span><span> </span><span>'*.example.com'</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>查看当前 CA<a href="#查看当前-ca"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>acme.sh</span><span> </span><span>--info</span><span> </span><span>-d</span><span> </span><span>example.com</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>输出类似：</p><p><code>CA: https://acme.zerossl.com/v2/DV90</code></p></section></section>
<section><h2>总结<a href="#总结"><span>#</span></a></h2><p>相比传统的证书申请方式，acme.sh 具有轻量、稳定、自动续期等优势。结合 Cloudflare、腾讯云 DNSPod、阿里云 DNS 等 DNS API，可以实现全自动申请和续期通配符证书。</p><p>推荐组合：</p><p><code>acme.sh + Cloudflare DNS + ZeroSSL</code></p><p>或者：</p><p><code>acme.sh + Cloudflare DNS + Let's Encrypt</code></p><p>基本可以实现零人工干预的 HTTPS 证书管理。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/32/</id>
      <title type="text">OpenAI Codex安装配置中转API超详细教程 AI编程工具Codex实战配置文件常见错误总结</title>
      <published>2026-06-17T07:30:00.000Z</published>
      <updated>2026-06-17T07:30:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/32/"/>
      <summary type="text">安装，配置使用codex中转站完整教程。</summary>
      <content type="html"><![CDATA[<p>在现代软件开发中，<strong>代码规模越来越大、技术栈越来越复杂</strong>，开发者花在“理解代码、改动代码、反复验证”的时间，往往远多于真正写新功能的时间。为了解决这一问题，<strong>Codex</strong> 应运而生。</p>
<p><strong>Codex（Codex CLI）</strong> 是一个运行在终端中的 AI 编程助手。与普通聊天式 AI 不同，它可以直接读取你的项目代码、理解文件结构，在你的确认下修改源码、执行命令，并一步步完成真实的开发任务。你可以把它理解为一个“懂代码、会动手、但始终受你控制的编程搭档”。</p>
<p>在本文中，你将从零开始学习 Codex 的<strong>安装、配置与实际使用方法</strong>，包括如何接入第三方 API、如何在终端和 VS Code 中高效使用，以及遇到常见问题时如何快速排查。即使你从未使用过类似工具，也可以按照本文一步步完成配置，并真正把 Codex 用到你的日常开发中。</p>
<section><h2><strong>安装前准备（所有系统通用）</strong><a href="#安装前准备所有系统通用"><span>#</span></a></h2><ul>
<li>
<p><strong>Node.js 22+</strong></p>
</li>
<li>
<p><strong>npm 10+</strong></p>
</li>
<li>
<p>稳定网络连接</p>
</li>
</ul><blockquote><p>Windows 额外注意：OpenAI 官方也提到 Windows 支持偏“实验性”，更稳的方式是用 WSL 环境；</p></blockquote></section>
<section><h2><strong>安装 Codex CLI</strong><a href="#安装-codex-cli"><span>#</span></a></h2><section><h3><strong>Windows</strong><a href="#windows"><span>#</span></a></h3><ol>
<li>
<p>安装 <strong>Git Bash</strong>（按安装向导一直下一步即可）。</p>
</li>
<li>
<p>安装 Node.js（建议装最新 LTS）。</p>
</li>
<li>
<p>安装 Codex CLI（在 CMD / PowerShell 里执行）：</p>
</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>npm</span><span> </span><span>install</span><span> </span><span>-g</span><span> </span><span>@openai/codex</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>验证：</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>codex</span><span> </span><span>--version</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3><strong>macOS</strong><a href="#macos"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>npm</span><span> </span><span>install</span><span> </span><span>-g</span><span> </span><span>@openai/codex</span></div></div><div><div><div>2</div></div><div><span>codex</span><span> </span><span>--version</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>必要时加 sudo。</p><p>OpenAI 官方也提供了 Homebrew 安装方式（可选）：brew install codex。</p></section><section><h3><strong>Linux</strong><a href="#linux"><span>#</span></a></h3><p>1）先装 Node.js / npm（不同发行版命令不同）。</p><p>2）安装与验证：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>npm</span><span> </span><span>install</span><span> </span><span>-g</span><span> </span><span>@openai/codex</span></div></div><div><div><div>2</div></div><div><span>codex</span><span> </span><span>--version</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2><strong>配置中转API作为第三方API</strong><a href="#配置中转api作为第三方api"><span>#</span></a></h2><p>Codex CLI 会读取你的配置文件：一般在 ~/.codex/（Windows 也是用户目录下的 .codex）。创建两份文件：</p><ul>
<li>
<p>auth.json：放密钥</p>
</li>
<li>
<p>config.toml：放模型与网关配置</p>
</li>
</ul><section><h3><strong>Windows 配置路径与文件</strong><a href="#windows-配置路径与文件"><span>#</span></a></h3><p>1）进入用户目录的 .codex（示例：C:\Users\Administrator.codex）。如果看不到，先在资源管理器开启“显示隐藏项目”。</p><p><img src="/uploads/69831685d9c88c98816d0434.png" alt="" /></p><p>2）没有就手动创建 .codex 文件夹，并创建：</p><ul>
<li>
<p>auth.json</p>
</li>
<li>
<p>config.toml</p>
</li>
</ul><p><img src="/uploads/69831ac3d9c88c98816d088e.png" alt="" /></p><p><strong>auth.json（把 sk-xxx 换成你的中转API Key）</strong></p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>{</span></div></div><div><div><div>2</div></div><div><span>  </span><span>"OPENAI_API_KEY"</span><span>:</span><span> </span><span>"sk-xxx"</span></div></div><div><div><div>3</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p><strong>config.toml（把 base_url 换成你的中转地址）</strong></p><div><div><div><figure><figcaption><span></span><span>Terminal window</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>model_provider</span><span> </span><span>=</span><span> </span><span>"OpenAI"</span></div></div><div><div><div>2</div></div><div><span>model</span><span> </span><span>=</span><span> </span><span>"gpt-5.5"</span></div></div><div><div><div>3</div></div><div><span>review_model</span><span> </span><span>=</span><span> </span><span>"gpt-5.5"</span></div></div><div><div><div>4</div></div><div><span>model_reasoning_effort</span><span> </span><span>=</span><span> </span><span>"xhigh"</span></div></div><div><div><div>5</div></div><div><span>disable_response_storage</span><span> </span><span>=</span><span> </span><span>true</span></div></div><div><div><div>6</div></div><div><span>network_access</span><span> </span><span>=</span><span> </span><span>"enabled"</span></div></div><div><div><div>7</div></div><div><span>windows_wsl_setup_acknowledged</span><span> </span><span>=</span><span> </span><span>true</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>[model_providers.OpenAI]</span></div></div><div><div><div>10</div></div><div><span>name</span><span> </span><span>=</span><span> </span><span>"OpenAI"</span></div></div><div><div><div>11</div></div><div><span>base_url</span><span> </span><span>=</span><span> </span><span>"https://api.whatai.cc"</span></div></div><div><div><div>12</div></div><div><span>wire_api</span><span> </span><span>=</span><span> </span><span>"responses"</span></div></div><div><div><div>13</div></div><div><span>requires_openai_auth</span><span> </span><span>=</span><span> </span><span>true</span></div></div><div><div><div>14</div></div><div>
</div></div><div><div><div>15</div></div><div><span>[features]</span></div></div><div><div><div>16</div></div><div><span>goals</span><span> </span><span>=</span><span> </span><span>true</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h3><strong>macOS / Linux 配置命令</strong><a href="#macos--linux-配置命令"><span>#</span></a></h3><p>创建文件：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>mkdir</span><span> </span><span>-p</span><span> </span><span>~/.codex</span></div></div><div><div><div>2</div></div><div><span>touch</span><span> </span><span>~/.codex/auth.json</span></div></div><div><div><div>3</div></div><div><span>touch</span><span> </span><span>~/.codex/config.toml</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>编辑 auth.json（粘贴同样的 JSON）与 config.toml。<strong>要保证上下一致</strong>：model_provider = “xxx” 要和 [model_providers.xxx] 的段名一致。</p></section><section><h3><strong>配置改完一定要“重启终端”</strong><a href="#配置改完一定要重启终端"><span>#</span></a></h3><p><strong>关闭终端/重启终端后再启动 codex</strong>，让配置生效。</p></section></section>
<section><h2><strong>启动与基本使用（终端）</strong><a href="#启动与基本使用终端"><span>#</span></a></h2><p>进入你的项目目录：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>cd</span><span> </span><span>your-project-folder</span></div></div><div><div><div>2</div></div><div><span>codex</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>你也可以直接在命令后跟一个初始任务，例如让它先解释仓库结构：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>codex</span><span> </span><span>"Explain this codebase to me"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p><img src="/uploads/69831a5ed9c88c98816d0670.png" alt="" /></p><section><h3><strong>推荐的使用习惯（很实用）</strong><a href="#推荐的使用习惯很实用"><span>#</span></a></h3><ul>
<li>
<p><strong>先让它“读项目、给计划”</strong>：比如“先扫描项目结构，列出你会修改哪些文件，再开始动手”。</p>
</li>
<li>
<p><strong>小步提交</strong>：每次只让它做一件事（修一个 bug / 加一个功能点）。</p>
</li>
<li>
<p><strong>用 Git 做检查点</strong>：Codex 会改文件，OpenAI 官方建议任务前后做 git checkpoint，方便回滚。</p>
</li>
</ul></section></section>
<section><h2><strong>交互技巧：Slash 命令与快捷操作</strong><a href="#交互技巧slash-命令与快捷操作"><span>#</span></a></h2><p>在 Codex 交互界面里，输入 / 可以打开 slash 命令菜单，用来切换模型、调整权限、总结对话等。</p><p>一些常见命令（示例来源于体验分享与官方说明思路一致）：</p><ul>
<li>
<p>/status：查看当前会话配置/状态</p>
</li>
<li>
<p>/new：开新会话（清空上下文）</p>
</li>
<li>
<p>/model：切换模型</p>
</li>
<li>
<p>/init：初始化一些模板/设置（视版本而定）</p>
</li>
</ul><p>另外，很多版本支持用 ! 直接跑终端命令（例如 !git status / !ls），能减少你“让模型代跑命令”的成本。</p><hr /></section>
<section><h2><strong>VS Code插件Codex</strong><a href="#vs-code插件codex"><span>#</span></a></h2><p>流程是：<strong>完成上述 .codex 配置后</strong>，在 VS Code 扩展商店搜索并安装 codex，安装后会出现在侧边栏。</p><p>OpenAI 官方 quickstart 也提到：安装后 Codex 面板会出现在侧边栏（有时在折叠区）。</p><p><img src="/uploads/698317aad9c88c98816d04bb.png" alt="" /></p></section>
<section><h2><strong>常见问题（FAQ）与排查清单</strong><a href="#常见问题faq与排查清单"><span>#</span></a></h2><section><h3><strong>Q1：codex: command not found 找不到命令</strong><a href="#q1codex-command-not-found-找不到命令"><span>#</span></a></h3><p><strong>原因常见是 npm 全局安装路径没加入 PATH</strong>，或安装没成功。</p><ul>
<li>
<p>先运行 codex —version 验证是否安装成功。</p>
</li>
<li>
<p>重新安装：npm install -g @openai/codex</p>
</li>
</ul></section><section><h3><strong>Q2：Linux/macOS 安装时报权限错误（EACCES）</strong><a href="#q2linuxmacos-安装时报权限错误eacces"><span>#</span></a></h3><p>用 sudo npm install -g @openai/codex（Linux 写法）。</p><p>（更长期的做法是把 npm 全局目录改到用户目录，但这属于通用 Node/npm 运维，不是 Codex 专属。）</p></section><section><h3><strong>Q3：Windows 找不到 <strong><strong>.codex</strong></strong>文件夹</strong><a href="#q3windows-找不到-codex文件夹"><span>#</span></a></h3><p>提醒：需要在资源管理器里打开“显示隐藏的项目”，因为 .codex 是隐藏目录风格。</p></section><section><h3><strong>Q4：配置了 Key 但仍提示未认证 / 401</strong><a href="#q4配置了-key-但仍提示未认证--401"><span>#</span></a></h3><p>确认两点：</p><p>1）auth.json 内容必须是：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>{</span><span>"OPENAI_API_KEY"</span><span>:</span><span> </span><span>"sk-xxx"}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>2）<strong>重启终端</strong>后再运行 codex。</p></section><section><h3><strong>Q5：一直连不上 / 超时 / 网络错误</strong><a href="#q5一直连不上--超时--网络错误"><span>#</span></a></h3><ul>
<li>
<p>检查 base_url 是否完全一致</p>
</li>
<li>
<p>公司/校园网络可能需要代理或放行相关域名（这是网络环境问题，不是 Codex 本身）。</p>
</li>
</ul></section><section><h3><strong>Q6：模型不可用 / 报 model not found</strong><a href="#q6模型不可用--报-model-not-found"><span>#</span></a></h3><p>先用提供的模型名：gpt-5.2-codex。</p><p>如果你在中转API模型列表看到的名称不同，就要以实际可用模型为准（模型名不匹配会直接失败）。</p></section><section><h3><strong>Q7：<strong><strong>config.toml</strong></strong>写了但好像没生效</strong><a href="#q7configtoml写了但好像没生效"><span>#</span></a></h3><p>最常见原因：</p><ul>
<li>
<p>model_provider = “X” 和 [model_providers.X] <strong>名字不一致</strong>（比如一个写 whatai，另一个写 api111）。whatai的不同系统示例里名字确实不一样，所以你改的时候要保持一致。</p>
</li>
<li>
<p>忘记重启终端。</p>
</li>
</ul></section><section><h3><strong>Q8：怎么升级 / 更新 Codex CLI？</strong><a href="#q8怎么升级--更新-codex-cli"><span>#</span></a></h3><p>OpenAI 官方给的升级方式是：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>npm</span><span> </span><span>i</span><span> </span><span>-g</span><span> </span><span>@openai/codex@latest</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3><strong>Q9：有哪些命令行参数/高级配置可以查？</strong><a href="#q9有哪些命令行参数高级配置可以查"><span>#</span></a></h3><ul>
<li>
<p>命令与 flag 参考：官方提供了“command line options”参考页，并说明 CLI 默认从 ~/.codex/config.toml 读取配置，也支持用 -c key=value 临时覆盖。</p>
</li>
<li>
<p>配置字段的完整参考：官方也有 config reference 页面。</p>
</li>
</ul></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/31/</id>
      <title type="text">永久免费kdns.fr域名 无需续费 支持绑定至CloudFlare</title>
      <published>2026-06-16T06:10:00.000Z</published>
      <updated>2026-06-16T06:10:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/31/"/>
      <summary type="text">免费注册kdns.fr域名、无需绑卡、无需续费，支持绑定至CloudFlare。</summary>
      <content type="html"><![CDATA[<section><h2>注册账号<a href="#注册账号"><span>#</span></a></h2><p>点击<a href="https://dashboard.katabump.com/auth/register" target="_blank">https://dashboard.katabump.com/auth/register</a>注册账号</p><p><img src="/uploads/1781009133870_IMG_4207.webp" alt="" /></p></section>
<section><h2>注册域名<a href="#注册域名"><span>#</span></a></h2><p>打开<a href="https://dashboard.katabump.com/domains/create" target="_blank">https://dashboard.katabump.com/domains/create</a>注册自己想要的域名</p><p><img src="/uploads/1781065828995_IMG_4213.webp" alt="" /></p></section>
<section><h2>托管至CloudFlare<a href="#托管至cloudflare"><span>#</span></a></h2><p>在CloudFlare添加自己注册的域名</p><p><img src="/uploads/1781009378827_IMG_4208.webp" alt="" /></p><p><img src="/uploads/1781009385380_IMG_4209.webp" alt="" /></p><p>复制ns记录添加过去并保存</p><p><img src="/uploads/1781009130683_IMG_4204.webp" alt="" /></p><p><img src="/uploads/1781009133528_IMG_4205.webp" alt="" /></p><p>最后更新名称服务器等待解析完成</p><p><img src="/uploads/1781009139142_IMG_4206.webp" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/30/</id>
      <title type="text">Linux VPS 使用 tc 实现端口限速教程（支持动态解除限速）</title>
      <published>2026-06-07T01:30:00.000Z</published>
      <updated>2026-06-07T01:30:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/30/"/>
      <summary type="text">详细讲解 Linux VPS 使用 tc 实现端口限速、流量控制、自动限速与解除限速的方法，支持 Xray、Hysteria、Docker 等服务。</summary>
      <content type="html"><![CDATA[<p>很多时候，我们会遇到这些需求：</p>
<ul>
<li>某个节点被刷流量</li>
<li>某个端口占满带宽</li>
<li>想限制单个服务速度</li>
<li>流量达到一定值后自动限速</li>
<li>高峰期自动限速保护 VPS</li>
</ul>
<p>Linux 自带的 <code>tc</code>（Traffic Control）就可以实现这些功能。</p>
<p>相比 <code>wondershaper</code> 这种整网卡限速工具，<code>tc</code> 更强：</p>
<ul>
<li>支持端口限速</li>
<li>支持 IP 限速</li>
<li>支持协议限速</li>
<li>支持动态控制</li>
<li>性能损耗极低</li>
</ul>
<p>这篇文章记录一下 VPS 上常用的 tc 限速玩法。</p>
<section><h2>一、什么是 tc<a href="#一什么是-tc"><span>#</span></a></h2><p><code>tc</code> 是 Linux 内核自带的流量控制工具。</p><p>它属于：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iproute2</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>套件的一部分。</p><p>Debian / Ubuntu 一般默认自带。</p><p>检查：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tc</span><span> </span><span>-V</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果没安装：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>update</span></div></div><div><div><div>2</div></div><div><span>apt</span><span> </span><span>install</span><span> </span><span>iproute2</span><span> </span><span>-y</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>二、tc 基本原理<a href="#二tc-基本原理"><span>#</span></a></h2><p>tc 的工作方式：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables 标记流量</span></div></div><div><div><div>2</div></div><div><span><span>        </span></span><span>↓</span></div></div><div><div><div>3</div></div><div><span>tc 根据 mark 分类</span></div></div><div><div><div>4</div></div><div><span><span>        </span></span><span>↓</span></div></div><div><div><div>5</div></div><div><span>限制对应流量速度</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>简单理解：</p><ul>
<li>iptables 负责“识别流量”</li>
<li>tc 负责“限速”</li>
</ul></section>
<section><h2>三、限制单个端口速度<a href="#三限制单个端口速度"><span>#</span></a></h2><p>这里以：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>3001 端口</span></div></div><div><div><div>2</div></div><div><span>限制为 5Mbps</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>为例。</p><section><h3>1. 添加根队列<a href="#1-添加根队列"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tc</span><span> </span><span>qdisc</span><span> </span><span>add</span><span> </span><span>dev</span><span> </span><span>eth0</span><span> </span><span>root</span><span> </span><span>handle</span><span> </span><span>1:</span><span> </span><span>htb</span><span> </span><span>default</span><span> </span><span>30</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>说明：</p><ul>
<li><code>eth0</code> 为网卡</li>
<li><code>htb</code> 为限速队列</li>
<li><code>1:</code> 为主队列 ID</li>
</ul></section><section><h3>2. 设置总带宽<a href="#2-设置总带宽"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tc</span><span> </span><span>class</span><span> </span><span>add</span><span> </span><span>dev</span><span> </span><span>eth0</span><span> </span><span>parent</span><span> </span><span>1:</span><span> </span><span>classid</span><span> </span><span>1:1</span><span> </span><span>htb</span><span> </span><span>rate</span><span> </span><span>1000mbit</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>这里：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>1000mbit</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>只是总带宽上限。</p><p>可以改成你 VPS 实际带宽。</p></section><section><h3>3. 创建限速规则<a href="#3-创建限速规则"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tc</span><span> </span><span>class</span><span> </span><span>add</span><span> </span><span>dev</span><span> </span><span>eth0</span><span> </span><span>parent</span><span> </span><span>1:1</span><span> </span><span>classid</span><span> </span><span>1:10</span><span> </span><span>htb</span><span> </span><span>rate</span><span> </span><span>5mbit</span><span> </span><span>ceil</span><span> </span><span>5mbit</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>说明：</p><ul>
<li><code>1:10</code> 为限速分类</li>
<li><code>5mbit</code> 为最大速度</li>
<li>rate（保证带宽）</li>
<li>ceil（峰值带宽）</li>
</ul></section><section><h3>4. 使用 iptables 标记端口<a href="#4-使用-iptables-标记端口"><span>#</span></a></h3><p>ipv4标记</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-A</span><span> </span><span>OUTPUT</span><span> </span><span>-p</span><span> </span><span>tcp</span><span> </span><span>--sport</span><span> </span><span>3001</span><span> </span><span>-j</span><span> </span><span>MARK</span><span> </span><span>--set-mark</span><span> </span><span>10</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>ipv6标记</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip6tables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-A</span><span> </span><span>OUTPUT</span><span> </span><span>-p</span><span> </span><span>tcp</span><span> </span><span>--sport</span><span> </span><span>3001</span><span> </span><span>-j</span><span> </span><span>MARK</span><span> </span><span>--set-mark</span><span> </span><span>10</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>这里：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>--sport 3001</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>表示：</p><p>限制 VPS 发出的 3001 端口流量。</p><p>适用于：</p><ul>
<li>节点下载限速</li>
<li>Web 服务限速</li>
<li>用户下行限速</li>
</ul><section><h4>设置某个端口ip连接数<a href="#设置某个端口ip连接数"><span>#</span></a></h4><p>如果你的 24014 是 TCP 端口，可以直接用 iptables 限制：</p><section><h5>ipv4<a href="#ipv4"><span>#</span></a></h5><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-I</span><span> </span><span>INPUT</span><span> </span><span>-p</span><span> </span><span>tcp</span><span> </span><span>--syn</span><span> </span><span>--dport</span><span> </span><span>24014</span><span> </span><span>-m</span><span> </span><span>connlimit</span><span> </span><span>--connlimit-above</span><span> </span><span>20</span><span> </span><span>--connlimit-mask</span><span> </span><span>32</span><span> </span><span>-j</span><span> </span><span>REJECT</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>ipv6<a href="#ipv6"><span>#</span></a></h5><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip6tables</span><span> </span><span>-I</span><span> </span><span>INPUT</span><span> </span><span>-p</span><span> </span><span>tcp</span><span> </span><span>--syn</span><span> </span><span>--dport</span><span> </span><span>24014</span><span> </span><span>-m</span><span> </span><span>connlimit</span><span> </span><span>--connlimit-above</span><span> </span><span>20</span><span> </span><span>--connlimit-mask</span><span> </span><span>128</span><span> </span><span>-j</span><span> </span><span>DROP</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>含义：</p><ul>
<li>24014端口</li>
<li>每个来源 IP 最多 20 个并发连接</li>
<li>超过立即拒绝</li>
</ul><p>这是 connlimit 模块的标准用法。</p></section></section><section><h4>按规则编号删除<a href="#按规则编号删除"><span>#</span></a></h4><p>先查看规则编号：</p><section><h5>ipv4<a href="#ipv4-1"><span>#</span></a></h5><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-L</span><span> </span><span>INPUT</span><span> </span><span>--line-numbers</span><span> </span><span>-n</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>ipv6<a href="#ipv6-1"><span>#</span></a></h5><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip6tables</span><span> </span><span>-L</span><span> </span><span>INPUT</span><span> </span><span>--line-numbers</span><span> </span><span>-n</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>例如看到：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>num  target     prot opt source      destination</span></div></div><div><div><div>2</div></div><div><span>1    REJECT     tcp  --  0.0.0.0/0   0.0.0.0/0   tcp dpt:24014 connlimit above 3 reject-with icmp-port-unreachable</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>删除第 1 条：</p></section><section><h5>ipv4<a href="#ipv4-2"><span>#</span></a></h5><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-D</span><span> </span><span>INPUT</span><span> </span><span>1</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>ipv6<a href="#ipv6-2"><span>#</span></a></h5><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip6tables</span><span> </span><span>-D</span><span> </span><span>INPUT</span><span> </span><span>1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>确认是否删除成功</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-L</span><span> </span><span>INPUT</span><span> </span><span>-n</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section></section><section><h3>5. tc 绑定流量标记<a href="#5-tc-绑定流量标记"><span>#</span></a></h3><section><h4>ipv4<a href="#ipv4-3"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tc</span><span> </span><span>filter</span><span> </span><span>add</span><span> </span><span>dev</span><span> </span><span>eth0</span><span> </span><span>parent</span><span> </span><span>1:</span><span> </span><span>protocol</span><span> </span><span>ip</span><span> </span><span>handle</span><span> </span><span>10</span><span> </span><span>fw</span><span> </span><span>flowid</span><span> </span><span>1:10</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>ipv6<a href="#ipv6-3"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tc</span><span> </span><span>filter</span><span> </span><span>add</span><span> </span><span>dev</span><span> </span><span>eth0</span><span> </span><span>parent</span><span> </span><span>1:</span><span> </span><span>protocol</span><span> </span><span>ipv6</span><span> </span><span>handle</span><span> </span><span>10</span><span> </span><span>fw</span><span> </span><span>flowid</span><span> </span><span>1:10</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>到这里限速已经生效。</p></section></section><section><h3>6. 更改限速规则<a href="#6-更改限速规则"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tc</span><span> </span><span>class</span><span> </span><span>change</span><span> </span><span>dev</span><span> </span><span>eth0</span><span> </span><span>parent</span><span> </span><span>1:1</span><span> </span><span>classid</span><span> </span><span>1:10</span><span> </span><span>htb</span><span> </span><span>rate</span><span> </span><span>100mbit</span><span> </span><span>ceil</span><span> </span><span>100mbit</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>rate（保证带宽）更改为100mbit</li>
<li>ceil（峰值带宽）更改为100mbit</li>
</ul></section><section><h3>7. 更改iptables 标记端口<a href="#7-更改iptables-标记端口"><span>#</span></a></h3><p>如果想先删除旧规则再添加新规则：</p><section><h4>ipv4更改新端口<a href="#ipv4更改新端口"><span>#</span></a></h4><ol>
<li>查看规则编号</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-L</span><span> </span><span>OUTPUT</span><span> </span><span>--line-numbers</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>会看到类似：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>num  target     prot opt source    destination</span></div></div><div><div><div>2</div></div><div><span>1    MARK       tcp  --  anywhere  anywhere tcp spt:3001 MARK set 0xa</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>删除旧规则
比如编号是 1：</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-D</span><span> </span><span>OUTPUT</span><span> </span><span>1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>或者直接按内容删除：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables -t mangle -D OUTPUT -p tcp --sport 3001 -j MARK --set-mark 1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>添加新端口规则</li>
</ol><p>例如改成 443：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-A</span><span> </span><span>OUTPUT</span><span> </span><span>-p</span><span> </span><span>tcp</span><span> </span><span>--sport</span><span> </span><span>443</span><span> </span><span>-j</span><span> </span><span>MARK</span><span> </span><span>--set-mark</span><span> </span><span>10</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>ipv6更改新端口<a href="#ipv6更改新端口"><span>#</span></a></h4><ol>
<li>查看ipv6规则</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip6tables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-L</span><span> </span><span>OUTPUT</span><span> </span><span>--line-numbers</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>删除旧规则</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip6tables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-D</span><span> </span><span>OUTPUT</span><span> </span><span>1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>添加新端口</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip6tables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-A</span><span> </span><span>OUTPUT</span><span> </span><span>-p</span><span> </span><span>tcp</span><span> </span><span>--sport</span><span> </span><span>3001</span><span> </span><span>-j</span><span> </span><span>MARK</span><span> </span><span>--set-mark</span><span> </span><span>10</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section></section>
<section><h2>四、查看限速状态<a href="#四查看限速状态"><span>#</span></a></h2><p>使用以下命令查看当前限速</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tc</span><span> </span><span>class</span><span> </span><span>show</span><span> </span><span>dev</span><span> </span><span>eth0</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>输出示例解读：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>class htb 1:10 parent 1:1 prio 0 rate 100Mbit ceil 100Mbit burst 1600b cburst 1600b</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li><code>rate 100Mbit</code>保证带宽（最低保障）</li>
<li><code>ceil 100Mbit</code>峰值带宽（最大上限）</li>
<li><code>burst</code>突发允许字节数</li>
<li><code>cburstceil </code>突发允许字节数</li>
</ul><p>查看 iptables 命中：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-L</span><span> </span><span>-n</span><span> </span><span>-v</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>五、解除限速<a href="#五解除限速"><span>#</span></a></h2><section><h3>删除 tc 限速<a href="#删除-tc-限速"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tc</span><span> </span><span>qdisc</span><span> </span><span>del</span><span> </span><span>dev</span><span> </span><span>eth0</span><span> </span><span>root</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>删除 iptables 标记<a href="#删除-iptables-标记"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-F</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>六、流量达到一定值后自动限速<a href="#六流量达到一定值后自动限速"><span>#</span></a></h2><p>很多人真正需要的是：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>平时不限速</span></div></div><div><div><div>2</div></div><div><span>流量达到一定值后自动限速</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>例如：</p><ul>
<li>月流量超过 1TB</li>
<li>自动限制为 10Mbps</li>
</ul><p>这种通常配合：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>vnstat + shell</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>实现。</p></section>
<section><h2>七、安装 vnStat<a href="#七安装-vnstat"><span>#</span></a></h2><p>安装：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>install</span><span> </span><span>vnstat</span><span> </span><span>-y</span></div></div><div><div><div>2</div></div><div><span>systemctl</span><span> </span><span>enable</span><span> </span><span>vnstat</span></div></div><div><div><div>3</div></div><div><span>systemctl</span><span> </span><span>start</span><span> </span><span>vnstat</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>查看月流量：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>vnstat</span><span> </span><span>-m</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>八、自动限速脚本<a href="#八自动限速脚本"><span>#</span></a></h2><p>创建：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nano</span><span> </span><span>/root/limit.sh</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>写入：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>#!/bin/bash</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>LIMIT</span><span>=</span><span>"1000"</span><span>   </span><span># 1000GB</span></div></div><div><div><div>4</div></div><div><span>USED</span><span><span>=</span><span>$(</span></span><span>vnstat</span><span> </span><span>--json</span><span> </span><span>m</span><span> | </span><span>jq</span><span> </span><span>'.interfaces[0].traffic.month[0].tx + .interfaces[0].traffic.month[0].rx'</span><span>)</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>USED_GB</span><span><span>=</span><span>$((</span></span><span>USED</span><span> </span><span>/</span><span> </span><span>1024</span><span>))</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>if</span><span> [ </span><span>"</span><span>$USED_GB</span><span>"</span><span><span> </span><span>-ge</span><span> </span></span><span>"</span><span>$LIMIT</span><span>"</span><span> ]; </span><span>then</span></div></div><div><div><div>9</div></div><div><span>    </span><span>tc</span><span> </span><span>qdisc</span><span> </span><span>replace</span><span> </span><span>dev</span><span> </span><span>eth0</span><span> </span><span>root</span><span> </span><span>tbf</span><span> </span><span>rate</span><span> </span><span>10mbit</span><span> </span><span>burst</span><span> </span><span>32kbit</span><span> </span><span>latency</span><span> </span><span>400ms</span></div></div><div><div><div>10</div></div><div><span>fi</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>赋予权限：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>chmod</span><span> </span><span>+x</span><span> </span><span>/root/limit.sh</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>九、定时检测<a href="#九定时检测"><span>#</span></a></h2><p>编辑 crontab：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>crontab</span><span> </span><span>-e</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>每 5 分钟检测：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>*/5 * * * * /root/limit.sh</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>十、恢复不限速<a href="#十恢复不限速"><span>#</span></a></h2><p>删除限速：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span># 删除 tc</span></div></div><div><div><div>2</div></div><div><span>tc</span><span> </span><span>qdisc</span><span> </span><span>del</span><span> </span><span>dev</span><span> </span><span>eth0</span><span> </span><span>root</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span># 清空 mangle 表</span></div></div><div><div><div>5</div></div><div><span>iptables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-F</span></div></div><div><div><div>6</div></div><div><span>ip6tables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-F</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span># 删除自定义链（如果有）</span></div></div><div><div><div>9</div></div><div><span>iptables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-X</span></div></div><div><div><div>10</div></div><div><span>ip6tables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-X</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>即可恢复满速。</p></section>
<section><h2>十一、常见问题<a href="#十一常见问题"><span>#</span></a></h2><section><h3>1. RTNETLINK answers: No such file or directory<a href="#1-rtnetlink-answers-no-such-file-or-directory"><span>#</span></a></h3><p>原因：</p><p>没有创建 root qdisc。</p><p>先执行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tc</span><span> </span><span>qdisc</span><span> </span><span>add</span><span> </span><span>dev</span><span> </span><span>eth0</span><span> </span><span>root</span><span> </span><span>handle</span><span> </span><span>1:</span><span> </span><span>htb</span><span> </span><span>default</span><span> </span><span>30</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>2. 限速不生效<a href="#2-限速不生效"><span>#</span></a></h3><p>检查：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-t</span><span> </span><span>mangle</span><span> </span><span>-L</span><span> </span><span>-n</span><span> </span><span>-v</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>看看 MARK 是否命中。</p></section><section><h3>3. VPS 网卡不是 eth0<a href="#3-vps-网卡不是-eth0"><span>#</span></a></h3><p>查看：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip</span><span> </span><span>addr</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>有些系统可能是：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>ens3</span></div></div><div><div><div>2</div></div><div><span>enp1s0</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>十二、推荐用途<a href="#十二推荐用途"><span>#</span></a></h2><p>tc 很适合：</p><ul>
<li>Xray / Hysteria 节点限速</li>
<li>Docker 容器限速</li>
<li>下载服务限速</li>
<li>防止单用户跑满带宽</li>
<li>高峰期自动限速</li>
<li>月流量保护</li>
</ul></section>
<section><h2>十三、总结<a href="#十三总结"><span>#</span></a></h2><p>相比传统限速工具：</p>

<table><thead><tr><th>工具</th><th>端口限速</th><th>灵活度</th><th>推荐</th></tr></thead><tbody><tr><td>wondershaper</td><td>❌</td><td>低</td><td>一般</td></tr><tr><td>trickle</td><td>⚠️</td><td>中</td><td>一般</td></tr><tr><td>tc</td><td>✅</td><td>极高</td><td>推荐</td></tr></tbody></table><p>如果你只是：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>整个 VPS 限速</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>那 <code>wondershaper</code> 足够。</p><p>但如果你想：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>精准控制某个服务</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>那 <code>tc + iptables</code> 才是 Linux 最强方案。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/29/</id>
      <title type="text">Debian安装fail2ban封禁恶意ip</title>
      <published>2026-05-25T23:30:00.000Z</published>
      <updated>2026-05-25T23:30:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/29/"/>
      <summary type="text">VPS安全防护 解决VPS被扫 CPU高占用</summary>
      <content type="html"><![CDATA[<section><h2>安装Fail2Ban<a href="#安装fail2ban"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>apt</span><span> </span><span>update</span></div></div><div><div><div>2</div></div><div><span>sudo</span><span> </span><span>apt</span><span> </span><span>install</span><span> </span><span>fail2ban</span><span> </span><span>rsyslog</span><span> </span><span>-y</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p><strong>安装 rsyslog，以确保日志文件能够正常生成并供 Fail2Ban 使用</strong></p></section>
<section><h2>启动服务<a href="#启动服务"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>enable</span><span> </span><span>--now</span><span> </span><span>fail2ban</span></div></div><div><div><div>2</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>enable</span><span> </span><span>--now</span><span> </span><span>rsyslog</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>检查服务状态<a href="#检查服务状态"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>status</span><span> </span><span>fail2ban</span></div></div><div><div><div>2</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>status</span><span> </span><span>rsyslog</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>配置 Fail2Ban<a href="#配置-fail2ban"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>nano</span><span> </span><span>/etc/fail2ban/jail.local</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>粘贴以下内容，记得把 5522 改成你的SSH端口</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>[sshd]</span></div></div><div><div><div>2</div></div><div><span>ignoreip</span><span> </span><span>=</span><span> </span><span>127.0.0.1/8</span></div></div><div><div><div>3</div></div><div><span>enabled</span><span> </span><span>=</span><span> </span><span>true</span></div></div><div><div><div>4</div></div><div><span>filter</span><span> </span><span>=</span><span> </span><span>sshd</span></div></div><div><div><div>5</div></div><div><span>port</span><span> </span><span>=</span><span> </span><span>5522</span></div></div><div><div><div>6</div></div><div><span>maxretry</span><span> </span><span>=</span><span> </span><span>3</span></div></div><div><div><div>7</div></div><div><span>findtime</span><span> </span><span>=</span><span> </span><span>300</span></div></div><div><div><div>8</div></div><div><span>bantime</span><span> </span><span>=</span><span> </span><span>-1</span></div></div><div><div><div>9</div></div><div><span>banaction</span><span> </span><span>=</span><span> </span><span>nftables-multiport</span></div></div><div><div><div>10</div></div><div><span>logpath</span><span> </span><span>=</span><span> </span><span>/var/log/auth.log</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>配置说明：<a href="#配置说明"><span>#</span></a></h2><ul>
<li>enabled = true 启用 SSH 防护</li>
<li>port = 5522 指定 SSH 端口</li>
<li>maxretry = 3 3次失败后封禁</li>
<li>findtime = 300 在 300 秒（5 分钟）内统计失败尝试次数</li>
<li>bantime = -1 封禁时间设为 -1，表示永久封禁</li>
</ul><section><h3>重启服务使配置生效<a href="#重启服务使配置生效"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>restart</span><span> </span><span>fail2ban</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>管理和监控<a href="#管理和监控"><span>#</span></a></h2><section><h3>查看运行状态<a href="#查看运行状态"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>status</span><span> </span><span>fail2ban</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>查看日志<a href="#查看日志"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>tail</span><span> </span><span>-f</span><span> </span><span>/var/log/fail2ban.log</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>管理封禁IP<a href="#管理封禁ip"><span>#</span></a></h2><section><h3>查询封禁情况<a href="#查询封禁情况"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>fail2ban-client</span><span> </span><span>status</span><span> </span><span>sshd</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>手动解封IP：<a href="#手动解封ip"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>fail2ban-client</span><span> </span><span>unban</span><span> </span><span>IP地址</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>常见问题处理<a href="#常见问题处理"><span>#</span></a></h2><p>如果服务启动失败，检查配置文件语法：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>fail2ban-client</span><span> </span><span>-t</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果日志不更新，重启 rsyslog 服务：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>restart</span><span> </span><span>rsyslog</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>卸载<a href="#卸载"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>stop</span><span> </span><span>fail2ban</span></div></div><div><div><div>2</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>disable</span><span> </span><span>fail2ban</span></div></div><div><div><div>3</div></div><div><span>sudo</span><span> </span><span>apt-get</span><span> </span><span>remove</span><span> </span><span>--purge</span><span> </span><span>fail2ban</span></div></div><div><div><div>4</div></div><div><span>sudo</span><span> </span><span>apt-get</span><span> </span><span>autoremove</span></div></div><div><div><div>5</div></div><div><span>sudo</span><span> </span><span>apt-get</span><span> </span><span>clean</span></div></div><div><div><div>6</div></div><div><span>sudo</span><span> </span><span>rm</span><span> </span><span>-rf</span><span> </span><span>/var/log/fail2ban.log</span></div></div><div><div><div>7</div></div><div><span>sudo</span><span> </span><span>rm</span><span> </span><span>-rf</span><span> </span><span>/var/lib/fail2ban</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/28/</id>
      <title type="text">VPS 上禁用与启用 IPv6 全教程</title>
      <published>2026-05-24T00:30:00.000Z</published>
      <updated>2026-05-24T00:30:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/28/"/>
      <summary type="text">VPS禁用、启用ipv6教程</summary>
      <content type="html"><![CDATA[<p>在 VPS 上，有时出于安全或网络需求，你可能想 <strong>禁用 IPv6</strong>；有时又需要 <strong>开启 IPv6</strong> 来使用新一代网络服务。本文就来详细讲解如何在 Linux VPS 上管理 IPv6。</p>
<blockquote><p>⚠️ 本文以 Ubuntu / Debian / CentOS 系统为例，其他 Linux 发行版也适用，只需根据网络配置方式做小调整。</p></blockquote>
<section><h2>一、检查当前 IPv6 状态<a href="#一检查当前-ipv6-状态"><span>#</span></a></h2><p>在动手前，先确认 VPS 的 IPv6 当前状态：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span> </span><span># 查看内核 IPv6 是否禁用</span></div></div><div><div><div>2</div></div><div><span>cat</span><span> </span><span>/proc/sys/net/ipv6/conf/all/disable_ipv6</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span># 查看网卡是否有 IPv6 地址</span></div></div><div><div><div>5</div></div><div><span>ip</span><span> </span><span>a</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>如果 <code>disable_ipv6</code> 输出 <code>0</code>，表示 IPv6 功能已启用</li>
<li>如果输出 <code>1</code>，表示 IPv6 已禁用</li>
<li>网卡下有 <code>inet6</code> 地址，则 IPv6 已可用</li>
</ul></section>
<section><h2>二、禁用 IPv6<a href="#二禁用-ipv6"><span>#</span></a></h2><p>禁用 IPv6 主要有两种方式：<strong>内核级</strong> 和 <strong>系统级</strong>。</p><section><h3>1️⃣ 方法一：通过 sysctl 永久禁用<a href="#1️⃣-方法一通过-sysctl-永久禁用"><span>#</span></a></h3><ol>
<li>编辑配置文件（如果不存在可以新建）：</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>nano</span><span> </span><span>/etc/sysctl.conf</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>添加以下内容：</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>net.ipv6.conf.all.disable_ipv6</span><span> </span><span>=</span><span> </span><span>1</span></div></div><div><div><div>2</div></div><div><span>net.ipv6.conf.default.disable_ipv6</span><span> </span><span>=</span><span> </span><span>1</span></div></div><div><div><div>3</div></div><div><span>net.ipv6.conf.lo.disable_ipv6</span><span> </span><span>=</span><span> </span><span>1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>立即生效：</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>sysctl</span><span> </span><span>-p</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>验证：</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip</span><span> </span><span>a</span><span> | </span><span>grep</span><span> </span><span>inet6</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果没有输出 IPv6 地址，禁用成功 ✅</p></section><section><h3>2️⃣ 方法二：通过 GRUB 禁用（彻底禁用）<a href="#2️⃣-方法二通过-grub-禁用彻底禁用"><span>#</span></a></h3><ol>
<li>编辑 GRUB 配置：</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>nano</span><span> </span><span>/etc/default/grub</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>找到：</li>
</ol><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>GRUB_CMDLINE_LINUX_DEFAULT="quiet"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>改成：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>GRUB_CMDLINE_LINUX_DEFAULT</span><span>=</span><span>"quiet ipv6.disable=1"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>更新 GRUB 并重启：</li>
</ol><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span># Ubuntu/Debian</span></div></div><div><div><div>2</div></div><div><span>sudo</span><span> </span><span>update-grub</span></div></div></code></pre><div><div></div><div></div></div></figure></div><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span># CentOS / Rocky / AlmaLinux</span></div></div><div><div><div>2</div></div><div><span>sudo</span><span> </span><span>grub2-mkconfig</span><span> </span><span>-o</span><span> </span><span>/boot/grub2/grub.cfg</span></div></div><div><div><div>3</div></div><div><span>sudo</span><span> </span><span>reboot</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>三、启用 IPv6<a href="#三启用-ipv6"><span>#</span></a></h2><p>如果你之前禁用了 IPv6 或系统没有自动启用：</p><section><h3>1️⃣ 方法一：通过 sysctl 启用<a href="#1️⃣-方法一通过-sysctl-启用"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>nano</span><span> </span><span>/etc/sysctl.conf</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>添加/修改：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>net.ipv6.conf.all.disable_ipv6</span><span> </span><span>=</span><span> </span><span>0</span></div></div><div><div><div>2</div></div><div><span>net.ipv6.conf.default.disable_ipv6</span><span> </span><span>=</span><span> </span><span>0</span></div></div><div><div><div>3</div></div><div><span>net.ipv6.conf.lo.disable_ipv6</span><span> </span><span>=</span><span> </span><span>0</span></div></div><div><div><div>4</div></div><div><span>net.ipv6.conf.all.forwarding</span><span> </span><span>=</span><span> </span><span>1</span><span>  </span><span># 如果需要路由转发</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>生效：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>sysctl</span><span> </span><span>-p</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>2️⃣ 方法二：通过 GRUB 启用<a href="#2️⃣-方法二通过-grub-启用"><span>#</span></a></h3><p>如果 GRUB 中有 <code>ipv6.disable=1</code>，删除该参数并更新 GRUB：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span># 修改 /etc/default/grub</span></div></div><div><div><div>2</div></div><div><span>GRUB_CMDLINE_LINUX_DEFAULT</span><span>=</span><span>"quiet"</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span># 更新 GRUB</span></div></div><div><div><div>5</div></div><div><span>sudo</span><span> </span><span>update-grub</span><span>   </span><span># Ubuntu/Debian</span></div></div><div><div><div>6</div></div><div><span>sudo</span><span> </span><span>grub2-mkconfig</span><span> </span><span>-o</span><span> </span><span>/boot/grub2/grub.cfg</span><span>   </span><span># CentOS</span></div></div><div><div><div>7</div></div><div><span>sudo</span><span> </span><span>reboot</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>3️⃣ 配置网卡获取 IPv6 地址（Ubuntu/Debian Netplan 示例）<a href="#3️⃣-配置网卡获取-ipv6-地址ubuntudebian-netplan-示例"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>nano</span><span> </span><span>/etc/netplan/01-netcfg.yaml</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>network:</span></div></div><div><div><div>2</div></div><div><span>    </span><span>version:</span><span> </span><span>2</span></div></div><div><div><div>3</div></div><div><span>    </span><span>ethernets:</span></div></div><div><div><div>4</div></div><div><span>    </span><span>eth0:</span></div></div><div><div><div>5</div></div><div><span>        </span><span>dhcp4:</span><span> </span><span>true</span></div></div><div><div><div>6</div></div><div><span>        </span><span>dhcp6:</span><span> </span><span>true</span></div></div><div><div><div>7</div></div><div><span>        </span><span>accept-ra:</span><span> </span><span>true</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>应用：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>netplan</span><span> </span><span>apply</span></div></div><div><div><div>2</div></div><div><span>ip</span><span> </span><span>a</span><span> | </span><span>grep</span><span> </span><span>inet6</span></div></div></code></pre><div><div></div><div></div></div></figure></div><blockquote><p>如果没有分配公网 IPv6，可能需要在 VPS 控制台开启 IPv6。</p></blockquote></section></section>
<section><h2>四、测试 IPv6 是否可用<a href="#四测试-ipv6-是否可用"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ping6</span><span> </span><span>ipv6.google.com</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>返回 <code>64 bytes from ...</code> → IPv6 已生效</li>
<li>返回 <code>Network unreachable</code> → 可能没有分配 IPv6 地址</li>
</ul></section>
<section><h2>五、总结<a href="#五总结"><span>#</span></a></h2>

<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>操作</td><td>方法</td></tr><tr><td>禁用 IPv6</td><td><code>sysctl</code> 或 <code>GRUB</code></td></tr><tr><td>启用 IPv6</td><td>删除 GRUB 参数 + sysctl + 网卡配置</td></tr><tr><td>检查状态</td><td><code>cat /proc/sys/net/ipv6/conf/all/disable_ipv6</code> 和 <code>ip a</code></td></tr><tr><td>测试网络</td><td><code>ping6 ipv6.google.com</code></td></tr></tbody></table><p>通过以上步骤，你可以灵活地在 VPS 上开启或禁用 IPv6，满足不同的网络需求。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/27/</id>
      <title type="text">Docker部署chevereto图床开心版</title>
      <published>2026-05-19T00:00:00.000Z</published>
      <updated>2026-05-19T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/27/"/>
      <summary type="text">部署chevereto图床</summary>
      <content type="html"><![CDATA[<section><h2>效果图<a href="#效果图"><span>#</span></a></h2><p><img src="/uploads/67f1f97a74fd6.webp" alt="" /></p></section>
<section><h2>部署教程<a href="#部署教程"><span>#</span></a></h2><section><h3>docker compose部署<a href="#docker-compose部署"><span>#</span></a></h3><div><div><div><figure><figcaption><span></span><span>Terminal window</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>version:</span><span> </span><span>'3.8'</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>services:</span></div></div><div><div><div>4</div></div><div><span>    </span><span>chevereto:</span></div></div><div><div><div>5</div></div><div><span>    </span><span>image:</span><span> </span><span>ghcr.io/chevereto/chevereto:4.0.9</span></div></div><div><div><div>6</div></div><div><span>    </span><span>container_name:</span><span> </span><span>chevereto</span></div></div><div><div><div>7</div></div><div><span>    </span><span>restart:</span><span> </span><span>unless-stopped</span></div></div><div><div><div>8</div></div><div><span>    </span><span>ports:</span></div></div><div><div><div>9</div></div><div><span>        </span><span>-</span><span> </span><span>"8090:80"</span></div></div><div><div><div>10</div></div><div><span>    </span><span>environment:</span></div></div><div><div><div>11</div></div><div><span>        </span><span>CHEVERETO_DB_HOST:</span><span> </span><span>db</span></div></div><div><div><div>12</div></div><div><span>        </span><span>CHEVERETO_DB_PORT:</span><span> </span><span>3306</span></div></div><div><div><div>13</div></div><div><span>        </span><span>CHEVERETO_DB_NAME:</span><span> </span><span>chevreto</span></div></div><div><div><div>14</div></div><div><span>        </span><span>CHEVERETO_DB_USER:</span><span> </span><span>chevreto</span></div></div><div><div><div>15</div></div><div><span>        </span><span>CHEVERETO_DB_PASS:</span><span> </span><span>passwd</span></div></div><div><div><div>16</div></div><div><span>    </span><span>depends_on:</span></div></div><div><div><div>17</div></div><div><span>        </span><span>-</span><span> </span><span>db</span></div></div><div><div><div>18</div></div><div><span>    </span><span>volumes:</span></div></div><div><div><div>19</div></div><div><span>        </span><span>-</span><span> </span><span>/opt/chevereto:/var/www/html/</span></div></div><div><div><div>20</div></div><div><span>        </span><span>-</span><span> </span><span>/opt/chevereto/asset:/var/www/html/images/_assets/</span></div></div><div><div><div>21</div></div><div>
</div></div><div><div><div>22</div></div><div><span>    </span><span>db:</span></div></div><div><div><div>23</div></div><div><span>    </span><span>image:</span><span> </span><span>mysql:8.1</span></div></div><div><div><div>24</div></div><div><span>    </span><span>container_name:</span><span> </span><span>chevereto_db</span></div></div><div><div><div>25</div></div><div><span>    </span><span>restart:</span><span> </span><span>unless-stopped</span></div></div><div><div><div>26</div></div><div><span>    </span><span>environment:</span></div></div><div><div><div>27</div></div><div><span>        </span><span>MYSQL_ROOT_PASSWORD:</span><span> </span><span>passwd</span></div></div><div><div><div>28</div></div><div><span>        </span><span>MYSQL_DATABASE:</span><span> </span><span>chevreto</span></div></div><div><div><div>29</div></div><div><span>        </span><span>MYSQL_USER:</span><span> </span><span>chevreto</span></div></div><div><div><div>30</div></div><div><span>        </span><span>MYSQL_PASSWORD:</span><span> </span><span>passwd</span></div></div><div><div><div>31</div></div><div><span>    </span><span>volumes:</span></div></div><div><div><div>32</div></div><div><span>        </span><span>-</span><span> </span><span>/opt/chevereto/db:/var/lib/mysql</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p><strong>自行更改用户名 密码和数据库用户名 密码</strong></p><p>然后运行</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>compose</span><span> </span><span>up</span><span> </span><span>-d</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>下载开心版文件<a href="#下载开心版文件"><span>#</span></a></h3><p><strong>使用蓝奏网盘下载 Chevereto V4.0.7：</strong></p><p><a href="https://itxe.lanzout.com/itD5M0ozrzif" target="_blank"><strong>https://itxe.lanzout.com/itD5M0ozrzif</strong></a></p><p>把压缩包放入<code>/opt/chevereto</code>文件夹内解压 赋予权限</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>chmod</span><span> </span><span>-R</span><span> </span><span>077</span><span> </span><span>/opt/chevereto</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>最后打开<code>ip:8090</code>即可</p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/24/</id>
      <title type="text">Nginx Proxy Manager 一款Nginx可视化面板 docker部署教程</title>
      <published>2026-05-15T00:00:00.000Z</published>
      <updated>2026-05-15T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/24/"/>
      <summary type="text">Nginx反代面板</summary>
      <content type="html"><![CDATA[<section><h2>搭建教程<a href="#搭建教程"><span>#</span></a></h2><section><h3>docker compose:<a href="#docker-compose"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>version:</span><span> </span><span>'3.8'</span></div></div><div><div><div>2</div></div><div><span>services:</span></div></div><div><div><div>3</div></div><div><span>    </span><span>app:</span></div></div><div><div><div>4</div></div><div><span>    </span><span>image:</span><span> </span><span>'jc21/nginx-proxy-manager:latest'</span></div></div><div><div><div>5</div></div><div><span>    </span><span>restart:</span><span> </span><span>unless-stopped</span></div></div><div><div><div>6</div></div><div><span>    </span><span>ports:</span></div></div><div><div><div>7</div></div><div><span>        </span><span>-</span><span> </span><span>'80:80'</span></div></div><div><div><div>8</div></div><div><span>        </span><span>-</span><span> </span><span>'81:81'</span></div></div><div><div><div>9</div></div><div><span>        </span><span>-</span><span> </span><span>'443:443'</span></div></div><div><div><div>10</div></div><div><span>    </span><span>volumes:</span></div></div><div><div><div>11</div></div><div><span>        </span><span>-</span><span> </span><span>./data:/data</span></div></div><div><div><div>12</div></div><div><span>        </span><span>-</span><span> </span><span>./letsencrypt:/etc/letsencrypt</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>默认用户名密码</li>
<li>Email:             <a href="#">admin@example.com</a></li>
<li>Password:       changeme</li>
</ul></section><section><h3>查看docker内部ip:<a href="#查看docker内部ip"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip</span><span> </span><span>addr</span><span> </span><span>show</span><span> </span><span>docker0</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/25/</id>
      <title type="text">VPS 添加 IPv6 超详细教程（含静态 IPv6、SLAAC、临时 IPv6）</title>
      <published>2026-05-15T00:00:00.000Z</published>
      <updated>2026-05-15T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/25/"/>
      <summary type="text">VPS添加临时ipv6</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>如果只需要临时IPv6地址，可以使用此教程添加ipv6。</p></section>
<section><h2>1. IPv6 基础概念<a href="#1-ipv6-基础概念"><span>#</span></a></h2><p>如果你是第一次折腾 IPv6，这几个概念一定要搞清楚：</p>

<table><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td>类型</td><td>说明</td><td>是否可自定义</td></tr><tr><td><strong>静态 IPv6</strong></td><td>上游给你一个固定 IPv6，如 <code>2606:4700:1234:5678::2</code></td><td>✔️ 可自定义尾段</td></tr><tr><td><strong>SLAAC 自动 IPv6</strong></td><td>由路由器自动分配，如 <code>2606:4700:abcd:ef01:xxxx:xxxx:xxxx:xxxx</code></td><td>❌ 不可控</td></tr><tr><td><strong>临时 IPv6（Privacy IPv6）</strong></td><td>系统自动生成的随机 IPv6，用于保护隐私</td><td>❌ 默认不可控</td></tr><tr><td><strong>Stable Privacy IPv6（Token 自定义）</strong></td><td>可自定义 EUI64 或 Token，稳定又隐私</td><td>✔️ 可控、可长期使用</td></tr></tbody></table></section>
<section><h2>2. 检查 VPS 是否支持 IPv6<a href="#2-检查-vps-是否支持-ipv6"><span>#</span></a></h2><section><h3><strong>检查 IPv6 是否可用</strong><a href="#检查-ipv6-是否可用"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ping6</span><span> </span><span>ipv6.google.com</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3><strong>查看接口是否分配了 IPv6</strong><a href="#查看接口是否分配了-ipv6"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip</span><span> </span><span>-6</span><span> </span><span>addr</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果没有 IPv6，则需要自己配置（见下文）。</p></section></section>
<section><h2>3. 配置静态 IPv6（可自定义 IPv6）<a href="#3-配置静态-ipv6可自定义-ipv6"><span>#</span></a></h2><blockquote><p>你可以完全自定义你的 IPv6，比如<br />
<code>2a03:1234:abcd:5678::leu</code> 也就是：<br />
<code>2a03:1234:abcd:5678::1337</code>、<code>::666</code>, <code>::114</code> 等等。</p></blockquote><p>只要尾段在 <code>/64</code> 内就可任意自定义。</p><section><h3><strong>3.1 Debian / Ubuntu</strong><a href="#31-debian--ubuntu"><span>#</span></a></h3><p>编辑：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nano</span><span> </span><span>/etc/network/interfaces</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>添加：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iface</span><span> </span><span>eth0</span><span> </span><span>inet6</span><span> </span><span>static</span></div></div><div><div><div>2</div></div><div><span>address</span><span> </span><span>2a03:1234:abcd:5678::114</span></div></div><div><div><div>3</div></div><div><span>netmask</span><span> </span><span>64</span></div></div><div><div><div>4</div></div><div><span>gateway</span><span> </span><span>2a03:1234:abcd:5678::1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>然后重载：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>systemctl</span><span> </span><span>restart</span><span> </span><span>networking</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3><strong>3.2 CentOS / AlmaLinux / RockyLinux（NetworkManager）</strong><a href="#32-centos--almalinux--rockylinuxnetworkmanager"><span>#</span></a></h3><p>编辑：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nmcli</span><span> </span><span>con</span><span> </span><span>mod</span><span> </span><span>eth0</span><span> </span><span>ipv6.method</span><span> </span><span>manual</span></div></div><div><div><div>2</div></div><div><span>nmcli</span><span> </span><span>con</span><span> </span><span>mod</span><span> </span><span>eth0</span><span> </span><span>ipv6.addresses</span><span> </span><span>"2a03:1234:abcd:5678::114/64"</span></div></div><div><div><div>3</div></div><div><span>nmcli</span><span> </span><span>con</span><span> </span><span>mod</span><span> </span><span>eth0</span><span> </span><span>ipv6.gateway</span><span> </span><span>"2a03:1234:abcd:5678::1"</span></div></div><div><div><div>4</div></div><div><span>nmcli</span><span> </span><span>con</span><span> </span><span>up</span><span> </span><span>eth0</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>4. 配置 SLAAC 自动 IPv6<a href="#4-配置-slaac-自动-ipv6"><span>#</span></a></h2><p>SLAAC = VPS 上网后自动从上游路由器获取 IPv6。</p><section><h3>Debian / Ubuntu:<a href="#debian--ubuntu"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nano</span><span> </span><span>/etc/network/interfaces</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>加入：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iface</span><span> </span><span>eth0</span><span> </span><span>inet6</span><span> </span><span>auto</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>或 systemd-networkd：<a href="#或-systemd-networkd"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>[Network]</span></div></div><div><div><div>2</div></div><div><span>DHCP</span><span>=</span><span>no</span></div></div><div><div><div>3</div></div><div><span>IPv6AcceptRA</span><span>=</span><span>yes</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重启：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>systemctl</span><span> </span><span>restart</span><span> </span><span>systemd-networkd</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h1>5. 配置临时 IPv6（Privacy IPv6）<a href="#5-配置临时-ipv6privacy-ipv6"><span>#</span></a></h1><p>用于浏览网页时隐藏真实 IPv6。</p><section><h2><strong>Debian / Ubuntu</strong><a href="#debian--ubuntu-1"><span>#</span></a></h2><p>编辑：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nano</span><span> </span><span>/etc/sysctl.conf</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>添加两行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>net.ipv6.conf.all.use_tempaddr</span><span> </span><span>=</span><span> </span><span>2</span></div></div><div><div><div>2</div></div><div><span>net.ipv6.conf.default.use_tempaddr</span><span> </span><span>=</span><span> </span><span>2</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>立即生效：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sysctl</span><span> </span><span>-p</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>你会看到类似：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>2606:4700:abcd:ef01:7d27:89ad:4323:a91c</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>这就是临时 IPv6。</p></section><section><h2>6. 自定义临时 IPv6（Stable Privacy + Token）<a href="#6-自定义临时-ipv6stable-privacy--token"><span>#</span></a></h2><p>如果你想要：</p><ul>
<li>临时 IPv6 但又不想随机变动</li>
<li>稳定、可预测</li>
<li>可以自定义后 64 位 Token（比如：<code>::abcd:114:514</code>）</li>
</ul><p>可以使用 <code>stable_secret</code> 功能。</p><section><h3><strong>6.1 设置稳定的 Token（可自定义）</strong><a href="#61-设置稳定的-token可自定义"><span>#</span></a></h3><section><h4>查看你的网卡名<a href="#查看你的网卡名"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip</span><span> </span><span>link</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>假设为 <code>eth0</code>。</p></section></section><section><h3><strong>6.2 创建 Token</strong><a href="#62-创建-token"><span>#</span></a></h3><p>随便写一个 128-bit 十六进制，例如：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>echo</span><span> </span><span>"f3a1c0ffee1234567890abcd19260811"</span><span> &gt; </span><span>/etc/ipv6token</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3><strong>6.3 写入 Networkd 配置（推荐）</strong><a href="#63-写入-networkd-配置推荐"><span>#</span></a></h3><p>创建：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nano</span><span> </span><span>/etc/systemd/network/10-eth0.network</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>内容：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>[Match]</span></div></div><div><div><div>2</div></div><div><span>Name</span><span>=</span><span>eth0</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span>[Network]</span></div></div><div><div><div>5</div></div><div><span>DHCP</span><span>=</span><span>no</span></div></div><div><div><div>6</div></div><div><span>IPv6AcceptRA</span><span>=</span><span>yes</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>[IPv6Token]</span></div></div><div><div><div>9</div></div><div><span> </span><span>Token</span><span>=</span><span>f3a1c0ffee1234567890abcd19260811</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重启：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>systemctl</span><span> </span><span>restart</span><span> </span><span>systemd-networkd</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>然后查看：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip</span><span> </span><span>-6</span><span> </span><span>addr</span><span> </span><span>show</span><span> </span><span>dev</span><span> </span><span>eth0</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>你会看到一个稳定的隐私 IPv6，例如：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>2606:4700:abcd:ef01:f3a1:c0ff:ee12:3456</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>你也可以自定义它：</p><p>例：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Token=00000000000000000000000000000114  → ::114</span></div></div><div><div><div>2</div></div><div><span>Token=00000000000000000000000000000ACG  → ::acg</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section><section><h2>7. 验证 IPv6 是否生效<a href="#7-验证-ipv6-是否生效"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ip</span><span> </span><span>-6</span><span> </span><span>addr</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>检查能否访问 IPv6：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ping6</span><span> </span><span>ipv6.google.com</span></div></div><div><div><div>2</div></div><div><span>curl</span><span> </span><span>-6</span><span> </span><span>https://ifconfig.co</span></div></div><div><div><div>3</div></div><div><span>curl</span><span> </span><span>-6</span><span> </span><span>https://api64.ipify.org</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果能显示 IPv6 地址代表成功。</p></section><section><h2>8. 常见问题（FAQ）<a href="#8-常见问题faq"><span>#</span></a></h2><section><h3>❓ 我可以自己创建任意 IPv6 吗？<a href="#-我可以自己创建任意-ipv6-吗"><span>#</span></a></h3><p>✔️ 只要在你的 <code>/64</code> 网段内，你可以完全自定义：</p><ul>
<li>
<p>自己的静态 IPv6：<code>::1</code> ~ <code>::ffff:ffff:ffff:ffff</code></p>
</li>
<li>
<p>Token 从 0～2^64 自定义</p>
</li>
</ul><p>例如：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>2a03:1234:abcd:5678::114514</span></div></div><div><div><div>2</div></div><div><span>2a03:1234:abcd:5678::233</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>❓ 有 IPv6 但 ping6 不通？<a href="#-有-ipv6-但-ping6-不通"><span>#</span></a></h3><p>解决：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iptables</span><span> </span><span>-A</span><span> </span><span>INPUT</span><span> </span><span>-p</span><span> </span><span>ipv6-icmp</span><span> </span><span>-j</span><span> </span><span>ACCEPT</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>❓ 系统有 IPv6 但 curl -6 出不来？<a href="#-系统有-ipv6-但-curl--6-出不来"><span>#</span></a></h3><p>要加 NAT66 或开启路由器 RA，取决于你的上游。</p></section></section><section><h2>结语<a href="#结语"><span>#</span></a></h2><p>以上就是 <strong>VPS 添加 IPv6 的最完整教程</strong>，包含：
✔ 静态 IPv6（任意自定义）<br />
✔ SLAAC 自动 IPv6<br />
✔ 临时 IPv6（Privacy）<br />
✔ 可控的 Stable IPv6 Token<br />
✔ 自定义 IPv6 后缀</p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/22/</id>
      <title type="text">如何查看 VPS 是否被扫描端口（Linux 服务器安全指南）</title>
      <published>2026-05-14T00:00:00.000Z</published>
      <updated>2026-05-14T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/22/"/>
      <summary type="text">查看VPS是否被爆破</summary>
      <content type="html"><![CDATA[<p>很多人在购买 VPS 后，经常会好奇一个问题：</p>
<blockquote><p><strong>我的服务器有没有被别人扫描？</strong></p></blockquote>
<p>实际上，只要你的 VPS 有公网 IP，几乎每天都会被扫描。<br />
常见的扫描包括：</p>
<ul>
<li>SSH 暴力破解</li>
<li>Web 漏洞扫描</li>
<li>全端口扫描（nmap / masscan）
本文整理几种 <strong>简单有效的方法</strong>，查看服务器是否被扫描。</li>
</ul>
<section><h2>一、查看 SSH 被暴力破解情况<a href="#一查看-ssh-被暴力破解情况"><span>#</span></a></h2><p>SSH 是最容易被攻击的服务。</p><p>在 <strong>Debian / Ubuntu</strong> 上可以通过日志查看失败登录：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>journalctl</span><span> </span><span>-u</span><span> </span><span>ssh</span><span> | </span><span>grep</span><span> </span><span>"Failed password"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果服务器被扫，你会看到类似：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Failed password for root from 185.xxx.xxx.xxx port 52341 ssh2</span></div></div><div><div><div>2</div></div><div><span>Failed password for admin from 45.xxx.xxx.xxx port 41211 ssh2</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>统计攻击 IP：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>journalctl</span><span> </span><span>-u</span><span> </span><span>ssh</span><span> | </span><span>grep</span><span> </span><span>"Failed password"</span><span> | </span><span>awk</span><span> </span><span>'{print $11}'</span><span> | </span><span>sort</span><span> | </span><span>uniq</span><span> </span><span>-c</span><span> | </span><span>sort</span><span> </span><span>-nr</span><span> | </span><span>head</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>示例输出：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>120 185.xxx.xxx.xxx</span></div></div><div><div><div>2</div></div><div><span>85  45.xxx.xxx.xxx</span></div></div><div><div><div>3</div></div><div><span>60  103.xxx.xxx.xxx</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>说明这些 IP 尝试登录你的服务器最多。</p></section>
<section><h2>二、查看服务器当前连接<a href="#二查看服务器当前连接"><span>#</span></a></h2><p>可以使用 <code>ss</code> 查看服务器当前 TCP 连接：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ss</span><span> </span><span>-tn</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>例如：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ESTAB</span><span> </span><span>0</span><span> </span><span>0</span><span> </span><span>87.xxx.xxx.xxx:58364</span><span> </span><span>87.xxx.xxx.xxx:22</span></div></div><div><div><div>2</div></div><div><span>ESTAB</span><span> </span><span>0</span><span> </span><span>0</span><span> </span><span>87.xxx.xxx.xxx:46888</span><span> </span><span>172.67.xx.xx:443</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>含义：</p>

<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>项目</td><td>含义</td></tr><tr><td>Local Address</td><td>你的 VPS</td></tr><tr><td>Peer Address</td><td>对方服务器</td></tr><tr><td>ESTAB</td><td>已建立连接</td></tr></tbody></table><p>如果看到大量陌生 IP 连接，可能正在被扫描。</p></section>
<section><h2>三、查看服务器开放端口<a href="#三查看服务器开放端口"><span>#</span></a></h2><p>先确认自己的服务器到底开放了哪些端口：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ss</span><span> </span><span>-tulnp</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>示例：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>tcp LISTEN 0 128 0.0.0.0:22</span></div></div><div><div><div>2</div></div><div><span>tcp LISTEN 0 128 0.0.0.0:80</span></div></div><div><div><div>3</div></div><div><span>tcp LISTEN 0 128 0.0.0.0:443</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>说明服务器开放：</p><ul>
<li>22 → SSH</li>
<li>80 → HTTP</li>
<li>443 → HTTPS
这些端口都会被扫描。</li>
</ul></section>
<section><h2>四、使用 tcpdump 查看端口扫描<a href="#四使用-tcpdump-查看端口扫描"><span>#</span></a></h2><p>如果想实时查看扫描，可以抓包：</p><p>安装工具：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>install</span><span> </span><span>tcpdump</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>抓取 SYN 包：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>tcpdump</span><span> </span><span>-i</span><span> </span><span>any</span><span> </span><span>-nn</span><span> </span><span>'tcp[tcpflags] &amp; tcp-syn != 0 and tcp[tcpflags] &amp; tcp-ack == 0'</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果有人扫描端口，会看到类似：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>IP 185.xxx.xxx.xxx.52341 &gt; your-ip.22: Flags [S]</span></div></div><div><div><div>2</div></div><div><span>IP 185.xxx.xxx.xxx.52341 &gt; your-ip.80: Flags [S]</span></div></div><div><div><div>3</div></div><div><span>IP 185.xxx.xxx.xxx.52341 &gt; your-ip.443: Flags [S]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>这就是典型的端口扫描行为。</p></section>
<section><h2>五、统计连接最多的 IP<a href="#五统计连接最多的-ip"><span>#</span></a></h2><p>可以快速查看连接你服务器最多的 IP：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ss</span><span> </span><span>-ant</span><span> | </span><span>awk</span><span> </span><span>'{print $5}'</span><span> | </span><span>cut</span><span> </span><span>-d:</span><span> </span><span>-f1</span><span> | </span><span>sort</span><span> | </span><span>uniq</span><span> </span><span>-c</span><span> | </span><span>sort</span><span> </span><span>-nr</span><span> | </span><span>head</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>输出示例：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>150</span><span> </span><span>185.xxx.xxx.xxx</span></div></div><div><div><div>2</div></div><div><span>80</span><span>  </span><span>45.xxx.xxx.xxx</span></div></div><div><div><div>3</div></div><div><span>60</span><span>  </span><span>103.xxx.xxx.xxx</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>这些通常就是扫描你服务器的 IP。</p></section>
<section><h2>六、如何防止 VPS 被扫描<a href="#六如何防止-vps-被扫描"><span>#</span></a></h2><p>被扫描其实是正常现象，但可以减少攻击风险。</p><section><h3>1 安装 Fail2ban<a href="#1-安装-fail2ban"><span>#</span></a></h3><p>Fail2ban 可以自动封禁暴力破解 IP：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>install</span><span> </span><span>fail2ban</span><span> </span><span>-y</span></div></div><div><div><div>2</div></div><div><span>systemctl</span><span> </span><span>enable</span><span> </span><span>fail2ban</span></div></div><div><div><div>3</div></div><div><span>systemctl</span><span> </span><span>start</span><span> </span><span>fail2ban</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>查看封禁状态：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>fail2ban-client</span><span> </span><span>status</span><span> </span><span>sshd</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>2 修改 SSH 端口<a href="#2-修改-ssh-端口"><span>#</span></a></h3><p>编辑 SSH 配置：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nano</span><span> </span><span>/etc/ssh/sshd_config</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>Port</span><span> </span><span>22</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>例如：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>Port</span><span> </span><span>22222</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>然后重启：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>systemctl</span><span> </span><span>restart</span><span> </span><span>ssh</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>3 禁止 root 密码登录<a href="#3-禁止-root-密码登录"><span>#</span></a></h3><p>建议使用 <strong>SSH Key 登录</strong>。</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>PermitRootLogin</span><span> </span><span>prohibit-password</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>或者：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>PermitRootLogin</span><span> </span><span>no</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>总结只要 VPS 暴露公网 IP：<a href="#总结只要-vps-暴露公网-ip"><span>#</span></a></h2><ul>
<li>每天都会被扫描</li>
<li>SSH 每天几百次尝试很正常</li>
<li>不需要过度担心
只要做好：</li>
<li>Fail2ban</li>
<li>SSH Key 登录</li>
<li>关闭不必要端口
服务器基本是安全的。</li>
</ul></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/23/</id>
      <title type="text">DeBee HKBGP-V6 - MO V6 | Lite 测评</title>
      <published>2026-05-14T00:00:00.000Z</published>
      <updated>2026-05-14T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/23/"/>
      <summary type="text">DeBee澳门ipv6测评</summary>
      <content type="html"><![CDATA[<section><h2>测试配置<a href="#测试配置"><span>#</span></a></h2><ul>
<li>CPU 核心数：1 vCPU</li>
<li>内存：512 MB</li>
<li>硬盘空间：8 GB</li>
<li>流量：2 TB</li>
<li>带宽速率：2 Gbps</li>
<li>IPv6 数量：1</li>
<li>价格：1USD/月</li>
</ul></section>
<section><h2>iperf3测速<a href="#iperf3测速"><span>#</span></a></h2><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>- - - - - - - - - - - - - - - - - - - - - - - - -</span></div></div><div><div><div>2</div></div><div><span>[  5]   8.00-9.00   sec  13.8 KBytes   112 Kbits/sec</span></div></div><div><div><div>3</div></div><div><span>[  7]   8.00-9.00   sec  13.8 KBytes   112 Kbits/sec</span></div></div><div><div><div>4</div></div><div><span>[  9]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec</span></div></div><div><div><div>5</div></div><div><span>[ 11]   8.00-9.00   sec  9.62 KBytes  78.6 Kbits/sec</span></div></div><div><div><div>6</div></div><div><span>[ 13]   8.00-9.00   sec  12.4 KBytes   101 Kbits/sec</span></div></div><div><div><div>7</div></div><div><span>[SUM]   8.00-9.00   sec  49.5 KBytes   404 Kbits/sec</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>ip质量<a href="#ip质量"><span>#</span></a></h2><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>########################################################################</span></div></div><div><div><div>2</div></div><div><span><span>                </span></span><span>IP质量体检报告：2a0f:7803:f6cc:*:*:*:*:*</span></div></div><div><div><div>3</div></div><div><span><span>                   </span></span><span>https://github.com/xykt/IPQuality</span></div></div><div><div><div>4</div></div><div><span><span>                </span></span><span>bash &lt;(curl -sL https://Check.Place) -I</span></div></div><div><div><div>5</div></div><div><span><span>        </span></span><span>报告时间：2025-10-29 17:18:05 CST  脚本版本：v2025-10-28</span></div></div><div><div><div>6</div></div><div><span>########################################################################</span></div></div><div><div><div>7</div></div><div><span>一、基础信息（Maxmind 数据库）</span></div></div><div><div><div>8</div></div><div><span>自治系统号：            AS214013</span></div></div><div><div><div>9</div></div><div><span>组织：                  Debee Broadband Network Ltd</span></div></div><div><div><div>10</div></div><div><span>坐标：                  113°33′21″E, 22°12′4″N</span></div></div><div><div><div>11</div></div><div><span>地图：                  https://check.place/22.201,113.5559,15,cn</span></div></div><div><div><div>12</div></div><div><span>城市：                  N/A, 澳门</span></div></div><div><div><div>13</div></div><div><span>使用地：                [MO]澳门, [AS]亚洲</span></div></div><div><div><div>14</div></div><div><span>注册地：                [GB]英国</span></div></div><div><div><div>15</div></div><div><span>时区：                  Asia/Macau</span></div></div><div><div><div>16</div></div><div><span>IP类型：                 广播IP</span></div></div><div><div><div>17</div></div><div>
</div></div><div><div><div>18</div></div><div><span>二、IP类型属性</span></div></div><div><div><div>19</div></div><div><span>数据库：      IPinfo    ipregistry    ipapi    IP2Location   AbuseIPDB</span></div></div><div><div><div>20</div></div><div><span>使用类型：     机房        机房        家宽        机房        机房</span></div></div><div><div><div>21</div></div><div><span>公司类型：     机房        机房        家宽        机房</span></div></div><div><div><div>22</div></div><div>
</div></div><div><div><div>23</div></div><div><span>三、风险评分</span></div></div><div><div><div>24</div></div><div><span>风险等级：      极低         低       中等       高         极高</span></div></div><div><div><div>25</div></div><div><span>IP2Location：   3 | 低风险</span></div></div><div><div><div>26</div></div><div><span>Scamalytics：   0 | 低风险</span></div></div><div><div><div>27</div></div><div><span>ipapi：         0.00% | 极低风险</span></div></div><div><div><div>28</div></div><div><span>AbuseIPDB：     0 | 低风险</span></div></div><div><div><div>29</div></div><div><span>IPQS：          0 | 低风险</span></div></div><div><div><div>30</div></div><div><span>DB-IP：         （空）| 低风险</span></div></div><div><div><div>31</div></div><div>
</div></div><div><div><div>32</div></div><div><span>四、风险因子</span></div></div><div><div><div>33</div></div><div><span>库： IP2Location ipapi ipregistry IPQS Scamalytics ipdata IPinfo IPWHOIS</span></div></div><div><div><div>34</div></div><div><span>地区：   [GB]    [MO]    [CN]    [MO]    [MO]    [MO]    [MO]    [MO]</span></div></div><div><div><div>35</div></div><div><span>代理：   否      否      否      否      否      否      否      否</span></div></div><div><div><div>36</div></div><div><span>Tor：    否      否      否      否      否      否      否      否</span></div></div><div><div><div>37</div></div><div><span>VPN：    否      否      否      否      否      无      否      否</span></div></div><div><div><div>38</div></div><div><span>服务器： 是      否      是      无      否      否      是      否</span></div></div><div><div><div>39</div></div><div><span>滥用：   否      否      否      否      否      否      无      无</span></div></div><div><div><div>40</div></div><div><span>机器人： 否      否      无      否      否      无      无      无</span></div></div><div><div><div>41</div></div><div>
</div></div><div><div><div>42</div></div><div><span>五、流媒体及AI服务解锁检测</span></div></div><div><div><div>43</div></div><div><span>服务商：   TikTok   Disney+  Netflix  Youtube  AmazonPV  Spotify  ChatGPT</span></div></div><div><div><div>44</div></div><div><span>状态：     失败      待支持     解锁     禁会员     屏蔽      解锁      解锁</span></div></div><div><div><div>45</div></div><div><span>地区：               [MO]     [MO]                        [MO]     [MO]</span></div></div><div><div><div>46</div></div><div><span>方式：               原生     原生                        原生     原生</span></div></div><div><div><div>47</div></div><div>
</div></div><div><div><div>48</div></div><div><span>六、邮局连通性及黑名单检测</span></div></div><div><div><div>49</div></div><div><span>本地25端口出站：阻断</span></div></div><div><div><div>50</div></div><div><span>通信：+Gmail-Outlook-Yahoo-Apple+QQ-MailRU-AOL-GMX-MailCOM-163-Sohu-Sina</span></div></div><div><div><div>51</div></div><div><span>========================================================================</span></div></div><div><div><div>52</div></div><div><span>今日IP检测量：1344；总检测量：679706。感谢使用 xy 系列脚本！</span></div></div><div><div><div>53</div></div><div><span>报告链接：https://Report.Check.Place/ip/EKX4CVUIE.svg</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>
<section><h2>回程测试ipv6<a href="#回程测试ipv6"><span>#</span></a></h2><p><img src="/uploads/mvnAkXYwutNfU6HbG4LKxcgnwElY5pXT.webp" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/21/</id>
      <title type="text">永久免费qzz.io域名 支持托管至CloudFlare</title>
      <published>2026-05-13T00:00:00.000Z</published>
      <updated>2026-05-13T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/21/"/>
      <summary type="text">永久免费qzz.io域名 支持免费续期</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>免费注册 180天可以免费续期</p></section>
<section><h2>教程<a href="#教程"><span>#</span></a></h2><p>前往官网注册账号</p><p>官网：<a href="https://www.nodeseek.com/jump?to=https%3A%2F%2Fdash.domain.digitalplat.org" target="_blank">https://dash.domain.digitalplat.org</a></p><p>选择qzz.io域名</p><p><img src="/uploads/1763009267371_IMG_3755.jpeg" alt="" /></p></section>
<section><h2>托管至CloudFlare<a href="#托管至cloudflare"><span>#</span></a></h2><p><img src="/uploads/1763009263547_IMG_3756.jpeg" alt="" /></p><p>修改ns记录</p><p><img src="/uploads/1763009261453_IMG_3757.jpeg" alt="" /></p><p>已托管至Cloudflare</p><p><img src="/uploads/1763009267292_IMG_3758.jpeg" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/20/</id>
      <title type="text">Linux 设置 IPv6 或 IPv4 优先教程（gai.conf 配置指南）</title>
      <published>2026-05-12T00:00:00.000Z</published>
      <updated>2026-05-12T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/20/"/>
      <summary type="text">Linux设置ipv6、ipv4优先</summary>
      <content type="html"><![CDATA[<blockquote><p>有时候，服务器的网络明明都通，但访问某些网站、仓库或 API 却慢得离谱。<br />
这很可能是因为系统默认使用了“错误的协议栈顺序”——<br />
Linux 默认<strong>优先使用 IPv6</strong>，而不是 IPv4。</p><p>如果你想手动调整这个顺序（比如让 IPv4 优先），这篇教程正是为你准备的。</p></blockquote>
<section><h2>🧠 为什么要调整 IPv6 / IPv4 优先级<a href="#-为什么要调整-ipv6--ipv4-优先级"><span>#</span></a></h2><p>Linux 系统在进行 DNS 解析时，会先请求域名的 <strong>AAAA（IPv6）</strong> 和 <strong>A（IPv4）</strong> 记录。<br />
默认情况下，它会按照系统内部的优先级（policy table）选择哪种协议先尝试。
这意味着：</p><ul>
<li>如果 IPv6 可用 → 优先使用 IPv6；</li>
<li>即使 IPv6 延迟高、绕路、甚至不通，也会先试 IPv6，导致访问超时；</li>
<li>部分 VPS、Docker 镜像源、Cloudflare / GitHub / ChatGPT 等服务因此异常。
解决办法：<strong>调整 gai.conf 文件，修改协议优先顺序。</strong></li>
</ul></section>
<section><h2>⚙️ gai.conf 是什么？<a href="#️-gaiconf-是什么"><span>#</span></a></h2><p><code>/etc/gai.conf</code> 是 Linux 系统中控制地址选择策略的配置文件，<br />
由 glibc 的 <code>getaddrinfo()</code> 函数使用。
你可以通过编辑它，改变系统在选择 IPv4 / IPv6 地址时的优先级。</p><blockquote><p>作用范围：系统级，对所有使用标准网络库的程序生效（curl、apt、wget、docker 等）。</p></blockquote></section>
<section><h2>🛠️开始修改 gai.conf<a href="#️开始修改-gaiconf"><span>#</span></a></h2><section><h3>1.打开配置文件<a href="#1打开配置文件"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>nano</span><span> </span><span>/etc/gai.conf</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>（或者用你喜欢的编辑器，例如 <code>vim</code>、<code>vi</code>。）</p></section><section><h3>2.查看默认配置<a href="#2查看默认配置"><span>#</span></a></h3><p>一般情况下，文件内会有许多被注释掉的行，比如：</p><blockquote><p>#For sites which prefer IPv4 connections change the last line to
#precedence ::ffff:0&lt;0&gt;/96  100
这句话其实已经告诉我们答案：<br />
如果你想 <strong>IPv4 优先</strong>，只需要取消注释这一行。</p></blockquote></section><section><h3>3.设置 IPv4 优先<a href="#3设置-ipv4-优先"><span>#</span></a></h3><p>找到并修改：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>#precedence ::ffff:0:0/96  100</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>改成：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>precedence</span><span> </span><span>::ffff:0:0/96</span><span>  </span><span>100</span></div></div></code></pre><div><div></div><div></div></div></figure></div><blockquote><p>✅ 保存并退出即可，无需重启系统。
这表示：</p></blockquote><ul>
<li><code>::ffff:0:0/96</code> 表示 IPv4 映射地址；</li>
<li>100` 是它的优先级；</li>
<li>数字越大，优先级越高。
系统现在会优先使用 IPv4 地址。</li>
</ul></section><section><h3>4.如果你想让 IPv6 优先（默认）<a href="#4如果你想让-ipv6-优先默认"><span>#</span></a></h3><p>如果之前改过，现在想恢复 IPv6 优先，只需要把这行重新注释掉：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>#precedence ::ffff:0:0/96  100</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>或者删除整行。</p></section></section>
<section><h2>🔍 测试是否生效<a href="#-测试是否生效"><span>#</span></a></h2><p>使用 <code>getent</code> 检查系统地址选择顺序</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>getent</span><span> </span><span>ahosts</span><span> </span><span>google.com</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>输出示例：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>2404:6800:4008::200e   STREAM google.com</span></div></div><div><div><div>2</div></div><div><span>2404:6800:4008::200e   DGRAM</span></div></div><div><div><div>3</div></div><div><span>2404:6800:4008::200e   RAW</span></div></div><div><div><div>4</div></div><div><span>142.250.204.14          STREAM</span></div></div><div><div><div>5</div></div><div><span>142.250.204.14          DGRAM</span></div></div><div><div><div>6</div></div><div><span>142.250.204.14          RAW</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>📘 <strong>说明：</strong></p><ul>
<li>如果 IPv6 在前面 → IPv6 优先</li>
<li>如果 IPv4 (::ffff: 开头或纯 IPv4 地址) 在前面 → IPv4 优先</li>
</ul><section><h3>Q1：修改后要重启网络吗？<a href="#q1修改后要重启网络吗"><span>#</span></a></h3><p>不需要。<code>gai.conf</code> 会在每次调用 <code>getaddrinfo()</code> 时被读取，立即生效。</p></section><section><h3>Q2：所有程序都受影响吗？<a href="#q2所有程序都受影响吗"><span>#</span></a></h3><p>只要程序使用系统标准的 DNS 解析库（glibc），都会受影响。<br />
比如 <code>apt</code>、<code>curl</code>、<code>wget</code>、<code>ping</code> 等。
但如果某个软件自己实现了解析逻辑（比如某些 Java 程序），可能不受影响。</p></section><section><h3>Q3：IPv6 不通怎么办？<a href="#q3ipv6-不通怎么办"><span>#</span></a></h3><p>你可以临时关闭 IPv6：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>sysctl</span><span> </span><span>-w</span><span> </span><span>net.ipv6.conf.all.disable_ipv6=</span><span>1</span></div></div><div><div><div>2</div></div><div><span>sudo</span><span> </span><span>sysctl</span><span> </span><span>-w</span><span> </span><span>net.ipv6.conf.default.disable_ipv6=</span><span>1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>不建议长期禁用，优先级调整更优雅。</p></section></section>
<section><h2>🧾 示例总结<a href="#-示例总结"><span>#</span></a></h2>

<table><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td>优先策略</td><td>配置语句</td><td>效果</td></tr><tr><td>IPv4 优先</td><td><code>precedence ::ffff:0:0/96 100</code></td><td>优先使用 IPv4</td></tr><tr><td>IPv6 优先（默认）</td><td><code>#precedence ::ffff:0:0/96 100</code></td><td>优先使用 IPv6</td></tr></tbody></table></section>
<section><h2>🧩 总结<a href="#-总结"><span>#</span></a></h2><ul>
<li>Linux 默认 IPv6 优先；</li>
<li>可通过 <code>/etc/gai.conf</code> 改为 IPv4 优先；</li>
<li>立即生效，对大部分命令行工具和服务生效；</li>
<li>稳定性优先的 VPS、Docker 容器建议开启 IPv4 优先。</li>
</ul><blockquote><p>🚀 未来 IPv6 会越来越普及，但在网络质量不均的今天，<br />
IPv4 仍然是最稳、最“能打”的选择。</p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/19/</id>
      <title type="text">用 iperf3 测试网络速度：最实用的教程与示例</title>
      <published>2026-05-11T00:00:00.000Z</published>
      <updated>2026-05-11T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/19/"/>
      <summary type="text">安装、使用iperf3进行网络测速教程</summary>
      <content type="html"><![CDATA[<section><h3>🌐 什么是 iperf3？<a href="#-什么是-iperf3"><span>#</span></a></h3><p><strong>iperf3</strong> 是一个强大的网络带宽测试工具，常被用于 VPS、家庭服务器、或内网节点之间的速度测试。<br />
它能测试 <strong>上传（上行）</strong>、<strong>下载（下行）</strong>、<strong>延迟</strong>、<strong>并发性能</strong> 等指标，是判断线路质量的“利器”。</p></section>
<section><h3>🧰 一、安装 iperf3<a href="#-一安装-iperf3"><span>#</span></a></h3><section><h4>✅ Debian / Ubuntu<a href="#-debian--ubuntu"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>update</span><span> &amp;&amp; </span><span>apt</span><span> </span><span>install</span><span> </span><span>-y</span><span> </span><span>iperf3</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>✅ CentOS / AlmaLinux / Rocky<a href="#-centos--almalinux--rocky"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>yum</span><span> </span><span>install</span><span> </span><span>-y</span><span> </span><span>iperf3</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>✅ macOS（通过 Homebrew）<a href="#-macos通过-homebrew"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>brew</span><span> </span><span>install</span><span> </span><span>iperf3</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h3>⚙️ 二、基本原理<a href="#️-二基本原理"><span>#</span></a></h3><p><code>iperf3</code> 采用 <strong>客户端 - 服务端</strong> 模式：</p><ul>
<li>一台服务器充当 <strong>测试端（Server）</strong></li>
<li>另一台主机作为 <strong>客户端（Client）</strong>
它们之间建立连接，通过 TCP 或 UDP 数据流进行测速。</li>
</ul></section>
<section><h3>🖥️ 三、服务端启动<a href="#️-三服务端启动"><span>#</span></a></h3><p>在你想“接收测速数据”的机器上执行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iperf3</span><span> </span><span>-s</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>默认监听端口：<code>5201</code>
如果要在后台运行，可以用：</li>
</ul><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nohup</span><span> </span><span>iperf3</span><span> </span><span>-s</span><span> &gt; </span><span>/dev/null</span><span> 2&gt;&amp;1 &amp;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>若端口被防火墙或安全组限制，请放行 <code>5201/tcp</code>。</p></section>
<section><h3>💻 四、客户端测速<a href="#-四客户端测速"><span>#</span></a></h3><p>在另一台机器上执行（替换为你的服务端 IP）：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iperf3</span><span> </span><span>-c</span><span> </span><span>1.2.3.4</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>输出示例：
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.00  sec  1.12 GBytes   960 Mbits/sec
这代表 <strong>平均下载速率约 960 Mbps</strong>。</p></section>
<section><h3>🔄 五、测试上传与下载方向<a href="#-五测试上传与下载方向"><span>#</span></a></h3><section><h4>📤 上传（默认模式）<a href="#-上传默认模式"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iperf3</span><span> </span><span>-c</span><span> </span><span>1.2.3.4</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>客户端 → 服务端，测试上传速度。</p></section><section><h4>📥 下载（反向模式）<a href="#-下载反向模式"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iperf3</span><span> </span><span>-c</span><span> </span><span>1.2.3.4</span><span> </span><span>-R</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>服务端 → 客户端，测试下载速度。<br />
（<code>-R</code> 即 “reverse” 反向传输）</p></section></section>
<section><h3>🧩 六、常用参数说明<a href="#-六常用参数说明"><span>#</span></a></h3>

<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>参数</td><td>作用</td></tr><tr><td><code>-R</code></td><td>反向测试（下载）</td></tr><tr><td><code>-t 30</code></td><td>测试 30 秒（默认 10 秒）</td></tr><tr><td><code>-p 5201</code></td><td>指定端口</td></tr><tr><td><code>-P 4</code></td><td>开启 4 个并发线程</td></tr><tr><td><code>-u</code></td><td>使用 UDP 模式（测试抖动、丢包率）</td></tr><tr><td><code>-b 100M</code></td><td>限制带宽（仅在 UDP 模式下）</td></tr></tbody></table><section><h4>📊 示例：多线程测速<a href="#-示例多线程测速"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iperf3</span><span> </span><span>-c</span><span> </span><span>1.2.3.4</span><span> </span><span>-P</span><span> </span><span>4</span><span> </span><span>-t</span><span> </span><span>30</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>适合高带宽（如千兆或多线路）测试，更能体现真实性能。</p></section></section>
<section><h3>📡 七、UDP 模式（测试延迟与丢包）<a href="#-七udp-模式测试延迟与丢包"><span>#</span></a></h3><div><div><div><figure><figcaption><span></span><span>Terminal window</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iperf3</span><span> </span><span>-c</span><span> </span><span>1.2.3.4</span><span> </span><span>-u</span><span> </span><span>-b</span><span> </span><span>100M</span></div></div><div><div><div>2</div></div><div><span>    </span><span>```</span></div></div><div><div><div>3</div></div><div><span>输出中你可以看到：</span></div></div><div><div><div>4</div></div><div><span>-</span><span>   </span><span>**</span><span>Jitter</span><span>**</span><span>（抖动）</span></div></div><div><div><div>5</div></div><div><span>-</span><span>   </span><span>**</span><span>Lost/Total Datagrams</span><span>**</span><span>（丢包统计）</span></div></div><div><div><div>6</div></div><div><span>这是判断</span><span> </span><span>**</span><span>线路稳定性</span><span>**</span><span> 的关键指标。</span></div></div><div><div><div>7</div></div><div><span>### 📘 八、示例对比</span></div></div><div><div><div>8</div></div><div><span>|</span><span>     </span><span>|</span><span>     </span><span>|</span><span>     </span><span>|</span></div></div><div><div><div>9</div></div><div><span>|</span><span> </span><span>---</span><span> </span><span>|</span><span> </span><span>---</span><span> </span><span>|</span><span> </span><span>---</span><span> </span><span>|</span></div></div><div><div><div>10</div></div><div><span>|</span><span> </span><span>场景</span><span>  </span><span>|</span><span> </span><span>命令</span><span>  </span><span>|</span><span> </span><span>测试方向</span><span> </span><span>|</span></div></div><div><div><div>11</div></div><div><span>|</span><span> </span><span>VPS</span><span> 上传测速 </span><span>|</span><span> `</span><span>iperf3</span><span> </span><span>-c</span><span> </span><span>你的VPSIP` </span><span>|</span><span> </span><span>本地</span><span> → VPS </span><span>|</span></div></div><div><div><div>12</div></div><div><span>|</span><span> </span><span>VPS</span><span> 下载测速 </span><span>|</span><span> `</span><span>iperf3</span><span> </span><span>-c</span><span> </span><span>你的VPSIP</span><span> </span><span>-R</span><span>` </span><span>|</span><span> </span><span>VPS</span><span> → 本地 </span><span>|</span></div></div><div><div><div>13</div></div><div><span>|</span><span> </span><span>节点间测速</span><span> </span><span>|</span><span> `</span><span>iperf3</span><span> </span><span>-c</span><span> </span><span>节点BIP` </span><span>|</span><span> </span><span>节点A</span><span> → 节点B </span><span>|</span></div></div><div><div><div>14</div></div><div><span>|</span><span> </span><span>多线程测速</span><span> </span><span>|</span><span> `</span><span>iperf3</span><span> </span><span>-c</span><span> </span><span>1.2.3.4</span><span> </span><span>-P</span><span> </span><span>8</span><span>` </span><span>|</span><span> </span><span>多并发上传</span><span> </span><span>|</span></div></div><div><div><div>15</div></div><div><span>### 🧭 九、简单测速结果解读</span></div></div><div><div><div>16</div></div><div><span>|</span><span>     </span><span>|</span><span>     </span><span>|</span></div></div><div><div><div>17</div></div><div><span>|</span><span> </span><span>---</span><span> </span><span>|</span><span> </span><span>---</span><span> </span><span>|</span></div></div><div><div><div>18</div></div><div><span>|</span><span> </span><span>字段</span><span>  </span><span>|</span><span> </span><span>含义</span><span>  </span><span>|</span></div></div><div><div><div>19</div></div><div><span>|</span><span> </span><span>**Transfer**</span><span> </span><span>|</span><span> </span><span>传输数据总量</span><span> </span><span>|</span></div></div><div><div><div>20</div></div><div><span>|</span><span> </span><span>**Bandwidth**</span><span> </span><span>|</span><span> </span><span>平均带宽（速率）</span><span> </span><span>|</span></div></div><div><div><div>21</div></div><div><span>|</span><span> </span><span>**Retr**</span><span> </span><span>|</span><span> </span><span>TCP</span><span> 重传次数（过高说明线路不稳） </span><span>|</span></div></div><div><div><div>22</div></div><div><span>|</span><span> </span><span>**Jitter**</span><span> </span><span>|</span><span> </span><span>抖动（UDP</span><span> 模式） </span><span>|</span></div></div><div><div><div>23</div></div><div><span>&gt;</span><span> </span><span>💡</span><span> 一般情况下，国内外 VPS 延迟高但带宽正常；</span></div></div><div><div><div>24</div></div><div><span>&gt;</span><span> 若丢包严重、Retr 持续上升，则可能是线路质量差或中间节点拥塞。</span></div></div><div><div><div>25</div></div><div><span>### 🧾 十、附加技巧</span></div></div><div><div><div>26</div></div><div><span>#### 📦 在 Docker 容器中测速</span></div></div><div><div><div>27</div></div><div><span>```</span><span>bash</span></div></div><div><div><div>28</div></div><div><span>docker</span><span> </span><span>run</span><span> </span><span>--rm</span><span> </span><span>-it</span><span> </span><span>networkstatic/iperf3</span><span> </span><span>-c</span><span> </span><span>1.2.3.4</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><section><h4>📜 输出结果保存<a href="#-输出结果保存"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iperf3</span><span> </span><span>-c</span><span> </span><span>1.2.3.4</span><span> </span><span>-t</span><span> </span><span>60</span><span> </span><span>--logfile</span><span> </span><span>result.txt</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>🔐 改端口防扫描<a href="#-改端口防扫描"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>iperf3</span><span> </span><span>-s</span><span> </span><span>-p</span><span> </span><span>25001</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h3>✨ 总结<a href="#-总结"><span>#</span></a></h3>

<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>功能</td><td>命令</td></tr><tr><td>启动服务端</td><td><code>iperf3 -s</code></td></tr><tr><td>上传测速</td><td><code>iperf3 -c IP</code></td></tr><tr><td>下载测速</td><td><code>iperf3 -c IP -R</code></td></tr><tr><td>并发测试</td><td><code>iperf3 -c IP -P 4</code></td></tr><tr><td>UDP 测试</td><td><code>iperf3 -c IP -u -b 100M</code></td></tr></tbody></table></section>
<section><h3>💬 写在最后<a href="#-写在最后"><span>#</span></a></h3><p><code>iperf3</code> 是排查线路瓶颈、验证带宽性能的万能工具。<br />
无论你是在搭建节点、优化 VPS，还是测试家庭宽带，它都值得收藏。</p><blockquote><p>如果你也爱折腾服务器，欢迎常来看看</p><p>不定期分享一些实用脚本与服务器小技巧</p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/18/</id>
      <title type="text">搭建NeZha探针 套CloudFlare ipv6小鸡废物利用</title>
      <published>2026-05-10T00:00:00.000Z</published>
      <updated>2026-05-10T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/18/"/>
      <summary type="text">免费域名</summary>
      <content type="html"><![CDATA[<section><h2>1、安装Warp（如果VPS有ipv4忽略此步骤）<a href="#1安装warp如果vps有ipv4忽略此步骤"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>wget</span><span> </span><span>-N</span><span> </span><span>https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh</span><span> &amp;&amp; </span><span>bash</span><span> </span><span>menu.sh</span><span> [option] [lisence/url/token]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果warp获取不到ip 执行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>wg-quick</span><span> </span><span>down</span><span> </span><span>warp</span><span> &amp;&gt;/dev/null; </span><span>sed</span><span> </span><span>-i</span><span> </span><span>"s/Endpoint.*/Endpoint = engage.cloudflareclient.com:4500/"</span><span> </span><span>/etc/wireguard/warp.conf</span><span>; </span><span>warp</span><span> </span><span>o</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>2、安装NeZha<a href="#2安装nezha"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>curl</span><span> </span><span>-L</span><span> </span><span>https://raw.githubusercontent.com/nezhahq/scripts/refs/heads/main/install.sh</span><span> </span><span>-o</span><span> </span><span>nezha.sh</span><span> &amp;&amp; </span><span>chmod</span><span> </span><span>+x</span><span> </span><span>nezha.sh</span><span> &amp;&amp; </span><span>sudo</span><span> </span><span>./nezha.sh</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>3、安装Caddy<a href="#3安装caddy"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>install</span><span> </span><span>caddy</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>4、Caddy反代（如需Nginx反代请移步官网查看）<a href="#4caddy反代如需nginx反代请移步官网查看"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nano</span><span> </span><span>/etc/caddy/Caddyfile</span></div></div></code></pre><div><div></div><div></div></div></figure></div><div><div><div><figure><figcaption><span></span><span>Terminal window</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>dashboard.example.com</span><span> </span><span>{</span></div></div><div><div><div>2</div></div><div><span>        </span><span>@grpcProto</span><span> </span><span>{</span></div></div><div><div><div>3</div></div><div><span>            </span><span>path</span><span> </span><span>/proto.NezhaService/</span><span>*</span></div></div><div><div><div>4</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>        </span><span>reverse_proxy</span><span> </span><span>@grpcProto</span><span> </span><span>{</span></div></div><div><div><div>7</div></div><div><span>            </span><span>header_up</span><span> </span><span>Host</span><span> </span><span>{host}</span></div></div><div><div><div>8</div></div><div><span>            </span><span>header_up</span><span> </span><span>nz-realip</span><span> </span><span>{http.CF-Connecting-IP}</span><span> </span><span># 替换为你的 CDN 提供的私有 header，此处为 CloudFlare 默认</span></div></div><div><div><div>9</div></div><div><span>            </span><span># header_up nz-realip {remote_host} # 如果你使用caddy作为最外层，就把上面一行注释掉，启用此行</span></div></div><div><div><div>10</div></div><div><span>            </span><span>transport</span><span> </span><span>http</span><span> </span><span>{</span></div></div><div><div><div>11</div></div><div><span>                </span><span>versions</span><span> </span><span>h2c</span></div></div><div><div><div>12</div></div><div><span>                </span><span>read_buffer</span><span> </span><span>4096</span></div></div><div><div><div>13</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>14</div></div><div><span>            </span><span>to</span><span> </span><span>localhost:8008</span></div></div><div><div><div>15</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span>        </span><span>reverse_proxy</span><span> </span><span>{</span></div></div><div><div><div>18</div></div><div><span>            </span><span>header_up</span><span> </span><span>Host</span><span> </span><span>{host}</span></div></div><div><div><div>19</div></div><div><span>            </span><span>header_up</span><span> </span><span>Origin</span><span> </span><span>https://{host}</span></div></div><div><div><div>20</div></div><div><span>            </span><span>header_up</span><span> </span><span>nz-realip</span><span> </span><span>{http.CF-Connecting-IP}</span><span> </span><span># 替换为你的 CDN 提供的私有 header，此处为 CloudFlare 默认</span></div></div><div><div><div>21</div></div><div><span>            </span><span># header_up nz-realip {remote_host} # 如果你使用caddy作为最外层，就把上面一行注释掉，启用此行</span></div></div><div><div><div>22</div></div><div><span>            </span><span>transport</span><span> </span><span>http</span><span> </span><span>{</span></div></div><div><div><div>23</div></div><div><span>                </span><span>read_buffer</span><span> </span><span>16384</span></div></div><div><div><div>24</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>25</div></div><div><span>            </span><span>to</span><span> </span><span>localhost:8008</span></div></div><div><div><div>26</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>27</div></div><div><span><span>    </span></span><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>
<section><h2>5、CloudFlare开启grpc<a href="#5cloudflare开启grpc"><span>#</span></a></h2><p>网络-grpc开启 如图所示</p><p><img src="/uploads/67f27b28d8c4e.webp" alt="" /></p></section>
<section><h2>6、对接Agent<a href="#6对接agent"><span>#</span></a></h2><p>NeZha后台要把端口换成443 开启tls 如图所示</p><p><img src="/uploads/67f27b6b91a52.webp" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/17/</id>
      <title type="text">免费白嫖一年ggff.net域名 - 支持解析到CloudFlare</title>
      <published>2026-04-01T00:00:00.000Z</published>
      <updated>2026-04-01T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/17/"/>
      <summary type="text">免费域名</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>支持解析到CloudFlare，首年免费。</p><blockquote><p><strong>如有问题欢迎评论留言</strong></p></blockquote></section>
<section><h2>购买域名<a href="#购买域名"><span>#</span></a></h2><p>官网：<a href="https://customer.l53.net/" target="_blank">https://customer.l53.net/</a></p><p>结算时候试用优惠码自动抵扣一年<code>newuser</code></p><p><img src="/uploads/1763009211253_IMG_3753.jpeg" alt="" /></p></section>
<section><h2>解析到CloudFlare<a href="#解析到cloudflare"><span>#</span></a></h2><p>点击控制面板 名称服务器 添加ns记录即可</p><p><img src="/uploads/1763009208969_IMG_3754.jpeg" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/16/</id>
      <title type="text">部署哆啦A梦转发面板 Gost转发 - Docker Compose部署</title>
      <published>2026-02-01T00:00:00.000Z</published>
      <updated>2026-02-01T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/16/"/>
      <summary type="text">部署哆啦A梦转发面板</summary>
      <content type="html"><![CDATA[<section><h2><strong>系统要求</strong><a href="#系统要求"><span>#</span></a></h2><p>在开始之前，请确保您的系统满足以下要求：</p><ul>
<li><strong>操作系统</strong>: Linux，<strong>推荐纯净系统安装</strong></li>
<li><strong>Docker</strong>: 20.10+</li>
<li><strong>Docker Compose</strong>: 1.29+ 或 Docker 内置 compose 命令</li>
<li><strong>内存</strong>: 至少 1GB RAM</li>
<li><strong>存储</strong>: 至少 1GB 可用空间</li>
<li><strong>网络</strong>: 确保相关端口未被占用</li>
</ul></section>
<section><h2><strong>一键安装（推荐）</strong><a href="#一键安装推荐"><span>#</span></a></h2><p>提供了交互式安装脚本，会自动检测系统环境并引导您完成配置：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>curl</span><span> </span><span>-L</span><span> </span><span>https://raw.githubusercontent.com/BrunuhVille/flux-panel/refs/heads/main/panel_install.sh</span><span> </span><span>-o</span><span> </span><span>panel_install.sh</span><span> &amp;&amp; </span><span>chmod</span><span> </span><span>+x</span><span> </span><span>panel_install.sh</span><span> &amp;&amp; </span><span>./panel_install.sh</span></div></div></code></pre><div><div></div><div></div></div></figure></div><section><h3><strong>安装流程说明</strong><a href="#安装流程说明"><span>#</span></a></h3><ol>
<li>
<p><strong>运行脚本后选择操作</strong>：</p>
<div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>===============================================</span></div></div><div><div><div>2</div></div><div><span><span>          </span></span><span>面板管理脚本</span></div></div><div><div><div>3</div></div><div><span>===============================================</span></div></div><div><div><div>4</div></div><div><span>请选择操作：</span></div></div><div><div><div>5</div></div><div><span>1. 安装面板      ← 选择这个</span></div></div><div><div><div>6</div></div><div><span>2. 更新面板</span></div></div><div><div><div>7</div></div><div><span>3. 卸载面板</span></div></div><div><div><div>8</div></div><div><span>4. 退出</span></div></div><div><div><div>9</div></div><div><span>===============================================</span></div></div></code></pre><div><div></div><div></div></div></figure></div>
</li>
<li>
<p><strong>输入配置参数</strong>：</p>
<ul>
<li><strong>面板服务器地址</strong>: 需要节点服务器能正常访问的地址</li>
<li><strong>前端端口</strong>: 默认 6366</li>
<li><strong>后端端口</strong>: 默认 6365</li>
</ul>
</li>
<li>
<p><strong>自动化处理</strong>：</p>
<ul>
<li>检测 Docker 环境</li>
<li>自动检测 IPv6 支持并选择合适的配置</li>
<li>生成随机的数据库配置</li>
<li>下载并启动服务</li>
</ul>
</li>
</ol></section><section><h3><strong>配置示例</strong><a href="#配置示例"><span>#</span></a></h3><p>当前面板服务器地址: 192.168.1.100  # 或您的公网IP
前端端口（默认 6366）: 6366         # 直接回车使用默认值
后端端口（默认 6365）: 6365         # 直接回车使用默认值</p></section></section>
<section><h2><strong>验证安装</strong><a href="#验证安装"><span>#</span></a></h2><section><h3><strong>1. 检查服务状态</strong><a href="#1-检查服务状态"><span>#</span></a></h3><p>使用 docker-compose</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker-compose</span><span> </span><span>ps</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>或使用 docker compose</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>compose</span><span> </span><span>ps</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>您应该看到以下服务都处于 <code>Up</code> 状态</p><ul>
<li><code>gost-mysql</code> - 数据库服务</li>
<li><code>springboot-backend</code> - 后端 API 服务</li>
<li><code>vue-frontend</code> - 前端 Web 界面</li>
</ul></section><section><h3><strong>2. 访问 Web 界面</strong><a href="#2-访问-web-界面"><span>#</span></a></h3><p>打开浏览器访问：<code>http://your-server-ip:6366</code></p></section><section><h3><strong>3. 登录系统</strong><a href="#3-登录系统"><span>#</span></a></h3><p>使用默认管理员账号登录：</p><ul>
<li><strong>用户名</strong>: <code>admin_user</code></li>
<li><strong>密码</strong>: <code>admin_user</code>
⚠️ <strong>重要</strong>: 首次登录后请立即修改默认密码！</li>
</ul><p><img src="/uploads/1763035079189_IMG_3767.jpeg" alt="" /></p></section></section>
<section><h2><strong>IPv6 支持</strong><a href="#ipv6-支持"><span>#</span></a></h2><p>脚本会自动检测系统的 IPv6 支持：</p><ul>
<li>✅ <strong>支持 IPv6</strong>: 自动使用 IPv6 配置文件并配置 Docker IPv6 支持</li>
<li>⚠️ <strong>不支持 IPv6</strong>: 使用 IPv4 配置文件</li>
</ul><section><h3><strong>Docker IPv6 配置</strong><a href="#docker-ipv6-配置"><span>#</span></a></h3><p>如果检测到 IPv6 支持，脚本会自动配置：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span><span>    </span></span><span>{</span></div></div><div><div><div>2</div></div><div><span>      </span><span>"ipv6"</span><span>:</span><span> </span><span>true</span><span>,</span></div></div><div><div><div>3</div></div><div><span>      </span><span>"fixed-cidr-v6"</span><span>:</span><span> </span><span>"fd00::/80"</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2><strong>端口说明</strong><a href="#端口说明"><span>#</span></a></h2>

<table><thead><tr><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>端口</strong></td><td>服务</td><td>说明</td><td>可配置</td></tr><tr><td>6366</td><td>Web 界面</td><td>前端管理界面</td><td>✅</td></tr><tr><td>6365</td><td>API 服务</td><td>后端 REST API</td><td>✅</td></tr><tr><td>3306</td><td>MySQL</td><td>数据库服务（容器内部）</td><td>❌</td></tr><tr><td>动态分配</td><td>转发端口</td><td>用户创建的转发规则</td><td>✅</td></tr></tbody></table></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/15/</id>
      <title type="text">免费eu.cc域名 支持托管至cloudflare</title>
      <published>2025-10-07T00:00:00.000Z</published>
      <updated>2025-10-07T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/15/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<section><h2><strong>一、准备资料</strong><a href="#一准备资料"><span>#</span></a></h2><ul>
<li>1、一个邮箱（建议用gmail、outlook、qq等大厂邮箱）<br />
点击<a href="https://www.gname.vip/zhcn/register" target="_blank"><strong>【注册地址】</strong></a><br />
点击<a href="https://www.gname.vip/login" target="_blank"><strong>【登录地址】</strong></a><br />
点击<a href="https://www.gname.vip/zhcn/tld-eu-cc.html" target="_blank"><strong>【申请地址】</strong></a></li>
</ul></section>
<section><h2><strong>二、注册帐号</strong><a href="#二注册帐号"><span>#</span></a></h2><ul>
<li>
<p>1、帐号注册 点击<a href="https://www.gname.vip/zhcn/register" target="_blank"><strong>【注册地址】</strong></a></p>
</li>
<li>
<p>2、在注册页面、填写邮箱注册、登录密码、输入邮箱验证码,然后点注册</p>
</li>
<li>
<p>3、上面注册成功后,在邮箱里会收到一封邮箱(有可能在垃圾邮箱里),然后点邮箱里的激活帐号连接</p>
</li>
</ul></section>
<section><h2><strong>三、申请域名</strong><a href="#三申请域名"><span>#</span></a></h2><ul>
<li>点击<a href="https://www.gname.vip/zhcn/tld-eu-cc.html" target="_blank"><strong>【申请地址】</strong></a></li>
</ul><p><img src="/uploads/1774237069861_IMG_4062.webp" alt="" /></p><p><img src="/uploads/1774237071635_IMG_4063.webp" alt="" /></p><p><img src="/uploads/1774237067018_IMG_4064.webp" alt="" /></p></section>
<section><h2><strong>四、域名绑定Cloudflare</strong><a href="#四域名绑定cloudflare"><span>#</span></a></h2><p><img src="/uploads/1774237329069_IMG_4066.webp" alt="" /></p><p>1、申请注册免费Cloudflare帐号(邮箱就可以免费注册) <a href="https://dash.cloudflare.com/sign-up" target="_blank"><strong>【点击官网地址】</strong></a></p><ul>
<li>登录cloudflare找到 域注册-&gt;管理域-&gt;填你注册的域名-&gt;绑定DNS-&gt;cloudflare检查成dns-&gt;等激活成功</li>
</ul><blockquote><p><strong>💡提醒：</strong><br />
PS&lt;这个需要续期&gt;，一年一续期，免费续期 到期前90天内可续期。<br />
PS&lt;这个需要续期&gt;，一年一续期，免费续期 到期前90天内可续期。<br />
PS&lt;这个需要续期&gt;，一年一续期，免费续期 到期前90天内可续期。<br />
<a href="https://www.gname.vip/zhcn/tld-eu-cc.html" target="_blank"><strong>【免费续期地址】</strong></a></p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/14/</id>
      <title type="text">使用 Docker Compose 部署 qBittorrent（qbittorrentee）完整教程</title>
      <published>2025-10-05T00:00:00.000Z</published>
      <updated>2025-10-05T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/14/"/>
      <summary type="text">Docker安装qbittorrentee教程</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>在 NAS 或 Linux 服务器上部署一个稳定、可管理的 BT 下载工具是很多人的刚需。本文将介绍如何使用 <strong>Docker Compose</strong> 快速部署一个基于镜像 <code>superng6/qbittorrentee</code> 的 qBittorrent 容器服务。
本教程适用于 Ubuntu / Debian / 群晖 / OpenMediaVault 等支持 Docker 的系统。</p></section>
<section><h2>一、环境准备<a href="#一环境准备"><span>#</span></a></h2><section><h3>1️⃣ 安装 Docker<a href="#1️⃣-安装-docker"><span>#</span></a></h3><p>如果你的系统尚未安装 Docker，可参考官方文档安装：</p><ul>
<li>官网： <a href="https://www.docker.com/" target="_blank">https://www.docker.com/</a>
Ubuntu 示例：</li>
</ul><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>sudo</span><span> </span><span>apt</span><span> </span><span>update</span></div></div><div><div><div>2</div></div><div><span>    </span><span>sudo</span><span> </span><span>apt</span><span> </span><span>install</span><span> </span><span>docker.io</span><span> </span><span>-y</span></div></div><div><div><div>3</div></div><div><span>    </span><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>enable</span><span> </span><span>docker</span></div></div><div><div><div>4</div></div><div><span>    </span><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>start</span><span> </span><span>docker</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>2️⃣ 安装 Docker Compose<a href="#2️⃣-安装-docker-compose"><span>#</span></a></h3><p>新版 Docker 已自带 compose 插件，可通过以下命令确认：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>docker</span><span> </span><span>compose</span><span> </span><span>version</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果没有，可安装：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>sudo</span><span> </span><span>apt</span><span> </span><span>install</span><span> </span><span>docker-compose-plugin</span><span> </span><span>-y</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>二、创建项目目录<a href="#二创建项目目录"><span>#</span></a></h2><p>建议为 qBittorrent 创建独立目录：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>mkdir</span><span> </span><span>-p</span><span> </span><span>~/docker/qbittorrentee</span></div></div><div><div><div>2</div></div><div><span>    </span><span>cd</span><span> </span><span>~/docker/qbittorrentee</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>三、编写 docker-compose.yml 文件<a href="#三编写-docker-composeyml-文件"><span>#</span></a></h2><p>在当前目录创建文件：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>nano</span><span> </span><span>docker-compose.yml</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>写入以下内容：</p><div><div><div><figure><figcaption><span></span><span>Terminal window</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>version:</span><span> </span><span>"3"</span></div></div><div><div><div>2</div></div><div><span>    </span><span>services:</span></div></div><div><div><div>3</div></div><div><span>      </span><span>qbittorrentee:</span></div></div><div><div><div>4</div></div><div><span>        </span><span>image:</span><span> </span><span>superng6/qbittorrentee</span></div></div><div><div><div>5</div></div><div><span>        </span><span>container_name:</span><span> </span><span>qbittorrentee</span></div></div><div><div><div>6</div></div><div><span>        </span><span>environment:</span></div></div><div><div><div>7</div></div><div><span>          </span><span>-</span><span> </span><span>PUID=</span><span>1026</span></div></div><div><div><div>8</div></div><div><span>          </span><span>-</span><span> </span><span>PGID=</span><span>100</span></div></div><div><div><div>9</div></div><div><span>          </span><span>-</span><span> </span><span>TZ=Asia/Shanghai</span></div></div><div><div><div>10</div></div><div><span>          </span><span>-</span><span> </span><span>WEBUIPORT=</span><span>8080</span></div></div><div><div><div>11</div></div><div><span>          </span><span>-</span><span> </span><span>ENABLE_DOWNLOADS_PERM_FIX=</span><span>true</span></div></div><div><div><div>12</div></div><div><span>        </span><span>volumes:</span></div></div><div><div><div>13</div></div><div><span>          </span><span>-</span><span> </span><span>./qbittorrentee/config:/config</span></div></div><div><div><div>14</div></div><div><span>          </span><span>-</span><span> </span><span>./qbittorrentee/downloads:/downloads</span></div></div><div><div><div>15</div></div><div><span>        </span><span>ports:</span></div></div><div><div><div>16</div></div><div><span>          </span><span>-</span><span> </span><span>6881:6881</span></div></div><div><div><div>17</div></div><div><span>          </span><span>-</span><span> </span><span>6881:6881/udp</span></div></div><div><div><div>18</div></div><div><span>          </span><span>-</span><span> </span><span>8080:8080</span></div></div><div><div><div>19</div></div><div><span>        </span><span>restart:</span><span> </span><span>unless-stopped</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>保存并退出。</p></section>
<section><h2>四、参数说明<a href="#四参数说明"><span>#</span></a></h2><section><h3>🔹 镜像说明<a href="#-镜像说明"><span>#</span></a></h3><p><code>superng6/qbittorrentee</code> 是一个封装好的 qBittorrent WebUI 版本镜像。</p></section><section><h3>🔹 关键环境变量说明<a href="#-关键环境变量说明"><span>#</span></a></h3>

<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>端口</td><td>用途</td></tr><tr><td>6881 TCP</td><td>BT 下载</td></tr><tr><td>6881 UDP</td><td>DHT 网络</td></tr><tr><td>8080</td><td>Web 管理界面</td></tr></tbody></table></section><section><h3>🔹 数据目录说明<a href="#-数据目录说明"><span>#</span></a></h3>

<table><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td>宿主机路径</td><td>容器路径</td><td>作用</td></tr><tr><td>./qbittorrentee/config</td><td>/config</td><td>配置文件</td></tr><tr><td>./qbittorrentee/downloads</td><td>/downloads</td><td>下载目录</td></tr></tbody></table><p>建议确保目录权限正确：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>mkdir</span><span> </span><span>-p</span><span> </span><span>qbittorrentee/config</span></div></div><div><div><div>2</div></div><div><span>    </span><span>mkdir</span><span> </span><span>-p</span><span> </span><span>qbittorrentee/downloads</span></div></div><div><div><div>3</div></div><div><span>    </span><span>chmod</span><span> </span><span>-R</span><span> </span><span>775</span><span> </span><span>qbittorrentee</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>五、启动服务<a href="#五启动服务"><span>#</span></a></h2><p>在 docker-compose.yml 所在目录执行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>docker</span><span> </span><span>compose</span><span> </span><span>up</span><span> </span><span>-d</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>查看运行状态：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>docker</span><span> </span><span>ps</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>六、访问 Web 管理界面<a href="#六访问-web-管理界面"><span>#</span></a></h2><p>浏览器访问：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>    </span></span><span>http://服务器IP:8080</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>默认用户名：<code>admin</code></p><p>默认密码为随机生成，首次启动容器请查看日志。</p></section>
<section><h2>七、常用管理命令<a href="#七常用管理命令"><span>#</span></a></h2><section><h3>查看日志<a href="#查看日志"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>docker</span><span> </span><span>compose</span><span> </span><span>logs</span><span> </span><span>-f</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>重启服务<a href="#重启服务"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>docker</span><span> </span><span>compose</span><span> </span><span>restart</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>停止服务<a href="#停止服务"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>docker</span><span> </span><span>compose</span><span> </span><span>down</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>八、升级容器<a href="#八升级容器"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>docker</span><span> </span><span>compose</span><span> </span><span>pull</span></div></div><div><div><div>2</div></div><div><span>    </span><span>docker</span><span> </span><span>compose</span><span> </span><span>up</span><span> </span><span>-d</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>九、进阶建议<a href="#九进阶建议"><span>#</span></a></h2><section><h3>✅ 1. 开放端口到公网（如有需要）<a href="#-1-开放端口到公网如有需要"><span>#</span></a></h3><p>需在路由器上做端口转发。</p></section><section><h3>✅ 2. 配合反向代理<a href="#-2-配合反向代理"><span>#</span></a></h3><p>可结合 Nginx 或 Traefik 实现 HTTPS 访问。</p></section><section><h3>✅ 3. 搭配自动更新工具<a href="#-3-搭配自动更新工具"><span>#</span></a></h3><p>可使用 Watchtower 实现自动更新容器。</p></section></section>
<section><h2>十、常见问题排查<a href="#十常见问题排查"><span>#</span></a></h2><section><h3>❓ 无法下载 / 无速度<a href="#-无法下载--无速度"><span>#</span></a></h3><ul>
<li>检查 6881 端口是否开放</li>
<li>检查防火墙规则</li>
<li>检查 ISP 是否封锁 BT</li>
</ul></section><section><h3>❓ 权限错误<a href="#-权限错误"><span>#</span></a></h3><p>确认 PUID/PGID 是否与下载目录用户一致。</p></section></section>
<section><h2>总结<a href="#总结"><span>#</span></a></h2><p>使用 Docker Compose 部署 qBittorrent 的优势：</p><ul>
<li>配置清晰</li>
<li>易于备份</li>
<li>一条命令即可恢复</li>
<li>升级简单</li>
</ul><p>如果你是 NAS 用户或家庭服务器爱好者，这种部署方式非常推荐 👍</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/13/</id>
      <title type="text">Komari清理数据库</title>
      <published>2025-10-04T00:00:00.000Z</published>
      <updated>2025-10-04T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/13/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>komari 在随着使用的时间 数据库占用硬盘的大小也在随之增加 利用sqlite3 来清理数据库大小</p></section>
<section><h2>安装sqlite3<a href="#安装sqlite3"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>install</span><span> </span><span>sqlite3</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>适用于 1.2.6 版本及以后的 Komari<a href="#适用于-126-版本及以后的-komari"><span>#</span></a></h2><section><h3>一行命令清理数据库<a href="#一行命令清理数据库"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sqlite3</span><span> </span><span>/opt/komari/data/metrics.db</span><span> </span><span>"DELETE FROM metric_points; DELETE FROM metric_rollups; VACUUM;"</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>指标详解<a href="#指标详解"><span>#</span></a></h3><p>如果你只是想清理监控记录，而不是删除整个监控功能，可以删除存放数据的表内容。
一般来说：</p><ul>
<li>保留 <code>metric_definitions</code>（指标定义）</li>
<li>清空 <code>metric_points</code>（原始监控数据）</li>
<li>清空 <code>metric_rollups</code>（历史聚合数据）</li>
<li><code>VACUUM;</code>：重建数据库，回收磁盘空间。</li>
</ul></section></section>
<section><h2>适用于 1.2.5 版本及以前的 Komari<a href="#适用于-125-版本及以前的-komari"><span>#</span></a></h2><section><h3>一行命令清理数据库<a href="#一行命令清理数据库-1"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sqlite3</span><span> </span><span>/opt/komari/data/komari.db</span><span> </span><span>"DELETE FROM records; DELETE FROM records_long_term; DELETE FROM ping_records; VACUUM;"</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>命令解析<a href="#命令解析"><span>#</span></a></h3><ul>
<li><strong><code>sqlite3</code></strong>
调用 SQLite 命令行工具，用于执行数据库操作。</li>
<li><strong><code>/opt/komari/data/komari.db</code></strong>
指定需要操作的数据库文件，即 Komari 的 SQLite 数据库。</li>
<li><strong><code>DELETE FROM records;</code></strong>
删除 <code>records</code> 表中的所有数据，通常用于清空监控产生的短期记录。仅删除数据，不会删除数据表结构。</li>
<li><strong><code>DELETE FROM records_long_term;</code></strong>
删除 <code>records_long_term</code> 表中的所有数据，用于清空长期保存的监控历史记录。</li>
<li><strong><code>DELETE FROM ping_records;</code></strong>
删除 <code>ping_records</code> 表中的所有数据，用于清空 Ping 延迟历史记录。</li>
<li><strong><code>VACUUM;</code></strong>
对 SQLite 数据库执行整理和压缩操作，回收因删除数据而产生的空闲空间，并重新组织数据库文件，从而减小数据库体积、优化存储效率。</li>
</ul><blockquote><p><strong>说明：</strong> 该命令仅清空监控历史数据，不会删除数据库结构，也不会影响 Komari 的配置、用户信息或监控对象。执行完成后，Komari 会继续正常采集新的监控数据。</p></blockquote></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/12/</id>
      <title type="text">永久免费netlib.re域名，支持托管至CloudFlare。</title>
      <published>2025-10-02T00:00:00.000Z</published>
      <updated>2025-10-02T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/12/"/>
      <summary type="text">永久免费netlib.re域名</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>永久免费netlib.re域名，支持托管至CloudFlare。</p><blockquote><p><strong>注</strong>：添加NS记录会遇到<strong>名称服务器无效</strong> 可以尝试多注册几个（我注册第二个才成功）</p></blockquote></section>
<section><h2>注册账号<a href="#注册账号"><span>#</span></a></h2><p>官网：<a href="https://www.netlib.re/" target="_blank">https://www.netlib.re/</a>
密码为15位 注册后会发邮箱验证token 验证登录即可</p></section>
<section><h2>注册域名<a href="#注册域名"><span>#</span></a></h2><p>选择自己喜欢的域名
有netlib.re和codelib.re
<img src="/uploads/1763008999483_IMG_3748.jpeg" alt="" /></p></section>
<section><h2>托管至CloudFlare<a href="#托管至cloudflare"><span>#</span></a></h2><p>点击注册的域名<img src="/uploads/1763008998442_IMG_3749.jpeg" alt="" />
点击<code>Delegate your domain to different name servers</code>添加NS记录即可
<img src="/uploads/1763008995963_IMG_3750.jpeg" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/11/</id>
      <title type="text">将 Docker 部署的 Umami 从一台服务器迁移到另一台服务器</title>
      <published>2025-10-01T00:00:00.000Z</published>
      <updated>2025-10-01T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/11/"/>
      <summary type="text">Umami迁移</summary>
      <content type="html"><![CDATA[<section><h2>简介<a href="#简介"><span>#</span></a></h2><p>最近我购买了一台新的服务器，需要把 Umami 服务器从旧服务器迁移到新服务器上。但我是用 Docker 安装的 Umami。</p><div><div><div><figure><figcaption><span></span><span>Terminal window</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>version:</span><span> </span><span>'3'</span></div></div><div><div><div>2</div></div><div><span>    </span><span>services:</span></div></div><div><div><div>3</div></div><div><span>      </span><span>umami:</span></div></div><div><div><div>4</div></div><div><span>        </span><span>image:</span><span> </span><span>ghcr.io/umami-software/umami:postgresql-latest</span></div></div><div><div><div>5</div></div><div><span>        </span><span>ports:</span></div></div><div><div><div>6</div></div><div><span>          </span><span>-</span><span> </span><span>"3000:3000"</span></div></div><div><div><div>7</div></div><div><span>        </span><span>environment:</span></div></div><div><div><div>8</div></div><div><span>          </span><span>DATABASE_URL:</span><span> </span><span>postgresql://umami:umami@db:5432/umami</span></div></div><div><div><div>9</div></div><div><span>          </span><span>DATABASE_TYPE:</span><span> </span><span>postgresql</span></div></div><div><div><div>10</div></div><div><span>          </span><span>APP_SECRET:</span><span> </span><span>replace-me-with-a-random-string</span></div></div><div><div><div>11</div></div><div><span>        </span><span>depends_on:</span></div></div><div><div><div>12</div></div><div><span>          </span><span>db:</span></div></div><div><div><div>13</div></div><div><span>            </span><span>condition:</span><span> </span><span>service_healthy</span></div></div><div><div><div>14</div></div><div><span>        </span><span>restart:</span><span> </span><span>always</span></div></div><div><div><div>15</div></div><div><span>      </span><span>db:</span></div></div><div><div><div>16</div></div><div><span>        </span><span>image:</span><span> </span><span>postgres:15-alpine</span></div></div><div><div><div>17</div></div><div><span>        </span><span>environment:</span></div></div><div><div><div>18</div></div><div><span>          </span><span>POSTGRES_DB:</span><span> </span><span>umami</span></div></div><div><div><div>19</div></div><div><span>          </span><span>POSTGRES_USER:</span><span> </span><span>umami</span></div></div><div><div><div>20</div></div><div><span>          </span><span>POSTGRES_PASSWORD:</span><span> </span><span>umami</span></div></div><div><div><div>21</div></div><div><span>        </span><span>volumes:</span></div></div><div><div><div>22</div></div><div><span>          </span><span>-</span><span> </span><span>umami-db-data:/var/lib/postgresql/data</span></div></div><div><div><div>23</div></div><div><span>        </span><span>restart:</span><span> </span><span>always</span></div></div><div><div><div>24</div></div><div><span>        </span><span>healthcheck:</span></div></div><div><div><div>25</div></div><div><span>          </span><span>test</span><span>:</span><span> [</span><span>"CMD-SHELL"</span><span>, </span><span>"pg_isready -U </span><span>$$</span><span>{POSTGRES_USER} -d </span><span>$$</span><span>{POSTGRES_DB}"]</span></div></div><div><div><div>26</div></div><div><span>          </span><span>interval:</span><span> </span><span>5s</span></div></div><div><div><div>27</div></div><div><span>          </span><span>timeout:</span><span> </span><span>5s</span></div></div><div><div><div>28</div></div><div><span>          </span><span>retries:</span><span> </span><span>5</span></div></div><div><div><div>29</div></div><div><span>    </span><span>volumes:</span></div></div><div><div><div>30</div></div><div><span>      </span><span>umami-db-data:</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>迁移中最困难和重要的部分就是导出 Umami 的数据。我们有几种方法可以实现：</p><ul>
<li>导出 Docker 卷（非常复杂）</li>
<li>导出数据库（我的选择）</li>
<li>复制整个路径（不推荐）</li>
</ul></section>
<section><h2>比较方法<a href="#比较方法"><span>#</span></a></h2><p>首先，我们要知道 Umami 的数据是存储在卷（Volume）中的。因为 <code>docker-compose.yml</code> 指定了：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>services:</span></div></div><div><div><div>2</div></div><div><span>      </span><span>db:</span></div></div><div><div><div>3</div></div><div><span>        </span><span>volumes:</span></div></div><div><div><div>4</div></div><div><span>          </span><span>-</span><span> </span><span>umami-db-data:/var/lib/postgresql/data</span></div></div><div><div><div>5</div></div><div><span>    </span><span>volumes:</span></div></div><div><div><div>6</div></div><div><span>      </span><span>umami-db-data:</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果我把路径挂载到容器里而不是卷，那就可以直接把路径复制到新机器上。比如:</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>services:</span></div></div><div><div><div>2</div></div><div><span>      </span><span>db:</span></div></div><div><div><div>3</div></div><div><span>        </span><span>volumes:</span></div></div><div><div><div>4</div></div><div><span>          </span><span>-</span><span> </span><span>/root/umami/data:/var/lib/postgresql/data</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>最后，我决定只导出数据库并导入到新实例中。让我们一步一步来。</p></section>
<section><h2>迁移数据库<a href="#迁移数据库"><span>#</span></a></h2><section><h3>备份<a href="#备份"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>exec</span><span> </span><span>umami-db-1</span><span> </span><span>sh</span><span> </span><span>-c</span><span> </span><span>'pg_dump --username=umami umami &gt; /umami.sql'</span><span> &amp;&amp; </span><span>\</span></div></div><div><div><div>2</div></div><div><span>docker</span><span> </span><span>cp</span><span> </span><span>umami-db-1:/umami.sql</span><span> </span><span>/root/</span><span> &amp;&amp; </span><span>\</span></div></div><div><div><div>3</div></div><div><span>docker</span><span> </span><span>exec</span><span> </span><span>umami-db-1</span><span> </span><span>rm</span><span> </span><span>/umami.sql</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>删除数据库<a href="#删除数据库"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>exec</span><span> </span><span>umami-db-1</span><span> </span><span>psql</span><span> </span><span>--username=umami</span><span> </span><span>--dbname=postgres</span><span> </span><span>-c</span><span> </span><span>"DROP DATABASE IF EXISTS umami;"</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>创建新的数据库<a href="#创建新的数据库"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>exec</span><span> </span><span>umami-db-1</span><span> </span><span>psql</span><span> </span><span>--username=umami</span><span> </span><span>--dbname=postgres</span><span> </span><span>-c</span><span> </span><span>"CREATE DATABASE umami;"</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>导入备份<a href="#导入备份"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>cp</span><span> </span><span>/root/umami.sql</span><span> </span><span>umami-db-1:/umami.sql</span><span> &amp;&amp; </span><span>\</span></div></div><div><div><div>2</div></div><div><span>docker</span><span> </span><span>exec</span><span> </span><span>-i</span><span> </span><span>umami-db-1</span><span> </span><span>psql</span><span> </span><span>--username=umami</span><span> </span><span>--dbname=umami</span><span> </span><span>-f</span><span> </span><span>/umami.sql</span><span> &amp;&amp; </span><span>\</span></div></div><div><div><div>3</div></div><div><span>docker</span><span> </span><span>exec</span><span> </span><span>umami-db-1</span><span> </span><span>rm</span><span> </span><span>/umami.sql</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>重启 Umami 实例：<a href="#重启-umami-实例"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>compose</span><span> </span><span>down</span></div></div><div><div><div>2</div></div><div><span>docker</span><span> </span><span>compose</span><span> </span><span>up</span><span> </span><span>-d</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>检查<a href="#检查"><span>#</span></a></h2><p>现在可以检查数据库是否迁移成功了。打开新 Umami 的 URL，尝试用原来的账号登录。如果能登录，那数据库很可能迁移成功了（账号信息是存在数据库里的）。
为了进一步确认，你可以进入仪表盘，看看所有数据是否正常显示。
如果不正常，说明数据库没有成功迁移。你可以检查导出的备份文件（里面是否包含正确的数据？），以及导入的方式（看看备份文件是否成功导入到新的 Postgres）。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/10/</id>
      <title type="text">给哪吒面板添加周期流量显示</title>
      <published>2025-09-30T00:00:00.000Z</published>
      <updated>2025-09-30T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/10/"/>
      <summary type="text">哪吒流量显示</summary>
      <content type="html"><![CDATA[<p>效果图：
<img src="/uploads/1763009337762_IMG_3759.jpeg" alt="" /></p>
<section><h1>自定义代码<a href="#自定义代码"><span>#</span></a></h1><p>在面板后台自定义代码中加入如下代码 （只支持V1版）</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>&lt;script</span><span> </span><span>src="https://cdn.jsdelivr.net/gh/leuxinovo/nezha-ui@main/traffic-display.js"&gt;&lt;/script&gt;"</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/9/</id>
      <title type="text">Docker部署Sub-Store订阅管理系统</title>
      <published>2025-09-01T06:51:40.000Z</published>
      <updated>2025-09-01T06:51:40.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/9/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<section><h1>一、Sub-Store 简介<a href="#一sub-store-简介"><span>#</span></a></h1><p><strong>Sub-Store</strong> 是一款开源的订阅转换服务，支持聚合多个订阅链接并输出为不同客户端格式。</p><p>它能让你：</p><ul>
<li>
<p>将多个机场或自建节点订阅整合；</p>
</li>
<li>
<p>输出为 Clash / Surge / QuantumultX / Loon / Shadowrocket 等格式；</p>
</li>
<li>
<p>自定义节点筛选、排序、分组；</p>
</li>
<li>
<p>通过 Web 界面轻松管理。</p>
</li>
</ul><p>GitHub 项目地址：<br />
👉 <a href="https://github.com/sub-store-org/Sub-Store" target="_blank">https://github.com/sub-store-org/Sub-Store</a></p></section>
<section><h1>二、部署环境准备<a href="#二部署环境准备"><span>#</span></a></h1><p>推荐系统环境：</p>

<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>系统</td><td>支持</td></tr><tr><td>Debian 12 / Ubuntu 22.04</td><td>✅ 推荐</td></tr><tr><td>Alpine / CentOS 7+</td><td>✅ 支持</td></tr><tr><td>内存要求</td><td>≥ 256MB</td></tr></tbody></table><p>确保系统已安装：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>update</span><span> &amp;&amp; </span><span>apt</span><span> </span><span>install</span><span> </span><span>-y</span><span> </span><span>docker.io</span><span> </span><span>docker-compose</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h1>三、Docker Compose 配置文件<a href="#三docker-compose-配置文件"><span>#</span></a></h1><p>在服务器任意目录（如 <code>/root/sub-store</code>）下创建文件：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>mkdir</span><span> </span><span>-p</span><span> </span><span>/root/sub-store</span></div></div><div><div><div>2</div></div><div><span>cd</span><span> </span><span>/root/sub-store</span></div></div><div><div><div>3</div></div><div><span>nano</span><span> </span><span>docker-compose.yml</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>然后粘贴以下内容 👇：</p><div><div><div><figure><figcaption><span></span><span>Terminal window</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>version:</span><span> </span><span>"3.8"</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>services:</span></div></div><div><div><div>4</div></div><div><span>  </span><span>sub-store:</span></div></div><div><div><div>5</div></div><div><span>    </span><span>image:</span><span> </span><span>xream/sub-store:latest</span></div></div><div><div><div>6</div></div><div><span>    </span><span>container_name:</span><span> </span><span>sub-store</span></div></div><div><div><div>7</div></div><div><span>    </span><span>restart:</span><span> </span><span>always</span></div></div><div><div><div>8</div></div><div><span>    </span><span>ports:</span></div></div><div><div><div>9</div></div><div><span>      </span><span>-</span><span> </span><span>"3001:3001"</span></div></div><div><div><div>10</div></div><div><span>    </span><span>volumes:</span></div></div><div><div><div>11</div></div><div><span>      </span><span>-</span><span> </span><span>./data:/opt/app/data</span></div></div><div><div><div>12</div></div><div><span>    </span><span>environment:</span></div></div><div><div><div>13</div></div><div><span>      </span><span>SUB_STORE_FRONTEND_BACKEND_PATH:</span><span> </span><span>/MySecretToken123</span></div></div><div><div><div>14</div></div><div><span>      </span><span>SUB_STORE_BACKEND_SYNC_CRON:</span><span> </span><span>"55 23 * * *"</span></div></div><div><div><div>15</div></div><div><span>      </span><span>SUB_STORE_BODY_JSON_LIMIT:</span><span> </span><span>10mb</span></div></div><div><div><div>16</div></div><div><span>      </span><span>SUB_STORE_CORS_ALLOWED_ORIGINS:</span><span> </span><span>"*"</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><section><h2>⚠️ 建议你修改<a href="#️-建议你修改"><span>#</span></a></h2><section><h3>自定义后端 API 路径<a href="#自定义后端-api-路径"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>SUB_STORE_FRONTEND_BACKEND_PATH=/MySecretToken123</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改自定义后端 API 路径 示例：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>SUB_STORE_FRONTEND_BACKEND_PATH</span><span>=</span><span>/rd304CYuZ2KByUk4WRHF</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>这样可以防止被随意访问。</p><p>可以使用随机生成密码网站生成：<a href="https://1password.com/zh-cn/password-generator" target="_blank">https://1password.com/zh-cn/password-generator</a></p></section><section><h3>设置跨域来源<a href="#设置跨域来源"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>SUB_STORE_CORS_ALLOWED_ORIGINS: "*"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>推荐填写实际使用的前端域名 示例：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>SUB_STORE_CORS_ALLOWED_ORIGINS: "https://sub.xxx.com"</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>端口映射<a href="#端口映射"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>"3001:3001"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>若使用 Caddy、Nginx 等反向代理，建议使用 <code>127.0.0.1:3001:3001</code>，避免直接暴露服务端口。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>"127.0.0.1:3001:3001"</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section></section>
<section><h1>四、配置详解<a href="#四配置详解"><span>#</span></a></h1><section><h2>Docker Compose 配置参数说明<a href="#docker-compose-配置参数说明"><span>#</span></a></h2>

<table><thead><tr><th>配置项</th><th>示例</th><th>作用</th><th>说明</th></tr></thead><tbody><tr><td><code>image</code></td><td><code>xream/sub-store:latest</code></td><td>指定 Docker 镜像</td><td>使用 <code>xream/sub-store</code> 提供的 Sub-Store Docker 镜像。<code>latest</code> 表示使用镜像仓库中的最新版本。</td></tr><tr><td><code>container_name</code></td><td><code>sub-store</code></td><td>指定容器名称</td><td>将 Docker 容器名称设置为 <code>sub-store</code>，方便后续使用 <code>docker logs sub-store</code>、<code>docker restart sub-store</code> 等命令管理容器。</td></tr><tr><td><code>restart</code></td><td><code>always</code></td><td>设置自动重启</td><td>设置为 <code>always</code> 后，如果 Sub-Store 容器异常退出，Docker 会自动尝试重新启动；同时 Docker 服务重启后容器也会自动启动。</td></tr><tr><td><code>ports</code></td><td><code>3001:3001</code></td><td>设置端口映射</td><td>将 宿主机的 <code>3001</code> 端口 映射到 Docker 容器的 <code>3001</code> 端口。若使用 Caddy、Nginx 等反向代理，建议使用 <code>127.0.0.1:3001:3001</code>，避免直接暴露服务端口。</td></tr><tr><td><code>volumes</code></td><td><code>./data:/opt/app/data</code></td><td>持久化数据</td><td>将 Docker Compose 文件所在目录下的 <code>data</code> 文件夹挂载到容器内的 <code>/opt/app/data</code>。这样即使删除或重新创建容器，Sub-Store 的数据仍然可以保存在宿主机上。</td></tr><tr><td><code>SUB_STORE_FRONTEND_BACKEND_PATH</code></td><td><code>/MySecretToken123</code></td><td>自定义前端后端路径</td><td>修改 Sub-Store 前端访问后端 API 时使用的路径。例如设置为 <code>/MySecretToken123</code> 后，前端与后端之间会使用该自定义路径进行通信。该配置不是登录密码，也不属于真正的身份认证机制。</td></tr><tr><td><code>SUB_STORE_BACKEND_SYNC_CRON</code></td><td><code>"55 23 * * *"</code></td><td>设置后端定时同步</td><td>使用 Cron 表达式设置 Sub-Store 后端的定时同步任务。<code>55 23 * * *</code> 表示每天晚上 <code>23:55</code> 执行一次。</td></tr><tr><td><code>SUB_STORE_BODY_JSON_LIMIT</code></td><td><code>10mb</code></td><td>限制 JSON 请求大小</td><td>设置后端能够接受的 JSON 请求体大小。设置为 <code>10mb</code> 后，可以允许最大约 <code>10 MB</code> 的 JSON 数据请求，同时避免过大的请求占用过多服务器资源。</td></tr><tr><td><code>SUB_STORE_CORS_ALLOWED_ORIGINS</code></td><td><code>"*"</code></td><td>设置跨域访问来源</td><td>用于设置允许访问 Sub-Store 后端的跨域来源。设置为 <code>*</code> 表示允许任意 Origin 进行跨域请求，兼容性较好，但相比指定域名安全性较低。</td></tr></tbody></table></section></section>
<section><h1>五、启动服务<a href="#五启动服务"><span>#</span></a></h1><p>保存文件后执行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>compose</span><span> </span><span>up</span><span> </span><span>-d</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>查看运行状态：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>ps</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>若一切正常，你会看到类似输出：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>    </span></span><span>CONTAINER ID   IMAGE             STATUS          PORTS</span></div></div><div><div><div>2</div></div><div><span><span>    </span></span><span>a1b2c3d4e5f6   xream/sub-store   Up 10 seconds   0.0.0.0:3001-&gt;3001/tcp</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h1>六、Caddy反代<a href="#六caddy反代"><span>#</span></a></h1><p>编辑/etc/caddy/Caddyfile</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nano</span><span> </span><span>/etc/caddy/Caddyfile</span></div></div></code></pre><div><div></div><div></div></div></figure></div><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>example.com</span><span> </span><span>{</span></div></div><div><div><div>2</div></div><div><span>   </span><span>reverse_proxy</span><span> </span><span>localhost:3001</span></div></div><div><div><div>3</div></div><div><span><span> </span></span><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重启caddy</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>systemctl</span><span> </span><span>restart</span><span> </span><span>caddy</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h1>七、访问与初始设置<a href="#七访问与初始设置"><span>#</span></a></h1><p>浏览器访问：</p><p><strong><a href="https://%E4%BD%A0%E7%9A%84%E5%9F%9F%E5%90%8D" target="_blank">https://你的域名</a></strong></p><p>若配置了后端路径（如 <code>/ks9foTp4xE8fr24pg2DZ</code>），<br />
打开 <strong>反代域名</strong> 输入后端路径<code>ks9foTp4xE8fr24pg2DZ</code></p><p>你会看到 Sub-Store 的管理界面，可以：</p><ul>
<li>
<p>添加或导入订阅；</p>
</li>
<li>
<p>设置转换规则；</p>
</li>
<li>
<p>生成统一的订阅链接。</p>
</li>
</ul></section>
<section><h1>八、设置Gist同步<a href="#八设置gist同步"><span>#</span></a></h1><section><h2>1.拥有一个 GitHub 账号<a href="#1拥有一个-github-账号"><span>#</span></a></h2><p>注册或登录：<a href="https://github.com/" target="_blank">https://github.com/</a></p></section><section><h2>2.获取一个 <strong>GitHub Personal Access Token（访问令牌）</strong><a href="#2获取一个-github-personal-access-token访问令牌"><span>#</span></a></h2><ol>
<li>
<p>打开 <a href="https://github.com/settings/tokens" target="_blank">https://github.com/settings/tokens</a></p>
</li>
<li>
<p>点击Token（classic）并在右上选择Generate new token（classic）</p>
</li>
<li>
<p>勾上Repo和Gist这两项后，点击底下的Generate token即生成Token了</p>
</li>
<li>
<p>生成后复制该 token（⚠️ 只显示一次！）</p>
</li>
</ol><p>建议保存到安全的地方，例如 <code>~/.config/sub-store/token.txt</code>。</p><p><img src="/uploads/1763035028805_IMG_3764.jpeg" alt="" /></p></section><section><h2>3.Sub-store设置Gist同步<a href="#3sub-store设置gist同步"><span>#</span></a></h2><p>将Github用户名和获取的Token粘贴进去即可</p><p><img src="/uploads/1763035001673_IMG_3765.jpeg" alt="" /></p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/8/</id>
      <title type="text">AkDNS免费DNS解锁流媒体</title>
      <published>2025-08-10T00:00:00.000Z</published>
      <updated>2025-08-10T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/8/"/>
      <summary type="text">DNS解锁流媒体</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>AkileCloud开放自定义DNS解锁 目前可以添加10个非Akile ip和无限个Akile ip</p></section>
<section><h2>教程<a href="#教程"><span>#</span></a></h2><p>打开官网注册账号：<a href="https://dns.akile.ai" target="_blank">https://dns.akile.ai</a></p><p>添加自己的服务器ip</p><p><img src="/uploads/1770726614422_IMG_3997.jpeg" alt="" /></p><p>点击添加的ip</p><p><img src="/uploads/1770726834132_IMG_3998.jpeg" alt="" /></p><p>选择需要解锁的服务、流媒体 然后保存配置</p><p><img src="/uploads/1770726912865_IMG_3999.jpeg" alt="" /></p><p>在vps中使用测试连通性脚本</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>wget</span><span> </span><span>-qO-</span><span> </span><span>https://raw.githubusercontent.com/akile-network/aktools/refs/heads/main/akdns.sh</span><span> |</span><span>bash</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>选择最快的ip</p><p><img src="/uploads/1770727084542_547532395-a6162ab8-3e44-4d92-bf10-6e8eaa24f62f.jpg" alt="" /></p><p>在vps中添加dns解锁 将<strong>DNSip</strong>换成连通性测试脚本中延迟最低的ip</p><blockquote><p>一键脚本：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>cp</span><span> </span><span>/etc/resolv.conf</span><span> </span><span>/etc/resolv.conf.bak</span><span> &amp;&amp; </span><span>echo</span><span> </span><span>"nameserver DNSip"</span><span> &gt; </span><span>/etc/resolv.conf</span></div></div></code></pre><div><div></div><div></div></div></figure></div></blockquote><p>最后使用流媒体解锁脚本查看是否生效</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>bash</span><span> </span><span>&lt;(</span><span>curl</span><span> </span><span>-L</span><span> </span><span>-s</span><span> https://raw.githubusercontent.com/xykt/RegionRestrictionCheck/main/check.sh)</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p><img src="/uploads/1770727320116_IMG_4001.jpeg" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/7/</id>
      <title type="text">linux系统清理脚本 清理缓存、旧内核、docker镜像等</title>
      <published>2025-07-13T00:00:00.000Z</published>
      <updated>2025-07-13T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/7/"/>
      <summary type="text">vps清理脚本</summary>
      <content type="html"><![CDATA[<section><h3>一键脚本<a href="#一键脚本"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>bash</span><span> </span><span>&lt;(</span><span>curl</span><span> </span><span>-sL</span><span> https://raw.githubusercontent.com/leuxinovo/clearvps/main/leuql.sh)</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h3>🧭 主要功能一览<a href="#-主要功能一览"><span>#</span></a></h3><section><h4>🖥 系统概况<a href="#-系统概况"><span>#</span></a></h4><ul>
<li>显示系统基础信息（内核版本、架构、发行版等）</li>
<li>查看根分区磁盘使用情况</li>
<li>查看内存与 Swap 使用情况</li>
<li>清理前的资源总览</li>
</ul></section><section><h4>🔒 进程清理<a href="#-进程清理"><span>#</span></a></h4><ul>
<li>自动检测并解除 <strong>APT / Dpkg 锁</strong></li>
<li>防止包管理器因意外中断而被锁定</li>
</ul></section><section><h4>🧾 日志清理<a href="#-日志清理"><span>#</span></a></h4><ul>
<li>清空旧日志文件，保留日志结构</li>
<li>减少 <code>/var/log</code> 占用空间</li>
</ul></section><section><h4>🧹 临时与缓存清理<a href="#-临时与缓存清理"><span>#</span></a></h4><ul>
<li>清理系统临时目录与缓存文件：</li>
<li><code>/tmp</code></li>
<li><code>/var/tmp</code></li>
<li><code>/var/cache</code></li>
<li>释放短期存储占用</li>
</ul></section><section><h4>📦 包缓存清理<a href="#-包缓存清理"><span>#</span></a></h4><ul>
<li>清理 <strong>APT / DNF</strong> 的下载缓存与历史记录</li>
<li>删除旧版本包缓存文件</li>
<li>优化包管理空间使用</li>
</ul></section><section><h4>✂️ 组件裁剪<a href="#️-组件裁剪"><span>#</span></a></h4><ul>
<li>移除非必要组件与工具包</li>
<li>精简系统体积</li>
</ul></section><section><h4>🧽 系统瘦身<a href="#-系统瘦身"><span>#</span></a></h4><ul>
<li>删除系统文档与手册（<code>/usr/share/doc</code> 等）</li>
<li>删除静态库文件（<code>.a</code>）</li>
<li>清理 Python 缓存文件（<code>.pyc</code>、<code>__pycache__</code>）</li>
<li>进一步减少系统体积</li>
</ul></section><section><h4>🐳 Docker 清理<a href="#-docker-清理"><span>#</span></a></h4><ul>
<li>一键清理 Docker 未使用资源：</li>
<li>停止的容器</li>
<li>未使用的镜像</li>
<li>残留的卷与网络</li>
<li>相当于自动执行 <code>docker system prune -a -f</code></li>
</ul></section><section><h4>⚙️ 内核清理<a href="#️-内核清理"><span>#</span></a></h4><ul>
<li>保留当前运行与最新版本内核</li>
<li>删除旧内核包、头文件等</li>
<li>防止 <code>/boot</code> 分区被占满</li>
</ul></section><section><h4>⚡ 内存优化<a href="#-内存优化"><span>#</span></a></h4><ul>
<li>检测系统负载与内存可用率</li>
<li>在低负载时自动回收缓存（<code>drop_caches</code>）</li>
<li>避免在高负载时清理造成卡顿或断连</li>
</ul></section><section><h4>🪶 SSD TRIM<a href="#-ssd-trim"><span>#</span></a></h4><ul>
<li>对 SSD 执行 <code>fstrim</code> 操作</li>
<li>提升磁盘性能与寿命</li>
</ul></section><section><h4>📊 汇总报告<a href="#-汇总报告"><span>#</span></a></h4><ul>
<li>清理完成后自动展示：</li>
<li>最新磁盘与内存使用情况</li>
<li>清理前后资源对比</li>
<li>本次释放的空间总量</li>
</ul></section></section>
<section><h3>效果图<a href="#效果图"><span>#</span></a></h3><p><img src="/uploads/1763009406539_IMG_3760.jpeg" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/6/</id>
      <title type="text">rsync实时备份到另一台服务器</title>
      <published>2025-05-14T00:00:00.000Z</published>
      <updated>2025-05-14T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/6/"/>
      <summary type="text">实时备份文件到另一台服务器</summary>
      <content type="html"><![CDATA[<section><h3>前言：<a href="#前言"><span>#</span></a></h3><p>如果需要两台服务器数据同步 可以使用此脚本实现修改文件、删除文件自动同步数据
本脚本需要密钥实现免密传文件到另一台服务器
以debian系统为例</p></section>
<section><h3>安装<a href="#安装"><span>#</span></a></h3><p>两台服务器都要安装rsync</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>install</span><span> </span><span>rsync</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>需要备份的服务器安装实时监控inotify-tools</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>install</span><span> </span><span>inotify-tools</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>创建实时备份脚本</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>vim</span><span> </span><span>rsync_backup.sh</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>手动备份全部</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>rsync</span><span> </span><span>-av</span><span> </span><span>/备份目录</span><span> </span><span>root@远程服务器ip:/存储目录</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>手动远程同步</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>rsync</span><span> </span><span>-avz</span><span> </span><span>--delete</span><span> </span><span>/备份目录</span><span> </span><span>root@远程服务器ip:/存储目录</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>卸载实时监控inotify-tools</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>apt-get</span><span> </span><span>autoremove</span><span> </span><span>--purge</span><span> </span><span>inotify-tools</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h3>创建实时备份脚本<a href="#创建实时备份脚本"><span>#</span></a></h3><p>脚本见文章最下面
设置可读权限</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>chmod</span><span> </span><span>+x</span><span> </span><span>rsync_backup.sh</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>设置后台运行</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>vim</span><span> </span><span>/etc/systemd/system/rsync-backup.service</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>后台运行脚本见文章最下面
重新加载配置</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>daemon-reload</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>启动后台运行</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>start</span><span> </span><span>rsync-backup.service</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h3>申请密钥 实现免密传文件到另一台服务器<a href="#申请密钥-实现免密传文件到另一台服务器"><span>#</span></a></h3><p>申请密钥 一路回车即可</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ssh-keygen</span><span> </span><span>-t</span><span> </span><span>ecdsa</span><span> </span><span>-b</span><span> </span><span>521</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>导入公钥到另一台vps</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ssh-copy-id</span><span> </span><span>-i</span><span> </span><span>~/.ssh/id_ecdsa.pub</span><span> </span><span>-p</span><span> </span><span>服务器端口</span><span> </span><span>root@服务器IP地址</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果是导入自己的密钥 请给私钥设置可读权限</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>chmod</span><span> </span><span>600</span><span> </span><span>.ssh/id_ecdsa</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h3>实时备份脚本<a href="#实时备份脚本"><span>#</span></a></h3><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>#!/bin/bash</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>    </span><span># 监控目录</span></div></div><div><div><div>4</div></div><div><span>    </span><span>SOURCE_DIR</span><span>=</span><span>"/备份目录"</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>    </span><span># 备份到的远程服务器路径</span></div></div><div><div><div>7</div></div><div><span>    </span><span>REMOTE_DIR</span><span>=</span><span>"root@ip:/存储目录"</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>    </span><span># 使用 inotifywait 监控文件的变化</span></div></div><div><div><div>10</div></div><div><span>    </span><span>inotifywait</span><span> </span><span>-m</span><span> </span><span>-r</span><span> </span><span>-e</span><span> </span><span>modify,create,delete</span><span> </span><span>--exclude</span><span> </span><span>'.*\.swp|.*\.bak'</span><span> </span><span>"</span><span>$SOURCE_DIR</span><span>"</span><span> |</span></div></div><div><div><div>11</div></div><div><span>    </span><span>while</span><span> </span><span>read</span><span> </span><span>path</span><span> </span><span>action</span><span> </span><span>file</span><span>; </span><span>do</span></div></div><div><div><div>12</div></div><div><span>        </span><span>echo</span><span> </span><span>"File </span><span>$file</span><span> in directory </span><span>$path</span><span> was </span><span>$action</span><span>. Starting rsync backup..."</span></div></div><div><div><div>13</div></div><div><span>        </span><span># 同步文件的修改、创建、删除操作</span></div></div><div><div><div>14</div></div><div><span>        </span><span>rsync</span><span> </span><span>-avz</span><span> </span><span>--delete</span><span> </span><span>"</span><span>$SOURCE_DIR</span><span>"</span><span> </span><span>"</span><span>$REMOTE_DIR</span><span>"</span></div></div><div><div><div>15</div></div><div><span>    </span><span>done</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>
<section><h3>后台运行脚本<a href="#后台运行脚本"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span><span>    </span></span><span>[Unit]</span></div></div><div><div><div>2</div></div><div><span>    </span><span>Description</span><span>=</span><span>Rsync</span><span> </span><span>Backup</span><span> </span><span>Script</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>[Service]</span></div></div><div><div><div>5</div></div><div><span>    </span><span>ExecStart</span><span>=</span><span>/root/rsync_backup.sh</span></div></div><div><div><div>6</div></div><div><span>    </span><span>Restart</span><span>=</span><span>always</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>[Install]</span></div></div><div><div><div>9</div></div><div><span>    </span><span>WantedBy</span><span>=</span><span>multi-user.target</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/5/</id>
      <title type="text">rclone定时备份文件到网盘</title>
      <published>2025-05-12T00:00:00.000Z</published>
      <updated>2025-05-12T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/5/"/>
      <summary type="text">定时备份文件到网盘</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p><strong>建站都遇到过vps宕机，没有备份网站，导致网站数据丢失。可以利用这个脚本，定时备份文件到网盘。</strong></p></section>
<section><h2>安装rclone<a href="#安装rclone"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>curl</span><span> </span><span>https://rclone.org/install.sh</span><span> | </span><span>sudo</span><span> </span><span>bash</span></div></div></code></pre><div><div></div><div></div></div></figure></div><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>rclone</span><span> </span><span>config</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>以mega网盘为例
<img src="/uploads/1763009644983_IMG_3761.jpeg" alt="" /></p></section>
<section><h2>脚本<a href="#脚本"><span>#</span></a></h2><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>#!/bin/bash</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>4</div></div><div><span>    </span><span>#        可配置项</span></div></div><div><div><div>5</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>    </span><span># 要备份的目录（不要加 /）</span></div></div><div><div><div>8</div></div><div><span>    </span><span>source_dir</span><span>=</span><span>"/备份目录"</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>    </span><span># 本地备份目录</span></div></div><div><div><div>11</div></div><div><span>    </span><span>backup_dir</span><span>=</span><span>"/本地备份目录"</span></div></div><div><div><div>12</div></div><div><span>    </span><span>mkdir</span><span> </span><span>-p</span><span> </span><span>"</span><span>$backup_dir</span><span>"</span></div></div><div><div><div>13</div></div><div>
</div></div><div><div><div>14</div></div><div><span>    </span><span># rclone 远程路径（例如 gdrive:/backup）</span></div></div><div><div><div>15</div></div><div><span>    </span><span>remote</span><span>=</span><span>"路径:/文件路径"</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span>    </span><span># 允许通过环境变量设置自定义前缀，默认值为 "backup"</span></div></div><div><div><div>18</div></div><div><span>    </span><span>filename_prefix</span><span>=</span><span>"</span><span><span>${</span><span>FILENAME_PREFIX</span></span><span>:-</span><span><span>backup</span><span>}</span></span><span>"</span></div></div><div><div><div>19</div></div><div>
</div></div><div><div><div>20</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>21</div></div><div><span>    </span><span>#        自动变量</span></div></div><div><div><div>22</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>23</div></div><div>
</div></div><div><div><div>24</div></div><div><span>    </span><span>now</span><span><span>=</span><span>$(</span></span><span>date</span><span> </span><span>+"%Y-%m-%d_%H-%M-%S"</span><span>)</span></div></div><div><div><div>25</div></div><div><span>    </span><span>backup_file</span><span>=</span><span>"</span><span>$backup_dir</span><span>/</span><span><span>${</span><span>filename_prefix</span><span>}</span></span><span>_</span><span><span>${</span><span>now</span><span>}</span></span><span>.zip"</span></div></div><div><div><div>26</div></div><div>
</div></div><div><div><div>27</div></div><div><span>    </span><span>parent_dir</span><span><span>=</span><span>$(</span></span><span>dirname</span><span> </span><span>"</span><span>$source_dir</span><span>"</span><span>)</span></div></div><div><div><div>28</div></div><div><span>    </span><span>target_dir</span><span><span>=</span><span>$(</span></span><span>basename</span><span> </span><span>"</span><span>$source_dir</span><span>"</span><span>)</span></div></div><div><div><div>29</div></div><div>
</div></div><div><div><div>30</div></div><div><span>    </span><span>echo</span><span> </span><span>"======================================"</span></div></div><div><div><div>31</div></div><div><span>    </span><span>echo</span><span> </span><span>"📦 开始备份任务"</span></div></div><div><div><div>32</div></div><div><span>    </span><span>echo</span><span> </span><span>"源目录: </span><span>$source_dir</span><span>"</span></div></div><div><div><div>33</div></div><div><span>    </span><span>echo</span><span> </span><span>"备份文件: </span><span>$backup_file</span><span>"</span></div></div><div><div><div>34</div></div><div><span>    </span><span>echo</span><span> </span><span>"======================================"</span></div></div><div><div><div>35</div></div><div>
</div></div><div><div><div>36</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>37</div></div><div><span>    </span><span>#         开始压缩（静默）</span></div></div><div><div><div>38</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>39</div></div><div>
</div></div><div><div><div>40</div></div><div><span>    </span><span>cd</span><span> </span><span>"</span><span>$parent_dir</span><span>"</span><span> || { </span><span>echo</span><span> </span><span>"❌ 无法进入目录 </span><span>$parent_dir</span><span>"</span><span>; </span><span>exit</span><span> </span><span>1</span><span>; }</span></div></div><div><div><div>41</div></div><div>
</div></div><div><div><div>42</div></div><div><span>    </span><span>echo</span><span> </span><span>"📦 正在压缩..."</span></div></div><div><div><div>43</div></div><div><span>    </span><span>zip</span><span> </span><span>-r</span><span> </span><span>"</span><span>$backup_file</span><span>"</span><span> </span><span>"</span><span>$target_dir</span><span>"</span><span> &gt; </span><span>/dev/null</span></div></div><div><div><div>44</div></div><div>
</div></div><div><div><div>45</div></div><div><span>    </span><span>if</span><span> [ </span><span>$?</span><span><span> </span><span>-ne</span><span> </span></span><span>0</span><span> ]; </span><span>then</span></div></div><div><div><div>46</div></div><div><span>        </span><span>echo</span><span> </span><span>"❌ 压缩失败"</span></div></div><div><div><div>47</div></div><div><span>        </span><span>exit</span><span> </span><span>1</span></div></div><div><div><div>48</div></div><div><span>    </span><span>fi</span></div></div><div><div><div>49</div></div><div>
</div></div><div><div><div>50</div></div><div><span>    </span><span>echo</span><span> </span><span>"✅ 压缩完成"</span></div></div><div><div><div>51</div></div><div><span>    </span><span>du</span><span> </span><span>-h</span><span> </span><span>"</span><span>$backup_file</span><span>"</span></div></div><div><div><div>52</div></div><div>
</div></div><div><div><div>53</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>54</div></div><div><span>    </span><span>#         上传到远程（显示进度）</span></div></div><div><div><div>55</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>56</div></div><div>
</div></div><div><div><div>57</div></div><div><span>    </span><span>echo</span><span> </span><span>"======================================"</span></div></div><div><div><div>58</div></div><div><span>    </span><span>echo</span><span> </span><span>"📤 开始上传到远程：</span><span>$remote</span><span>"</span></div></div><div><div><div>59</div></div><div><span>    </span><span>echo</span><span> </span><span>"======================================"</span></div></div><div><div><div>60</div></div><div>
</div></div><div><div><div>61</div></div><div><span>    </span><span>rclone</span><span> </span><span>copy</span><span> </span><span>"</span><span>$backup_file</span><span>"</span><span> </span><span>"</span><span>$remote</span><span>"</span><span> </span><span>\</span></div></div><div><div><div>62</div></div><div><span>        </span><span>--progress</span><span> </span><span>\</span></div></div><div><div><div>63</div></div><div><span>        </span><span>--stats</span><span> </span><span>5s</span><span> </span><span>\</span></div></div><div><div><div>64</div></div><div><span>        </span><span>--stats-one-line</span><span> </span><span>\</span></div></div><div><div><div>65</div></div><div><span>        </span><span>--transfers=1</span><span> </span><span>\</span></div></div><div><div><div>66</div></div><div><span>        </span><span>--checkers=1</span></div></div><div><div><div>67</div></div><div>
</div></div><div><div><div>68</div></div><div><span>    </span><span>if</span><span> [ </span><span>$?</span><span><span> </span><span>-ne</span><span> </span></span><span>0</span><span> ]; </span><span>then</span></div></div><div><div><div>69</div></div><div><span>        </span><span>echo</span><span> </span><span>"❌ 上传失败"</span></div></div><div><div><div>70</div></div><div><span>        </span><span>exit</span><span> </span><span>1</span></div></div><div><div><div>71</div></div><div><span>    </span><span>fi</span></div></div><div><div><div>72</div></div><div>
</div></div><div><div><div>73</div></div><div><span>    </span><span>echo</span><span> </span><span>"✅ 上传完成"</span></div></div><div><div><div>74</div></div><div>
</div></div><div><div><div>75</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>76</div></div><div><span>    </span><span>#      清理本地旧备份</span></div></div><div><div><div>77</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>78</div></div><div>
</div></div><div><div><div>79</div></div><div><span>    </span><span>echo</span><span> </span><span>"🗑️ 清理本地旧备份（保留最近 3 个）..."</span></div></div><div><div><div>80</div></div><div>
</div></div><div><div><div>81</div></div><div><span>    </span><span>ls</span><span> </span><span>-1t</span><span> </span><span>"</span><span>$backup_dir</span><span>"/</span><span><span>${</span><span>filename_prefix</span><span>}</span></span><span>_</span><span>*</span><span>.zip</span><span> 2&gt;</span><span>/dev/null</span><span> | </span><span>sed</span><span> </span><span>-e</span><span> </span><span>'1,3d'</span><span> | </span><span>while</span><span> </span><span>read</span><span> </span><span>old_file</span><span>; </span><span>do</span></div></div><div><div><div>82</div></div><div><span>        </span><span>echo</span><span> </span><span>"删除本地：</span><span>$old_file</span><span>"</span></div></div><div><div><div>83</div></div><div><span>        </span><span>rm</span><span> </span><span>-f</span><span> </span><span>"</span><span>$old_file</span><span>"</span></div></div><div><div><div>84</div></div><div><span>    </span><span>done</span></div></div><div><div><div>85</div></div><div>
</div></div><div><div><div>86</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>87</div></div><div><span>    </span><span>#      清理远程旧备份</span></div></div><div><div><div>88</div></div><div><span>    </span><span># ==============================</span></div></div><div><div><div>89</div></div><div>
</div></div><div><div><div>90</div></div><div><span>    </span><span>echo</span><span> </span><span>"🗑️ 清理远程旧备份（保留最近 3 个）..."</span></div></div><div><div><div>91</div></div><div>
</div></div><div><div><div>92</div></div><div><span>    </span><span>rclone</span><span> </span><span>lsf</span><span> </span><span>"</span><span>$remote</span><span>"</span><span> </span><span>--files-only</span><span> | </span><span>\</span></div></div><div><div><div>93</div></div><div><span>    </span><span>grep</span><span> </span><span>"^</span><span><span>${</span><span>filename_prefix</span><span>}</span></span><span>_"</span><span> | </span><span>\</span></div></div><div><div><div>94</div></div><div><span>    </span><span>sort</span><span> </span><span>-r</span><span> | </span><span>\</span></div></div><div><div><div>95</div></div><div><span>    </span><span>awk</span><span> </span><span>'NR&gt;3'</span><span> | </span><span>\</span></div></div><div><div><div>96</div></div><div><span>    </span><span>while</span><span> </span><span>read</span><span> </span><span>file</span><span>; </span><span>do</span></div></div><div><div><div>97</div></div><div><span>        </span><span>echo</span><span> </span><span>"删除远程：</span><span>$file</span><span>"</span></div></div><div><div><div>98</div></div><div><span>        </span><span>rclone</span><span> </span><span>deletefile</span><span> </span><span>"</span><span>$remote</span><span>/</span><span>$file</span><span>"</span></div></div><div><div><div>99</div></div><div><span>    </span><span>done</span></div></div><div><div><div>100</div></div><div>
</div></div><div><div><div>101</div></div><div><span>    </span><span>echo</span><span> </span><span>"======================================"</span></div></div><div><div><div>102</div></div><div><span>    </span><span>echo</span><span> </span><span>"🎉 所有操作完成"</span></div></div><div><div><div>103</div></div><div><span>    </span><span>echo</span><span> </span><span>"======================================"</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>
<section><h2>设置定时任务<a href="#设置定时任务"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>crontab</span><span> </span><span>-e</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>每天0点和中午12点执行</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>0</span><span> </span><span>0,12</span><span> </span><span>*</span><span> </span><span>*</span><span> </span><span>*</span><span> </span><span>/脚本路径</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/4/</id>
      <title type="text">清理哪吒数据库、修改哪吒数据库 更改服务器、报警、服务顺序等</title>
      <published>2025-02-12T00:00:00.000Z</published>
      <updated>2025-02-12T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/4/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<blockquote><p><strong>注</strong>：如果害怕改错可以电脑下载一个sqlite数据库工具自行修改 也可以使用下面的命令备份一个出来 <strong>修改后重启面板生效</strong></p></blockquote>
<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>cp</span><span> </span><span>/opt/nezha/dashboard/data/sqlite.db</span><span> </span><span>/root/sqlite.db</span></div></div></code></pre><div><div></div><div></div></div></figure></div>
<section><h2>安装sqlite3 （用于打开sqlite数据库）<a href="#安装sqlite3-用于打开sqlite数据库"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>install</span><span> </span><span>sqlite3</span></div></div></code></pre><div><div></div><div></div></div></figure></div><section><h3>打开哪吒数据库<a href="#打开哪吒数据库"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sqlite3</span><span> </span><span>/opt/nezha/dashboard/data/sqlite.db</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>列出表</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>.tables</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>修改服务器排序<a href="#修改服务器排序"><span>#</span></a></h2><p>打开服务器文件</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>SELECT</span><span> </span><span>*</span><span> </span><span>FROM</span><span> </span><span>servers</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>servers</span><span> </span><span>SET</span><span> </span><span>id</span><span> </span><span>=要修改成的id</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=修改的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>删除id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>servers</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=要删除的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>更新id列 让后续id减少1</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>servers</span></div></div><div><div><div>2</div></div><div><span>SET</span><span> </span><span>id</span><span> </span><span>=</span><span> </span><span>id</span><span> </span><span>-</span><span> </span><span>1</span></div></div><div><div><div>3</div></div><div><span>WHERE</span><span> </span><span>id</span><span> &gt; </span><span>中间断的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>把 <code>id = 4</code> 改为 <code>5</code>，<code>5 → 6</code>，<code>6 → 7</code>，以此类推（所有 <code>id &gt;= 4</code> 的值都加 1），避免主键冲突。<strong>注：演示id为4 自行修改</strong></p><p>第 1 步：将 <code>id &gt;= 4</code> 的记录统一先加一个大值（如 1000）：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>servers</span></div></div><div><div><div>2</div></div><div><span>SET</span><span> </span><span>id</span><span> </span><span>=</span><span> </span><span>id</span><span> </span><span>+</span><span> </span><span>1000</span></div></div><div><div><div>3</div></div><div><span>WHERE</span><span> </span><span>id</span><span> &gt;</span><span>=</span><span> </span><span>4</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>第 2 步：把刚才加上大值的记录再减 999（等于 +1 的效果）：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>servers</span></div></div><div><div><div>2</div></div><div><span>SET</span><span> </span><span>id</span><span> </span><span>=</span><span> </span><span>id</span><span> </span><span>-</span><span> </span><span>999</span></div></div><div><div><div>3</div></div><div><span>WHERE</span><span> </span><span>id</span><span> &gt;</span><span>=</span><span> </span><span>1004</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重置顺序</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>sqlite_sequence</span><span> </span><span>WHERE</span><span> </span><span>name</span><span> </span><span>=</span><span> </span><span>'servers'</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>保存并退出</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>.exit</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>修改报警排序<a href="#修改报警排序"><span>#</span></a></h2><p>打开报警文件</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>SELECT</span><span> </span><span>*</span><span> </span><span>FROM</span><span> </span><span>alert_rules</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改报警id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>alert_rules</span><span> </span><span>SET</span><span> </span><span>id</span><span> </span><span>=要修改成的id</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=修改的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>删除报警</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>alert_rules</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=要删除的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重置顺序</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>sqlite_sequence</span><span> </span><span>WHERE</span><span> </span><span>name</span><span> </span><span>=</span><span> </span><span>'alert_rules'</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>修改服务（网络延迟ip）<a href="#修改服务网络延迟ip"><span>#</span></a></h2><p>打开服务文件</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>SELECT</span><span> </span><span>*</span><span> </span><span>FROM</span><span> </span><span>services</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改服务id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>services</span><span> </span><span>SET</span><span> </span><span>id</span><span> </span><span>=要修改成的id</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=修改的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>删除网络延迟id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>services</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=要删除的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重置顺序</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>sqlite_sequence</span><span> </span><span>WHERE</span><span> </span><span>name</span><span> </span><span>=</span><span> </span><span>'services'</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>修改服务器分组<a href="#修改服务器分组"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>SELECT</span><span> </span><span>*</span><span> </span><span>FROM</span><span> </span><span>server_groups</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>打开服务器分组</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>SELECT</span><span> </span><span>*</span><span> </span><span>FROM</span><span> </span><span>server_groups</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改服务器分组id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>server_groups</span><span> </span><span>SET</span><span> </span><span>id</span><span> </span><span>=要修改成的id</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=修改的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>删除计划服务器id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>server_groups</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=要删除的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重置顺序</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>sqlite_sequence</span><span> </span><span>WHERE</span><span> </span><span>name</span><span> </span><span>=</span><span> </span><span>'server_groups'</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>修改服务器分组关联表<a href="#修改服务器分组关联表"><span>#</span></a></h2><p>打开服务器分组关联表</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>SELECT</span><span> </span><span>*</span><span> </span><span>FROM</span><span> </span><span>server_group_servers</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改服务器分组关联表id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>server_group_servers</span><span> </span><span>SET</span><span> </span><span>id</span><span> </span><span>=要修改成的id</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=修改的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>删除计划服务器关联表id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>server_group_server</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=要删除的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重置顺序</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>sqlite_sequence</span><span> </span><span>WHERE</span><span> </span><span>name</span><span> </span><span>=</span><span> </span><span>'server_group_servers'</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>清空网络延迟监控<a href="#清空网络延迟监控"><span>#</span></a></h2><blockquote><p>如果开启了tsdb 直接删除tsdb文件即可</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>rm</span><span> </span><span>-rf</span><span> </span><span>/opt/nezha/dashboard/data/tsdb</span></div></div></code></pre><div><div></div><div></div></div></figure></div></blockquote><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>service_histories</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><section><h3>清空单个服务器id的网络延迟监控<a href="#清空单个服务器id的网络延迟监控"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>service_histories</span><span> </span><span>WHERE</span><span> </span><span>server_id</span><span> </span><span>=</span><span> </span><span>id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>一行命令清理网络延迟 收缩数据库文件大小<a href="#一行命令清理网络延迟-收缩数据库文件大小"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sqlite3</span><span> </span><span>/opt/nezha/dashboard/data/sqlite.db</span><span> </span><span>"DELETE FROM service_histories; VACUUM;"</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2><strong>收缩 SQLite 数据库文件大小</strong><a href="#收缩-sqlite-数据库文件大小"><span>#</span></a></h2><p>执行完大量删除后，SQLite 文件并不会立即变小。你需要运行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>VACUUM</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>这个命令会重建数据库并清理空间碎片，使 sqlite.db 文件变小。</p></section>
<section><h2>修改报警通知里面的双向流量使用多少<a href="#修改报警通知里面的双向流量使用多少"><span>#</span></a></h2><p>字节转换网站：<a href="https://tooltt.com/byte-convert/" target="_blank">https://tooltt.com/byte-convert/</a></p><p>查找服务器id的流量报警</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>SELECT</span><span> </span><span>*</span><span> </span><span>FROM</span><span> </span><span>transfers</span><span> </span><span>WHERE</span><span> </span><span>server_id</span><span> </span><span>=服务器id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>清空服务器id的流量</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>transfers</span></div></div><div><div><div>2</div></div><div><span>SET</span><span> </span><span>"in"</span><span> </span><span>=</span><span> </span><span>0,</span><span> </span><span>"out"</span><span> </span><span>=</span><span> </span><span>0</span></div></div><div><div><div>3</div></div><div><span>WHERE</span><span> </span><span>server_id</span><span> </span><span>=服务器id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>清空字段的流量</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>transfers</span></div></div><div><div><div>2</div></div><div><span>SET</span><span> </span><span>"in"</span><span> </span><span>=</span><span> </span><span>0,</span><span> </span><span>"out"</span><span> </span><span>=</span><span> </span><span>0</span></div></div><div><div><div>3</div></div><div><span>WHERE</span><span> </span><span>id</span><span> </span><span>=字段</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改下载流量</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>transfers</span></div></div><div><div><div>2</div></div><div><span>SET</span><span> </span><span>out</span><span> </span><span>=要修改的流量字节</span></div></div><div><div><div>3</div></div><div><span>WHERE</span><span> </span><span>id</span><span> </span><span>=字段</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改上传流量</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>transfers</span></div></div><div><div><div>2</div></div><div><span>SET</span><span> </span><span>"in"</span><span> </span><span>=要修改的流量字节</span></div></div><div><div><div>3</div></div><div><span>WHERE</span><span> </span><span>id</span><span> </span><span>=字段</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重置顺序</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>sqlite_sequence</span><span> </span><span>WHERE</span><span> </span><span>name</span><span> </span><span>=</span><span> </span><span>'transfers'</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>清空服务器id的字段</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>transfers</span><span> </span><span>WHERE</span><span> </span><span>server_id</span><span> </span><span>=</span><span> </span><span>服务器id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>修改计划任务<a href="#修改计划任务"><span>#</span></a></h2><p>打开计划任务文件</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>SELECT</span><span> </span><span>*</span><span> </span><span>FROM</span><span> </span><span>crons</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改计划任务id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>UPDATE</span><span> </span><span>crons</span><span> </span><span>SET</span><span> </span><span>id</span><span> </span><span>=要修改成的id</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=修改的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>删除计划任务id</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>crons</span><span> </span><span>WHERE</span><span> </span><span>id</span><span> </span><span>=要删除的id</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>重置顺序</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>DELETE</span><span> </span><span>FROM</span><span> </span><span>sqlite_sequence</span><span> </span><span>WHERE</span><span> </span><span>name</span><span> </span><span>=</span><span> </span><span>'crons'</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/1/</id>
      <title type="text">哪吒V1快捷更改Agent域名</title>
      <published>2024-10-10T00:00:00.000Z</published>
      <updated>2024-10-10T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/1/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<p>前言：如果小鸡有很多 一个一个更换域名很麻烦 因此利用cron可以快捷更换所有小鸡的Agent域名_</p>
<p><strong>注意！！cron只能在机器在线的时候使用 如果域名快到期请在到期前在面板鸡反代上添加新的域名后使用 更改完在删掉旧域名</strong></p>
<p>原理：利用Nezha自带的cron快捷更换Agent域名</p>
<section><h1>教程<a href="#教程"><span>#</span></a></h1><p>登录哪吒后台 创建任务 覆盖范围选择排除特定服务器</p><p>把脚本导入进命令内 替换自己的原域名和新域名</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sudo</span><span> </span><span>sed</span><span> </span><span>-i</span><span> </span><span>'s/server: 原来的域名:端口/server: 新域名:端口/'</span><span> </span><span>/opt/nezha/agent/config.yml</span><span> </span><span>\&amp;\&amp;</span><span> </span><span>sudo</span><span> </span><span>systemctl</span><span> </span><span>restart</span><span> </span><span>nezha-agent.service</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果是Alpine系统请使用下面脚本：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>sed</span><span> </span><span>-i</span><span> </span><span>'s/server: 原来的域名:端口/server: 新域名:端口/'</span><span> </span><span>/opt/nezha/agent/config.yml</span><span> </span><span>\&amp;\&amp;</span><span> </span><span>rc-service</span><span> </span><span>nezha-agent</span><span> </span><span>restart</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>在哪吒后台更改Agent对接地址 最后手动执行一下即可</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/2/</id>
      <title type="text">VPS设置密钥登录 一键导入公钥到VPS</title>
      <published>2024-10-09T00:00:00.000Z</published>
      <updated>2024-10-09T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/2/"/>
      <summary type="text">开启密钥登录 一键导入公钥脚本</summary>
      <content type="html"><![CDATA[<p>如果没有密钥 在vps上申请一个 如果有请忽略</p>
<section><h2>申请密钥<a href="#申请密钥"><span>#</span></a></h2><section><h3>申请密钥对<a href="#申请密钥对"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ssh-keygen</span><span> </span><span>-t</span><span> </span><span>ed25519</span><span> </span><span>-a</span><span> </span><span>100</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>安装公钥<a href="#安装公钥"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>cat</span><span> </span><span>.ssh/id_ed25519.pub</span><span> &gt;&gt; </span><span>.ssh/authorized_keys</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>私钥设置可读权限<a href="#私钥设置可读权限"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>chmod</span><span> </span><span>600</span><span> </span><span>.ssh/id_ed25519</span></div></div></code></pre><div><div></div><div></div></div></figure></div><section><h3>保存好私钥<a href="#保存好私钥"><span>#</span></a></h3><blockquote><p><strong>id_ed25519</strong></p></blockquote></section></section>
<section><h2>一键导入公钥脚本<a href="#一键导入公钥脚本"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>bash</span><span> </span><span>&lt;(</span><span>curl</span><span> </span><span>-sL</span><span> https://raw.githubusercontent.com/leuxinovo/clearvps/main/sshkey.sh)</span><span> </span><span>-g</span><span> </span><span>github用户名</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>把公钥导入到GitHub <a href="https://github.com/settings/keys" target="_blank">https://github.com/settings/keys</a>
即可使用脚本一键导入公钥到VPS</p></section>
<section><h2>设置密钥登录<a href="#设置密钥登录"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>nano</span><span> </span><span>/etc/ssh/sshd_config</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>进行如下设置：
开启密钥登录：<strong>PubkeyAuthentication yes</strong>
另外，请留意 root 用户能否通过 SSH 登录： <strong>PermitRootLogin yes</strong>
当你完成全部设置，并以密钥方式登录成功后，再禁用密码登录: <strong>PasswordAuthentication no</strong></p></section>
<section><h2>最后重启ssh<a href="#最后重启ssh"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>systemctl</span><span> </span><span>restart</span><span> </span><span>ssh</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.leuxx.de/posts/3/</id>
      <title type="text">VPS安装Caddy反代</title>
      <published>2024-02-11T00:00:00.000Z</published>
      <updated>2024-02-11T00:00:00.000Z</updated>
      <author><name>Leu</name></author>
      <link rel="alternate" href="https://blog.leuxx.de/posts/3/"/>
      <summary type="text">Caddy很轻薄简单的反代工具</summary>
      <content type="html"><![CDATA[<section><h3>安装Caddy<a href="#安装caddy"><span>#</span></a></h3><p>我们按照官方的安装方法，首先，安装一些必要的软件包：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>apt</span><span> </span><span>update</span></div></div><div><div><div>2</div></div><div><span>apt</span><span> </span><span>upgrade</span><span> </span><span>-y</span></div></div><div><div><div>3</div></div><div><span>apt</span><span> </span><span>install</span><span> </span><span>curl</span><span> </span><span>vim</span><span> </span><span>wget</span><span> </span><span>gnupg</span><span> </span><span>dpkg</span><span> </span><span>apt-transport-https</span><span> </span><span>lsb-release</span><span> </span><span>ca-certificates</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>然后加入 Caddy 的 GPG 公钥和 apt 源：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>curl</span><span> </span><span>-sSL</span><span> </span><span>https://dl.cloudsmith.io/public/caddy/stable/gpg.key</span><span> | </span><span>gpg</span><span> </span><span>--dearmor</span><span> &gt; </span><span>/usr/share/keyrings/caddy.gpg</span></div></div><div><div><div>2</div></div><div><span>echo</span><span> </span><span>"deb [arch=$(</span><span>dpkg</span><span> </span><span>--print-architecture</span><span>) signed-by=/usr/share/keyrings/caddy.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main"</span><span> &gt; </span><span>/etc/apt/sources.list.d/caddy.list</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>最后更新系统即可安装Caddy：
apt update
apt install caddy</p></section>
<section><h3>Caddy使用教程<a href="#caddy使用教程"><span>#</span></a></h3><p>例：Caddy反代本地8080端口 自动申请证书</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>example.com</span><span> </span><span>{</span></div></div><div><div><div>2</div></div><div><span>        </span><span>reverse_proxy</span><span> </span><span>localhost:8080</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>Caddy反代本地8080端口 指定证书</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>    </span><span>example.com</span><span> </span><span>{</span></div></div><div><div><div>2</div></div><div><span>        </span><span>tls</span><span> </span><span>/路径/公钥.pem</span><span> </span><span>/路径/密钥.pem</span></div></div><div><div><div>3</div></div><div><span>        </span><span>reverse_proxy</span><span> </span><span>localhost:8080</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>]]></content>
    </entry>
</feed>
