<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>所有文章 - blog</title>
        <link>https://www.haoyuli.cn:1443/posts/</link>
        <description>所有文章 | blog</description>
        <generator>haoyuli -- blog</generator><language>zh-CN</language><managingEditor>i@haoyuli.cn (haoyuli)</managingEditor>
            <webMaster>i@haoyuli.cn (haoyuli)</webMaster><copyright>haoyuli5</copyright><lastBuildDate>Mon, 25 May 2026 00:00:00 &#43;0000</lastBuildDate><atom:link href="https://www.haoyuli.cn:1443/posts/" rel="self" type="application/rss+xml" /><item>
    <title>tcp拥塞控制算法协议编译安装记录</title>
    <link>https://www.haoyuli.cn:1443/posts/blog/tcp_ucp-build/</link>
    <pubDate>Mon, 25 May 2026 00:00:00 &#43;0000</pubDate>
    <author>haoyuli</author>
    <guid>https://www.haoyuli.cn:1443/posts/blog/tcp_ucp-build/</guid>
    <description><![CDATA[<p>本文记录了从零开始在 <strong>Debian 12</strong> 编译tcp拥塞控制算法协议，并且确保最终可在 Debian 12 上部署。
我会按步骤分为 <strong>编译 → 加载 → 确认 → 生效</strong>。</p>
<hr>
<h2 id="1-编译模块"><strong>1️⃣ 编译模块</strong></h2>
<h3 id="环境准备">环境准备</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo apt update
</span></span><span style="display:flex;"><span>sudo apt install build-essential linux-headers-<span style="color:#66d9ef">$(</span>uname -r<span style="color:#66d9ef">)</span>
</span></span><span style="display:flex;"><span>----------------------------------------------------------
</span></span><span style="display:flex;"><span>sudo yum install gcc make kernel-devel kernel-headers （centos7对应）
</span></span></code></pre></div><h3 id="下载源码">下载源码</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">[</span>root@haoyuli ~<span style="color:#f92672">]</span><span style="color:#75715e"># wget [tcp_ucp-1.0.zip](https://github.com/liulilittle/tcp_ucp/archive/refs/heads/main.zip)</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>root@haoyuli ~<span style="color:#f92672">]</span><span style="color:#75715e"># mv tcp_ucp-1.0.zip /opt/</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>root@haoyuli ~<span style="color:#f92672">]</span><span style="color:#75715e"># cd /opt/</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>root@haoyuli opt<span style="color:#f92672">]</span><span style="color:#75715e"># unzip tcp_ucp-1.0.zip</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>root@haoyuli opt<span style="color:#f92672">]</span><span style="color:#75715e"># cd tcp_ucp-main/</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>root@haoyuli tcp_ucp<span style="color:#f92672">]</span><span style="color:#75715e"># ls</span>
</span></span><span style="display:flex;"><span>docs  LICENSE  Makefile  README.md  tcp_ucp.c
</span></span></code></pre></div><h3 id="生成模块">生成模块</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>root@localhost:/opt/tcp_ucp-main# make
</span></span><span style="display:flex;"><span>make<span style="color:#f92672">[</span>1<span style="color:#f92672">]</span>: Entering directory <span style="color:#e6db74">&#39;/usr/src/linux-headers-6.1.0-42-cloud-amd64&#39;</span>
</span></span><span style="display:flex;"><span>  CC <span style="color:#f92672">[</span>M<span style="color:#f92672">]</span>  /opt/tcp_ucp-main/tcp_ucp.o
</span></span><span style="display:flex;"><span>  MODPOST /opt/tcp_ucp-main/Module.symvers
</span></span><span style="display:flex;"><span>  CC <span style="color:#f92672">[</span>M<span style="color:#f92672">]</span>  /opt/tcp_ucp-main/tcp_ucp.mod.o
</span></span><span style="display:flex;"><span>  LD <span style="color:#f92672">[</span>M<span style="color:#f92672">]</span>  /opt/tcp_ucp-main/tcp_ucp.ko
</span></span><span style="display:flex;"><span>  BTF <span style="color:#f92672">[</span>M<span style="color:#f92672">]</span> /opt/tcp_ucp-main/tcp_ucp.ko
</span></span><span style="display:flex;"><span>Skipping BTF generation <span style="color:#66d9ef">for</span> /opt/tcp_ucp-main/tcp_ucp.ko due to unavailability of vmlinux
</span></span><span style="display:flex;"><span>make<span style="color:#f92672">[</span>1<span style="color:#f92672">]</span>: Leaving directory <span style="color:#e6db74">&#39;/usr/src/linux-headers-6.1.0-42-cloud-amd64&#39;</span>
</span></span></code></pre></div><hr>
<h2 id="2-加载内核模块"><strong>2️⃣ 加载内核模块</strong></h2>
<p>insmod tcp_ucp.ko</p>]]></description>
</item>
<item>
    <title>centos7平台openvz内核编译过程</title>
    <link>https://www.haoyuli.cn:1443/posts/blog/kernel-build/</link>
    <pubDate>Wed, 20 May 2026 00:00:00 &#43;0000</pubDate>
    <author>haoyuli</author>
    <guid>https://www.haoyuli.cn:1443/posts/blog/kernel-build/</guid>
    <description><![CDATA[<p>本文记录了从零开始在 <strong>CentOS 7</strong> 搭建开发环境到最终生成你的 <code>kernel</code> 可执行文件，并且确保最终可在 CentOS 7 上部署。这个流程适合新机器或干净环境。</p>
<p>我会按步骤分为 <strong>环境准备 → 配置编译 → 安装 → 引导</strong>。</p>
<hr>
<h2 id="1-环境准备"><strong>1️⃣ 环境准备</strong></h2>
<h3 id="更新系统">更新系统</h3>
<p>sudo yum update -y</p>
<p>sudo yum groupinstall &ldquo;Development Tools&rdquo; -y</p>
<p>sudo yum install epel-release -y</p>
<p>sudo yum install wget tar bzip2 make cmake git -y</p>
<h3 id="安装编译内核所需软件">安装编译内核所需软件</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yum install -y <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>gcc <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>gcc-c++ <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>make <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>ncurses-devel <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>bc <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>bison <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>flex <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>elfutils-libelf-devel <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>perl <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>wget <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>git <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>rpm-build <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>rpmdevtools <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>openssl-devel <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>readline-devel <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>zlib-devel <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>bc <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>libselinux-devel <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>gettext <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>elfutils-devel <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>expat-devel
</span></span></code></pre></div><p>解释：</p>]]></description>
</item>
<item>
    <title>只需两行代码，实现语音转文字（转载）</title>
    <link>https://www.haoyuli.cn:1443/posts/blog/voice-text/</link>
    <pubDate>Wed, 13 May 2026 00:00:00 &#43;0000</pubDate>
    <author>haoyuli</author>
    <guid>https://www.haoyuli.cn:1443/posts/blog/voice-text/</guid>
    <description><![CDATA[<p>🚀 只需两行代码，实现语音转文字（Whisper-ctranslate2）</p>
<p>这是目前我发现<strong>最快、最简单</strong>的语音转文字方案之一。</p>
<p>一个小时的音频文件，只需要几分钟就可以完成处理，非常适合做字幕、笔记整理、访谈转录等场景。</p>
<p>它不仅支持多语言（英语 + 96种语言），还能在<strong>噪音环境</strong>下保持不错的识别效果，即使口音较重也能处理。</p>
<p>最重要的是：<br>
👉 <strong>完全免费 + 开源</strong></p>
<p>我们使用的是 <code>whisper-ctranslate2</code>，这是基于 OpenAI Whisper 的升级版本（OpenAI 也就是开发 ChatGPT 的公司）。</p>
<p>相比原版 Whisper，它的特点是：</p>
<ul>
<li>⚡ 速度更快</li>
<li>🎯 精度更高</li>
<li>🧠 使用更简单</li>
</ul>
<hr>
<h1 id="-安装第一行代码">🧩 安装（第一行代码）</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>pip install git+https://github.com/Softcatala/whisper-ctranslate2
</span></span></code></pre></div><h1 id="-语音转文字第二行代码">🎧 语音转文字（第二行代码）</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>whisper-ctranslate2 audio.mp3 --device cuda --model large-v3
</span></span></code></pre></div><h1 id="-翻译成英文英文字幕">🌍 翻译成英文（英文字幕）</h1>
<p>如果你想直接把语音翻译成英文：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>whisper-ctranslate2 audio.mp3 --device cuda --model large-v3 --task translate
</span></span></code></pre></div><h1 id="-中文识别优化简体--繁体">🇨🇳 中文识别优化（简体 / 繁体）</h1>
<p>简体中文优化：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>whisper-ctranslate2 audio.mp3 --device cuda --model large-v3 --initial_prompt 这是一段中文普通话
</span></span></code></pre></div><p>📦 支持输出格式</p>
<p>该工具可以输出多种格式，包括：</p>
<p>TXT（纯文本）
SRT（字幕文件）
VTT（网页字幕）
JSON（结构化数据）</p>]]></description>
</item>
<item>
    <title>利用ShareX上传图片文字等到对象存储（经验分享）</title>
    <link>https://www.haoyuli.cn:1443/posts/blog/sharex-cdn/</link>
    <pubDate>Wed, 03 Dec 2025 00:00:00 &#43;0000</pubDate>
    <author>haoyuli</author>
    <guid>https://www.haoyuli.cn:1443/posts/blog/sharex-cdn/</guid>
    <description><![CDATA[<p>本文记录了在 <strong>windows11</strong> 平台下使用ShareX软件上传图片、文字等到cloudflare R2对象存储的一些操作步骤。</p>
<p>主要分别用 <strong>图片、文字</strong>结合自定义设置和第三方平台设置进行记录，其他类型的文件可举一反三。</p>
<hr>
<h2 id="1-准备"><strong>1️⃣ 准备</strong></h2>
<h3 id="首先要准备一个cloudflare账号">首先要准备一个cloudflare账号</h3>
<p>在R2对象存储中创建 User API 令牌有权限允许读取、写入和列出特定存储桶中的对象。</p>
<p>首次创建记住令牌值（api令牌）、访问密钥 ID（key）、机密访问密钥（secret）、和为 S3 客户端使用管辖权地特定的终结点（endpoint）。</p>
<p>创建一个存储桶（例如我创建的名字叫assets）用来存储对象，免费用户选择标准存储（10GB免费）、地区自动存美国即可。</p>
<p></p>
<p>由于本人的这个域名是恰好由cloudflare解析，同时用cloudflare做cdn，所以在存储桶中直接将子域名进行绑定，在设置中添加自定义域即可。</p>
<p></p>
<h3 id="然后还要下载一个sharex程序">然后还要下载一个ShareX程序</h3>
<p><a href="https://github.com/ShareX/ShareX/releases" target="_blank" rel="noopener noreffer ">https://github.com/ShareX/ShareX/releases</a> 这里有很多版本</p>
<p>其中我自己下载了ShareX 18.0.1 、ShareX 17.1.0两个版本（保护EXE版本和绿色便携版），经过许久口吐兰花之后果断选择了低版本便携版，另外我还在Chrome浏览中安装了这个软件的插件，直接复制图片地址或网页文字进行上传。</p>
<p></p>
<hr>
<h2 id="2-图床"><strong>2️⃣ 图床</strong></h2>
<p>首先我有一个图床程序，这个图床程序的存储方式包含S3存储，可以直接利用该图床程序将图片传输到R2对象存储，但是配合程序提供的api结合ShareX可以更方便的实现截图上传功能并在粘贴板中返回图片地址和图片，同时又可以通过该图床程序管理照片，以及特别区分开图片与其他文件，所以这里用到的是“图床程序+ShareX程序+cloudflare R2的方式”传输和管理图片，当然也可以只用“ShareX+cloudflare R2”的方式进行传输（参考第3部分）。</p>
<p>在ShareX程序&ndash;目标&ndash;图片上传&ndash;选择自定义图像上传</p>
<p></p>]]></description>
</item>
<item>
    <title>centos7平台openppp2编译过程（非完整教程）</title>
    <link>https://www.haoyuli.cn:1443/posts/blog/ppp-build/</link>
    <pubDate>Wed, 26 Nov 2025 00:00:00 &#43;0000</pubDate>
    <author>haoyuli</author>
    <guid>https://www.haoyuli.cn:1443/posts/blog/ppp-build/</guid>
    <description><![CDATA[<p>本文记录了从零开始在 <strong>CentOS 7</strong> 搭建开发环境到最终生成你的 <code>ppp</code> 可执行文件，包括 Boost、OpenSSL、jemalloc 的静态构建，并且确保最终可在 CentOS 7 上部署。这个流程适合新机器或干净环境。</p>
<p>我会按步骤分为 <strong>环境准备 → 第三方库编译 → 项目配置 → 编译生成</strong>。</p>
<hr>
<h2 id="1-环境准备"><strong>1️⃣ 环境准备</strong></h2>
<h3 id="更新系统">更新系统</h3>
<p>sudo yum update -y</p>
<p>sudo yum groupinstall &ldquo;Development Tools&rdquo; -y</p>
<p>sudo yum install epel-release -y</p>
<p>sudo yum install wget tar bzip2 make cmake git -y</p>
<h3 id="安装-devtoolset-11gcc-11">安装 Devtoolset 11（GCC 11）</h3>
<p>CentOS7 默认 GCC 版本太低，需用 SCL 安装新版本：</p>
<p>sudo yum install centos-release-scl -y</p>
<p>sudo yum install devtoolset-11 -y</p>
<p>scl enable devtoolset-11</p>]]></description>
</item>
<item>
    <title>利用fpm打包二进制程序（简版教程）</title>
    <link>https://www.haoyuli.cn:1443/posts/blog/fpm-setup/</link>
    <pubDate>Sun, 23 Nov 2025 00:00:00 &#43;0000</pubDate>
    <author>haoyuli</author>
    <guid>https://www.haoyuli.cn:1443/posts/blog/fpm-setup/</guid>
    <description><![CDATA[<p>本文记录了在 linux 环境下，利用 fpm 挂载打包二进制程序的教程。</p>
<h2 id="利用fpm打包二进制程序为rpm或deb包">利用fpm打包二进制程序为rpm或deb包</h2>
<h2 id="1-安装所需工具">1. 安装所需工具</h2>
<p>首先，需要确保你的系统安装了必要的工具和依赖项。</p>
<p>安装 fpm 的前提：</p>
<p>Ruby 和 相关开发工具。</p>
<p>GCC 和 Make 等编译工具。</p>
<p>RPM 和 Debian 打包工具。</p>
<p>在 CentOS 7 或 Debian/Ubuntu 系统上，你可以按以下步骤安装这些工具：</p>
<p>Debian 12 (或其他 Debian/Ubuntu 系统):</p>
<pre tabindex="0"><code>sudo apt-get install ruby ruby-dev gcc make rpm-build -y
</code></pre><p>CentOS 7（本教程在该平台部署）</p>
<pre tabindex="0"><code>yum install  gcc make rpm-build -y
yum install -y rh-ruby27 rh-ruby27-ruby-devel
scl enable rh-ruby27 bash
ruby -v
# ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]
</code></pre><p>安装 fpm：</p>
<p>fpm 是一个用于打包的软件包管理工具，可以方便地生成 .deb 和 .rpm 包。</p>]]></description>
</item>
<item>
    <title>Cloudflare R2 &#43; rclone 备份教程（新手版）</title>
    <link>https://www.haoyuli.cn:1443/posts/blog/rclone-cfr2-setup/</link>
    <pubDate>Sun, 16 Nov 2025 00:00:00 &#43;0000</pubDate>
    <author>haoyuli</author>
    <guid>https://www.haoyuli.cn:1443/posts/blog/rclone-cfr2-setup/</guid>
    <description><![CDATA[<p>本文记录了在 linux 环境下，利用 rclone 备份vps目录至Cloudflare R2的部署参考教程。</p>
<h2 id="cloudflare-r2--rclone-备份教程新手版">Cloudflare R2 + rclone 备份教程（新手版）</h2>
<ul>
<li>
<p>注册 Cloudflare → 创建 R2 Bucket</p>
</li>
<li>
<p>获取 Access Key / Secret Key / Endpoint</p>
</li>
<li>
<p>配置 rclone 连接 R2</p>
</li>
<li>
<p>测试同步 / 写脚本同步多目录</p>
</li>
<li>
<p>设置 Cron 定时自动备份</p>
</li>
</ul>
<h2 id="1-注册-cloudflare-并启用-r2">1️⃣ 注册 Cloudflare 并启用 R2</h2>
<p>注册 Cloudflare 账号：https://dash.cloudflare.com/sign-up</p>
<p>登录 Cloudflare 控制面板</p>
<p>在左侧菜单找到 R2（存储和数据库-R2对象存储） → Create Bucket</p>
<p>填写 Bucket Name（例如 backup）</p>
<p>选择区域（Region），如：亚太（apac）、西欧（weur）、西美（wnam）</p>
<p>点击 Create Bucket</p>
<p>注意：R2 的出站流量免费，但存储和操作有少量费用。（每月前10GB流量免费）</p>
<h2 id="2-获取-access-key--secret-key--endpoint">2️⃣ 获取 Access Key / Secret Key / Endpoint</h2>
<p>在 Cloudflare R2 控制面板，进入 API Keys / Access Keys （右下方api token点击manage）</p>]]></description>
</item>
<item>
    <title>谷歌workspace &#43; rclone 挂载部署指南</title>
    <link>https://www.haoyuli.cn:1443/posts/blog/rclone-gdrive-setup/</link>
    <pubDate>Fri, 14 Nov 2025 00:00:00 &#43;0000</pubDate>
    <author>haoyuli</author>
    <guid>https://www.haoyuli.cn:1443/posts/blog/rclone-gdrive-setup/</guid>
    <description><![CDATA[<p>本文记录了在 linux 环境下，利用 rclone 挂载 Google Workspace的部署参考教程。</p>
<h2 id="-谷歌workspace--rclone-挂载部署指南">🔹 谷歌workspace + rclone 挂载部署指南</h2>
<ul>
<li>
<p>workspace账户设置</p>
</li>
<li>
<p>配置rclone.conf</p>
</li>
<li>
<p>前台挂载测试谷歌云盘</p>
</li>
<li>
<p>长期运行谷歌云盘</p>
</li>
<li>
<p>问题总结</p>
</li>
</ul>
<h2 id="1-安装-rclone">1️⃣ 安装 rclone</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span> sudo -v ; curl https://rclone.org/install.sh | sudo bash
</span></span></code></pre></div><p>或下载二进制软件解压至/opt/rclone（推荐）</p>
<p>确认安装：</p>
<p>rclone version</p>
<h2 id="2-准备-google-workspace-service-account">2️⃣ 准备 Google Workspace Service Account</h2>
<p>打开 Google Cloud Console → IAM &amp; Admin → Service Accounts</p>
<p>创建一个 Service Account，例如 rclone-drive-sa</p>
<p>生成 JSON Key，下载到 VPS，例如 /opt/rclone/google-sa.json</p>
<p>在 Google Workspace 管理后台（Admin Console → 安全 → API 控制 → 域范围委托）：</p>]]></description>
</item>
<item>
    <title>坚果云 &#43; rclone 挂载部署指南（含通知）</title>
    <link>https://www.haoyuli.cn:1443/posts/blog/rclone-nutstore-setup/</link>
    <pubDate>Wed, 12 Nov 2025 00:00:00 &#43;0000</pubDate>
    <author>haoyuli</author>
    <guid>https://www.haoyuli.cn:1443/posts/blog/rclone-nutstore-setup/</guid>
    <description><![CDATA[<p>本文记录了在 linux 环境下，利用rclone挂载坚果云的部署参考教程。</p>
<h2 id="坚果云--rclone-挂载部署指南包含"><strong>坚果云 + rclone 挂载部署指南</strong>，包含：</h2>
<ul>
<li>
<p>自动创建挂载目录（如/mnt/blog /mnt/edu365）</p>
</li>
<li>
<p>部署service <code>rclone@.service</code></p>
</li>
<li>
<p>配置检测脚本 <code>/usr/local/bin/rclone-check.sh</code></p>
</li>
<li>
<p>配合 Telegram + msmtp 邮件通知</p>
</li>
<li>
<p>systemd 定时器自动检测 &amp; 重启</p>
</li>
</ul>
<hr>
<h2 id="-一安装必要依赖并配置rclone">🔹 一、安装必要依赖并配置rclone</h2>
<p>本教程依赖 <code>fuse</code> 和 <code>msmtp</code>：</p>
<p>sudo yum install -y fuse3</p>
<p>sudo yum install -y msmtp</p>
<p>fuse必须安装，否则rclone会报错，msmtp为可选安装，若要邮件通知需安装，本人vps采用msmtp发送邮件通知。</p>
<p>下载rclone至目录/opt/rclone,配置/opt/rclone/rclone.conf：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">[</span>edu365<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>type   <span style="color:#f92672">=</span> webdav
</span></span><span style="display:flex;"><span>url    <span style="color:#f92672">=</span> https://dav.jianguoyun.com/dav/edu365
</span></span><span style="display:flex;"><span>vendor <span style="color:#f92672">=</span> other
</span></span><span style="display:flex;"><span>user   <span style="color:#f92672">=</span> 账户
</span></span><span style="display:flex;"><span>pass   <span style="color:#f92672">=</span> 密钥
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>blog<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>type   <span style="color:#f92672">=</span> webdav
</span></span><span style="display:flex;"><span>url    <span style="color:#f92672">=</span> https://dav.jianguoyun.com/dav/blog
</span></span><span style="display:flex;"><span>vendor <span style="color:#f92672">=</span> other
</span></span><span style="display:flex;"><span>user   <span style="color:#f92672">=</span> 账户
</span></span><span style="display:flex;"><span>pass   <span style="color:#f92672">=</span> 密钥
</span></span></code></pre></div><hr>
<h2 id="-二部署rcloneservice">🔹 二、部署 rclone@.service</h2>
<p>创建文件 <code>/etc/systemd/system/rclone@.service</code>：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">[</span>Unit<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>Description<span style="color:#f92672">=</span>Rclone Mount <span style="color:#66d9ef">for</span> %i
</span></span><span style="display:flex;"><span>Documentation<span style="color:#f92672">=</span>https://rclone.org/commands/rclone_mount/
</span></span><span style="display:flex;"><span>After<span style="color:#f92672">=</span>network-online.target
</span></span><span style="display:flex;"><span>Wants<span style="color:#f92672">=</span>network-online.target
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Service<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>Type<span style="color:#f92672">=</span>simple
</span></span><span style="display:flex;"><span>User<span style="color:#f92672">=</span>root
</span></span><span style="display:flex;"><span>Group<span style="color:#f92672">=</span>root
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 自动创建挂载点目录</span>
</span></span><span style="display:flex;"><span>ExecStartPre<span style="color:#f92672">=</span>/bin/mkdir -p /mnt/%i
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 挂载命令</span>
</span></span><span style="display:flex;"><span>ExecStart<span style="color:#f92672">=</span>/opt/rclone/rclone mount %i:/ /mnt/%i <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --config /opt/rclone/rclone.conf <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --vfs-cache-mode<span style="color:#f92672">=</span>writes <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --vfs-cache-max-age 30m <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --vfs-cache-max-size 200M <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --allow-other <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --dir-cache-time 5m <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --poll-interval 30s <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --timeout 30m <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --umask <span style="color:#ae81ff">002</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --log-file /var/log/rclone-%i.log <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>  --log-level INFO
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 停止时卸载</span>
</span></span><span style="display:flex;"><span>ExecStop<span style="color:#f92672">=</span>/bin/fusermount -uz /mnt/%i
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Restart<span style="color:#f92672">=</span>on-failure
</span></span><span style="display:flex;"><span>RestartSec<span style="color:#f92672">=</span><span style="color:#ae81ff">10</span>
</span></span><span style="display:flex;"><span>RestartPreventExitStatus<span style="color:#f92672">=</span><span style="color:#ae81ff">3</span>
</span></span><span style="display:flex;"><span>TimeoutStopSec<span style="color:#f92672">=</span><span style="color:#ae81ff">20</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Install<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>WantedBy<span style="color:#f92672">=</span>multi-user.target
</span></span></code></pre></div><p>启用挂载服务示例：</p>]]></description>
</item>
<item>
    <title>网盘博客搭建参考简略教程</title>
    <link>https://www.haoyuli.cn:1443/posts/blog/hugo-blog-setup/</link>
    <pubDate>Sun, 09 Nov 2025 00:00:00 &#43;0000</pubDate>
    <author>haoyuli</author>
    <guid>https://www.haoyuli.cn:1443/posts/blog/hugo-blog-setup/</guid>
    <description><![CDATA[<p>本文记录了在 CentOS 7 环境下，从零搭建 <strong>Hugo Extended + LoveIt 主题</strong> 博客，并将文章存储目录放置在 <strong>坚果云挂载目录</strong> 中参考过程，回忆记录包含所有关键配置，避免踩坑。</p>
<p>关键词：CentOS7  Hugo（Extended） LoveIt主题  坚果云挂载</p>
<h2 id="1-系统环境说明">1. 系统环境说明</h2>
<table>
  <thead>
      <tr>
          <th>项目</th>
          <th>说明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>系统</td>
          <td>CentOS 7   （其他linux版本同样适用）</td>
      </tr>
      <tr>
          <td>Hugo</td>
          <td><strong>Extended 版本</strong>（必须支持 SCSS 编译）</td>
      </tr>
      <tr>
          <td>主题</td>
          <td>LoveIt</td>
      </tr>
      <tr>
          <td>文章存储</td>
          <td>VPS 本地 + 坚果云挂载目录</td>
      </tr>
      <tr>
          <td>访问入口</td>
          <td><code>https://www.edu365.site/</code></td>
      </tr>
      <tr>
          <td>部署模式</td>
          <td><code>hugo server</code> 实时更新</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="2-安装基础依赖">2. 安装基础依赖</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yum -y install git wget gcc make golang
</span></span></code></pre></div><p>注：可在其他centos7环境下安装编译，编译完成后将编译好的二进制hugo版本复制至当前系统</p>
<h2 id="3-编译并安装-hugo-extended">3. 编译并安装 Hugo Extended</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/gohugoio/hugo.git
</span></span><span style="display:flex;"><span>cd hugo
</span></span><span style="display:flex;"><span>go install --tags extended
</span></span><span style="display:flex;"><span>cp ~/go/bin/hugo /opt/hugo/hugo
</span></span><span style="display:flex;"><span>chmod +x /opt/hugo/hugo
</span></span></code></pre></div><p>验证：</p>]]></description>
</item>
</channel>
</rss>
