<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Little Wolf Cub</title>
    <link>https://lwcub.com/</link>
    <description>Recent content on Little Wolf Cub</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 17 Jul 2026 14:55:10 +0800</lastBuildDate>
    <atom:link href="https://lwcub.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>在hugo博客里部署twikoo评论系统</title>
      <link>https://lwcub.com/blog/deploy-twikoo-comment-system/</link>
      <pubDate>Fri, 17 Jul 2026 14:55:10 +0800</pubDate>
      <guid>https://lwcub.com/blog/deploy-twikoo-comment-system/</guid>
      <description>&lt;p&gt;记录部署评论系统的过程。&lt;/p&gt;
&lt;h2 id=&#34;1-简介&#34;&gt;1. 简介&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;网站框架：&lt;a href=&#34;https://github.com/gohugoio/hugo&#34;&gt;Hugo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;网站主题：&lt;a href=&#34;https://github.com/adityatelange/hugo-PaperMod&#34;&gt;Hugo PaperMod&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;评论系统：&lt;a href=&#34;https://github.com/twikoojs/twikoo&#34;&gt;Twikoo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;VPS操作系统：Ubuntu 24.04.3 LTS&lt;/li&gt;
&lt;li&gt;后端部署方式：Docker&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;备注：配置文件内容由AI生成，请自行检查是否正确。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;2-后端部署&#34;&gt;2. 后端部署&lt;/h2&gt;
&lt;h3 id=&#34;21-docker部署&#34;&gt;2.1 Docker部署&lt;/h3&gt;
&lt;p&gt;因为有VPS，我选择了Docker私有部署。&lt;/p&gt;
&lt;p&gt;在VPS里安装Docker。参照官方文档，运行下面的命令就可以通过Docker快速部署。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8080:8080 -v ${PWD}/data:/app/data -d imaegoo/twikoo
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在VPS上运行命令&lt;code&gt;curl http://localhost:8080/&lt;/code&gt;，测试部署是否成功。出现类似下面的结果，就部署成功了。记录其中的version版本信息，比如我这里是1.7.14，后面部署前端时需要对应这个版本。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{&amp;#34;code&amp;#34;:100,&amp;#34;message&amp;#34;:&amp;#34;Twikoo 云函数运行正常，请参考 https://twikoo.js.org/frontend.html 完成前端的配置&amp;#34;,&amp;#34;version&amp;#34;:&amp;#34;1.7.14&amp;#34;}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;可以注意到，这时候twikoo走http。如果尝试用https访问，访问会失败。接下来配置nginx反向代理，让twikoo评论走https。&lt;/p&gt;
&lt;h3 id=&#34;22-nginx配置&#34;&gt;2.2 Nginx配置&lt;/h3&gt;
&lt;p&gt;nginx配置有两个方案。假设博客的域名是&lt;code&gt;&amp;lt;domain&amp;gt;.com&lt;/code&gt;，两个方案如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用&lt;strong&gt;子目录&lt;/strong&gt;，通过&lt;code&gt;https://&amp;lt;domain&amp;gt;.com/twikoo/&lt;/code&gt;访问twikoo。&lt;/li&gt;
&lt;li&gt;使用&lt;strong&gt;子域名&lt;/strong&gt;，通过&lt;code&gt;https://twikoo.&amp;lt;domain&amp;gt;.com/&lt;/code&gt;访问twikoo。使用子域名时，需要在DNS服务商里添加记录，把子域名指向VPS的IP地址。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我选用了子域名方案。&lt;/p&gt;
&lt;p&gt;创建&lt;code&gt;/etc/nginx/sites-available/twikoo&lt;/code&gt;文件，写入下面的内容。需要修改其中的域名、证书密钥文件路径。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# HTTP 自动跳转 HTTPS
server {
    listen 80;
    server_name twikoo.&amp;lt;domain&amp;gt;.com; # 替换为你的域名
    return 301 https://$host$request_uri;
}

