<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>buyfakett</title>
        <link>https://www.tteam.icu</link>
        <description>buyfakett Webside</description>
        <lastBuildDate>Wed, 22 Apr 2026 14:58:01 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright © 2024 &lt;a href="https://github.com/buyfakett" target="_blank" style="color: skyblue"&gt;buyfakett&lt;/a&gt;&lt;br /&gt;Powered by &lt;a href="https://rspress.rs" target="_blank" style="color: skyblue"&gt;Rspress&lt;/a&gt;</copyright>
        <follow_challenge>
            <feedId>119674042096582656</feedId>
            <userId>85585442980661248</userId>
        </follow_challenge>
    <item>
            <title><![CDATA[mac终端改造]]></title>
            <link>https://www.tteam.icu/blog/dev/mac终端改造</link>
            <guid isPermaLink="false">/blog/dev/mac终端改造</guid>
            <pubDate>Sun, 05 Apr 2026 13:56:12 GMT</pubDate>
            <description><![CDATA[这篇博客记录一下我对 Mac 终端环境的一次完整改造，从外观到效率全面提升。]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="mac终端改造"><a href="#mac终端改造" class="rp-header-anchor rp-link" aria-hidden="true">#</a>mac终端改造<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="前言"><a href="#前言" class="rp-header-anchor rp-link" aria-hidden="true">#</a>前言</h2>
<p>之前我一直在用 oh-my-zsh + 各种插件（比如自动补全、语法高亮等），虽然功能很丰富，但有一个很明显的问题：<strong>每次打开终端都会卡顿几秒</strong>。</p>
<p>尤其是插件一多之后，启动速度肉眼可见变慢，日常使用体验很差。于是我决定做一次终端“瘦身 + 美化”，换一套更轻量但同样好看的方案。</p>
<h2 class="rp-toc-include" id="安装"><a href="#安装" class="rp-header-anchor rp-link" aria-hidden="true">#</a>安装</h2>
<h3 class="rp-toc-include" id="1-starship高颜值-prompt"><a href="#1-starship高颜值-prompt" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://github.com/starship/starship" target="_blank" rel="noopener noreferrer" class="rp-link">1. Starship（高颜值 Prompt）</a></h3>
<p>配置使用的是 <a href="https://gist.githubusercontent.com/zhangchitc/62f5dca64c599084f936fda9963f1100/raw/35f26f947341f1fb1cf077a32dabd6ddb0d67b2b/starship.toml" target="_blank" rel="noopener noreferrer" class="rp-link">.config/starship.toml</a></p>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">brew</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> starship</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">chmod</span><span style="color:var(--shiki-token-string)"> -R</span><span style="color:var(--shiki-token-string)"> go-w</span><span style="color:var(--shiki-token-string)"> ~/.zshrc</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<div class="rp-callout rp-callout--tip"><div class="rp-callout__title">安装 Nerd Font 字体（图标支持）</div><div class="rp-callout__content"><div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">brew</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> font-jetbrains-mono-nerd-font</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div></div></div>
<p>安装后记得在终端中设置字体为 <code>JetBrainsMono Nerd Font</code></p>
<p><img src="https://img.tteam.icu/i/2026/04/05/af4cc550.webp" alt=""/></p>
<h3 class="rp-toc-include" id="yazi终端文件管理器"><a href="#yazi终端文件管理器" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://github.com/sxyazi/yazi" target="_blank" rel="noopener noreferrer" class="rp-link">Yazi（终端文件管理器）</a></h3>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">brew</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> yazi</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="ghostty现代终端"><a href="#ghostty现代终端" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://github.com/ghostty-org/ghostty" target="_blank" rel="noopener noreferrer" class="rp-link">Ghostty（现代终端）</a></h3>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">brew</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> --cask</span><span style="color:var(--shiki-token-string)"> ghostty</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="chezmoi配置管理"><a href="#chezmoi配置管理" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://github.com/twpayne/chezmoi" target="_blank" rel="noopener noreferrer" class="rp-link">chezmoi（配置管理）</a></h3>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">brew</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> chezmoi</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="总结"><a href="#总结" class="rp-header-anchor rp-link" aria-hidden="true">#</a>总结</h2>
<p>这一套终端改造包含：</p>
<ul>
<li>Starship：美观强大的提示符</li>
<li>Nerd Font：图标支持</li>
<li>Yazi：高效文件管理</li>
<li>Ghostty：现代终端体验</li>
<li>chezmoi：配置管理</li>
</ul>
<p><img src="https://img.tteam.icu/i/2026/04/05/0c33f7a7.webp" alt=""/></p>
<p>搞完之后，你的终端会变得又快又好看</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【vps测评】oracle]]></title>
            <link>https://www.tteam.icu/blog/vps/【vps测评】oracle</link>
            <guid isPermaLink="false">/blog/vps/【vps测评】oracle</guid>
            <pubDate>Thu, 26 Mar 2026 10:56:12 GMT</pubDate>
            <description><![CDATA[本文对Oracle VPS进行了详细测评，包括服务器基础信息、CPU和内存性能、磁盘读写速度、流媒体解锁情况、IP质量检测、邮件端口检测、三网回程测试等方面。]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="oracle"><a href="#oracle" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://www.oracle.com/cloud/" target="_blank" rel="noopener noreferrer" class="rp-link">oracle</a></h2>
<h3 class="rp-toc-include" id="简介"><a href="#简介" class="rp-header-anchor rp-link" aria-hidden="true">#</a>简介</h3>
<p>Oracle Cloud Infrastructure (OCI) 是由甲骨文公司提供的全方位、超大规模公有云服务，以高性能、高可靠性和低成本著称。</p>
<h3 class="rp-toc-include" id="申请"><a href="#申请" class="rp-header-anchor rp-link" aria-hidden="true">#</a>申请</h3>
<p>由于<code>Oracle</code>服务器有永久免费的配置, 被国人薅秃了, 我也在3年前开始尝试了无数次都没成功</p>
<p>在昨天看到有朋友申请成功了, 我也抱着试一下的心态再次申请, 结果居然注册成功了</p>
<p>使用招商的<code>Visa</code>卡, 姓名使用中文, 地址使用配音就行</p>
<h3 class="rp-toc-include" id="新建机器"><a href="#新建机器" class="rp-header-anchor rp-link" aria-hidden="true">#</a>新建机器</h3>
<p><code>Oracle</code>新建机器有点复杂, 好在官方有中文页面, 我这里附上几个截图为配置参考</p>
<p><img src="https://img.tteam.icu/i/2026/03/26/a35b719d.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2026/03/26/afa9a8a1.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2026/03/26/6a808184.webp" alt=""/></p>
<h3 class="rp-toc-include" id="测评"><a href="#测评" class="rp-header-anchor rp-link" aria-hidden="true">#</a>测评</h3>
<p>服务器性能还是很差的, 但是他永久免费我也不说什么了, 我申请的是美西的机器, ARM架构服务器没有了, 我只能开1c1g的x86</p>
<p>可以跑探针和我自己写的demo服务, 就不需要单独花钱去购买demo服务器了</p>
<p><code>Oracle</code>服务器似乎有判断你不用的话就会关闭你的账户, 我目前使用<a href="https://github.com/spiritLHLS/Oracle-server-keep-alive-script" target="_blank" rel="noopener noreferrer" class="rp-link">Oracle-server-keep-alive-script</a>来维持CPU占用</p>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>---------------------基础信息查询--感谢所有开源项目----------------------</span></span>
<span class="line"><span> CPU 型号          : AMD EPYC 7551 32-Core Processor</span></span>
<span class="line"><span> CPU 核心数        : 2</span></span>
<span class="line"><span> CPU 频率          : 1996.250 MHz</span></span>
<span class="line"><span> CPU 缓存          : L1: 64.00 KB / L2: 512.00 KB / L3: 16.00 MB</span></span>
<span class="line"><span> AES-NI指令集      : ✔ Enabled</span></span>
<span class="line"><span> VM-x/AMD-V支持    : ✔ Enabled</span></span>
<span class="line"><span> 内存              : 275.76 MiB / 954.21 MiB</span></span>
<span class="line"><span> Swap              : [ no swap partition or swap file detected ]</span></span>
<span class="line"><span> 硬盘空间          : 1.71 GiB / 192.69 GiB</span></span>
<span class="line"><span> 启动盘路径        : /dev/sda1</span></span>
<span class="line"><span> 系统在线时间      : 0 days, 0 hour 11 min</span></span>
<span class="line"><span> 负载              : 2.05, 1.08, 0.60</span></span>
<span class="line"><span> 系统              : Ubuntu 24.04.4 LTS (x86_64)</span></span>
<span class="line"><span> 架构              : x86_64 (64 Bit)</span></span>
<span class="line"><span> 内核              : 6.17.0-1007-oracle</span></span>
<span class="line"><span> TCP加速方式       : cubic</span></span>
<span class="line"><span> 虚拟化架构        : KVM</span></span>
<span class="line"><span> NAT类型           : Port Restricted Cone</span></span>
<span class="line"><span> IPV4 ASN          : AS31898 Oracle Corporation</span></span>
<span class="line"><span> IPV4 位置         : Phoenix / Arizona / US</span></span>
<span class="line"><span>------------------------CPU测试--通过sysbench测试-------------------------</span></span>
<span class="line"><span> -&gt; CPU 测试中 (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 1 线程测试(单核)得分: 		513 Scores</span></span>
<span class="line"><span> 2 线程测试(多核)得分: 		511 Scores</span></span>
<span class="line"><span>--------------------内存测试--感谢lemonbench开源----------------------------</span></span>
<span class="line"><span> -&gt; 内存测试 Test (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 单线程读测试:		14240.20 MB/s</span></span>
<span class="line"><span> 单线程写测试:		6267.26 MB/s</span></span>
<span class="line"><span>--------------------磁盘dd读写测试--感谢lemonbench开源--------------------</span></span>
<span class="line"><span> -&gt; 磁盘IO测试中 (4K Block/1M Block, Direct Mode)</span></span>
<span class="line"><span> 测试操作		写速度					读速度</span></span>
<span class="line"><span> 100MB-4K Block		5.7 MB/s (1398 IOPS, 18.32s)		5.8 MB/s (1415 IOPS, 18.08s)</span></span>
<span class="line"><span> 1GB-1M Block		51.8 MB/s (49 IOPS, 20.23s)		61.7 MB/s (58 IOPS, 16.99s)</span></span>
<span class="line"><span>----------------------磁盘fio读写测试--感谢yabs开源-----------------------</span></span>
<span class="line"><span>Block Size | 4k            (IOPS) | 64k           (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 15.81 MB/s    (3.9k) | 55.15 MB/s     (861)</span></span>
<span class="line"><span>Write      | 15.82 MB/s    (3.9k) | 55.66 MB/s     (869)</span></span>
<span class="line"><span>Total      | 31.63 MB/s    (7.9k) | 110.82 MB/s   (1.7k)</span></span>
<span class="line"><span>           |                      |                     </span></span>
<span class="line"><span>Block Size | 512k          (IOPS) | 1m            (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 54.74 MB/s     (106) | 51.23 MB/s      (50)</span></span>
<span class="line"><span>Write      | 57.70 MB/s     (112) | 54.74 MB/s      (53)</span></span>
<span class="line"><span>Total      | 112.45 MB/s    (218) | 105.98 MB/s    (103)</span></span>
<span class="line"><span>---------------流媒体解锁--感谢oneclickvirt/UnlockTests测试----------------</span></span>
<span class="line"><span>Can not detect IPv6 Address</span></span>
<span class="line"><span>测试时间:  2026-03-25 07:45:51</span></span>
<span class="line"><span>IPV4:</span></span>
<span class="line"><span>============[ 跨国平台 ]============</span></span>
<span class="line"><span>Apple                     YES (Region: USA) [Native]</span></span>
<span class="line"><span>BingSearch                YES (Region: US)</span></span>
<span class="line"><span>Claude                    YES [Native]</span></span>
<span class="line"><span>Dazn                      Banned</span></span>
<span class="line"><span>Disney+                   NO (forbidden-location)</span></span>
<span class="line"><span>Gemini                    YES (Region: US) [Native]</span></span>
<span class="line"><span>GoogleSearch              YES</span></span>
<span class="line"><span>Google Play Store         YES (Region: US) [Native]</span></span>
<span class="line"><span>IQiYi                     YES (Region: US) [Native]</span></span>
<span class="line"><span>Instagram Licensed Audio  YES [Native]</span></span>
<span class="line"><span>KOCOWA                    YES [Native]</span></span>
<span class="line"><span>MetaAI                    Unknown: unexpected response: ajax status=401, home status=403</span></span>
<span class="line"><span>Netflix                   NO</span></span>
<span class="line"><span>Netflix CDN               NO (Main Service Unavailable) (Region: US)</span></span>
<span class="line"><span>OneTrust                  YES (Region: US ARIZONA) [Via DNS]</span></span>
<span class="line"><span>ChatGPT                   YES (Region: US) [Native]</span></span>
<span class="line"><span>Paramount+                YES [Native]</span></span>
<span class="line"><span>Amazon Prime Video        YES (Region: US) [Native]</span></span>
<span class="line"><span>Reddit                    NO</span></span>
<span class="line"><span>SonyLiv                   Banned</span></span>
<span class="line"><span>Sora                      YES (Region: US)</span></span>
<span class="line"><span>Spotify Registration      NO</span></span>
<span class="line"><span>Steam Store               YES (Community Available) (Region: US)</span></span>
<span class="line"><span>TVBAnywhere+              YES (Region: US) [Native]</span></span>
<span class="line"><span>TikTok                    YES (Region: US) [Native]</span></span>
<span class="line"><span>Viu.com                   YES [Native]</span></span>
<span class="line"><span>Wikipedia Editability     NO</span></span>
<span class="line"><span>YouTube Region            YES [Native]</span></span>
<span class="line"><span>YouTube CDN               PHX</span></span>
<span class="line"><span>---------------------TikTok解锁--感谢lmc999的源脚本---------------------</span></span>
<span class="line"><span> Tiktok Region:		【US】</span></span>
<span class="line"><span>-------------IP质量检测--基于oneclickvirt/securityCheck使用--------------</span></span>
<span class="line"><span>数据仅作参考，不代表100%准确，如果和实际情况不一致请手动查询多个数据库比对</span></span>
<span class="line"><span>以下为各数据库编号，输出结果后将自带数据库来源对应的编号</span></span>
<span class="line"><span>ipinfo数据库  [0] | scamalytics数据库 [1] | virustotal数据库   [2] | abuseipdb数据库   [3] | ip2location数据库    [4]</span></span>
<span class="line"><span>ip-api数据库  [5] | ipwhois数据库     [6] | ipregistry数据库   [7] | ipdata数据库      [8] | db-ip数据库          [9]</span></span>
<span class="line"><span>ipapiis数据库 [A] | ipapicom数据库    [B] | bigdatacloud数据库 [C] | dkly数据库        [D] | ipqualityscore数据库 [E]</span></span>
<span class="line"><span>ipintel数据库 [F] | ipfighter数据库   [G] | fraudlogix数据库   [H] | cloudflare数据库  [I] |</span></span>
<span class="line"><span>IPV4:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>信任得分(越高越好): 33 [8] </span></span>
<span class="line"><span>VPN得分(越低越好): 100 [8]</span></span>
<span class="line"><span>代理得分(越低越好): 1 [8] </span></span>
<span class="line"><span>社区投票-无害: 0 [2] </span></span>
<span class="line"><span>社区投票-恶意: 0 [2] </span></span>
<span class="line"><span>威胁得分(越低越好): 100 [8] </span></span>
<span class="line"><span>欺诈得分(越低越好): 65 [E] </span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3] </span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0056 (Low) [A] </span></span>
<span class="line"><span>公司滥用得分(越低越好): 0.0095 (Elevated) [A] </span></span>
<span class="line"><span>威胁级别: low [9 B] </span></span>
<span class="line"><span>流量占比: 真人(越高越好)12% [I] 机器人(越低越好)87% [I]</span></span>
<span class="line"><span>黑名单记录统计:(有多少黑名单网站有记录):</span></span>
<span class="line"><span>无害记录数: 0 [2]  恶意记录数: 0 [2]  可疑记录数: 0 [2]  无记录数: 94 [2] </span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: hosting [0 3 7 8 C] business [9 A]</span></span>
<span class="line"><span>公司类型: hosting [0 7 A] </span></span>
<span class="line"><span>浏览器类型: 主流80% 其他19% [I] </span></span>
<span class="line"><span>设备类型: 桌面95% 移动4% 其他0% [I] </span></span>
<span class="line"><span>操作系统类型: 主流87% 其他12% [I] </span></span>
<span class="line"><span>是否云提供商: Yes [7 D] </span></span>
<span class="line"><span>是否数据中心: Yes [0 5 8 A C G] </span></span>
<span class="line"><span>是否移动设备: Yes [E] No [5 A C G]</span></span>
<span class="line"><span>是否代理: No [0 4 5 7 8 9 A B C D] Yes [E G]</span></span>
<span class="line"><span>是否VPN: Yes [E G] No [0 7 A C D]</span></span>
<span class="line"><span>是否Tor: No [0 3 7 8 A B C D E] </span></span>
<span class="line"><span>是否Tor出口: No [7 D] </span></span>
<span class="line"><span>是否网络爬虫: No [9 A B E] </span></span>
<span class="line"><span>是否匿名: No [7 D] Yes [8]</span></span>
<span class="line"><span>是否攻击者: No [7 8 D] </span></span>
<span class="line"><span>是否滥用者: No [7 8 A C D E] </span></span>
<span class="line"><span>是否威胁: No [7 8 C D]</span></span>
<span class="line"><span>是否中继: No [0 7 8 C D] </span></span>
<span class="line"><span>是否Bogon: No [7 8 A C D] </span></span>
<span class="line"><span>是否机器人: No [E] </span></span>
<span class="line"><span>DNS-黑名单: 309(Total_Check) 0(Clean) 8(Blacklisted) 12(Other) </span></span>
<span class="line"><span>Google搜索可行性：NO</span></span>
<span class="line"><span>------------邮件端口检测--基于oneclickvirt/portchecker开源------------</span></span>
<span class="line"><span>Platform  SMTP  SMTPS POP3  POP3S IMAP  IMAPS</span></span>
<span class="line"><span>LocalPort ✔     ✔     ✔     ✔     ✔     ✔    </span></span>
<span class="line"><span>QQ        ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>163       ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sohu      ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yandex    ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Gmail     ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Outlook   ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Office365 ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yahoo     ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MailCOM   ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>MailRU    ✘     ✔     ✘     ✘     ✔     ✘    </span></span>
<span class="line"><span>AOL       ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>GMX       ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sina      ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Apple     ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>FastMail  ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ProtonMail✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MXRoute   ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Namecrane ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>XYAMail   ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ZohoMail  ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Inbox_eu  ✘     ✔     ✔     ✘     ✘     ✘    </span></span>
<span class="line"><span>Free_fr   ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>-------------上游及三网回程--基于oneclickvirt/backtrace开源--------------</span></span>
<span class="line"><span>国家: US 城市: Phoenix 服务商: AS31898 Oracle Corporation</span></span>
<span class="line"><span>北京电信v4 219.141.140.10           电信163    [普通线路] </span></span>
<span class="line"><span>北京联通v4 202.106.195.68           联通4837   [普通线路] </span></span>
<span class="line"><span>北京移动v4 221.179.155.161          移动CMI    [普通线路] </span></span>
<span class="line"><span>上海电信v4 202.96.209.133  检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>上海联通v4 210.22.97.1              联通4837   [普通线路] </span></span>
<span class="line"><span>上海移动v4 211.136.112.200          移动CMI    [普通线路] </span></span>
<span class="line"><span>广州电信v4 58.60.188.222            电信163    [普通线路] </span></span>
<span class="line"><span>广州联通v4 210.21.196.6             联通4837   [普通线路] </span></span>
<span class="line"><span>广州移动v4 120.196.165.24           移动CMI    [普通线路] </span></span>
<span class="line"><span>成都电信v4 61.139.2.69     检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>成都联通v4 119.6.6.6                联通4837   [普通线路] </span></span>
<span class="line"><span>成都移动v4 211.137.96.205           移动CMI    [普通线路] </span></span>
<span class="line"><span>准确线路自行查看详细路由，本测试结果仅作参考</span></span>
<span class="line"><span>同一目标地址多个线路时，检测可能已越过汇聚层，除第一个线路外，后续信息可能无效</span></span>
<span class="line"><span>----------------------回程路由--基于nexttrace开源-----------------------</span></span>
<span class="line"><span>依次测试电信/联通/移动经过的地区及线路，核心程序来自nexttrace，请知悉!</span></span>
<span class="line"><span>广州电信 58.60.188.222</span></span>
<span class="line"><span>0.47 ms 	AS31898 美国 亚利桑那州 凤凰城 cloud.oracle.com</span></span>
<span class="line"><span>1.57 ms 	AS3257 [GTT-GTT] 美国 亚利桑那州 凤凰城 gtt.net</span></span>
<span class="line"><span>1.62 ms 	AS3257 [GTT-GTT] 美国 亚利桑那 凤凰城 gtt.net</span></span>
<span class="line"><span>8.68 ms 	AS3257 [GTT-BACKBONE] 美国 加利福尼亚 洛杉矶 gtt.net</span></span>
<span class="line"><span>11.15 ms 	AS3257 美国 gtt.net</span></span>
<span class="line"><span>180.54 ms 	AS4134 [CHINANET-BB] 中国 广东 广州 chinatelecom.com.cn 电信</span></span>
<span class="line"><span>广州联通 210.21.196.6</span></span>
<span class="line"><span>0.43 ms 	AS31898 美国 亚利桑那州 凤凰城 cloud.oracle.com</span></span>
<span class="line"><span>1.55 ms 	AS3257 [GTT-GTT] 美国 亚利桑那州 凤凰城 gtt.net</span></span>
<span class="line"><span>1.62 ms 	AS3257 [GTT-GTT] 美国 亚利桑那 凤凰城 gtt.net</span></span>
<span class="line"><span>16.25 ms 	AS3257 [GTT-BACKBONE] 美国 加利福尼亚 圣何塞 gtt.net</span></span>
<span class="line"><span>18.82 ms 	AS3257 美国 加利福尼亚 圣何塞 gtt.net</span></span>
<span class="line"><span>186.77 ms 	AS4837 [CU169-BACKBONE] 中国 北京市 chinaunicom.cn 联通</span></span>
<span class="line"><span>190.48 ms 	AS4837 [CU169-BACKBONE] 中国 上海 chinaunicom.cn 联通</span></span>
<span class="line"><span>197.10 ms 	AS17623 [APNIC-AP] 中国 广东 深圳 chinaunicom.cn 联通</span></span>
<span class="line"><span>186.65 ms 	AS17623 中国 广东 深圳 宝安区 chinaunicom.cn 联通</span></span>
<span class="line"><span>广州移动 120.196.165.24</span></span>
<span class="line"><span>0.32 ms 	AS31898 美国 亚利桑那州 凤凰城 cloud.oracle.com</span></span>
<span class="line"><span>1.40 ms 	AS2914 [NTTA-128] 美国 加利福尼亚 洛杉矶 gin.ntt.net</span></span>
<span class="line"><span>25.19 ms 	AS2914 [NTTA-128] 美国 加利福尼亚 洛杉矶 gin.ntt.net</span></span>
<span class="line"><span>114.01 ms 	AS2914 [NTT-BACKBONE] 日本 东京都 东京 gin.ntt.net</span></span>
<span class="line"><span>181.29 ms 	AS2914 [NTT-BACKBONE] 中国 香港 gin.ntt.net</span></span>
<span class="line"><span>175.31 ms 	AS58453 [CMI-INT] 中国 香港 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>178.29 ms 	AS58453 [CMI-INT] 中国 广东 广州 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>177.86 ms 	AS9808 [CMNET] 中国 广东 广州 X-I chinamobileltd.com 移动</span></span>
<span class="line"><span>178.66 ms 	AS9808 [CMNET] 中国 广东 广州 I-C chinamobileltd.com 移动</span></span>
<span class="line"><span>179.88 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>178.00 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>177.92 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>181.78 ms 	AS56040 [APNIC-AP] 中国 广东 深圳 gd.10086.cn 移动</span></span>
<span class="line"><span>---------------------自动更新测速节点列表--本脚本原创----------------------</span></span>
<span class="line"><span>位置		 上传速度	 下载速度	 延迟</span></span>
<span class="line"><span>Speedtest.net	 49.20Mbps	 47.90Mbps	 1.63ms	</span></span>
<span class="line"><span>中国香港	 48.75Mbps	 44.93Mbps	 160.45ms	</span></span>
<span class="line"><span>联通上海5G	 38.09Mbps	 47.00Mbps	 202.84ms	</span></span>
<span class="line"><span>电信Suzhou5G	 28.99Mbps	 33.97Mbps	 157.28ms	</span></span>
<span class="line"><span>电信Zhenjiang5G	 0.23Mbps	 42.40Mbps	 200.86ms	</span></span>
<span class="line"><span>移动Suzhou	 14.46Mbps	 0.08Mbps	 410.41ms	</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span>
<span class="line"><span> 总共花费      : 11 分 2 秒</span></span>
<span class="line"><span> 时间          : Wed Mar 25 07:50:57 UTC 2026</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[我把我三个网站合在一起了]]></title>
            <link>https://www.tteam.icu/blog/dev/我把我三个网站合在一起了</link>
            <guid isPermaLink="false">/blog/dev/我把我三个网站合在一起了</guid>
            <pubDate>Sun, 22 Mar 2026 17:20:12 GMT</pubDate>
            <description><![CDATA[分享如何使用Rspress V2将三个独立网站(关于我、笔记、博客)合并为一个统一平台的过程]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="我把我三个网站合在一起了"><a href="#我把我三个网站合在一起了" class="rp-header-anchor rp-link" aria-hidden="true">#</a>我把我三个网站合在一起了<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>在此之前，我拥有三个独立网站，分别是“关于我”、“笔记”和“博客”</p>
<p>它们分别使用<code>React</code>、<code>Rspress</code>和<code>Hexo</code>实现</p>
<p>随着<code>Rspress V2</code>的发布，其开放了更多功能，使我能够实现将三个网站合并的想法</p>
<p>下面，我将大致介绍实现这一整合的过程</p>
<h2 class="rp-toc-include" id="博客"><a href="#博客" class="rp-header-anchor rp-link" aria-hidden="true">#</a>博客</h2>
<h3 class="rp-toc-include" id="列表界面"><a href="#列表界面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>列表界面</h3>
<p>博客最主要的就是列表，但是<code>rspress</code>没有实现类似的功能，所以我参照了<a href="https://github.com/web-infra-dev/rspress/blob/d8b1e286e392098464627207d8add0719bcba613/website/docs/components/Blog/index.tsx" target="_blank" rel="noopener noreferrer" class="rp-link">官方网站</a>的代码</p>
<p>所以我单独写了一个<a href="https://github.com/buyfakett/rspress-plugin-blog-list.git" target="_blank" rel="noopener noreferrer" class="rp-link">插件</a>来支持，只需要安装上插件就可以有本站的效果</p>
<h3 class="rp-toc-include" id="地图"><a href="#地图" class="rp-header-anchor rp-link" aria-hidden="true">#</a>地图</h3>
<p>在<code>hexo</code>中，有<a href="https://github.com/kuole-o/hexo-tag-map" target="_blank" rel="noopener noreferrer" class="rp-link">hexo-tag-map</a>插件可以在文章中展示地图，所以我也写了一个<a href="https://github.com/buyfakett/rspress-plugin-map" target="_blank" rel="noopener noreferrer" class="rp-link">插件</a>来支持</p>
<h3 class="rp-toc-include" id="域名修改"><a href="#域名修改" class="rp-header-anchor rp-link" aria-hidden="true">#</a>域名修改</h3>
<p>之前我三个网站分别代表了三个域名(www、note、blog)，都是托管在腾讯云EO平台</p>
<p>www域名是最好处理的，只需要把域名增加到本项目就行</p>
<p>blog域名兼容之前的就有点复杂，主要是之前网站有<code>rss</code></p>
<p>我域名托管是在cf中，只需要在规则页面增加两个域名的跳转规则就行</p>
<p>blog重定向:</p>
<p><img src="https://img.tteam.icu/i/2026/03/22/fe251904.webp" alt="blog重定向"/></p>
<p><code>blog-rss</code>重定向:</p>
<p><img src="https://img.tteam.icu/i/2026/03/22/e6bfb11c.webp" alt="blog-rss重定向"/></p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【vps测评】netcup]]></title>
            <link>https://www.tteam.icu/blog/vps/【vps测评】netcup</link>
            <guid isPermaLink="false">/blog/vps/【vps测评】netcup</guid>
            <pubDate>Sun, 01 Mar 2026 23:56:12 GMT</pubDate>
            <description><![CDATA[本文对Netcup VPS进行了详细测评，包括服务器基础信息、CPU和内存性能、磁盘读写速度、流媒体解锁情况、IP质量检测、邮件端口检测、三网回程测试等方面。Netcup是欧洲领先的服务器提供商，以硬件配置高、运行稳定、价格低廉著称。]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="netcup"><a href="#netcup" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://www.netcup.com/en" target="_blank" rel="noopener noreferrer" class="rp-link">netcup</a></h2>
<h3 class="rp-toc-include" id="简介"><a href="#简介" class="rp-header-anchor rp-link" aria-hidden="true">#</a>简介</h3>
<p>Netcup是欧洲领先的服务器提供商，以硬件配置高、运行稳定、价格低廉著称。</p>
<p>本来打算在冬促时入手一台机器，但在冬促前半天收到通知，因内存和硬盘原因取消了促销活动。</p>
<p>刚好在和朋友吐槽时，朋友的群友中有一台第二天过期的我想要的机器，于是就收了过来。</p>
<p>随后我将<a href="/blog/vps/【vps测评】hetnzer" class="rp-link">Hetzner</a>上的服务迁移到了这台Netcup服务器上。</p>
<h3 class="rp-toc-include" id="测评"><a href="#测评" class="rp-header-anchor rp-link" aria-hidden="true">#</a>测评</h3>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>---------------------基础信息查询--感谢所有开源项目----------------------</span></span>
<span class="line"><span>CPU 型号          : AMD EPYC-Genoa Processor</span></span>
<span class="line"><span>CPU 核心数        : 4</span></span>
<span class="line"><span>CPU 频率          : 2246.624 MHz</span></span>
<span class="line"><span>CPU 缓存          : L1: 128.00 KB / L2: 4.00 MB / L3: 128.00 MB</span></span>
<span class="line"><span>AES-NI指令集      : ✔ Enabled</span></span>
<span class="line"><span>VM-x/AMD-V支持    : ❌ Disabled</span></span>
<span class="line"><span>内存              : 301.84 MiB / 7.76 GiB</span></span>
<span class="line"><span>Swap              : [ no swap partition or swap file detected ]</span></span>
<span class="line"><span>硬盘空间          : 1.51 GiB / 502.89 GiB</span></span>
<span class="line"><span>启动盘路径        : /dev/vda1</span></span>
<span class="line"><span>系统在线时间      : 0 days, 0 hour 13 min</span></span>
<span class="line"><span>负载              : 0.42, 0.27, 0.13</span></span>
<span class="line"><span>系统              : Debian GNU/Linux 13 (trixie) (x86_64)</span></span>
<span class="line"><span>架构              : x86_64 (64 Bit)</span></span>
<span class="line"><span>内核              : 6.12.63+deb13-cloud-amd64</span></span>
<span class="line"><span>TCP加速方式       : cubic</span></span>
<span class="line"><span>虚拟化架构        : KVM</span></span>
<span class="line"><span>IPV4 ASN          : AS197540 netcup GmbH</span></span>
<span class="line"><span>IPV4 位置         : Nürnberg / Bavaria / DE</span></span>
<span class="line"><span>IPV6 ASN          : AS197540 netcup GmbH</span></span>
<span class="line"><span>IPV6 位置         : Vienna / Vienna / Austria</span></span>
<span class="line"><span>IPV6 子网掩码     : 64</span></span>
<span class="line"><span>------------------------CPU测试--通过sysbench测试-------------------------</span></span>
<span class="line"><span>-&gt; CPU 测试中 (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span>1 线程测试(单核)得分: 		3886 Scores</span></span>
<span class="line"><span>4 线程测试(多核)得分: 		15248 Scores</span></span>
<span class="line"><span>--------------------内存测试--感谢lemonbench开源----------------------------</span></span>
<span class="line"><span>-&gt; 内存测试 Test (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span>单线程读测试:		44486.50 MB/s</span></span>
<span class="line"><span>单线程写测试:		24970.09 MB/s</span></span>
<span class="line"><span>--------------------磁盘dd读写测试--感谢lemonbench开源--------------------</span></span>
<span class="line"><span>-&gt; 磁盘IO测试中 (4K Block/1M Block, Direct Mode)</span></span>
<span class="line"><span>测试操作		写速度					读速度</span></span>
<span class="line"><span>100MB-4K Block		18.4 MB/s (4490 IOPS, 5.70s)		36.1 MB/s (8803 IOPS, 2.91s)</span></span>
<span class="line"><span>1GB-1M Block		646 MB/s (616 IOPS, 1.62s)		2.0 GB/s (1928 IOPS, 0.52s)</span></span>
<span class="line"><span>----------------------磁盘fio读写测试--感谢yabs开源-----------------------</span></span>
<span class="line"><span>Block Size | 4k            (IOPS) | 64k           (IOPS)</span></span>
<span class="line"><span>------   | ---            ----  | ----           ----</span></span>
<span class="line"><span>Read       | 159.84 MB/s  (39.9k) | 577.64 MB/s   (9.0k)</span></span>
<span class="line"><span>Write      | 160.26 MB/s  (40.0k) | 580.68 MB/s   (9.0k)</span></span>
<span class="line"><span>Total      | 320.10 MB/s  (80.0k) | 1.15 GB/s    (18.0k)</span></span>
<span class="line"><span>|                      |                     </span></span>
<span class="line"><span>Block Size | 512k          (IOPS) | 1m            (IOPS)</span></span>
<span class="line"><span>------   | ---            ----  | ----           ----</span></span>
<span class="line"><span>Read       | 438.66 MB/s    (856) | 693.63 MB/s    (677)</span></span>
<span class="line"><span>Write      | 461.97 MB/s    (902) | 739.82 MB/s    (722)</span></span>
<span class="line"><span>Total      | 900.64 MB/s   (1.7k) | 1.43 GB/s     (1.3k)</span></span>
<span class="line"><span>正在并发测试中，大概2~3分钟无输出，请耐心等待。。。</span></span>
<span class="line"><span>---------------流媒体解锁--感谢oneclickvirt/UnlockTests测试----------------</span></span>
<span class="line"><span>测试时间:  2026-02-24 19:59:14</span></span>
<span class="line"><span>IPV4:</span></span>
<span class="line"><span>============[ 跨国平台 ]============</span></span>
<span class="line"><span>Apple                     YES (Region: DEU) [Via DNS]</span></span>
<span class="line"><span>BingSearch                YES (Region: AT)</span></span>
<span class="line"><span>Claude                    YES [Via DNS]</span></span>
<span class="line"><span>Dazn                      YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>Disney+                   YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>Gemini                    NO</span></span>
<span class="line"><span>GoogleSearch              YES</span></span>
<span class="line"><span>Google Play Store         YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>IQiYi                     YES (Region: DE) [Native]</span></span>
<span class="line"><span>Instagram Licensed Audio  YES [Via DNS]</span></span>
<span class="line"><span>KOCOWA                    YES [Via DNS]</span></span>
<span class="line"><span>MetaAI                    NO [Via DNS]</span></span>
<span class="line"><span>Netflix                   YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>Netflix CDN               DE</span></span>
<span class="line"><span>OneTrust                  YES (Region: DE BAVARIA) [Via DNS]</span></span>
<span class="line"><span>ChatGPT                   YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>Paramount+                YES [Via DNS]</span></span>
<span class="line"><span>Amazon Prime Video        YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>Reddit                    YES</span></span>
<span class="line"><span>SonyLiv                   YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>Sora                      YES (Region: DE)</span></span>
<span class="line"><span>Spotify Registration      NO</span></span>
<span class="line"><span>Steam Store               YES (Community Available) (Region: DE)</span></span>
<span class="line"><span>TVBAnywhere+              YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>TikTok                    YES (Region: DE) [Native]</span></span>
<span class="line"><span>Viu.com                   YES [Via DNS]</span></span>
<span class="line"><span>Wikipedia Editability     YES</span></span>
<span class="line"><span>YouTube Region            YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>YouTube CDN               FRA</span></span>
<span class="line"><span>IPV6:</span></span>
<span class="line"><span>============[ 跨国平台 ]============</span></span>
<span class="line"><span>Apple                     YES (Region: DEU) [Via DNS]</span></span>
<span class="line"><span>BingSearch                YES (Region: AT)</span></span>
<span class="line"><span>Claude                    YES [Via DNS]</span></span>
<span class="line"><span>Dazn                      N/A (No IPv6 Support)</span></span>
<span class="line"><span>Disney+                   YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>Gemini                    NO</span></span>
<span class="line"><span>GoogleSearch              YES</span></span>
<span class="line"><span>Google Play Store         YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>IQiYi                     N/A (No IPv6 Support)</span></span>
<span class="line"><span>Instagram Licensed Audio  YES [Via DNS]</span></span>
<span class="line"><span>KOCOWA                    N/A (No IPv6 Support)</span></span>
<span class="line"><span>MetaAI                    NO [Via DNS]</span></span>
<span class="line"><span>Netflix                   YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>Netflix CDN               DE</span></span>
<span class="line"><span>OneTrust                  YES (Region: DE BAVARIA) [Via DNS]</span></span>
<span class="line"><span>ChatGPT                   Unknown</span></span>
<span class="line"><span>Paramount+                YES [Via DNS]</span></span>
<span class="line"><span>Amazon Prime Video        N/A (No IPv6 Support)</span></span>
<span class="line"><span>Reddit                    Failed (Network Connection Failed)</span></span>
<span class="line"><span>SonyLiv                   YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>Sora                      YES (Region: DE)</span></span>
<span class="line"><span>Spotify Registration      NO</span></span>
<span class="line"><span>Steam Store               Failed (Network Connection Failed)</span></span>
<span class="line"><span>TVBAnywhere+              N/A (No IPv6 Support)</span></span>
<span class="line"><span>TikTok                    N/A (No IPv6 Support)</span></span>
<span class="line"><span>Viu.com                   N/A (No IPv6 Support)</span></span>
<span class="line"><span>Wikipedia Editability     YES</span></span>
<span class="line"><span>YouTube Region            YES (Region: DE) [Via DNS]</span></span>
<span class="line"><span>YouTube CDN               FRA</span></span>
<span class="line"><span>---------------------TikTok解锁--感谢lmc999的源脚本---------------------</span></span>
<span class="line"><span>Tiktok Region:		Failed</span></span>
<span class="line"><span>-------------IP质量检测--基于oneclickvirt/securityCheck使用--------------</span></span>
<span class="line"><span>数据仅作参考，不代表100%准确，如果和实际情况不一致请手动查询多个数据库比对</span></span>
<span class="line"><span>以下为各数据库编号，输出结果后将自带数据库来源对应的编号</span></span>
<span class="line"><span>ipinfo数据库  [0] | scamalytics数据库 [1] | virustotal数据库   [2] | abuseipdb数据库   [3] | ip2location数据库    [4]</span></span>
<span class="line"><span>ip-api数据库  [5] | ipwhois数据库     [6] | ipregistry数据库   [7] | ipdata数据库      [8] | db-ip数据库          [9]</span></span>
<span class="line"><span>ipapiis数据库 [A] | ipapicom数据库    [B] | bigdatacloud数据库 [C] | dkly数据库        [D] | ipqualityscore数据库 [E]</span></span>
<span class="line"><span>ipintel数据库 [F] | ipfighter数据库   [G] | fraudlogix数据库   [H] | cloudflare数据库  [I] |</span></span>
<span class="line"><span>IPV4:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>信任得分(越高越好): 33 [8]</span></span>
<span class="line"><span>VPN得分(越低越好): 100 [8]</span></span>
<span class="line"><span>代理得分(越低越好): 0 [8]</span></span>
<span class="line"><span>社区投票-无害: 0 [2]</span></span>
<span class="line"><span>社区投票-恶意: 0 [2]</span></span>
<span class="line"><span>威胁得分(越低越好): 100 [8]</span></span>
<span class="line"><span>欺诈得分(越低越好): 0 [E]</span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3]</span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0094 (Elevated) [A]</span></span>
<span class="line"><span>公司滥用得分(越低越好): 0 (Very Low) [A]</span></span>
<span class="line"><span>威胁级别: low [B]</span></span>
<span class="line"><span>流量占比: 真人(越高越好)11% [I] 机器人(越低越好)88% [I]</span></span>
<span class="line"><span>黑名单记录统计:(有多少黑名单网站有记录):</span></span>
<span class="line"><span>无害记录数: 0 [2]  恶意记录数: 0 [2]  可疑记录数: 0 [2]  无记录数: 93 [2]</span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: hosting [0 3 7 8 A C]</span></span>
<span class="line"><span>公司类型: hosting [0 7 A]</span></span>
<span class="line"><span>浏览器类型: 主流67% 其他32% [I]</span></span>
<span class="line"><span>设备类型: 桌面88% 移动11% 其他0% [I]</span></span>
<span class="line"><span>操作系统类型: 主流89% 其他10% [I]</span></span>
<span class="line"><span>是否云提供商: Yes [7 D]</span></span>
<span class="line"><span>是否数据中心: Yes [0 5 8 A C G]</span></span>
<span class="line"><span>是否移动设备: Yes [E] No [5 A C G]</span></span>
<span class="line"><span>是否代理: No [0 4 5 7 8 A B C D E] Yes [G]</span></span>
<span class="line"><span>是否VPN: No [0 7 A C D E] Yes [G]</span></span>
<span class="line"><span>是否Tor: No [0 3 7 8 A B C D E]</span></span>
<span class="line"><span>是否Tor出口: No [7 D]</span></span>
<span class="line"><span>是否网络爬虫: No [A B E]</span></span>
<span class="line"><span>是否匿名: Yes [8] No [7 D]</span></span>
<span class="line"><span>是否攻击者: No [7 8 D]</span></span>
<span class="line"><span>是否滥用者: No [7 8 A C D E]</span></span>
<span class="line"><span>是否威胁: No [7 8 C D]</span></span>
<span class="line"><span>是否中继: No [0 7 8 C D]</span></span>
<span class="line"><span>是否Bogon: No [7 8 A C D]</span></span>
<span class="line"><span>是否机器人: No [E]</span></span>
<span class="line"><span>DNS-黑名单: 309(Total_Check) 0(Clean) 0(Blacklisted) 0(Other)</span></span>
<span class="line"><span>IPV6:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3]</span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0094 (Elevated) [A]</span></span>
<span class="line"><span>公司滥用得分(越低越好): 0 (Very Low) [A]</span></span>
<span class="line"><span>威胁级别: low [B]</span></span>
<span class="line"><span>流量占比: 真人(越高越好)11% [I] 机器人(越低越好)88% [I]</span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: hosting [3 A]</span></span>
<span class="line"><span>公司类型: hosting [A]</span></span>
<span class="line"><span>浏览器类型: 主流67% 其他32% [I]</span></span>
<span class="line"><span>设备类型: 桌面88% 移动11% 其他0% [I]</span></span>
<span class="line"><span>操作系统类型: 主流89% 其他10% [I]</span></span>
<span class="line"><span>是否数据中心: Yes [A G]</span></span>
<span class="line"><span>是否移动设备: No [A G]</span></span>
<span class="line"><span>是否代理: Yes [G] No [A B]</span></span>
<span class="line"><span>是否VPN: Yes [G] No [A]</span></span>
<span class="line"><span>是否Tor: No [3 A B]</span></span>
<span class="line"><span>是否网络爬虫: No [A B]</span></span>
<span class="line"><span>是否滥用者: No [A]</span></span>
<span class="line"><span>是否Bogon: No [A]</span></span>
<span class="line"><span>DNS-黑名单: 309(Total_Check) 0(Clean) 0(Blacklisted) 309(Other)</span></span>
<span class="line"><span>Google搜索可行性: NO</span></span>
<span class="line"><span>------------邮件端口检测--基于oneclickvirt/portchecker开源------------</span></span>
<span class="line"><span>Platform  SMTP  SMTPS POP3  POP3S IMAP  IMAPS</span></span>
<span class="line"><span>LocalPort ✔     ✔     ✔     ✔     ✔     ✔    </span></span>
<span class="line"><span>QQ        ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>163       ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sohu      ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yandex    ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Gmail     ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Outlook   ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Office365 ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yahoo     ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MailCOM   ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>MailRU    ✔     ✔     ✘     ✘     ✔     ✘    </span></span>
<span class="line"><span>AOL       ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>GMX       ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sina      ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Apple     ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>FastMail  ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ProtonMail✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MXRoute   ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Namecrane ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>XYAMail   ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ZohoMail  ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Inbox_eu  ✔     ✔     ✔     ✘     ✘     ✘    </span></span>
<span class="line"><span>Free_fr   ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>-------------上游及三网回程--基于oneclickvirt/backtrace开源--------------</span></span>
<span class="line"><span>国家: DE 城市: Nürnberg 服务商: AS197540 netcup GmbH</span></span>
<span class="line"><span>北京电信v4 219.141.140.10           电信163    [普通线路]</span></span>
<span class="line"><span>北京联通v4 202.106.195.68  检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>北京移动v4 221.179.155.161          移动CMI    [普通线路] 移动CMIN2  [精品线路]</span></span>
<span class="line"><span>上海电信v4 202.96.209.133           电信163    [普通线路]</span></span>
<span class="line"><span>上海联通v4 210.22.97.1     检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>上海移动v4 211.136.112.200          移动CMI    [普通线路]</span></span>
<span class="line"><span>广州电信v4 58.60.188.222            电信163    [普通线路]</span></span>
<span class="line"><span>广州联通v4 210.21.196.6    检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>广州移动v4 120.196.165.24           移动CMI    [普通线路]</span></span>
<span class="line"><span>成都电信v4 61.139.2.69              电信163    [普通线路]</span></span>
<span class="line"><span>成都联通v4 119.6.6.6       检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>成都移动v4 211.137.96.205           移动CMI    [普通线路]</span></span>
<span class="line"><span>北京电信v6 2400:89c0:1053:3::69     电信163    [普通线路]</span></span>
<span class="line"><span>北京联通v6 2400:89c0:1013:3::54     联通4837   [普通线路]</span></span>
<span class="line"><span>北京移动v6 2409:8c00:8421:1303::55  移动CMIN2  [精品线路]</span></span>
<span class="line"><span>上海电信v6 240e:e1:aa00:4000::24    电信163    [普通线路]</span></span>
<span class="line"><span>上海联通v6 2408:80f1:21:5003::a     联通4837   [普通线路]</span></span>
<span class="line"><span>上海移动v6 2409:8c1e:75b0:3003::26  移动CMI    [普通线路]</span></span>
<span class="line"><span>广州电信v6 240e:97c:2f:3000::44     电信163    [普通线路]</span></span>
<span class="line"><span>广州联通v6 2408:8756:f50:1001::c    联通4837   [普通线路]</span></span>
<span class="line"><span>广州移动v6 2409:8c54:871:1001::12   检测不到回程路由节点的IPV6地址</span></span>
<span class="line"><span>准确线路自行查看详细路由，本测试结果仅作参考</span></span>
<span class="line"><span>同一目标地址多个线路时，检测可能已越过汇聚层，除第一个线路外，后续信息可能无效</span></span>
<span class="line"><span>----------------------回程路由--基于nexttrace开源-----------------------</span></span>
<span class="line"><span>依次测试电信/联通/移动经过的地区及线路，核心程序来自nexttrace，请知悉!</span></span>
<span class="line"><span>广州电信 58.60.188.222</span></span>
<span class="line"><span>0.37 ms 	AS197540 德国 黑森州 美因河畔法兰克福 netcup.de</span></span>
<span class="line"><span>1.15 ms 	AS1299 [TELIANET] 德国 巴伐利亚 纽伦堡 arelion.com</span></span>
<span class="line"><span>3.76 ms 	AS1299 [ARELION-NET] 德国 黑森州 美因河畔法兰克福 arelion.com</span></span>
<span class="line"><span>5.89 ms 	AS1299 [ARELION-NET] 德国 黑森州 美因河畔法兰克福 arelion.com</span></span>
<span class="line"><span>7.04 ms 	AS4134 [CHINANET-BB] 德国 黑森 美因河畔法兰克福 CT-POP chinatelecom.com.cn 电信</span></span>
<span class="line"><span>199.15 ms 	AS4134 [CHINANET-BB] 中国 广东 广州 chinatelecom.com.cn</span></span>
<span class="line"><span>207.86 ms 	AS4134 [CHINANET-BB] 中国 广东 广州 chinatelecom.com.cn</span></span>
<span class="line"><span>190.50 ms 	AS4134 [CHINANET-BB] 中国 广东 广州 chinatelecom.com.cn</span></span>
<span class="line"><span>199.18 ms 	AS4134 [CHINANET-GD] 中国 广东 深圳 chinatelecom.com.cn 电信</span></span>
<span class="line"><span>广州联通 210.21.196.6</span></span>
<span class="line"><span>1.53 ms 	AS197540 德国 黑森州 美因河畔法兰克福 netcup.de</span></span>
<span class="line"><span>0.65 ms 	AS1299 [TELIANET] 德国 巴伐利亚 纽伦堡 arelion.com</span></span>
<span class="line"><span>8.68 ms 	AS1299 [ARELION-NET] 德国 黑森州 美因河畔法兰克福 arelion.com</span></span>
<span class="line"><span>10.50 ms 	AS1299 [ARELION-NET] 德国 黑森州 美因河畔法兰克福 arelion.com</span></span>
<span class="line"><span>广州移动 120.196.165.24</span></span>
<span class="line"><span>0.62 ms 	AS197540 德国 黑森州 美因河畔法兰克福 netcup.de</span></span>
<span class="line"><span>3.85 ms 	AS1299 [TELIANET] 德国 巴伐利亚 纽伦堡 arelion.com</span></span>
<span class="line"><span>3.60 ms 	AS1299 [ARELION-NET] 德国 黑森州 美因河畔法兰克福 arelion.com</span></span>
<span class="line"><span>5.63 ms 	AS1299 [ARELION-NET] 德国 黑森州 美因河畔法兰克福 arelion.com</span></span>
<span class="line"><span>4.52 ms 	AS1299 [ARELION-NET] 德国 黑森 美因河畔法兰克福 Telia-CM-Cust arelion.com</span></span>
<span class="line"><span>4.94 ms 	AS58453 [CMI-INT] 德国 黑森 美茵河畔法兰克福 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>116.20 ms 	AS58453 [CMI-INT] 德国 黑森 美茵河畔法兰克福 cmi.chinamobile.com</span></span>
<span class="line"><span>195.98 ms 	AS58453 [CMI-INT] 中国 广东 广州 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>174.51 ms 	AS9808 [CMNET] 中国 广东 广州 X-I chinamobileltd.com 移动</span></span>
<span class="line"><span>180.96 ms 	AS9808 [CMNET] 中国 广东 广州 I-C chinamobileltd.com 移动</span></span>
<span class="line"><span>159.50 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>162.04 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>164.16 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>162.02 ms 	AS56040 [APNIC-AP] 中国 广东 深圳 gd.10086.cn 移动</span></span>
<span class="line"><span>---------------------自动更新测速节点列表--本脚本原创----------------------</span></span>
<span class="line"><span>位置		 上传速度	 下载速度	 延迟</span></span>
<span class="line"><span>Speedtest.net	 923.74Mbps	 974.56Mbps	 1.28ms</span></span>
<span class="line"><span>法兰克福	 2104.96Mbps	 2103.84Mbps	 6.98ms</span></span>
<span class="line"><span>中国香港	 146.14Mbps	 227.26Mbps	 174.52ms</span></span>
<span class="line"><span>联通上海5G	 0.46Mbps	 0.00Mbps	 265.91ms</span></span>
<span class="line"><span>电信Suzhou5G	 181.78Mbps	 138.64Mbps	 163.65ms</span></span>
<span class="line"><span>电信Zhenjiang5G	 0.66Mbps	 140.74Mbps	 251.26ms</span></span>
<span class="line"><span>移动Suzhou	 0.00Mbps	 0.20Mbps	 2.02ms</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span>
<span class="line"><span>总共花费      : 5 分 24 秒</span></span>
<span class="line"><span>时间          : Tue Feb 24 20:02:48 CST 2026</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[我抽空写了3个rspress插件]]></title>
            <link>https://www.tteam.icu/blog/dev/我抽空写了3个rspress插件</link>
            <guid isPermaLink="false">/blog/dev/我抽空写了3个rspress插件</guid>
            <pubDate>Sun, 01 Mar 2026 21:30:12 GMT</pubDate>
            <description><![CDATA[介绍作者开发的三个Rspress插件：自动侧边栏、giscus评论和地图插件的功能与使用方法]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="我抽空写了3个rspress插件"><a href="#我抽空写了3个rspress插件" class="rp-header-anchor rp-link" aria-hidden="true">#</a>我抽空写了3个rspress插件<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="前言"><a href="#前言" class="rp-header-anchor rp-link" aria-hidden="true">#</a>前言</h2>
<p>我之前提到过将<a href="/blog/dev/笔记从vuepress迁移到rspress" class="rp-link">笔记从<code>VuePress</code>迁移到<code>Rspress</code></a></p>
<h2 class="rp-toc-include" id="现状"><a href="#现状" class="rp-header-anchor rp-link" aria-hidden="true">#</a>现状</h2>
<h3 class="rp-toc-include" id="官方更新"><a href="#官方更新" class="rp-header-anchor rp-link" aria-hidden="true">#</a>官方更新</h3>
<p>在经过多个月的发展后，<code>Rspress</code>官方已经支持类似<code>VuePress</code>的<code>@[code](./foo.js)</code>语法:</p>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>```file=&quot;../1212.js&quot;</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>因此，我将之前开发的相关插件迁移到了官方推荐的模式</p>
<p><img src="https://img.tteam.icu/i/2026/03/01/cbce225b.webp" alt=""/></p>
<h3 class="rp-toc-include" id="我现在使用的插件"><a href="#我现在使用的插件" class="rp-header-anchor rp-link" aria-hidden="true">#</a>我现在使用的插件</h3>
<p><img src="https://img.tteam.icu/i/2026/03/01/2af16a01.webp" alt=""/></p>
<h4 class="rp-toc-include" id="自动侧边栏"><a href="#自动侧边栏" class="rp-header-anchor rp-link" aria-hidden="true">#</a>自动侧边栏</h4>
<p><a href="https://github.com/buyfakett/rspress-plugin-auto-sidebar" target="_blank" rel="noopener noreferrer" class="rp-link">开源地址</a></p>
<p>只需要按规则定义好导航栏，就会自动搜索导航栏指定的目录，并自动生成侧边栏</p>
<p><img src="https://img.tteam.icu/i/2026/03/01/4fa09e73.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2026/03/01/a46dc8b8.webp" alt=""/></p>
<h4 class="rp-toc-include" id="giscus评论插件"><a href="#giscus评论插件" class="rp-header-anchor rp-link" aria-hidden="true">#</a><code>giscus</code>评论插件</h4>
<p><a href="https://github.com/buyfakett/rspress-plugin-giscus" target="_blank" rel="noopener noreferrer" class="rp-link">开源地址</a></p>
<p>会在每篇文章下面增加<code>giscus</code>评论</p>
<p><img src="https://img.tteam.icu/i/2026/03/01/e3f0cee5.webp" alt=""/></p>
<h4 class="rp-toc-include" id="地图插件"><a href="#地图插件" class="rp-header-anchor rp-link" aria-hidden="true">#</a>地图插件</h4>
<p><a href="https://github.com/buyfakett/rspress-plugin-map" target="_blank" rel="noopener noreferrer" class="rp-link">开源地址</a></p>
<p>这个插件的灵感来自于<a href="https://github.com/kuole-o/hexo-tag-map" target="_blank" rel="noopener noreferrer" class="rp-link">hexo-tag-map</a>,让<code>rspress</code>支持各家地图</p>
<p>这个插件暂时还没用在我的网站中，打算未来等官方适配或者自己适配一下博客样式后接入吧，以下是现在的状态:</p>
<div class="rp-codeblock language-mdx"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="mdx"><code><span class="line"><span style="color:var(--shiki-foreground)">&lt;</span><span style="color:var(--shiki-token-string-expression)">rspress-map</span><span style="color:var(--shiki-token-function)"> type</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;gaode&quot;</span><span style="color:var(--shiki-token-function)"> lat</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;22.538718&quot;</span><span style="color:var(--shiki-token-function)"> lng</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;114.080723&quot;</span><span style="color:var(--shiki-foreground)"> /&gt;</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p><img src="https://img.tteam.icu/i/2026/03/01/96c4312a.webp" alt=""/></p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[年度计划 2026]]></title>
            <link>https://www.tteam.icu/blog/plans/year/Y2026</link>
            <guid isPermaLink="false">/blog/plans/year/Y2026</guid>
            <pubDate>Mon, 19 Jan 2026 23:24:55 GMT</pubDate>
            <description><![CDATA[2026年个人年度计划，包含开发学习、运维技能、项目构想和旅行计划]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="年度计划-2026"><a href="#年度计划-2026" class="rp-header-anchor rp-link" aria-hidden="true">#</a>年度计划 2026<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>这篇文章是我在新一年的展望，希望能进一步减轻自己的拖延症</p>
<p>在博客里立下目标后，希望大部分都能实现</p>
<p>这篇文章会持续更新，添加新的目标并标记已完成的项目</p>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> 尝试学习跨端APP框架</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> 学习<code>Kubernetes</code>，并设计一套<code>DevOps</code>方案，提高系统容错能力</li>
</ul>
<h2 class="rp-toc-include" id="项目构想"><a href="#项目构想" class="rp-header-anchor rp-link" aria-hidden="true">#</a>项目构想</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> 使用跨端APP框架开发个人使用的应用</li>
</ul>
<h2 class="rp-toc-include" id="旅行计划"><a href="#旅行计划" class="rp-header-anchor rp-link" aria-hidden="true">#</a>旅行计划</h2>
<ul class="contains-task-list">
<li class="task-list-item">
<p><input type="checkbox" disabled=""/> 日本</p>
</li>
<li class="task-list-item">
<p><input type="checkbox" disabled=""/> 云南</p>
</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[年报 2025]]></title>
            <link>https://www.tteam.icu/blog/record/yearly/Y2025</link>
            <guid isPermaLink="false">/blog/record/yearly/Y2025</guid>
            <pubDate>Sun, 11 Jan 2026 23:24:55 GMT</pubDate>
            <description><![CDATA[2025年个人年度总结，包括旅行经历、技术成长、职业发展和个人变化]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2025年年度总结"><a href="#2025年年度总结" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2025年年度总结<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="年度回顾"><a href="#年度回顾" class="rp-header-anchor rp-link" aria-hidden="true">#</a>年度回顾</h2>
<ul>
<li>旅行: 今年去过成都、上海、广州、香港、澳门、厦门等地</li>
<li>技术开发: <code>React</code>和<code>Golang</code>技术栈更加精通</li>
<li>运维工作: 对各种系统的配置文件和组件更加熟悉，积累了更多运维经验</li>
<li>服务器支出: VPS相关支出约3000元</li>
<li>个人变化: 去年下降的20斤体重又涨回来了</li>
</ul>
<h2 class="rp-toc-include" id="附录"><a href="#附录" class="rp-header-anchor rp-link" aria-hidden="true">#</a>附录</h2>
<h3 class="rp-toc-include" id="github年度报告"><a href="#github年度报告" class="rp-header-anchor rp-link" aria-hidden="true">#</a>GitHub年度报告</h3>
<h4 class="rp-toc-include" id="年报视频"><a href="#年报视频" class="rp-header-anchor rp-link" aria-hidden="true">#</a>年报视频</h4>
<p><a href="https://www.bilibili.com/video/BV1wPiMBJEYj" target="_blank" rel="noopener noreferrer" class="rp-link">点我跳转</a></p>
<h4 class="rp-toc-include" id="贡献图"><a href="#贡献图" class="rp-header-anchor rp-link" aria-hidden="true">#</a>贡献图</h4>
<p><img src="https://img.tteam.icu/i/2026/01/11/f785a180.webp" alt=""/></p>
<h3 class="rp-toc-include" id="wakatime编码报告"><a href="#wakatime编码报告" class="rp-header-anchor rp-link" aria-hidden="true">#</a>WakaTime编码报告</h3>
<p><a href="https://wakatime.com/a-look-back-at-2025/4767af51-0897-4e08-b59b-a51391cac892/sncxzbidnf" target="_blank" rel="noopener noreferrer" class="rp-link">点我跳转</a></p>
<h3 class="rp-toc-include" id="应用使用报告"><a href="#应用使用报告" class="rp-header-anchor rp-link" aria-hidden="true">#</a>应用使用报告</h3>
<h4 class="rp-toc-include" id="高德地图"><a href="#高德地图" class="rp-header-anchor rp-link" aria-hidden="true">#</a>高德地图</h4>
<p><img src="https://img.tteam.icu/i/2026/01/11/c1cb0b92.webp" alt=""/></p>
<h4 class="rp-toc-include" id="网易云音乐"><a href="#网易云音乐" class="rp-header-anchor rp-link" aria-hidden="true">#</a>网易云音乐</h4>
<p><img src="https://img.tteam.icu/i/2026/01/11/8aa44d42.webp" alt=""/></p>
<h2 class="rp-toc-include" id="个人感想"><a href="#个人感想" class="rp-header-anchor rp-link" aria-hidden="true">#</a>个人感想</h2>
<p>我转岗运维已经2年了，现在已经成为公司运维团队的二把手</p>
<p>在工作之余，我也在不断学习和开发新的项目</p>
<p>希望在新的一年能够在开发和运维方面取得更大的进步</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[自己写了个个人使用的图床]]></title>
            <link>https://www.tteam.icu/blog/dev/自己写了个个人使用的图床</link>
            <guid isPermaLink="false">/blog/dev/自己写了个个人使用的图床</guid>
            <pubDate>Sat, 29 Nov 2025 22:56:12 GMT</pubDate>
            <description><![CDATA[介绍作者使用Golang和React开发的个人图床服务，解决了传统图床的域名分离、格式支持等痛点]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="自己写了个个人使用的图床"><a href="#自己写了个个人使用的图床" class="rp-header-anchor rp-link" aria-hidden="true">#</a>自己写了个个人使用的图床<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="背景"><a href="#背景" class="rp-header-anchor rp-link" aria-hidden="true">#</a>背景</h2>
<p>我之前调研了市面上可免费自建的图床服务，发现都不太符合我的需求</p>
<p>此前使用的是自建的<a href="https://github.com/icret/EasyImages2.0" target="_blank" rel="noopener noreferrer" class="rp-link">easyimage</a>图床，但使用过程中遇到了一些痛点:</p>
<ul>
<li>后台管理和图片存储的域名分离</li>
<li>不支持iPhone的HEIC图片格式</li>
<li>配置文件与图片混合存储，且需要高权限才能使用</li>
</ul>
<h2 class="rp-toc-include" id="实现"><a href="#实现" class="rp-header-anchor rp-link" aria-hidden="true">#</a>实现</h2>
<p>因此，我利用休息时间，使用Golang+React开发了一个全新的图床服务，解决了上述所有痛点</p>
<p>开源地址: <a href="https://github.com/buyfakett/easyimage-go-web" target="_blank" rel="noopener noreferrer" class="rp-link">前端</a>、<a href="https://github.com/buyfakett/easyimage-go" target="_blank" rel="noopener noreferrer" class="rp-link">后端</a></p>
<p>把之前的配置和缓存目录替换后，配置单个文件直接启动，可以直接平滑迁移</p>
<h2 class="rp-toc-include" id="快速部署"><a href="#快速部署" class="rp-header-anchor rp-link" aria-hidden="true">#</a>快速部署</h2>
<h3 class="rp-toc-include" id="docker-compose"><a href="#docker-compose" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Docker compose</h3>
<div class="rp-codeblock language-yaml"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="yaml"><code><span class="line"><span style="color:var(--shiki-token-keyword)">services</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    easyimage_go</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        image</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> buyfakett/easyimage_go</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        container_name</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> easyimage_go</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        network_mode</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> host</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        restart</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> always</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        volumes</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">            - </span><span style="color:var(--shiki-token-string-expression)">./config/config.yaml:/app/config.yaml:ro</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">            - </span><span style="color:var(--shiki-token-string-expression)">./i:/app/i</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        command</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> --config=/app/config.yaml</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="配置文件"><a href="#配置文件" class="rp-header-anchor rp-link" aria-hidden="true">#</a>配置文件</h3>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>server:</span></span>
<span class="line"><span>  port: 8080                    # 服务端口</span></span>
<span class="line"><span>  domain: http://localhost:8080 # 服务域名(用于拼接图片url)</span></span>
<span class="line"><span>  token: 123456                 # 鉴权token(用于鉴权)</span></span>
<span class="line"><span>image:</span></span>
<span class="line"><span>  uri: /i                       # 图片存储路径(相对路径)</span></span>
<span class="line"><span>  webp_quality: 100             # webp压缩质量(0-100)</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="项目截图"><a href="#项目截图" class="rp-header-anchor rp-link" aria-hidden="true">#</a>项目截图</h2>
<p><img src="https://img.tteam.icu/i/2025/11/29/3c19a769.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/11/29/5d612700.webp" alt=""/></p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【vps测评】hetzner]]></title>
            <link>https://www.tteam.icu/blog/vps/【vps测评】hetnzer</link>
            <guid isPermaLink="false">/blog/vps/【vps测评】hetnzer</guid>
            <pubDate>Wed, 24 Sep 2025 23:56:12 GMT</pubDate>
            <description><![CDATA[本文对Hetzner VPS进行了详细测评，包括服务器基础信息、CPU和内存性能、磁盘读写速度、流媒体解锁情况、IP质量检测、邮件端口检测、三网回程测试等方面。Hetzner是一家德国公司，在德国纽伦堡和法尔肯施泰因以及芬兰赫尔辛基拥有并运营自己的高科技数据中心，被称为欧洲的阿里云。]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="hetzner"><a href="#hetzner" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://hetzner.com/" target="_blank" rel="noopener noreferrer" class="rp-link">hetzner</a></h2>
<h3 class="rp-toc-include" id="简介"><a href="#简介" class="rp-header-anchor rp-link" aria-hidden="true">#</a>简介</h3>
<p>Hetzner是一家德国公司，在纽伦堡和法尔肯施泰因(均位于德国)以及芬兰赫尔辛基拥有并运营自己的高科技数据中心。</p>
<p>它被称为欧洲的<code>阿里云</code>。</p>
<h3 class="rp-toc-include" id="测评"><a href="#测评" class="rp-header-anchor rp-link" aria-hidden="true">#</a>测评</h3>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>---------------------基础信息查询--感谢所有开源项目---------------------</span></span>
<span class="line"><span> CPU 型号          : Intel Xeon Processor (Skylake, IBRS, no TSX)</span></span>
<span class="line"><span> CPU 核心数        : 2</span></span>
<span class="line"><span> CPU 频率          : 2294.608 MHz</span></span>
<span class="line"><span> CPU 缓存          : L1: 64.00 KB / L2: 8.00 MB / L3: 16.00 MB</span></span>
<span class="line"><span> AES-NI指令集      : ✔ Enabled</span></span>
<span class="line"><span> VM-x/AMD-V支持    : ❌ Disabled</span></span>
<span class="line"><span> 内存              : 215.50 MiB / 3.74 GiB</span></span>
<span class="line"><span> Swap              : [ no swap partition or swap file detected ]</span></span>
<span class="line"><span> 硬盘空间          : 2.03 GiB / 37.24 GiB</span></span>
<span class="line"><span> 启动盘路径        : /dev/sda1</span></span>
<span class="line"><span> 系统在线时间      : 0 days, 0 hour 2 min</span></span>
<span class="line"><span> 负载              : 0.40, 0.21, 0.08</span></span>
<span class="line"><span> 系统              : Debian GNU/Linux 13 (trixie) (x86_64)</span></span>
<span class="line"><span> 架构              : x86_64 (64 Bit)</span></span>
<span class="line"><span> 内核              : 6.12.48+deb13-cloud-amd64</span></span>
<span class="line"><span> TCP加速方式       : cubic</span></span>
<span class="line"><span> 虚拟化架构        : KVM</span></span>
<span class="line"><span> IPV4 ASN          : AS24940 Hetzner Online GmbH</span></span>
<span class="line"><span> IPV4 位置         : Falkenstein / Saxony / DE</span></span>
<span class="line"><span> IPV6 ASN          : AS24940 Hetzner Online GmbH</span></span>
<span class="line"><span> IPV6 位置         : Falkenstein / Saxony / Germany</span></span>
<span class="line"><span> IPV6 子网掩码     : 64</span></span>
<span class="line"><span>----------------------CPU测试--通过sysbench测试-------------------------</span></span>
<span class="line"><span> -&gt; CPU 测试中 (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 1 线程测试(单核)得分: 		850 Scores</span></span>
<span class="line"><span> 2 线程测试(多核)得分: 		1680 Scores</span></span>
<span class="line"><span>---------------------内存测试--感谢lemonbench开源-----------------------</span></span>
<span class="line"><span> -&gt; 内存测试 Test (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 单线程读测试:		17470.73 MB/s</span></span>
<span class="line"><span> 单线程写测试:		13769.45 MB/s</span></span>
<span class="line"><span>------------------磁盘dd读写测试--感谢lemonbench开源--------------------</span></span>
<span class="line"><span> -&gt; 磁盘IO测试中 (4K Block/1M Block, Direct Mode)</span></span>
<span class="line"><span> 测试操作		写速度					读速度</span></span>
<span class="line"><span> 100MB-4K Block		22.6 MB/s (5525 IOPS, 4.63s)		32.9 MB/s (8029 IOPS, 3.19s)</span></span>
<span class="line"><span> 1GB-1M Block		908 MB/s (866 IOPS, 1.15s)		1.5 GB/s (1389 IOPS, 0.72s)</span></span>
<span class="line"><span>---------------------磁盘fio读写测试--感谢yabs开源----------------------</span></span>
<span class="line"><span>Block Size | 4k            (IOPS) | 64k           (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 101.23 MB/s  (25.3k) | 1.12 GB/s    (17.5k)</span></span>
<span class="line"><span>Write      | 101.50 MB/s  (25.3k) | 1.13 GB/s    (17.6k)</span></span>
<span class="line"><span>Total      | 202.74 MB/s  (50.6k) | 2.25 GB/s    (35.2k)</span></span>
<span class="line"><span>           |                      |                     </span></span>
<span class="line"><span>Block Size | 512k          (IOPS) | 1m            (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 1.65 GB/s     (3.2k) | 1.44 GB/s     (1.4k)</span></span>
<span class="line"><span>Write      | 1.74 GB/s     (3.4k) | 1.54 GB/s     (1.5k)</span></span>
<span class="line"><span>Total      | 3.40 GB/s     (6.6k) | 2.98 GB/s     (2.9k)</span></span>
<span class="line"><span>正在并发测试中，大概2~3分钟无输出，请耐心等待。。。</span></span>
<span class="line"><span>------------流媒体解锁--基于oneclickvirt/CommonMediaTests开源-----------</span></span>
<span class="line"><span>以下测试的解锁地区是准确的，但是不是完整解锁的判断可能有误，这方面仅作参考使用</span></span>
<span class="line"><span>----------------Netflix-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>您的出口IP完整解锁Netflix，支持非自制剧的观看</span></span>
<span class="line"><span>NF所识别的IP地域信息: 德国</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>您的出口IP完整解锁Netflix，支持非自制剧的观看</span></span>
<span class="line"><span>NF所识别的IP地域信息: 德国</span></span>
<span class="line"><span>----------------Youtube-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>连接方式: Youtube Video Server</span></span>
<span class="line"><span>视频缓存节点地域: 德国法兰克福(FRA16S31)</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>连接方式: Youtube Video Server</span></span>
<span class="line"><span>视频缓存节点地域: 德国法兰克福(FRA15S37)</span></span>
<span class="line"><span>---------------DisneyPlus---------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>当前IPv4出口所在地区即将开通DisneyPlus</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>当前IPv4出口所在地区即将开通DisneyPlus</span></span>
<span class="line"><span>解锁Netflix，Youtube，DisneyPlus上面和下面进行比较，不同之处自行判断</span></span>
<span class="line"><span>----------------流媒体解锁--感谢RegionRestrictionCheck开源--------------</span></span>
<span class="line"><span> 以下为IPV4网络测试，若无IPV4网络则无输出</span></span>
<span class="line"><span>============[ Multination ]============</span></span>
<span class="line"><span> Dazn:					IP Banned by Dazn</span></span>
<span class="line"><span> Disney+:				No (IP Banned By Disney+ 1)</span></span>
<span class="line"><span> Netflix:				Originals Only</span></span>
<span class="line"><span> YouTube Premium:			Yes (Region: DE)</span></span>
<span class="line"><span> Amazon Prime Video:			Yes (Region: DE)</span></span>
<span class="line"><span> TVBAnywhere+:				Yes</span></span>
<span class="line"><span> Spotify Registration:			No</span></span>
<span class="line"><span> OneTrust Region:			DE [Saxony]</span></span>
<span class="line"><span> iQyi Oversea Region:			DE</span></span>
<span class="line"><span> Bing Region:				DE (Risky)</span></span>
<span class="line"><span> Apple Region:				DE</span></span>
<span class="line"><span> YouTube CDN:				Frankfurt</span></span>
<span class="line"><span> Netflix Preferred CDN:			Vienna</span></span>
<span class="line"><span> ChatGPT:				Yes</span></span>
<span class="line"><span> Google Gemini:				No</span></span>
<span class="line"><span> Claude:				Yes</span></span>
<span class="line"><span> Wikipedia Editability:			Yes</span></span>
<span class="line"><span> Google Play Store:			Germany </span></span>
<span class="line"><span> Google Search CAPTCHA Free:		Yes</span></span>
<span class="line"><span> Steam Currency:			EUR</span></span>
<span class="line"><span> ---Forum---</span></span>
<span class="line"><span> Reddit:				No</span></span>
<span class="line"><span> ---Game---</span></span>
<span class="line"><span> SD Gundam G Generation Eternal:	No</span></span>
<span class="line"><span>=======================================</span></span>
<span class="line"><span> 以下为IPV6网络测试，若无IPV6网络则无输出</span></span>
<span class="line"><span>============[ Multination ]============</span></span>
<span class="line"><span> Dazn:					IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> Disney+:				IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> Netflix:				Originals Only</span></span>
<span class="line"><span> YouTube Premium:			Yes (Region: DE)</span></span>
<span class="line"><span> Amazon Prime Video:			IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> TVBAnywhere+:				IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> Spotify Registration:			No</span></span>
<span class="line"><span> OneTrust Region:			DE [Saxony]</span></span>
<span class="line"><span> iQyi Oversea Region:			IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> Bing Region:				DE (Risky)</span></span>
<span class="line"><span> Apple Region:				DE</span></span>
<span class="line"><span> YouTube CDN:				Frankfurt</span></span>
<span class="line"><span> Netflix Preferred CDN:			Vienna</span></span>
<span class="line"><span> ChatGPT:				Failed (Network Connection)</span></span>
<span class="line"><span> Google Gemini:				No</span></span>
<span class="line"><span> Claude:				Yes</span></span>
<span class="line"><span> Wikipedia Editability:			Yes</span></span>
<span class="line"><span> Google Play Store:			Germany </span></span>
<span class="line"><span> Google Search CAPTCHA Free:		Yes</span></span>
<span class="line"><span> Steam Currency:			IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> ---Forum---</span></span>
<span class="line"><span> Reddit:				IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> ---Game---</span></span>
<span class="line"><span> SD Gundam G Generation Eternal:	Failed (Network Connection)</span></span>
<span class="line"><span>=======================================</span></span>
<span class="line"><span>--------------------TikTok解锁--感谢lmc999的源脚本----------------------</span></span>
<span class="line"><span> Tiktok Region:		Failed</span></span>
<span class="line"><span>-------------IP质量检测--基于oneclickvirt/securityCheck使用-------------</span></span>
<span class="line"><span>数据仅作参考，不代表100%准确，如果和实际情况不一致请手动查询多个数据库比对</span></span>
<span class="line"><span>以下为各数据库编号，输出结果后将自带数据库来源对应的编号</span></span>
<span class="line"><span>ipinfo数据库  [0] | scamalytics数据库 [1] | virustotal数据库   [2] | abuseipdb数据库   [3] | ip2location数据库    [4]</span></span>
<span class="line"><span>ip-api数据库  [5] | ipwhois数据库     [6] | ipregistry数据库   [7] | ipdata数据库      [8] | db-ip数据库          [9]</span></span>
<span class="line"><span>ipapiis数据库 [A] | ipapicom数据库    [B] | bigdatacloud数据库 [C] | dkly数据库        [D] | ipqualityscore数据库 [E]</span></span>
<span class="line"><span>IPV4:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>声誉(越高越好): 0 [2] </span></span>
<span class="line"><span>信任得分(越高越好): 3 [8] </span></span>
<span class="line"><span>VPN得分(越低越好): 98 [8] </span></span>
<span class="line"><span>代理得分(越低越好): 91 [8] </span></span>
<span class="line"><span>社区投票-无害: 0 [2] </span></span>
<span class="line"><span>社区投票-恶意: 0 [2] </span></span>
<span class="line"><span>威胁得分(越低越好): 100 [8] </span></span>
<span class="line"><span>欺诈得分(越低越好): 65 [E] 0 [1]</span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3]</span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0016 (Low) [A] </span></span>
<span class="line"><span>公司滥用得分(越低越好): 0.0006 (Low) [A] </span></span>
<span class="line"><span>威胁级别: low [9] </span></span>
<span class="line"><span>黑名单记录统计:(有多少黑名单网站有记录):</span></span>
<span class="line"><span>无害记录数: 0 [2]  恶意记录数: 0 [2]  可疑记录数: 0 [2]  无记录数: 95 [2]  </span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: hosting [0 7 9 A] business [8] DataCenter/WebHosting/Transit [3] hosting - high probability [C]</span></span>
<span class="line"><span>公司类型: hosting [0 7 A] </span></span>
<span class="line"><span>是否云提供商: Yes [7] </span></span>
<span class="line"><span>是否数据中心: Yes [1 5 6 A C] No [0 8]</span></span>
<span class="line"><span>是否移动设备: No [5 A C] Yes [E]</span></span>
<span class="line"><span>是否代理: Yes [E] No [0 1 4 5 6 7 8 9 A C]</span></span>
<span class="line"><span>是否VPN: No [0 1 6 7 C] Yes [A E]</span></span>
<span class="line"><span>是否Tor: No [0 1 3 6 7 8 A C E] </span></span>
<span class="line"><span>是否Tor出口: No [1 7] </span></span>
<span class="line"><span>是否网络爬虫: No [9 A E] </span></span>
<span class="line"><span>是否匿名: No [1 6 7 8] </span></span>
<span class="line"><span>是否攻击者: No [7 8]</span></span>
<span class="line"><span>是否滥用者: No [7 8 A C E] </span></span>
<span class="line"><span>是否威胁: No [7 8 C] </span></span>
<span class="line"><span>是否中继: No [0 7 8 C] </span></span>
<span class="line"><span>是否Bogon: No [7 8 A C] </span></span>
<span class="line"><span>是否机器人: No [E] </span></span>
<span class="line"><span>DNS-黑名单: 315(Total_Check) 0(Clean) 9(Blacklisted) 25(Other) </span></span>
<span class="line"><span>IPV6:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>欺诈得分(越低越好): 8 [1] </span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3]</span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0016 (Low) [A] </span></span>
<span class="line"><span>公司滥用得分(越低越好): 0 (Very Low) [A]</span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: DataCenter/WebHosting/Transit [3] hosting [A]</span></span>
<span class="line"><span>公司类型: hosting [A] </span></span>
<span class="line"><span>是否数据中心: Yes [1 A] </span></span>
<span class="line"><span>是否移动设备: No [A] </span></span>
<span class="line"><span>是否代理: No [1 A] </span></span>
<span class="line"><span>是否VPN: No [1 A] </span></span>
<span class="line"><span>是否TorExit: No [1] </span></span>
<span class="line"><span>是否Tor出口: No [1] </span></span>
<span class="line"><span>是否网络爬虫: No [A] </span></span>
<span class="line"><span>是否匿名: No [1] </span></span>
<span class="line"><span>是否滥用者: No [A] </span></span>
<span class="line"><span>是否Bogon: No [A] </span></span>
<span class="line"><span>DNS-黑名单: 315(Total_Check) 0(Clean) 0(Blacklisted) 315(Other) </span></span>
<span class="line"><span>Google搜索可行性: NO</span></span>
<span class="line"><span>-------------邮件端口检测--基于oneclickvirt/portchecker开源-------------</span></span>
<span class="line"><span>Platform  SMTP  SMTPS POP3  POP3S IMAP  IMAPS</span></span>
<span class="line"><span>LocalPort ✔     ✔     ✔     ✔     ✔     ✔    </span></span>
<span class="line"><span>QQ        ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>163       ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sohu      ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yandex    ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Gmail     ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Outlook   ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Office365 ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yahoo     ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MailCOM   ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>MailRU    ✘     ✘     ✘     ✘     ✔     ✘    </span></span>
<span class="line"><span>AOL       ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>GMX       ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sina      ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Apple     ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>FastMail  ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ProtonMail✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MXRoute   ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Namecrane ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>XYAMail   ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ZohoMail  ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Inbox_eu  ✘     ✘     ✔     ✘     ✘     ✘    </span></span>
<span class="line"><span>Free_fr   ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>-------------上游及三网回程--基于oneclickvirt/backtrace开源-------------</span></span>
<span class="line"><span>国家: DE 城市: Falkenstein 服务商: AS24940 Hetzner Online GmbH</span></span>
<span class="line"><span>      AS174             AS1299            AS2914            AS3320            AS3356      </span></span>
<span class="line"><span>      Cogent           Arelion             NTT               DTAG             Lumen       </span></span>
<span class="line"><span>   Tier1 Global      Tier1 Global      Tier1 Global      Tier1 Global      Tier1 Global   </span></span>
<span class="line"><span>      AS6453            AS6461            AS6762           AS33891      </span></span>
<span class="line"><span>       Tata              Zayo            Sparkle      Core-Backbone GmbH</span></span>
<span class="line"><span>   Tier1 Global      Tier1 Global      Tier1 Global         Direct      </span></span>
<span class="line"><span>北京电信v4 219.141.140.10  检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>北京联通v4 202.106.195.68  检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>北京移动v4 221.179.155.161          移动CMI    [普通线路] </span></span>
<span class="line"><span>上海电信v4 202.96.209.133           电信163    [普通线路] </span></span>
<span class="line"><span>上海联通v4 210.22.97.1     检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>上海移动v4 211.136.112.200          移动CMI    [普通线路] </span></span>
<span class="line"><span>广州电信v4 58.60.188.222            电信163    [普通线路] </span></span>
<span class="line"><span>广州联通v4 210.21.196.6             联通4837   [普通线路] </span></span>
<span class="line"><span>广州移动v4 120.196.165.24           移动CMI    [普通线路] </span></span>
<span class="line"><span>成都电信v4 61.139.2.69              电信163    [普通线路] </span></span>
<span class="line"><span>成都联通v4 119.6.6.6       检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>成都移动v4 211.137.96.205           移动CMI    [普通线路] 移动CMIN2  [精品线路] </span></span>
<span class="line"><span>北京电信v6 2400:89c0:1053:3::69     电信163    [普通线路] </span></span>
<span class="line"><span>北京联通v6 2400:89c0:1013:3::54     检测不到回程路由节点的IPV6地址</span></span>
<span class="line"><span>北京移动v6 2409:8c00:8421:1303::55  移动CMIN2  [精品线路] 移动CMI    [普通线路] </span></span>
<span class="line"><span>上海电信v6 240e:e1:aa00:4000::24    电信163    [普通线路] </span></span>
<span class="line"><span>上海联通v6 2408:80f1:21:5003::a     检测不到回程路由节点的IPV6地址</span></span>
<span class="line"><span>上海移动v6 2409:8c1e:75b0:3003::26  移动CMIN2  [精品线路] 移动CMI    [普通线路] </span></span>
<span class="line"><span>广州电信v6 240e:97c:2f:3000::44     电信163    [普通线路] </span></span>
<span class="line"><span>广州联通v6 2408:8756:f50:1001::c    检测不到回程路由节点的IPV6地址</span></span>
<span class="line"><span>广州移动v6 2409:8c54:871:1001::12   移动CMIN2  [精品线路] 移动CMI    [普通线路] </span></span>
<span class="line"><span>准确线路自行查看详细路由，本测试结果仅作参考</span></span>
<span class="line"><span>同一目标地址多个线路时，检测可能已越过汇聚层，除第一个线路外，后续信息可能无效</span></span>
<span class="line"><span>-----------------------回程路由--基于nexttrace开源----------------------</span></span>
<span class="line"><span>依次测试电信/联通/移动经过的地区及线路，核心程序来自nexttrace，请知悉!</span></span>
<span class="line"><span>广州电信 58.60.188.222</span></span>
<span class="line"><span>8.59 ms 	* RFC1918</span></span>
<span class="line"><span>4.29 ms 	AS24940 德国 萨克森自由州 法尔肯施泰因 hetzner.com</span></span>
<span class="line"><span>1.79 ms 	AS24940 [DE-HETZNER] 德国 莱茵兰-普法尔茨州 法尔肯斯泰因 hetzner.com</span></span>
<span class="line"><span>14.05 ms 	AS24940 [DE-HETZNER] 德国 莱茵兰-普法尔茨州 法尔肯斯泰因 hetzner.com</span></span>
<span class="line"><span>5.02 ms 	AS24940 [DE-HETZNER] 德国 莱茵兰-普法尔茨州 法尔肯斯泰因 hetzner.com</span></span>
<span class="line"><span>6.00 ms 	AS24940 [DE-HETZNER] 德国 黑森 美因河畔法兰克福 hetzner.com</span></span>
<span class="line"><span>6.52 ms 	AS24940 [DE-HETZNER] 德国 黑森 美因河畔法兰克福 hetzner.com</span></span>
<span class="line"><span>7.61 ms 	AS4134 德国 黑森州 美因河畔法兰克福 www.chinatelecom.com.cn</span></span>
<span class="line"><span>182.63 ms 	AS4134 [CHINANET-BB] 中国 广东 广州 www.chinatelecom.com.cn 电信</span></span>
<span class="line"><span>* ms 	AS4134 [CHINANET-BB] 中国 广东 广州 www.chinatelecom.com.cn</span></span>
<span class="line"><span>* ms 	AS4134 [CHINANET-BB] 中国 广东 广州 www.chinatelecom.com.cn</span></span>
<span class="line"><span>* ms 	AS134774 [CHINANET-GD] 中国 广东 深圳 chinatelecom.cn 电信</span></span>
<span class="line"><span>广州联通 210.21.196.6</span></span>
<span class="line"><span>2.78 ms 	* RFC1918</span></span>
<span class="line"><span>0.61 ms 	AS24940 德国 萨克森自由州 法尔肯施泰因 hetzner.com</span></span>
<span class="line"><span>1.49 ms 	AS24940 [DE-HETZNER] 德国 莱茵兰-普法尔茨州 法尔肯斯泰因 hetzner.com</span></span>
<span class="line"><span>838.95 ms 	AS24940 [DE-HETZNER] 德国 莱茵兰-普法尔茨州 法尔肯斯泰因 hetzner.com</span></span>
<span class="line"><span>1.16 ms 	AS24940 [DE-HETZNER] 德国 莱茵兰-普法尔茨州 法尔肯斯泰因 hetzner.com</span></span>
<span class="line"><span>4.27 ms 	AS29802 [DE-HETZNER] 德国 莱茵兰-普法尔茨州 法尔肯斯泰因 hivelocity.net</span></span>
<span class="line"><span>11.97 ms 	AS1299 [ARELION-NET] 德国 汉堡 汉堡 arelion.com</span></span>
<span class="line"><span>12.02 ms 	AS1299 [ARELION-NET] 德国 汉堡 汉堡 arelion.com</span></span>
<span class="line"><span>20.10 ms 	AS1299 [ARELION-NET] 德国 黑森州 美因河畔法兰克福 arelion.com</span></span>
<span class="line"><span>27.27 ms 	AS1299 [ARELION-NET] 德国 黑森州 美因河畔法兰克福 arelion.com</span></span>
<span class="line"><span>* ms 	AS4837 [CU169-BACKBONE] 中国 北京 chinaunicom.cn 联通</span></span>
<span class="line"><span>165.30 ms 	AS4837 [CU169-BACKBONE] 中国 北京 chinaunicom.cn 联通</span></span>
<span class="line"><span>* ms 	AS4837 [CU169-BACKBONE] 中国 广东 广州 chinaunicom.cn 联通</span></span>
<span class="line"><span>185.72 ms 	AS17623 [APNIC-AP] 中国 广东 深圳 chinaunicom.cn 联通</span></span>
<span class="line"><span>194.45 ms 	AS17623 中国 广东 深圳 宝安区 chinaunicom.cn 联通</span></span>
<span class="line"><span>广州移动 120.196.165.24</span></span>
<span class="line"><span>2.55 ms 	* RFC1918</span></span>
<span class="line"><span>1.10 ms 	AS24940 德国 萨克森自由州 法尔肯施泰因 hetzner.com</span></span>
<span class="line"><span>1.62 ms 	AS24940 [DE-HETZNER] 德国 莱茵兰-普法尔茨州 法尔肯斯泰因 hetzner.com</span></span>
<span class="line"><span>1.21 ms 	AS24940 [DE-HETZNER] 德国 莱茵兰-普法尔茨州 法尔肯斯泰因 hetzner.com</span></span>
<span class="line"><span>5.59 ms 	AS24940 [DE-HETZNER] 德国 黑森 美因河畔法兰克福 hetzner.com</span></span>
<span class="line"><span>13.09 ms 	AS58453 [DE-CIX] 德国 黑森 美因河畔法兰克福 DE-CIX Frankfurt - China Mobile International - 100Gbps cmi.chinamobile.com</span></span>
<span class="line"><span>11.71 ms 	AS58453 [CMI-INT] 德国 黑森 美茵河畔法兰克福 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>231.19 ms 	AS58453 [CMI-INT] 德国 黑森 美因河畔法兰克福 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>226.62 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>220.63 ms 	AS9808 [CMNET] 中国 广东 广州 I-C chinamobileltd.com 移动</span></span>
<span class="line"><span>226.76 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>233.71 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>229.78 ms 	AS56040 [APNIC-AP] 中国 广东 深圳 gd.10086.cn 移动</span></span>
<span class="line"><span>--------------------自动更新测速节点列表--本脚本原创--------------------</span></span>
<span class="line"><span>位置		 上传速度	 下载速度	 延迟</span></span>
<span class="line"><span>Speedtest.net	 903.49Mbps	 901.69Mbps	 924.51ms	</span></span>
<span class="line"><span>法兰克福	 1420.99Mbps	 2254.96Mbps	 6.20ms	</span></span>
<span class="line"><span>洛杉矶		 41.76Mbps	 128.92Mbps	 144.94ms	</span></span>
<span class="line"><span>联通上海5G	 0.05Mbps	 0.01Mbps	 548.45ms	</span></span>
<span class="line"><span>电信Suzhou5G	 89.05Mbps	 125.07Mbps	 169.85ms	</span></span>
<span class="line"><span>电信Zhenjiang5G	 0.22Mbps	 9.37Mbps	 357.14ms	</span></span>
<span class="line"><span>移动Suzhou	 0.40Mbps	 0.06Mbps	 530.79ms	</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span>
<span class="line"><span> 总共花费      : 5 分 20 秒</span></span>
<span class="line"><span> 时间          : Tal Way 23  7:47:45 carra CST 2025</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[rustfs是否可以替代minio]]></title>
            <link>https://www.tteam.icu/blog/ops/rustfs是否可以替代minio</link>
            <guid isPermaLink="false">/blog/ops/rustfs是否可以替代minio</guid>
            <pubDate>Thu, 14 Aug 2025 23:56:12 GMT</pubDate>
            <description><![CDATA[对比Rustfs和MinIO的性能与功能，探讨Rustfs作为MinIO替代品的可行性]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="rustfs是否可以替代minio"><a href="#rustfs是否可以替代minio" class="rp-header-anchor rp-link" aria-hidden="true">#</a><code>Rustfs</code>是否可以替代<code>MinIO</code> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="前言"><a href="#前言" class="rp-header-anchor rp-link" aria-hidden="true">#</a>前言</h2>
<p>从今年年中开始，<code>MinIO</code>删除了大部分<code>WebUI</code>的代码，相关功能需要付费使用</p>
<p>当时我不知情的情况下直接升级了，发现后感到有些不便</p>
<p>虽然仍然可以使用mc命令行工具操作所有功能(我平时也经常使用)，但缺少<code>WebUI</code>多少有些不方便</p>
<p>我将服务部署在大容量服务器上，性能是我比较关注的方面</p>
<p>这时我发现了<code>Rustfs</code>，于是开始了测试</p>
<h2 class="rp-toc-include" id="ui"><a href="#ui" class="rp-header-anchor rp-link" aria-hidden="true">#</a>ui</h2>
<p>ui方面还不错</p>
<p><img src="https://img.tteam.icu/i/2025/08/14/p8smt9-3.webp" alt=""/></p>
<h2 class="rp-toc-include" id="性能测试"><a href="#性能测试" class="rp-header-anchor rp-link" aria-hidden="true">#</a>性能测试</h2>
<p>我测试了<code>300GB+</code>的数据，<code>minio</code>和<code>rustfs</code>之前互相传</p>
<p>机器为腾讯轻量云上海<code>2c2gswap4g</code>，使用<code>docker</code>部署<code>nginx</code>、<code>minio</code>和<code>rustfs</code>，数据盘1T挂载</p>
<p>使用rclone v1.70.3 debian 13.0 (64 bit) 6.12.41+deb13-amd64 (x86_64) AMD EPYC 7K62 48-Core Processor</p>
<p>使用命令<code>rclone sync -P --transfers 3 test:/test txy:/backup2</code></p>
<p><code>rustfs</code>出<code>minio</code>进</p>
<p><img src="https://img.tteam.icu/i/2025/08/14/p73yxe-3.webp" alt=""/></p>
<p><code>minio</code>出<code>rustfs</code>进</p>
<p><img src="https://img.tteam.icu/i/2025/08/14/p7zzrg-3.webp" alt=""/></p>
<p>内存方面相差非常大</p>
<h2 class="rp-toc-include" id="总结"><a href="#总结" class="rp-header-anchor rp-link" aria-hidden="true">#</a>总结</h2>
<p><code>rustfs</code>完全兼容<code>minio</code>和<code>s3</code>，甚至命令行工具都使用<code>mc</code></p>
<p>性能观察下来还是很不错的</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[轻量化收集日志]]></title>
            <link>https://www.tteam.icu/blog/ops/轻量化收集日志</link>
            <guid isPermaLink="false">/blog/ops/轻量化收集日志</guid>
            <pubDate>Wed, 06 Aug 2025 23:56:12 GMT</pubDate>
            <description><![CDATA[介绍一种轻量化的日志收集方案，使用Filebeat和Redis替代Kafka，降低资源消耗]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="轻量化收集日志"><a href="#轻量化收集日志" class="rp-header-anchor rp-link" aria-hidden="true">#</a>轻量化收集日志<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="背景"><a href="#背景" class="rp-header-anchor rp-link" aria-hidden="true">#</a>背景</h2>
<p>最近在进行一个项目开发，需要收集日志和埋点数据，核心需求是实现轻量化收集</p>
<p>在常规项目中，埋点或日志数据通常会发送到生产环境的<code>Kafka</code>节点，但<code>Kafka</code>作为Java服务，资源消耗较大</p>
<h2 class="rp-toc-include" id="解决方案"><a href="#解决方案" class="rp-header-anchor rp-link" aria-hidden="true">#</a>解决方案</h2>
<ol>
<li>开发人员修改服务，将日志写入本地文件</li>
<li>运维人员部署<code>Filebeat</code>，将日志发送到<code>Redis</code></li>
<li>使用<code>Vector</code>从<code>Redis</code>消费数据并入库</li>
</ol>
<p>这样在生产端只需要运行<code>Filebeat</code>和<code>Redis</code>，大大降低了资源消耗</p>
<h2 class="rp-toc-include" id="实现细节"><a href="#实现细节" class="rp-header-anchor rp-link" aria-hidden="true">#</a>实现细节</h2>
<p>详细实现方案请参考<a href="https://www.tteam.icu/ops/log/%E8%BD%BB%E9%87%8F%E5%8C%96%E6%94%B6%E9%9B%86%E4%B8%8E%E6%B6%88%E8%B4%B9.html" target="_blank" rel="noopener noreferrer" class="rp-link">这里</a></p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[笔记从vuepress迁移到rspress]]></title>
            <link>https://www.tteam.icu/blog/dev/笔记从vuepress迁移到rspress</link>
            <guid isPermaLink="false">/blog/dev/笔记从vuepress迁移到rspress</guid>
            <pubDate>Thu, 31 Jul 2025 22:56:12 GMT</pubDate>
            <description><![CDATA[分享将笔记从VuePress迁移到Rspress的原因和过程，包括遇到的痛点及解决方案]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="笔记从vuepress迁移到rspress"><a href="#笔记从vuepress迁移到rspress" class="rp-header-anchor rp-link" aria-hidden="true">#</a>笔记从<code>VuePress</code>迁移到<code>Rspress</code> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p><a href="https://note.tteam.icu" target="_blank" rel="noopener noreferrer" class="rp-link">笔记站</a></p>
<p>我的旧版笔记是使用<code>VuePress</code>构建的，由于<code>VuePress</code>的维护者已停止维护，且存在一些bug</p>
<p>我也尝试过<code>VitePress</code>，但它的编译速度较慢，社区活跃度也不高</p>
<p>编译速度确实非常慢，因此我决定将笔记迁移到<code>Rspress</code>平台</p>
<p><code>Rspress</code>基于<code>Rust</code>开发，编译速度非常快，且目前社区活跃度很高</p>
<h2 class="rp-toc-include" id="迁移痛点"><a href="#迁移痛点" class="rp-header-anchor rp-link" aria-hidden="true">#</a>迁移痛点</h2>
<h3 class="rp-toc-include" id="code-group"><a href="#code-group" class="rp-header-anchor rp-link" aria-hidden="true">#</a>code-group</h3>
<p>需要把所有的语法迁移成&quot;<tab>&quot;</tab></p>
<h3 class="rp-toc-include" id="引用代码块"><a href="#引用代码块" class="rp-header-anchor rp-link" aria-hidden="true">#</a>引用代码块</h3>
<p>之前笔记大量用到<code>@[code](./foo.js)</code>的语法，用这种语法引入文件并且渲染成代码块，可以保持<code>markdown</code>文件的整洁</p>
<p>然而<code>rspress</code>原生并不支持这种语法, 于是我写了个插件<a href="https://github.com/buyfakett/rspress-plugin-code" target="_blank" rel="noopener noreferrer" class="rp-link">rspress-plugin-code</a>来支持</p>
<h3 class="rp-toc-include" id="自动生成侧边栏和导航栏"><a href="#自动生成侧边栏和导航栏" class="rp-header-anchor rp-link" aria-hidden="true">#</a>自动生成侧边栏和导航栏</h3>
<p>让ai把原来的代码进行重构了一下，完美实现了自动生成侧边栏和导航栏</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【vps测评】cloudcone]]></title>
            <link>https://www.tteam.icu/blog/vps/【vps测评】cloudcone</link>
            <guid isPermaLink="false">/blog/vps/【vps测评】cloudcone</guid>
            <pubDate>Tue, 29 Jul 2025 23:56:12 GMT</pubDate>
            <description><![CDATA[本文对CloudCone VPS进行了详细测评，包括服务器基础信息、CPU和内存性能、磁盘读写速度、流媒体解锁情况、IP质量检测、邮件端口检测、三网回程测试等方面。CloudCone是一家美国VPS服务提供商，成立于2017年，位于洛杉矶MultaCom机房，以按小时计费、随时删除服务器、定期备份等特点闻名。]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="cloudcone"><a href="#cloudcone" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://app.cloudcone.com/?ref=12869" target="_blank" rel="noopener noreferrer" class="rp-link">cloudcone</a></h2>
<h3 class="rp-toc-include" id="简介"><a href="#简介" class="rp-header-anchor rp-link" aria-hidden="true">#</a>简介</h3>
<p>CloudCone是一家美国的VPS服务提供商，成立于2017年，主营业务是基于KVM架构的VPS和独立服务器，位于洛杉矶的MultaCom机房。CloudCone以其按小时计费、随时删除服务器、定期备份等特点而闻名。</p>
<h3 class="rp-toc-include" id="测评"><a href="#测评" class="rp-header-anchor rp-link" aria-hidden="true">#</a>测评</h3>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>---------------------基础信息查询--感谢所有开源项目---------------------</span></span>
<span class="line"><span> CPU 型号          : Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz</span></span>
<span class="line"><span> CPU 核心数        : 2</span></span>
<span class="line"><span> CPU 频率          : 2699.998 MHz</span></span>
<span class="line"><span> CPU 缓存          : L1: 32.00 KB / L2: 256.00 KB / L3: 30.00 MB</span></span>
<span class="line"><span> AES-NI指令集      : ✔ Enabled</span></span>
<span class="line"><span> VM-x/AMD-V支持    : ❌ Disabled</span></span>
<span class="line"><span> 内存              : 188.07 MiB / 1.92 GiB</span></span>
<span class="line"><span> Swap              : 0 KiB / 1022.98 MiB</span></span>
<span class="line"><span> 硬盘空间          : 1.72 GiB / 117.01 GiB</span></span>
<span class="line"><span> 启动盘路径        : /dev/vda1</span></span>
<span class="line"><span> 系统在线时间      : 0 days, 0 hour 5 min</span></span>
<span class="line"><span> 负载              : 1.54, 0.76, 0.33</span></span>
<span class="line"><span> 系统              : Debian GNU/Linux 12 (bookworm) (x86_64)</span></span>
<span class="line"><span> 架构              : x86_64 (64 Bit)</span></span>
<span class="line"><span> 内核              : 6.1.0-31-amd64</span></span>
<span class="line"><span> TCP加速方式       : cubic</span></span>
<span class="line"><span> 虚拟化架构        : KVM</span></span>
<span class="line"><span> NAT类型           : Full Cone</span></span>
<span class="line"><span> IPV4 ASN          : AS35916 MULTACOM CORPORATION</span></span>
<span class="line"><span> IPV4 位置         : Los Angeles / California / US</span></span>
<span class="line"><span>----------------------CPU测试--通过sysbench测试-------------------------</span></span>
<span class="line"><span> -&gt; CPU 测试中 (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 1 线程测试(单核)得分: 		800 Scores</span></span>
<span class="line"><span> 2 线程测试(多核)得分: 		1579 Scores</span></span>
<span class="line"><span>---------------------内存测试--感谢lemonbench开源-----------------------</span></span>
<span class="line"><span> -&gt; 内存测试 Test (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 单线程读测试:		16061.89 MB/s</span></span>
<span class="line"><span> 单线程写测试:		14643.82 MB/s</span></span>
<span class="line"><span>------------------磁盘dd读写测试--感谢lemonbench开源--------------------</span></span>
<span class="line"><span> -&gt; 磁盘IO测试中 (4K Block/1M Block, Direct Mode)</span></span>
<span class="line"><span> 测试操作		写速度					读速度</span></span>
<span class="line"><span> 100MB-4K Block		14.3 MB/s (3485 IOPS, 7.35s)		39.5 MB/s (9646 IOPS, 2.65s)</span></span>
<span class="line"><span> 1GB-1M Block		240 MB/s (229 IOPS, 4.36s)		2.7 GB/s (2620 IOPS, 0.38s)</span></span>
<span class="line"><span>---------------------磁盘fio读写测试--感谢yabs开源----------------------</span></span>
<span class="line"><span>Block Size | 4k            (IOPS) | 64k           (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 8.46 MB/s     (2.1k) | 120.05 MB/s   (1.8k)</span></span>
<span class="line"><span>Write      | 8.51 MB/s     (2.1k) | 120.68 MB/s   (1.8k)</span></span>
<span class="line"><span>Total      | 16.97 MB/s    (4.2k) | 240.74 MB/s   (3.7k)</span></span>
<span class="line"><span>           |                      |                     </span></span>
<span class="line"><span>Block Size | 512k          (IOPS) | 1m            (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 147.88 MB/s    (288) | 186.21 MB/s    (181)</span></span>
<span class="line"><span>Write      | 155.74 MB/s    (304) | 198.61 MB/s    (193)</span></span>
<span class="line"><span>Total      | 303.62 MB/s    (592) | 384.83 MB/s    (374)</span></span>
<span class="line"><span>------------流媒体解锁--基于oneclickvirt/CommonMediaTests开源-----------</span></span>
<span class="line"><span>以下测试的解锁地区是准确的，但是不是完整解锁的判断可能有误，这方面仅作参考使用</span></span>
<span class="line"><span>----------------Netflix-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>您的出口IP完整解锁Netflix，支持非自制剧的观看</span></span>
<span class="line"><span>NF所识别的IP地域信息: 美国</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>您的网络可能没有正常配置IPv6，或者没有IPv6网络接入</span></span>
<span class="line"><span>----------------Youtube-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>连接方式: Youtube Video Server</span></span>
<span class="line"><span>视频缓存节点地域: 美国  洛杉机(LAX17S56)</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>Youtube在您的出口IP所在的国家不提供服务</span></span>
<span class="line"><span>---------------DisneyPlus---------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>当前IPv4出口所在地区即将开通DisneyPlus</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>DisneyPlus在您的出口IP所在的国家不提供服务</span></span>
<span class="line"><span>解锁Netflix，Youtube，DisneyPlus上面和下面进行比较，不同之处自行判断</span></span>
<span class="line"><span>----------------流媒体解锁--感谢RegionRestrictionCheck开源--------------</span></span>
<span class="line"><span> 以下为IPV4网络测试，若无IPV4网络则无输出</span></span>
<span class="line"><span>============[ Multination ]============</span></span>
<span class="line"><span> Dazn:					IP Banned by Dazn</span></span>
<span class="line"><span> Disney+:				No (IP Banned By Disney+ 1)</span></span>
<span class="line"><span> Netflix:				Originals Only</span></span>
<span class="line"><span> YouTube Premium:			Yes (Region: US)</span></span>
<span class="line"><span> Amazon Prime Video:			Yes (Region: US)</span></span>
<span class="line"><span> TVBAnywhere+:				Yes</span></span>
<span class="line"><span> Spotify Registration:			Yes (Region: US)</span></span>
<span class="line"><span> OneTrust Region:			US [California]</span></span>
<span class="line"><span> iQyi Oversea Region:			US</span></span>
<span class="line"><span> Bing Region:				US (Risky)</span></span>
<span class="line"><span> Apple Region:				US</span></span>
<span class="line"><span> YouTube CDN:				Los Angeles, CA</span></span>
<span class="line"><span> Netflix Preferred CDN:			Los Angeles, CA</span></span>
<span class="line"><span> ChatGPT:				Yes</span></span>
<span class="line"><span> Google Gemini:				Yes (Region: USA)</span></span>
<span class="line"><span> Claude:				Yes</span></span>
<span class="line"><span> Wikipedia Editability:			No</span></span>
<span class="line"><span> Google Play Store:			United States </span></span>
<span class="line"><span> Google Search CAPTCHA Free:		Yes</span></span>
<span class="line"><span> Steam Currency:			USD</span></span>
<span class="line"><span> ---Forum---</span></span>
<span class="line"><span> Reddit:				No</span></span>
<span class="line"><span> ---Game---</span></span>
<span class="line"><span> SD Gundam G Generation Eternal:	No</span></span>
<span class="line"><span>=======================================</span></span>
<span class="line"><span> 以下为IPV6网络测试，若无IPV6网络则无输出</span></span>
<span class="line"><span>--------------------TikTok解锁--感谢lmc999的源脚本----------------------</span></span>
<span class="line"><span> Tiktok Region:		【US】</span></span>
<span class="line"><span>-------------IP质量检测--基于oneclickvirt/securityCheck使用-------------</span></span>
<span class="line"><span>数据仅作参考，不代表100%准确，如果和实际情况不一致请手动查询多个数据库比对</span></span>
<span class="line"><span>以下为各数据库编号，输出结果后将自带数据库来源对应的编号</span></span>
<span class="line"><span>ipinfo数据库  [0] | scamalytics数据库 [1] | virustotal数据库   [2] | abuseipdb数据库   [3] | ip2location数据库    [4]</span></span>
<span class="line"><span>ip-api数据库  [5] | ipwhois数据库     [6] | ipregistry数据库   [7] | ipdata数据库      [8] | db-ip数据库          [9]</span></span>
<span class="line"><span>ipapiis数据库 [A] | ipapicom数据库    [B] | bigdatacloud数据库 [C] | dkly数据库        [D] | ipqualityscore数据库 [E]</span></span>
<span class="line"><span>IPV4:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>声誉(越高越好): 0 [2] </span></span>
<span class="line"><span>信任得分(越高越好): 0 [8] </span></span>
<span class="line"><span>VPN得分(越低越好): 100 [8] </span></span>
<span class="line"><span>代理得分(越低越好): 100 [8] </span></span>
<span class="line"><span>社区投票-无害: 0 [2] </span></span>
<span class="line"><span>社区投票-恶意: 0 [2] </span></span>
<span class="line"><span>威胁得分(越低越好): 100 [8] </span></span>
<span class="line"><span>欺诈得分(越低越好): 65 [E] 50 [1]</span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3] </span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0002 (Very Low) [A] </span></span>
<span class="line"><span>公司滥用得分(越低越好): 0.0024 (Low) [A]</span></span>
<span class="line"><span>威胁级别: low [9] </span></span>
<span class="line"><span>黑名单记录统计:(有多少黑名单网站有记录):</span></span>
<span class="line"><span>无害记录数: 0 [2]  恶意记录数: 0 [2]  可疑记录数: 0 [2] 无记录数: 94 [2]  </span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: DataCenter/WebHosting/Transit [3] business [8] corporate [9] isp [A] hosting [0 7] hosting - moderate probability [C]</span></span>
<span class="line"><span>公司类型: hosting [0] isp [7 A]</span></span>
<span class="line"><span>是否云提供商: Yes [7] </span></span>
<span class="line"><span>是否数据中心: Yes [0 1 5 6] No [8 A C]</span></span>
<span class="line"><span>是否移动设备: No [5 A C] Yes [E]</span></span>
<span class="line"><span>是否代理: No [0 1 4 5 6 7 8 9 A C] Yes [E]</span></span>
<span class="line"><span>是否VPN: Yes [A E] No [0 1 6 7 C]</span></span>
<span class="line"><span>是否Tor: No [0 1 3 6 7 8 A C E] </span></span>
<span class="line"><span>是否Tor出口: No [1 7] </span></span>
<span class="line"><span>是否网络爬虫: No [9 A E] </span></span>
<span class="line"><span>是否匿名: No [1 6 7 8] </span></span>
<span class="line"><span>是否攻击者: No [7 8] </span></span>
<span class="line"><span>是否滥用者: No [7 8 A C E] </span></span>
<span class="line"><span>是否威胁: No [7 8 C] </span></span>
<span class="line"><span>是否中继: No [0 7 8 C] </span></span>
<span class="line"><span>是否Bogon: No [7 8 A C] </span></span>
<span class="line"><span>是否机器人: No [E] </span></span>
<span class="line"><span>DNS-黑名单: 314(Total_Check) 0(Clean) 5(Blacklisted) 19(Other) </span></span>
<span class="line"><span>Google搜索可行性: NO</span></span>
<span class="line"><span>-------------邮件端口检测--基于oneclickvirt/portchecker开源-------------</span></span>
<span class="line"><span>Platform  SMTP  SMTPS POP3  POP3S IMAP  IMAPS</span></span>
<span class="line"><span>LocalPort ✔     ✔     ✔     ✔     ✔     ✔    </span></span>
<span class="line"><span>QQ        ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>163       ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sohu      ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yandex    ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Gmail     ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Outlook   ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Office365 ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yahoo     ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MailCOM   ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>MailRU    ✔     ✔     ✘     ✘     ✔     ✘    </span></span>
<span class="line"><span>AOL       ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>GMX       ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sina      ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Apple     ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>FastMail  ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ProtonMail✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MXRoute   ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Namecrane ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>XYAMail   ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ZohoMail  ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Inbox_eu  ✔     ✔     ✔     ✘     ✘     ✘    </span></span>
<span class="line"><span>Free_fr   ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>----------------三网回程--基于oneclickvirt/backtrace开源----------------</span></span>
<span class="line"><span>北京电信v4 219.141.140.10           电信163    [普通线路] </span></span>
<span class="line"><span>北京联通v4 202.106.195.68           联通4837   [普通线路] </span></span>
<span class="line"><span>北京移动v4 221.179.155.161          移动CMI    [普通线路] </span></span>
<span class="line"><span>上海电信v4 202.96.209.133           电信163    [普通线路] </span></span>
<span class="line"><span>上海联通v4 210.22.97.1              联通4837   [普通线路] </span></span>
<span class="line"><span>上海移动v4 211.136.112.200          移动CMI    [普通线路] </span></span>
<span class="line"><span>广州电信v4 58.60.188.222            电信163    [普通线路] </span></span>
<span class="line"><span>广州联通v4 210.21.196.6             联通4837   [普通线路] </span></span>
<span class="line"><span>广州移动v4 120.196.165.24           移动CMI    [普通线路] </span></span>
<span class="line"><span>成都电信v4 61.139.2.69              电信163    [普通线路] </span></span>
<span class="line"><span>成都联通v4 119.6.6.6                联通4837   [普通线路] </span></span>
<span class="line"><span>成都移动v4 211.137.96.205           移动CMI    [普通线路] </span></span>
<span class="line"><span>准确线路自行查看详细路由，本测试结果仅作参考</span></span>
<span class="line"><span>同一目标地址多个线路时，可能检测已越过汇聚层，除了第一个线路外，后续信息可能无效</span></span>
<span class="line"><span>-----------------------回程路由--基于nexttrace开源----------------------</span></span>
<span class="line"><span>依次测试电信/联通/移动经过的地区及线路，核心程序来自nexttrace，请知悉!</span></span>
<span class="line"><span>广州电信 58.60.188.222</span></span>
<span class="line"><span>0.86 ms 	AS35916 美国 加利福尼亚 洛杉矶 multacom.com</span></span>
<span class="line"><span>0.95 ms 	AS35916 美国 加利福尼亚州 洛杉矶 multacom.com</span></span>
<span class="line"><span>0.61 ms 	AS2914 [NTTA-128] 美国 加利福尼亚 洛杉矶 gin.ntt.net</span></span>
<span class="line"><span>1.06 ms 	AS2914 [NTT-BACKBONE] 美国 加利福尼亚 洛杉矶 gin.ntt.net</span></span>
<span class="line"><span>13.23 ms 	AS4134 [CHINANET-US] 美国 加利福尼亚 圣克拉拉 www.chinatelecom.com.cn 电信</span></span>
<span class="line"><span>155.09 ms 	AS4134 [CHINANET-BB] 中国 广东 广州 www.chinatelecom.com.cn 电信</span></span>
<span class="line"><span>155.96 ms 	AS4134 [CHINANET-BB] 中国 广东 广州 www.chinatelecom.com.cn 电信</span></span>
<span class="line"><span>164.83 ms 	AS4134 [APNIC-AP] 中国 广东 深圳 www.chinatelecom.com.cn 电信</span></span>
<span class="line"><span>广州联通 210.21.196.6</span></span>
<span class="line"><span>0.95 ms 	AS35916 美国 加利福尼亚 洛杉矶 multacom.com</span></span>
<span class="line"><span>0.96 ms 	AS35916 美国 加利福尼亚州 洛杉矶 multacom.com</span></span>
<span class="line"><span>1.43 ms 	AS174 [COGENT-BONE] 美国 加利福尼亚 洛杉矶 cogentco.com</span></span>
<span class="line"><span>167.13 ms 	AS174 美国 加利福尼亚 洛杉矶 cogentco.com</span></span>
<span class="line"><span>233.32 ms 	AS4837 [CU169-BACKBONE] 中国 广东 广州 chinaunicom.cn 联通</span></span>
<span class="line"><span>222.96 ms 	AS17816 [APNIC-AP] 中国 广东 深圳 chinaunicom.cn 联通</span></span>
<span class="line"><span>194.28 ms 	AS17623 [APNIC-AP] 中国 广东 深圳 chinaunicom.cn 联通</span></span>
<span class="line"><span>175.73 ms 	AS17623 中国 广东 深圳 宝安区 chinaunicom.cn 联通</span></span>
<span class="line"><span>广州移动 120.196.165.24</span></span>
<span class="line"><span>0.78 ms 	AS35916 美国 加利福尼亚 洛杉矶 multacom.com</span></span>
<span class="line"><span>1.16 ms 	AS35916 美国 加利福尼亚州 洛杉矶 multacom.com</span></span>
<span class="line"><span>0.96 ms 	AS2914 [NTTA-128] 美国 加利福尼亚 洛杉矶 gin.ntt.net</span></span>
<span class="line"><span>0.67 ms 	AS2914 [NTT-BACKBONE] 美国 加利福尼亚 洛杉矶 gin.ntt.net</span></span>
<span class="line"><span>161.01 ms 	AS2914 [NTT-BACKBONE] 日本 东京都 东京 gin.ntt.net</span></span>
<span class="line"><span>161.71 ms 	AS2914 [NTT-BACKBONE] 日本 东京都 东京 gin.ntt.net</span></span>
<span class="line"><span>154.59 ms 	AS2914 [NTT-BACKBONE] 中国 香港 gin.ntt.net</span></span>
<span class="line"><span>209.48 ms 	AS2914 [NTT-GLOBAL] 中国 香港 gin.ntt.net</span></span>
<span class="line"><span>209.09 ms 	AS58453 [CMI-INT] 中国 香港 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>153.85 ms 	AS58453 [CMI-INT] 中国 广东 广州 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>168.07 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>168.27 ms 	AS9808 [CMNET] 中国 广东 广州 I-C chinamobileltd.com 移动</span></span>
<span class="line"><span>161.52 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>165.33 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>165.53 ms 	AS56040 [APNIC-AP] 中国 广东 深圳 gd.10086.cn 移动</span></span>
<span class="line"><span>--------------------自动更新测速节点列表--本脚本原创--------------------</span></span>
<span class="line"><span>位置		 上传速度	 下载速度	 延迟</span></span>
<span class="line"><span>Speedtest.net	 843.95Mbps	 891.40Mbps	 991.24ms	</span></span>
<span class="line"><span>洛杉矶		 843.60Mbps	 749.20Mbps	 1.14ms	</span></span>
<span class="line"><span>法兰克福	 2.09Mbps	 28.00Mbps	 162.73ms	</span></span>
<span class="line"><span>联通太原	 7.00 Mbps	 0.00 Mbps	 345.57310.00311.00	</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span>
<span class="line"><span> 总共花费      : 5 分 51 秒</span></span>
<span class="line"><span> 时间          : Tue Jul 29 02:06:09 UTC 2025</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[反向代理DDNS域名]]></title>
            <link>https://www.tteam.icu/blog/other/反向代理DDNS域名</link>
            <guid isPermaLink="false">/blog/other/反向代理DDNS域名</guid>
            <pubDate>Tue, 29 Jul 2025 15:00:00 GMT</pubDate>
            <description><![CDATA[介绍如何通过Nginx反向代理解决DDNS域名被跨网QoS导致访问慢的问题，包含正确和错误的配置示例]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="反向代理ddns域名"><a href="#反向代理ddns域名" class="rp-header-anchor rp-link" aria-hidden="true">#</a>反向代理DDNS域名<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="背景"><a href="#背景" class="rp-header-anchor rp-link" aria-hidden="true">#</a>背景</h2>
<p>网友在家里搭建了一个<code>Emby</code>影视站，使用<code>DDNS</code>域名进行访问</p>
<p>但是我家的网络、健身房的网络以及流量卡都存在跨网QoS限制，导致访问速度异常缓慢</p>
<p>于是我想到在其网站前通过另一个域名做一层转发，从而实现三网直连</p>
<h2 class="rp-toc-include" id="正确配置"><a href="#正确配置" class="rp-header-anchor rp-link" aria-hidden="true">#</a>正确配置</h2>
<div class="rp-codeblock language-nginx"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="nginx"><code><span class="line"><span style="color:var(--shiki-token-keyword)">server</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  listen </span><span style="color:var(--shiki-token-constant)">443</span><span style="color:var(--shiki-foreground)"> ssl;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  server_name </span><span style="color:var(--shiki-foreground)">xxx;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">  </span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  ssl_certificate </span><span style="color:var(--shiki-foreground)">/data/ssl/xxx/fullchain.pem;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  ssl_certificate_key </span><span style="color:var(--shiki-foreground)">/data/ssl/xxx/privkey.pem;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  ssl_session_timeout </span><span style="color:var(--shiki-token-constant)">5m</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  ssl_protocols </span><span style="color:var(--shiki-foreground)">TLSv1 TLSv1.1 TLSv1.2;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  ssl_ciphers </span><span style="color:var(--shiki-foreground)">ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  resolver </span><span style="color:var(--shiki-token-constant)">8.8.8.8</span><span style="color:var(--shiki-token-constant)"> 114.114.114.114</span><span style="color:var(--shiki-foreground)"> valid=10s;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  set </span><span style="color:var(--shiki-foreground)">$target </span><span style="color:var(--shiki-token-string-expression)">&quot;xxx&quot;</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  location</span><span style="color:var(--shiki-foreground)"> / {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_pass </span><span style="color:var(--shiki-foreground)">https://$target:65082;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_ssl_server_name </span><span style="color:var(--shiki-token-constant)">on</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_set_header </span><span style="color:var(--shiki-foreground)">Host xxx;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_set_header </span><span style="color:var(--shiki-foreground)">X-Real-IP $remote_addr;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_set_header </span><span style="color:var(--shiki-foreground)">REMOTE-HOST $remote_addr;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_set_header </span><span style="color:var(--shiki-foreground)">X-Forwarded-For $proxy_add_x_forwarded_for;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_set_header </span><span style="color:var(--shiki-foreground)">Upgrade $http_upgrade;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">  }</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="错误配置"><a href="#错误配置" class="rp-header-anchor rp-link" aria-hidden="true">#</a>错误配置</h2>
<p>我最初使用了常规的转发方式，发现无法适用于<code>DDNS</code>域名:</p>
<div class="rp-codeblock language-nginx"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="nginx"><code><span class="line"><span style="color:var(--shiki-token-keyword)">server</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  listen </span><span style="color:var(--shiki-token-constant)">443</span><span style="color:var(--shiki-foreground)"> ssl;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  server_name </span><span style="color:var(--shiki-foreground)">xxx;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">  </span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  ssl_certificate </span><span style="color:var(--shiki-foreground)">/data/ssl/xxx/fullchain.pem;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  ssl_certificate_key </span><span style="color:var(--shiki-foreground)">/data/ssl/xxx/privkey.pem;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  ssl_session_timeout </span><span style="color:var(--shiki-token-constant)">5m</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  ssl_protocols </span><span style="color:var(--shiki-foreground)">TLSv1 TLSv1.1 TLSv1.2;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  ssl_ciphers </span><span style="color:var(--shiki-foreground)">ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  location</span><span style="color:var(--shiki-foreground)"> / {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_pass </span><span style="color:var(--shiki-foreground)">https://xxx:65082;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_ssl_server_name </span><span style="color:var(--shiki-token-constant)">on</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_set_header </span><span style="color:var(--shiki-foreground)">Host xxx;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_set_header </span><span style="color:var(--shiki-foreground)">X-Real-IP $remote_addr;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_set_header </span><span style="color:var(--shiki-foreground)">REMOTE-HOST $remote_addr;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_set_header </span><span style="color:var(--shiki-foreground)">X-Forwarded-For $proxy_add_x_forwarded_for;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_set_header </span><span style="color:var(--shiki-foreground)">Upgrade $http_upgrade;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">  }</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[debian安装pve]]></title>
            <link>https://www.tteam.icu/blog/other/debian安装pve</link>
            <guid isPermaLink="false">/blog/other/debian安装pve</guid>
            <pubDate>Sun, 15 Jun 2025 23:56:12 GMT</pubDate>
            <description><![CDATA[介绍如何在Debian系统上安装Proxmox VE虚拟化平台的方法和注意事项]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="在debian上安装proxmox-ve"><a href="#在debian上安装proxmox-ve" class="rp-header-anchor rp-link" aria-hidden="true">#</a>在Debian上安装Proxmox VE<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>最近突发奇想，想在Mac上测试一些需要纯外网环境的内容</p>
<p>突然想到我有一台闲置的VPS，系统正好是Debian，而Proxmox VE本身就是基于Debian的</p>
<p>于是我在网上搜索了一堆教程并尝试安装</p>
<p>发现网上的教程都比较陈旧，最后在官网找到了官方的直接安装<a href="https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_12_Bookworm" target="_blank" rel="noopener noreferrer" class="rp-link">教程</a></p>
<p>需要特别注意的是，一定要正确修改<code>/etc/hosts</code>文件，否则会导致安装后无法正常使用</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2025劳动节广州香港澳门行]]></title>
            <link>https://www.tteam.icu/blog/tour/2025劳动节广州香港澳门行</link>
            <guid isPermaLink="false">/blog/tour/2025劳动节广州香港澳门行</guid>
            <pubDate>Sun, 15 Jun 2025 22:56:12 GMT</pubDate>
            <description><![CDATA[2025年劳动节期间，作者前往深圳、香港、澳门三地游玩，主要为了参加泠鸢yousa的演唱会。行程包括在深圳逛东门老街、华强北，在香港游览尖东、坚尼地城、平顶山、维多利亚港，在澳门打卡新葡京、大三巴、威尼斯人、伦敦人等景点，记录了美食、交通、住宿等详细体验。]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2025劳动节广州香港澳门行"><a href="#2025劳动节广州香港澳门行" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2025劳动节广州香港澳门行<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>这是一篇关于我在2025年五一劳动节期间前往深圳、香港、澳门三地游玩的经历。</p>
<p>之所以在过年刚去过一次后又再次前往，是因为要参加泠鸢yousa的演唱会。</p>
<p>以下是本次出行的装备，依旧是轻装简行，只带了一个包:</p>
<p><img src="https://img.tteam.icu/i/2025/06/02/yzhwy5-3.webp" alt="pocket3"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/02/yzvoqd-3.webp" alt="书包"/></p>
<h2 class="rp-toc-include" id="第一天"><a href="#第一天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第一天</h2>
<p>4月30日，我请假后早上飞往深圳，入住华强北附近的酒店。这家酒店条件不错，价格实惠，距离两个口岸都很近。</p>
<p><img src="https://img.tteam.icu/i/2025/05/30/qyko70-3.webp" alt="飞机餐"/></p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-m3phtp5rv" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>到达酒店放下行李后，我乘坐地铁前往<code>东门老街</code>:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-64qn34fjn" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>在老街逛了一圈后，我找了一家椰子鸡店吃午饭，点了个双人套餐，只需100多元，非常划算。</p>
<p><img src="https://img.tteam.icu/i/2025/06/02/zh9sv7-3.webp" alt="煲仔饭"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/02/zhbeb8-3.webp" alt="椰子鸡"/></p>
<p>吃得太饱，需要散步消食，于是决定走回酒店，途中刚好经过华强北:</p>
<p><img src="https://img.tteam.icu/i/2025/06/02/zmibn3-3.webp" alt="华强北"/></p>
<p>随后在附近商场买了当地特色茶饮<code>山月茶</code>，味道还不错:</p>
<p><img src="https://img.tteam.icu/i/2025/06/02/10gk1eh-3.webp" alt="山月茶"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/02/10gu5bh-3.webp" alt="山月茶"/></p>
<p>最后在旁边的<code>美心西饼</code>买了些点心作为宵夜和第二天的早餐:</p>
<p><img src="https://img.tteam.icu/i/2025/06/02/10hg9s6-3.webp" alt="美心西饼"/></p>
<h2 class="rp-toc-include" id="第二天"><a href="#第二天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第二天</h2>
<p>第二天一早，我与k总约在口岸见面，一同过关前往香港:</p>
<p><img src="https://img.tteam.icu/i/2025/06/02/10jydvr-3.webp" alt="罗湖口岸"/></p>
<p>过关前，我们在换币处兑换了200港币和澳币。</p>
<p>在地铁站看到服务台，本想购买一日通(过年时曾在九龙地铁站买过)，但被告知只能购买八达通，于是我直接买了八达通(小米手机无法使用NFC开通)。</p>
<p>我们乘坐地铁前往<code>尖东</code>，下车时刷卡花费了50多元，k总都心疼坏了。</p>
<p>我们计划与香港本地朋友一起游玩，但他当时还在路上，所以我们在<code>尖东</code>服务台购买了一日通:</p>
<p><img src="https://img.tteam.icu/i/2025/06/02/10q2z9m-3.webp" alt="尖东服务台"/></p>
<p>出了地铁站后，我们短暂逛了10分钟左右，香港的街景依然非常出片，随手一拍就是美景:</p>
<p><img src="https://img.tteam.icu/i/2025/06/02/10qkwcr-3.webp" alt="香港街景"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/02/10qy53m-3.webp" alt="香港街景"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/02/10rn740-3.webp" alt="香港街景"/></p>
<p>我们与朋友约在<code>红茶</code>餐厅见面并用餐:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-acooyqky3" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/06/02/11bird9-3.webp" alt="西多士"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/02/11bs5uf-3.webp" alt="菠萝包"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/02/11bv356-3.webp" alt="汉堡"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/02/11bwqjp-3.webp" alt="菜单"/></p>
<p>用餐后，我们前往网红打卡点<code>坚尼地城</code>:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-j9dxq6gs0" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/06/03/p09dck-3.webp" alt="坚尼地城"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/p0a9hz-3.webp" alt="坚尼地城"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/p0b4ac-3.webp" alt="坚尼地城"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/p0c9mz-3.webp" alt="坚尼地城"/></p>
<p>在<code>坚尼地城</code>拍完照后，我们前往<code>平顶山</code>缆车方向。到达后发现排队人数比过年时还多，于是果断放弃。</p>
<p>边走边聊时，我们决定打车前往<code>平顶山</code>，到达后发现三人平摊费用比缆车更便宜，而且不用排队:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-9z76yi7y5" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/06/03/pidlwk-3.webp" alt="维多利亚港"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/piem98-3.webp" alt="维多利亚港"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/pio0ia-3.webp" alt="平顶山"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/piounz-3.webp" alt="平顶山"/></p>
<p>从<code>平顶山</code>下来后，到了晚饭时间，我们去了过年时没去成的<code>三不馆车仔面</code>，这是本地朋友推荐的:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-whx7jh6hu" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/06/03/pq0orm-3.webp" alt="三不馆车仔面"/></p>
<p>晚饭后，我们前往<code>维多利亚港</code>打卡:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-77t2a5xzu" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/06/03/qvjik8-3.webp" alt="维多利亚港"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/qvk27m-3.webp" alt="维多利亚港"/></p>
<h2 class="rp-toc-include" id="第三天"><a href="#第三天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第三天</h2>
<p>今天我独自前往澳门，早上先吃了麦当劳:</p>
<p><img src="https://img.tteam.icu/i/2025/06/03/r407fm-3.webp" alt="麦当劳"/></p>
<p>吃完早饭，我乘坐地铁到<code>欣奥</code>站，从那里乘坐大巴前往港珠澳口岸:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-m4tjzqyh4" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>乘坐地铁时，我幸运地遇到了迪士尼主题地铁:</p>
<p><img src="https://img.tteam.icu/i/2025/06/03/r67qcp-3.webp" alt="迪士尼地铁"/></p>
<p>抵达澳门后，我乘坐发财车前往<code>新葡京</code>打卡:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-2n1rolzv8" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/06/03/s5zx4z-3.webp" alt="新葡京"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/s6132v-3.webp" alt="新葡京"/></p>
<p>前往酒店途中，我随便找了一家饭店用餐:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-mt4ehrevz" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/06/03/vtj1ux-3.webp" alt="中天咖啡美食"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/vtjjlx-3.webp" alt="中天咖啡美食"/></p>
<p>在酒店放下行李后，我外出游览。澳门人非常多，100米的路程走了近1个小时，我在<code>大三巴</code>远远拍了张照片就离开了:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-602td998w" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/06/03/w90811-3.webp" alt="大三巴"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/xckm7i-3.webp" alt="市政府"/></p>
<p>晚饭依旧是麦当劳:</p>
<p><img src="https://img.tteam.icu/i/2025/06/03/xcyc0q-3.webp" alt="麦当劳"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/xcz3s3-3.webp" alt="麦当劳"/></p>
<h2 class="rp-toc-include" id="第四天"><a href="#第四天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第四天</h2>
<p>第四天早上，早饭依旧是麦当劳:</p>
<p><img src="https://img.tteam.icu/i/2025/06/03/12yasfo-3.webp" alt="麦当劳"/></p>
<p>吃完早饭后，我步行前往地铁站，沿途的澳门街景依然漂亮:</p>
<p><img src="https://img.tteam.icu/i/2025/06/03/1301lug-3.webp" alt="澳门街景"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/1307nt9-3.webp" alt="澳门街景"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/03/130k5lq-3.webp" alt="澳门街景"/></p>
<p>到达地铁站后，工作人员告知需要到服务台购买单次票:</p>
<p><img src="https://img.tteam.icu/i/2025/06/04/fufe4s-3.webp" alt="澳门地铁单次票"/></p>
<p>顺利进入地铁后，我前往<code>威尼斯人</code>:</p>
<p><img src="https://img.tteam.icu/i/2025/06/04/ful8qb-3.webp" alt="澳门地铁"/></p>
<p>下地铁时突然下起大雨，距离目的地还有约1公里路程，我只好躲进地铁旁的商场，发现这是个相当有名的商场:</p>
<p><img src="https://img.tteam.icu/i/2025/06/04/gt6nko-3.webp" alt="东翼广场"/></p>
<p>躲雨期间，我在商场里买了杯内地没有的星巴克特饮:</p>
<p><img src="https://img.tteam.icu/i/2025/06/04/xzims9-3.webp" alt="星巴克"/></p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-kjkooel5s" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>喝完星巴克后，雨停了，我继续前往<code>威尼斯人</code>:</p>
<p><img src="https://img.tteam.icu/i/2025/06/15/vpk03b-3.webp" alt="威尼斯人"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/15/vpllf5-3.webp" alt="威尼斯人"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/15/vpo0uk-3.webp" alt="威尼斯人"/></p>
<p>威尼斯人内部的人工运河景观令人震撼。</p>
<p>出来后，旁边就是<code>伦敦人</code>:</p>
<p><img src="https://img.tteam.icu/i/2025/06/15/vqsr3y-3.webp" alt="伦敦人"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/15/vr63tc-3.webp" alt="伦敦人"/></p>
<p>还有仿造的伦敦铁塔:</p>
<p><img src="https://img.tteam.icu/i/2025/06/15/zczmf5-3.webp" alt="铁塔"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/15/zd2gzp-3.webp" alt="铁塔"/></p>
<p>最后，我去了<code>新濠影汇</code>逛了两圈后就离开了澳门:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-aaxw05xj9" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/06/15/zfem4q-3.webp" alt="新濠影汇"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/15/zg7c4c-3.webp" alt="新濠影汇"/></p>
<h2 class="rp-toc-include" id="第五天"><a href="#第五天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第五天</h2>
<p>早上，我再次与k总会面，一起吃早饭:</p>
<p>我们在k总家附近的本地集市逛了逛，买了些<code>烧腊</code>，然后吃了<code>肠粉</code>和<code>生滚粥</code>:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-2dx4cmpjg" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/06/15/zgsfy6-3.webp" alt="鸡蛋肠粉"/></p>
<p><img src="https://img.tteam.icu/i/2025/06/15/zh2thl-3.webp" alt="烧腊和生滚粥"/></p>
<p>吃完早饭后，我们稍微逛了一会，然后我请客吃了中饭:</p>
<p><img src="https://img.tteam.icu/i/2025/06/15/zmgi36-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/06/15/zmi6iz-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/06/15/zmk2vd-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/06/15/zmlfzu-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/06/15/zmmwsq-3.webp" alt=""/></p>
<p>吃完中饭后，我们在一个大型商场逛了一圈，然后前往演唱会现场:</p>
<p><img src="https://img.tteam.icu/i/2025/06/15/znmn1o-3.webp" alt="鸢宝痛车"/></p>
<p>鸟憨合影:</p>
<p><img src="https://img.tteam.icu/i/2025/06/15/znvvay-3.webp" alt="鸟憨合影"/></p>
<p>毛怪合影:</p>
<p><img src="https://img.tteam.icu/i/2025/06/15/zob476-3.webp" alt="毛怪合影"/></p>
<p>看完演唱会后，我与毛怪小伙伴们一起吃了夜宵，然后各自道别。</p>
<p>第六天，我早起坐飞机回家，没有特别的记录。</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[linux用systemd运行二进制]]></title>
            <link>https://www.tteam.icu/blog/ops/linux用systemd运行二进制</link>
            <guid isPermaLink="false">/blog/ops/linux用systemd运行二进制</guid>
            <pubDate>Thu, 29 May 2025 23:56:12 GMT</pubDate>
            <description><![CDATA[介绍如何在Linux系统中使用systemd管理和运行二进制文件，适用于资源有限的服务器环境]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="linux用systemd运行二进制"><a href="#linux用systemd运行二进制" class="rp-header-anchor rp-link" aria-hidden="true">#</a>linux用systemd运行二进制<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="前言"><a href="#前言" class="rp-header-anchor rp-link" aria-hidden="true">#</a>前言</h2>
<p>最近购买了一台VPS，配置为1核512M内存，系统为Debian</p>
<p>我计划在这台VPS上运行我用<code>Golang</code>开发的项目演示站</p>
<p>在其他服务器上我通常使用Docker运行应用，但由于这台服务器的CPU和内存资源有限，我决定直接使用系统的systemd来管理运行</p>
<h2 class="rp-toc-include" id="开始"><a href="#开始" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开始</h2>
<p>先将二进制文件上传到服务器并赋予执行权限</p>
<p>然后写入<code>systemd</code>文件，并运行即可</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">cat</span><span style="color:var(--shiki-token-keyword)"> &lt;&lt;</span><span style="color:var(--shiki-foreground)"> EOF</span><span style="color:var(--shiki-token-keyword)"> &gt;</span><span style="color:var(--shiki-token-string)"> /etc/systemd/system/hertz_service.service</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">[Unit]</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">Description=hertz_service</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-string)">[Service]</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">ExecStart=/root/hertz_service --config=config.yaml</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">WorkingDirectory=/root/</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">Restart=always</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">RestartSec=10</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">KillSignal=SIGINT</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">SyslogIdentifier=hertz_service</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">User=root</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-string)">[Install]</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">WantedBy=multi-user.target</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">EOF</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">systemctl</span><span style="color:var(--shiki-token-string)"> daemon-reload</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">systemctl</span><span style="color:var(--shiki-token-string)"> enable</span><span style="color:var(--shiki-token-string)"> hertz_service</span><span style="color:var(--shiki-token-string)"> --now</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="更新服务"><a href="#更新服务" class="rp-header-anchor rp-link" aria-hidden="true">#</a>更新服务</h2>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-comment)">#!/bin/bash</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-foreground)">app_full_path</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string)">/root/hertz_service</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">download_url</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string)">https://xxx/hertz_service</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">rm</span><span style="color:var(--shiki-token-string)"> -f</span><span style="color:var(--shiki-foreground)"> ${app_full_path}</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">wget</span><span style="color:var(--shiki-foreground)"> ${download_url} </span><span style="color:var(--shiki-token-string)">-O</span><span style="color:var(--shiki-foreground)"> ${app_full_path}</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">chmod</span><span style="color:var(--shiki-token-string)"> +x</span><span style="color:var(--shiki-foreground)"> ${app_full_path}</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">systemctl</span><span style="color:var(--shiki-token-string)"> restart</span><span style="color:var(--shiki-token-string)"> hertz_service</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[周记 2025 Week 21]]></title>
            <link>https://www.tteam.icu/blog/record/weekly/2025/W21</link>
            <guid isPermaLink="false">/blog/record/weekly/2025/W21</guid>
            <pubDate>Sun, 25 May 2025 23:22:24 GMT</pubDate>
            <description><![CDATA[2025年第21周的工作总结，包括近期生活经历、运维工具部署和开发学习进展]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2025-week-21"><a href="#2025-week-21" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2025 Week 21<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="个人近况"><a href="#个人近况" class="rp-header-anchor rp-link" aria-hidden="true">#</a>个人近况</h2>
<ul>
<li>周报又停更了一段时间，来总结一下近期情况</li>
<li>工作仍然加班严重</li>
<li>五一假期前购买了Pocket 3</li>
<li>五一黄金周请了一天年假，前往深圳、香港、澳门、广州旅游，先和k总、这么好一起在香港游玩，之后和布哥哥一起去看鸟的演唱会</li>
<li>回来后发现JD上iPhone 16 Pro价格很实惠，从坚定的安卓用户转为苹果用户，难道是过了喜欢折腾的年纪了？</li>
<li>在家中PVE上部署了iStoreOS作为旁路由，在上面运行代理服务，但发现iPhone修改网关后没有WiFi图标，似乎没有通过旁路由上网</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul>
<li>在自己的VPS上部署了<a href="https://github.com/containrrr/watchtower" target="_blank" rel="noopener noreferrer" class="rp-link">Watchtower</a>，之前以为只能升级所有服务，后来看到网上推荐后仔细阅读文档，发现可以通过参数指定升级特定服务</li>
<li>由于入手了iPhone，发现Mac自带的电量显示无法显示手机电量，于是下载了<a href="https://github.com/lihaoyun6/AirBattery" target="_blank" rel="noopener noreferrer" class="rp-link">AirBattery</a>，使用体验不错</li>
</ul>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<ul>
<li><code>Golang</code>和<code>React</code>的学习已基本完成(尝试了4-5个React框架，都觉得不好用，最终选择直接使用原生React开发)</li>
<li>计划学完后开始开发一些开源项目</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Debian 11 升级 Debian 12]]></title>
            <link>https://www.tteam.icu/blog/ops/Debian%2011%20升级%20Debian%2012</link>
            <guid isPermaLink="false">/blog/ops/Debian 11 升级 Debian 12</guid>
            <pubDate>Fri, 09 May 2025 23:56:12 GMT</pubDate>
            <description><![CDATA[详细介绍如何将Debian 11系统升级到Debian 12，包括源更新、系统升级和验证步骤]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="debian-11-升级-debian-12"><a href="#debian-11-升级-debian-12" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Debian 11 升级 Debian 12<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="准备工作"><a href="#准备工作" class="rp-header-anchor rp-link" aria-hidden="true">#</a>准备工作</h2>
<p>最近购买了一台VPS，其<code>Debian</code>系统最高版本为11，而我用<code>Go</code>编译的二进制文件无法直接运行，需要升级到Debian 12</p>
<p>因此我在网上查询了升级方法，并成功完成了系统升级</p>
<h2 class="rp-toc-include" id="更新系统"><a href="#更新系统" class="rp-header-anchor rp-link" aria-hidden="true">#</a>更新系统</h2>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> update</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> upgrade</span><span style="color:var(--shiki-token-string)"> -y</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> dist-upgrade</span><span style="color:var(--shiki-token-string)"> -y</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> autoclean</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> autoremove</span><span style="color:var(--shiki-token-string)"> -y</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>如果内核更新了，可以重启让最新的内核生效，也可以直接进行升级。</p>
<h2 class="rp-toc-include" id="升级系统"><a href="#升级系统" class="rp-header-anchor rp-link" aria-hidden="true">#</a>升级系统</h2>
<h3 class="rp-toc-include" id="首先更新-apt-源替换-bullseye-为-bookworm"><a href="#首先更新-apt-源替换-bullseye-为-bookworm" class="rp-header-anchor rp-link" aria-hidden="true">#</a>首先更新 <code>apt</code> 源，替换 <code>bullseye</code> 为 <code>bookworm</code>:</h3>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">sed</span><span style="color:var(--shiki-token-string)"> -i</span><span style="color:var(--shiki-token-string-expression)"> &#x27;s/bullseye/bookworm/g&#x27;</span><span style="color:var(--shiki-token-string)"> /etc/apt/sources.list</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">sed</span><span style="color:var(--shiki-token-string)"> -i</span><span style="color:var(--shiki-token-string-expression)"> &#x27;s/bullseye/bookworm/g&#x27;</span><span style="color:var(--shiki-token-string)"> /etc/apt/sources.list.d/*.list</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>对于 Debian 12 以后的版本，所有 Debian 可以分发的打包的非自由固件二进制文件 (non-free)，比如某些驱动，都被转移到 Debian Archive 中的一个新组件，称为非自由固件 (non-free-firmware)。如果您从旧版的 Debian 升级，并且需要这些固件二进制文件，您应该更新您系统上的 <code>/etc/apt/sources.list</code>，以使用这个新组件 (<a href="https://wiki.debian.org/Firmware#Debian_12_.28bookworm.29_and_later" target="_blank" rel="noopener noreferrer" class="rp-link">来源</a>):</p>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">sed</span><span style="color:var(--shiki-token-string)"> -i</span><span style="color:var(--shiki-token-string-expression)"> &#x27;s/non-free/non-free non-free-firmware/g&#x27;</span><span style="color:var(--shiki-token-string)"> /etc/apt/sources.list</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="默认的系统-apt-源文件-etcaptsourceslist-应该是类似这样的"><a href="#默认的系统-apt-源文件-etcaptsourceslist-应该是类似这样的" class="rp-header-anchor rp-link" aria-hidden="true">#</a>默认的系统 <code>apt</code> 源文件 <code>/etc/apt/sources.list</code> 应该是类似这样的</h3>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">deb</span><span style="color:var(--shiki-token-string)"> http://deb.debian.org/debian</span><span style="color:var(--shiki-token-string)"> bookworm</span><span style="color:var(--shiki-token-string)"> main</span><span style="color:var(--shiki-token-string)"> contrib</span><span style="color:var(--shiki-token-string)"> non-free</span><span style="color:var(--shiki-token-string)"> non-free-firmware</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">deb</span><span style="color:var(--shiki-token-string)"> http://security.debian.org/debian-security</span><span style="color:var(--shiki-token-string)"> bookworm-security</span><span style="color:var(--shiki-token-string)"> main</span><span style="color:var(--shiki-token-string)"> contrib</span><span style="color:var(--shiki-token-string)"> non-free</span><span style="color:var(--shiki-token-string)"> non-free-firmware</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">deb</span><span style="color:var(--shiki-token-string)"> http://deb.debian.org/debian</span><span style="color:var(--shiki-token-string)"> bookworm-updates</span><span style="color:var(--shiki-token-string)"> main</span><span style="color:var(--shiki-token-string)"> contrib</span><span style="color:var(--shiki-token-string)"> non-free</span><span style="color:var(--shiki-token-string)"> non-free-firmware</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="大部分-debian-的软件源配置文件使用传统的-one-line-style路径为-etcaptsourceslist但是对于容器镜像从-debian-12-开始其软件源配置文件变更为-deb822-格式路径为-etcaptsourceslistddebiansources参考"><a href="#大部分-debian-的软件源配置文件使用传统的-one-line-style路径为-etcaptsourceslist但是对于容器镜像从-debian-12-开始其软件源配置文件变更为-deb822-格式路径为-etcaptsourceslistddebiansources参考" class="rp-header-anchor rp-link" aria-hidden="true">#</a>大部分 Debian 的软件源配置文件使用传统的 One-Line-Style，路径为 <code>/etc/apt/sources.list</code>；但是对于容器镜像，从 Debian 12 开始，其软件源配置文件变更为 <code>DEB822</code> 格式，路径为 <code>/etc/apt/sources.list.d/debian.sources</code>(<a href="https://mirrors.help/debian/" target="_blank" rel="noopener noreferrer" class="rp-link">参考</a>)</h3>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">Types:</span><span style="color:var(--shiki-token-string)"> deb</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">URIs:</span><span style="color:var(--shiki-token-string)"> https://deb.debian.org/debian</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">Suites:</span><span style="color:var(--shiki-token-string)"> bookworm</span><span style="color:var(--shiki-token-string)"> bookworm-updates</span><span style="color:var(--shiki-token-string)"> bookworm-backports</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">Components:</span><span style="color:var(--shiki-token-string)"> main</span><span style="color:var(--shiki-token-string)"> contrib</span><span style="color:var(--shiki-token-string)"> non-free</span><span style="color:var(--shiki-token-string)"> non-free-firmware</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">Signed-By:</span><span style="color:var(--shiki-token-string)"> /usr/share/keyrings/debian-archive-keyring.gpg</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">Types:</span><span style="color:var(--shiki-token-string)"> deb</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">URIs:</span><span style="color:var(--shiki-token-string)"> http://security.debian.org/debian-security</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">Suites:</span><span style="color:var(--shiki-token-string)"> bookworm-security</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">Components:</span><span style="color:var(--shiki-token-string)"> main</span><span style="color:var(--shiki-token-string)"> contrib</span><span style="color:var(--shiki-token-string)"> non-free</span><span style="color:var(--shiki-token-string)"> non-free-firmware</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">Signed-By:</span><span style="color:var(--shiki-token-string)"> /usr/share/keyrings/debian-archive-keyring.gpg</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p><em>国内服务器可以替换 <code>deb.debian.org</code> 和 <code>security.debian.org</code> 为 <code>mirrors.tuna.tsinghua.edu.cn</code></em></p>
<p>然后我们再次执行更新系统:</p>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> update</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> upgrade</span><span style="color:var(--shiki-token-string)"> -y</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> dist-upgrade</span><span style="color:var(--shiki-token-string)"> -y</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="更新后"><a href="#更新后" class="rp-header-anchor rp-link" aria-hidden="true">#</a>更新后</h2>
<h3 class="rp-toc-include" id="更新后删除不必要的软件和依赖"><a href="#更新后删除不必要的软件和依赖" class="rp-header-anchor rp-link" aria-hidden="true">#</a>更新后删除不必要的软件和依赖</h3>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>apt autoclean</span></span>
<span class="line"><span>apt autoremove -y</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="然后我们使用-reboot-命令重启系统耐心等待后查看最新的系统版本"><a href="#然后我们使用-reboot-命令重启系统耐心等待后查看最新的系统版本" class="rp-header-anchor rp-link" aria-hidden="true">#</a>然后我们使用 <code>reboot</code> 命令重启系统，耐心等待后，查看最新的系统版本</h3>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>root@debian ~ # cat /etc/debian_version </span></span>
<span class="line"><span>12.5</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>root@debian ~ # lsb_release -a</span></span>
<span class="line"><span>No LSB modules are available.</span></span>
<span class="line"><span>Distributor ID:	Debian</span></span>
<span class="line"><span>Description:	Debian GNU/Linux 12 (bookworm)</span></span>
<span class="line"><span>Release:	12</span></span>
<span class="line"><span>Codename:	bookworm</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>root@debian ~ # uname -a</span></span>
<span class="line"><span>Linux debian 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>这时我们就已经更新到了最新的 Debian 12 Bookworm 和内核了。</p>
<p>Debian 11 Bullseye 升级 Debian 12 Bookworm</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【vps测评】狐帝云]]></title>
            <link>https://www.tteam.icu/blog/vps/【vps测评】狐帝云</link>
            <guid isPermaLink="false">/blog/vps/【vps测评】狐帝云</guid>
            <pubDate>Wed, 07 May 2025 20:31:39 GMT</pubDate>
            <description><![CDATA[本文对狐帝云VPS进行了详细测评，包括服务器基础信息、CPU和内存性能、磁盘读写速度、流媒体解锁情况、IP质量检测、邮件端口检测、三网回程测试等方面。狐帝云在五一假期推出了香港19区8核8G的永久套餐，价格为510元，适合作为编译节点等用途。]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="狐帝云"><a href="#狐帝云" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://www.szhdy.com/aff/WVTPJNVJ" target="_blank" rel="noopener noreferrer" class="rp-link">狐帝云</a></h2>
<h3 class="rp-toc-include" id="简介"><a href="#简介" class="rp-header-anchor rp-link" aria-hidden="true">#</a>简介</h3>
<p>狐帝云在五一假期推出了香港19区8核8G的永久套餐，价格只需510元。</p>
<p>我直接入手了一台，用作我的Jenkins agent编译节点。</p>
<p>以下是详细的性能评测:</p>
<h3 class="rp-toc-include" id="测评"><a href="#测评" class="rp-header-anchor rp-link" aria-hidden="true">#</a>测评</h3>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>---------------------基础信息查询--感谢所有开源项目---------------------</span></span>
<span class="line"><span> CPU 型号          : AMD EPYC 7K62 48-Core Processor</span></span>
<span class="line"><span> CPU 核心数        : 8</span></span>
<span class="line"><span> CPU 频率          : 2595.124 MHz</span></span>
<span class="line"><span> CPU 缓存          : L1: 512.00 KB / L2: 4.00 MB / L3: 192.00 MB</span></span>
<span class="line"><span> AES-NI指令集      : ✔ Enabled</span></span>
<span class="line"><span> VM-x/AMD-V支持    : ✔ Enabled</span></span>
<span class="line"><span> 内存              : 794.33 MiB / 7.77 GiB</span></span>
<span class="line"><span> Swap              : [ no swap partition or swap file detected ]</span></span>
<span class="line"><span> 硬盘空间          : 9.42 GiB / 39.21 GiB</span></span>
<span class="line"><span> 启动盘路径        : /dev/vda1</span></span>
<span class="line"><span> 系统在线时间      : 0 days, 7 hour 32 min</span></span>
<span class="line"><span> 负载              : 0.07, 0.55, 0.48</span></span>
<span class="line"><span> 系统              : Debian GNU/Linux 11 (bullseye) (x86_64)</span></span>
<span class="line"><span> 架构              : x86_64 (64 Bit)</span></span>
<span class="line"><span> 内核              : 5.10.0-14-cloud-amd64</span></span>
<span class="line"><span> TCP加速方式       : cubic</span></span>
<span class="line"><span> 虚拟化架构        : KVM</span></span>
<span class="line"><span> NAT类型           : Full Cone</span></span>
<span class="line"><span> IPV4 ASN          : AS137899 I LAYER LIMITED</span></span>
<span class="line"><span> IPV4 位置         : Tseung Kwan O / Sai Kung / HK</span></span>
<span class="line"><span>----------------------CPU测试--通过sysbench测试-------------------------</span></span>
<span class="line"><span> -&gt; CPU 测试中 (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 1 线程测试(单核)得分: 		1615 Scores</span></span>
<span class="line"><span> 8 线程测试(多核)得分: 		12741 Scores</span></span>
<span class="line"><span>---------------------内存测试--感谢lemonbench开源-----------------------</span></span>
<span class="line"><span> -&gt; 内存测试 Test (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 单线程读测试:		43321.67 MB/s</span></span>
<span class="line"><span> 单线程写测试:		19311.49 MB/s</span></span>
<span class="line"><span>------------------磁盘dd读写测试--感谢lemonbench开源--------------------</span></span>
<span class="line"><span> -&gt; 磁盘IO测试中 (4K Block/1M Block, Direct Mode)</span></span>
<span class="line"><span> 测试操作		写速度					读速度</span></span>
<span class="line"><span> 100MB-4K Block		64.0 MB/s (15.62 IOPS, 1.64s)		76.9 MB/s (18763 IOPS, 1.36s)</span></span>
<span class="line"><span> 1GB-1M Block		814 MB/s (776 IOPS, 1.29s)		2.7 GB/s (2539 IOPS, 0.39s)</span></span>
<span class="line"><span>---------------------磁盘fio读写测试--感谢yabs开源----------------------</span></span>
<span class="line"><span>Block Size | 4k            (IOPS) | 64k           (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 213.19 MB/s  (53.2k) | 181.34 MB/s   (2.8k)</span></span>
<span class="line"><span>Write      | 213.75 MB/s  (53.4k) | 182.30 MB/s   (2.8k)</span></span>
<span class="line"><span>Total      | 426.94 MB/s (106.7k) | 363.64 MB/s   (5.6k)</span></span>
<span class="line"><span>           |                      |                     </span></span>
<span class="line"><span>Block Size | 512k          (IOPS) | 1m            (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 500.46 MB/s    (977) | 784.52 MB/s    (766)</span></span>
<span class="line"><span>Write      | 527.05 MB/s   (1.0k) | 836.77 MB/s    (817)</span></span>
<span class="line"><span>Total      | 1.02 GB/s     (2.0k) | 1.62 GB/s     (1.5k)</span></span>
<span class="line"><span>------------流媒体解锁--基于oneclickvirt/CommonMediaTests开源-----------</span></span>
<span class="line"><span>以下测试的解锁地区是准确的，但是不是完整解锁的判断可能有误，这方面仅作参考使用</span></span>
<span class="line"><span>----------------Netflix-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>您的出口IP完整解锁Netflix，支持非自制剧的观看</span></span>
<span class="line"><span>NF所识别的IP地域信息: 美国</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>您的网络可能没有正常配置IPv6，或者没有IPv6网络接入</span></span>
<span class="line"><span>----------------Youtube-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>连接方式: Youtube Video Server</span></span>
<span class="line"><span>视频缓存节点地域: 日本 东京(NRT20S05)</span></span>
<span class="line"><span>Youtube识别地域: 中国香港(HK)</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>Youtube在您的出口IP所在的国家不提供服务</span></span>
<span class="line"><span>---------------DisneyPlus---------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>当前IPv4出口所在地区即将开通DisneyPlus</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>DisneyPlus在您的出口IP所在的国家不提供服务</span></span>
<span class="line"><span>解锁Netflix，Youtube，DisneyPlus上面和下面进行比较，不同之处自行判断</span></span>
<span class="line"><span>----------------流媒体解锁--感谢RegionRestrictionCheck开源--------------</span></span>
<span class="line"><span> 以下为IPV4网络测试，若无IPV4网络则无输出</span></span>
<span class="line"><span>============[ Multination ]============</span></span>
<span class="line"><span> Dazn:					Yes (Region: US)</span></span>
<span class="line"><span> Disney+:				No</span></span>
<span class="line"><span> Netflix:				Yes (Region: US)</span></span>
<span class="line"><span> YouTube Premium:			Yes (Region: HK)</span></span>
<span class="line"><span> Amazon Prime Video:			Yes (Region: US)</span></span>
<span class="line"><span> TVBAnywhere+:				Yes</span></span>
<span class="line"><span> Spotify Registration:			No</span></span>
<span class="line"><span> OneTrust Region:			US [California]</span></span>
<span class="line"><span> iQyi Oversea Region:			US</span></span>
<span class="line"><span> Bing Region:				US</span></span>
<span class="line"><span> Apple Region:				US</span></span>
<span class="line"><span> YouTube CDN:				Tokyo</span></span>
<span class="line"><span> Netflix Preferred CDN:			Hong Kong</span></span>
<span class="line"><span> ChatGPT:				Yes</span></span>
<span class="line"><span> Google Gemini:				No</span></span>
<span class="line"><span> Claude:				No</span></span>
<span class="line"><span> Wikipedia Editability:			Yes</span></span>
<span class="line"><span> Google Play Store:			Hong Kong </span></span>
<span class="line"><span> Google Search CAPTCHA Free:		Yes</span></span>
<span class="line"><span> Steam Currency:			USD</span></span>
<span class="line"><span> ---Forum---</span></span>
<span class="line"><span> Reddit:				Yes</span></span>
<span class="line"><span> ---Game---</span></span>
<span class="line"><span> SD Gundam G Generation Eternal:	Yes</span></span>
<span class="line"><span>=======================================</span></span>
<span class="line"><span> 以下为IPV6网络测试，若无IPV6网络则无输出</span></span>
<span class="line"><span>---------------TikTok解锁--感谢lmc999的源脚本及fscarmen PR--------------</span></span>
<span class="line"><span> Tiktok Region:		【US】</span></span>
<span class="line"><span>-------------IP质量检测--基于oneclickvirt/securityCheck使用-------------</span></span>
<span class="line"><span>数据仅作参考，不代表100%准确，如果和实际情况不一致请手动查询多个数据库比对</span></span>
<span class="line"><span>以下为各数据库编号，输出结果后将自带数据库来源对应的编号</span></span>
<span class="line"><span>ipinfo数据库  [0] | scamalytics数据库 [1] | virustotal数据库   [2] | abuseipdb数据库   [3] | ip2location数据库    [4]</span></span>
<span class="line"><span>ip-api数据库  [5] | ipwhois数据库     [6] | ipregistry数据库   [7] | ipdata数据库      [8] | db-ip数据库          [9]</span></span>
<span class="line"><span>ipapiis数据库 [A] | ipapicom数据库    [B] | bigdatacloud数据库 [C] | cheervision数据库 [D] | ipqualityscore数据库 [E]</span></span>
<span class="line"><span>IPV4:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>声誉(越高越好): 0 [2] </span></span>
<span class="line"><span>信任得分(越高越好): 45 [8] </span></span>
<span class="line"><span>VPN得分(越低越好): 0 [8] </span></span>
<span class="line"><span>代理得分(越低越好): 99 [8] </span></span>
<span class="line"><span>社区投票-无害: 0 [2] </span></span>
<span class="line"><span>社区投票-恶意: 0 [2] </span></span>
<span class="line"><span>威胁得分(越低越好): 67 [8] </span></span>
<span class="line"><span>欺诈得分(越低越好): 0 [1] 93 [E]</span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3] </span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0008 (Low) [A] </span></span>
<span class="line"><span>公司滥用得分(越低越好): 0 (Very Low) [A] </span></span>
<span class="line"><span>威胁级别: low [9] </span></span>
<span class="line"><span>黑名单记录统计:(有多少黑名单网站有记录):</span></span>
<span class="line"><span>无害记录数: 0 [2]  恶意记录数: 0 [2]  可疑记录数: 0 [2]  无记录数: 94 [2]  </span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: hosting [0 7 A] corporate [9] DataCenter/WebHosting/Transit [3] unknown [C]</span></span>
<span class="line"><span>公司类型: hosting [0 7] business [A]</span></span>
<span class="line"><span>是否云提供商: Yes [7 D] </span></span>
<span class="line"><span>是否数据中心: No [5 6 8 C] Yes [0 1 A]</span></span>
<span class="line"><span>是否移动设备: No [5 A C] Yes [E]</span></span>
<span class="line"><span>是否代理: No [0 1 4 5 6 7 8 9 A C D] Yes [E]</span></span>
<span class="line"><span>是否VPN: Yes [E] No [0 1 6 7 A C D]</span></span>
<span class="line"><span>是否TorExit: No [1 7 D] </span></span>
<span class="line"><span>是否Tor出口: No [1 7 D] </span></span>
<span class="line"><span>是否网络爬虫: No [9 A E] </span></span>
<span class="line"><span>是否匿名: No [1 6 7 8 D] </span></span>
<span class="line"><span>是否攻击者: No [7 8 D] </span></span>
<span class="line"><span>是否滥用者: No [7 8 A C D] Yes [E]</span></span>
<span class="line"><span>是否威胁: No [7 8 C D] </span></span>
<span class="line"><span>是否中继: No [0 7 8 C D] </span></span>
<span class="line"><span>是否Bogon: No [7 8 A C D] </span></span>
<span class="line"><span>是否机器人: No [E] </span></span>
<span class="line"><span>DNS-黑名单: 313(Total_Check) 0(Clean) 6(Blacklisted) 24(Other) </span></span>
<span class="line"><span>Google搜索可行性: NO</span></span>
<span class="line"><span>-------------邮件端口检测--基于oneclickvirt/portchecker开源-------------</span></span>
<span class="line"><span>Platform  SMTP  SMTPS POP3  POP3S IMAP  IMAPS</span></span>
<span class="line"><span>LocalPort ✔     ✔     ✔     ✔     ✔     ✔    </span></span>
<span class="line"><span>QQ        ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>163       ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sohu      ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yandex    ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Gmail     ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Outlook   ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Office365 ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yahoo     ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MailCOM   ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>MailRU    ✔     ✔     ✘     ✘     ✔     ✘    </span></span>
<span class="line"><span>AOL       ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>GMX       ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sina      ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Apple     ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>FastMail  ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ProtonMail✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MXRoute   ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Namecrane ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>XYAMail   ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ZohoMail  ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Inbox_eu  ✔     ✔     ✔     ✘     ✘     ✘    </span></span>
<span class="line"><span>Free_fr   ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>----------------三网回程--基于oneclickvirt/backtrace开源----------------</span></span>
<span class="line"><span>北京电信v4 219.141.140.10           电信CN2GIA [精品线路] 电信CTGNET [精品线路] </span></span>
<span class="line"><span>北京联通v4 202.106.195.68           联通4837   [普通线路] </span></span>
<span class="line"><span>北京移动v4 221.179.155.161 检测不到回程路由节点的IPV4地址</span></span>
<span class="line"><span>上海电信v4 202.96.209.133           电信CN2GIA [精品线路] 电信CTGNET [精品线路] </span></span>
<span class="line"><span>上海联通v4 210.22.97.1              联通4837   [普通线路] </span></span>
<span class="line"><span>上海移动v4 211.136.112.200          移动CMI    [普通线路] </span></span>
<span class="line"><span>广州电信v4 58.60.188.222            电信CN2GIA [精品线路] 电信CTGNET [精品线路] </span></span>
<span class="line"><span>广州联通v4 210.21.196.6             联通4837   [普通线路] </span></span>
<span class="line"><span>广州移动v4 120.196.165.24           移动CMI    [普通线路] </span></span>
<span class="line"><span>成都电信v4 61.139.2.69              电信CN2GIA [精品线路] 电信CTGNET [精品线路] </span></span>
<span class="line"><span>成都联通v4 119.6.6.6                联通4837   [普通线路] </span></span>
<span class="line"><span>成都移动v4 211.137.96.205           移动CMI    [普通线路] </span></span>
<span class="line"><span>准确线路自行查看详细路由，本测试结果仅作参考</span></span>
<span class="line"><span>同一目标地址多个线路时，可能检测已越过汇聚层，除了第一个线路外，后续信息可能无效</span></span>
<span class="line"><span>---------------------回程路由--感谢fscarmen开源及PR---------------------</span></span>
<span class="line"><span>依次测试电信/联通/移动经过的地区及线路，核心程序来自nexttrace，请知悉!</span></span>
<span class="line"><span>广州电信 58.60.188.222</span></span>
<span class="line"><span>3.26 ms 	AS137899 中国 香港 Cloudinnovation</span></span>
<span class="line"><span>3.28 ms 	* RFC1918</span></span>
<span class="line"><span>4.57 ms 	* 中国 香港 电信/CTGNet</span></span>
<span class="line"><span>4.93 ms 	* 中国 香港</span></span>
<span class="line"><span>13.36 ms 	* [CN2-BackBone] 中国 广东 广州 chinatelecom.cn 电信</span></span>
<span class="line"><span>17.25 ms 	* [CN2-BackBone] 中国 广东 广州 chinatelecom.cn 电信</span></span>
<span class="line"><span>15.78 ms 	AS4134 中国 广东 深圳 福田区 www.chinatelecom.com.cn 电信</span></span>
<span class="line"><span>广州联通 210.21.196.6</span></span>
<span class="line"><span>2.03 ms 	AS137899 中国 香港 Cloudinnovation</span></span>
<span class="line"><span>2.70 ms 	* RFC1918</span></span>
<span class="line"><span>4.34 ms 	AS10099 [CUG-BACKBONE] 中国 香港 chinaunicomglobal.com 联通</span></span>
<span class="line"><span>16.11 ms 	AS10099 [CUG-BACKBONE] 中国 香港 chinaunicomglobal.com 联通</span></span>
<span class="line"><span>9.49 ms 	AS4837 [CU169-BACKBONE] 中国 广东 广州 chinaunicom.cn</span></span>
<span class="line"><span>8.91 ms 	AS4837 [CU169-BACKBONE] 中国 广东 广州 chinaunicom.cn 联通</span></span>
<span class="line"><span>109.72 ms 	AS4837 [CU169-BACKBONE] 中国 广东 广州 chinaunicom.cn 联通</span></span>
<span class="line"><span>14.53 ms 	AS17816 [UNICOM-GD] 中国 广东 深圳 chinaunicom.cn 联通</span></span>
<span class="line"><span>16.24 ms 	AS17623 [APNIC-AP] 中国 广东 深圳 chinaunicom.cn 联通</span></span>
<span class="line"><span>14.06 ms 	AS17623 中国 广东 深圳 宝安区 chinaunicom.cn 联通</span></span>
<span class="line"><span>广州移动 120.196.165.24</span></span>
<span class="line"><span>2.27 ms 	AS137899 中国 香港 Cloudinnovation</span></span>
<span class="line"><span>3.68 ms 	* RFC1918</span></span>
<span class="line"><span>9.05 ms 	AS58453 [CMI-INT] 中国 广东 广州 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>8.67 ms 	AS9808 [CMNET] 中国 广东 广州 X-I chinamobileltd.com 移动</span></span>
<span class="line"><span>8.36 ms 	AS9808 [CMNET] 中国 广东 广州 I-C chinamobileltd.com 移动</span></span>
<span class="line"><span>10.39 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>27.96 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>13.43 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>11.33 ms 	AS56040 [APNIC-AP] 中国 广东 深圳 gd.10086.cn 移动</span></span>
<span class="line"><span>--------------------自动更新测速节点列表--本脚本原创--------------------</span></span>
<span class="line"><span>位置		 上传速度	 下载速度	 延迟</span></span>
<span class="line"><span>Speedtest.net	 18.65Mbps	 18.79Mbps	 142.99153.00153.00ms	</span></span>
<span class="line"><span>中国香港	 18.61Mbps	 19.06Mbps	 4.799.009.00ms	</span></span>
<span class="line"><span>新加坡		 18.38Mbps	 18.63Mbps	 58.8459.0060.00ms	</span></span>
<span class="line"><span>电信浙江	 19.31Mbps	 18.90Mbps	 38.95174.0080.00ms	</span></span>
<span class="line"><span>电信浙江	 19.64Mbps	 19.06Mbps	 39.5142.00188.00ms	</span></span>
<span class="line"><span>移动杭州5G	 17.17Mbps	 19.07Mbps	 36.0287.0098.00ms	</span></span>
<span class="line"><span>移动Chengdu	 17.29Mbps	 19.02Mbps	 61.2464.0063.00ms	</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span>
<span class="line"><span> 总共花费      : 7 分 40 秒</span></span>
<span class="line"><span> 时间          : Thu May  1 21:09:01 CST 2025</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[周记 2025 Week 14]]></title>
            <link>https://www.tteam.icu/blog/record/weekly/2025/W14</link>
            <guid isPermaLink="false">/blog/record/weekly/2025/W14</guid>
            <pubDate>Thu, 03 Apr 2025 22:51:12 GMT</pubDate>
            <description><![CDATA[2025年第14周的工作总结，包括开发资源分享、运维工作成果和个人近期经历与感受]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2025-week-14"><a href="#2025-week-14" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2025 Week 14<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<p>发现的有用资源:</p>
<ul>
<li><a href="https://github.com/JOYCEQL/magic-resume" target="_blank" rel="noopener noreferrer" class="rp-link">magic-resume</a>: 简历生成网站(我目前最新的简历就是用这个制作的)</li>
<li><a href="https://github.com/ourongxing/newsnow" target="_blank" rel="noopener noreferrer" class="rp-link">newsnow</a>: 优雅阅读实时热门新闻的应用</li>
<li><a href="https://github.com/pmndrs/zustand" target="_blank" rel="noopener noreferrer" class="rp-link">zustand</a>: 简单易用的<code>React</code>全局状态管理库</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul>
<li>编译了<a href="https://github.com/ttdockerfile/openresty-monitor-ubuntu" target="_blank" rel="noopener noreferrer" class="rp-link">openresty-monitor-ubuntu</a>镜像，将<a href="https://github.com/vozlt/nginx-module-vts" target="_blank" rel="noopener noreferrer" class="rp-link">vts</a>、<code>nginx-lua-prometheus</code>和<a href="https://github.com/ADD-SP/ngx_waf" target="_blank" rel="noopener noreferrer" class="rp-link">ngx_waf</a>集成到最新版<code>OpenResty</code>中</li>
</ul>
<h2 class="rp-toc-include" id="个人感想"><a href="#个人感想" class="rp-header-anchor rp-link" aria-hidden="true">#</a>个人感想</h2>
<ul>
<li>周报停更了差不多三个月，主要是因为自己比较懒散</li>
<li>简单回顾一下这几个月的经历:
<ul>
<li>春节期间进行了7天的特种兵式旅游，回家后患上了严重感冒</li>
<li>在去看<code>yousa</code>演唱会的前一天，因为咳嗽严重，下班后去急诊打了针，效果很好</li>
<li>下班后休息了一晚，凌晨4点起床赶飞机去成都看演唱会，第二天下午又匆匆返回</li>
<li>回来后持续加班，感觉对生活失去了兴趣</li>
<li>曾向主管提出离职想法，经过长谈后决定留下</li>
<li>反思自己的职业选择: 我确实喜欢运维这个行业和岗位，但反对无休止的加班和在家无偿工作到凌晨，第二天还要为了全勤按时上班</li>
<li>我其实很容易满足，只要有朝九晚六的工作，目前的工资对我来说已经足够</li>
<li>但由于从小的自卑感、当前就业大环境不佳，以及父母不支持我跳槽，我仍然坚守在当前岗位，但已经有些力不从心</li>
<li>这也是我长时间未写周报的原因之一，下班后只能躺在床上刷抖音，甚至无法集中精力看完内容</li>
<li>我原本是一个喜欢及时回复消息的人，但工作让我变成了看到消息也要等会儿再回复的状态</li>
</ul>
</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[关于我的homeserver]]></title>
            <link>https://www.tteam.icu/blog/other/关于我的homeserver</link>
            <guid isPermaLink="false">/blog/other/关于我的homeserver</guid>
            <pubDate>Fri, 14 Mar 2025 23:56:12 GMT</pubDate>
            <description><![CDATA[介绍作者的家庭服务器配置，包括硬件设备、系统选择、服务部署和网络架构]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="关于我的家庭服务器"><a href="#关于我的家庭服务器" class="rp-header-anchor rp-link" aria-hidden="true">#</a>关于我的家庭服务器<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>先大致介绍一下我家里的家庭服务器 setup，我家里有两台机器: 一台是绿联云<code>DXP4800</code>作为<code>NAS</code>存储设备，另一台是零刻<code>EP12 pro</code>作为计算服务器</p>
<h2 class="rp-toc-include" id="系统配置"><a href="#系统配置" class="rp-header-anchor rp-link" aria-hidden="true">#</a>系统配置</h2>
<p>零刻<code>EP12 pro</code>安装了<code>Proxmox VE</code>系统作为计算节点运行各种服务</p>
<p><img src="https://img.tteam.icu/i/2025/03/14/sacs7y-3.webp" alt="PVE截图"/></p>
<p>绿联云<code>DXP4800</code>作为存储节点，主要用于数据备份</p>
<p><img src="https://img.tteam.icu/i/2025/03/14/t0gy0g-3.webp" alt="NAS截图"/></p>
<h2 class="rp-toc-include" id="服务部署"><a href="#服务部署" class="rp-header-anchor rp-link" aria-hidden="true">#</a>服务部署</h2>
<p>由于之前使用过相册服务，觉得<a href="https://mtmt.tech/" target="_blank" rel="noopener noreferrer" class="rp-link">MT Photos</a>非常好用，所以直接购买了永久授权，并将服务部署在<code>NAS</code>上</p>
<p>在<code>PVE</code>的<code>Linux</code>虚拟机中安装了<code>MT</code>的AI服务、代理服务、自动化服务等</p>
<p><img src="https://img.tteam.icu/i/2025/03/15/nm7rzb-3.webp" alt="服务器截图1"/></p>
<p><img src="https://img.tteam.icu/i/2025/03/15/nmd127-3.webp" alt="服务器截图2"/></p>
<p>在所有的<code>Linux</code>服务器上都安装了<a href="https://github.com/prometheus/node_exporter" target="_blank" rel="noopener noreferrer" class="rp-link">node_exporter</a>来监控服务器状态</p>
<h2 class="rp-toc-include" id="网络架构"><a href="#网络架构" class="rp-header-anchor rp-link" aria-hidden="true">#</a>网络架构</h2>
<p>这部分相对详细，因为这套网络方案可以供大家参考</p>
<h3 class="rp-toc-include" id="网络代理"><a href="#网络代理" class="rp-header-anchor rp-link" aria-hidden="true">#</a>网络代理</h3>
<p>作为程序员，日常访问<code>GitHub</code>等网站时需要流畅的网络体验，因此代理服务必不可少</p>
<p>我使用的代理基于<a href="https://github.com/go-gost/gost" target="_blank" rel="noopener noreferrer" class="rp-link">gost</a>，具体使用方法可参考<a href="https://www.tteam.icu/ops/vpn/gost.html" target="_blank" rel="noopener noreferrer" class="rp-link">这里</a></p>
<p>这套方案经过几年的使用验证，稳定性较好且未被封禁，当然其局限性是需要在局域网内有专门的机器用于解密</p>
<h3 class="rp-toc-include" id="外部访问"><a href="#外部访问" class="rp-header-anchor rp-link" aria-hidden="true">#</a>外部访问</h3>
<p>从我的<a href="https://www.tteam.icu/urls#cloud-servers" target="_blank" rel="noopener noreferrer" class="rp-link">云服务器</a>中选择一台<code>VPS</code>作为中转</p>
<p>首先在<code>VPS</code>上部署<code>Nginx</code>，将<code>*.xxx.com</code>域名反向代理到本地的<code>20000</code>端口，然后使用<code>frp</code>将家里虚拟机的<code>80</code>端口穿透到这台<code>VPS</code>的<code>20000</code>端口</p>
<p>在家里的虚拟机中部署<code>Nginx</code>，将需要外部访问的服务反向代理到<code>80</code>端口</p>
<p>后续新增服务时，只需在家庭虚拟机中添加相应的<code>Nginx</code>配置即可</p>
<p>网络架构示意图:</p>
<p><img src="https://img.tteam.icu/i/2025/03/15/o2dwkz-3.webp" alt="网络架构示意图"/></p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【vps测评】搬瓦工]]></title>
            <link>https://www.tteam.icu/blog/vps/【vps测评】搬瓦工</link>
            <guid isPermaLink="false">/blog/vps/【vps测评】搬瓦工</guid>
            <pubDate>Tue, 11 Mar 2025 10:31:39 GMT</pubDate>
            <description><![CDATA[本文对搬瓦工VPS进行了详细测评，包括服务器基础信息、CPU和内存性能、磁盘读写速度、流媒体解锁情况、IP质量检测、邮件端口检测、三网回程测试等方面。搬瓦工(BandwagonHost)隶属于加拿大IT7 Networks旗下，是国内最有名的VPS服务商之一，以CN2GIA等精品线路著称。]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="搬瓦工"><a href="#搬瓦工" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://bandwagonhost.com/aff.php?aff=54032" target="_blank" rel="noopener noreferrer" class="rp-link">搬瓦工</a></h2>
<h3 class="rp-toc-include" id="简介"><a href="#简介" class="rp-header-anchor rp-link" aria-hidden="true">#</a>简介</h3>
<p>搬瓦工隶属于加拿大IT7 Networks旗下，从2004年开始，IT7 Networks便开始提供虚拟主机、VPS、独立服务器等服务。搬瓦工的英文名为BandwagonHost，由于发音类似“搬瓦工”(BanWaGong)，于是国人喜欢亲切地将其称为搬瓦工。</p>
<p>搬瓦工是国内最有名的VPS服务商之一，以其优质的CN2GIA等精品线路而备受用户青睐。</p>
<h3 class="rp-toc-include" id="测评"><a href="#测评" class="rp-header-anchor rp-link" aria-hidden="true">#</a>测评</h3>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>---------------------基础信息查询--感谢所有开源项目---------------------</span></span>
<span class="line"><span> CPU 型号          : AMD EPYC-Genoa Processor</span></span>
<span class="line"><span> CPU 核心数        : 2</span></span>
<span class="line"><span> CPU 频率          : 2794.748 MHz</span></span>
<span class="line"><span> CPU 缓存          : L1: 64.00 KB / L2: 2.00 MB / L3: 32.00 MB</span></span>
<span class="line"><span> AES-NI指令集      : ✔ Enabled</span></span>
<span class="line"><span> VM-x/AMD-V支持    : ❌ Disabled</span></span>
<span class="line"><span> 内存              : 221.33 MiB / 2.00 GiB</span></span>
<span class="line"><span> Swap              : 0 KiB / 1024.00 MiB</span></span>
<span class="line"><span> 硬盘空间          : 2.67 GiB / 39.83 GiB</span></span>
<span class="line"><span> 启动盘路径        : /dev/sda2</span></span>
<span class="line"><span> 系统在线时间      : 0 days, 0 hour 7 min</span></span>
<span class="line"><span> 负载              : 0.77, 0.38, 0.18</span></span>
<span class="line"><span> 系统              : Debian GNU/Linux 12 (bookworm) (x86_64)</span></span>
<span class="line"><span> 架构              : x86_64 (64 Bit)</span></span>
<span class="line"><span> 内核              : 6.1.0-9-amd64</span></span>
<span class="line"><span> TCP加速方式       : bbr</span></span>
<span class="line"><span> 虚拟化架构        : KVM</span></span>
<span class="line"><span> NAT类型           : Full Cone</span></span>
<span class="line"><span> IPV4 ASN          : AS25820 IT7 Networks Inc</span></span>
<span class="line"><span> IPV4 位置         : Los Angeles / California / US</span></span>
<span class="line"><span>----------------------CPU测试--通过sysbench测试-------------------------</span></span>
<span class="line"><span> -&gt; CPU 测试中 (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 1 线程测试(单核)得分:          1637 Scores</span></span>
<span class="line"><span> 2 线程测试(多核)得分:          3239 Scores</span></span>
<span class="line"><span>---------------------内存测试--感谢lemonbench开源-----------------------</span></span>
<span class="line"><span> -&gt; 内存测试 Test (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 单线程读测试:          43780.71 MB/s</span></span>
<span class="line"><span> 单线程写测试:          19797.49 MB/s</span></span>
<span class="line"><span>------------------磁盘dd读写测试--感谢lemonbench开源--------------------</span></span>
<span class="line"><span> -&gt; 磁盘IO测试中 (4K Block/1M Block, Direct Mode)</span></span>
<span class="line"><span> 测试操作               写速度                                  读速度</span></span>
<span class="line"><span> 100MB-4K Block         22.6 MB/s (5528 IOPS, 4.63s)            25.1 MB/s (6136 IOPS, 4.17s)</span></span>
<span class="line"><span> 1GB-1M Block           1.4 GB/s (1352 IOPS, 0.74s)             2.4 GB/s (2249 IOPS, 0.44s)</span></span>
<span class="line"><span>---------------------磁盘fio读写测试--感谢yabs开源----------------------</span></span>
<span class="line"><span>Block Size | 4k            (IOPS) | 64k           (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 167.35 MB/s  (41.8k) | 1.12 GB/s    (17.5k)</span></span>
<span class="line"><span>Write      | 167.79 MB/s  (41.9k) | 1.12 GB/s    (17.6k)</span></span>
<span class="line"><span>Total      | 335.14 MB/s  (83.7k) | 2.24 GB/s    (35.1k)</span></span>
<span class="line"><span>           |                      |                     </span></span>
<span class="line"><span>Block Size | 512k          (IOPS) | 1m            (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 1.44 GB/s     (2.8k) | 2.00 GB/s     (1.9k)</span></span>
<span class="line"><span>Write      | 1.52 GB/s     (2.9k) | 2.14 GB/s     (2.0k)</span></span>
<span class="line"><span>Total      | 2.97 GB/s     (5.8k) | 4.15 GB/s     (4.0k)</span></span>
<span class="line"><span>------------流媒体解锁--基于oneclickvirt/CommonMediaTests开源-----------</span></span>
<span class="line"><span>以下测试的解锁地区是准确的，但是不是完整解锁的判断可能有误，这方面仅作参考使用</span></span>
<span class="line"><span>----------------Netflix-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>您的出口IP可以使用Netflix，但仅可看Netflix自制剧</span></span>
<span class="line"><span>NF所识别的IP地域信息: 美国</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>您的网络可能没有正常配置IPv6，或者没有IPv6网络接入</span></span>
<span class="line"><span>----------------Youtube-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>连接方式: Youtube Video Server</span></span>
<span class="line"><span>视频缓存节点地域: 美国  洛杉机(LAX31S13)</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>Youtube在您的出口IP所在的国家不提供服务</span></span>
<span class="line"><span>---------------DisneyPlus---------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>当前IPv4出口所在地区即将开通DisneyPlus</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>DisneyPlus在您的出口IP所在的国家不提供服务</span></span>
<span class="line"><span>解锁Netflix，Youtube，DisneyPlus上面和下面进行比较，不同之处自行判断</span></span>
<span class="line"><span>----------------流媒体解锁--感谢RegionRestrictionCheck开源--------------</span></span>
<span class="line"><span> 以下为IPV4网络测试，若无IPV4网络则无输出</span></span>
<span class="line"><span>============[ Multination ]============</span></span>
<span class="line"><span> Dazn:                                  Failed (Error: )</span></span>
<span class="line"><span> Disney+:                               No (IP Banned By Disney+ 1)</span></span>
<span class="line"><span> Netflix:                               Originals Only</span></span>
<span class="line"><span> YouTube Premium:                       Yes (Region: US)</span></span>
<span class="line"><span> Amazon Prime Video:                    Yes (Region: US)</span></span>
<span class="line"><span> TVBAnywhere+:                          Yes</span></span>
<span class="line"><span> Spotify Registration:                  No</span></span>
<span class="line"><span> OneTrust Region:                       US [California]</span></span>
<span class="line"><span> iQyi Oversea Region:                   US</span></span>
<span class="line"><span> Bing Region:                           US (Risky)</span></span>
<span class="line"><span> Apple Region:                          US</span></span>
<span class="line"><span> YouTube CDN:                           Los Angeles, CA</span></span>
<span class="line"><span> Netflix Preferred CDN:                 Los Angeles, CA</span></span>
<span class="line"><span> ChatGPT:                               Yes</span></span>
<span class="line"><span> Google Gemini:                         Yes (Region: USA)</span></span>
<span class="line"><span> Claude:                                Yes</span></span>
<span class="line"><span> Wikipedia Editability:                 No</span></span>
<span class="line"><span> Google Play Store:                     United States </span></span>
<span class="line"><span> Google Search CAPTCHA Free:            Yes</span></span>
<span class="line"><span> Steam Currency:                        USD</span></span>
<span class="line"><span> ---Forum---</span></span>
<span class="line"><span> Reddit:                                No</span></span>
<span class="line"><span>=======================================</span></span>
<span class="line"><span> 以下为IPV6网络测试，若无IPV6网络则无输出</span></span>
<span class="line"><span>---------------TikTok解锁--感谢lmc999的源脚本及fscarmen PR--------------</span></span>
<span class="line"><span> Tiktok Region:         【US】</span></span>
<span class="line"><span>-------------IP质量检测--基于oneclickvirt/securityCheck使用-------------</span></span>
<span class="line"><span>数据仅作参考，不代表100%准确，如果和实际情况不一致请手动查询多个数据库比对</span></span>
<span class="line"><span>以下为各数据库编号，输出结果后将自带数据库来源对应的编号</span></span>
<span class="line"><span>ipinfo数据库  [0] | scamalytics数据库 [1] | virustotal数据库   [2] | abuseipdb数据库   [3] | ip2location数据库    [4]</span></span>
<span class="line"><span>ip-api数据库  [5] | ipwhois数据库     [6] | ipregistry数据库   [7] | ipdata数据库      [8] | db-ip数据库          [9]</span></span>
<span class="line"><span>ipapiis数据库 [A] | ipapicom数据库    [B] | bigdatacloud数据库 [C] | cheervision数据库 [D] | ipqualityscore数据库 [E]</span></span>
<span class="line"><span>IPV4:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>声誉(越高越好): 0 [2] </span></span>
<span class="line"><span>信任得分(越高越好): 0 [8] </span></span>
<span class="line"><span>VPN得分(越低越好): 100 [8]</span></span>
<span class="line"><span>代理得分(越低越好): 100 [8] </span></span>
<span class="line"><span>社区投票-无害: 0 [2] </span></span>
<span class="line"><span>社区投票-恶意: 0 [2] </span></span>
<span class="line"><span>威胁得分(越低越好): 100 [8] </span></span>
<span class="line"><span>欺诈得分(越低越好): 65 [E] 0 [1]</span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3] </span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0022 (Low) [A]</span></span>
<span class="line"><span>公司滥用得分(越低越好): 0.0034 (Low) [A] </span></span>
<span class="line"><span>威胁级别: low [9 B] </span></span>
<span class="line"><span>黑名单记录统计:(有多少黑名单网站有记录):</span></span>
<span class="line"><span>无害记录数: 0 [2]  恶意记录数: 0 [2]  可疑记录数: 0 [2]  无记录数: 94 [2]  </span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: unknown [C] hosting [0 7 9] DataCenter/WebHosting/Transit [3] business [8] isp [A]</span></span>
<span class="line"><span>公司类型: hosting [0] business [7 A]</span></span>
<span class="line"><span>是否云提供商: Yes [7 D] </span></span>
<span class="line"><span>是否数据中心: No [1 8 C] Yes [0 5 6 A]</span></span>
<span class="line"><span>是否移动设备: Yes [E] No [5 A C]</span></span>
<span class="line"><span>是否代理: Yes [5 E] No [0 1 4 6 7 8 9 A B C D]</span></span>
<span class="line"><span>是否VPN: No [0 1 C] Yes [6 7 A D E]</span></span>
<span class="line"><span>是否Tor: No [0 1 3 6 7 8 A B C D E] </span></span>
<span class="line"><span>是否Tor出口: No [1 7 D] </span></span>
<span class="line"><span>是否网络爬虫: No [9 A B E] </span></span>
<span class="line"><span>是否匿名: No [1 8] Yes [6 7 D]</span></span>
<span class="line"><span>是否攻击者: No [7 8 D] </span></span>
<span class="line"><span>是否滥用者: No [7 8 A C D E] </span></span>
<span class="line"><span>是否威胁: No [7 8 C D] </span></span>
<span class="line"><span>是否中继: No [0 7 8 C D] </span></span>
<span class="line"><span>是否Bogon: No [7 8 A C D] </span></span>
<span class="line"><span>是否机器人: No [E] </span></span>
<span class="line"><span>DNS-黑名单: 313(Total_Check) 0(Clean) 6(Blacklisted) 17(Other) </span></span>
<span class="line"><span>Google搜索可行性: NO</span></span>
<span class="line"><span>-------------邮件端口检测--基于oneclickvirt/portchecker开源-------------</span></span>
<span class="line"><span>Platform  SMTP  SMTPS POP3  POP3S IMAP  IMAPS</span></span>
<span class="line"><span>LocalPort ✔     ✔     ✔     ✔     ✔     ✔    </span></span>
<span class="line"><span>QQ        ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>163       ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sohu      ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yandex    ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Gmail     ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Outlook   ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Office365 ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yahoo     ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MailCOM   ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>MailRU    ✔     ✔     ✘     ✘     ✔     ✘    </span></span>
<span class="line"><span>AOL       ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>GMX       ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sina      ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Apple     ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>FastMail  ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ProtonMail✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MXRoute   ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Namecrane ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>XYAMail   ✘     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>ZohoMail  ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Inbox_eu  ✔     ✔     ✔     ✘     ✘     ✘    </span></span>
<span class="line"><span>Free_fr   ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>----------------三网回程--基于oneclickvirt/backtrace开源----------------</span></span>
<span class="line"><span>北京电信 219.141.140.10  电信CN2GIA [精品线路] </span></span>
<span class="line"><span>北京联通 202.106.195.68  电信CN2GIA [精品线路] 联通4837   [普通线路] </span></span>
<span class="line"><span>北京移动 221.179.155.161 移动CMIN2  [精品线路] </span></span>
<span class="line"><span>上海电信 202.96.209.133  电信CN2GIA [精品线路] </span></span>
<span class="line"><span>上海联通 210.22.97.1     电信CN2GIA [精品线路] 联通4837   [普通线路] </span></span>
<span class="line"><span>上海移动 211.136.112.200 移动CMIN2  [精品线路] </span></span>
<span class="line"><span>广州电信 58.60.188.222   电信CN2GIA [精品线路] </span></span>
<span class="line"><span>广州联通 210.21.196.6    电信CN2GIA [精品线路] 联通4837   [普通线路] </span></span>
<span class="line"><span>广州移动 120.196.165.24  移动CMIN2  [精品线路] </span></span>
<span class="line"><span>成都电信 61.139.2.69     电信CN2GIA [精品线路] </span></span>
<span class="line"><span>成都联通 119.6.6.6       电信CN2GIA [精品线路] 联通4837   [普通线路] </span></span>
<span class="line"><span>成都移动 211.137.96.205  移动CMIN2  [精品线路] </span></span>
<span class="line"><span>准确线路自行查看详细路由，本测试结果仅作参考</span></span>
<span class="line"><span>同一目标地址多个线路时，可能检测已越过汇聚层，除了第一个线路外，后续信息可能无效</span></span>
<span class="line"><span>---------------------回程路由--感谢fscarmen开源及PR---------------------</span></span>
<span class="line"><span>依次测试电信/联通/移动经过的地区及线路，核心程序来自nexttrace，请知悉!</span></span>
<span class="line"><span>广州电信 58.60.188.222</span></span>
<span class="line"><span>0.59 ms         AS25820 美国 加利福尼亚州 洛杉矶 it7.net</span></span>
<span class="line"><span>145.47 ms       * [CN2-BackBone] 中国 广东 广州 chinatelecom.cn 电信</span></span>
<span class="line"><span>151.55 ms       * [CN2-BackBone] 中国 广东 广州 chinatelecom.cn 电信</span></span>
<span class="line"><span>155.32 ms       * [CN2-BackBone] 中国 广东 广州 chinatelecom.cn 电信</span></span>
<span class="line"><span>156.50 ms       * [CN2-BackBone] 中国 广东 广州 chinatelecom.cn 电信</span></span>
<span class="line"><span>152.76 ms       AS4134 中国 广东 佛山市 www.chinatelecom.com.cn 电信</span></span>
<span class="line"><span>152.81 ms       AS4134 中国 广东 深圳 福田区 www.chinatelecom.com.cn 电信</span></span>
<span class="line"><span>广州联通 210.21.196.6</span></span>
<span class="line"><span>        </span></span>
<span class="line"><span>广州移动 120.196.165.24</span></span>
<span class="line"><span>0.66 ms         AS25820 美国 加利福尼亚州 洛杉矶 it7.net</span></span>
<span class="line"><span>126.80 ms       AS58807 [CMIN2-NET] 美国 加利福尼亚 洛杉矶 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>126.66 ms       AS58807 [CMIN2-NET] 中国 上海 cmi.chinamobile.com 移动</span></span>
<span class="line"><span>126.23 ms       AS9808 [CMNET] 中国 上海 chinamobileltd.com 移动</span></span>
<span class="line"><span>126.41 ms       AS9808 [CMNET] 中国 上海 chinamobileltd.com 移动</span></span>
<span class="line"><span>130.16 ms       AS9808 [CMNET] 中国 上海 chinamobileltd.com</span></span>
<span class="line"><span>148.92 ms       AS9808 [CMNET] 中国 北京 chinamobileltd.com 移动</span></span>
<span class="line"><span>171.19 ms       AS9808 [CMNET] 中国 北京 chinamobileltd.com 移动</span></span>
<span class="line"><span>174.37 ms       AS9808 [CMNET] 中国 北京 chinamobileltd.com 移动</span></span>
<span class="line"><span>173.77 ms       AS56040 [APNIC-AP] 中国 广东 深圳 gd.10086.cn 移动</span></span>
<span class="line"><span>--------------------自动更新测速节点列表--本脚本原创--------------------</span></span>
<span class="line"><span>位置             上传速度        下载速度        延迟     丢包率</span></span>
<span class="line"><span>Speedtest.net    8903.77 Mbps    8051.40 Mbps    0.59     0.0%</span></span>
<span class="line"><span>洛杉矶           940.88 Mbps     939.68 Mbps     1.18     0.0%</span></span>
<span class="line"><span>联通上海5G       1861.70 Mbps    2267.66 Mbps    175.51   0.0%</span></span>
<span class="line"><span>联通Beijing      576.01 Mbps     1172.36 Mbps    159.54   0.0%</span></span>
<span class="line"><span>电信Suzhou5G     1406.15 Mbps    2012.21 Mbps    136.38   NULL</span></span>
<span class="line"><span>电信浙江         634.16 Mbps     1850.29 Mbps    139.47   NULL</span></span>
<span class="line"><span>移动Chengdu      1360.22 Mbps    837.18 Mbps     169.17   NULL</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span>
<span class="line"><span> 总共花费      : 6 分 5 秒</span></span>
<span class="line"><span> 时间          : Mon Mar 10 19:39:47 PDT 2025</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[openresty使用ngx_waf]]></title>
            <link>https://www.tteam.icu/blog/ops/openresty使用ngx_waf</link>
            <guid isPermaLink="false">/blog/ops/openresty使用ngx_waf</guid>
            <pubDate>Wed, 26 Feb 2025 23:56:12 GMT</pubDate>
            <description><![CDATA[详细介绍如何在OpenResty中使用ngx_waf模块进行Web应用防护，包括功能特性、部署方式和监控配置]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="openresty使用ngx_waf"><a href="#openresty使用ngx_waf" class="rp-header-anchor rp-link" aria-hidden="true">#</a><code>OpenResty</code>使用<code>ngx_waf</code> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="介绍ngx_waf"><a href="#介绍ngx_waf" class="rp-header-anchor rp-link" aria-hidden="true">#</a>介绍<code>ngx_waf</code></h2>
<h3 class="rp-toc-include" id="为什么选择-ngx_waf"><a href="#为什么选择-ngx_waf" class="rp-header-anchor rp-link" aria-hidden="true">#</a>为什么选择 <a href="https://github.com/ADD-SP/ngx_waf" target="_blank" rel="noopener noreferrer" class="rp-link">ngx_waf</a></h3>
<ul>
<li>基础防护: 支持 IP 或 IP 网段的黑白名单、URI 黑白名单和请求体黑名单等。</li>
<li>使用简单: 配置文件和规则文件书写简洁，可读性强。</li>
<li>高性能: 采用高效的 IP 检查算法和缓存机制。</li>
<li>高级防护: 兼容 <a href="https://github.com/SpiderLabs/ModSecurity" target="_blank" rel="noopener noreferrer" class="rp-link">ModSecurity</a>，可使用<a href="https://owasp.org/www-project-modsecurity-core-rule-set/" target="_blank" rel="noopener noreferrer" class="rp-link">开放式网络应用安全项目(OWASP)® 的核心规则库</a>。</li>
<li>友好爬虫验证: 支持验证 Google、Bing、Baidu 和 Yandex 的爬虫并自动放行，避免错误拦截。</li>
<li>验证码支持: 集成 hCaptcha、reCAPTCHAv2 和 reCAPTCHAv3 三种验证码。</li>
</ul>
<h3 class="rp-toc-include" id="功能"><a href="#功能" class="rp-header-anchor rp-link" aria-hidden="true">#</a>功能</h3>
<ul>
<li>兼容 <a href="https://github.com/SpiderLabs/ModSecurity" target="_blank" rel="noopener noreferrer" class="rp-link">ModSecurity</a>。此功能仅限最新的 Current 版本。</li>
<li>SQL 注入防护(Powered By <a href="https://github.com/libinjection/libinjection" target="_blank" rel="noopener noreferrer" class="rp-link">libinjection</a>)。</li>
<li>XSS 攻击防护(Powered By <a href="https://github.com/libinjection/libinjection" target="_blank" rel="noopener noreferrer" class="rp-link">libinjection</a>)。</li>
<li>支持 IPV4 和 IPV6。</li>
<li>支持开启验证码(CAPTCHA)，支持 <a href="https://www.hcaptcha.com/" target="_blank" rel="noopener noreferrer" class="rp-link">hCaptcha</a>、<a href="https://developers.google.com/recaptcha" target="_blank" rel="noopener noreferrer" class="rp-link">reCAPTCHAv2</a> 和 <a href="https://developers.google.com/recaptcha" target="_blank" rel="noopener noreferrer" class="rp-link">reCAPTCHAv3</a>。此功能仅限最新的 Current 版本。</li>
<li>支持识别友好爬虫(如 BaiduSpider)并自动放行(基于 User-Agent 和 IP 的识别)。此功能仅限最新的 Current 版本。</li>
<li>CC 防御，超出限制后自动拉黑对应 IP 一段时间。</li>
<li>IP 黑白名单，同时支持类似 <code>192.168.0.0/16</code> 和 <code>fe80::/10</code>，即支持点分十进制和冒号十六进制表示法和网段划分。</li>
<li>POST 黑名单。</li>
<li>URL 黑白名单</li>
<li>查询字符串(Query String)黑名单。</li>
<li>UserAgent 黑名单。</li>
<li>Cookie 黑名单。</li>
<li>Referer 黑白名单。</li>
</ul>
<h2 class="rp-toc-include" id="打包"><a href="#打包" class="rp-header-anchor rp-link" aria-hidden="true">#</a>打包</h2>
<h3 class="rp-toc-include" id="前言"><a href="#前言" class="rp-header-anchor rp-link" aria-hidden="true">#</a>前言</h3>
<p><code>openresty</code>天生支持<code>lua</code>，线上的日志是有<code>lua</code>做处理</p>
<p>线上有不同的<code>vpc</code>，每个环境都要做到快速部署，故把模块都打进<code>docker</code>中</p>
<p>本文章主要讲的是<a href="https://github.com/ADD-SP/ngx_waf" target="_blank" rel="noopener noreferrer" class="rp-link">ngx_waf</a>，但其实不止这个模块，一共有:</p>
<ul>
<li><a href="https://github.com/ADD-SP/ngx_waf" target="_blank" rel="noopener noreferrer" class="rp-link">ngx_waf</a>最新版(非tls版)</li>
<li><a href="https://github.com/vozlt/nginx-module-vts" target="_blank" rel="noopener noreferrer" class="rp-link">nginx-module-vts</a></li>
<li><a href="https://github.com/knyar/nginx-lua-prometheus" target="_blank" rel="noopener noreferrer" class="rp-link">nginx-lua-prometheus</a></li>
</ul>
<p><a href="https://github.com/ttdockerfile/openresty-monitor-ubuntu" target="_blank" rel="noopener noreferrer" class="rp-link">打包镜像</a></p>
<h2 class="rp-toc-include" id="使用"><a href="#使用" class="rp-header-anchor rp-link" aria-hidden="true">#</a>使用</h2>
<h2 class="rp-toc-include" id="监控"><a href="#监控" class="rp-header-anchor rp-link" aria-hidden="true">#</a>监控</h2>
<h3 class="rp-toc-include" id="http模块配置"><a href="#http模块配置" class="rp-header-anchor rp-link" aria-hidden="true">#</a>http模块配置</h3>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>vhost_traffic_status_zone;</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="开启服务"><a href="#开启服务" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开启服务</h3>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>server {</span></span>
<span class="line"><span>    listen 9145;</span></span>
<span class="line"><span>    # 给日志模板使用的变量</span></span>
<span class="line"><span>    set $resp_body &quot;&quot;;</span></span>
<span class="line"><span>    set $resp_cookies &quot;&quot;;</span></span>
<span class="line"><span>    location /metrics {</span></span>
<span class="line"><span>        content_by_lua_block {</span></span>
<span class="line"><span>            metric_connections:set(ngx.var.connections_reading, {&quot;reading&quot;})</span></span>
<span class="line"><span>            metric_connections:set(ngx.var.connections_waiting, {&quot;waiting&quot;})</span></span>
<span class="line"><span>            metric_connections:set(ngx.var.connections_writing, {&quot;writing&quot;})</span></span>
<span class="line"><span>            prometheus:collect()</span></span>
<span class="line"><span>        }</span></span>
<span class="line"><span>    }</span></span>
<span class="line"><span></span></span>
<span class="line"><span>    location /status {</span></span>
<span class="line"><span>        vhost_traffic_status_display;</span></span>
<span class="line"><span>        vhost_traffic_status_display_format html;</span></span>
<span class="line"><span>    }</span></span>
<span class="line"><span></span></span>
<span class="line"><span>}</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="ngx_waf"><a href="#ngx_waf" class="rp-header-anchor rp-link" aria-hidden="true">#</a>ngx_waf</h2>
<p><a href="https://add-sp.github.io/ngx_waf-docs/zh-cn/" target="_blank" rel="noopener noreferrer" class="rp-link">文档地址</a></p>
<p>我使用到这个模块里的最主要的就是<code>waf_captcha</code>，这个是人机验证功能</p>
<p>由于自带的页面太难看了，所以我做了一个<a href="https://github.com/ttdockerfile/openresty-monitor-ubuntu/blob/master/assets/CAPTCHA.html" target="_blank" rel="noopener noreferrer" class="rp-link">界面</a></p>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>waf_captcha on prov=hCaptcha file=/data/res/CAPTCHA.html secret=xxx;</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2025春节广州香港行]]></title>
            <link>https://www.tteam.icu/blog/tour/2025春节广州香港行</link>
            <guid isPermaLink="false">/blog/tour/2025春节广州香港行</guid>
            <pubDate>Mon, 10 Feb 2025 19:56:12 GMT</pubDate>
            <description><![CDATA[2025年春节期间，作者从初一出发，先后前往广州、顺德、香港、深圳等地游玩，为期七天。行程包括游览沙面岛、永庆坊、顺峰山公园、广州塔、油麻地、旺角、港大等景点，品尝潮汕牛肉、双皮奶、早茶、烧鹅等美食，记录了旅行中的见闻和感受。]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2025春节广州香港行"><a href="#2025春节广州香港行" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2025春节广州香港行<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>这是一篇关于我在2025年初一出发前往广州、香港、深圳等地游玩的经历。</p>
<h2 class="rp-toc-include" id="第一天"><a href="#第一天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第一天</h2>
<p>前一天晚上跨年，由于需要4点半起床赶飞机，只睡了2个半小时。</p>
<p>飞机餐味道还不错:</p>
<p><img src="https://img.tteam.icu/i/2025/01/30/fkvsv6-3.webp" alt="飞机餐"/></p>
<p><img src="https://img.tteam.icu/i/2025/01/30/flrxej-3.webp" alt="飞机"/></p>
<p>下飞机后乘坐地铁时发现充电宝充不进去电，而手机快关机了。</p>
<p>赶紧导航到有小米之家的地方，迅速购买了一个充电宝，然后在商场楼上吃了顿潮汕牛肉火锅:</p>
<p><img src="https://img.tteam.icu/i/2025/01/30/fm50cc-3.webp" alt="潮发潮汕牛肉店"/></p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-r17zi7ocy" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>之后我们边聊边逛了沙面岛、永庆坊和人民公园:</p>
<p><img src="https://img.tteam.icu/i/2025/01/30/fm6h5k-3.webp" alt="永庆坊"/></p>
<p><img src="https://img.tteam.icu/i/2025/01/30/fmsv8h-3.webp" alt="永庆坊"/></p>
<p><img src="https://img.tteam.icu/i/2025/01/30/fmutci-3.webp" alt="永庆坊"/></p>
<p>最后在正佳广场吃了粥底火锅:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-u762y87g1" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/01/30/fn8zmh-3.webp" alt="粥底火锅"/></p>
<p><img src="https://img.tteam.icu/i/2025/01/30/fngijg-3.webp" alt="粥底火锅"/></p>
<p>由于第二天要去顺德，酒店定在了顺德，吃完晚饭后立即花了2小时赶到酒店休息。</p>
<p>最后分享一下第一天的步行战绩:</p>
<p><img src="https://img.tteam.icu/i/2025/01/30/fignda-3.webp" alt="小米运动截图"/></p>
<h2 class="rp-toc-include" id="第二天"><a href="#第二天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第二天</h2>
<p>10点出门后步行前往<code>金榜上街</code>，路上拍了张对面的老房子，这样的风景在我家乡不常见:</p>
<p><img src="https://img.tteam.icu/i/2025/02/01/12foqjk-3.webp" alt=""/></p>
<p>这是一条比较有韵味的街道(不过我没有拍照)。</p>
<p>按照小红书的推荐，进了一家店吃了<code>双皮奶</code>和<code>水牛奶</code>，味道确实比平常吃的奶味更浓郁一些:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-ahb7ecfju" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/01/12aar7z-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/01/129xygq-3.webp" alt=""/></p>
<p>半个小时逛完了<code>金榜上街</code>，在<code>金榜</code>公交车站乘坐公交车前往<code>顺峰山公园</code>:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-vrt1msnat" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/01/12jkaks-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/5guw6-3.webp" alt=""/></p>
<p>总体来说，顺峰山公园是个风景优美的地方，类似于杭州西湖。</p>
<p>逛完<code>顺峰山公园</code>后，乘坐了两个半小时地铁返回<code>广州</code>，把包放在酒店。</p>
<p>放下包后，又和群友一起去北京路逛街，吃了路边的糖水铺:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-eimahj3k5" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/02/9t5uy-3.webp" alt=""/></p>
<p>逛完后前往广州塔:</p>
<p>广州塔商场里有<code>影石</code>专卖店，有点想买<code>insta360</code>相机了:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-iakkuu5he" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/02/az63p-3.webp" alt=""/></p>
<p>逛完广州塔后立即回酒店，早点睡觉准备第三天早起吃早茶。</p>
<h2 class="rp-toc-include" id="第三天"><a href="#第三天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第三天</h2>
<p>第三天一早，我们就前往吃早茶:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-uazp68a24" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/02/f6scck-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/f6tk2j-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/f6rm1e-3.webp" alt=""/></p>
<p>吃完早茶后去了<code>动漫星城</code>逛了一下:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-eviqfkkd3" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/02/f9pgbn-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/f9qpfn-3.webp" alt=""/></p>
<p>接着我们去<code>广铁博物馆</code>参观，顺便买了点文创产品:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-uwucjxhs5" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>好多<code>麦当劳</code>啊~</p>
<p><img src="https://img.tteam.icu/i/2025/02/02/faxhzl-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/faz3g4-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/fb0fy3-3.webp" alt=""/></p>
<p>文创集章:</p>
<p><img src="https://img.tteam.icu/i/2025/02/02/fc0bso-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/fc168q-3.webp" alt=""/></p>
<p>然后去<code>天河公园</code>逛了逛，群友拍风景，我拍群友，大家都拍到了自己想要的:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-tizhvhu8j" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/02/fdqj9p-3.webp" alt=""/></p>
<p>在回酒店的路上看到了一个很讽刺的场景，店铺名字叫&quot;不加班xxx&quot;，但却是24小时经营:</p>
<p><img src="https://img.tteam.icu/i/2025/02/02/ff8745-3.webp" alt=""/></p>
<h2 class="rp-toc-include" id="第四天"><a href="#第四天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第四天</h2>
<p>早上五点半就起床，从广州南乘坐高铁前往香港西九龙站。</p>
<p>三个需要检查的地方都顺利通过，差不多20分钟就出关了。</p>
<p>和群友会合后，去了<code>圆方</code>商场吃主播推荐的美食:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-zvrk0240b" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/02/fv8z7z-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/fmp19q-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/fmpxoi-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/fmqt2d-3.webp" alt=""/></p>
<p>然后我们逛了街景和海边:</p>
<p><img src="https://img.tteam.icu/i/2025/02/02/fi6oeg-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/firt6g-3.webp" alt=""/></p>
<p>港交所:</p>
<p><img src="https://img.tteam.icu/i/2025/02/02/fjc2xe-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/fjz6l2-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/02/fllgxf-3.webp" alt=""/></p>
<p>去<code>bakehouse</code>买了点蛋挞:</p>
<p><img src="https://img.tteam.icu/i/2025/02/02/gmilx2-3.webp" alt=""/></p>
<p>傍晚返回酒店，前台态度还不错:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-csp8wu9v0" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>吹风机焊死在抽屉里，既节省了空间，又防止蒸汽导致短路:</p>
<p><img src="https://img.tteam.icu/i/2025/02/02/gk7m07-3.webp" alt=""/></p>
<h2 class="rp-toc-include" id="第五天"><a href="#第五天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第五天</h2>
<p>群友在昨天离别后和别的朋友玩了一个通宵，所以早上只有我一个人逛。</p>
<p>早上去了<code>油麻地</code>和<code>旺角</code>，也去了<code>油麻地警署</code>，不过人太多，只在马路对面拍了一张:</p>
<p><img src="https://img.tteam.icu/i/2025/02/04/uqytj8-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/04/ur4439-3.webp" alt=""/></p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-df5s1neax" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/04/vjfjcu-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/04/vjo4bs-3.webp" alt=""/></p>
<p>下午和群友集合后去了<code>香港大学</code>，又是一个未曾谋面的母校:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-e3w4h4lfd" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/04/vktpiu-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/04/vkwszg-3.webp" alt=""/></p>
<p>本来想去<code>平顶山</code>，但到达后发现至少要排队两个小时，就直接转头走了。</p>
<p>我们准备坐游轮回<code>尖沙咀</code>，幸运地遇到了麦当劳主题的游船:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-vk6aclpkv" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/04/voyz9o-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/04/vnq7fw-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/04/vnuxdd-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/04/voet4t-3.webp" alt=""/></p>
<p>觉得时间还早，就去打卡了<code>重庆大厦</code>:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-3jbv1kvq7" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/04/vq6vac-3.webp" alt=""/></p>
<p>最后离岗前吃了<code>烧鹅</code>，不过太油腻了，我们只吃了几块:</p>
<p><img src="https://img.tteam.icu/i/2025/02/04/vr8ppi-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/04/vr9u2j-3.webp" alt=""/></p>
<p>最后乘坐地铁离港，花费了40多港币。</p>
<h2 class="rp-toc-include" id="第六天"><a href="#第六天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第六天</h2>
<p>今天早上准备出门时下雨，又立即回酒店躲雨，等了几小时后才出门。</p>
<p>乘坐地铁到了<code>海上世界</code>，去的时候船被挡住了，没有开放，只能远远拍了几张:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-53z2hqwa7" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/10/z10hoj-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/10/z0r2vm-3.webp" alt=""/></p>
<p>随后去了<code>深圳湾公园</code>，有很多人在骑车:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-456cvpdxh" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>看到有个大爷拿着望远镜隔岸看香港，我也顺着他的视线拍了一张:</p>
<p><img src="https://img.tteam.icu/i/2025/02/10/z6kbgl-3.webp" alt=""/></p>
<p>然后我花了几个小时完整走完了<code>深圳湾公园</code>，然后乘坐港铁回酒店:</p>
<p><img src="https://img.tteam.icu/i/2025/02/10/z85g6h-3.webp" alt=""/></p>
<h2 class="rp-toc-include" id="第七天"><a href="#第七天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第七天</h2>
<p>今天是最后一天，晚上就要坐飞机回家了，所以起床晚了点。</p>
<p>然后去了<code>快乐港湾</code>，这里有摩天轮，还可以近距离欣赏飞机落地:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-4e762nu03" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2025/02/10/za4qmr-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2025/02/10/za5ve8-3.webp" alt=""/></p>
<h2 class="rp-toc-include" id="最后"><a href="#最后" class="rp-header-anchor rp-link" aria-hidden="true">#</a>最后</h2>
<p>这次春节七天出行只背了一个包，在广州的三天住的酒店都不同，所以基本一直在外面背着包，真的很累。</p>
<p>第七天下午开始感觉有点感冒，12点到家后立即吃药，到现在已经一周了，还是经常咳嗽。</p>
<p>下次出行一定要把酒店定在同一个地方，真的太后悔了~~</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[周记 2025 Week 06]]></title>
            <link>https://www.tteam.icu/blog/record/weekly/2025/W06</link>
            <guid isPermaLink="false">/blog/record/weekly/2025/W06</guid>
            <pubDate>Sun, 09 Feb 2025 16:27:46 GMT</pubDate>
            <description><![CDATA[2025年第六周的工作总结，包括开发资源发现、家庭服务器搭建和个人状态分享]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2025-week-06"><a href="#2025-week-06" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2025 Week 06<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<p>发现的有用资源:</p>
<ul>
<li><a href="https://github.com/Arman19941113/dnd-resume" target="_blank" rel="noopener noreferrer" class="rp-link">dnd-resume</a>: 可视化简历生成网站</li>
<li><a href="https://github.com/DavidHDev/react-bits" target="_blank" rel="noopener noreferrer" class="rp-link">react-bits</a>: React动画库</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul>
<li>在家中服务器上搭建了<a href="https://github.com/home-assistant/core" target="_blank" rel="noopener noreferrer" class="rp-link">Home Assistant</a>，为未来更换苹果全家桶做准备，方便接入米家全套智能家具</li>
<li>了解到<a href="https://github.com/appwrite/appwrite" target="_blank" rel="noopener noreferrer" class="rp-link">Appwrite</a>，可用于开发阶段便捷部署服务</li>
</ul>
<h2 class="rp-toc-include" id="个人感想"><a href="#个人感想" class="rp-header-anchor rp-link" aria-hidden="true">#</a>个人感想</h2>
<ul>
<li>刚刚结束了7天的特种兵式旅游，深夜12点到家，第二天就要上班</li>
<li>旅行最后一天开始感冒，第二天直接发烧，除了上班，下班后完全没有精力做其他事情，感觉非常疲惫</li>
<li>需要适当休息，下周还要去成都看演唱会</li>
<li>近期对学习开发相关内容缺乏动力，只是在GitHub上看到好的项目就star，没有深入研究的劲头</li>
<li>计划等看完演唱会，休息调整后再开始学习</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[年度计划 2025]]></title>
            <link>https://www.tteam.icu/blog/plans/year/Y2025</link>
            <guid isPermaLink="false">/blog/plans/year/Y2025</guid>
            <pubDate>Sat, 01 Feb 2025 23:24:55 GMT</pubDate>
            <description><![CDATA[2025年个人年度计划，包含开发学习、运维技能、项目构想、旅行计划和个人目标]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="年度计划-2025"><a href="#年度计划-2025" class="rp-header-anchor rp-link" aria-hidden="true">#</a>年度计划 2025<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>这篇文章是我在新一年的展望，希望能减轻自己的拖延症</p>
<p>在博客里立下目标后，希望大部分都能实现</p>
<p>这篇文章会持续更新，添加新的目标并标记已完成的项目</p>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<ul class="contains-task-list">
<li class="task-list-item">
<p><input type="checkbox" disabled="" checked=""/> 继续学习<code>Golang</code>，并开发至少1-2个自己构想的开源项目</p>
</li>
<li class="task-list-item">
<p><input type="checkbox" disabled="" checked=""/> 精进<code>React</code>技术，学习原生<code>React</code>开发，并使用TypeScript开发项目</p>
</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> 学习<code>Kubernetes</code>，并设计一套<code>DevOps</code>方案，提高系统容错能力</li>
</ul>
<h2 class="rp-toc-include" id="项目构想"><a href="#项目构想" class="rp-header-anchor rp-link" aria-hidden="true">#</a>项目构想</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled="" checked=""/> 使用<code>Golang</code>重构<code>Nacos</code>的配置文件模块，兼容现有接口，并开发更实用的功能供公司内部和个人开发使用</li>
</ul>
<h2 class="rp-toc-include" id="旅行计划"><a href="#旅行计划" class="rp-header-anchor rp-link" aria-hidden="true">#</a>旅行计划</h2>
<ul class="contains-task-list">
<li class="task-list-item">
<p><input type="checkbox" disabled=""/> 日本</p>
</li>
<li class="task-list-item">
<p><input type="checkbox" disabled="" checked=""/> 香港</p>
</li>
<li class="task-list-item">
<p><input type="checkbox" disabled="" checked=""/> 广州、深圳</p>
</li>
<li class="task-list-item">
<p><input type="checkbox" disabled="" checked=""/> 澳门</p>
</li>
<li class="task-list-item">
<p><input type="checkbox" disabled=""/> 云南</p>
</li>
</ul>
<h2 class="rp-toc-include" id="其他目标"><a href="#其他目标" class="rp-header-anchor rp-link" aria-hidden="true">#</a>其他目标</h2>
<p><del>- [ ] 购入<code>Insta360</code>开始拍摄<code>vlog</code>，培养在户外使用相机的习惯</del></p>
<ul class="contains-task-list">
<li class="task-list-item">
<p><input type="checkbox" disabled="" checked=""/> 购入<code>Pocket 3</code>开始拍摄<code>vlog</code>，培养在户外使用相机的习惯</p>
</li>
<li class="task-list-item">
<p><input type="checkbox" disabled=""/> 持续在博客中发布周报，总结每周发生的事情和计划</p>
</li>
<li class="task-list-item">
<p><input type="checkbox" disabled=""/> 在提升自我的同时开始寻找伴侣</p>
</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[周记 2025 Week 04]]></title>
            <link>https://www.tteam.icu/blog/record/weekly/2025/W04</link>
            <guid isPermaLink="false">/blog/record/weekly/2025/W04</guid>
            <pubDate>Sun, 26 Jan 2025 19:45:50 GMT</pubDate>
            <description><![CDATA[2025年第四周的工作总结，包括网站主页功能增强、技术框架发现和个人感想]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2025-week-04"><a href="#2025-week-04" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2025 Week 04<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<p>完善了<a href="https://www.tteam.icu/" target="_blank" rel="noopener noreferrer" class="rp-link">网站主页</a>:</p>
<ul>
<li>增加了网站更新日志界面</li>
<li>添加了更多项目展示界面</li>
<li>修改了404错误页面</li>
<li>调整了Navbar中部分链接的位置</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul>
<li>了解到<a href="https://github.com/cloudwego/hertz" target="_blank" rel="noopener noreferrer" class="rp-link">Hertz</a>，这是字节跳动开源的<code>Golang</code> HTTP框架，计划未来尝试使用</li>
</ul>
<h2 class="rp-toc-include" id="个人感想"><a href="#个人感想" class="rp-header-anchor rp-link" aria-hidden="true">#</a>个人感想</h2>
<ul>
<li>本周是春节前一周，需要连续工作7天，加上公司最近实行24小时值班制度，感到非常疲惫</li>
<li>近期主要精力都放在修改<a href="https://www.tteam.icu/" target="_blank" rel="noopener noreferrer" class="rp-link">网站主页</a>上，暂时没有动力学习<code>Golang</code></li>
<li>感觉自己目前的前端开发能力比后端更强</li>
<li>下周就是春节，初一计划外出旅游，下周的周报可能会暂停更新，届时会分享游记</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[周记 2025 Week 03]]></title>
            <link>https://www.tteam.icu/blog/record/weekly/2025/W03</link>
            <guid isPermaLink="false">/blog/record/weekly/2025/W03</guid>
            <pubDate>Sun, 19 Jan 2025 23:46:52 GMT</pubDate>
            <description><![CDATA[2025年第三周的工作总结，包括网站主页优化、Jenkins Agent功能实现和网络服务部署尝试]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2025-week-03"><a href="#2025-week-03" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2025 Week 03<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<p>完善了<a href="https://www.tteam.icu/" target="_blank" rel="noopener noreferrer" class="rp-link">网站主页</a>:</p>
<ul>
<li>拆分了工作经历组件，增加了工作项目经验展示</li>
<li>计划尝试<a href="https://github.com/TabbyML/tabby" target="_blank" rel="noopener noreferrer" class="rp-link">Tabby</a>，这是一个可自托管的AI代码生成工具</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul>
<li>研究并实现了<code>Jenkins</code>的<code>Agent</code>功能，将其打包为<a href="https://github.com/ttdockerfile/jenkins-build2" target="_blank" rel="noopener noreferrer" class="rp-link">Docker镜像</a>，实现一键启动，主要修改包括主程序重构和新增<code>Agent</code>功能</li>
<li>重新尝试在VPS上部署<a href="https://github.com/AdguardTeam/AdGuardHome" target="_blank" rel="noopener noreferrer" class="rp-link">AdGuardHome</a>，尝试在代理层面消除YouTube app的广告，但未成功；另一个<a href="https://blog.tteam.icu/vps/%E3%80%90vps%E6%B5%8B%E8%AF%84%E3%80%91VKVM/" target="_blank" rel="noopener noreferrer" class="rp-link">VKVM</a> VPS似乎也是通过<code>DNS</code>实现广告拦截，具体实现方式待研究</li>
<li>尝试部署了<a href="https://github.com/meeb/tubesync" target="_blank" rel="noopener noreferrer" class="rp-link">tubesync</a>，这是一个自动下载YouTube视频的服务，可以解决在app端观看视频时的广告问题，支持自动下载特定博主或播放列表的内容</li>
<li>计划深入学习Kubernetes，提高系统容错能力</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[周记 2025 Week 02]]></title>
            <link>https://www.tteam.icu/blog/record/weekly/2025/W02</link>
            <guid isPermaLink="false">/blog/record/weekly/2025/W02</guid>
            <pubDate>Sun, 12 Jan 2025 23:42:27 GMT</pubDate>
            <description><![CDATA[2025年第二周的工作总结，包括网站主页优化、组件封装和开发工具尝试]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2025-week-02"><a href="#2025-week-02" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2025 Week 02<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<p>完善了<a href="https://www.tteam.icu/" target="_blank" rel="noopener noreferrer" class="rp-link">网站主页</a>:</p>
<ul>
<li>重构了图片页面，提升加载流畅度</li>
<li>封装了BackTop组件，添加了进度条功能</li>
<li>尝试了<a href="https://www.deepseek.com/" target="_blank" rel="noopener noreferrer" class="rp-link">DeepSeek</a>，通过<code>Cline</code>接入<code>VSCode</code>，体验良好</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul>
<li>尝试部署了<a href="https://github.com/hunshcn/gh-proxy" target="_blank" rel="noopener noreferrer" class="rp-link">gh-proxy</a>，搭建后可通过IP白名单供国内VPS使用</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【vps测评】claw爪云]]></title>
            <link>https://www.tteam.icu/blog/vps/【vps测评】爪云</link>
            <guid isPermaLink="false">/blog/vps/【vps测评】爪云</guid>
            <pubDate>Thu, 09 Jan 2025 20:31:39 GMT</pubDate>
            <description><![CDATA[本文对爪云(Claw Cloud)VPS进行了详细测评，包括服务器基础信息、CPU和内存性能、磁盘读写速度、流媒体解锁情况、IP质量检测、邮件端口检测、三网回程测试等方面。爪云是阿里云旗下的服务，稳定性有保障，本次测试的是7美元/年的日本节点VPS。]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="claw爪云"><a href="#claw爪云" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://claw.cloud/" target="_blank" rel="noopener noreferrer" class="rp-link">claw爪云</a></h2>
<h3 class="rp-toc-include" id="简介"><a href="#简介" class="rp-header-anchor rp-link" aria-hidden="true">#</a>简介</h3>
<p>爪云作为阿里云旗下的服务，稳定性方面还是很有保障的。</p>
<p>最近推出了7美元/年的VPS套餐，我立刻就买来测试了。</p>
<p>我选择了日本节点，SSH连接速度非常快，几乎和连接国内服务器的感觉差不多。</p>
<h3 class="rp-toc-include" id="测评"><a href="#测评" class="rp-header-anchor rp-link" aria-hidden="true">#</a>测评</h3>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>---------------------基础信息查询--感谢所有开源项目---------------------</span></span>
<span class="line"><span> CPU 型号          : Intel(R) Xeon(R) Platinum</span></span>
<span class="line"><span> CPU 核心数        : 1</span></span>
<span class="line"><span> CPU 频率          : 2500.002 MHz</span></span>
<span class="line"><span> CPU 缓存          : L1: 32.00 KB / L2: 1.00 MB / L3: 33.00 MB</span></span>
<span class="line"><span> AES-NI指令集      : ✔ Enabled</span></span>
<span class="line"><span> VM-x/AMD-V支持    : ❌ Disabled</span></span>
<span class="line"><span> 内存              : 151.35 MiB / 923.82 MiB</span></span>
<span class="line"><span> Swap              : [ no swap partition or swap file detected ]</span></span>
<span class="line"><span> 硬盘空间          : 1.03 GiB / 19.52 GiB</span></span>
<span class="line"><span> 启动盘路径        : /dev/vda1</span></span>
<span class="line"><span> 系统在线时间      : 0 days, 0 hour 4 min</span></span>
<span class="line"><span> 负载              : 0.97, 0.30, 0.10</span></span>
<span class="line"><span> 系统              : Debian GNU/Linux 12 (bookworm) (x86_64)</span></span>
<span class="line"><span> 架构              : x86_64 (64 Bit)</span></span>
<span class="line"><span> 内核              : 6.1.0-28-cloud-amd64</span></span>
<span class="line"><span> TCP加速方式       : bbr</span></span>
<span class="line"><span> 虚拟化架构        : KVM</span></span>
<span class="line"><span> NAT类型           : Full Cone</span></span>
<span class="line"><span> IPV4 ASN          : AS45102 Alibaba (US) Technology Co., Ltd.</span></span>
<span class="line"><span> IPV4 位置         : Tokyo / Tokyo / JP</span></span>
<span class="line"><span> IPV6 ASN          : AS45102 Alibaba</span></span>
<span class="line"><span> IPV6 位置         : Tokyo / Tokyo / Japan</span></span>
<span class="line"><span> IPV6 子网掩码     : 128</span></span>
<span class="line"><span>----------------------CPU测试--通过sysbench测试-------------------------</span></span>
<span class="line"><span> -&gt; CPU 测试中 (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 1 线程测试(单核)得分:          1007 Scores</span></span>
<span class="line"><span>---------------------内存测试--感谢lemonbench开源-----------------------</span></span>
<span class="line"><span> -&gt; 内存测试 Test (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 单线程读测试:          5478.02 MB/s</span></span>
<span class="line"><span> 单线程写测试:          4839.90 MB/s</span></span>
<span class="line"><span>------------------磁盘dd读写测试--感谢lemonbench开源--------------------</span></span>
<span class="line"><span> -&gt; 磁盘IO测试中 (4K Block/1M Block, Direct Mode)</span></span>
<span class="line"><span> 测试操作               写速度                                  读速度</span></span>
<span class="line"><span> 100MB-4K Block         31.4 MB/s (7659 IOPS, 3.34s)            48.2 MB/s (11777 IOPS, 2.17s)</span></span>
<span class="line"><span> 1GB-1M Block           232 MB/s (221 IOPS, 4.53s)              209 MB/s (199 IOPS, 5.02s)</span></span>
<span class="line"><span>---------------------磁盘fio读写测试--感谢yabs开源----------------------</span></span>
<span class="line"><span>Block Size | 4k            (IOPS) | 64k           (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 20.67 MB/s    (5.1k) | 96.30 MB/s    (1.5k)</span></span>
<span class="line"><span>Write      | 20.68 MB/s    (5.1k) | 96.80 MB/s    (1.5k)</span></span>
<span class="line"><span>Total      | 41.36 MB/s   (10.3k) | 193.10 MB/s   (3.0k)</span></span>
<span class="line"><span>           |                      |                     </span></span>
<span class="line"><span>Block Size | 512k          (IOPS) | 1m            (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 92.10 MB/s     (179) | 91.54 MB/s      (89)</span></span>
<span class="line"><span>Write      | 96.99 MB/s     (189) | 97.64 MB/s      (95)</span></span>
<span class="line"><span>Total      | 189.09 MB/s    (368) | 189.18 MB/s    (184)</span></span>
<span class="line"><span>------------流媒体解锁--基于oneclickvirt/CommonMediaTests开源-----------</span></span>
<span class="line"><span>以下测试的解锁地区是准确的，但是不是完整解锁的判断可能有误，这方面仅作参考使用</span></span>
<span class="line"><span>----------------Netflix-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>您的出口IP可以使用Netflix，但仅可看Netflix自制剧</span></span>
<span class="line"><span>NF所识别的IP地域信息: 美国</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>您的出口IP可以使用Netflix，但仅可看Netflix自制剧</span></span>
<span class="line"><span>NF所识别的IP地域信息: 新加坡</span></span>
<span class="line"><span>----------------Youtube-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>连接方式: Youtube Video Server</span></span>
<span class="line"><span>视频缓存节点地域: 日本 东京(NRT20S05)</span></span>
<span class="line"><span>Youtube识别地域: 日本(JP)</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>连接方式: Youtube Video Server</span></span>
<span class="line"><span>视频缓存节点地域: 日本 东京(NRT20S05)</span></span>
<span class="line"><span>Youtube识别地域: 日本(JP)</span></span>
<span class="line"><span>---------------DisneyPlus---------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>当前出口所在地区解锁DisneyPlus</span></span>
<span class="line"><span>区域: JP 区</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>当前出口所在地区解锁DisneyPlus</span></span>
<span class="line"><span>区域: JP 区</span></span>
<span class="line"><span>解锁Netflix，Youtube，DisneyPlus上面和下面进行比较，不同之处自行判断</span></span>
<span class="line"><span>----------------流媒体解锁--感谢RegionRestrictionCheck开源--------------</span></span>
<span class="line"><span> 以下为IPV4网络测试，若无IPV4网络则无输出</span></span>
<span class="line"><span>============[ Multination ]============</span></span>
<span class="line"><span> Dazn:                                  Failed (Error: )</span></span>
<span class="line"><span> Disney+:                               No (IP Banned By Disney+ 1)</span></span>
<span class="line"><span> Netflix:                               Originals Only</span></span>
<span class="line"><span> YouTube Premium:                       Yes (Region: JP)</span></span>
<span class="line"><span> Amazon Prime Video:                    Yes (Region: JP)</span></span>
<span class="line"><span> TVBAnywhere+:                          Yes</span></span>
<span class="line"><span> Spotify Registration:                  Yes (Region: JP)</span></span>
<span class="line"><span> OneTrust Region:                       JP [Tokyo]</span></span>
<span class="line"><span> iQyi Oversea Region:                   JP</span></span>
<span class="line"><span> Bing Region:                           JP</span></span>
<span class="line"><span> YouTube CDN:                           Tokyo</span></span>
<span class="line"><span> Netflix Preferred CDN:                 Tokyo</span></span>
<span class="line"><span> ChatGPT:                               Yes</span></span>
<span class="line"><span> Google Gemini:                         Yes (Region: JPN)</span></span>
<span class="line"><span> Wikipedia Editability:                 No</span></span>
<span class="line"><span> Google Play Store:                     Japan </span></span>
<span class="line"><span> Google Search CAPTCHA Free:            Yes</span></span>
<span class="line"><span> Steam Currency:                        JPY</span></span>
<span class="line"><span> ---Forum---</span></span>
<span class="line"><span> Reddit:                                No</span></span>
<span class="line"><span>=======================================</span></span>
<span class="line"><span> 以下为IPV6网络测试，若无IPV6网络则无输出</span></span>
<span class="line"><span>============[ Multination ]============</span></span>
<span class="line"><span> Dazn:                                  IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> Disney+:                               IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> Netflix:                               Originals Only</span></span>
<span class="line"><span> YouTube Premium:                       Yes (Region: JP)</span></span>
<span class="line"><span> Amazon Prime Video:                    IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> TVBAnywhere+:                          IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> Spotify Registration:                  Yes (Region: JP)</span></span>
<span class="line"><span> OneTrust Region:                       JP [Tokyo]</span></span>
<span class="line"><span> iQyi Oversea Region:                   IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> Bing Region:                           JP</span></span>
<span class="line"><span> YouTube CDN:                           Tokyo</span></span>
<span class="line"><span> Netflix Preferred CDN:                 Osaka</span></span>
<span class="line"><span> ChatGPT:                               Failed (Network Connection)</span></span>
<span class="line"><span> Google Gemini:                         Yes (Region: JPN)</span></span>
<span class="line"><span> Wikipedia Editability:                 No</span></span>
<span class="line"><span> Google Play Store:                     Japan </span></span>
<span class="line"><span> Google Search CAPTCHA Free:            Yes</span></span>
<span class="line"><span> Steam Currency:                        IPv6 Is Not Currently Supported</span></span>
<span class="line"><span> ---Forum---</span></span>
<span class="line"><span> Reddit:                                IPv6 Is Not Currently Supported</span></span>
<span class="line"><span>=======================================</span></span>
<span class="line"><span>---------------TikTok解锁--感谢lmc999的源脚本及fscarmen PR--------------</span></span>
<span class="line"><span> Tiktok Region:         【JP】</span></span>
<span class="line"><span>-------------IP质量检测--基于oneclickvirt/securityCheck使用-------------</span></span>
<span class="line"><span>数据仅作参考，不代表100%准确，如果和实际情况不一致请手动查询多个数据库比对</span></span>
<span class="line"><span>以下为各数据库编号，输出结果后将自带数据库来源对应的编号</span></span>
<span class="line"><span>ipinfo数据库  [0] | scamalytics数据库 [1] | virustotal数据库   [2] | abuseipdb数据库   [3] | ip2location数据库    [4]</span></span>
<span class="line"><span>ip-api数据库  [5] | ipwhois数据库     [6] | ipregistry数据库   [7] | ipdata数据库      [8] | db-ip数据库          [9]</span></span>
<span class="line"><span>ipapiis数据库 [A] | ipapicom数据库    [B] | bigdatacloud数据库 [C] | cheervision数据库 [D] | ipqualityscore数据库 [E]</span></span>
<span class="line"><span>IPV4:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>声誉(越高越好): 0 [2] </span></span>
<span class="line"><span>信任得分(越高越好): 0 [8]</span></span>
<span class="line"><span>VPN得分(越低越好): 100 [8] </span></span>
<span class="line"><span>代理得分(越低越好): 100 [8] </span></span>
<span class="line"><span>社区投票-无害: 0 [2] </span></span>
<span class="line"><span>社区投票-恶意: 0 [2] </span></span>
<span class="line"><span>威胁得分(越低越好): 100 [8] </span></span>
<span class="line"><span>欺诈得分(越低越好): 0 [1] 65 [E]</span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3] </span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0011 (Low) [A] </span></span>
<span class="line"><span>公司滥用得分(越低越好): 0.0008 (Low) [A] </span></span>
<span class="line"><span>威胁级别: low [9 B] </span></span>
<span class="line"><span>黑名单记录统计:(有多少黑名单网站有记录):</span></span>
<span class="line"><span>无害记录数: 0 [2]  恶意记录数: 0 [2]  可疑记录数: 0 [2]  无记录数: 94 [2]  </span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: DataCenter/WebHosting/Transit [3] hosting [0 7 9 A] business [8] hosting ASN [C]</span></span>
<span class="line"><span>公司类型: hosting [0 7 A] </span></span>
<span class="line"><span>是否云提供商: Yes [7 D] </span></span>
<span class="line"><span>是否数据中心: Yes [0 1 5 6 A C] No [8]</span></span>
<span class="line"><span>是否移动设备: Yes [E] No [5 A C]</span></span>
<span class="line"><span>是否代理: No [0 1 4 5 6 7 8 9 A B C D] Yes [E]</span></span>
<span class="line"><span>是否VPN: No [0 1 6 7 C D] Yes [A E]</span></span>
<span class="line"><span>是否TorExit: No [1 7 D] </span></span>
<span class="line"><span>是否Tor出口: No [1 7 D] </span></span>
<span class="line"><span>是否网络爬虫: No [9 A B E] </span></span>
<span class="line"><span>是否匿名: No [1 6 7 8 D] </span></span>
<span class="line"><span>是否攻击者: No [7 8 D] </span></span>
<span class="line"><span>是否滥用者: No [7 8 A C D E] </span></span>
<span class="line"><span>是否威胁: No [7 8 C D] </span></span>
<span class="line"><span>是否中继: No [0 7 8 C D] </span></span>
<span class="line"><span>是否Bogon: No [7 8 A C D] </span></span>
<span class="line"><span>是否机器人: No [E] </span></span>
<span class="line"><span>DNS-黑名单: 314(Total_Check) 0(Clean) 4(Blacklisted) 23(Other) </span></span>
<span class="line"><span>IPV6:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>欺诈得分(越低越好): 13 [1] </span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3]</span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0011 (Low) [A] </span></span>
<span class="line"><span>公司滥用得分(越低越好): 0 (Very Low) [A] </span></span>
<span class="line"><span>威胁级别: low [B] </span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: hosting [A] DataCenter/WebHosting/Transit [3]</span></span>
<span class="line"><span>公司类型: hosting [A] </span></span>
<span class="line"><span>是否云提供商: Yes [D]</span></span>
<span class="line"><span>是否数据中心: Yes [1 A] </span></span>
<span class="line"><span>是否移动设备: No [A] </span></span>
<span class="line"><span>是否代理: No [1 A B D] </span></span>
<span class="line"><span>是否VPN: No [1 A D] </span></span>
<span class="line"><span>是否TorExit: No [1 D] </span></span>
<span class="line"><span>是否Tor出口: No [1 D] </span></span>
<span class="line"><span>是否网络爬虫: No [A B] </span></span>
<span class="line"><span>是否匿名: No [1 D] </span></span>
<span class="line"><span>是否攻击者: No [D] </span></span>
<span class="line"><span>是否滥用者: No [A D] </span></span>
<span class="line"><span>是否威胁: No [D] </span></span>
<span class="line"><span>是否中继: No [D] </span></span>
<span class="line"><span>是否Bogon: No [A D] </span></span>
<span class="line"><span>Google搜索可行性: YES</span></span>
<span class="line"><span>-------------邮件端口检测--基于oneclickvirt/portchecker开源-------------</span></span>
<span class="line"><span>Platform  SMTP  SMTPS POP3  POP3S IMAP  IMAPS</span></span>
<span class="line"><span>LocalPort ✘     ✔     ✔     ✔     ✔     ✔    </span></span>
<span class="line"><span>QQ        ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>163       ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sohu      ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yandex    ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Gmail     ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Outlook   ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Office365 ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yahoo     ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MailCOM   ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>MailRU    ✘     ✔     ✘     ✘     ✔     ✘    </span></span>
<span class="line"><span>AOL       ✘     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>GMX       ✘     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sina      ✘     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>----------------三网回程--基于oneclickvirt/backtrace开源----------------</span></span>
<span class="line"><span>北京电信 219.141.140.10  电信163    [普通线路] </span></span>
<span class="line"><span>北京联通 202.106.195.68  联通4837   [普通线路] </span></span>
<span class="line"><span>北京移动 221.179.155.161 移动CMI    [普通线路] </span></span>
<span class="line"><span>上海电信 202.96.209.133  检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>上海联通 210.22.97.1     检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>上海移动 211.136.112.200 检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>广州电信 58.60.188.222   检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>广州联通 210.21.196.6    联通4837   [普通线路] </span></span>
<span class="line"><span>广州移动 120.196.165.24  检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>成都电信 61.139.2.69     电信163    [普通线路] </span></span>
<span class="line"><span>成都联通 119.6.6.6       联通4837   [普通线路] </span></span>
<span class="line"><span>成都移动 211.137.96.205  移动CMI    [普通线路] </span></span>
<span class="line"><span>准确线路自行查看详细路由，本测试结果仅作参考</span></span>
<span class="line"><span>同一目标地址多个线路时，可能检测已越过汇聚层，除了第一个线路外，后续信息可能无效</span></span>
<span class="line"><span>---------------------回程路由--感谢fscarmen开源及PR---------------------</span></span>
<span class="line"><span>依次测试电信/联通/移动经过的地区及线路，核心程序来自ipip.net或nexttrace，请知悉!</span></span>
<span class="line"><span>广州电信 58.60.188.222</span></span>
<span class="line"><span>        </span></span>
<span class="line"><span>广州联通 210.21.196.6</span></span>
<span class="line"><span>52.37 ms        * DOD</span></span>
<span class="line"><span>1.30 ms         * RFC1918</span></span>
<span class="line"><span>3.67 ms         * [BBIXINTLNET] 日本 东京都 东京 BBTEC-Peer</span></span>
<span class="line"><span>169.96 ms       AS17676 [BBTEC] 中国 北京 BBTEC-CU-Peer softbank.jp</span></span>
<span class="line"><span>180.11 ms       AS4837 [CU169-BACKBONE] 中国 北京 chinaunicom.cn</span></span>
<span class="line"><span>175.04 ms       AS17816 [APNIC-AP] 中国 广东 深圳 chinaunicom.cn 联通</span></span>
<span class="line"><span>207.93 ms       AS17623 [APNIC-AP] 中国 广东 深圳 chinaunicom.cn 联通</span></span>
<span class="line"><span>174.43 ms       AS17623 中国 广东 深圳 宝安区 chinaunicom.cn 联通</span></span>
<span class="line"><span>广州移动 120.196.165.24</span></span>
<span class="line"><span>1.05 ms         * DOD</span></span>
<span class="line"><span>1.96 ms         * RFC1918</span></span>
<span class="line"><span>3.18 ms         * [BBIXINTLNET] 日本 东京都 东京</span></span>
<span class="line"><span>3.56 ms         AS17676 [BBTEC] 日本 东京都 东京 softbank.jp</span></span>
<span class="line"><span>60.84 ms        AS58453 [CMI-INT] 中国 香港 cmi.chinamobile.com</span></span>
<span class="line"><span>62.10 ms        AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>62.34 ms        AS9808 [CMNET] 中国 广东 广州 I-C chinamobileltd.com 移动</span></span>
<span class="line"><span>65.91 ms        AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>67.83 ms        AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>66.63 ms        AS56040 [APNIC-AP] 中国 广东 深圳 gd.10086.cn 移动</span></span>
<span class="line"><span>--------------------自动更新测速节点列表--本脚本原创--------------------</span></span>
<span class="line"><span>位置             上传速度        下载速度        延迟     丢包率</span></span>
<span class="line"><span>日本东京         207.08 Mbps     202.54 Mbps     4.12     2.1%</span></span>
<span class="line"><span>中国香港         237.87 Mbps     415.27 Mbps     54.38    0.0%</span></span>
<span class="line"><span>联通上海5G       216.33 Mbps     213.29 Mbps     174.17   0.0%</span></span>
<span class="line"><span>联通WuXi         230.47 Mbps     226.23 Mbps     176.44   0.0%</span></span>
<span class="line"><span>电信浙江         207.07 Mbps     204.38 Mbps     41.11    NULL</span></span>
<span class="line"><span>移动杭州5G       208.87 Mbps     222.10 Mbps     41.88    0.0%</span></span>
<span class="line"><span>移动Fujian       315.72 Mbps     409.42 Mbps     87.40    NULL</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span>
<span class="line"><span> 总共花费      : 8 分 2 秒</span></span>
<span class="line"><span> 时间          : Thu Jan  9 09:15:09 UTC 2025</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【vps测评】VKVM]]></title>
            <link>https://www.tteam.icu/blog/vps/【vps测评】VKVM</link>
            <guid isPermaLink="false">/blog/vps/【vps测评】VKVM</guid>
            <pubDate>Thu, 09 Jan 2025 18:31:39 GMT</pubDate>
            <description><![CDATA[本文对VKVM VPS进行了详细测评，包括服务器基础信息、CPU和内存性能、磁盘读写速度、流媒体解锁情况、IP质量检测、邮件端口检测、三网回程测试等方面。服务器为299元/年的优惠套餐，三网均为顶级线路，但存在经常被攻击的缺点。]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="vkvm"><a href="#vkvm" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://www.vkvm.info/aff/DSJLPDTA" target="_blank" rel="noopener noreferrer" class="rp-link">VKVM</a></h2>
<h3 class="rp-toc-include" id="简介"><a href="#简介" class="rp-header-anchor rp-link" aria-hidden="true">#</a>简介</h3>
<p>这台服务器是我在<code>VKVM</code>暑假优惠时购买的，价格为299元/年，三网均为顶级线路。</p>
<p>不过，它的缺点是经常受到攻击。</p>
<h3 class="rp-toc-include" id="测评"><a href="#测评" class="rp-header-anchor rp-link" aria-hidden="true">#</a>测评</h3>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>---------------------基础信息查询--感谢所有开源项目---------------------</span></span>
<span class="line"><span> CPU 型号          : Intel(R) Xeon(R) CPU E5-2697 v4 @ 2.30GHz</span></span>
<span class="line"><span> CPU 核心数        : 2</span></span>
<span class="line"><span> CPU 频率          : 2299.996 MHz</span></span>
<span class="line"><span> CPU 缓存          : L1: 32.00 KB / L2: 256.00 KB / L3: 45.00 MB</span></span>
<span class="line"><span> AES-NI指令集      : ✔ Enabled</span></span>
<span class="line"><span> VM-x/AMD-V支持    : ✔ Enabled</span></span>
<span class="line"><span> 内存              : 1.21 GiB / 3.84 GiB</span></span>
<span class="line"><span> Swap              : [ no swap partition or swap file detected ]</span></span>
<span class="line"><span> 硬盘空间          : 14.40 GiB / 39.21 GiB</span></span>
<span class="line"><span> 启动盘路径        : /dev/vda1</span></span>
<span class="line"><span> 系统在线时间      : 21 days, 0 hour 51 min</span></span>
<span class="line"><span> 负载              : 0.96, 0.31, 0.14</span></span>
<span class="line"><span> 系统              : Debian GNU/Linux 12 (bookworm) (x86_64)</span></span>
<span class="line"><span> 架构              : x86_64 (64 Bit)</span></span>
<span class="line"><span> 内核              : 6.1.0-28-cloud-amd64</span></span>
<span class="line"><span> TCP加速方式       : bbr</span></span>
<span class="line"><span> 虚拟化架构        : KVM</span></span>
<span class="line"><span> NAT类型           : Inconclusive</span></span>
<span class="line"><span> IPV4 ASN          : AS215269 LAZYCLOUD LTD</span></span>
<span class="line"><span> IPV4 位置         : Los Angeles / California / US</span></span>
<span class="line"><span>----------------------CPU测试--通过sysbench测试-------------------------</span></span>
<span class="line"><span> -&gt; CPU 测试中 (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 1 线程测试(单核)得分:          704 Scores</span></span>
<span class="line"><span> 2 线程测试(多核)得分:          1548 Scores</span></span>
<span class="line"><span>---------------------内存测试--感谢lemonbench开源-----------------------</span></span>
<span class="line"><span> -&gt; 内存测试 Test (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 单线程读测试:          14682.70 MB/s</span></span>
<span class="line"><span> 单线程写测试:          11269.64 MB/s</span></span>
<span class="line"><span>------------------磁盘dd读写测试--感谢lemonbench开源--------------------</span></span>
<span class="line"><span> -&gt; 磁盘IO测试中 (4K Block/1M Block, Direct Mode)</span></span>
<span class="line"><span> 测试操作               写速度                                  读速度</span></span>
<span class="line"><span> 100MB-4K Block         8.9 MB/s (2168 IOPS, 11.81s)            8.9 MB/s (2169 IOPS, 11.80s)</span></span>
<span class="line"><span> 1GB-1M Block           554 MB/s (528 IOPS, 1.89s)              1.0 GB/s (966 IOPS, 1.03s)</span></span>
<span class="line"><span>---------------------磁盘fio读写测试--感谢yabs开源----------------------</span></span>
<span class="line"><span>Block Size | 4k            (IOPS) | 64k           (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 8.11 MB/s     (2.0k) | 130.65 MB/s   (2.0k)</span></span>
<span class="line"><span>Write      | 8.14 MB/s     (2.0k) | 131.34 MB/s   (2.0k)</span></span>
<span class="line"><span>Total      | 16.25 MB/s    (4.0k) | 261.99 MB/s   (4.0k)</span></span>
<span class="line"><span>           |                      |                     </span></span>
<span class="line"><span>Block Size | 512k          (IOPS) | 1m            (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 637.80 MB/s   (1.2k) | 541.65 MB/s    (528)</span></span>
<span class="line"><span>Write      | 671.69 MB/s   (1.3k) | 577.72 MB/s    (564)</span></span>
<span class="line"><span>Total      | 1.30 GB/s     (2.5k) | 1.11 GB/s     (1.0k)</span></span>
<span class="line"><span>------------流媒体解锁--基于oneclickvirt/CommonMediaTests开源-----------</span></span>
<span class="line"><span>以下测试的解锁地区是准确的，但是不是完整解锁的判断可能有误，这方面仅作参考使用</span></span>
<span class="line"><span>----------------Netflix-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>您的出口IP完整解锁Netflix，支持非自制剧的观看</span></span>
<span class="line"><span>NF所识别的IP地域信息: 美国</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>您的网络可能没有正常配置IPv6，或者没有IPv6网络接入</span></span>
<span class="line"><span>----------------Youtube-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>连接方式: Youtube Video Server</span></span>
<span class="line"><span>视频缓存节点地域: 美国  洛杉机(LAX31S13)</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>Youtube在您的出口IP所在的国家不提供服务</span></span>
<span class="line"><span>---------------DisneyPlus---------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>当前出口所在地区解锁DisneyPlus</span></span>
<span class="line"><span>区域: US 区</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>当前出口所在地区解锁DisneyPlus</span></span>
<span class="line"><span>区域: US 区</span></span>
<span class="line"><span>解锁Netflix，Youtube，DisneyPlus上面和下面进行比较，不同之处自行判断</span></span>
<span class="line"><span>----------------流媒体解锁--感谢RegionRestrictionCheck开源--------------</span></span>
<span class="line"><span> 以下为IPV4网络测试，若无IPV4网络则无输出</span></span>
<span class="line"><span>============[ Multination ]============</span></span>
<span class="line"><span> Dazn:                                  Yes (Region: US)</span></span>
<span class="line"><span> Disney+:                               Yes (Region: US)</span></span>
<span class="line"><span> Netflix:                               Yes (Region: US)</span></span>
<span class="line"><span> YouTube Premium:                       Yes (Region: US)</span></span>
<span class="line"><span> Amazon Prime Video:                    Yes (Region: GB)</span></span>
<span class="line"><span> TVBAnywhere+:                          Yes</span></span>
<span class="line"><span> Spotify Registration:                  Yes (Region: US)</span></span>
<span class="line"><span> OneTrust Region:                       US [California]</span></span>
<span class="line"><span> iQyi Oversea Region:                   GB</span></span>
<span class="line"><span> Bing Region:                           US</span></span>
<span class="line"><span> YouTube CDN:                           Los Angeles, CA</span></span>
<span class="line"><span> Netflix Preferred CDN:                 [LAZYCLOUD LTD] in [Singapore]</span></span>
<span class="line"><span> ChatGPT:                               Yes</span></span>
<span class="line"><span> Google Gemini:                         Yes (Region: CHN)</span></span>
<span class="line"><span> Wikipedia Editability:                 Yes</span></span>
<span class="line"><span> Google Play Store:                     China </span></span>
<span class="line"><span> Google Search CAPTCHA Free:            Yes</span></span>
<span class="line"><span> Steam Currency:                        USD</span></span>
<span class="line"><span> ---Forum---</span></span>
<span class="line"><span> Reddit:                                Yes</span></span>
<span class="line"><span>=======================================</span></span>
<span class="line"><span> 以下为IPV6网络测试，若无IPV6网络则无输出</span></span>
<span class="line"><span>---------------TikTok解锁--感谢lmc999的源脚本及fscarmen PR--------------</span></span>
<span class="line"><span> Tiktok Region:         Failed</span></span>
<span class="line"><span>-------------IP质量检测--基于oneclickvirt/securityCheck使用-------------</span></span>
<span class="line"><span>数据仅作参考，不代表100%准确，如果和实际情况不一致请手动查询多个数据库比对</span></span>
<span class="line"><span>以下为各数据库编号，输出结果后将自带数据库来源对应的编号</span></span>
<span class="line"><span>ipinfo数据库  [0] | scamalytics数据库 [1] | virustotal数据库   [2] | abuseipdb数据库   [3] | ip2location数据库    [4]</span></span>
<span class="line"><span>ip-api数据库  [5] | ipwhois数据库     [6] | ipregistry数据库   [7] | ipdata数据库      [8] | db-ip数据库          [9]</span></span>
<span class="line"><span>ipapiis数据库 [A] | ipapicom数据库    [B] | bigdatacloud数据库 [C] | cheervision数据库 [D] | ipqualityscore数据库 [E]</span></span>
<span class="line"><span>IPV4:</span></span>
<span class="line"><span>安全得分:</span></span>
<span class="line"><span>声誉(越高越好): 0 [2] </span></span>
<span class="line"><span>信任得分(越高越好): 3 [8]</span></span>
<span class="line"><span>VPN得分(越低越好): 96 [8] </span></span>
<span class="line"><span>代理得分(越低越好): 100 [8] </span></span>
<span class="line"><span>社区投票-无害: 0 [2] </span></span>
<span class="line"><span>社区投票-恶意: 0 [2] </span></span>
<span class="line"><span>威胁得分(越低越好): 94 [8] </span></span>
<span class="line"><span>欺诈得分(越低越好): 0 [1] </span></span>
<span class="line"><span>滥用得分(越低越好): 0 [3] </span></span>
<span class="line"><span>ASN滥用得分(越低越好): 0.0007 (Low) [A] </span></span>
<span class="line"><span>公司滥用得分(越低越好): 0 (Very Low) [A] </span></span>
<span class="line"><span>威胁级别: low [9 B] </span></span>
<span class="line"><span>黑名单记录统计:(有多少黑名单网站有记录):</span></span>
<span class="line"><span>无害记录数: 0 [2]  恶意记录数: 0 [2]  可疑记录数: 0 [2]  无记录数: 94 [2]  </span></span>
<span class="line"><span>安全信息:</span></span>
<span class="line"><span>使用类型: hosting - high probability [C] hosting [0 7 9 A] DataCenter/WebHosting/Transit [3] business [8]</span></span>
<span class="line"><span>公司类型: isp [7 A] business [0]</span></span>
<span class="line"><span>是否云提供商: Yes [7 D] </span></span>
<span class="line"><span>是否数据中心: No [0 5 6 8 A C] Yes [1]</span></span>
<span class="line"><span>是否移动设备: No [5 A C] </span></span>
<span class="line"><span>是否代理: No [0 1 4 5 6 7 8 9 A B C D] </span></span>
<span class="line"><span>是否VPN: No [0 1 6 7 A C D] </span></span>
<span class="line"><span>是否Tor: No [0 1 3 6 7 8 A B C D] </span></span>
<span class="line"><span>是否Tor出口: No [1 7 D]</span></span>
<span class="line"><span>是否网络爬虫: No [9 A B] </span></span>
<span class="line"><span>是否匿名: No [1 6 7 8 D] </span></span>
<span class="line"><span>是否攻击者: No [7 8 D] </span></span>
<span class="line"><span>是否滥用者: No [7 8 A C D] </span></span>
<span class="line"><span>是否威胁: No [7 8 C D] </span></span>
<span class="line"><span>是否中继: No [0 7 8 C D] </span></span>
<span class="line"><span>是否Bogon: No [7 8 A C D] </span></span>
<span class="line"><span>Google搜索可行性: YES</span></span>
<span class="line"><span>-------------邮件端口检测--基于oneclickvirt/portchecker开源-------------</span></span>
<span class="line"><span>Platform  SMTP  SMTPS POP3  POP3S IMAP  IMAPS</span></span>
<span class="line"><span>LocalPort ✔     ✔     ✔     ✔     ✔     ✔    </span></span>
<span class="line"><span>QQ        ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>163       ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sohu      ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yandex    ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Gmail     ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>Outlook   ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Office365 ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Yahoo     ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>MailCOM   ✔     ✔     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>MailRU    ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>AOL       ✔     ✔     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>GMX       ✔     ✘     ✔     ✘     ✔     ✘    </span></span>
<span class="line"><span>Sina      ✔     ✘     ✘     ✘     ✘     ✘    </span></span>
<span class="line"><span>----------------三网回程--基于oneclickvirt/backtrace开源----------------</span></span>
<span class="line"><span>北京电信 219.141.140.10  检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>北京联通 202.106.195.68  检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>北京移动 221.179.155.161 检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>上海电信 202.96.209.133  检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>上海联通 210.22.97.1     检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>上海移动 211.136.112.200 检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>广州电信 58.60.188.222   检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>广州联通 210.21.196.6    检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>广州移动 120.196.165.24  检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>成都电信 61.139.2.69     检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>成都联通 119.6.6.6       检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>成都移动 211.137.96.205  检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>准确线路自行查看详细路由，本测试结果仅作参考</span></span>
<span class="line"><span>同一目标地址多个线路时，可能检测已越过汇聚层，除了第一个线路外，后续信息可能无效</span></span>
<span class="line"><span>---------------------回程路由--感谢fscarmen开源及PR---------------------</span></span>
<span class="line"><span>依次测试电信/联通/移动经过的地区及线路，核心程序来自ipip.net或nexttrace，请知悉!</span></span>
<span class="line"><span>广州电信 58.60.188.222</span></span>
<span class="line"><span>158.01 ms       AS4134 中国 广东 深圳 福田区 www.chinatelecom.com.cn 电信</span></span>
<span class="line"><span>广州联通 210.21.196.6</span></span>
<span class="line"><span>167.56 ms       AS17623 中国 广东 深圳 宝安区 chinaunicom.cn 联通</span></span>
<span class="line"><span>广州移动 120.196.165.24</span></span>
<span class="line"><span>153.70 ms       AS56040 [APNIC-AP] 中国 广东 深圳 gd.10086.cn 移动</span></span>
<span class="line"><span>--------------------自动更新测速节点列表--本脚本原创--------------------</span></span>
<span class="line"><span>位置             上传速度        下载速度        延迟     丢包率</span></span>
<span class="line"><span>Speedtest.net    286.21 Mbps     283.49 Mbps     0.79     0.0%</span></span>
<span class="line"><span>洛杉矶           286.50 Mbps     283.48 Mbps     0.83     0.0%</span></span>
<span class="line"><span>日本东京         267.67 Mbps     279.73 Mbps     106.59   0.3%</span></span>
<span class="line"><span>联通上海5G       13.79 Mbps      316.38 Mbps     146.99   0.0%</span></span>
<span class="line"><span>联通WuXi         149.04 Mbps     279.60 Mbps     147.71   0.0%</span></span>
<span class="line"><span>电信浙江         256.48 Mbps     190.95 Mbps     141.71   NULL</span></span>
<span class="line"><span>电信浙江         253.49 Mbps     194.22 Mbps     147.04   NULL</span></span>
<span class="line"><span>移动Fujian       128.34 Mbps     255.23 Mbps     148.18   NULL</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span>
<span class="line"><span> 总共花费      : 7 分 9 秒</span></span>
<span class="line"><span> 时间          : Thu Jan  9 17:17:51 CST 2025</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[语雀服务崩了后谈]]></title>
            <link>https://www.tteam.icu/blog/ops/语雀服务崩了后谈</link>
            <guid isPermaLink="false">/blog/ops/语雀服务崩了后谈</guid>
            <pubDate>Tue, 07 Jan 2025 09:56:12 GMT</pubDate>
            <description><![CDATA[基于语雀服务崩溃事件，讨论数据备份的重要性及作者个人的笔记存储方案]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="语雀服务崩了后谈"><a href="#语雀服务崩了后谈" class="rp-header-anchor rp-link" aria-hidden="true">#</a>语雀服务崩了后谈<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="该文章为补档并发布在别的地方写于20231025"><a href="#该文章为补档并发布在别的地方写于20231025" class="rp-header-anchor rp-link" aria-hidden="true">#</a>该文章为补档，并发布在别的地方，写于2023/10/25</h2>
<p>语雀服务在23号崩溃了约10小时，借此机会想聊聊这个事件</p>
<p>说个笑话: 语雀服务崩溃后，运维的脚本都存在语雀里拿不出来，所以才崩溃了那么久(当然这只是玩笑)</p>
<p>现在程序员的现状: 开发完一个项目后，团队中的大多数人可能会被优化或转岗(能写个交接文档已经算不错了)，而新接手的人员往往无法快速熟悉项目(我认为这是服务恢复缓慢的主要原因，尽管语雀官方声明是旧存储系统的问题)</p>
<p>通过这个事件我们可以认识到，即便是大厂也无法保证服务的绝对高可用，因此重要数据一定要做好备份！！！不能只依赖网盘存储！！！正确的备份方式应遵循3-2-1原则: 3个数据副本、2种不同备份介质、1个异地灾备中心</p>
<p>借此机会，我今天上班时也与开发同事聊了5分钟，讨论了新的笔记存储方案: 使用Markdown+VuePress+Git，并自动部署在自己的服务器上，实现随时随地访问。这种方案相对安全，做到了本地、服务器和GitHub三地备份</p>
<p>目前我个人的笔记存储方法是: 将所有图片存储在自己的服务器上，笔记和开源项目文档存入Git仓库(每次推送至自建Git服务，由服务器分发到码云和GitHub，然后触发GitHub Actions自动打包为静态文件并推送到docs分支，最后由GitHub Pages自动部署，并将静态文件同步到码云)。这套流程看起来复杂，实际搭建起来并不困难，且实现了本地、自己服务器和两个Git平台的多备份，同时支持随时随地访问</p>
<p>至于大文件的存储，我和同事都在家中搭建了NAS(网络附属存储，可理解为本地化的云盘)来存储数据</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[年报 2024]]></title>
            <link>https://www.tteam.icu/blog/record/yearly/Y2024</link>
            <guid isPermaLink="false">/blog/record/yearly/Y2024</guid>
            <pubDate>Mon, 06 Jan 2025 23:24:55 GMT</pubDate>
            <description><![CDATA[2024年个人年度总结，包括旅行经历、技术学习、运维经验和个人变化]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2024年年度总结"><a href="#2024年年度总结" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2024年年度总结<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="年度回顾"><a href="#年度回顾" class="rp-header-anchor rp-link" aria-hidden="true">#</a>年度回顾</h2>
<ul>
<li>旅行: 今年去过重庆、成都、上海、厦门等地</li>
<li>技术开发: <code>Python</code>语言更加精通，新学习了<code>React</code>技术栈，开始学习<code>Golang</code></li>
<li>运维工作: 对各种系统的配置文件和组件更加熟悉，积累了丰富的运维经验</li>
<li>服务器支出: VPS相关支出约3000元</li>
<li>个人变化: 体重下降了20斤</li>
<li>感情状况: 仍然单身</li>
</ul>
<h2 class="rp-toc-include" id="附录"><a href="#附录" class="rp-header-anchor rp-link" aria-hidden="true">#</a>附录</h2>
<h3 class="rp-toc-include" id="github年度报告"><a href="#github年度报告" class="rp-header-anchor rp-link" aria-hidden="true">#</a>GitHub年度报告</h3>
<h4 class="rp-toc-include" id="年报视频"><a href="#年报视频" class="rp-header-anchor rp-link" aria-hidden="true">#</a>年报视频</h4>
<p><a href="https://www.bilibili.com/video/BV1dCr3YqE9F" target="_blank" rel="noopener noreferrer" class="rp-link">点我跳转</a></p>
<h4 class="rp-toc-include" id="贡献图"><a href="#贡献图" class="rp-header-anchor rp-link" aria-hidden="true">#</a>贡献图</h4>
<p><img src="https://img.tteam.icu/i/2025/01/06/oxu874-3.webp" alt=""/></p>
<h3 class="rp-toc-include" id="wakatime编码报告"><a href="#wakatime编码报告" class="rp-header-anchor rp-link" aria-hidden="true">#</a>WakaTime编码报告</h3>
<p><img src="https://img.tteam.icu/i/2025/01/06/ny4wmh-3.webp" alt=""/></p>
<h3 class="rp-toc-include" id="应用使用报告"><a href="#应用使用报告" class="rp-header-anchor rp-link" aria-hidden="true">#</a>应用使用报告</h3>
<h4 class="rp-toc-include" id="高德地图"><a href="#高德地图" class="rp-header-anchor rp-link" aria-hidden="true">#</a>高德地图</h4>
<p><img src="https://img.tteam.icu/i/2025/01/06/p44t02-3.webp" alt=""/></p>
<h4 class="rp-toc-include" id="网易云音乐"><a href="#网易云音乐" class="rp-header-anchor rp-link" aria-hidden="true">#</a>网易云音乐</h4>
<p><img src="https://img.tteam.icu/i/2025/01/06/p4hex5-3.webp" alt=""/></p>
<h4 class="rp-toc-include" id="哔哩哔哩"><a href="#哔哩哔哩" class="rp-header-anchor rp-link" aria-hidden="true">#</a>哔哩哔哩</h4>
<p><img src="https://img.tteam.icu/i/2025/01/06/p4lems-3.webp" alt=""/></p>
<h2 class="rp-toc-include" id="个人感想"><a href="#个人感想" class="rp-header-anchor rp-link" aria-hidden="true">#</a>个人感想</h2>
<p>我于2024年1月2日转岗成为运维工程师，到写这篇文章时正好满一年</p>
<p>在运维岗位上，我学到了大量运维知识，其中最重要的是积累了丰富的运维经验</p>
<p>经验对于运维工作来说尤为重要</p>
<p>希望在新的一年能够在开发和运维方面取得更大的进步</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[周记 2025 Week 01]]></title>
            <link>https://www.tteam.icu/blog/record/weekly/2025/W01</link>
            <guid isPermaLink="false">/blog/record/weekly/2025/W01</guid>
            <pubDate>Sun, 05 Jan 2025 23:24:55 GMT</pubDate>
            <description><![CDATA[2025年第一周的工作总结，包括网站主页功能增强、博客评论系统添加和Windows服务器自动化管理]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2025-week-01"><a href="#2025-week-01" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2025 Week 01<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<p>完善了<a href="https://www.tteam.icu/" target="_blank" rel="noopener noreferrer" class="rp-link">网站主页</a>:</p>
<ul>
<li>图片界面改为从API获取图片，并增加了图片内容</li>
<li>为博客添加了评论系统，使用<a href="https://github.com/utterance/utterances" target="_blank" rel="noopener noreferrer" class="rp-link">utterances</a>实现</li>
<li>为<code>GitHub</code>主页添加了自动展示博客文章的功能，使用<a href="https://github.com/gautamkrishnar/blog-post-workflow" target="_blank" rel="noopener noreferrer" class="rp-link">blog-post-workflow</a>实现</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul>
<li>使用<code>Ansible</code>实现自动化控制<code>Windows</code>服务器的服务上线</li>
<li>尝试使用<a href="https://github.com/prometheus-community/windows_exporter" target="_blank" rel="noopener noreferrer" class="rp-link">windows_exporter</a>监控<code>Windows</code>服务器</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[周记 2024 Week 52]]></title>
            <link>https://www.tteam.icu/blog/record/weekly/2024/W52</link>
            <guid isPermaLink="false">/blog/record/weekly/2024/W52</guid>
            <pubDate>Sun, 29 Dec 2024 20:44:20 GMT</pubDate>
            <description><![CDATA[2024年第52周的工作总结，包括网站主页优化、开发工具尝试和运维技术探索]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2024-week-52"><a href="#2024-week-52" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2024 Week 52<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<p>完善了<a href="https://www.tteam.icu/" target="_blank" rel="noopener noreferrer" class="rp-link">网站主页</a>:</p>
<ul>
<li>添加了Git参数显示</li>
<li>使用<a href="https://github.com/nfl/react-helmet" target="_blank" rel="noopener noreferrer" class="rp-link">react-helmet</a>向<code>head</code>中添加JS和meta标签</li>
</ul>
<p>工具与框架探索:</p>
<ul>
<li>尝试了<a href="https://www.cursor.com/" target="_blank" rel="noopener noreferrer" class="rp-link">cursor</a>编辑器，体验良好</li>
<li>调研了<code>Golang</code>框架，最终选择<a href="https://github.com/gogf/gf" target="_blank" rel="noopener noreferrer" class="rp-link">GoFrame</a>作为学习<code>Golang</code>后的第一个框架</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul>
<li>尝试使用<a href="https://www.tteam.icu/ops/service/ansible" target="_blank" rel="noopener noreferrer" class="rp-link">Ansible</a>控制<code>Windows</code>系统</li>
<li>体验了<code>ELK</code>日志系统的部署流程，发现其资源消耗较大，仅启动就占用约8G内存，相比之下基于<code>ClickHouse</code>的日志系统更为轻量</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[cloudflare 加载git信息]]></title>
            <link>https://www.tteam.icu/blog/dev/cloudflare加载git信息</link>
            <guid isPermaLink="false">/blog/dev/cloudflare加载git信息</guid>
            <pubDate>Fri, 27 Dec 2024 18:56:12 GMT</pubDate>
            <description><![CDATA[解决Cloudflare Pages构建时Git信息获取异常的问题，确保正确显示分支、提交数等信息]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="cloudflare加载git信息"><a href="#cloudflare加载git信息" class="rp-header-anchor rp-link" aria-hidden="true">#</a>cloudflare加载git信息<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="前言"><a href="#前言" class="rp-header-anchor rp-link" aria-hidden="true">#</a>前言</h2>
<p>我之前会将<code>git</code>的信息获取后注入到<code>head</code>中</p>
<p>将<a href="https://note.tteam.icu" target="_blank" rel="noopener noreferrer" class="rp-link">笔记</a>、<a href="https://blog.tteam.icu" target="_blank" rel="noopener noreferrer" class="rp-link">博客</a>和<a href="https://www.tteam.icu" target="_blank" rel="noopener noreferrer" class="rp-link">关于我</a>从<code>Jenkins</code>自动化迁移到<code>Cloudflare</code>后，发现获取git参数时出现问题</p>
<p>在Cloudflare编译环境中，git分支会显示为<code>HEAD</code>，git提交数永远显示为<code>1</code></p>
<h2 class="rp-toc-include" id="开始"><a href="#开始" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开始</h2>
<p>经过我一系列的测试，发现在构建命令前增加几个命令即可</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">git</span><span style="color:var(--shiki-token-string)"> fetch</span><span style="color:var(--shiki-token-string)"> --unshallow</span><span style="color:var(--shiki-token-punctuation)"> &amp;&amp;</span><span style="color:var(--shiki-token-function)"> git</span><span style="color:var(--shiki-token-string)"> fetch</span><span style="color:var(--shiki-token-string)"> origin</span><span style="color:var(--shiki-token-punctuation)"> &amp;&amp;</span><span style="color:var(--shiki-token-function)"> git</span><span style="color:var(--shiki-token-string)"> checkout</span><span style="color:var(--shiki-token-string)"> main</span><span style="color:var(--shiki-token-punctuation)"> &amp;&amp;</span><span style="color:var(--shiki-token-function)"> git</span><span style="color:var(--shiki-token-string)"> pull</span><span style="color:var(--shiki-token-string)"> origin</span><span style="color:var(--shiki-token-string)"> main</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="附录"><a href="#附录" class="rp-header-anchor rp-link" aria-hidden="true">#</a>附录</h2>
<h3 class="rp-toc-include" id="获取git参数"><a href="#获取git参数" class="rp-header-anchor rp-link" aria-hidden="true">#</a>获取git参数</h3>
<div class="rp-codeblock language-js"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="js"><code><span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> fs</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> require</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;fs&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-foreground)"> { </span><span style="color:var(--shiki-token-constant)">execSync</span><span style="color:var(--shiki-foreground)"> } </span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-function)"> require</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;child_process&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> path</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> require</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;path&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">function</span><span style="color:var(--shiki-token-function)"> convertTime</span><span style="color:var(--shiki-foreground)">(date) {</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)">    date</span><span style="color:var(--shiki-token-function)">.setUTCHours</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCHours</span><span style="color:var(--shiki-foreground)">() </span><span style="color:var(--shiki-token-keyword)">+</span><span style="color:var(--shiki-token-constant)"> 8</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> year</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-constant)"> date</span><span style="color:var(--shiki-token-function)">.getUTCFullYear</span><span style="color:var(--shiki-foreground)">();</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> month</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> String</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCMonth</span><span style="color:var(--shiki-foreground)">() </span><span style="color:var(--shiki-token-keyword)">+</span><span style="color:var(--shiki-token-constant)"> 1</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-function)">.padStart</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">2</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;0&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> day</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> String</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCDate</span><span style="color:var(--shiki-foreground)">())</span><span style="color:var(--shiki-token-function)">.padStart</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">2</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;0&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> hours</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> String</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCHours</span><span style="color:var(--shiki-foreground)">())</span><span style="color:var(--shiki-token-function)">.padStart</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">2</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;0&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> minutes</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> String</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCMinutes</span><span style="color:var(--shiki-foreground)">())</span><span style="color:var(--shiki-token-function)">.padStart</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">2</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;0&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> seconds</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> String</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCSeconds</span><span style="color:var(--shiki-foreground)">())</span><span style="color:var(--shiki-token-function)">.padStart</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">2</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;0&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    return</span><span style="color:var(--shiki-token-string-expression)"> `</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">year</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">-</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">month</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">-</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">day</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-keyword)"> ${</span><span style="color:var(--shiki-foreground)">hours</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">:</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">minutes</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">:</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">seconds</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">`</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 获取 Git 哈希</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> gitHash</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> execSync</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;git rev-parse --short HEAD&#x27;</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-function)">.toString</span><span style="color:var(--shiki-foreground)">()</span><span style="color:var(--shiki-token-function)">.trim</span><span style="color:var(--shiki-foreground)">();</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 获取 Git 分支</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> gitBranch</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> execSync</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;git rev-parse --abbrev-ref HEAD&#x27;</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-function)">.toString</span><span style="color:var(--shiki-foreground)">()</span><span style="color:var(--shiki-token-function)">.trim</span><span style="color:var(--shiki-foreground)">();</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 获取 Git 提交时间</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> commitDateStr</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> execSync</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;git log -1 --format=%cd&#x27;</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-function)">.toString</span><span style="color:var(--shiki-foreground)">()</span><span style="color:var(--shiki-token-function)">.trim</span><span style="color:var(--shiki-foreground)">();</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> commitDate</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> convertTime</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-keyword)">new</span><span style="color:var(--shiki-token-function)"> Date</span><span style="color:var(--shiki-foreground)">(commitDateStr));</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 获取构建时间</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> buildTime</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> convertTime</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-keyword)">new</span><span style="color:var(--shiki-token-function)"> Date</span><span style="color:var(--shiki-foreground)">());</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 获取 Git 提交次数</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> commitCount</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> execSync</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;git rev-list --count HEAD&#x27;</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-function)">.toString</span><span style="color:var(--shiki-foreground)">()</span><span style="color:var(--shiki-token-function)">.trim</span><span style="color:var(--shiki-foreground)">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> buildInfo</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    buildTime</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    gitBranch</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    gitHash</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    commitCount</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    commitDate</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">};</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 确保目录存在</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> outputDir</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-constant)"> path</span><span style="color:var(--shiki-token-function)">.join</span><span style="color:var(--shiki-foreground)">(__dirname</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;../default_data&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">if</span><span style="color:var(--shiki-foreground)"> (</span><span style="color:var(--shiki-token-keyword)">!</span><span style="color:var(--shiki-token-constant)">fs</span><span style="color:var(--shiki-token-function)">.existsSync</span><span style="color:var(--shiki-foreground)">(outputDir)) {</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)">    fs</span><span style="color:var(--shiki-token-function)">.mkdirSync</span><span style="color:var(--shiki-foreground)">(outputDir</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-foreground)"> { recursive</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> true</span><span style="color:var(--shiki-foreground)"> });</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 写入为 JavaScript 文件，包含 const 变量</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> jsContent</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-string-expression)"> `export const buildInfo = </span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-token-constant)">JSON</span><span style="color:var(--shiki-token-function)">.stringify</span><span style="color:var(--shiki-foreground)">(buildInfo</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-constant)"> null</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-constant)"> 2</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">;`</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-constant)">fs</span><span style="color:var(--shiki-token-function)">.writeFileSync</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">path</span><span style="color:var(--shiki-token-function)">.join</span><span style="color:var(--shiki-foreground)">(outputDir</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;buildInfo.js&#x27;</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-foreground)"> jsContent);</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)">console</span><span style="color:var(--shiki-token-function)">.log</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;构建信息已保存为 JavaScript 文件:&#x27;</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-foreground)"> buildInfo);</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="react中注入"><a href="#react中注入" class="rp-header-anchor rp-link" aria-hidden="true">#</a><code>react</code>中注入</h3>
<div class="rp-codeblock language-jsx"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="jsx"><code><span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-function)"> App</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> () </span><span style="color:var(--shiki-token-keyword)">=&gt;</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">    // 判断当前环境是生产环境还是开发环境</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> isProduction</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-constant)"> process</span><span style="color:var(--shiki-foreground)">.</span><span style="color:var(--shiki-token-constant)">env</span><span style="color:var(--shiki-foreground)">.</span><span style="color:var(--shiki-token-constant)">NODE_ENV</span><span style="color:var(--shiki-token-keyword)"> ===</span><span style="color:var(--shiki-token-string-expression)"> &#x27;production&#x27;</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    return</span><span style="color:var(--shiki-foreground)"> (</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        &lt;&gt;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">            {isProduction </span><span style="color:var(--shiki-token-keyword)">&amp;&amp;</span><span style="color:var(--shiki-foreground)"> (</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">                &lt;</span><span style="color:var(--shiki-token-constant)">Helmet</span><span style="color:var(--shiki-foreground)">&gt;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">                    {</span><span style="color:var(--shiki-token-comment)">/* 动态注入构建信息到 &lt;head&gt; */</span><span style="color:var(--shiki-foreground)">}</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">                    &lt;</span><span style="color:var(--shiki-token-string-expression)">meta</span><span style="color:var(--shiki-token-function)"> name</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;git-hash&quot;</span><span style="color:var(--shiki-token-function)"> content</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-foreground)">{</span><span style="color:var(--shiki-token-constant)">buildInfo</span><span style="color:var(--shiki-foreground)">.gitHash}/&gt;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">                    &lt;</span><span style="color:var(--shiki-token-string-expression)">meta</span><span style="color:var(--shiki-token-function)"> name</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;git-branch&quot;</span><span style="color:var(--shiki-token-function)"> content</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-foreground)">{</span><span style="color:var(--shiki-token-constant)">buildInfo</span><span style="color:var(--shiki-foreground)">.gitBranch}/&gt;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">                    &lt;</span><span style="color:var(--shiki-token-string-expression)">meta</span><span style="color:var(--shiki-token-function)"> name</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;commit-date&quot;</span><span style="color:var(--shiki-token-function)"> content</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-foreground)">{</span><span style="color:var(--shiki-token-constant)">buildInfo</span><span style="color:var(--shiki-foreground)">.commitDate}/&gt;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">                    &lt;</span><span style="color:var(--shiki-token-string-expression)">meta</span><span style="color:var(--shiki-token-function)"> name</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;commit-count&quot;</span><span style="color:var(--shiki-token-function)"> content</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-foreground)">{</span><span style="color:var(--shiki-token-constant)">buildInfo</span><span style="color:var(--shiki-foreground)">.commitCount}/&gt;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">                    &lt;</span><span style="color:var(--shiki-token-string-expression)">meta</span><span style="color:var(--shiki-token-function)"> name</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;build-time&quot;</span><span style="color:var(--shiki-token-function)"> content</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-foreground)">{</span><span style="color:var(--shiki-token-constant)">buildInfo</span><span style="color:var(--shiki-foreground)">.buildTime}/&gt;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">                &lt;/</span><span style="color:var(--shiki-token-constant)">Helmet</span><span style="color:var(--shiki-foreground)">&gt;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">            )}</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        &lt;/&gt;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    )</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="vuepress中注入"><a href="#vuepress中注入" class="rp-header-anchor rp-link" aria-hidden="true">#</a><code>vuepress</code>中注入</h3>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">//</span><span style="color:var(--shiki-token-string)"> 如果是生产环境，则注入构建信息到</span><span style="color:var(--shiki-token-string)"> head</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">let</span><span style="color:var(--shiki-token-string)"> headConfig</span><span style="color:var(--shiki-token-string)"> =</span><span style="color:var(--shiki-foreground)"> [</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    [</span><span style="color:var(--shiki-token-string-expression)">&#x27;meta&#x27;</span><span style="color:var(--shiki-foreground)">, {name: </span><span style="color:var(--shiki-token-string-expression)">&#x27;author&#x27;</span><span style="color:var(--shiki-foreground)">, content: author}]</span><span style="color:var(--shiki-token-function)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    [</span><span style="color:var(--shiki-token-string-expression)">&#x27;meta&#x27;</span><span style="color:var(--shiki-foreground)">, {name: </span><span style="color:var(--shiki-token-string-expression)">&#x27;description&#x27;</span><span style="color:var(--shiki-foreground)">, content: description}]</span><span style="color:var(--shiki-token-function)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">];</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">//</span><span style="color:var(--shiki-token-string)"> 如果是</span><span style="color:var(--shiki-token-string)"> build，就不打印</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">if</span><span style="color:var(--shiki-foreground)"> (</span><span style="color:var(--shiki-token-function)">process.env.NODE_ENV</span><span style="color:var(--shiki-token-string)"> ===</span><span style="color:var(--shiki-token-string-expression)"> &#x27;production&#x27;</span><span style="color:var(--shiki-foreground)">) {</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">    headConfig</span><span style="color:var(--shiki-token-string)"> =</span><span style="color:var(--shiki-foreground)"> [</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">        ..</span><span style="color:var(--shiki-token-string)">.headConfig,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        [</span><span style="color:var(--shiki-token-string-expression)">&#x27;meta&#x27;</span><span style="color:var(--shiki-foreground)">, {name: </span><span style="color:var(--shiki-token-string-expression)">&#x27;git-branch&#x27;</span><span style="color:var(--shiki-foreground)">, content: buildInfo.gitBranch}]</span><span style="color:var(--shiki-token-function)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        [</span><span style="color:var(--shiki-token-string-expression)">&#x27;meta&#x27;</span><span style="color:var(--shiki-foreground)">, {name: </span><span style="color:var(--shiki-token-string-expression)">&#x27;git-commit-sha&#x27;</span><span style="color:var(--shiki-foreground)">, content: buildInfo.gitHash}]</span><span style="color:var(--shiki-token-function)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        [</span><span style="color:var(--shiki-token-string-expression)">&#x27;meta&#x27;</span><span style="color:var(--shiki-foreground)">, {name: </span><span style="color:var(--shiki-token-string-expression)">&#x27;git-commit-time&#x27;</span><span style="color:var(--shiki-foreground)">, content: buildInfo.commitDate}]</span><span style="color:var(--shiki-token-function)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        [</span><span style="color:var(--shiki-token-string-expression)">&#x27;meta&#x27;</span><span style="color:var(--shiki-foreground)">, {name: </span><span style="color:var(--shiki-token-string-expression)">&#x27;git-commit-count&#x27;</span><span style="color:var(--shiki-foreground)">, content: buildInfo.commitCount}]</span><span style="color:var(--shiki-token-function)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        [</span><span style="color:var(--shiki-token-string-expression)">&#x27;meta&#x27;</span><span style="color:var(--shiki-foreground)">, {name: </span><span style="color:var(--shiki-token-string-expression)">&#x27;build-time&#x27;</span><span style="color:var(--shiki-foreground)">, content: buildInfo.buildTime}]</span><span style="color:var(--shiki-token-function)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        [</span><span style="color:var(--shiki-token-string-expression)">&#x27;meta&#x27;</span><span style="color:var(--shiki-foreground)">, {name: </span><span style="color:var(--shiki-token-string-expression)">&#x27;time-zone&#x27;</span><span style="color:var(--shiki-foreground)">, content: timeZone}]</span><span style="color:var(--shiki-token-function)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        [</span><span style="color:var(--shiki-token-string-expression)">&#x27;script&#x27;</span><span style="color:var(--shiki-foreground)">, {</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">            src: </span><span style="color:var(--shiki-token-string-expression)">&#x27;https://umami.tteam.icu/script.js&#x27;</span><span style="color:var(--shiki-foreground)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">            async: </span><span style="color:var(--shiki-token-string-expression)">&#x27;async&#x27;</span><span style="color:var(--shiki-foreground)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">            defer: </span><span style="color:var(--shiki-token-string-expression)">&#x27;defer&#x27;</span><span style="color:var(--shiki-foreground)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">            &#x27;data-website-id&#x27;</span><span style="color:var(--shiki-foreground)">: </span><span style="color:var(--shiki-token-string-expression)">&#x27;6e757c22-77d9-495a-85b6-d2cbd2efcbb3&#x27;</span><span style="color:var(--shiki-foreground)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        }]</span><span style="color:var(--shiki-token-function)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    ];</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">//</span><span style="color:var(--shiki-token-string)"> 然后在配置中填入变量</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="hexo中注入"><a href="#hexo中注入" class="rp-header-anchor rp-link" aria-hidden="true">#</a><code>hexo</code>中注入</h3>
<p>在<code>hexo</code>中有点特殊，需要用官方的<a href="https://hexo.io/zh-cn/api/injector.html" target="_blank" rel="noopener noreferrer" class="rp-link">Injector</a></p>
<p>把获取脚本放入<code>cmd</code>目录即可实现</p>
<div class="rp-codeblock language-js"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="js"><code><span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> fs</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> require</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;fs&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-foreground)"> { </span><span style="color:var(--shiki-token-constant)">execSync</span><span style="color:var(--shiki-foreground)"> } </span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-function)"> require</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;child_process&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> path</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> require</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;path&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">function</span><span style="color:var(--shiki-token-function)"> convertTime</span><span style="color:var(--shiki-foreground)">(date) {</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)">    date</span><span style="color:var(--shiki-token-function)">.setUTCHours</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCHours</span><span style="color:var(--shiki-foreground)">() </span><span style="color:var(--shiki-token-keyword)">+</span><span style="color:var(--shiki-token-constant)"> 8</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> year</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-constant)"> date</span><span style="color:var(--shiki-token-function)">.getUTCFullYear</span><span style="color:var(--shiki-foreground)">();</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> month</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> String</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCMonth</span><span style="color:var(--shiki-foreground)">() </span><span style="color:var(--shiki-token-keyword)">+</span><span style="color:var(--shiki-token-constant)"> 1</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-function)">.padStart</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">2</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;0&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> day</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> String</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCDate</span><span style="color:var(--shiki-foreground)">())</span><span style="color:var(--shiki-token-function)">.padStart</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">2</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;0&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> hours</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> String</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCHours</span><span style="color:var(--shiki-foreground)">())</span><span style="color:var(--shiki-token-function)">.padStart</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">2</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;0&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> minutes</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> String</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCMinutes</span><span style="color:var(--shiki-foreground)">())</span><span style="color:var(--shiki-token-function)">.padStart</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">2</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;0&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    const</span><span style="color:var(--shiki-token-constant)"> seconds</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> String</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">date</span><span style="color:var(--shiki-token-function)">.getUTCSeconds</span><span style="color:var(--shiki-foreground)">())</span><span style="color:var(--shiki-token-function)">.padStart</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">2</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;0&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    return</span><span style="color:var(--shiki-token-string-expression)"> `</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">year</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">-</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">month</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">-</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">day</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-keyword)"> ${</span><span style="color:var(--shiki-foreground)">hours</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">:</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">minutes</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">:</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">seconds</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">`</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 获取 Git 哈希</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> gitHash</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> execSync</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;git rev-parse --short HEAD&#x27;</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-function)">.toString</span><span style="color:var(--shiki-foreground)">()</span><span style="color:var(--shiki-token-function)">.trim</span><span style="color:var(--shiki-foreground)">();</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 获取 Git 分支</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> gitBranch</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> execSync</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;git rev-parse --abbrev-ref HEAD&#x27;</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-function)">.toString</span><span style="color:var(--shiki-foreground)">()</span><span style="color:var(--shiki-token-function)">.trim</span><span style="color:var(--shiki-foreground)">();</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 获取 Git 提交时间</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> commitDateStr</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> execSync</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;git log -1 --format=%cd&#x27;</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-function)">.toString</span><span style="color:var(--shiki-foreground)">()</span><span style="color:var(--shiki-token-function)">.trim</span><span style="color:var(--shiki-foreground)">();</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> commitDate</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> convertTime</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-keyword)">new</span><span style="color:var(--shiki-token-function)"> Date</span><span style="color:var(--shiki-foreground)">(commitDateStr));</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 获取构建时间</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> buildTime</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> convertTime</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-keyword)">new</span><span style="color:var(--shiki-token-function)"> Date</span><span style="color:var(--shiki-foreground)">());</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 获取 Git 提交次数</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> commitCount</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-function)"> execSync</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;git rev-list --count HEAD&#x27;</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-function)">.toString</span><span style="color:var(--shiki-foreground)">()</span><span style="color:var(--shiki-token-function)">.trim</span><span style="color:var(--shiki-foreground)">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> buildInfo</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    buildTime</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    gitBranch</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    gitHash</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    commitCount</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    commitDate</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">};</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// 确保目录存在</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> outputDir</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-constant)"> path</span><span style="color:var(--shiki-token-function)">.join</span><span style="color:var(--shiki-foreground)">(__dirname</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;../scripts&#x27;</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">if</span><span style="color:var(--shiki-foreground)"> (</span><span style="color:var(--shiki-token-keyword)">!</span><span style="color:var(--shiki-token-constant)">fs</span><span style="color:var(--shiki-token-function)">.existsSync</span><span style="color:var(--shiki-foreground)">(outputDir)) {</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)">    fs</span><span style="color:var(--shiki-token-function)">.mkdirSync</span><span style="color:var(--shiki-foreground)">(outputDir</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-foreground)"> { recursive</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> true</span><span style="color:var(--shiki-foreground)"> });</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">const</span><span style="color:var(--shiki-token-constant)"> jsContent</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-string-expression)"> `hexo.extend.injector.register(&#x27;head_begin&#x27;, &#x27;&lt;meta name=&quot;git-branch&quot; content=&quot;</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">gitBranch</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">&quot;&gt;&#x27;, &#x27;default&#x27;);</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">hexo.extend.injector.register(&#x27;head_begin&#x27;, &#x27;&lt;meta name=&quot;git-commit-sha&quot; content=&quot;</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">gitHash</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">&quot;&gt;&#x27;, &#x27;default&#x27;);</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">hexo.extend.injector.register(&#x27;head_begin&#x27;, &#x27;&lt;meta name=&quot;git-commit-time&quot; content=&quot;</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">commitDate</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">&quot;&gt;&#x27;, &#x27;default&#x27;);</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">hexo.extend.injector.register(&#x27;head_begin&#x27;, &#x27;&lt;meta name=&quot;git-commit-count&quot; content=&quot;</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">commitCount</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">&quot;&gt;&#x27;, &#x27;default&#x27;);</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">hexo.extend.injector.register(&#x27;head_begin&#x27;, &#x27;&lt;meta name=&quot;build-time&quot; content=&quot;</span><span style="color:var(--shiki-token-keyword)">${</span><span style="color:var(--shiki-foreground)">buildTime</span><span style="color:var(--shiki-token-keyword)">}</span><span style="color:var(--shiki-token-string-expression)">&quot;&gt;&#x27;, &#x27;default&#x27;);`</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-constant)">fs</span><span style="color:var(--shiki-token-function)">.writeFileSync</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-constant)">path</span><span style="color:var(--shiki-token-function)">.join</span><span style="color:var(--shiki-foreground)">(outputDir</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &#x27;gitData.js&#x27;</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-foreground)"> jsContent);</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)">console</span><span style="color:var(--shiki-token-function)">.log</span><span style="color:var(--shiki-foreground)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;构建信息:&#x27;</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-foreground)"> buildInfo);</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[周记 2024 Week 51]]></title>
            <link>https://www.tteam.icu/blog/record/weekly/2024/W51</link>
            <guid isPermaLink="false">/blog/record/weekly/2024/W51</guid>
            <pubDate>Sun, 22 Dec 2024 23:07:25 GMT</pubDate>
            <description><![CDATA[2024年第51周的工作总结，包括网站主页完善、开发计划和运维工具探索]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2024-week-51"><a href="#2024-week-51" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2024 Week 51<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<p>完善了<a href="https://www.tteam.icu/" target="_blank" rel="noopener noreferrer" class="rp-link">网站主页</a>:</p>
<ul>
<li>添加了水印功能</li>
<li>实现了返回顶部按钮</li>
<li>增加了Wakatime更新时间显示</li>
</ul>
<p>网站主页开发已基本完成，接下来计划:</p>
<ul>
<li>继续学习<code>Golang</code></li>
<li>开发一个类似<code>Nacos</code>的配置文件管理后台</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul>
<li>发现了比<code>du</code>命令更好用的<a href="https://github.com/bootandy/dust" target="_blank" rel="noopener noreferrer" class="rp-link">dust</a>工具</li>
<li>尝试在<code>鲲鹏架构</code>服务器上编译<code>Chromium</code>，但未成功，具体过程可参考<a href="https://blog.tteam.icu/dev/%E9%B2%B2%E9%B9%8F%E7%BC%96%E8%AF%91Chromium/" target="_blank" rel="noopener noreferrer" class="rp-link">相关文章</a></li>
<li>计划学习<code>ELK</code>日志管理系统，因为发现许多公司仍在使用这套系统</li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[鲲鹏编译Chromium]]></title>
            <link>https://www.tteam.icu/blog/dev/鲲鹏编译Chromium</link>
            <guid isPermaLink="false">/blog/dev/鲲鹏编译Chromium</guid>
            <pubDate>Fri, 20 Dec 2024 20:56:12 GMT</pubDate>
            <description><![CDATA[记录在华为云鲲鹏架构服务器上编译Chromium的详细过程，包括环境准备、代理配置和遇到的问题]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="鲲鹏编译chromium"><a href="#鲲鹏编译chromium" class="rp-header-anchor rp-link" aria-hidden="true">#</a>鲲鹏编译Chromium<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="前言"><a href="#前言" class="rp-header-anchor rp-link" aria-hidden="true">#</a>前言</h2>
<p>鲲鹏服务器的架构与其他<code>ARM</code>架构有所不同，直接使用线上现成的二进制文件无法正常运行
本文记录了在鲲鹏架构服务器上编译Chromium的完整过程
使用的是华为云上海区域的<code>8C32G</code>鲲鹏架构服务器，操作系统为<code>Ubuntu</code>
代理方面，使用<code>gost</code>中转<code>socks5</code>代理</p>
<h2 class="rp-toc-include" id="代理准备"><a href="#代理准备" class="rp-header-anchor rp-link" aria-hidden="true">#</a>代理准备</h2>
<p>由于我用的是gost先要准备gost，但是官方编译的不支持，需要自己编译</p>
<h3 class="rp-toc-include" id="环境准备"><a href="#环境准备" class="rp-header-anchor rp-link" aria-hidden="true">#</a>环境准备</h3>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">wget</span><span style="color:var(--shiki-token-string)"> https://golang.google.cn/dl/go1.23.4.linux-arm64.tar.gz</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">rm</span><span style="color:var(--shiki-token-string)"> -rf</span><span style="color:var(--shiki-token-string)"> /usr/local/go</span><span style="color:var(--shiki-token-punctuation)"> &amp;&amp;</span><span style="color:var(--shiki-token-function)"> tar</span><span style="color:var(--shiki-token-string)"> -C</span><span style="color:var(--shiki-token-string)"> /usr/local</span><span style="color:var(--shiki-token-string)"> -xzf</span><span style="color:var(--shiki-token-string)"> go1.23.4.linux-arm64.tar.gz</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">export</span><span style="color:var(--shiki-foreground)"> PATH</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-foreground)">$PATH:/usr/local/go/bin</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">go</span><span style="color:var(--shiki-token-string)"> env</span><span style="color:var(--shiki-token-string)"> -w</span><span style="color:var(--shiki-token-string)"> GOPROXY=https://mirrors.aliyun.com/goproxy/,direct</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="开始编译"><a href="#开始编译" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开始编译</h3>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">git</span><span style="color:var(--shiki-token-string)"> clone</span><span style="color:var(--shiki-token-string)"> https://github.com/go-gost/gost.git</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">cd</span><span style="color:var(--shiki-token-string)"> gost/cmd/gost</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">go</span><span style="color:var(--shiki-token-string)"> build</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="代理配置"><a href="#代理配置" class="rp-header-anchor rp-link" aria-hidden="true">#</a>代理配置</h2>
<p>git配置</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">git</span><span style="color:var(--shiki-token-string)"> config</span><span style="color:var(--shiki-token-string)"> --global</span><span style="color:var(--shiki-token-string)"> http.proxy</span><span style="color:var(--shiki-token-string-expression)"> &#x27;socks5://127.0.0.1:1080&#x27;</span><span style="color:var(--shiki-foreground)"> </span></span>
<span class="line"><span style="color:var(--shiki-token-function)">git</span><span style="color:var(--shiki-token-string)"> config</span><span style="color:var(--shiki-token-string)"> --global</span><span style="color:var(--shiki-token-string)"> https.proxy</span><span style="color:var(--shiki-token-string-expression)"> &#x27;socks5://127.0.0.1:1080&#x27;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)"># 关闭代理</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">git</span><span style="color:var(--shiki-token-string)"> config</span><span style="color:var(--shiki-token-string)"> --global</span><span style="color:var(--shiki-token-string)"> --unset</span><span style="color:var(--shiki-token-string)"> http.proxy</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">git</span><span style="color:var(--shiki-token-string)"> config</span><span style="color:var(--shiki-token-string)"> --global</span><span style="color:var(--shiki-token-string)"> --unset</span><span style="color:var(--shiki-token-string)"> https.proxy</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>终端代理</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">sudo</span><span style="color:var(--shiki-token-string)"> apt-get</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> polipo</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>配置<code>/etc/polipo/config</code></p>
<div class="rp-codeblock language-ini"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="ini"><code><span class="line"><span style="color:var(--shiki-token-keyword)">logSyslog</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> true:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">logFile</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-string-expression)"> &quot;/var/log/polipo/polipo.log&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">socksParentProxy</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-string-expression)"> &quot;127.0.0.1:1080&quot;</span><span style="color:var(--shiki-token-comment)">  #这是socks代理的地址和端口</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">socksProxyType</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> socks5</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">chunkHighMark</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 50331648</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">objectHighMark</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 16384</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">serverMaxSlots</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 64</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">serverSlots</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 16</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">serverSlots1</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 32</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)"># 我们最后要使用这个地址作为代理，它会去走SSR的代理</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">proxyAddress</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-token-string-expression)"> &quot;127.0.0.1&quot;</span><span style="color:var(--shiki-token-comment)"> #这是本代理的地址端口 </span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">proxyPort</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 8123</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">service</span><span style="color:var(--shiki-token-string)"> polipo</span><span style="color:var(--shiki-token-string)"> restart</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">export</span><span style="color:var(--shiki-foreground)"> http_proxy</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;http://127.0.0.1:8123&quot;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">export</span><span style="color:var(--shiki-foreground)"> https_proxy</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;http://127.0.0.1:8123&quot;</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="换源"><a href="#换源" class="rp-header-anchor rp-link" aria-hidden="true">#</a>换源</h2>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">cat</span><span style="color:var(--shiki-token-keyword)"> &lt;&lt;</span><span style="color:var(--shiki-foreground)"> EOF</span><span style="color:var(--shiki-token-keyword)"> &gt;</span><span style="color:var(--shiki-token-string)"> /etc/apt/sources.list</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">deb http://mirrors.ustc.edu.cn/ubuntu-ports/ focal main restricted universe multiverse</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">deb http://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">deb http://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">deb http://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">EOF</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="克隆"><a href="#克隆" class="rp-header-anchor rp-link" aria-hidden="true">#</a>克隆</h2>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> update</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> -y</span><span style="color:var(--shiki-token-string)"> git</span><span style="color:var(--shiki-token-string)"> curl</span><span style="color:var(--shiki-token-string)"> wget</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">mkdir</span><span style="color:var(--shiki-token-string)"> -p</span><span style="color:var(--shiki-token-string)"> /data/chrome/ChromePwn</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">cd</span><span style="color:var(--shiki-token-string)"> /data/chrome/ChromePwn</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">git</span><span style="color:var(--shiki-token-string)"> clone</span><span style="color:var(--shiki-token-string)"> https://chromium.googlesource.com/chromium/tools/depot_tools.git</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">export</span><span style="color:var(--shiki-foreground)"> PATH</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">&quot;$PATH:/data/chrome/ChromePwn/depot_tools&quot;</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">source</span><span style="color:var(--shiki-token-string)"> ~/.bashrc</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">mkdir</span><span style="color:var(--shiki-token-string)"> /data/chrome/Chromium</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">cd</span><span style="color:var(--shiki-token-string)"> /data/chrome/Chromium</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">fetch</span><span style="color:var(--shiki-token-string)"> --nohooks</span><span style="color:var(--shiki-token-string)"> chromium</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)"># 断开后继续下载</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">gclient</span><span style="color:var(--shiki-token-string)"> sync</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>在最后似乎有一步<code>Syncing projects</code>特别慢,于是我直接换到新加坡的服务器，下载速度达30MB/s,一个上午白费···</p>
<p>克隆完后文件夹一共大小为<code>95G</code></p>
<h2 class="rp-toc-include" id="编译"><a href="#编译" class="rp-header-anchor rp-link" aria-hidden="true">#</a>编译</h2>
<p>编译高版本<code>python</code></p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">apt</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> build-essential</span><span style="color:var(--shiki-token-string)"> zlib1g-dev</span><span style="color:var(--shiki-token-string)"> libncurses5-dev</span><span style="color:var(--shiki-token-string)"> libgdbm-dev</span><span style="color:var(--shiki-token-string)"> libnss3-dev</span><span style="color:var(--shiki-token-string)"> libssl-dev</span><span style="color:var(--shiki-token-string)"> libreadline-dev</span><span style="color:var(--shiki-token-string)"> libffi-dev</span><span style="color:var(--shiki-token-string)"> curl</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">wget</span><span style="color:var(--shiki-token-string)"> https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tgz</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">tar</span><span style="color:var(--shiki-token-string)"> -xf</span><span style="color:var(--shiki-token-string)"> Python-3.11.5.tgz</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">cd</span><span style="color:var(--shiki-token-string)"> Python-3.11.5</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">./configure</span><span style="color:var(--shiki-token-string)"> --enable-optimizations</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">make</span><span style="color:var(--shiki-token-string)"> -j</span><span style="color:var(--shiki-token-constant)"> 7</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">cp</span><span style="color:var(--shiki-token-string)"> python</span><span style="color:var(--shiki-token-string)"> /usr/bin/python3.11</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">rm</span><span style="color:var(--shiki-token-string)"> -f</span><span style="color:var(--shiki-token-string)"> /usr/bin/python3</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">ln</span><span style="color:var(--shiki-token-string)"> -s</span><span style="color:var(--shiki-token-string)"> /usr/bin/python3.11</span><span style="color:var(--shiki-token-string)"> /usr/bin/python3</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">cd</span><span style="color:var(--shiki-token-string)"> src</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">./build/install-build-deps.sh</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">gclient</span><span style="color:var(--shiki-token-string)"> runhooks</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">gn</span><span style="color:var(--shiki-token-string)"> gen</span><span style="color:var(--shiki-token-string)"> out/Default</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>运行最后一行命令后，把64G内存都占满了，暂时没有办法继续了</p>
<h2 class="rp-toc-include" id="遇到的报错"><a href="#遇到的报错" class="rp-header-anchor rp-link" aria-hidden="true">#</a>遇到的报错</h2>
<p>报错</p>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>gn.py: Could not find gn executable at: [&#x27;/data/chrome/Chromium/src/buildtools/linux64/gn/gn&#x27;, &#x27;/data/chrome/Chromium/src/buildtools/linux64/gn&#x27;]</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>解决</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">mkdir</span><span style="color:var(--shiki-token-string)"> -p</span><span style="color:var(--shiki-token-string)"> buildtools/linux64</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">cp</span><span style="color:var(--shiki-token-string)"> -Rf</span><span style="color:var(--shiki-token-string)">  /data/chrome/ChromePwn/depot_tools/*</span><span style="color:var(--shiki-token-string)"> buildtools/linux64/</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[周记 2024 Week 50]]></title>
            <link>https://www.tteam.icu/blog/record/weekly/2024/W50</link>
            <guid isPermaLink="false">/blog/record/weekly/2024/W50</guid>
            <pubDate>Sun, 15 Dec 2024 22:00:00 GMT</pubDate>
            <description><![CDATA[2024年第50周的工作总结，包括网站开发优化、Obsidian周报模板设置和运维技术调研]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="2024-week-50"><a href="#2024-week-50" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2024 Week 50<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="开发方面"><a href="#开发方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开发方面</h2>
<p>完善了网站主页:</p>
<ul>
<li>新增了<code>项目</code>模块，封装字节的<code>Card</code>组件，通过JSON配置自动生成</li>
<li>完善了footer中的依赖信息</li>
<li>集成了<a href="https://github.com/aidenybai/react-scan" target="_blank" rel="noopener noreferrer" class="rp-link">react-scan</a>来监控网站性能</li>
<li>优化了根路径的移动端适配</li>
<li>增加了<code>图片</code>模块，采用瀑布流布局并实现懒加载</li>
</ul>
<p>在<code>Obsidian</code>中设置周报模板，准备开始撰写周报:</p>
<ul>
<li>使用<a href="https://github.com/liamcain/obsidian-periodic-notes" target="_blank" rel="noopener noreferrer" class="rp-link">Periodic Notes</a>自动生成模板</li>
<li>调研了从<code>小米运动健康APP</code>获取数据生成图表的可行性，但发现小米未开放API</li>
<li>调研了获取过去一周天气数据生成图标的方案，理论上可行，计划后续尝试实现</li>
</ul>
<h2 class="rp-toc-include" id="运维方面"><a href="#运维方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>运维方面</h2>
<ul>
<li>部署了<a href="https://github.com/eclipse-mosquitto/mosquitto" target="_blank" rel="noopener noreferrer" class="rp-link">MQTT</a>单机版进行测试，后续计划研究集群部署</li>
<li>了解到<a href="https://github.com/AutoMQ/automq" target="_blank" rel="noopener noreferrer" class="rp-link">AutoMQ</a>作为<code>Kafka</code>的替代方案，性能表现优异，计划后续尝试部署</li>
<li>关注<a href="https://github.com/cloudflare/pingora" target="_blank" rel="noopener noreferrer" class="rp-link">Pingora</a>，这是<code>Cloudflare</code>使用<code>Rust</code>开发的<code>Nginx</code>替代品，但每次修改需要重新编译，计划后续研究</li>
<li>准备研究使用Nginx实现DNS服务发现，参考<a href="https://www.f5.com/company/blog/nginx/dns-service-discovery-nginx-plus" target="_blank" rel="noopener noreferrer" class="rp-link">相关文档</a></li>
</ul><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[cloudflare pages钉钉通知]]></title>
            <link>https://www.tteam.icu/blog/dev/cf-pages通知</link>
            <guid isPermaLink="false">/blog/dev/cf-pages通知</guid>
            <pubDate>Sat, 30 Nov 2024 13:56:12 GMT</pubDate>
            <description><![CDATA[介绍如何为Cloudflare Pages添加钉钉通知功能，基于现有项目二次开发支持钉钉webhook]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="cloudflare-pages钉钉通知"><a href="#cloudflare-pages钉钉通知" class="rp-header-anchor rp-link" aria-hidden="true">#</a>cloudflare pages钉钉通知<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="开始"><a href="#开始" class="rp-header-anchor rp-link" aria-hidden="true">#</a>开始</h2>
<p>我的纯静态网站<a href="https://blog.tteam.icu" target="_blank" rel="noopener noreferrer" class="rp-link">博客</a>、<a href="https://www.tteam.icu" target="_blank" rel="noopener noreferrer" class="rp-link">关于我</a>、<a href="https://note.tteam.icu" target="_blank" rel="noopener noreferrer" class="rp-link">笔记</a>等网站都使用Cloudflare Pages进行编译和部署</p>
<p>但我发现Cloudflare没有集成通知功能，无论是编译完成还是失败，我都无法及时获知</p>
<p>随后我在网上查找类似功能，找到了<a href="https://github.com/arddluma/cloudflare-pages-slack-notification" target="_blank" rel="noopener noreferrer" class="rp-link">cloudflare-pages-slack-notification</a></p>
<p>但测试后发现它不支持钉钉webhook，因此我基于该仓库进行了二次开发并翻译</p>
<p><a href="https://github.com/buyfakett/cloudflare-pages-dingding-webhook" target="_blank" rel="noopener noreferrer" class="rp-link">项目地址</a></p>
<h2 class="rp-toc-include" id="配置"><a href="#配置" class="rp-header-anchor rp-link" aria-hidden="true">#</a>配置</h2>
<h3 class="rp-toc-include" id="github"><a href="#github" class="rp-header-anchor rp-link" aria-hidden="true">#</a>github</h3>
<p>原理是github的workflows自动检测cf的状态来推送</p>
<div class="rp-codeblock language-yaml"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="yaml"><code><span class="line"><span style="color:var(--shiki-token-keyword)">name</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> dingding_webhook</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)">on</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> push</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">jobs</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  build</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    runs-on</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> ubuntu-latest</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    steps</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-keyword)">uses</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> actions/checkout@v3</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-keyword)">name</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> Await CF Pages and send Slack notification</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        id</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> cf-pages</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        uses</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> buyfakett/cloudflare-pages-dingding-webhook@v2</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        with</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">          # Uncomment these two lines if you wish to use the Global API Key (Not recommended!)</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">          # accountEmail: ${{ secrets.CF_ACCOUNT_EMAIL  }}</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">          # apiKey: ${{ secrets.CF_API_KEY  }}</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)">          # Use an API token (Recommended!)</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">          apiToken</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> ${{ secrets.CF_API_TOKEN }}</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">          accountId</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> ${{ secrets.CF_ACC_ID  }}</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">          # CloudFlare Pages project name</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">          project</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> ${{ secrets.CF_PAGES_PROJECT  }}</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">          dingWebHookKey</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> ${{ secrets.DING_WEBHOOK_KEY }}</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">          # Add this if you want GitHub Deployments (see below)</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">          githubToken</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> ${{ secrets.GITHUB_TOKEN }}</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="机密说明"><a href="#机密说明" class="rp-header-anchor rp-link" aria-hidden="true">#</a>机密说明</h3>
<p>CF_API_TOKEN: Cloudflare API 令牌。<a href="https://dash.cloudflare.com/profile/api-tokens" target="_blank" rel="noopener noreferrer" class="rp-link">如何创建 Cloudflare API 令牌</a></p>
<p>CF_ACC_ID: CloudFlare 帐户 ID。(访问 <a href="https://dash.cloudflare.com/" target="_blank" rel="noopener noreferrer" class="rp-link">Cloudflare 的仪表板</a>，您将在 URL 中找到帐户 ID)</p>
<p>CF_PAGES_PROJECT: CloudFlare Pages 项目名称。(你可以在<a href="https://dash.cloudflare.com/%7Byour_account_id%7D/workers-and-pages" target="_blank" rel="noopener noreferrer" class="rp-link">这里</a> 找到它)</p>
<p>DING_WEBHOOK_KEY: 钉钉中创建WEBHOOK机器人, 关键字填入<code>项目</code></p>
<h2 class="rp-toc-include" id="通知截图"><a href="#通知截图" class="rp-header-anchor rp-link" aria-hidden="true">#</a>通知截图</h2>
<p><img src="https://img.tteam.icu/i/2024/11/30/itqdxp-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/30/lyaat9-3.webp" alt=""/></p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[“关于我”编写]]></title>
            <link>https://www.tteam.icu/blog/dev/“关于我”编写</link>
            <guid isPermaLink="false">/blog/dev/“关于我”编写</guid>
            <pubDate>Sun, 24 Nov 2024 19:56:12 GMT</pubDate>
            <description><![CDATA[分享使用React、Tailwind CSS和Magic UI构建个人“关于我”页面的过程和技术栈]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="关于我编写"><a href="#关于我编写" class="rp-header-anchor rp-link" aria-hidden="true">#</a>“关于我”编写<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>本周，我开始了“关于我”页面的编写工作</p>
<p>使用的技术栈包括<code>React</code>、<code>Tailwind CSS</code>、<code>Magic UI</code>以及<code>Cloudflare</code>的自动部署功能</p>
<p>当然，编写过程中也得到了<code>ChatGPT</code>的协助</p>
<p>这是我第一次使用<code>React</code>和<code>Tailwind CSS</code>，在GPT的帮助下，整个开发过程非常顺畅</p>
<p>接下来我将分享一下编写的具体过程~</p>
<h2 class="rp-toc-include" id="部署方面"><a href="#部署方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>部署方面</h2>
<p>最初，包括本页面在内，编译和访问完全使用<code>Cloudflare</code>的<code>Pages</code>功能，图床使用自行部署的服务</p>
<p>同时使用<code>Umami</code>进行访问统计</p>
<h2 class="rp-toc-include" id="编写方面"><a href="#编写方面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>编写方面</h2>
<h3 class="rp-toc-include" id="主页"><a href="#主页" class="rp-header-anchor rp-link" aria-hidden="true">#</a>主页</h3>
<h4 class="rp-toc-include" id="头像模块"><a href="#头像模块" class="rp-header-anchor rp-link" aria-hidden="true">#</a>头像模块</h4>
<p>使用到的是<code>Magic UI</code>的<code>Orbiting Circles</code>组件</p>
<h4 class="rp-toc-include" id="语言使用模块"><a href="#语言使用模块" class="rp-header-anchor rp-link" aria-hidden="true">#</a>语言使用模块</h4>
<p>我使用的是<code>wakatime</code>的<code>API</code>获取编程语言使用时间</p>
<p>我新开了一个仓库, 使用py每天去调用api, 然后生成json文件, 放在cf上</p>
<p><img src="https://img.tteam.icu/i/2024/11/24/z9n29e-3.webp" alt=""/></p>
<p>在<code>关于我</code>的编译阶段, 先度调用上面爬到的数据放在本地, 也写了调用接口</p>
<p><img src="https://img.tteam.icu/i/2024/11/24/zavb61-3.webp" alt=""/></p>
<p>用户在访问的时候，默认显示我放在本地的数据, 在接口返回后, 替换掉原来在页面上的数据</p>
<h4 class="rp-toc-include" id="工作经历模块"><a href="#工作经历模块" class="rp-header-anchor rp-link" aria-hidden="true">#</a>工作经历模块</h4>
<p>我使用的是<code>Magic UI</code>的<code>Neon Gradient Card</code>组件</p>
<h4 class="rp-toc-include" id="项目模块"><a href="#项目模块" class="rp-header-anchor rp-link" aria-hidden="true">#</a>项目模块</h4>
<p>使用字节的<code>卡片</code>功能</p>
<h3 class="rp-toc-include" id="工具页"><a href="#工具页" class="rp-header-anchor rp-link" aria-hidden="true">#</a>工具页</h3>
<p>使用自己封装的组件</p>
<h3 class="rp-toc-include" id="链接页"><a href="#链接页" class="rp-header-anchor rp-link" aria-hidden="true">#</a>链接页</h3>
<p>使用字节的<code>卡片</code>功能</p>
<h3 class="rp-toc-include" id="总结"><a href="#总结" class="rp-header-anchor rp-link" aria-hidden="true">#</a>总结</h3>
<p>使用<code>react</code>编写简单的ui界面, 没有用到复杂的js, 对于我来说还是写的很舒服的</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【vps测评】servarica]]></title>
            <link>https://www.tteam.icu/blog/vps/【vps测评】servarica</link>
            <guid isPermaLink="false">/blog/vps/【vps测评】servarica</guid>
            <pubDate>Mon, 11 Nov 2024 20:31:39 GMT</pubDate>
            <description><![CDATA[本文对Servarica VPS进行了详细测评，包括服务器基础信息、CPU和内存性能、磁盘读写速度、流媒体解锁情况、三网回程测试等方面。Servarica是一家加拿大主机商，成立于2010年，主要提供VPS服务，有SSD和HDD存储型，以价格便宜、不限流量著称，适合用于存储备份数据。]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="servarica"><a href="#servarica" class="rp-header-anchor rp-link" aria-hidden="true">#</a><a href="https://clients.servarica.com/aff.php?aff=917" target="_blank" rel="noopener noreferrer" class="rp-link">servarica</a></h2>
<h3 class="rp-toc-include" id="简介"><a href="#简介" class="rp-header-anchor rp-link" aria-hidden="true">#</a>简介</h3>
<p>servaRICA是一家加拿大主机商，成立于2010年，主要提供VPS服务，有SSD和HDD存储型。</p>
<p>由于存在时间较长，所以使用起来比较放心。</p>
<p>我对比了网上几乎所有VPS网站的<code>大盘鸡</code>，发现这家的价格是最便宜的，因此选择了它，重要的是还不限流量。</p>
<p>我自己已经使用这家服务大半年了，最开始买的是5美元/月的2T硬盘套餐，最近升级到了8.5美元/月的3.5T套餐。虽然硬盘是&quot;石头盘&quot;(指转速较慢的硬盘)，但用来存放备份数据还是很不错的。</p>
<p>就我个人使用情况来说，我在上面运行了录播机、PT，还有<a href="https://blog.tteam.icu/ops/%E3%80%90%E5%AE%9E%E7%94%A8%E7%9A%84docker%E5%B0%8F%E6%8A%80%E5%B7%A7%E3%80%91minio(%E8%87%AA%E5%BB%BAoss)/" target="_blank" rel="noopener noreferrer" class="rp-link">minio</a>对象存储服务。</p>
<h3 class="rp-toc-include" id="测评"><a href="#测评" class="rp-header-anchor rp-link" aria-hidden="true">#</a>测评</h3>
<p>总体来说是一台用来存备份等重要数据的大盘鸡</p>
<div class="rp-codeblock language-text"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="text"><code><span class="line"><span>---------------------基础信息查询--感谢所有开源项目---------------------</span></span>
<span class="line"><span> CPU 型号          : Intel(R) Xeon(R) Gold 6132 CPU @ 2.60GHz</span></span>
<span class="line"><span> CPU 核心数        : 2</span></span>
<span class="line"><span> CPU 频率          : 2600.064 MHz</span></span>
<span class="line"><span> CPU 缓存          : L1: 0.00 KB / L2: 0.00 KB / L3: 0.00 KB</span></span>
<span class="line"><span> AES-NI指令集      : ✔ Enabled</span></span>
<span class="line"><span> VM-x/AMD-V支持    : ❌ Disabled</span></span>
<span class="line"><span> 内存              : 623.75 MiB / 1.77 GiB</span></span>
<span class="line"><span> Swap              : [ no swap partition or swap file detected ]</span></span>
<span class="line"><span> 硬盘空间          : 1.27 TiB / 1.96 TiB</span></span>
<span class="line"><span> 启动盘路径        : /dev/mapper/centos-root</span></span>
<span class="line"><span> 系统在线时间      : 41 days, 1 hour 3 min</span></span>
<span class="line"><span> 负载              : 0.59, 0.72, 0.45</span></span>
<span class="line"><span> 系统              : CentOS Linux 7 (Core) (x86_64)</span></span>
<span class="line"><span> 架构              : x86_64 (64 Bit)</span></span>
<span class="line"><span> 内核              : 3.10.0-1160.108.1.el7.x86_64</span></span>
<span class="line"><span> TCP加速方式       : cubic</span></span>
<span class="line"><span> 虚拟化架构        : Xen Hypervisor</span></span>
<span class="line"><span> NAT类型           : Port Restricted Cone</span></span>
<span class="line"><span> IPV4 ASN          : AS26832 Rica Web Services</span></span>
<span class="line"><span> IPV4 位置         : Montréal / Quebec / CA</span></span>
<span class="line"><span>----------------------CPU测试--通过sysbench测试-------------------------</span></span>
<span class="line"><span> -&gt; CPU 测试中 (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 1 线程测试(单核)得分: 		1094 Scores</span></span>
<span class="line"><span> 2 线程测试(多核)得分: 		2093 Scores</span></span>
<span class="line"><span>---------------------内存测试--感谢lemonbench开源-----------------------</span></span>
<span class="line"><span> -&gt; 内存测试 Test (Fast Mode, 1-Pass @ 5sec)</span></span>
<span class="line"><span> 单线程读测试:		19933.58 MB/s</span></span>
<span class="line"><span> 单线程写测试:		13399.01 MB/s</span></span>
<span class="line"><span>---------------------磁盘fio读写测试--感谢yabs开源----------------------</span></span>
<span class="line"><span>Block Size | 4k            (IOPS) | 64k           (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 36.85 MB/s    (9.2k) | 220.42 MB/s   (3.4k)</span></span>
<span class="line"><span>Write      | 36.95 MB/s    (9.2k) | 221.58 MB/s   (3.4k)</span></span>
<span class="line"><span>Total      | 73.80 MB/s   (18.4k) | 442.01 MB/s   (6.9k)</span></span>
<span class="line"><span>           |                      |                     </span></span>
<span class="line"><span>Block Size | 512k          (IOPS) | 1m            (IOPS)</span></span>
<span class="line"><span>  ------   | ---            ----  | ----           ---- </span></span>
<span class="line"><span>Read       | 256.03 MB/s    (500) | 259.73 MB/s    (253)</span></span>
<span class="line"><span>Write      | 269.63 MB/s    (526) | 277.03 MB/s    (270)</span></span>
<span class="line"><span>Total      | 525.66 MB/s   (1.0k) | 536.76 MB/s    (523)</span></span>
<span class="line"><span>------------流媒体解锁--基于oneclickvirt/CommonMediaTests开源-----------</span></span>
<span class="line"><span>以下测试的解锁地区是准确的，但是不是完整解锁的判断可能有误，这方面仅作参考使用</span></span>
<span class="line"><span>----------------Netflix-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>您的出口IP可以使用Netflix，但仅可看Netflix自制剧</span></span>
<span class="line"><span>NF所识别的IP地域信息: 加拿大</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>您的网络可能没有正常配置IPv6，或者没有IPv6网络接入</span></span>
<span class="line"><span>----------------Youtube-----------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>连接方式: Google Global CacheCDN (ISP Cooperation)</span></span>
<span class="line"><span>ISP运营商: BEANFLDCA</span></span>
<span class="line"><span>视频缓存节点地域: YYZ(YYZ2)</span></span>
<span class="line"><span>Youtube识别地域: 加拿大(CA)</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>Youtube在您的出口IP所在的国家不提供服务</span></span>
<span class="line"><span>---------------DisneyPlus---------------</span></span>
<span class="line"><span>[IPV4]</span></span>
<span class="line"><span>当前出口所在地区解锁DisneyPlus</span></span>
<span class="line"><span>区域: CA 区</span></span>
<span class="line"><span>[IPV6]</span></span>
<span class="line"><span>DisneyPlus在您的出口IP所在的国家不提供服务</span></span>
<span class="line"><span>解锁Netflix，Youtube，DisneyPlus上面和下面进行比较，不同之处自行判断</span></span>
<span class="line"><span>----------------流媒体解锁--感谢RegionRestrictionCheck开源--------------</span></span>
<span class="line"><span> 以下为IPV4网络测试，若无IPV4网络则无输出</span></span>
<span class="line"><span>============[ Multination ]============</span></span>
<span class="line"><span> Dazn:					Yes (Region: CA)</span></span>
<span class="line"><span> Disney+:				No (IP Banned By Disney+ 1)</span></span>
<span class="line"><span> Netflix:				Originals Only</span></span>
<span class="line"><span> YouTube Premium:			Yes (Region: CA)</span></span>
<span class="line"><span> Amazon Prime Video:			Yes (Region: CA)</span></span>
<span class="line"><span> TVBAnywhere+:				Yes</span></span>
<span class="line"><span> Spotify Registration:			Yes (Region: CA)</span></span>
<span class="line"><span> Instagram Licensed Audio:		Failed (Network Connection)</span></span>
<span class="line"><span> OneTrust Region:			CA [Quebec]</span></span>
<span class="line"><span> iQyi Oversea Region:			CA</span></span>
<span class="line"><span> Bing Region:				CA</span></span>
<span class="line"><span> YouTube CDN:				[BEANFLDCA] in [Toronto, ON]</span></span>
<span class="line"><span> Netflix Preferred CDN:			[Beanfield Technologies] in [Toronto, ON]</span></span>
<span class="line"><span> ChatGPT:				Yes</span></span>
<span class="line"><span> Google Gemini:				Yes (Region: CAN)</span></span>
<span class="line"><span> Wikipedia Editability:			No</span></span>
<span class="line"><span> Google Search CAPTCHA Free:		Yes</span></span>
<span class="line"><span> Steam Currency:			CAD</span></span>
<span class="line"><span> ---Forum---</span></span>
<span class="line"><span> Reddit:				No</span></span>
<span class="line"><span>=======================================</span></span>
<span class="line"><span> 以下为IPV6网络测试，若无IPV6网络则无输出</span></span>
<span class="line"><span>---------------TikTok解锁--感谢lmc999的源脚本及fscarmen PR--------------</span></span>
<span class="line"><span> Tiktok Region:		【CA】</span></span>
<span class="line"><span>----------------三网回程--基于oneclickvirt/backtrace开源----------------</span></span>
<span class="line"><span>北京电信 219.141.140.10  电信163    [普通线路] </span></span>
<span class="line"><span>北京联通 202.106.195.68  联通4837   [普通线路] </span></span>
<span class="line"><span>北京移动 221.179.155.161 移动CMI    [普通线路] </span></span>
<span class="line"><span>上海电信 202.96.209.133  检测不到回程路由节点的IP地址</span></span>
<span class="line"><span>上海联通 210.22.97.1     联通4837   [普通线路] </span></span>
<span class="line"><span>上海移动 211.136.112.200 移动CMI    [普通线路] 移动CMIN2  [精品线路] </span></span>
<span class="line"><span>广州电信 58.60.188.222   电信163    [普通线路] </span></span>
<span class="line"><span>广州联通 210.21.196.6    联通4837   [普通线路] </span></span>
<span class="line"><span>广州移动 120.196.165.24  移动CMI    [普通线路] </span></span>
<span class="line"><span>成都电信 61.139.2.69     电信163    [普通线路] </span></span>
<span class="line"><span>成都联通 119.6.6.6       联通4837   [普通线路] </span></span>
<span class="line"><span>成都移动 211.137.96.205  移动CMI    [普通线路] </span></span>
<span class="line"><span>准确线路自行查看详细路由，本测试结果仅作参考</span></span>
<span class="line"><span>同一目标地址多个线路时，可能检测已越过汇聚层，除了第一个线路外，后续信息可能无效</span></span>
<span class="line"><span>---------------------回程路由--感谢fscarmen开源及PR---------------------</span></span>
<span class="line"><span>依次测试电信/联通/移动经过的地区及线路，核心程序来自ipip.net或nexttrace，请知悉!</span></span>
<span class="line"><span>广州电信 58.60.188.222</span></span>
<span class="line"><span>0.34 ms  AS26832  加拿大, 魁北克省, 蒙特利尔, servarica.com</span></span>
<span class="line"><span>1.07 ms  AS174  加拿大, 魁北克省, 蒙特利尔, cogentco.com</span></span>
<span class="line"><span>70.56 ms  AS174  英国, 塞夫顿都会自治市, cogentco.com</span></span>
<span class="line"><span>76.03 ms  AS174  英国, 斯劳, cogentco.com</span></span>
<span class="line"><span>76.46 ms  AS174  英国, 伦敦, cogentco.com</span></span>
<span class="line"><span>77.39 ms  AS174  英国, 伦敦, cogentco.com</span></span>
<span class="line"><span>253.58 ms  AS4134  中国, 广东, 广州, chinatelecom.com.cn, 电信</span></span>
<span class="line"><span>250.50 ms  AS4134  中国, 广东, 深圳, chinatelecom.com.cn, 电信</span></span>
<span class="line"><span>255.14 ms  AS4134  中国, 广东, 深圳, chinatelecom.com.cn, 电信</span></span>
<span class="line"><span>广州联通 210.21.196.6</span></span>
<span class="line"><span>0.39 ms  AS26832  加拿大, 魁北克省, 蒙特利尔, servarica.com</span></span>
<span class="line"><span>1.21 ms  AS21949  加拿大, 魁北克省, 蒙特利尔, beanfield.com</span></span>
<span class="line"><span>0.73 ms  AS21949  加拿大, 魁北克省, 蒙特利尔, beanfield.com</span></span>
<span class="line"><span>0.60 ms  AS3356  美国, 纽约州, 纽约, level3.com</span></span>
<span class="line"><span>14.92 ms  AS3356  美国, 纽约州, 纽约, level3.com</span></span>
<span class="line"><span>71.10 ms  AS3356  美国, 加利福尼亚州, 洛杉矶, level3.com</span></span>
<span class="line"><span>343.30 ms  AS3356  美国, 加利福尼亚州, 洛杉矶, level3.com</span></span>
<span class="line"><span>351.99 ms  AS4837  中国, 广东, 广州, chinaunicom.com, 联通</span></span>
<span class="line"><span>270.59 ms  AS4837  中国, 广东, 广州, chinaunicom.com, 联通</span></span>
<span class="line"><span>301.29 ms  AS17816  中国, 广东, 深圳, chinaunicom.com, 联通</span></span>
<span class="line"><span>312.17 ms  AS17623  中国, 广东, 深圳, chinaunicom.com, 联通</span></span>
<span class="line"><span>338.40 ms  AS17623  中国, 广东, 深圳, chinaunicom.com, 联通</span></span>
<span class="line"><span>广州移动 120.196.165.24</span></span>
<span class="line"><span>0.67 ms 	AS26832 [RWS] 加拿大 魁北克省 蒙特利尔 kitcom.net</span></span>
<span class="line"><span>1.17 ms 	AS174 [COGENT-BONE] 加拿大 魁北克 蒙特利尔 cogentco.com</span></span>
<span class="line"><span>71.46 ms 	AS174 [COGENT-BONE] 英国 默西赛德郡 南码头 cogentco.com</span></span>
<span class="line"><span>76.12 ms 	AS174 [COGENT-BONE] 英国 英格兰 斯劳 cogentco.com</span></span>
<span class="line"><span>76.06 ms 	AS174 [COGENT-BONE] 英国 英格兰 斯劳 cogentco.com</span></span>
<span class="line"><span>75.93 ms 	AS174 [COGENT-149] 英国 伯克郡 斯劳 Cogent-CMI-Peer cogentco.com</span></span>
<span class="line"><span>77.97 ms 	AS58453 [CMI-INT] 英国 英格兰 伦敦 cmi.chinamobile.com</span></span>
<span class="line"><span>254.51 ms 	AS58453 [CMI-INT] 中国 香港 cmi.chinamobile.com</span></span>
<span class="line"><span>254.20 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>254.34 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>369.00 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>266.69 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>266.13 ms 	AS9808 [CMNET] 中国 广东 广州 chinamobileltd.com 移动</span></span>
<span class="line"><span>272.04 ms 	AS56040 [APNIC-AP] 中国 广东 深圳 gd.10086.cn 移动</span></span>
<span class="line"><span>--------------------自动更新测速节点列表--本脚本原创--------------------</span></span>
<span class="line"><span>位置		 上传速度	 下载速度	 延迟	  丢包率</span></span>
<span class="line"><span>Speedtest.net	 277.28 Mbps	 9152.49 Mbps	 1.20	  0.0%</span></span>
<span class="line"><span>联通WuXi	 144.13 Mbps	 2835.73 Mbps	 253.45	  0.0%</span></span>
<span class="line"><span>		 271.72 Mbps	 9348.30 Mbps	 0.39	  0.0%</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span>
<span class="line"><span> 总共花费      : 6 分 57 秒</span></span>
<span class="line"><span> 时间          : kam leq 15 10:34:26 saaku CST 2024</span></span>
<span class="line"><span>------------------------------------------------------------------------</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的docker小技巧】minio(自建oss)]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的docker小技巧】minio(自建oss)</link>
            <guid isPermaLink="false">/blog/ops/【实用的docker小技巧】minio(自建oss)</guid>
            <pubDate>Mon, 11 Nov 2024 20:11:39 GMT</pubDate>
            <description><![CDATA[介绍如何使用Docker部署MinIO自建对象存储服务，包括启动配置、Nginx反向代理、Linux挂载和权限管理]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="minio自建对象存储服务"><a href="#minio自建对象存储服务" class="rp-header-anchor rp-link" aria-hidden="true">#</a>MinIO自建对象存储服务<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p><a href="https://www.minio.org.cn/docs/minio/container/operations/monitoring/metrics-and-alerts.html#minio-metrics-and-alerts" target="_blank" rel="noopener noreferrer" class="rp-link">官方文档</a></p>
<p><a href="https://github.com/minio/minio" target="_blank" rel="noopener noreferrer" class="rp-link">开源地址</a></p>
<p>MinIO是一个开源、免费的、兼容AWS S3的对象存储服务，可用于存储图片、视频等各种文件。</p>
<p>在家用场景中，我们通常用它来存储备份数据</p>
<h2 class="rp-toc-include" id="启动"><a href="#启动" class="rp-header-anchor rp-link" aria-hidden="true">#</a>启动</h2>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-comment)">#!/bin/bash</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">echo</span><span style="color:var(--shiki-token-string-expression)"> &#x27;Asia/Shanghai&#x27;</span><span style="color:var(--shiki-token-keyword)"> &gt;</span><span style="color:var(--shiki-token-string)"> /etc/timezone</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> kill</span><span style="color:var(--shiki-token-string)"> minio</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> rm</span><span style="color:var(--shiki-token-string)"> minio</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> run</span><span style="color:var(--shiki-token-string)"> -d</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">   --network=host</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">   --name</span><span style="color:var(--shiki-token-string)"> minio</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">   --restart=always</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">   -v</span><span style="color:var(--shiki-token-string)"> /etc/timezone:/etc/timezone:ro</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">   -v</span><span style="color:var(--shiki-token-string)"> /etc/localtime:/etc/localtime:ro</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">   -v</span><span style="color:var(--shiki-foreground)"> $(</span><span style="color:var(--shiki-token-function)">pwd</span><span style="color:var(--shiki-foreground)">)</span><span style="color:var(--shiki-token-string)">/data:/data</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">   -e</span><span style="color:var(--shiki-token-string-expression)"> &quot;MINIO_ROOT_USER=root&quot;</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">   -e</span><span style="color:var(--shiki-token-string-expression)"> &quot;MINIO_ROOT_PASSWORD=password&quot;</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">   -e</span><span style="color:var(--shiki-token-string-expression)"> &quot;MINIO_BROWSER_REDIRECT_URL=http://s3.xxxwahotdog.top&quot;</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)">   minio/minio</span><span style="color:var(--shiki-token-string)"> server</span><span style="color:var(--shiki-token-string)"> /data</span><span style="color:var(--shiki-token-string)"> --console-address</span><span style="color:var(--shiki-token-string-expression)"> &quot;:9001&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)"># 国内镜像国内镜像registry.cn-hangzhou.aliyuncs.com/buyfakett/minio</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<div class="rp-codeblock language-nginx"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="nginx"><code><span class="line"><span style="color:var(--shiki-token-keyword)">upstream</span><span style="color:var(--shiki-foreground)"> minio_s3 {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    least_conn</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    server</span><span style="color:var(--shiki-foreground)"> 192.168.1.1:9000;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">upstream</span><span style="color:var(--shiki-foreground)"> minio_console {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    least_conn</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    server</span><span style="color:var(--shiki-foreground)"> 192.168.1.1:9001;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">server</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    listen </span><span style="color:var(--shiki-token-constant)">      80</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    server_name </span><span style="color:var(--shiki-foreground)"> test.com;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    access_log </span><span style="color:var(--shiki-foreground)">/data/logs/nginx/json_minioSubnet.log json;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)">    # Allow special characters in headers</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    ignore_invalid_headers </span><span style="color:var(--shiki-token-constant)">off</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">    # Allow any size file to be uploaded.</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">    # Set to a value such as 1000m; to restrict file size to a specific value</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    client_max_body_size </span><span style="color:var(--shiki-token-constant)">0</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">    # Disable buffering</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_buffering </span><span style="color:var(--shiki-token-constant)">off</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    proxy_request_buffering </span><span style="color:var(--shiki-token-constant)">off</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    location</span><span style="color:var(--shiki-foreground)"> / {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">Host $http_host;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">X-Real-IP $remote_addr;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">X-Forwarded-For $proxy_add_x_forwarded_for;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">X-Forwarded-Proto $scheme;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_connect_timeout </span><span style="color:var(--shiki-token-constant)">3600</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">        # Default is HTTP/1, keepalive is only enabled in HTTP/1.1</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_http_version </span><span style="color:var(--shiki-token-constant)">1.1</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">Connection </span><span style="color:var(--shiki-token-string-expression)">&quot;&quot;</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        chunked_transfer_encoding </span><span style="color:var(--shiki-token-constant)">off</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_pass </span><span style="color:var(--shiki-foreground)">http://minio_s3; </span><span style="color:var(--shiki-token-comment)"># This uses the upstream directive definition to load balance</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    location</span><span style="color:var(--shiki-foreground)"> /minio/ui/ {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        rewrite</span><span style="color:var(--shiki-token-string-expression)"> ^/minio/ui/(.*) /$</span><span style="color:var(--shiki-foreground)">1 </span><span style="color:var(--shiki-token-keyword)">break</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">Host $http_host;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">X-Real-IP $remote_addr;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">X-Forwarded-For $proxy_add_x_forwarded_for;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">X-Forwarded-Proto $scheme;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">X-NginX-Proxy </span><span style="color:var(--shiki-token-constant)">true</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)">        # This is necessary to pass the correct IP to be hashed</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        real_ip_header </span><span style="color:var(--shiki-foreground)">X-Real-IP;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_connect_timeout </span><span style="color:var(--shiki-token-constant)">3600</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-comment)">        # To support websockets in MinIO versions released after January 2023</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_http_version </span><span style="color:var(--shiki-token-constant)">1.1</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">Upgrade $http_upgrade;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_set_header </span><span style="color:var(--shiki-foreground)">Connection </span><span style="color:var(--shiki-token-string-expression)">&quot;upgrade&quot;</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">        # Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">        # Uncomment the following line to set the Origin request to an empty string</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">        # proxy_set_header Origin &#x27;&#x27;;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        chunked_transfer_encoding </span><span style="color:var(--shiki-token-constant)">off</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        proxy_pass </span><span style="color:var(--shiki-foreground)">http://minio_console; </span><span style="color:var(--shiki-token-comment)"># This uses the upstream directive definition to load balance</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    }</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="linux挂载"><a href="#linux挂载" class="rp-header-anchor rp-link" aria-hidden="true">#</a>linux挂载</h2>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-comment)"># apt install -y s3fs</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)"># yum install -y epel-release s3fs-fuse</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">echo</span><span style="color:var(--shiki-token-string-expression)"> &quot;access_key:secret_key&quot;</span><span style="color:var(--shiki-token-keyword)"> &gt;</span><span style="color:var(--shiki-token-string)"> /data/minio-config/passwd</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">chmod</span><span style="color:var(--shiki-token-constant)"> 600</span><span style="color:var(--shiki-token-string)"> /data/minio-config/passwd</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">/usr/bin/s3fs</span><span style="color:var(--shiki-token-keyword)"> &lt;</span><span style="color:var(--shiki-token-string)">bucke</span><span style="color:var(--shiki-foreground)">t</span><span style="color:var(--shiki-token-keyword)">&gt;</span><span style="color:var(--shiki-token-string)"> /data/minio/test</span><span style="color:var(--shiki-token-string)"> -o</span><span style="color:var(--shiki-token-string)"> passwd_file=/data/minio-config/passwd</span><span style="color:var(--shiki-token-string)"> -o</span><span style="color:var(--shiki-token-string)"> url=https://xxx.top</span><span style="color:var(--shiki-token-string)"> -o</span><span style="color:var(--shiki-token-string)"> use_path_request_style</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="监控"><a href="#监控" class="rp-header-anchor rp-link" aria-hidden="true">#</a>监控</h2>
<div class="rp-codeblock language-shell"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="shell"><code><span class="line"><span style="color:var(--shiki-token-comment)"># 下载mc并生成token</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">wget</span><span style="color:var(--shiki-token-string)"> https://dl.min.io/client/mc/release/linux-amd64/mc</span><span style="color:var(--shiki-token-string)"> -O</span><span style="color:var(--shiki-token-string)"> /usr/local/bin/mc</span><span style="color:var(--shiki-token-punctuation)"> &amp;&amp;</span><span style="color:var(--shiki-token-function)"> chmod</span><span style="color:var(--shiki-token-string)"> +x</span><span style="color:var(--shiki-token-string)"> /usr/local/bin/mc</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">mc</span><span style="color:var(--shiki-token-string)"> alias</span><span style="color:var(--shiki-token-string)"> set</span><span style="color:var(--shiki-token-keyword)"> &lt;</span><span style="color:var(--shiki-token-string)">ALIA</span><span style="color:var(--shiki-foreground)">S</span><span style="color:var(--shiki-token-keyword)">&gt;</span><span style="color:var(--shiki-token-keyword)"> &lt;</span><span style="color:var(--shiki-token-string)">YOUR-S3-ENDPOIN</span><span style="color:var(--shiki-foreground)">T</span><span style="color:var(--shiki-token-keyword)">&gt;</span><span style="color:var(--shiki-token-keyword)"> &lt;</span><span style="color:var(--shiki-token-string)">YOUR-ACCESS-KE</span><span style="color:var(--shiki-foreground)">Y</span><span style="color:var(--shiki-token-keyword)">&gt;</span><span style="color:var(--shiki-token-keyword)"> &lt;</span><span style="color:var(--shiki-token-string)">YOUR-SECRET-KE</span><span style="color:var(--shiki-foreground)">Y</span><span style="color:var(--shiki-token-keyword)">&gt;</span><span style="color:var(--shiki-token-string)"> --api</span><span style="color:var(--shiki-token-string)"> s3v4</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">mc</span><span style="color:var(--shiki-token-string)"> admin</span><span style="color:var(--shiki-token-string)"> prometheus</span><span style="color:var(--shiki-token-string)"> generate</span><span style="color:var(--shiki-token-keyword)"> &lt;</span><span style="color:var(--shiki-token-string)">ALIA</span><span style="color:var(--shiki-foreground)">S</span><span style="color:var(--shiki-token-keyword)">&gt;</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p><code>grafana</code>中导入<code>13502</code></p>
<h2 class="rp-toc-include" id="权限管理"><a href="#权限管理" class="rp-header-anchor rp-link" aria-hidden="true">#</a>权限管理</h2>
<p>我们还可以权限管理, 我这里演示的是名为<code>test</code>桶的所有权限</p>
<div class="rp-codeblock language-json"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="json"><code><span class="line"><span style="color:var(--shiki-foreground)">{</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  &quot;Version&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-string-expression)"> &quot;2012-10-17&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  &quot;Statement&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-foreground)"> [</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;Effect&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-string-expression)"> &quot;Allow&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;Action&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-foreground)"> [</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">        &quot;s3:GetBucketLocation&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">        &quot;s3:ListBucket&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">        &quot;s3:ListBucketMultipartUploads&quot;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      ]</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;Resource&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-string-expression)"> &quot;arn:aws:s3:::test&quot;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    }</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;Effect&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-string-expression)"> &quot;Allow&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;Action&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-foreground)"> [</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">        &quot;s3:PutObject&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">        &quot;s3:GetObject&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">        &quot;s3:DeleteObject&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">        &quot;s3:ListMultipartUploadParts&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">        &quot;s3:AbortMultipartUpload&quot;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      ]</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;Resource&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-string-expression)"> &quot;arn:aws:s3:::test/*&quot;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    }</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">  ]</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的服务器小技巧】rss订阅]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的服务器小技巧】rss订阅</link>
            <guid isPermaLink="false">/blog/ops/【实用的服务器小技巧】rss订阅</guid>
            <pubDate>Sun, 10 Nov 2024 21:11:39 GMT</pubDate>
            <description><![CDATA[介绍RSS订阅的概念及如何部署RSSHub和Miniflux服务，实现内容的聚合和管理]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="rss订阅系统搭建"><a href="#rss订阅系统搭建" class="rp-header-anchor rp-link" aria-hidden="true">#</a>RSS订阅系统搭建<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>RSS(Really Simple Syndication，聚合内容)是站点之间共享内容的一种简易方式。对于时效性较强的内容，使用RSS订阅可以更快速地获取信息。网站提供RSS输出，便于用户及时了解网站内容的最新更新。用户可以通过支持RSS的聚合工具软件(如SharpReader、NewzCrawler、FeedDemon等)，在不打开网站页面的情况下阅读RSS内容。</p>
<h2 class="rp-toc-include" id="rsshub"><a href="#rsshub" class="rp-header-anchor rp-link" aria-hidden="true">#</a>rsshub</h2>
<p><a href="https://docs.rsshub.app/zh/guide/" target="_blank" rel="noopener noreferrer" class="rp-link">官方文档</a></p>
<h3 class="rp-toc-include" id="启动"><a href="#启动" class="rp-header-anchor rp-link" aria-hidden="true">#</a>启动</h3>
<div class="rp-codeblock language-yaml"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="yaml"><code><span class="line"><span style="color:var(--shiki-token-keyword)">services</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    rsshub</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        stdin_open</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> true</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        container_name</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> rsshub</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        ports</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">            - </span><span style="color:var(--shiki-token-string-expression)">1200:1200</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        image</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> diygod/rsshub</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        restart</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> always</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="miniflux"><a href="#miniflux" class="rp-header-anchor rp-link" aria-hidden="true">#</a>miniflux</h2>
<p><a href="https://github.com/miniflux/v2" target="_blank" rel="noopener noreferrer" class="rp-link">开源地址</a></p>
<p>让服务端来拉取rss和保存rss订阅</p>
<h3 class="rp-toc-include" id="启动-1"><a href="#启动-1" class="rp-header-anchor rp-link" aria-hidden="true">#</a>启动</h3>
<div class="rp-codeblock language-yaml"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="yaml"><code><span class="line"><span style="color:var(--shiki-token-keyword)">version</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> &#x27;3&#x27;</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">services</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  db</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    image</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> postgres:14</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    container_name</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> miniflux-db</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    restart</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> unless-stopped</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    environment</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">POSTGRES_USER=miniflux</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">POSTGRES_PASSWORD=password</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">POSTGRES_DB=miniflux</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    volumes</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">./data:/var/lib/postgresql/data</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    healthcheck</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      test</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-foreground)"> [</span><span style="color:var(--shiki-token-string-expression)">&quot;CMD&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &quot;pg_isready&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &quot;-U&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-token-string-expression)"> &quot;miniflux&quot;</span><span style="color:var(--shiki-foreground)">]</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      interval</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> 10s</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      start_period</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> 30s</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  miniflux</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    image</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> miniflux/miniflux:2.1.3</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    container_name</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> miniflux-web</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    restart</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> unless-stopped</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    ports</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">&quot;8120:8080&quot;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    depends_on</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">db</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    environment</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">DATABASE_URL=postgres://miniflux:password@miniflux-db/miniflux?sslmode=disable</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">RUN_MIGRATIONS=1</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">CREATE_ADMIN=1</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">ADMIN_USERNAME=admin</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">      - </span><span style="color:var(--shiki-token-string-expression)">ADMIN_PASSWORD=password</span></span>
<span class="line"></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="fluent-reader"><a href="#fluent-reader" class="rp-header-anchor rp-link" aria-hidden="true">#</a>fluent-reader</h2>
<p>rss查看器, 在微软商店和苹果商店都可以搜索</p>
<p><a href="https://github.com/yang991178/fluent-reader" target="_blank" rel="noopener noreferrer" class="rp-link">开源地址</a></p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[厦门游记]]></title>
            <link>https://www.tteam.icu/blog/tour/2024厦门游记</link>
            <guid isPermaLink="false">/blog/tour/2024厦门游记</guid>
            <pubDate>Mon, 04 Nov 2024 09:56:12 GMT</pubDate>
            <description><![CDATA[记录作者与妹妹在厦门的四天三夜旅行经历，包括鼓浪屿、沙坡尾、演武大桥等景点的游览和美食体验]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="厦门游记"><a href="#厦门游记" class="rp-header-anchor rp-link" aria-hidden="true">#</a>厦门游记<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>这是一篇关于我在暑假初期，陪妹妹去厦门旅游的记录。碰巧朋友也想去，所以我把这次经历详细记录下来，供大家参考。</p>
<p>众所周知，我是一个毛怪，对厦门有着独特的情感，想去那里旅游已经好几年了。终于趁着妹妹想出去玩的机会，我推荐了厦门作为目的地。</p>
<p>我的行程安排在6月30日至7月3日。不久前央视刚刚点名批评过厦门旅游市场，这也使得我预订的住宿价格便宜了很多(小贴士: 和司机聊天时得知，直接私聊商家可以获得更优惠的价格)。</p>
<h3 class="rp-toc-include" id="第一天"><a href="#第一天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第一天</h3>
<p>我和妹妹乘坐了8小时的高铁，抵达厦门北站。</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/11bz9ll-3.webp" alt=""/></p>
<p>下了高铁后，我们立即乘坐地铁前往第一家酒店。由于计划第二天去鼓浪屿，所以我选择了距离厦鼓码头仅1公里多的酒店。</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-g680js3xk" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>酒店楼上的风景相当不错:</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/1251zoa-3.webp" alt=""/></p>
<p>酒店还贴心地送了小点心:</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/125mys0-3.webp" alt=""/></p>
<p>在酒店稍作休息充电后，我和妹妹一起前往憨强推荐的<code>野草莓</code>餐厅。</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-iqz4p21ii" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2024/11/04/12bkt7g-3.webp" alt=""/></p>
<p>由于<code>野草莓</code>距离海边很近，取号后我和妹妹便先去海边拍照。</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12csgjv-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12d9w7p-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12dclzf-3.webp" alt=""/></p>
<p>排队将近1小时后，终于轮到我们。我和妹妹点了几道菜品，大家猜猜这些菜总共多少钱？</p>
<p>不得不说，这个烤鸡真的超级好吃，我当时吃得都快感动了:</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12e4bn2-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12e5xmf-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12ej2bh-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12eldje-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12eo0ou-3.webp" alt=""/></p>
<p>答案揭晓: 只要155元！我和妹妹吃得超级撑。</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12fpwa0-3.webp" alt=""/></p>
<p>吃完饭后，我们打车前往演武大桥。正如预期的那样，这里交通拥堵严重。</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-t7727i91g" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>在切片组合影处打卡:</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12hh24p-3.webp" alt=""/></p>
<p>美丽的落日景色:</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12jvk38-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12k2ju9-3.webp" alt=""/></p>
<p>双子塔！</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12l105g-3.webp" alt=""/></p>
<p>偶遇葱！</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12krlbv-3.webp" alt=""/></p>
<p>夜晚的沙坡尾:</p>
<p><img src="https://img.tteam.icu/i/2024/11/04/12kpq0s-3.webp" alt=""/></p>
<h3 class="rp-toc-include" id="第二天"><a href="#第二天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第二天</h3>
<p>出发前往<code>厦鼓码头</code>，酒店出来的天桥上就看到了厦门的市花<code>三角梅</code>:</p>
<p><img src="https://img.tteam.icu/i/2024/11/05/zd7fqb-3.webp" alt=""/></p>
<p>我们提前一天在<code>屿见厦门</code>购买了鼓浪屿的双人经典游套餐，但由于妹妹未满18周岁，到现场后发现无法兑换，只好重新购买。</p>
<p>提醒大家: 一定要提前兑换船票，到现场后基本就没票了。我们当时运气好，刚好赶上了剩余的票。</p>
<p>鼓浪屿的风景太美了！</p>
<p><img src="https://img.tteam.icu/i/2024/11/05/10i3k7y-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/05/10i4vyw-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/05/10i64tj-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/05/10i7ll3-3.webp" alt=""/></p>
<p>上岛后当然少不了拍照:</p>
<p><img src="https://img.tteam.icu/i/2024/11/05/10iuck8-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/05/10ivyrc-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/05/10j7yjq-3.webp" alt=""/></p>
<p>对我来说，必去的地方当然是<code>相机博物馆</code>:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-1r1a724ck" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2024/11/05/129r8cq-3.webp" alt=""/></p>
<p>当然也要去打卡那个让主播“吓一跳”的抹香鲸标本:</p>
<p><img src="https://img.tteam.icu/i/2024/11/05/128m59q-3.webp" alt=""/></p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-udfpblyzl" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>下午下岛后，我们遇到了一件哭笑不得的事: <code>开禾路口站</code>分为BRT和公交两个站点，我默认上了BRT，结果发现和地图上显示的不一样。</p>
<p><img src="https://img.tteam.icu/i/2024/11/05/12ja11y-3.webp" alt=""/></p>
<p>入住第二家酒店后，妹妹说太累了，就在酒店休息。</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-w14weyux9" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>到酒店时我感觉时间还早，询问后得知还能在关店前赶到，于是直接去打卡<code>野台风</code>咖啡店。</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-fve09p9lo" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2024/11/05/12mco1v-3.webp" alt=""/></p>
<p>咖啡太好喝了，我直接点了两杯，然后打包一杯给妹妹:</p>
<p><img src="https://img.tteam.icu/i/2024/11/05/12mbpc9-3.webp" alt=""/></p>
<p>我性格比较内向，老板直接上来问我“你是hanser的粉丝吗”，被这直球提问吓了一跳。</p>
<p>后来我和老板聊了起来，相谈甚欢。</p>
<p>把打包的咖啡送到酒店后，我看时间还早，就去体验了公众号上的<code>鹭江夜游</code>。</p>
<p>在船上坐了一个多小时，吹着咸咸的海风，感觉非常舒服。</p>
<h3 class="rp-toc-include" id="第三天"><a href="#第三天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第三天</h3>
<p>今天是我独自游玩的一天，妹妹说昨天太累了，要在酒店休息。</p>
<p>第一站是<code>芋包嫂</code>:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-wyf0wxfso" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>由于我比较挑食，对芋包不是特别喜欢:</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/vt8j7q-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/vt9eco-3.webp" alt=""/></p>
<p>沙坡尾的景色真美，就是太晒了:</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/x56w85-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/x58de2-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/x59kqt-3.webp" alt=""/></p>
<p>沙坡尾入口的舒芙蕾特别好吃，入口即化:</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/x6dkii-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/x6epn9-3.webp" alt=""/></p>
<p>沙坡尾旁边就是猫街，因为我肚子吃得太饱了，所以没去吃憨推荐的<code>助屋</code>:</p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-sbdx4r0tu" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2024/11/06/x8pwta-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/x8qxj0-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/x8sd2n-3.webp" alt=""/></p>
<p>猫街很短，从猫街走出来就是双子塔:</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/x8zy96-3.webp" alt=""/></p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-mj20g1xt2" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p>当天是<code>BW</code>周边申请的第一天，下午三点我收到了最后一次测试的需求。考虑到附近没有合适的地方工作，我直接打车再次来到<code>野台风</code>。</p>
<p>在店里点了一杯<code>野台轰</code>:</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/xcax9a-3.webp" alt=""/></p>
<p>在店里完成测试后，我成功抢购到了周边(我是第一个抢到的)，太开心了！</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/zd33s5-3.webp" alt=""/></p>
<p>抢购完成后，我打包了一杯咖啡，前往<code>海上世界</code>，旁边就是海沧大桥:</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/z9243l-3.webp" alt=""/></p>
<div class="map-box" style="margin:0.8rem 0 1.6rem 0"><div id="map-nrkzdokn6" style="max-width:100%;height:400px;display:block;margin:0 auto;z-index:1;border-radius:5px"></div></div>
<p><img src="https://img.tteam.icu/i/2024/11/06/yz7wjf-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/yz8uda-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/yz9fns-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/yza3g0-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/yzapnt-3.webp" alt=""/></p>
<p>在海上世界随便进了一家餐厅，坐下后发现可以观赏鱼类，鱼缸深度似乎直达1楼，看来钱包要遭殃了:</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/z123v2-3.webp" alt=""/></p>
<p>我点了一些简单的菜品:</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/z2yv8g-3.webp" alt=""/></p>
<p>吃完后买了点面包就回酒店了。</p>
<h3 class="rp-toc-include" id="第四天"><a href="#第四天" class="rp-header-anchor rp-link" aria-hidden="true">#</a>第四天</h3>
<p>前一天睡得有点晚，我和妹妹再次来到海上世界，吃了饭，欣赏了风景(今天天气特别好):</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/za744m-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/za818i-3.webp" alt=""/></p>
<p><img src="https://img.tteam.icu/i/2024/11/06/za8wol-3.webp" alt=""/></p>
<p>吃完饭后，我们打车前往机场，结束了这次厦门之旅。</p>
<p><img src="https://img.tteam.icu/i/2024/11/06/zantuq-3.webp" alt=""/></p>
<h2 class="rp-toc-include" id="总结"><a href="#总结" class="rp-header-anchor rp-link" aria-hidden="true">#</a>总结</h2>
<p>厦门是一个美丽而惬意的城市，值得多次前往。无论是鼓浪屿的历史风情，还是沙坡尾的文艺气息，都给我留下了深刻的印象。这次旅行不仅圆了我多年的心愿，也为我和妹妹创造了美好的回忆。</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的服务器小技巧】docker配合syslog]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的服务器小技巧】docker配合syslog</link>
            <guid isPermaLink="false">/blog/ops/【实用的服务器小技巧】docker配合syslog</guid>
            <pubDate>Tue, 22 Aug 2023 16:11:40 GMT</pubDate>
            <description><![CDATA[介绍如何配置Docker与Syslog配合使用，实现容器日志的集中管理、自动压缩和清理]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="docker与syslog集成配置"><a href="#docker与syslog集成配置" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Docker与Syslog集成配置<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>可以访问我的码云仓库，获取初始化服务器脚本，里面集成了一键配置: <a href="https://gitee.com/buyfakett/centos7_initialization" target="_blank" rel="noopener noreferrer" class="rp-link">https://gitee.com/buyfakett/centos7_initialization</a></p>
<p><strong>注意</strong>: 需要安装docker-ce版本，使用yum安装的版本可能无法正常工作！</p>
<h2 class="rp-toc-include" id="配置syslog"><a href="#配置syslog" class="rp-header-anchor rp-link" aria-hidden="true">#</a>配置syslog</h2>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>vi /etc/rsyslog.conf</span></span>
<span class="line"><span></span></span>
<span class="line"><span>#把tcp两行注释去掉</span></span>
<span class="line"><span>$ModLoad imtcp</span></span>
<span class="line"><span>$InputTCPServerRun 514</span></span>
<span class="line"><span></span></span>
<span class="line"><span>systemctl restart rsyslog</span></span>
<span class="line"><span>systemctl status rsyslog</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="给docker配置rsyslog"><a href="#给docker配置rsyslog" class="rp-header-anchor rp-link" aria-hidden="true">#</a>给docker配置rsyslog</h2>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>cat /etc/docker/daemon.json</span></span>
<span class="line"><span>{</span></span>
<span class="line"><span>  &quot;registry-mirrors&quot;: [</span></span>
<span class="line"><span>    &quot;https://pee6w651.mirror.aliyuncs.com&quot;</span></span>
<span class="line"><span>  ],</span></span>
<span class="line"><span>  &quot;data-root&quot;: &quot;/data/data-docker&quot;,</span></span>
<span class="line"><span>  &quot;log-driver&quot;: &quot;syslog&quot;,</span></span>
<span class="line"><span>  &quot;log-opts&quot;: {</span></span>
<span class="line"><span>    &quot;syslog-address&quot;: &quot;tcp://127.0.0.1:514&quot;,</span></span>
<span class="line"><span>    &quot;tag&quot;: &quot;docker/{{.Name}},&quot;</span></span>
<span class="line"><span>   }</span></span>
<span class="line"><span>}</span></span>
<span class="line"><span>data-root  #指定镜像容器存放的位置</span></span>
<span class="line"><span>log-driver #创建一个日志处理的服务</span></span>
<span class="line"><span>log-opts   #日志服务的参数</span></span>
<span class="line"><span>  syslog-address  #tcp 公网ip</span></span>
<span class="line"><span>  tag             #日志存放的位置,具体路径在模板处设置</span></span>
<span class="line"><span>                    </span></span>
<span class="line"><span>systemctl restart docker</span></span>
<span class="line"><span>systemctl status docker</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="创建一个rsyslog模板"><a href="#创建一个rsyslog模板" class="rp-header-anchor rp-link" aria-hidden="true">#</a>创建一个rsyslog模板</h2>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>cd /etc/rsyslog.d</span></span>
<span class="line"><span>#新建模板</span></span>
<span class="line"><span>vi rule.conf</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>#最开始要添加这些</span></span>
<span class="line"><span># #011替换成tab</span></span>
<span class="line"><span>$EscapeControlCharactersOnReceive off</span></span>
<span class="line"><span># 删除日志首位空格,只保留原日志</span></span>
<span class="line"><span>$template CleanMsgFormat,&quot;%msg:2:$%\n&quot;</span></span>
<span class="line"><span></span></span>
<span class="line"><span></span></span>
<span class="line"><span>#### bind ####</span></span>
<span class="line"><span># 定义 bind 日志模版</span></span>
<span class="line"><span>### 拦截全部docker日志</span></span>
<span class="line"><span>$template docker,&quot;data/logs/docker/%syslogtag:F,44:1%/%$YEAR%-%$MONTH%-%$DAY%.log&quot;</span></span>
<span class="line"><span>if $syslogtag contains &#x27;docker&#x27; then ?docker;CleanMsgFormat</span></span>
<span class="line"><span>&amp; ~</span></span>
<span class="line"><span>#&amp; stop 类似于java 的break</span></span>
<span class="line"><span></span></span>
<span class="line"><span>#### nginx ####</span></span>
<span class="line"><span>$template nginx,&quot;/data/logs/nginx/%programname%-%timereported:0:10:date-rfc3339%-%HOSTNAME%.log&quot;</span></span>
<span class="line"><span>if $programname startswith &#x27;nginx&#x27; then ?nginx;CleanMsgFormat</span></span>
<span class="line"><span>&amp; stop</span></span>
<span class="line"><span>systemctl restart rsyslog</span></span>
<span class="line"><span>systemctl status rsyslog</span></span>
<span class="line"><span>$template bind,&quot;/data/logs/......&quot;</span></span>
<span class="line"><span> # 日志的绝对路径 和 daemon.json中的 tag参数 拼接 的路径为 日志具体存放地址</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="将模板放到docker的配置上"><a href="#将模板放到docker的配置上" class="rp-header-anchor rp-link" aria-hidden="true">#</a>将模板放到docker的配置上</h2>
<h2 class="rp-toc-include" id="日志自动压缩自动删除"><a href="#日志自动压缩自动删除" class="rp-header-anchor rp-link" aria-hidden="true">#</a>日志自动压缩+自动删除</h2>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>#放在/data/logs/docker/这一层</span></span>
<span class="line"><span>cat del_gz.sh </span></span>
<span class="line"><span>#!/bin/bash</span></span>
<span class="line"><span>find /data/logs/ -mtime +3 -name &quot;*.gz&quot; -exec rm -rf {} \;</span></span>
<span class="line"><span></span></span>
<span class="line"><span></span></span>
<span class="line"><span>gzip_log.sh </span></span>
<span class="line"><span>#!/bin/bash</span></span>
<span class="line"><span></span></span>
<span class="line"><span>for day in 1;</span></span>
<span class="line"><span>do</span></span>
<span class="line"><span>find /data/logs/ -name `date -d &quot;${day} days ago&quot; +%Y-%m-%d`*.log -type f -exec gzip {} \;</span></span>
<span class="line"><span>done</span></span>
<span class="line"><span>crontab -e</span></span>
<span class="line"><span>0 12 * * * /bin/sh -x /data/logs/docker/gzip_log.sh</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的服务器小技巧】用kplayer循环视频直播]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的服务器小技巧】用kplayer循环视频直播</link>
            <guid isPermaLink="false">/blog/ops/【实用的服务器小技巧】用kplayer循环视频直播</guid>
            <pubDate>Tue, 22 Aug 2023 16:11:40 GMT</pubDate>
            <description><![CDATA[详细介绍如何使用kplayer在服务器上实现视频循环直播，适用于B站等平台的直播活动]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="1-介绍"><a href="#1-介绍" class="rp-header-anchor rp-link" aria-hidden="true">#</a>1. 介绍</h2>
<p>B站等平台有许多直播活动，只要进行直播就可以获得贝壳(可兑换为软妹币)</p>
<p>使用<a href="https://github.com/bytelang/kplayer-go" target="_blank" rel="noopener noreferrer" class="rp-link">kplayer</a>可以实现1-n个视频的循环直播</p>
<h2 class="rp-toc-include" id="2-项目展示"><a href="#2-项目展示" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2. 项目展示</h2>
<h3 class="rp-toc-include" id="ffmpeg"><a href="#ffmpeg" class="rp-header-anchor rp-link" aria-hidden="true">#</a>FFmpeg</h3>
<p>FFmpeg是一套用于记录、转换数字音频和视频，并能将其转化为流的开源计算机程序，几乎所有的流媒体应用都基于FFmpeg开发</p>
<h3 class="rp-toc-include" id="kplayer"><a href="#kplayer" class="rp-header-anchor rp-link" aria-hidden="true">#</a>KPlayer</h3>
<p>KPlayer是一个低成本搭建视频推流功能的工具。相比OBS等依赖图形化界面的推流方案，KPlayer无需图形界面，可在任何服务器或云服务器上部署，实现多视频资源的无缝推流</p>
<p>GitHub项目地址: <a href="https://github.com/bytelang/kplayer-go" target="_blank" rel="noopener noreferrer" class="rp-link">https://github.com/bytelang/kplayer-go</a></p>
<blockquote>
<h2 class="rp-toc-include" id="3环境准备"><a href="#3环境准备" class="rp-header-anchor rp-link" aria-hidden="true">#</a>3.环境准备</h2>
</blockquote>
<ul>
<li>服务器: 本期使用的是<a href="https://cloud.tencent.com/product/lighthouse?fromSource=gwzcw.1293314.1293314.1293314&amp;cps_key=923faf881f7f4f42d8bb30f7a5c32918" target="_blank" rel="noopener noreferrer" class="rp-link">良心云</a>轻量云服务器</li>
<li>系统: centos7.9</li>
<li>最好安装有宝塔面板，以便后面的自动任务</li>
<li>默认root用户登录</li>
</ul>
<blockquote>
<h2 class="rp-toc-include" id="4开始搭建"><a href="#4开始搭建" class="rp-header-anchor rp-link" aria-hidden="true">#</a>4.开始搭建</h2>
</blockquote>
<h4 class="rp-toc-include" id="服务器初始设置"><a href="#服务器初始设置" class="rp-header-anchor rp-link" aria-hidden="true">#</a>服务器初始设置</h4>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">yum</span><span style="color:var(--shiki-token-string)"> update</span><span style="color:var(--shiki-token-string)"> -y</span><span style="color:var(--shiki-token-punctuation)"> &amp;&amp;</span><span style="color:var(--shiki-token-function)"> yum</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> -y</span><span style="color:var(--shiki-token-string)"> docker</span><span style="color:var(--shiki-token-comment)"> #先把服务器的包更新一下，然后安装docker</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">systemctl</span><span style="color:var(--shiki-token-string)"> start</span><span style="color:var(--shiki-token-string)"> docker</span><span style="color:var(--shiki-token-comment)"> #启动docker</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">systemctl</span><span style="color:var(--shiki-token-string)"> enable</span><span style="color:var(--shiki-token-string)"> docker</span><span style="color:var(--shiki-token-comment)"> #把docker设置为开机启动</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h4 class="rp-toc-include" id="安装kplayer"><a href="#安装kplayer" class="rp-header-anchor rp-link" aria-hidden="true">#</a>安装kplayer</h4>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">mkdir</span><span style="color:var(--shiki-token-string)"> /data/kplayer</span><span style="color:var(--shiki-token-comment)"> #创建安装目录</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">cd</span><span style="color:var(--shiki-token-string)"> /data/kplayer</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">curl</span><span style="color:var(--shiki-token-string)"> -fsSL</span><span style="color:var(--shiki-token-string)"> get.kplayer.net</span><span style="color:var(--shiki-token-keyword)"> |</span><span style="color:var(--shiki-token-function)"> bash</span><span style="color:var(--shiki-token-comment)"> #安装kplayer</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">vi</span><span style="color:var(--shiki-token-string)"> config.json</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<div class="rp-codeblock language-json"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="json"><code><span class="line"><span style="color:var(--shiki-foreground)">{</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    &quot;version&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-string-expression)"> &quot;2.0.0&quot;</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    &quot;resource&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        &quot;lists&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-foreground)"> [</span></span>
<span class="line"><span style="color:var(--shiki-token-string-expression)">            &quot;/data/kplayer/1.mp4&quot;</span><span style="color:var(--shiki-token-comment)"> //这里填循环地址，可多视频</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        ]</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    }</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    &quot;play&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;play_model&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-string-expression)"> &quot;loop&quot;</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    }</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    &quot;encode&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;video_width&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-constant)"> 1920</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;video_height&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-constant)"> 1080</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;video_fps&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-constant)"> 24</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">      &quot;bit_rate&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-constant)"> 2000</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    }</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">    &quot;output&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">        &quot;lists&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-foreground)"> [</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">            {</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">                &quot;path&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-token-string-expression)"> &quot;&quot;</span><span style="color:var(--shiki-token-comment)"> //这里填直播地址</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">            }</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">        ]</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">    }</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span>
<span class="line"></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>打开你想要直播平台的开播设置，这里以b站为例<a href="https://link.bilibili.com/p/center/index?spm_id_from=333.1007.0.0#/my-room/start-live" target="_blank" rel="noopener noreferrer" class="rp-link">链接</a></p>
<p>点击开始直播就会有一个服务器地址和一个串流秘钥</p>
<p><img src="https://img.tteam.icu/i/2022/05/24/kaok9n-3.webp" alt="image-20220524122651450"/></p>
<p>复制你的服务器地址和串流秘钥一起填进config.json终端path里(组合填进)</p>
<p><img src="https://img.tteam.icu/i/2022/05/24/kb5y8l-3.webp" alt="image-20220524122805713"/></p>
<p>设置好后文件目录是这样的</p>
<p><img src="https://img.tteam.icu/i/2022/05/24/kg08la-3.webp" alt="image-20220524123619520"/></p>
<p>用这条命令启动直播</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">cd</span><span style="color:var(--shiki-token-string)"> /data/kplayer</span><span style="color:var(--shiki-token-punctuation)"> &amp;&amp;</span><span style="color:var(--shiki-token-function)"> ./kplayer</span><span style="color:var(--shiki-token-string)"> play</span><span style="color:var(--shiki-token-string)"> start</span><span style="color:var(--shiki-token-string)"> -d</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>可以保存成一个.sh脚本，想要直播的时候bash一下就好了，或者想我一样设置一个快捷命令</p>
<p><img src="https://img.tteam.icu/i/2022/05/24/kfj005-3.webp" alt="image-20220524123539008"/></p>
<p>如果显示erpo就是有一个kplayer在运行</p>
<p><img src="https://img.tteam.icu/i/2022/05/24/kbd29v-3.webp" alt="image-20220524122839095"/></p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">kill</span><span style="color:var(--shiki-token-constant)"> 20273</span><span style="color:var(--shiki-token-comment)"> #填pid</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>再次运行命令显示info就成功了</p>
<p><img src="https://img.tteam.icu/i/2022/05/24/kbth98-3.webp" alt="image-20220524122916006"/></p>
<p>进入直播间可以确认一下</p>
<p><img src="https://img.tteam.icu/i/2022/05/24/khocpq-3.webp" alt="image-20220524123859776"/></p>
<p>这是我直播的数据，直播一段时间会被掐掉，需要重新开启直播</p>
<p><img src="https://img.tteam.icu/i/2022/05/24/kicmz2-3.webp" alt="image-20220524124012928"/></p>
<p>开启直播的时候把串流秘钥复制一下，编辑config.json吧?和后面的替换掉然后运行命令就好了</p>
<p><img src="https://img.tteam.icu/i/2022/05/24/kaok9n-3.webp" alt="image-20220524122651450"/></p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的docker小技巧】aria下载]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的docker小技巧】aria下载</link>
            <guid isPermaLink="false">/blog/ops/【实用的docker小技巧】aria下载</guid>
            <pubDate>Tue, 22 Aug 2023 16:11:39 GMT</pubDate>
            <description><![CDATA[介绍如何使用Docker部署Aria2下载器和AriaNg Web界面，实现高效的文件下载功能]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="aria下载器部署"><a href="#aria下载器部署" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Aria下载器部署<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="ariang-web界面"><a href="#ariang-web界面" class="rp-header-anchor rp-link" aria-hidden="true">#</a>AriaNg Web界面</h2>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> run</span><span style="color:var(--shiki-token-string)"> -d</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">--name </span><span style="color:var(--shiki-token-string)">ariang</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">--restart </span><span style="color:var(--shiki-token-string)">unless-stopped</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-p </span><span style="color:var(--shiki-token-string)">16880:6880</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">p3terx/ariang</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="aria2下载服务"><a href="#aria2下载服务" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Aria2下载服务</h2>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> run</span><span style="color:var(--shiki-token-string)"> -d</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">--name </span><span style="color:var(--shiki-token-string)">aria2</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">--restart </span><span style="color:var(--shiki-token-string)">unless-stopped</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-e </span><span style="color:var(--shiki-token-string)">PUID=</span><span style="color:var(--shiki-foreground)">$UID \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-e </span><span style="color:var(--shiki-token-string)">PGID=</span><span style="color:var(--shiki-foreground)">$GID \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-e </span><span style="color:var(--shiki-token-string)">UMASK_SET=</span><span style="color:var(--shiki-token-constant)">022</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-e </span><span style="color:var(--shiki-token-string)">RPC_SECRET=prc_password</span><span style="color:var(--shiki-foreground)"> \# </span><span style="color:var(--shiki-token-string)">这里为连接的密码</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">-e</span><span style="color:var(--shiki-token-string)"> RPC_PORT=</span><span style="color:var(--shiki-token-constant)">6800</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-e </span><span style="color:var(--shiki-token-string)">LISTEN_PORT=</span><span style="color:var(--shiki-token-constant)">6888</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-p </span><span style="color:var(--shiki-token-string)">16800:6800</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-p </span><span style="color:var(--shiki-token-string)">16888:6888</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-p </span><span style="color:var(--shiki-token-string)">16888:6888/udp</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-v </span><span style="color:var(--shiki-token-string)">/data/docker/aria2/config:/config</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-v </span><span style="color:var(--shiki-token-string)">/data/docker/aria2/downloads:/downloads</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">p3terx/aria2-pro</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="连接说明"><a href="#连接说明" class="rp-header-anchor rp-link" aria-hidden="true">#</a>连接说明</h2>
<p>使用 <code>prc_password</code> 作为连接密码</p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的docker小技巧】bililive-go录播]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的docker小技巧】bililive-go录播</link>
            <guid isPermaLink="false">/blog/ops/【实用的docker小技巧】bililive-go录播</guid>
            <pubDate>Tue, 22 Aug 2023 16:11:39 GMT</pubDate>
            <description><![CDATA[介绍如何使用Docker部署bililive-go工具，实现B站直播的自动录制功能]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="b站直播录制部署"><a href="#b站直播录制部署" class="rp-header-anchor rp-link" aria-hidden="true">#</a>B站直播录制部署<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="部署命令"><a href="#部署命令" class="rp-header-anchor rp-link" aria-hidden="true">#</a>部署命令</h2>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> run</span><span style="color:var(--shiki-token-string)"> --restart=always</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-v </span><span style="color:var(--shiki-token-string)">/data/bililive:/etc/bililive-go</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-v </span><span style="color:var(--shiki-token-string)">/data/bililive:/srv/bililive</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-p </span><span style="color:var(--shiki-token-string)">8085:8080</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">-d </span><span style="color:var(--shiki-token-string)">chigusa/bililive-go</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="配置文件"><a href="#配置文件" class="rp-header-anchor rp-link" aria-hidden="true">#</a>配置文件</h2>
<p>创建 <code>config.yml</code> 配置文件:</p>
<div class="rp-codeblock language-yaml"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="yaml"><code><span class="line"><span style="color:var(--shiki-token-keyword)">rpc</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  enable</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> true</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  bind</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> :8080</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">debug</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> false</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">interval</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> 20</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">out_put_path</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> /srv/bililive</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">feature</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  use_native_flv_parser</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> false</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">live_rooms</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">- </span><span style="color:var(--shiki-token-string-expression)">https://live.bilibili.com/255</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">out_put_tmpl</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> &quot;&quot;</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">video_split_strategies</span><span style="color:var(--shiki-token-keyword)">:</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  on_room_name_changed</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> false</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">  max_duration</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> 0s</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的docker小技巧】jellyfin影视]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的docker小技巧】jellyfin影视</link>
            <guid isPermaLink="false">/blog/ops/【实用的docker小技巧】jellyfin影视</guid>
            <pubDate>Tue, 22 Aug 2023 16:11:39 GMT</pubDate>
            <description><![CDATA[介绍如何使用Docker部署Jellyfin媒体服务器，实现影视内容的管理和播放]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="jellyfin媒体服务器部署"><a href="#jellyfin媒体服务器部署" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Jellyfin媒体服务器部署<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="部署命令"><a href="#部署命令" class="rp-header-anchor rp-link" aria-hidden="true">#</a>部署命令</h2>
<p>默认端口是8096</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> run</span><span style="color:var(--shiki-token-string)"> -d</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> --name</span><span style="color:var(--shiki-token-string)"> jellyfin</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> --net=host</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> -v</span><span style="color:var(--shiki-token-string)"> /data/jellyfin/config:/config</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> -v</span><span style="color:var(--shiki-token-string)"> /data/jellyfin/cache:/cache</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> -v</span><span style="color:var(--shiki-token-string)"> /data/docker/bililive/moves:/moves</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> --restart=unless-stopped</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> jellyfin/jellyfin</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的docker小技巧】部署docker]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的docker小技巧】部署docker</link>
            <guid isPermaLink="false">/blog/ops/【实用的docker小技巧】部署docker</guid>
            <pubDate>Tue, 22 Aug 2023 16:11:39 GMT</pubDate>
            <description><![CDATA[介绍如何在CentOS 7系统上部署Docker，包括安装、配置和常用技巧]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="docker部署指南"><a href="#docker部署指南" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Docker部署指南<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<p>以CentOS 7为例</p>
<h2 class="rp-toc-include" id="安装docker"><a href="#安装docker" class="rp-header-anchor rp-link" aria-hidden="true">#</a>安装Docker</h2>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-comment)"># 更新yum包</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">yum</span><span style="color:var(--shiki-token-string)"> update</span><span style="color:var(--shiki-token-string)"> -y</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)"># 安装Docker</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">yum</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> -y</span><span style="color:var(--shiki-token-string)"> docker</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)"># 启动Docker</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">systemctl</span><span style="color:var(--shiki-token-string)"> start</span><span style="color:var(--shiki-token-string)"> docker</span><span style="color:var(--shiki-foreground)">                                                          </span></span>
<span class="line"><span style="color:var(--shiki-token-comment)"># 设置Docker开机自启</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">systemctl</span><span style="color:var(--shiki-token-string)"> enable</span><span style="color:var(--shiki-token-string)"> docker</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="实用技巧"><a href="#实用技巧" class="rp-header-anchor rp-link" aria-hidden="true">#</a>实用技巧</h2>
<h3 class="rp-toc-include" id="设置容器开机自启"><a href="#设置容器开机自启" class="rp-header-anchor rp-link" aria-hidden="true">#</a>设置容器开机自启</h3>
<p>如果运行容器时忘记设置开机自启，可以执行:</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> update</span><span style="color:var(--shiki-token-string)"> --restart=always</span><span style="color:var(--shiki-token-string)"> 容器名或者ID</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="使用主机网络"><a href="#使用主机网络" class="rp-header-anchor rp-link" aria-hidden="true">#</a>使用主机网络</h3>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-foreground)">--net</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string)">host</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="更换阿里云镜像源"><a href="#更换阿里云镜像源" class="rp-header-anchor rp-link" aria-hidden="true">#</a>更换阿里云镜像源</h3>
<p>编辑配置文件:</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">vi</span><span style="color:var(--shiki-token-string)"> /etc/docker/daemon.json</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>添加以下内容:</p>
<div class="rp-codeblock language-json"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="json"><code><span class="line"><span style="color:var(--shiki-foreground)">{</span><span style="color:var(--shiki-token-keyword)">&quot;registry-mirrors&quot;</span><span style="color:var(--shiki-token-punctuation)">:</span><span style="color:var(--shiki-foreground)"> [</span><span style="color:var(--shiki-token-string-expression)">&quot;https://pee6w651.mirror.aliyuncs.com&quot;</span><span style="color:var(--shiki-foreground)">]}</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="安装docker-compose"><a href="#安装docker-compose" class="rp-header-anchor rp-link" aria-hidden="true">#</a>安装Docker Compose</h3>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">sudo</span><span style="color:var(--shiki-token-string)"> curl</span><span style="color:var(--shiki-token-string)"> -L</span><span style="color:var(--shiki-token-string)"> https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-</span><span style="color:var(--shiki-token-string-expression)">`</span><span style="color:var(--shiki-token-function)">uname</span><span style="color:var(--shiki-token-string)"> -s</span><span style="color:var(--shiki-token-string-expression)">`</span><span style="color:var(--shiki-token-function)">-</span><span style="color:var(--shiki-token-string-expression)">`</span><span style="color:var(--shiki-token-function)">uname</span><span style="color:var(--shiki-token-string)"> -m</span><span style="color:var(--shiki-token-string-expression)">`</span><span style="color:var(--shiki-token-function)"> -o</span><span style="color:var(--shiki-token-string)"> /usr/local/bin/docker-compose</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">chmod</span><span style="color:var(--shiki-token-string)"> +x</span><span style="color:var(--shiki-token-string)"> /usr/local/bin/docker-compose</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的服务器小技巧】frp内网穿透]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的服务器小技巧】frp内网穿透</link>
            <guid isPermaLink="false">/blog/ops/【实用的服务器小技巧】frp内网穿透</guid>
            <pubDate>Tue, 22 Aug 2023 16:11:39 GMT</pubDate>
            <description><![CDATA[介绍如何使用frp进行内网穿透，包括服务端安装和客户端配置方法]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="frp内网穿透配置指南"><a href="#frp内网穿透配置指南" class="rp-header-anchor rp-link" aria-hidden="true">#</a>FRP内网穿透配置指南<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="服务端安装"><a href="#服务端安装" class="rp-header-anchor rp-link" aria-hidden="true">#</a>服务端安装</h2>
<p>一键安装脚本GitHub地址: <a href="https://github.com/MvsCode/frps-onekey" target="_blank" rel="noopener noreferrer" class="rp-link">https://github.com/MvsCode/frps-onekey</a></p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">wget</span><span style="color:var(--shiki-token-string)"> https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh</span><span style="color:var(--shiki-token-string)"> -O</span><span style="color:var(--shiki-token-string)"> ./install-frps.sh</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">chmod</span><span style="color:var(--shiki-token-constant)"> 700</span><span style="color:var(--shiki-token-string)"> ./install-frps.sh</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">./install-frps.sh</span><span style="color:var(--shiki-token-string)"> install</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="本地客户端配置"><a href="#本地客户端配置" class="rp-header-anchor rp-link" aria-hidden="true">#</a>本地客户端配置</h2>
<p>创建 <code>frpc.ini</code> 配置文件:</p>
<div class="rp-codeblock language-ini"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="ini"><code><span class="line"><span style="color:var(--shiki-foreground)">[common]</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">server_addr</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 服务器IP</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">server_port</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 服务器端口</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">token</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 访问令牌</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-foreground)">[name]</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">type</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> tcp</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">local_ip</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 本地IP</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">local_port</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 本地端口</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">remote_port</span><span style="color:var(--shiki-token-keyword)"> =</span><span style="color:var(--shiki-foreground)"> 外网访问端口</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="启动客户端"><a href="#启动客户端" class="rp-header-anchor rp-link" aria-hidden="true">#</a>启动客户端</h2>
<h3 class="rp-toc-include" id="windows系统"><a href="#windows系统" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Windows系统</h3>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">frpc.exe</span><span style="color:var(--shiki-token-string)"> -c</span><span style="color:var(--shiki-token-string)"> ./frpc.ini</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h3 class="rp-toc-include" id="docker运行"><a href="#docker运行" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Docker运行</h3>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> run</span><span style="color:var(--shiki-token-string)"> -d</span><span style="color:var(--shiki-token-string)"> --network</span><span style="color:var(--shiki-token-string)"> host</span><span style="color:var(--shiki-token-string)"> --name</span><span style="color:var(--shiki-token-string)"> frpc</span><span style="color:var(--shiki-token-string)"> --restart=always</span><span style="color:var(--shiki-token-string)"> -v</span><span style="color:var(--shiki-token-string)"> /data/docker/frpc/frpc.ini:/frp/frpc.ini</span><span style="color:var(--shiki-token-string)"> stilleshan/frpc</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的服务器小技巧】录播bililive-go+bypy+Jellyfin]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的服务器小技巧】录播bililive-go+bypy+Jellyfin</link>
            <guid isPermaLink="false">/blog/ops/【实用的服务器小技巧】录播bililive-go+bypy+Jellyfin</guid>
            <pubDate>Tue, 22 Aug 2023 16:11:39 GMT</pubDate>
            <description><![CDATA[详细介绍如何使用bililive-go、bypy和Jellyfin搭建B站直播录播系统，实现自动录制、上传和媒体管理]]></description>
            <content:encoded><![CDATA[<!--$--><h2 class="rp-toc-include" id="1-介绍"><a href="#1-介绍" class="rp-header-anchor rp-link" aria-hidden="true">#</a>1. 介绍</h2>
<p>喜欢观看直播的用户都知道，一旦错过了直播，通常很难找到回放</p>
<p>虽然有些UP主会自行上传直播录像或有专门的录播组，但往往不够及时</p>
<p>本文将介绍如何使用<a href="https://github.com/hr3lxphr6j/bililive-go" target="_blank" rel="noopener noreferrer" class="rp-link">bililive-go</a>+<a href="https://github.com/houtianze/bypy" target="_blank" rel="noopener noreferrer" class="rp-link">bypy</a>+<a href="https://jellyfin.org/" target="_blank" rel="noopener noreferrer" class="rp-link">Jellyfin</a>搭建个人录播系统(此方法也适用于家庭NAS，访问速度更快)</p>
<blockquote>
<h2 class="rp-toc-include" id="2项目展示"><a href="#2项目展示" class="rp-header-anchor rp-link" aria-hidden="true">#</a>2.项目展示</h2>
</blockquote>
<h4 class="rp-toc-include" id="bililive-go"><a href="#bililive-go" class="rp-header-anchor rp-link" aria-hidden="true">#</a>bililive-go</h4>
<h5 class="rp-toc-include" id="是我用过最好用的录播工具没有之一而且有docker一键部署肥肠方便"><a href="#是我用过最好用的录播工具没有之一而且有docker一键部署肥肠方便" class="rp-header-anchor rp-link" aria-hidden="true">#</a>是我用过最好用的录播工具(没有之一)，而且有docker一键部署，肥肠方便</h5>
<p>github项目地址: <a href="https://github.com/hr3lxphr6j/bililive-go" target="_blank" rel="noopener noreferrer" class="rp-link">https://github.com/hr3lxphr6j/bililive-go</a></p>
<p>docker项目地址: <a href="https://hub.docker.com/r/chigusa/bililive-go" target="_blank" rel="noopener noreferrer" class="rp-link">https://hub.docker.com/r/chigusa/bililive-go</a>
<img src="https://img.tteam.icu/i/2022/05/18/r0aoep-3.webp" alt="image-20220518163306081"/></p>
<h4 class="rp-toc-include" id="bypy"><a href="#bypy" class="rp-header-anchor rp-link" aria-hidden="true">#</a>bypy</h4>
<h5 class="rp-toc-include" id="这是一个开源上传或下载百度云百度网盘的python客户端"><a href="#这是一个开源上传或下载百度云百度网盘的python客户端" class="rp-header-anchor rp-link" aria-hidden="true">#</a>这是一个开源上传或下载百度云/百度网盘的python客户端</h5>
<p>github项目地址: <a href="https://github.com/houtianze/bypy" target="_blank" rel="noopener noreferrer" class="rp-link">https://github.com/houtianze/bypy</a></p>
<h4 class="rp-toc-include" id="jellyfin"><a href="#jellyfin" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Jellyfin</h4>
<h5 class="rp-toc-include" id="家里有nas的都知道这是最有名的媒体中心之一而且也有docker版一键部署"><a href="#家里有nas的都知道这是最有名的媒体中心之一而且也有docker版一键部署" class="rp-header-anchor rp-link" aria-hidden="true">#</a>家里有nas的都知道，这是最有名的媒体中心之一(而且也有docker版，一键部署)</h5>
<p>项目官网: <a href="https://jellyfin.org/" target="_blank" rel="noopener noreferrer" class="rp-link">https://jellyfin.org/</a></p>
<blockquote>
<h2 class="rp-toc-include" id="3环境准备"><a href="#3环境准备" class="rp-header-anchor rp-link" aria-hidden="true">#</a>3.环境准备</h2>
</blockquote>
<ul>
<li>服务器: 本期使用的是<a href="https://cloud.tencent.com/product/lighthouse?fromSource=gwzcw.1293314.1293314.1293314&amp;cps_key=923faf881f7f4f42d8bb30f7a5c32918" target="_blank" rel="noopener noreferrer" class="rp-link">良心云</a>轻量云服务器</li>
<li>系统: centos7.9</li>
<li>最好安装有宝塔面板，以便后面的自动任务</li>
<li>默认root用户登录</li>
</ul>
<blockquote>
<h2 class="rp-toc-include" id="4开始搭建"><a href="#4开始搭建" class="rp-header-anchor rp-link" aria-hidden="true">#</a>4.开始搭建</h2>
</blockquote>
<h4 class="rp-toc-include" id="服务器初始设置"><a href="#服务器初始设置" class="rp-header-anchor rp-link" aria-hidden="true">#</a>服务器初始设置</h4>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">yum</span><span style="color:var(--shiki-token-string)"> update</span><span style="color:var(--shiki-token-string)"> -y</span><span style="color:var(--shiki-token-punctuation)"> &amp;&amp;</span><span style="color:var(--shiki-token-function)"> yum</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> -y</span><span style="color:var(--shiki-token-string)"> docker</span><span style="color:var(--shiki-token-comment)"> #先把服务器的包更新一下，然后安装docker</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">systemctl</span><span style="color:var(--shiki-token-string)"> start</span><span style="color:var(--shiki-token-string)"> docker</span><span style="color:var(--shiki-token-comment)"> #启动docker</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">systemctl</span><span style="color:var(--shiki-token-string)"> enable</span><span style="color:var(--shiki-token-string)"> docker</span><span style="color:var(--shiki-token-comment)"> #把docker设置为开机启动</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h4 class="rp-toc-include" id="安装bililive-go"><a href="#安装bililive-go" class="rp-header-anchor rp-link" aria-hidden="true">#</a>安装bililive-go</h4>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">mkdir</span><span style="color:var(--shiki-token-string)"> /data/docker/bililive</span><span style="color:var(--shiki-token-comment)"> #创建安装目录</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">cd</span><span style="color:var(--shiki-token-string)"> /data/docker/bililive</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">vi</span><span style="color:var(--shiki-token-string)"> config.yml</span><span style="color:var(--shiki-token-comment)"> #以前的版本可能有bug，不知道现在有没有，最好先把配置文件新建好</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">rpc:</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">  enable:</span><span style="color:var(--shiki-token-constant)"> true</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">  bind:</span><span style="color:var(--shiki-token-string)"> :8080</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">debug:</span><span style="color:var(--shiki-token-constant)"> false</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">interval:</span><span style="color:var(--shiki-token-constant)"> 20</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">out_put_path:</span><span style="color:var(--shiki-token-string)"> /srv/bililive</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">feature:</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">  use_native_flv_parser:</span><span style="color:var(--shiki-token-constant)"> false</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">live_rooms:</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">-</span><span style="color:var(--shiki-token-string)"> https://live.bilibili.com/2343216</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">out_put_tmpl:</span><span style="color:var(--shiki-token-string-expression)"> &quot;&quot;</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">video_split_strategies:</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">  on_room_name_changed:</span><span style="color:var(--shiki-token-constant)"> false</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">  max_duration:</span><span style="color:var(--shiki-token-string)"> 0s</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> run</span><span style="color:var(--shiki-token-string)"> --restart=always</span><span style="color:var(--shiki-token-string)"> -v</span><span style="color:var(--shiki-token-string)"> /data/docker/bililive:/etc/bililive-go</span><span style="color:var(--shiki-token-string)"> -v</span><span style="color:var(--shiki-token-string)"> /data/docker/bililive:/srv/bililive</span><span style="color:var(--shiki-token-string)"> -p</span><span style="color:var(--shiki-token-string)"> 8080:8080</span><span style="color:var(--shiki-token-string)"> -d</span><span style="color:var(--shiki-token-string)"> chigusa/bililive-go</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>其中两个挂载出来的地址可以填同一个，一个是录播地址，一个是config的路径，外部端口可以改任意端口</p>
<p>搭建完以后用ip:端口访问</p>
<p><img src="https://img.tteam.icu/i/2022/05/18/ly54jq-3.webp" alt="image-20220518132711415"/></p>
<p>这是搭建成功的画面</p>
<p><img src="https://img.tteam.icu/i/2022/05/18/lzan2h-3.webp" alt="image-20220518132905339"/></p>
<p>可以添加房间，也可以停止监控，设置好以后必须要保存设置，不然重启docker后配置就还原了</p>
<h4 class="rp-toc-include" id="安装bypy"><a href="#安装bypy" class="rp-header-anchor rp-link" aria-hidden="true">#</a>安装bypy</h4>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">pip</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> bypy</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">bypy</span><span style="color:var(--shiki-token-string)"> info</span><span style="color:var(--shiki-token-comment)"> #按照提示授权</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h4 class="rp-toc-include" id="安装jellyfin"><a href="#安装jellyfin" class="rp-header-anchor rp-link" aria-hidden="true">#</a>安装jellyfin</h4>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">docker</span><span style="color:var(--shiki-token-string)"> run</span><span style="color:var(--shiki-token-string)"> -d</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> --name</span><span style="color:var(--shiki-token-string)"> jellyfin</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> --net=host</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> -v</span><span style="color:var(--shiki-token-string)"> /data/jellyfin/config:/config</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> -v</span><span style="color:var(--shiki-token-string)"> /data/jellyfin/cache:/cache</span><span style="color:var(--shiki-foreground)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> -v</span><span style="color:var(--shiki-token-string)"> /data/docker/bililive/moves:/moves</span><span style="color:var(--shiki-foreground)"> \ </span><span style="color:var(--shiki-token-string)">#这里填录播的地址</span></span>
<span class="line"><span style="color:var(--shiki-foreground)"> --restart</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string)">unless-stopped</span><span style="color:var(--shiki-token-function)"> \</span></span>
<span class="line"><span style="color:var(--shiki-token-string)"> jellyfin/jellyfin</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>安装好以后用ip:8096访问网页版，按照提示一步步安装</p>
<p><img src="https://img.tteam.icu/i/2022/05/18/m6feo2-3.webp" alt="image-20220518134103122"/></p>
<p>点击控制台</p>
<p><img src="https://img.tteam.icu/i/2022/05/18/m75yza-3.webp" alt="image-20220518134227025"/></p>
<p>添加媒体库</p>
<p><img src="https://img.tteam.icu/i/2022/05/18/m7p4nv-3.webp" alt="image-20220518134316676"/></p>
<p>注意要把实时监控打开，把下面的获取元信息全部关闭然后返回首页</p>
<p><img src="https://img.tteam.icu/i/2022/05/18/m8hk8z-3.webp" alt="image-20220518134449198"/></p>
<p>推荐设置加入日期降序，这样最新的录播就在最前面了</p>
<p><img src="https://img.tteam.icu/i/2022/05/18/m9fgmp-3.webp" alt="image-20220518134607595"/></p>
<p>右下角还可以设置码率和播放速度</p>
<h4 class="rp-toc-include" id="设置自动上传和删除录播"><a href="#设置自动上传和删除录播" class="rp-header-anchor rp-link" aria-hidden="true">#</a>设置自动上传和删除录播</h4>
<p>在宝塔里先设置上传脚本</p>
<div class="rp-codeblock language-sh"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="sh"><code><span class="line"><span style="color:var(--shiki-token-function)">bypy</span><span style="color:var(--shiki-token-string)"> upload</span><span style="color:var(--shiki-token-string)"> --processes</span><span style="color:var(--shiki-token-string)"> /data/docker/bililive/moves</span><span style="color:var(--shiki-token-string)"> /moves</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p><img src="https://img.tteam.icu/i/2022/05/18/pr6mp4-3.webp" alt="image-20220518155728787"/></p>
<p>删除五天前录播节省空间</p>
<p><img src="https://img.tteam.icu/i/2022/05/18/prwjz5-3.webp" alt="image-20220518155850565"/></p><!--/$-->]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[【实用的服务器小技巧】我的世界服务器]]></title>
            <link>https://www.tteam.icu/blog/ops/【实用的服务器小技巧】我的世界服务器</link>
            <guid isPermaLink="false">/blog/ops/【实用的服务器小技巧】我的世界服务器</guid>
            <pubDate>Tue, 22 Aug 2023 16:11:39 GMT</pubDate>
            <description><![CDATA[详细介绍如何在服务器上搭建Minecraft服务器，包括Java安装、核心配置和服务器设置]]></description>
            <content:encoded><![CDATA[<!--$--><h1 class="rp-toc-include" id="minecraft服务器搭建指南"><a href="#minecraft服务器搭建指南" class="rp-header-anchor rp-link" aria-hidden="true">#</a>Minecraft服务器搭建指南<!-- --> </h1><div class="rp-not-doc rp-llms-container"><button class="rp-not-doc rp-llms-button rp-llms-copy-button"><div class="rp-llms-copy-button__icon-wrapper"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-llms-copy-button__icon-copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg></div><span>复制 Markdown</span></button><button class="rp-llms-button rp-llms-view-options__trigger "><svg width="1em" height="1em" viewBox="0 0 32 32" class="rp-llms-view-options__arrow "><path fill="currentColor" d="M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z"></path></svg></button></div>
<h2 class="rp-toc-include" id="安装java-17"><a href="#安装java-17" class="rp-header-anchor rp-link" aria-hidden="true">#</a>安装Java 17</h2>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">cd</span><span style="color:var(--shiki-token-string)"> /usr/local</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">wget</span><span style="color:var(--shiki-token-string)"> https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">tar</span><span style="color:var(--shiki-token-string)"> -zxvf</span><span style="color:var(--shiki-token-string)"> jdk-17_linux-x64_bin.tar.gz</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">mv</span><span style="color:var(--shiki-token-string)"> jdk-17.0.3.1</span><span style="color:var(--shiki-token-string)"> java</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">rm</span><span style="color:var(--shiki-token-string)"> -f</span><span style="color:var(--shiki-token-string)"> jdk-17_linux-x64_bin.tar.gz</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">vim</span><span style="color:var(--shiki-token-string)"> /etc/profile</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">export</span><span style="color:var(--shiki-foreground)"> JAVA_HOME</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-foreground)">/usr/local/java</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">export</span><span style="color:var(--shiki-foreground)"> JRE_HOME</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-foreground)">${JAVA_HOME}/jre</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">export</span><span style="color:var(--shiki-foreground)"> CLASSPATH</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-foreground)">.:${JAVA_HOME}/lib:${JRE_HOME}/lib</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)">export</span><span style="color:var(--shiki-foreground)"> PATH</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-foreground)">${JAVA_HOME}/bin:$PATH</span></span>
<span class="line"></span>
<span class="line"><span style="color:var(--shiki-token-function)">source</span><span style="color:var(--shiki-token-string)"> /etc/profile</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">java</span><span style="color:var(--shiki-token-string)"> -version</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<h2 class="rp-toc-include" id="安装服务器核心"><a href="#安装服务器核心" class="rp-header-anchor rp-link" aria-hidden="true">#</a>安装服务器核心</h2>
<p>核心可以在Minecraft Wiki中下载</p>
<ol>
<li>将核心上传到 <code>/data/minecraft/</code> 目录</li>
<li>将核心重命名为 <code>server.jar</code></li>
</ol>
<h2 class="rp-toc-include" id="创建启动脚本"><a href="#创建启动脚本" class="rp-header-anchor rp-link" aria-hidden="true">#</a>创建启动脚本</h2>
<p>创建 <code>start.sh</code> 脚本:</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">vi</span><span style="color:var(--shiki-token-string)"> start.sh</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>添加以下内容:</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">cd</span><span style="color:var(--shiki-token-string)"> /data/minecraft</span></span>
<span class="line"><span style="color:var(--shiki-token-function)">java</span><span style="color:var(--shiki-token-string)"> -Xms1G</span><span style="color:var(--shiki-token-string)"> -Xmx12G</span><span style="color:var(--shiki-token-string)"> -jar</span><span style="color:var(--shiki-token-string)"> /data/minecraft/server.jar</span><span style="color:var(--shiki-token-string)"> nogui</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>首次启动后，将 <code>eula.txt</code> 文件中的 <code>false</code> 改为 <code>true</code></p>
<h2 class="rp-toc-include" id="安装screen可选"><a href="#安装screen可选" class="rp-header-anchor rp-link" aria-hidden="true">#</a>安装Screen(可选)</h2>
<p>用于创建虚拟终端，保持服务器后台运行:</p>
<div class="rp-codeblock language-bash"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="bash"><code><span class="line"><span style="color:var(--shiki-token-function)">yum</span><span style="color:var(--shiki-token-string)"> install</span><span style="color:var(--shiki-token-string)"> -y</span><span style="color:var(--shiki-token-string)"> screen</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div>
<p>server.properties示例</p>
<div class="rp-codeblock language-txt"><div class="rp-codeblock__content rp-codeblock__content--line-numbers"><div class="rp-codeblock__content__scroll-container rp-scrollbar rp-scrollbar--always"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0" data-lang="txt"><code><span class="line"><span>view-distance=10</span></span>
<span class="line"><span>max-build-height=256</span></span>
<span class="line"><span>server-ip=</span></span>
<span class="line"><span>level-seed=</span></span>
<span class="line"><span>allow-nether=true</span></span>
<span class="line"><span>enable-command-block=true#是否开启命令方块</span></span>
<span class="line"><span>server-port=25565#端口</span></span>
<span class="line"><span>gamemode=0#模式</span></span>
<span class="line"><span>enable-rcon=false</span></span>
<span class="line"><span>op-permission-level=4#op等级</span></span>
<span class="line"><span>enable-query=false</span></span>
<span class="line"><span>prevent-proxy-connections=false</span></span>
<span class="line"><span>generator-settings=</span></span>
<span class="line"><span>resource-pack=</span></span>
<span class="line"><span>player-idle-timeout=0</span></span>
<span class="line"><span>level-name=world</span></span>
<span class="line"><span>motd=A Minecraft Server#显示</span></span>
<span class="line"><span>force-gamemode=false</span></span>
<span class="line"><span>hardcore=false</span></span>
<span class="line"><span>white-list=false#白名单</span></span>
<span class="line"><span>broadcast-console-to-ops=true</span></span>
<span class="line"><span>pvp=true#是否开启pvp</span></span>
<span class="line"><span>spawn-npcs=true</span></span>
<span class="line"><span>generate-structures=true</span></span>
<span class="line"><span>spawn-animals=true</span></span>
<span class="line"><span>snooper-enabled=true</span></span>
<span class="line"><span>difficulty=1</span></span>
<span class="line"><span>network-compression-threshold=256</span></span>
<span class="line"><span>level-type=DEFAULT</span></span>
<span class="line"><span>spawn-monsters=true</span></span>
<span class="line"><span>max-tick-time=60000</span></span>
<span class="line"><span>enforce-whitelist=false</span></span>
<span class="line"><span>use-native-transport=true</span></span>
<span class="line"><span>max-players=20#最多人数</span></span>
<span class="line"><span>resource-pack-sha1=</span></span>
<span class="line"><span>spawn-protection=16</span></span>
<span class="line"><span>online-mode=false#正版验证</span></span>
<span class="line"><span>allow-flight=false</span></span>
<span class="line"><span>max-world-size=29999984</span></span></code></pre></div><div class="rp-code-button-group"><button class="rp-code-button-group__button rp-code-wrap-button" title="Toggle code wrap"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrapped"><path fill="currentColor" d="M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3 4 3v-2h2c2.95 0 4-1.27 4-4 0-2.72-1-4-4-4H3z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-button-group__icon--wrap"><path fill="currentColor" d="M16 7H3V5h13zM3 19h13v-2H3zm19-7-4-3v2H3v2h15v2z"></path></svg></button><button class="rp-code-button-group__button rp-code-copy-button" title="复制代码"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--copy"><path fill="currentColor" d="M20 8v12H8V8zm0-2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2"></path><path fill="currentColor" d="M4 16H2V4a2 2 0 0 1 2-2h12v2H4Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="rp-code-button-group__icon rp-code-copy-button__icon rp-code-copy-button__icon--success"><path fill="currentColor" d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"></path></svg></button></div></div></div><!--/$-->]]></content:encoded>
        </item>
    </channel>
</rss>