# HTTPS 服务器配置
server {
    listen 443 ssl http2;
    server_name twikoo.&amp;lt;domain&amp;gt;.com; # 替换为你的域名

    # 替换为你的真实证书路径
    ssl_certificate /path/to/your/certificate.pem;
    ssl_certificate_key /path/to/your/private.key;

    # 推荐的 SSL 安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        # 转发到 Docker 的 8080 端口
        proxy_pass http://127.0.0.1:8080;
        
        # 传递客户端真实信息
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后运行下面的命令：&lt;/p&gt;</description>
    </item>
    <item>
      <title>修理自行车油压碟刹</title>
      <link>https://lwcub.com/blog/repair-bike-brake/</link>
      <pubDate>Tue, 07 Jul 2026 15:40:51 +0800</pubDate>
      <guid>https://lwcub.com/blog/repair-bike-brake/</guid>
      <description>&lt;p&gt;前阵子发现自行车的油压碟刹有些失灵、刹不住。解决刹车问题花费了不少精力，也走了些弯路。现在看来，问题其实没那么复杂。&lt;/p&gt;
&lt;h2 id=&#34;1-简介&#34;&gt;1. 简介&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;自行车：美利达某款山地车&lt;/li&gt;
&lt;li&gt;刹车型号：Shimano MT-200，油压碟刹&lt;/li&gt;
&lt;li&gt;问题：前刹的制动效果差，无法抱死车轮，刹车时会啸叫&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-修理过程&#34;&gt;2. 修理过程&lt;/h2&gt;
&lt;h3 id=&#34;21-分析问题&#34;&gt;2.1 分析问题&lt;/h3&gt;
&lt;p&gt;刹车由三个组件构成：&lt;strong&gt;刹车系统&lt;/strong&gt;（MT-200油压碟刹），&lt;strong&gt;刹车片&lt;/strong&gt;（在自行车上也叫来令片），&lt;strong&gt;刹车盘&lt;/strong&gt;（碟片）。任意一个组件出现了问题，都可能导致刹车失灵。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;刹车系统：对于油压碟刹来说，常见的问题是缺油、混入空气。这两个问题都会导致刹车效果差，也都可以通过换油解决。&lt;/li&gt;
&lt;li&gt;刹车片、刹车盘：这两个组件经常一起出现问题，过度磨损、沾油污是常见的问题。当刹车片、刹车盘过度磨损后，刹车效果会下降。当刹车片、刹车盘沾上油污后，刹车效果也会下降。刹车片清洁难度很大，可以直接换新的。刹车盘比较容易清洁，一般不需要换新的。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我入手的是二手车，不清楚刹车什么时候、因为什么原因失灵，所以我只能挨个排查。&lt;/p&gt;
&lt;h3 id=&#34;22-刹车系统换油&#34;&gt;2.2 刹车系统换油&lt;/h3&gt;
&lt;p&gt;换油成本不高，操作难度不大，就是步骤繁琐些。&lt;/p&gt;
&lt;p&gt;我的刹车系统是Shimano的刹车，换油的操作参照了&lt;a href=&#34;https://si.shimano.com/zh-CN/pdfs/dm/MBBR001/DM-MBBR001-04-CHI.pdf&#34;&gt;Shimano官方手册&lt;/a&gt;。看了手册里MT-200型号的换油操作，确定需要2毫米、3毫米的内六角扳手。换油时推荐让刹车夹器远离碟片，并拆卸来令片。想把刹车夹器拆下来，需要5毫米内六角扳手。拆卸来令片需要一把尖嘴钳。所以整个换油流程我需要的工具有：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;2 3 5毫米的内六角扳手&lt;/li&gt;
&lt;li&gt;尖嘴钳&lt;/li&gt;
&lt;li&gt;换油工具套装&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;按照手册上的步骤，顺利完成换油。但是刹车效果没有恢复，问题应该出在碟片、来令片上。&lt;/p&gt;
&lt;h3 id=&#34;23-更换来令片&#34;&gt;2.3 更换来令片&lt;/h3&gt;
&lt;p&gt;自行车有前后两个刹车，我的车只有前刹车失灵，后刹车正常。在更换来令片之前，我试着把前后刹车的来令片互换，结果发现前刹车好转、后刹车恶化。这说明来令片确实影响到了刹车，需要更换。&lt;/p&gt;
&lt;p&gt;在Shimano官网，找到MT-200适配的来令片：标准搭配是B05S树脂来令片。Shimano原装的来令片在国内没有直销店铺，只能通过第三方店铺购买。为了避免买到假货，我买的是盒装的来令片，盒子上有个二维码可以扫码确定真伪。&lt;/p&gt;
&lt;p&gt;为了防止碟片上还有油污残留，我准备了碟片清洁剂和砂纸。碟片清洁剂不能选油性的，不然碟片就废了。砂纸是为了打磨擦去碟片表面可能残留的固体油污。我准备了46目的砂纸，但是实际使用时感觉有些太粗糙了，更细腻点的砂纸会好点。&lt;/p&gt;
&lt;p&gt;更换来令片的步骤简单，工具也不多，一般只需要用到尖嘴钳和5毫米内六角。更换完来令片后，需要把刹车夹器重新安装到车架上。安装刹车夹器时为了避免刹车蹭碟，可以在碟片两侧分别塞一张扑克牌。扑克牌可以在来令片、碟片之间留出空隙。也可以通过抽推扑克牌时的摩擦力，感受来令片和碟片之间的距离、挤压程度。安装完刹车夹器后，再抽出扑克牌。&lt;/p&gt;
&lt;p&gt;刚更换来令片后，没有经过充分的磨合，刹车效果还比较一般。多刹几次、充分摩擦后，刹车性能会提高。到这里，我的刹车问题也解决了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>qbittorrent tracker 未联系</title>
      <link>https://lwcub.com/blog/qbittorrent-tracker-not-contacted/</link>
      <pubDate>Thu, 18 Jun 2026 16:47:38 +0800</pubDate>
      <guid>https://lwcub.com/blog/qbittorrent-tracker-not-contacted/</guid>
      <description>&lt;p&gt;本篇解决一个问题：使用qbittorrent做种时，所有tracker都显示“未联系”。&lt;/p&gt;
&lt;h2 id=&#34;1-问题介绍&#34;&gt;1. 问题介绍&lt;/h2&gt;
&lt;p&gt;某次重启电脑后，qbittorrent所有任务都显示tracker未联系。重启qbittorrent、删除qbittorrent配置文件，都无法解决问题。&lt;/p&gt;
&lt;p&gt;环境：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;操作系统：Windows 10&lt;/li&gt;
&lt;li&gt;qbittorrent版本：v5.1.4&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-问题定位&#34;&gt;2. 问题定位&lt;/h2&gt;
&lt;p&gt;找教程的过程中，看到reddit的一个帖子：&lt;a href=&#34;https://www.reddit.com/r/qBittorrent/comments/nubbab/all_torrents_stalled_all_tracker_show_status_not/?tl=zh-hans&#34;&gt;qbittorrent tracker 未联系&lt;/a&gt;。帖子的评论区里，有人提到端口占用的问题，特别是hyper-v。&lt;/p&gt;
&lt;p&gt;可能我这边也和端口冲突有关系？于是我往这个方向排查。&lt;/p&gt;
&lt;p&gt;我查看了qbittorrent的日志文件。日志文件的保存路径可以在qbittorrent的设置里找到，在qbittorrent里打开设置——选择“行为”——往下找到“日志文件”相关栏目，可以看到日志保存的路径。&lt;/p&gt;
&lt;p&gt;打开日志后，我找到大量相似的报错，报错信息如下。在监听很多IP时，使用端口“UDP/62698”会出现访问权限不允许的情况。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;监听 IP 失败。IP：“XXX”。端口：“UDP/62698”。原因：“以一种访问权限不允许的方式做了一个访问套接字的尝试。”
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;接下来执行命令&lt;code&gt;netsh interface ipv4 show excludedportrange protocol=udp&lt;/code&gt;，确定是不是端口占用。果然，端口“UDP/62698”包含在排除的范围里。因为端口被排除，所以当qbittorrent监听这个端口时，会出现权限不足的情况，无法和tracker联系。&lt;/p&gt;
&lt;h2 id=&#34;3-解决问题&#34;&gt;3. 解决问题&lt;/h2&gt;
&lt;p&gt;我选择修改动态端口的范围。排除端口会从动态端口里选。所以只要让动态端口的范围不包含“UDP/62698”，qbittorrent就能正常工作，不会遇到联系不上tracker的情况。&lt;/p&gt;
&lt;p&gt;以管理员权限打开“命令提示符”，分别运行下面的命令：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;netsh int ipv4 set dynamicport tcp start=40000 num=10000
netsh int ipv4 set dynamicport udp start=40000 num=10000
netsh int ipv6 set dynamicport tcp start=40000 num=10000
netsh int ipv6 set dynamicport udp start=40000 num=10000
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;针对ipv4和ipv6，针对tcp和udp，把动态端口的范围调整到40000起步、大小10000的范围。也就是说，把动态端口的范围调整到40000-50000。排除端口会在这个范围里挑选，所以排除端口的范围也是在40000-50000。&lt;/p&gt;
&lt;p&gt;起步是40000、大小是10000，这两个数值可以自行调整。如果已知有些软件会用到这些端口，就避开。端口数量也不要太小，避免系统资源不足。&lt;/p&gt;
&lt;h2 id=&#34;4-参考资料&#34;&gt;4. 参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.reddit.com/r/qBittorrent/comments/nubbab/all_torrents_stalled_all_tracker_show_status_not/?tl=zh-hans&#34;&gt;reddit: qbittorrent tracker 未联系&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/gravitybox/p/18672710&#34;&gt;cnbolgs: 解决Hyper-V保留端口导致各种端口占用报错的问题&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>WSL2环境下编译安卓源码</title>
      <link>https://lwcub.com/blog/compile-aosp-in-wsl2/</link>
      <pubDate>Wed, 17 Jun 2026 18:05:52 +0800</pubDate>
      <guid>https://lwcub.com/blog/compile-aosp-in-wsl2/</guid>
      <description>&lt;p&gt;本篇记录在Windows WSL2环境下编译安卓源码（Android Open Source Project，AOSP）的过程。&lt;/p&gt;
&lt;h2 id=&#34;1-环境介绍&#34;&gt;1. 环境介绍&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;宿主机：Windows 10操作系统，内存32GB。wsl虚拟磁盘文件所在的磁盘分区，留出了200GB以上的空间。&lt;/li&gt;
&lt;li&gt;wsl虚拟机：Ubuntu 22.04.1 LTS操作系统，内存16GB，交换分区（swap）4GB。&lt;/li&gt;
&lt;li&gt;aosp版本分支：android-10.0.0_r2&lt;/li&gt;
&lt;li&gt;手机设备：Pixel 3a XL&lt;/li&gt;
&lt;li&gt;网络：能正常访问外网。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-安装环境依赖&#34;&gt;2. 安装环境依赖&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt-get update
sudo apt install git
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;各种工具&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;JDK&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt-get install openjdk-8-jdk
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;libncurses5。编译源码时才发现缺了这个库。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt-get install libncurses5 libtinfo5
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;python2。在解决libncurses5缺失的同时，听AI的建议，准备好python2的环境，并把python环境通过软链接的形式指向python2。我编译的版本是Android 10。新的Android版本源码，可能不需要python2。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt-get install python2
sudo ln -s /usr/bin/python2 /usr/bin/python
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;3-下载源码&#34;&gt;3. 下载源码&lt;/h2&gt;
&lt;h3 id=&#34;31-下载repo工具&#34;&gt;3.1 下载repo工具&lt;/h3&gt;
&lt;p&gt;安卓源码由多个项目构成，repo是管理安卓多个项目的工具。&lt;/p&gt;</description>
    </item>
    <item>
      <title>虚拟机迁移后，IDA Pro无法启动</title>
      <link>https://lwcub.com/blog/ida-not-work-after-change-virtual-machine-type/</link>
      <pubDate>Mon, 08 Jun 2026 16:19:36 +0800</pubDate>
      <guid>https://lwcub.com/blog/ida-not-work-after-change-virtual-machine-type/</guid>
      <description>虚拟机从VMware迁移到Hyper-v后，IDA Pro软件无法启动</description>
    </item>
    <item>
      <title>VMware虚拟机迁移到Hyper-v</title>
      <link>https://lwcub.com/blog/vmware-to-hyper-v/</link>
      <pubDate>Sat, 06 Jun 2026 15:27:55 +0800</pubDate>
      <guid>https://lwcub.com/blog/vmware-to-hyper-v/</guid>
      <description>VMware内存开销大。把VMware Workstation中的虚拟机，迁移到Hyper-v平台。使用Disk2vhd工具。</description>
    </item>
    <item>
      <title>修改Windows cmd的字体</title>
      <link>https://lwcub.com/blog/cmd-change-font/</link>
      <pubDate>Sat, 06 Jun 2026 11:35:49 +0800</pubDate>
      <guid>https://lwcub.com/blog/cmd-change-font/</guid>
      <description>在Windows cmd下，安装字体，选择让cmd呈现的字体。可能需要修改当前代码页，从而允许cmd支持更多的字体。</description>
    </item>
    <item>
      <title>NAT下，虚拟机使用宿主机的系统代理</title>
      <link>https://lwcub.com/blog/nat-host-proxy/</link>
      <pubDate>Wed, 27 May 2026 13:36:00 +0800</pubDate>
      <guid>https://lwcub.com/blog/nat-host-proxy/</guid>
      <description>NAT网络模式下，虚拟机走Windows宿主机的系统代理。包含3个步骤：开启NAT，宿主机允许应用通过防火墙，虚拟机设置代理。</description>
    </item>
    <item>
      <title>解决Git Dubious Ownership</title>
      <link>https://lwcub.com/blog/git-dubious-ownership/</link>
      <pubDate>Sun, 17 May 2026 15:51:17 +0800</pubDate>
      <guid>https://lwcub.com/blog/git-dubious-ownership/</guid>
      <description>解决git报错fatal: detected dubious ownership in repository at的问题。提供了3种方法：复制出新的文件夹，git添加安全目录，或者更改文件夹归属。</description>
    </item>
    <item>
      <title>RedmiNote8Pro通过Magisk刷Root</title>
      <link>https://lwcub.com/blog/redminote8pro-magisk-root/</link>
      <pubDate>Thu, 26 Mar 2026 14:13:53 +0800</pubDate>
      <guid>https://lwcub.com/blog/redminote8pro-magisk-root/</guid>
      <description>使用Redmi Note 8 Pro手机，通过Magisk刷Root权限。包含两个步骤：解锁BL锁，安装Magisk。</description>
    </item>
  </channel>
</rss>
