<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>技术分享 Public Site</title>
    <link>/</link>
    <description>Recent content on 技术分享 Public Site</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <managingEditor>mr_yupengfei@foxmail.com (MrYuPengfei)</managingEditor>
    <webMaster>mr_yupengfei@foxmail.com (MrYuPengfei)</webMaster>
    <copyright>Open-source &lt;a class=&#34;text-muted text-decoration-none&#34; href=&#34;https://github.com/MrYuPengfei/MrYuPengfei.github.io/blob/main/LICENSE&#34;&gt;MIT&lt;/a&gt; Licensed.</copyright>
    <lastBuildDate>Wed, 01 Apr 2026 20:58:25 +0800</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>RAGFlow项目配置与部署指南 😸	</title>
      <link>/post/ragflow%E9%A1%B9%E7%9B%AE%E9%85%8D%E7%BD%AE%E4%B8%8E%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/</link>
      <pubDate>Fri, 23 Jan 2026 11:22:58 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/ragflow%E9%A1%B9%E7%9B%AE%E9%85%8D%E7%BD%AE%E4%B8%8E%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/</guid>
      <description>&lt;h1 id=&#34;ragflow-项目配置与部署指南&#34;&gt;RAGFlow 项目配置与部署指南&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;作者：Manus AI&lt;/strong&gt;&#xA;&lt;strong&gt;日期：2026年1月22日&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;摘要&#34;&gt;摘要&lt;/h2&gt;&#xA;&lt;p&gt;RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在通过融合前沿的 RAG 技术与 Agent 能力，为大型语言模型提供卓越的上下文层 [1]。基于您提供的文件列表，该项目采用 &lt;strong&gt;Docker Compose&lt;/strong&gt; 进行部署，以简化环境依赖（如 MySQL、MinIO、Redis 等）的管理。本指南将详细分析项目文件结构，并提供配置和启动 RAGFlow 服务的具体步骤。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-核心文件结构分析&#34;&gt;1. 核心文件结构分析&lt;/h2&gt;&#xA;&lt;p&gt;理解项目文件结构是成功配置的第一步。以下表格总结了您提供的文件列表中，对配置和部署至关重要的文件和目录的功能：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;文件/目录&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;功能描述&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;关键配置内容&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;.env&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;核心环境变量文件&lt;/strong&gt;。包含 Docker 容器所需的重要环境变量，用于配置依赖服务的凭证、端口映射和镜像版本等。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;MYSQL_PASSWORD&lt;/code&gt;, &lt;code&gt;MINIO_PASSWORD&lt;/code&gt;, &lt;code&gt;SVR_HTTP_PORT&lt;/code&gt;, &lt;code&gt;RAGFLOW_IMAGE&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;service_conf.yaml.template&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;后端服务配置模板&lt;/strong&gt;。定义 RAGFlow 核心服务的业务逻辑配置，如 LLM 供应商、日志级别等。容器启动时会基于此模板生成 &lt;code&gt;service_conf.yaml&lt;/code&gt;。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;LLM 配置（&lt;code&gt;factory&lt;/code&gt;、&lt;code&gt;api_key&lt;/code&gt;）、数据库连接信息（通过 &lt;code&gt;.env&lt;/code&gt; 变量替换）&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;默认部署编排文件&lt;/strong&gt;。定义了 RAGFlow 服务及其所有依赖项（如 MySQL、MinIO、Redis、Elasticsearch/Infinity）的启动、网络和卷配置。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;服务定义、端口映射、卷挂载&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;docker-compose-CN-oc9.yml&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;国内/OceanBase 优化版&lt;/strong&gt;。可能针对国内用户优化了镜像源，或替换了默认的 MySQL 依赖为 OceanBase [2]。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;依赖服务替换、镜像源配置&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;nginx/&lt;/code&gt;&lt;/strong&gt; 目录&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;反向代理配置&lt;/strong&gt;。包含 Nginx 配置文件，用于处理 HTTP/HTTPS 请求转发，通常默认监听 80 端口，并将请求转发给 RAGFlow 后端服务。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;nginx.conf&lt;/code&gt;, &lt;code&gt;proxy.conf&lt;/code&gt;, &lt;code&gt;ragflow.conf&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;entrypoint.sh&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;容器启动入口脚本&lt;/strong&gt;。负责在容器启动时执行初始化任务，例如根据 &lt;code&gt;.env&lt;/code&gt; 文件替换模板变量，生成最终的 &lt;code&gt;service_conf.yaml&lt;/code&gt; 文件，并启动 RAGFlow 服务。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;环境初始化逻辑&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;init.sql&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;数据库初始化脚本&lt;/strong&gt;。用于首次启动时创建 RAGFlow 所需的数据库和表结构。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;SQL DDL/DML 语句&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-ragflow-配置步骤详解&#34;&gt;2. RAGFlow 配置步骤详解&lt;/h2&gt;&#xA;&lt;p&gt;RAGFlow 的配置主要集中在两个文件：&lt;strong&gt;&lt;code&gt;.env&lt;/code&gt;&lt;/strong&gt; 和 &lt;strong&gt;&lt;code&gt;service_conf.yaml.template&lt;/code&gt;&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>LFM2.5 1.2B Instruct在DockerOllama上的部署、训练与RAGFlow集成指南 😸	</title>
      <link>/post/lfm2.5-1.2b-instruct%E5%9C%A8dockerollama%E4%B8%8A%E7%9A%84%E9%83%A8%E7%BD%B2%E8%AE%AD%E7%BB%83%E4%B8%8Eragflow%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/</link>
      <pubDate>Fri, 23 Jan 2026 11:22:01 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/lfm2.5-1.2b-instruct%E5%9C%A8dockerollama%E4%B8%8A%E7%9A%84%E9%83%A8%E7%BD%B2%E8%AE%AD%E7%BB%83%E4%B8%8Eragflow%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/</guid>
      <description>&lt;h1 id=&#34;lfm25-12b-instruct-模型在-docker-ollama-上的部署训练与-ragflow-集成指南&#34;&gt;LFM2.5-1.2B-Instruct 模型在 Docker Ollama 上的部署、训练与 RAGFlow 集成指南&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;作者&lt;/strong&gt;: Manus AI&#xA;&lt;strong&gt;日期&lt;/strong&gt;: 2026年1月22日&#xA;&lt;strong&gt;工作语言&lt;/strong&gt;: 简体中文&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;摘要&#34;&gt;摘要&lt;/h2&gt;&#xA;&lt;p&gt;本文档旨在提供一个全面的技术指南，指导用户如何使用 &lt;strong&gt;Docker&lt;/strong&gt; 和 &lt;strong&gt;Ollama&lt;/strong&gt; 运行 &lt;strong&gt;LFM2.5-1.2B-Instruct&lt;/strong&gt; 模型，如何利用 &lt;strong&gt;Unsloth&lt;/strong&gt; 进行模型微调（训练），以及如何将该模型集成到 &lt;strong&gt;RAGFlow&lt;/strong&gt; 平台中，以构建一个高效的本地检索增强生成（RAG）系统。LFM2.5-1.2B-Instruct 是 Liquid AI 推出的一款高性能、低内存占用的混合模型，非常适合在本地或边缘设备上部署 [1]。&lt;/p&gt;&#xA;&lt;h2 id=&#34;一使用-docker-ollama-运行-lfm25-12b-instruct&#34;&gt;一、使用 Docker Ollama 运行 LFM2.5-1.2B-Instruct&lt;/h2&gt;&#xA;&lt;p&gt;Ollama 是一个轻量级的框架，用于在本地运行大型语言模型（LLM）。通过 Docker 部署 Ollama 可以简化环境配置，并确保隔离性。&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-部署-ollama-docker-容器&#34;&gt;1. 部署 Ollama Docker 容器&lt;/h3&gt;&#xA;&lt;p&gt;首先，您需要确保系统已安装 Docker 和 NVIDIA Container Toolkit（如果需要 GPU 加速）。&lt;/p&gt;&#xA;&lt;p&gt;使用以下命令运行 Ollama 容器，并将端口 &lt;code&gt;11434&lt;/code&gt; 映射出来：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 运行 Ollama 容器&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 如果需要 GPU 支持，请添加 --gpus all 参数&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -d &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --name ollama &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    -p 11434:11434 &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    -v ollama:/root/.ollama &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ollama/ollama&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-拉取-lfm25-12b-instruct-模型&#34;&gt;2. 拉取 LFM2.5-1.2B-Instruct 模型&lt;/h3&gt;&#xA;&lt;p&gt;LFM2.5-1.2B-Instruct 模型已被社区打包并上传到 Ollama 库中，通常以 &lt;code&gt;lfm2.5-thinking:1.2b&lt;/code&gt; 或类似名称存在 [2]。&lt;/p&gt;</description>
    </item>
    <item>
      <title>配置RagFlow 😸	</title>
      <link>/post/%E9%85%8D%E7%BD%AEragflow/</link>
      <pubDate>Thu, 22 Jan 2026 14:07:36 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/%E9%85%8D%E7%BD%AEragflow/</guid>
      <description>&lt;h1 id=&#34;ragflow-项目配置与部署指南&#34;&gt;RAGFlow 项目配置与部署指南&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;作者：Manus AI&lt;/strong&gt;&#xA;&lt;strong&gt;日期：2026年1月22日&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;摘要&#34;&gt;摘要&lt;/h2&gt;&#xA;&lt;p&gt;RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在通过融合前沿的 RAG 技术与 Agent 能力，为大型语言模型提供卓越的上下文层 [1]。基于您提供的文件列表，该项目采用 &lt;strong&gt;Docker Compose&lt;/strong&gt; 进行部署，以简化环境依赖（如 MySQL、MinIO、Redis 等）的管理。本指南将详细分析项目文件结构，并提供配置和启动 RAGFlow 服务的具体步骤。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-核心文件结构分析&#34;&gt;1. 核心文件结构分析&lt;/h2&gt;&#xA;&lt;p&gt;理解项目文件结构是成功配置的第一步。以下表格总结了您提供的文件列表中，对配置和部署至关重要的文件和目录的功能：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;文件/目录&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;功能描述&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;关键配置内容&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;.env&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;核心环境变量文件&lt;/strong&gt;。包含 Docker 容器所需的重要环境变量，用于配置依赖服务的凭证、端口映射和镜像版本等。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;MYSQL_PASSWORD&lt;/code&gt;, &lt;code&gt;MINIO_PASSWORD&lt;/code&gt;, &lt;code&gt;SVR_HTTP_PORT&lt;/code&gt;, &lt;code&gt;RAGFLOW_IMAGE&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;service_conf.yaml.template&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;后端服务配置模板&lt;/strong&gt;。定义 RAGFlow 核心服务的业务逻辑配置，如 LLM 供应商、日志级别等。容器启动时会基于此模板生成 &lt;code&gt;service_conf.yaml&lt;/code&gt;。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;LLM 配置（&lt;code&gt;factory&lt;/code&gt;、&lt;code&gt;api_key&lt;/code&gt;）、数据库连接信息（通过 &lt;code&gt;.env&lt;/code&gt; 变量替换）&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;默认部署编排文件&lt;/strong&gt;。定义了 RAGFlow 服务及其所有依赖项（如 MySQL、MinIO、Redis、Elasticsearch/Infinity）的启动、网络和卷配置。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;服务定义、端口映射、卷挂载&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;docker-compose-CN-oc9.yml&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;国内/OceanBase 优化版&lt;/strong&gt;。可能针对国内用户优化了镜像源，或替换了默认的 MySQL 依赖为 OceanBase [2]。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;依赖服务替换、镜像源配置&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;nginx/&lt;/code&gt;&lt;/strong&gt; 目录&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;反向代理配置&lt;/strong&gt;。包含 Nginx 配置文件，用于处理 HTTP/HTTPS 请求转发，通常默认监听 80 端口，并将请求转发给 RAGFlow 后端服务。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;nginx.conf&lt;/code&gt;, &lt;code&gt;proxy.conf&lt;/code&gt;, &lt;code&gt;ragflow.conf&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;entrypoint.sh&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;容器启动入口脚本&lt;/strong&gt;。负责在容器启动时执行初始化任务，例如根据 &lt;code&gt;.env&lt;/code&gt; 文件替换模板变量，生成最终的 &lt;code&gt;service_conf.yaml&lt;/code&gt; 文件，并启动 RAGFlow 服务。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;环境初始化逻辑&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;init.sql&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;数据库初始化脚本&lt;/strong&gt;。用于首次启动时创建 RAGFlow 所需的数据库和表结构。&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;SQL DDL/DML 语句&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-ragflow-配置步骤详解&#34;&gt;2. RAGFlow 配置步骤详解&lt;/h2&gt;&#xA;&lt;p&gt;RAGFlow 的配置主要集中在两个文件：&lt;strong&gt;&lt;code&gt;.env&lt;/code&gt;&lt;/strong&gt; 和 &lt;strong&gt;&lt;code&gt;service_conf.yaml.template&lt;/code&gt;&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在VMware虚拟机部署Gitlab😎	</title>
      <link>/post/%E5%9C%A8vmware%E8%99%9A%E6%8B%9F%E6%9C%BA%E9%83%A8%E7%BD%B2gitlab/</link>
      <pubDate>Wed, 21 Jan 2026 19:09:04 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/%E5%9C%A8vmware%E8%99%9A%E6%8B%9F%E6%9C%BA%E9%83%A8%E7%BD%B2gitlab/</guid>
      <description>&lt;p&gt;太棒了！恭喜您，这真是一次史诗级的故障排除，您展现了惊人的耐心和学习能力。最终找到根源——&lt;code&gt;gitlab.rb&lt;/code&gt; 文件放错了位置——这是一个非常经典且容易被忽略的问题。&lt;/p&gt;&#xA;&lt;p&gt;您能自己定位到这个问题，并用 &lt;code&gt;cp&lt;/code&gt; 命令将其修正，这说明您已经完全掌握了 Docker 数据卷挂载的核心逻辑。为您喝彩！&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;总结从启动失败到-https-成功我们的排错之旅&#34;&gt;总结：从启动失败到 HTTPS 成功，我们的排错之旅&lt;/h3&gt;&#xA;&lt;p&gt;好的，我们来全面复盘一下这次从零开始部署 GitLab 并最终成功启用 HTTPS 的全过程。这不仅是对我们工作的总结，更是一份极具价值的、可供未来参考的实践指南。&lt;/p&gt;&#xA;&lt;h4 id=&#34;初始目标&#34;&gt;初始目标&lt;/h4&gt;&#xA;&lt;p&gt;在本地虚拟机（&lt;code&gt;vm-noble&lt;/code&gt;）上，通过 Docker Compose 部署一个功能完整的 GitLab CE 实例，并为其配置公网可访问的 HTTPS。&lt;/p&gt;&#xA;&lt;h4 id=&#34;第一阶段docker-权限与环境问题&#34;&gt;第一阶段：Docker 权限与环境问题&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;问题 1：&lt;code&gt;permission denied ... /var/run/docker.sock&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：执行 &lt;code&gt;docker&lt;/code&gt; 命令时报权限错误。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;根源&lt;/strong&gt;：当前用户 &lt;code&gt;yupengfei&lt;/code&gt; 不在 &lt;code&gt;docker&lt;/code&gt; 用户组中，无权访问 Docker 守护进程。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：通过 &lt;code&gt;sudo usermod -aG docker yupengfei&lt;/code&gt; 将用户加入组，并&lt;strong&gt;重新登录&lt;/strong&gt;使其生效。这是所有 Docker 用户都应该掌握的基础操作。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;问题 2：&lt;code&gt;The &amp;quot;GITLAB_HOME&amp;quot; variable is not set&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：&lt;code&gt;docker compose&lt;/code&gt; 警告环境变量未设置，导致镜像版本错误、数据卷挂载路径不正确。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;根源&lt;/strong&gt;：使用 &lt;code&gt;sudo docker compose&lt;/code&gt; 时，当前用户的环境变量不会被传递给 &lt;code&gt;root&lt;/code&gt; 环境。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：采用 &lt;code&gt;docker-compose&lt;/code&gt; 的最佳实践——在项目根目录创建 &lt;code&gt;.env&lt;/code&gt; 文件来定义环境变量 (&lt;code&gt;GITLAB_HOME=...&lt;/code&gt;)。这使得配置与环境解耦，命令更简洁，行为更可预测。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;第二阶段docker-composeyml-语法混淆&#34;&gt;第二阶段：&lt;code&gt;docker-compose.yml&lt;/code&gt; 语法混淆&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;问题：&lt;code&gt;configs&lt;/code&gt; 和 &lt;code&gt;secrets&lt;/code&gt; 顶层配置块导致错误。&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：&lt;code&gt;docker compose up&lt;/code&gt; 无法解析 &lt;code&gt;yml&lt;/code&gt; 文件。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;根源&lt;/strong&gt;：原始的 &lt;code&gt;docker-compose.yml&lt;/code&gt; 混用了 &lt;code&gt;Docker Compose&lt;/code&gt; 模式的语法和 &lt;code&gt;Docker Swarm&lt;/code&gt; 模式的语法（&lt;code&gt;configs&lt;/code&gt;, &lt;code&gt;secrets&lt;/code&gt;）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：将其完全重构为纯粹的 &lt;code&gt;Docker Compose&lt;/code&gt; 语法。关键是将 &lt;code&gt;configs&lt;/code&gt; 和 &lt;code&gt;secrets&lt;/code&gt; 的功能，通过 &lt;code&gt;volumes&lt;/code&gt; 挂载（将 &lt;code&gt;gitlab.rb&lt;/code&gt; 和 &lt;code&gt;root_password.txt&lt;/code&gt; 直接挂载到容器内指定路径）和 &lt;code&gt;environment&lt;/code&gt; 注入（在环境块内用 Ruby 代码读取挂载的文件）来替代。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;第三阶段网络访问与-https-配置的曲折之路&#34;&gt;第三阶段：网络访问与 HTTPS 配置的曲折之路&lt;/h4&gt;&#xA;&lt;p&gt;这是最复杂、最曲折，但也最有价值的阶段。&lt;/p&gt;</description>
    </item>
    <item>
      <title>让Hugo主题能够灵活地显示文章的封面图片 😸	</title>
      <link>/post/%E8%AE%A9hugo%E4%B8%BB%E9%A2%98%E8%83%BD%E5%A4%9F%E7%81%B5%E6%B4%BB%E5%9C%B0%E6%98%BE%E7%A4%BA%E6%96%87%E7%AB%A0%E7%9A%84%E5%B0%81%E9%9D%A2%E5%9B%BE%E7%89%87/</link>
      <pubDate>Mon, 19 Jan 2026 17:20:08 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/%E8%AE%A9hugo%E4%B8%BB%E9%A2%98%E8%83%BD%E5%A4%9F%E7%81%B5%E6%B4%BB%E5%9C%B0%E6%98%BE%E7%A4%BA%E6%96%87%E7%AB%A0%E7%9A%84%E5%B0%81%E9%9D%A2%E5%9B%BE%E7%89%87/</guid>
      <description>&lt;h3 id=&#34;需求背景&#34;&gt;需求背景&lt;/h3&gt;&#xA;&lt;p&gt;我们的核心需求是：让 Hugo 主题能够灵活地显示文章的封面图片，并且希望它能同时支持两种主流的图片引用方式：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;页面包 (Page Bundle)&lt;/strong&gt;：图片与 &lt;code&gt;.md&lt;/code&gt; 文件存放在同一个目录下，路径只写文件名。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Static 目录&lt;/strong&gt;：图片存放在全局的 &lt;code&gt;static/images/&lt;/code&gt; 目录下，路径写成根相对路径（如 &lt;code&gt;/images/cat-hacker.png&lt;/code&gt;）。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;问题分析&#34;&gt;问题分析&lt;/h3&gt;&#xA;&lt;p&gt;我们最初发现，主题模板默认只支持“页面包”模式。它使用了 Hugo 的 &lt;code&gt;.Resources.GetMatch&lt;/code&gt; 函数来查找与文章捆绑的图片资源。这种方式功能强大，可以利用 Hugo 内置的图片处理能力（如裁剪、格式转换），但无法直接读取 &lt;code&gt;static&lt;/code&gt; 目录下的文件。&lt;/p&gt;&#xA;&lt;h3 id=&#34;解决方案优雅降级的模板逻辑&#34;&gt;解决方案：“优雅降级”的模板逻辑&lt;/h3&gt;&#xA;&lt;p&gt;为了实现“双模”支持，我们对主题的模板文件进行了修改，引入了一套“优雅降级”（Graceful Fallback）的逻辑。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;核心思路如下：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;优先采用最佳实践&lt;/strong&gt;：模板首先会尝试将 Front Matter 中 &lt;code&gt;images&lt;/code&gt; 参数提供的路径作为“页面资源”来查找。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;如果成功&lt;/strong&gt;：证明用户使用了“页面包”模式。模板会利用 Hugo 强大的图片处理 API（例如 &lt;code&gt;.Fill&lt;/code&gt;）对图片进行自动裁剪、压缩和格式转换（如转为 WebP），以获得最佳的页面加载性能和显示效果。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;如果失败&lt;/strong&gt;：证明图片不是页面资源，模板则“降级”到第二方案。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;执行回退方案&lt;/strong&gt;：模板会判断该路径是否为一个指向 &lt;code&gt;static&lt;/code&gt; 目录的根相对路径（即以 &lt;code&gt;/&lt;/code&gt; 开头）。如果是，就直接使用该路径来渲染图片，但&lt;strong&gt;不进行任何图片处理&lt;/strong&gt;，图片将以原始状态显示。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;最终实现的代码&#34;&gt;最终实现的代码&lt;/h3&gt;&#xA;&lt;p&gt;我们将模板中的相关部分替换为以下实现了“双模”逻辑的 Go Template 代码：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-go-html&#34; data-lang=&#34;go-html&#34;&gt;{{/* 获取 Front Matter 中定义的第一张图片路径 */}}&#xA;{{ $imagePath := index .Params.images 0 }}&#xA;&#xA;{{/* 1. 优先尝试作为“页面资源”获取图片 */}}&#xA;{{ $imageResource := .Resources.GetMatch $imagePath }}&#xA;&#xA;{{ if $imageResource }}&#xA;    {{/* --- 如果是页面资源，使用 Hugo 的图片处理功能 --- */}}&#xA;    {{ $image := $imageResource.Fill &amp;#34;600x300 Center webp&amp;#34; }}&#xA;    &amp;lt;img src=&amp;#34;{{ $image.RelPermalink }}&amp;#34; ... &amp;gt;&#xA;{{ else }}&#xA;    {{/* --- 如果不是页面资源，则假定为 static 目录下的路径 --- */}}&#xA;    {{ if hasPrefix $imagePath &amp;#34;/&amp;#34; }}&#xA;        &amp;lt;img src=&amp;#34;{{ $imagePath | absURL }}&amp;#34; ... &amp;gt;&#xA;    {{ end }}&#xA;{{ end }}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;总结&#34;&gt;总结&lt;/h3&gt;&#xA;&lt;p&gt;通过这次修改，我们成功地让 Hugo 主题变得更加智能和健壮。它现在能够自动识别作者的图片引用方式，并尽可能地采用最优策略进行处理：&lt;/p&gt;</description>
    </item>
    <item>
      <title>一次对WSL2“网络连接风暴”的深度诊断与修复实录 😸	</title>
      <link>/post/%E4%B8%80%E6%AC%A1%E5%AF%B9wsl2%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E9%A3%8E%E6%9A%B4%E7%9A%84%E6%B7%B1%E5%BA%A6%E8%AF%8A%E6%96%AD%E4%B8%8E%E4%BF%AE%E5%A4%8D%E5%AE%9E%E5%BD%95/</link>
      <pubDate>Mon, 19 Jan 2026 16:55:15 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/%E4%B8%80%E6%AC%A1%E5%AF%B9wsl2%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E9%A3%8E%E6%9A%B4%E7%9A%84%E6%B7%B1%E5%BA%A6%E8%AF%8A%E6%96%AD%E4%B8%8E%E4%BF%AE%E5%A4%8D%E5%AE%9E%E5%BD%95/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;&#xA;&lt;p&gt;今天下午，我经历了一场堪称“完美风暴”的 WSL2 (Windows Subsystem for Linux) 故障。起初只是一个简单的 &lt;code&gt;systemctl&lt;/code&gt; 命令报错，但随着排查的深入，问题如剥洋葱般层层展现，从上层应用一直牵扯到 Windows 的底层网络配置。最终，在经历了近乎“法医级别”的诊断后，我们成功让系统恢复了健康。&lt;/p&gt;&#xA;&lt;p&gt;这不仅仅是一篇故障排除指南，更是一次对 WSL2 内部工作机制的深度探索。如果你也曾被 WSL2 的网络问题所困扰，那么这篇文章或许能为你提供一些思路和慰藉。&lt;/p&gt;&#xA;&lt;h2 id=&#34;故障初现systemctl-失效&#34;&gt;故障初现：&lt;code&gt;systemctl&lt;/code&gt; 失效&lt;/h2&gt;&#xA;&lt;p&gt;一切始于一个常见的命令：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl enable --now ssh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;得到的却是一个经典错误：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;System has not been booted with systemd as init system (PID 1). Can&#39;t operate.&lt;/code&gt;&#xA;&lt;code&gt;Failed to connect to bus: Host is down&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;对于有经验的 WSL 用户来说，这通常意味着 &lt;code&gt;systemd&lt;/code&gt; 没有启用。于是，我们按照官方推荐的方法，在 &lt;code&gt;/etc/wsl.conf&lt;/code&gt; 中添加了配置：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;[boot]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;systemd&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后执行 &lt;code&gt;wsl --shutdown&lt;/code&gt; 重启。然而，这只是噩梦的开始。&lt;/p&gt;&#xA;&lt;h2 id=&#34;第一层迷雾apt-网络中断&#34;&gt;第一层迷雾：&lt;code&gt;apt&lt;/code&gt; 网络中断&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;systemd&lt;/code&gt; 启用后，我们尝试运行 &lt;code&gt;sudo apt update&lt;/code&gt;，却一头撞上了网络错误：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;Temporary failure resolving &#39;archive.ubuntu.com&#39;&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Podman运行gitlab时的权限问题 😸	</title>
      <link>/post/podman%E8%BF%90%E8%A1%8Cgitlab%E6%97%B6%E7%9A%84%E6%9D%83%E9%99%90%E9%97%AE%E9%A2%98/</link>
      <pubDate>Sun, 18 Jan 2026 20:09:18 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/podman%E8%BF%90%E8%A1%8Cgitlab%E6%97%B6%E7%9A%84%E6%9D%83%E9%99%90%E9%97%AE%E9%A2%98/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | Thank you &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; using GitLab Docker Image!&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | Current version: gitlab-ce&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;18.8.0-ce.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | Configure GitLab &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; your system by editing /etc/gitlab/gitlab.rb file&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | And restart this container to reload settings.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | To &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; it use docker exec:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; |   docker exec -it gitlab editor /etc/gitlab/gitlab.rb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; |   docker restart gitlab&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | For a comprehensive list of configuration options please see the Omnibus GitLab readme&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | If this container fails to start due to permission problems try to fix it by executing:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; |   docker exec -it gitlab update-permissions&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; |   docker restart gitlab&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | Cleaning stale PIDs &amp;amp; sockets&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat: /var/opt/gitlab/gitlab-rails/VERSION: No such file or directory&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;gitlab&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | Installing gitlab.rb config...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp: cannot create regular file &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/etc/gitlab/gitlab.rb&amp;#39;&lt;/span&gt;: Permission denied&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exit code: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yupengfei@LenovoY9000P:~/docker/gitlab$ ls -lah&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yupengfei@LenovoY9000P:~/docker/gitlab$ ls -lah&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;total 1.7G&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;drwxr-xr-x  &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt; yupengfei yupengfei 4.0K Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; 20:05 .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;drwxr-xr-x &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt; yupengfei yupengfei 4.0K Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;17&lt;/span&gt; 20:31 ..&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rw-r--r--  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; yupengfei yupengfei  &lt;span style=&#34;color:#ae81ff&#34;&gt;993&lt;/span&gt; Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; 18:52 compose.yml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;drwxr-xr-x  &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; yupengfei yupengfei 4.0K Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; 20:05 config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;drwxr-xr-x  &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; yupengfei yupengfei 4.0K Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; 20:05 data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rw-r--r--  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; yupengfei yupengfei 1.2K Jan  &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt; 17:56 docker-compose.local.yml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rw-r--r--  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; yupengfei yupengfei  &lt;span style=&#34;color:#ae81ff&#34;&gt;512&lt;/span&gt; Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; 16:31 docker-compose.yml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rw-------  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; yupengfei yupengfei 1.7G Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; 18:55 gitlab-ce.tar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rw-r--r--  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; yupengfei yupengfei    &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; Jan  &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; 16:06 install.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;drwxr-xr-x  &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; yupengfei yupengfei 4.0K Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; 20:05 logs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rw-r--r--  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; yupengfei yupengfei   &lt;span style=&#34;color:#ae81ff&#34;&gt;84&lt;/span&gt; Jan  &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt; 18:14 passwd.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rw-r--r--  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; yupengfei yupengfei   &lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt; Jan  &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; 20:51 rpc-ip.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rw-r--r--  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; yupengfei yupengfei  &lt;span style=&#34;color:#ae81ff&#34;&gt;304&lt;/span&gt; Jan  &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; 19:47 run.260105.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rw-r--r--  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; yupengfei yupengfei  &lt;span style=&#34;color:#ae81ff&#34;&gt;296&lt;/span&gt; Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; 17:34 run.sh.260118&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;drwxr-xr-x  &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; yupengfei yupengfei 4.0K Jan  &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt; 19:10 ssl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;问题的关键security_opt-与-volumes-的冲突&#34;&gt;问题的关键：&lt;code&gt;security_opt&lt;/code&gt; 与 &lt;code&gt;volumes&lt;/code&gt; 的冲突&lt;/h3&gt;&#xA;&lt;p&gt;让我们看一下你 &lt;code&gt;compose.yml&lt;/code&gt; 中的这两个配置项：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Podman使用本地在docker上下载的镜像 😎	</title>
      <link>/post/podman%E4%BD%BF%E7%94%A8%E6%9C%AC%E5%9C%B0%E5%9C%A8docker%E4%B8%8A%E4%B8%8B%E8%BD%BD%E7%9A%84%E9%95%9C%E5%83%8F/</link>
      <pubDate>Sun, 18 Jan 2026 19:20:20 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/podman%E4%BD%BF%E7%94%A8%E6%9C%AC%E5%9C%B0%E5%9C%A8docker%E4%B8%8A%E4%B8%8B%E8%BD%BD%E7%9A%84%E9%95%9C%E5%83%8F/</guid>
      <description>&lt;p&gt;这是一个非常常见的需求，尤其是在从 Docker 过渡到 Podman 或者两者混合使用的环境中。你完全可以利用已经在 Docker 中下载好的本地镜像，而无需为 Podman 重新下载一遍，这能节省大量的时间和带宽。&lt;/p&gt;&#xA;&lt;p&gt;实现这个目标主要有两种方法：&lt;strong&gt;导出/导入&lt;/strong&gt; 和 &lt;strong&gt;共享存储&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h3 id=&#34;方法一导出为-tar-包再导入-podman-最通用最推荐&#34;&gt;方法一：导出为 Tar 包，再导入 Podman (最通用、最推荐)&lt;/h3&gt;&#xA;&lt;p&gt;这个方法就像打包和解包，它不依赖于 Docker 和 Podman 的底层存储结构，因此兼容性最好，适用于任何系统。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;步骤：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;在 Docker 中保存镜像为 Tar 文件:&lt;/strong&gt;&#xA;首先，找到你想要迁移的 Docker 镜像的名称和标签 (TAG)。你可以用 &lt;code&gt;docker images&lt;/code&gt; 查看。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 语法: docker save -o &amp;lt;输出文件名.tar&amp;gt; &amp;lt;镜像名:标签&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 示例:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker save -o gitlab-ce.tar docker.io/gitlab/gitlab-ce:18.8.0-ce.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;执行后，你会在当前目录下得到一个名为 &lt;code&gt;gitlab-ce.tar&lt;/code&gt; 的文件。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;在 Podman 中加载这个 Tar 文件:&lt;/strong&gt;&#xA;现在，使用 &lt;code&gt;podman load&lt;/code&gt; 命令将这个文件导入到 Podman 的本地存储中。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 语法: podman load -i &amp;lt;文件名.tar&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 示例:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;podman load -i gitlab-ce.tar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;验证镜像是否导入成功:&lt;/strong&gt;&#xA;使用 &lt;code&gt;podman images&lt;/code&gt; 命令检查镜像是否已经存在于 Podman 的列表中。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何在hugo中设置文章头 😎	</title>
      <link>/post/%E5%A6%82%E4%BD%95%E5%9C%A8hugo%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%96%87%E7%AB%A0%E5%A4%B4/</link>
      <pubDate>Sun, 18 Jan 2026 19:09:04 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/%E5%A6%82%E4%BD%95%E5%9C%A8hugo%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%96%87%E7%AB%A0%E5%A4%B4/</guid>
      <description>&lt;p&gt;这是一个非常核心的 Hugo 功能。&lt;code&gt;hugo new content&lt;/code&gt; 命令生成的文章内容的默认模板头（即 front matter）是在 &lt;strong&gt;archetypes&lt;/strong&gt;（原型）目录中设置的。&lt;/p&gt;&#xA;&lt;h3 id=&#34;核心概念archetypes-原型&#34;&gt;核心概念：Archetypes (原型)&lt;/h3&gt;&#xA;&lt;p&gt;你可以把 Archetype 文件想象成一个“蓝图”或“模板”。当你使用 &lt;code&gt;hugo new content &amp;lt;SECTION&amp;gt;/&amp;lt;FILENAME&amp;gt;.md&lt;/code&gt; 命令创建一个新的内容文件时，Hugo 会执行以下逻辑：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;它会去你的项目根目录下的 &lt;code&gt;archetypes&lt;/code&gt; 文件夹里寻找一个与 &lt;code&gt;&amp;lt;SECTION&amp;gt;&lt;/code&gt; 同名的 &lt;code&gt;.md&lt;/code&gt; 文件。&lt;/li&gt;&#xA;&lt;li&gt;如果找到了（例如 &lt;code&gt;archetypes/posts.md&lt;/code&gt;），Hugo 就会使用这个文件的内容作为新创建的 &lt;code&gt;content/posts/new-post.md&lt;/code&gt; 文件的初始内容。&lt;/li&gt;&#xA;&lt;li&gt;如果没有找到特定 section 的原型文件，Hugo 会使用 &lt;code&gt;archetypes/default.md&lt;/code&gt; 这个文件。&lt;/li&gt;&#xA;&lt;li&gt;如果连 &lt;code&gt;archetypes/default.md&lt;/code&gt; 都没有，Hugo 会生成一个只包含最基本 front matter 的文件（通常只有 &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;date&lt;/code&gt;, 和 &lt;code&gt;draft: true&lt;/code&gt;）。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;如何设置和修改默认模板&#34;&gt;如何设置和修改默认模板&lt;/h3&gt;&#xA;&lt;h4 id=&#34;1-找到或创建-defaultmd&#34;&gt;1. 找到或创建 &lt;code&gt;default.md&lt;/code&gt;&lt;/h4&gt;&#xA;&lt;p&gt;这是控制所有未指定类型内容（或者说，没有自己专属原型的内容）的全局默认模板。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;位置：&lt;/strong&gt; &lt;code&gt;你的Hugo项目根目录/archetypes/default.md&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;如果文件不存在：&lt;/strong&gt; 你可以自己创建一个。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;默认内容通常是这样的：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;title: &amp;#34;{{ replace .Name &amp;#34;-&amp;#34; &amp;#34; &amp;#34; | title }}&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;date: {{ .Date }}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;draft: true&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;解释一下这些变量：&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Matrix 聊天服务器 🎠</title>
      <link>/page/matrix-%E8%81%8A%E5%A4%A9%E6%9C%8D%E5%8A%A1%E5%99%A8/</link>
      <pubDate>Fri, 16 Jan 2026 17:30:34 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/page/matrix-%E8%81%8A%E5%A4%A9%E6%9C%8D%E5%8A%A1%E5%99%A8/</guid>
      <description>&lt;h2 id=&#34;部署架构图&#34;&gt;部署架构图&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-Plain&#34; data-lang=&#34;Plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      公网用户 (Internet)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            | (访问 matrix.your-domain.com 和 element.your-domain.com)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+---------------------------+&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|   云服务器 (有公网 IP)    |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|---------------------------|&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|   - Nginx (处理 HTTPS)    |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|   - frps (接收 frpc 连接) |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+---------------------------+&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            ^&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            | (frp 隧道)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+---------------------------+&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|  内网服务器 (无公网 IP)   |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|---------------------------|&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|   - frpc (连接到 frps)    |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|   - Matrix (Synapse)      |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|   - Element (Web)         |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|   - PostgreSQL 数据库     |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+---------------------------+&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;摘要&#34;&gt;摘要&lt;/h2&gt;&#xA;&lt;p&gt;本文旨在为技术爱好者提供一份详尽的指南，介绍如何利用 Docker 容器化技术和 frp 内网穿透工具，在没有公网 IP 的家庭或办公网络环境中，成功部署并运维一套功能完整的 Matrix 去中心化即时通讯服务。我们将深入探讨其实现原理、技术方案选型，并提供从零开始的、可复现的部署步骤。&lt;/p&gt;</description>
    </item>
    <item>
      <title>互联网信息服务单位网络安全责任告知书 🎠</title>
      <link>/page/%E4%BA%92%E8%81%94%E7%BD%91%E4%BF%A1%E6%81%AF%E6%9C%8D%E5%8A%A1%E5%8D%95%E4%BD%8D%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E8%B4%A3%E4%BB%BB%E5%91%8A%E7%9F%A5%E4%B9%A6/</link>
      <pubDate>Mon, 12 Jan 2026 20:42:42 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/page/%E4%BA%92%E8%81%94%E7%BD%91%E4%BF%A1%E6%81%AF%E6%9C%8D%E5%8A%A1%E5%8D%95%E4%BD%8D%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E8%B4%A3%E4%BB%BB%E5%91%8A%E7%9F%A5%E4%B9%A6/</guid>
      <description>&lt;p&gt;为了保护网络信息安全，保障公民、法人和其他组织的合法权益，维护国家安全和社会公共利益，根据《中华人民共和国计算机系统安全保护条例》《计算机信息网络国际联网安全保护管理办法》等相关法律法规规定，现就你单位应依法履行的网络安全责任告知书如下：&lt;/p&gt;&#xA;&lt;p&gt;一、具备法律法规所要求的相应资质；&lt;/p&gt;&#xA;&lt;p&gt;互联网信息服务提供者应为独立承担法律责任的主体，从事互联网信息服务依据法律、行政法规以及国务院有关规定，需经有关部门许可的应取得相应许可资质&lt;/p&gt;&#xA;&lt;p&gt;二、依法接受公安机关监督、检查、指导；&lt;/p&gt;&#xA;&lt;p&gt;三、协助公安机关依法查处涉网违法犯罪活动；&lt;/p&gt;&#xA;&lt;p&gt;四、根据《中华人民共和国计算机信息系统安全保护条例》《计算机信息技术网络国际互联网安全保护管理办法》《互联网安全保护技术措施规定》《互联网交互式服务安全保护要求》《互联网服务安全评估基本程序及要求》等相关法律法规以及安全管理标准规范，履行违法信息过滤、公共信息巡查 用户资质查验、日志信息留存和应急快速处置等安全保护义务，落实安全管理责任和相关安全保护技术措施；&lt;/p&gt;&#xA;&lt;p&gt;五、在网站首页显著位置张贴公安机关核发的备案图标；&lt;/p&gt;&#xA;&lt;p&gt;六、当联网备案信息发生变更时，请您于变更后30日内登录本平台提交变更信息，若未按规定要求、时限办理变更手续，公安机关将依法通知接入商暂停网站接入；&lt;/p&gt;&#xA;&lt;p&gt;七、当网站不再开办时，请您于5个工作日内登录本平台，向属地公安机关网安部门提出撤销申请。&lt;/p&gt;&#xA;&lt;p&gt;-&amp;ndash; 来源： &lt;a href=&#34;https://beian.mps.gov.cn&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://beian.mps.gov.cn&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hyperlink是什么？</title>
      <link>/post/hyperlink%E6%98%AF%E4%BB%80%E4%B9%88/</link>
      <pubDate>Sat, 10 Jan 2026 10:54:50 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/hyperlink%E6%98%AF%E4%BB%80%E4%B9%88/</guid>
      <description>&lt;p&gt;Hyperlink是一款英伟达主导开发的Windows平台下的AI部署软件，可以在不联网的情况下，使用英伟达GPU，构建自己的知识库。&lt;/p&gt;&#xA;&lt;h2 id=&#34;on-device-ai-super-assistant&#34;&gt;On-Device AI Super Assistant&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://hyperlink.nexa.ai/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://hyperlink.nexa.ai/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于本站</title>
      <link>/page/%E5%85%B3%E4%BA%8E%E6%9C%AC%E7%AB%99/</link>
      <pubDate>Thu, 08 Jan 2026 20:49:37 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/page/%E5%85%B3%E4%BA%8E%E6%9C%AC%E7%AB%99/</guid>
      <description>&lt;p&gt;本网站是使用Hugo框架生成的静态网站。部署于Nginx服务器以及github.io托管平台，用于分享信息技术。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Virtual Partners 🎠</title>
      <link>/page/virtual-partners/</link>
      <pubDate>Sat, 01 Mar 2025 20:49:37 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/page/virtual-partners/</guid>
      <description>&lt;h1 id=&#34;基于qt的ai桌面伙伴&#34;&gt;基于Qt的AI桌面伙伴&lt;/h1&gt;&#xA;&lt;p&gt;基于Qt6的桌面伴侣，可以在Windows10/11和支持X11的Linux发行版（例如Mint/Ubuntu）上使用。&lt;/p&gt;&#xA;&lt;p&gt;(音乐和图片素材仅供程序调试使用，不用于任何盈利用途)&lt;/p&gt;&#xA;&lt;h1 id=&#34;三种版本&#34;&gt;三种版本&lt;/h1&gt;&#xA;&lt;h2 id=&#34;版本一基于pyqt5和pygame的版本&#34;&gt;版本一：基于PyQt5和PyGame的版本&lt;/h2&gt;&#xA;&lt;p&gt;（提供msi安装包，无内存溢出的风险）：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://gitee.com/yupengfei1074064684/yuanshen-desktoppet&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://gitee.com/yupengfei1074064684/yuanshen-desktoppet&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/MrYuPengfei/yuanshen-desktoppet&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://github.com/MrYuPengfei/yuanshen-desktoppet&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;WindowsNT原神桌面宠物安装向导。附上百度网链接：&lt;/p&gt;&#xA;&lt;p&gt;通过百度网盘分享的文件：原神桌面宠物V1.7安装向导.exe 链接：https://pan.baidu.com/s/1ZLYbpay6syzQD8Mn4rHM9A?pwd=dey6&lt;/p&gt;&#xA;&lt;h2 id=&#34;版本二基于版本一和ollama人工智能模型的版本由于ai服务器到期目前暂停ai服务&#34;&gt;版本二：基于版本一和Ollama人工智能模型的版本（由于AI服务器到期，目前暂停AI服务）&lt;/h2&gt;&#xA;&lt;p&gt;（建议在Windows11，内存在16GB以上，的电脑上使用，无安装包）：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://gitee.com/yupengfei1074064684/LlamaVirtualPartners&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://gitee.com/yupengfei1074064684/LlamaVirtualPartners&lt;/a&gt;&lt;/p&gt;&#xA;&lt;img src=&#34;/page/virtual-partners/ai-pet.jpg&#34; alt=&#34;ai-pet&#34; class=&#34;img-fluid mb-5&#34;&gt;&lt;h2 id=&#34;版本三推荐基于qt6的跨平台版本&#34;&gt;版本三（推荐)：基于Qt6的跨平台版本：&lt;/h2&gt;&#xA;&lt;p&gt;（支持百度千帆大模型，可以在Windows11和Linux Mint Cinnamon Edition 上使用）：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://gitee.com/yupengfei1074064684/virtual-partners4-pc&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://gitee.com/yupengfei1074064684/virtual-partners4-pc&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/MrYuPengfei/VirtualPartners&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://github.com/MrYuPengfei/VirtualPartners&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;windows11&#34;&gt;Windows11&lt;/h2&gt;&#xA;&lt;p&gt;提供支持windows11的安装向导：&lt;/p&gt;&#xA;&lt;p&gt;通过网盘分享的文件：原神主题桌面伙伴V2.0.1安装向导.exe 链接: &lt;a href=&#34;https://pan.baidu.com/s/18anvnHh71icC85X15fQQDQ?pwd=vmu3&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://pan.baidu.com/s/18anvnHh71icC85X15fQQDQ?pwd=vmu3&lt;/a&gt; 提取码: vmu3 &amp;ndash;来自百度网盘超级会员v7的分享&lt;/p&gt;&#xA;&lt;img src=&#34;/page/virtual-partners/virtual-partners.jpg&#34; alt=&#34;virtual-partners.jpg&#34; class=&#34;img-fluid mb-5&#34;&gt;&lt;h2 id=&#34;linux-mint-cinnamon-edition&#34;&gt;Linux Mint Cinnamon Edition&lt;/h2&gt;&#xA;&lt;p&gt;尚在更新中，暂不提供deb包，目前可现在QtCreater中调试。&lt;/p&gt;&#xA;&lt;img src=&#34;/page/virtual-partners/mint-qt.jpg&#34; alt=&#34;mint-qt&#34; class=&#34;img-fluid mb-5&#34;&gt;&lt;h1 id=&#34;自定义&#34;&gt;自定义&lt;/h1&gt;&#xA;&lt;p&gt;可以手动添加你喜欢的动漫角色，将png图片和mp3资源导入安装目录即可。本项目默认提供原神主题，图片和音频来自互联网。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用自定义域名访问 GitLab 私有仓库</title>
      <link>/post/%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9F%9F%E5%90%8D%E8%AE%BF%E9%97%AE-gitlab-%E7%A7%81%E6%9C%89%E4%BB%93%E5%BA%93/</link>
      <pubDate>Sat, 01 Mar 2025 20:49:37 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9F%9F%E5%90%8D%E8%AE%BF%E9%97%AE-gitlab-%E7%A7%81%E6%9C%89%E4%BB%93%E5%BA%93/</guid>
      <description>&lt;h1 id=&#34;-关键&#34;&gt;🎯 关键&lt;/h1&gt;&#xA;&lt;p&gt;一部分gitlab的配置可以通过在web端通过登录root用户进行admin修改。部分需要修改服务器下关于gitlab的配置文件。&lt;/p&gt;&#xA;&lt;h1 id=&#34;gitlab主要配置文件&#34;&gt;Gitlab主要配置文件&lt;/h1&gt;&#xA;&lt;h3 id=&#34;一gitlab-最核心的配置文件99-的修改都在这&#34;&gt;一、GitLab 最核心的配置文件（99% 的修改都在这）&lt;/h3&gt;&#xA;&lt;h4 id=&#34;1-etcgitlabgitlabrb主配置文件必记&#34;&gt;1. &lt;code&gt;/etc/gitlab/gitlab.rb&lt;/code&gt;（主配置文件，必记！）&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：GitLab 所有全局配置的「入口文件」，包括外部访问 URL、端口、存储路径、邮件、SSL、LDAP、内置组件（Nginx/PostgreSQL/Redis）等，是你唯一需要手动修改的配置文件。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：默认全是注释（&lt;code&gt;#&lt;/code&gt; 开头），只需要取消注释并修改对应参数，无需手写配置；修改后不会立即生效，需要执行命令生成实际配置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;新手常用配置示例&lt;/strong&gt;：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 1. 设置GitLab外部访问地址（最基础配置）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;external_url &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https://gitlab.yourdomain.com&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 2. 修改GitLab内置Nginx的端口（默认80/443）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nginx&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;listen_port&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;8080&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nginx&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;listen_https&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 若用HTTP访问&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 3. 设置数据存储路径（默认/var/opt/gitlab）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git_data_dirs({ &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;default&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; { &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/data/gitlab/git-data&amp;#34;&lt;/span&gt; } })&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 4. 邮件配置（发送通知）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gitlab_rails&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;smtp_enable&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gitlab_rails&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;smtp_address&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;smtp.163.com&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gitlab_rails&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;smtp_port&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;465&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;2-varoptgitlabgitlab-railsetcgitlabyml实际生效的应用配置&#34;&gt;2. &lt;code&gt;/var/opt/gitlab/gitlab-rails/etc/gitlab.yml&lt;/code&gt;（实际生效的应用配置）&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：由 &lt;code&gt;/etc/gitlab/gitlab.rb&lt;/code&gt; 生成的「最终生效配置文件」，包含 GitLab Rails 应用的所有细节配置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;注意&lt;/strong&gt;：&lt;strong&gt;不要手动修改&lt;/strong&gt;！修改后会被 &lt;code&gt;gitlab-ctl reconfigure&lt;/code&gt; 覆盖，所有改动都要在 &lt;code&gt;gitlab.rb&lt;/code&gt; 中完成。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;二gitlab-各组件的专属配置文件由-gitlabrb-生成&#34;&gt;二、GitLab 各组件的专属配置文件（由 gitlab.rb 生成）&lt;/h3&gt;&#xA;&lt;p&gt;GitLab 是「一站式包」，内置 Nginx/PostgreSQL/Redis 等组件，它们的配置文件由 &lt;code&gt;gitlab.rb&lt;/code&gt; 生成，路径如下：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;组件&lt;/th&gt;&#xA;          &lt;th&gt;配置文件路径&lt;/th&gt;&#xA;          &lt;th&gt;作用&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;内置 Nginx&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;/var/opt/gitlab/nginx/conf/gitlab-http.conf&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;GitLab 访问的 Nginx 配置&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;PostgreSQL&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;/var/opt/gitlab/postgresql/data/postgresql.conf&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;数据库配置&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Redis&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;/var/opt/gitlab/redis/redis.conf&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;缓存服务配置&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;GitLab Shell&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;/var/opt/gitlab/gitlab-shell/config.yml&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Git 命令行/SSH 配置&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Sidekiq&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;/var/opt/gitlab/gitlab-rails/etc/sidekiq.yml&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;异步任务队列配置&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;三其他辅助配置文件&#34;&gt;三、其他辅助配置文件&lt;/h3&gt;&#xA;&lt;h4 id=&#34;1-日志相关&#34;&gt;1. 日志相关&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;日志存储路径：&lt;code&gt;/var/log/gitlab/&lt;/code&gt;（各组件日志分目录存放，如 &lt;code&gt;gitlab-rails/&lt;/code&gt;、&lt;code&gt;nginx/&lt;/code&gt;）&lt;/li&gt;&#xA;&lt;li&gt;日志配置：在 &lt;code&gt;gitlab.rb&lt;/code&gt; 中修改（如日志级别、保留天数）：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;logging&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;log_level&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;info&amp;#39;&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 日志级别：debug/info/warn/error&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;logging&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;keep_rails_logs_for_days&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 日志保留7天&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;2-备份权限配置&#34;&gt;2. 备份/权限配置&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;备份配置：在 &lt;code&gt;gitlab.rb&lt;/code&gt; 中设置备份路径、保留时间：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gitlab_rails&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;backup_path&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/data/gitlab/backups&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gitlab_rails&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;backup_keep_time&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;604800&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 备份保留7天（秒）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;权限配置：&lt;code&gt;/etc/gitlab/permissions.json&lt;/code&gt;（定义各目录/文件的默认权限，一般无需修改）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;四修改配置后的生效步骤核心新手必看&#34;&gt;四、修改配置后的生效步骤（核心！新手必看）&lt;/h3&gt;&#xA;&lt;p&gt;修改 &lt;code&gt;/etc/gitlab/gitlab.rb&lt;/code&gt; 后，必须执行以下命令让配置生效：&lt;/p&gt;</description>
    </item>
    <item>
      <title>在WSL2构建 GitLab 私有仓库</title>
      <link>/post/%E5%9C%A8wsl2%E6%9E%84%E5%BB%BA-gitlab-%E7%A7%81%E6%9C%89%E4%BB%93%E5%BA%93/</link>
      <pubDate>Sat, 01 Mar 2025 20:49:37 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/post/%E5%9C%A8wsl2%E6%9E%84%E5%BB%BA-gitlab-%E7%A7%81%E6%9C%89%E4%BB%93%E5%BA%93/</guid>
      <description>&lt;ol&gt;&#xA;&lt;li&gt;如果WSL2有多个ubuntu，如ubuntu22和ubunut24，只要有一个主机占用了gitlab所需要的端口，就不能正常使用gitlab。&lt;/li&gt;&#xA;&lt;li&gt;尽量使用官方教程使用apt包管理工具进行安装。&lt;/li&gt;&#xA;&lt;li&gt;使用docker部署gitlab在WSL2上很麻烦。&lt;/li&gt;&#xA;&lt;li&gt;部署后，如果需要让别人访问部署再WSL2中的Gitlab，最好再配置一个frp服务器和一个frp客户端，使得其他人可以通过frp服务，通过公网IP进行访问WSL2（个人笔记本或台式机）上的Gitlab服务&lt;/li&gt;&#xA;&lt;li&gt;关于frp的部署网上有很多教程，对于AI Agent 给出的部署方案，需要一定的鉴别能力，如果行不通果断看frp的部署教程视频，不要浪费太多时间。&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Hugo v0.119.0</title>
      <link>/en/post/hugo-v0-119/</link>
      <pubDate>Sun, 24 Sep 2023 00:00:00 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/post/hugo-v0-119/</guid>
      <description>&lt;img src=&#34;/en/post/hugo-v0-119/hugo-logo.svg&#34; alt=&#34;Hugo&#34; class=&#34;img-fluid mb-5&#34;&gt;&lt;p&gt;This version is built with Go 1.21.1 which contains some relevant security fixes for the html/template package, see &lt;a href=&#34;https://github.com/golang/go/issues/62196&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Issue 62196&lt;/a&gt; and &lt;a href=&#34;https://github.com/golang/go/issues/62197&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Issue 62197&lt;/a&gt;. This is the main reason Hugo 0.119.0 is released sooner rather than later. But this release also comes with a dependency refresh and some useful image processing improvements:&lt;/p&gt;&#xA;&lt;p&gt;A new general-purpose &lt;a href=&#34;https://gohugo.io/content-management/image-processing/#process&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Process&lt;/a&gt; method and filter.&#xA;A new &lt;a href=&#34;https://gohugo.io/functions/images/#opacity&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Opacity&lt;/a&gt; filter.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/gohugoio/hugo/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Release Notes on GitHub&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bootstrap 5.3.0</title>
      <link>/en/post/bootstrap-5-3-0/</link>
      <pubDate>Tue, 30 May 2023 00:00:00 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/post/bootstrap-5-3-0/</guid>
      <description>&lt;img src=&#34;/en/post/bootstrap-5-3-0/bootstrap-5-3.png&#34; alt=&#34;Bootstrap 5 3&#34; class=&#34;img-fluid&#34;&gt;&lt;blockquote&gt;&#xA;&lt;p&gt;It’s official, the final stable release of v5.3.0 has landed! It’s been a monumental effort to revamp our codebase for CSS variables and color modes, one that will see continued changes leading up to an eventual Bootstrap 6. And we’re so excited to finally ship it!&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;On top of all the work that’s gone into this release, a lot has happened behind the scenes since we shipped our pre-releases. Keep reading to learn everything that’s &lt;a href=&#34;https://blog.getbootstrap.com/2023/05/30/bootstrap-5-3-0/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;new in v5.3.0&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo v0.100.2</title>
      <link>/en/post/hugo-v0-100/</link>
      <pubDate>Wed, 08 Jun 2022 00:00:00 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/post/hugo-v0-100/</guid>
      <description>&lt;img src=&#34;/en/post/hugo-v0-100/hugo-logo.svg&#34; alt=&#34;Hugo&#34; class=&#34;img-fluid mb-5&#34;&gt;&lt;p&gt;This release is mostly motivated by the fix for the panic experienced by people having blackfriday configured as defaultMarkdownHandler (&lt;a href=&#34;https://github.com/gohugoio/hugo/issues/9968&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;#9968&lt;/a&gt;). The Blackfriday support was removed in Hugo v0.100.0 after being deprecated with a warning for a long time.&lt;/p&gt;&#xA;&lt;p&gt;v0.100.1 fix panic with markdownify/RenderString with shortcode on Page with no content file.&lt;/p&gt;&#xA;&lt;p&gt;$page.RenderString (see &lt;a href=&#34;https://github.com/gohugoio/hugo/issues/6703&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;#6703&lt;/a&gt;) finally supports shortcodes, and shortcode improvements is the main theme in Hugo 0.100.0.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/gohugoio/hugo/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Release Notes on GitHub&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo Bootstrap Theme alpha</title>
      <link>/en/post/hugo-bootstrap-theme/</link>
      <pubDate>Sun, 22 May 2022 13:35:02 +0100</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/post/hugo-bootstrap-theme/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Hugo theme for a secure, blazing fast and SEO-ready static website, using Bootstrap 5.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Open-source MIT Licensed Hugo Theme, using Bootstrap 5.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;🛡️ Security aware&lt;/p&gt;&#xA;&lt;p&gt;Get A+ scores on Mozilla Observatory out of the box. Easily change the default Security Headers to suit your needs.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;⚡ Fast by default&lt;/p&gt;&#xA;&lt;p&gt;Get 100 scores on Google Lighthouse by default. Hugo Bootstrap Theme removes unused css, prefetches links, and lazy loads images.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;📈 SEO-ready&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo v0.99.1</title>
      <link>/en/post/hugo-v0-99/</link>
      <pubDate>Wed, 18 May 2022 00:00:00 +0800</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/post/hugo-v0-99/</guid>
      <description>&lt;img src=&#34;/en/post/hugo-v0-99/hugo-logo.svg&#34; alt=&#34;Hugo&#34; class=&#34;img-fluid mb-5&#34;&gt;&lt;p&gt;Fix server regression for multihost sites (multiple languages with different baseURLs).&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/gohugoio/hugo/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Release Notes on GitHub&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bootstrap 5.2.0 beta</title>
      <link>/en/post/bootstrap-5-2-0-beta/</link>
      <pubDate>Fri, 13 May 2022 13:00:44 +0100</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/post/bootstrap-5-2-0-beta/</guid>
      <description>&lt;img src=&#34;/en/post/bootstrap-5-2-0-beta/bootstrap-5-2-0-beta.png&#34; alt=&#34;Bootstrap 5 2 0 Beta&#34; class=&#34;img-fluid&#34;&gt;&lt;blockquote&gt;&#xA;&lt;p&gt;It’s the biggest release since v5 itself—&lt;strong&gt;Bootstrap v5.2.0-beta1 is here!&lt;/strong&gt; This release features redesigned docs, CSS variables for all our components, responsive offcanvas, new helpers and utilities, refined buttons and inputs, and lots of improvements under the hood.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Given the size of the update and time since our last release, we’re doing something different and shipping it as a beta first. &lt;a href=&#34;https://blog.getbootstrap.com/2022/05/13/bootstrap-5-2-0-beta/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Keep reading for details&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bootstrap Carousel 🎠</title>
      <link>/en/page/bootstrap-carousel/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/page/bootstrap-carousel/</guid>
      <description>&lt;h1 id=&#34;bootstrap-carousel&#34;&gt;Bootstrap Carousel&lt;/h1&gt;&#xA;&lt;p&gt;A slideshow component for cycling through elements—images or slides of text — like a carousel.&lt;/p&gt;&#xA;&lt;br&gt;&#xA;&lt;div class=&#34;w-50 mx-auto&#34;&gt;&#xA;    &#xA;    &#xA;    &#xA;    &#xA;    &#xA;    &#xA;    &#xA;    &#xA;    &#xA;    &#xA;    &lt;div id=&#34;bootstrapCarousel&#34; class=&#34;carousel slide &#34; data-bs-ride=&#34;carousel&#34;&gt;&#xA;      &#xA;        &lt;div class=&#34;carousel-indicators&#34;&gt;&#xA;          &#xA;            &lt;button type=&#34;button&#34; data-bs-target=&#34;#bootstrapCarousel&#34; data-bs-slide-to=&#34;0&#34;&#xA;                    &#xA;                    aria-label=&#34;/carousel/bootstrap-v5-new-logo.png&#34;&gt;&#xA;            &lt;/button&gt;&#xA;          &#xA;            &lt;button type=&#34;button&#34; data-bs-target=&#34;#bootstrapCarousel&#34; data-bs-slide-to=&#34;1&#34;&#xA;                    &#xA;                      class=&#34;active&#34; aria-current=&#34;true&#34;&#xA;                    &#xA;                    aria-label=&#34;/carousel/hugo-bootstrap-banner.png&#34;&gt;&#xA;            &lt;/button&gt;&#xA;          &#xA;            &lt;button type=&#34;button&#34; data-bs-target=&#34;#bootstrapCarousel&#34; data-bs-slide-to=&#34;2&#34;&#xA;                    &#xA;                      class=&#34;active&#34; aria-current=&#34;true&#34;&#xA;                    &#xA;                    aria-label=&#34;/carousel/site-feature-image.png&#34;&gt;&#xA;            &lt;/button&gt;&#xA;          &#xA;        &lt;/div&gt;&#xA;      &#xA;    &#xA;      &#xA;      &lt;div class=&#34;carousel-inner&#34;&gt;&#xA;        &#xA;          &lt;div class=&#34;carousel-item active&#34;&gt;&#xA;            &lt;img class=&#34;d-block w-100&#34;&#xA;                 &#xA;                 style=&#34;width: 100%; height: auto; aspect-ratio: 3/2;&#34;&#xA;                 src=&#34;/carousel/bootstrap-v5-new-logo_hu_e4c567b26223597e.webp&#34;&#xA;                 srcset=&#34;/carousel/bootstrap-v5-new-logo_hu_868ab0caa8c1ea89.webp 2560w, /carousel/bootstrap-v5-new-logo_hu_8c7815b60042997c.webp 1920w, /carousel/bootstrap-v5-new-logo_hu_e4c567b26223597e.webp 1280w, /carousel/bootstrap-v5-new-logo_hu_f02d8114a926fe8b.webp 960w, /carousel/bootstrap-v5-new-logo_hu_98ea1cc9fcc628e9.webp 640w, /carousel/bootstrap-v5-new-logo_hu_b5ba7ea000e46f13.webp 320w&#34;&#xA;                 sizes=&#34;100vw&#34;&#xA;                 alt=&#34;/carousel/bootstrap-v5-new-logo.png&#34;&gt;&#xA;          &lt;/div&gt;&#xA;        &#xA;          &lt;div class=&#34;carousel-item&#34;&gt;&#xA;            &lt;img class=&#34;d-block w-100&#34;&#xA;                  loading=&#34;lazy&#34; &#xA;                 style=&#34;width: 100%; height: auto; aspect-ratio: 3/2;&#34;&#xA;                 src=&#34;/carousel/hugo-bootstrap-banner_hu_f5c58e8fd3bf94cd.webp&#34;&#xA;                 srcset=&#34;/carousel/hugo-bootstrap-banner_hu_ca213fa3f12e87a1.webp 2560w, /carousel/hugo-bootstrap-banner_hu_987c0856de059395.webp 1920w, /carousel/hugo-bootstrap-banner_hu_f5c58e8fd3bf94cd.webp 1280w, /carousel/hugo-bootstrap-banner_hu_3569854ca2402d40.webp 960w, /carousel/hugo-bootstrap-banner_hu_3a632ea0cf515ae.webp 640w, /carousel/hugo-bootstrap-banner_hu_562134f766a643ab.webp 320w&#34;&#xA;                 sizes=&#34;100vw&#34;&#xA;                 alt=&#34;/carousel/hugo-bootstrap-banner.png&#34;&gt;&#xA;          &lt;/div&gt;&#xA;        &#xA;          &lt;div class=&#34;carousel-item&#34;&gt;&#xA;            &lt;img class=&#34;d-block w-100&#34;&#xA;                  loading=&#34;lazy&#34; &#xA;                 style=&#34;width: 100%; height: auto; aspect-ratio: 3/2;&#34;&#xA;                 src=&#34;/carousel/site-feature-image_hu_2307e3bf8cbc3b13.webp&#34;&#xA;                 srcset=&#34;/carousel/site-feature-image_hu_5a7d8ece9e74673e.webp 2560w, /carousel/site-feature-image_hu_5ca2777393db0e32.webp 1920w, /carousel/site-feature-image_hu_2307e3bf8cbc3b13.webp 1280w, /carousel/site-feature-image_hu_ed12dd2cf96c83.webp 960w, /carousel/site-feature-image_hu_29b1e057aa93d8f4.webp 640w, /carousel/site-feature-image_hu_6fd943804354b6d2.webp 320w&#34;&#xA;                 sizes=&#34;100vw&#34;&#xA;                 alt=&#34;/carousel/site-feature-image.png&#34;&gt;&#xA;          &lt;/div&gt;&#xA;        &#xA;      &lt;/div&gt;&#xA;      &#xA;    &#xA;      &#xA;      &lt;button class=&#34;carousel-control-prev&#34; type=&#34;button&#34; data-bs-target=&#34;#bootstrapCarousel&#34; data-bs-slide=&#34;prev&#34;&gt;&#xA;        &lt;span class=&#34;carousel-control-prev-icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;visually-hidden&#34;&gt;Previous&lt;/span&gt;&#xA;      &lt;/button&gt;&#xA;      &lt;button class=&#34;carousel-control-next&#34; type=&#34;button&#34; data-bs-target=&#34;#bootstrapCarousel&#34; data-bs-slide=&#34;next&#34;&gt;&#xA;        &lt;span class=&#34;carousel-control-next-icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;visually-hidden&#34;&gt;Next&lt;/span&gt;&#xA;      &lt;/button&gt;&#xA;      &#xA;    &lt;/div&gt;&#xA;    &#xA;&#xA;&lt;/div&gt;&#xA;&lt;br&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://getbootstrap.com/docs/5.3/components/carousel/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Carousel documentation&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bootstrap Components ✨</title>
      <link>/en/page/bootstrap-components/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/page/bootstrap-components/</guid>
      <description>&lt;h1 id=&#34;bootstrap-components&#34;&gt;Bootstrap Components&lt;/h1&gt;&#xA;&lt;p&gt;Bootstrap is bundled with tens of components that can be reused to provide a good user experience and user interactions in a web page.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;accordion&#34;&gt;Accordion&lt;/h2&gt;&#xA;&lt;br&gt;&#xA;&lt;div class=&#34;accordion&#34; id=&#34;accordionExample&#34;&gt;&#xA;  &lt;div class=&#34;accordion-item&#34;&gt;&#xA;    &lt;h2 class=&#34;accordion-header&#34; id=&#34;headingOne&#34;&gt;&#xA;      &lt;button class=&#34;accordion-button&#34; type=&#34;button&#34; data-bs-toggle=&#34;collapse&#34; data-bs-target=&#34;#collapseOne&#34; aria-expanded=&#34;true&#34; aria-controls=&#34;collapseOne&#34;&gt;&#xA;        Accordion Item #1&#xA;      &lt;/button&gt;&#xA;    &lt;/h2&gt;&#xA;    &lt;div id=&#34;collapseOne&#34; class=&#34;accordion-collapse collapse show&#34; aria-labelledby=&#34;headingOne&#34; data-bs-parent=&#34;#accordionExample&#34;&gt;&#xA;      &lt;div class=&#34;accordion-body&#34;&gt;&#xA;        &lt;strong&gt;This is the first item&#39;s accordion body.&lt;/strong&gt; It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It&#39;s also worth noting that just about any HTML can go within the &lt;code&gt;.accordion-body&lt;/code&gt;, though the transition does limit overflow.&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;accordion-item&#34;&gt;&#xA;    &lt;h2 class=&#34;accordion-header&#34; id=&#34;headingTwo&#34;&gt;&#xA;      &lt;button class=&#34;accordion-button collapsed&#34; type=&#34;button&#34; data-bs-toggle=&#34;collapse&#34; data-bs-target=&#34;#collapseTwo&#34; aria-expanded=&#34;false&#34; aria-controls=&#34;collapseTwo&#34;&gt;&#xA;        Accordion Item #2&#xA;      &lt;/button&gt;&#xA;    &lt;/h2&gt;&#xA;    &lt;div id=&#34;collapseTwo&#34; class=&#34;accordion-collapse collapse&#34; aria-labelledby=&#34;headingTwo&#34; data-bs-parent=&#34;#accordionExample&#34;&gt;&#xA;      &lt;div class=&#34;accordion-body&#34;&gt;&#xA;        &lt;strong&gt;This is the second item&#39;s accordion body.&lt;/strong&gt; It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It&#39;s also worth noting that just about any HTML can go within the &lt;code&gt;.accordion-body&lt;/code&gt;, though the transition does limit overflow.&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;accordion-item&#34;&gt;&#xA;    &lt;h2 class=&#34;accordion-header&#34; id=&#34;headingThree&#34;&gt;&#xA;      &lt;button class=&#34;accordion-button collapsed&#34; type=&#34;button&#34; data-bs-toggle=&#34;collapse&#34; data-bs-target=&#34;#collapseThree&#34; aria-expanded=&#34;false&#34; aria-controls=&#34;collapseThree&#34;&gt;&#xA;        Accordion Item #3&#xA;      &lt;/button&gt;&#xA;    &lt;/h2&gt;&#xA;    &lt;div id=&#34;collapseThree&#34; class=&#34;accordion-collapse collapse&#34; aria-labelledby=&#34;headingThree&#34; data-bs-parent=&#34;#accordionExample&#34;&gt;&#xA;      &lt;div class=&#34;accordion-body&#34;&gt;&#xA;        &lt;strong&gt;This is the third item&#39;s accordion body.&lt;/strong&gt; It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It&#39;s also worth noting that just about any HTML can go within the &lt;code&gt;.accordion-body&lt;/code&gt;, though the transition does limit overflow.&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;br&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://getbootstrap.com/docs/5.3/components/accordion/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Accordion documentation&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Code of Conduct</title>
      <link>/code-of-conduct/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/code-of-conduct/</guid>
      <description>&lt;p&gt;&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Code of Conduct</title>
      <link>/en/code-of-conduct/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/code-of-conduct/</guid>
      <description>&lt;h1 id=&#34;contributor-covenant-code-of-conduct&#34;&gt;Contributor Covenant Code of Conduct&lt;/h1&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>/en/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/contact/</guid>
      <description>&lt;h2 id=&#34;wechat&#34;&gt;WeChat&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;mr_yupengfei&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;tencent-qq&#34;&gt;Tencent QQ&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1074064684&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;email&#34;&gt;Email&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;mailto:mr_yupengfei@foxmail.com&#34;&gt;mr_yupengfei@foxmail.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;mailto:yupengfei.edu@gmail.com&#34;&gt;yupengfei.edu@gmail.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;orcid&#34;&gt;ORCID&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://orcid.org/0009-0009-1668-4543&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://orcid.org/0009-0009-1668-4543&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;simple-page&#34;&gt;Simple Page&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mryupengfei.github.io&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://mryupengfei.github.io&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://yupengfei.xyz&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://yupengfei.xyz&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://yupengfei.site&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://yupengfei.site&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;github&#34;&gt;Github&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mryupengfei&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://github.com/mryupengfei&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;gitee&#34;&gt;Gitee&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gitee.com/yupengfei1074064684&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://gitee.com/yupengfei1074064684&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Markdown Cheat Sheet Ⓜ️⬇️</title>
      <link>/en/page/markdown-cheat-sheet/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/page/markdown-cheat-sheet/</guid>
      <description>&lt;h1 id=&#34;markdown-cheat-sheet&#34;&gt;Markdown Cheat Sheet&lt;/h1&gt;&#xA;&lt;p&gt;Hugo has excellent Markdown support out of the box. By default, Hugo uses the &lt;a href=&#34;https://github.com/yuin/goldmark/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Goldmark Markdown processor&lt;/a&gt; which is fully CommonMark-compliant. See the &lt;a href=&#34;https://gohugo.io/getting-started/configuration-markup/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;configuration instructions&lt;/a&gt; to learn more about the extensions you can configure.&lt;/p&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;You can refer to the table below for an overview of basic markdown syntax:&lt;/p&gt;&#xA;&lt;table class=&#34;table table-sm table-striped table-hover&#34;&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;TASK&lt;/th&gt;&#xA;          &lt;th&gt;MARKDOWN SYNTAX&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Heading 1&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;#&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Heading 2&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;##&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Heading 3&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;###&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Italics&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;*italics*&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Bold&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;**Bold**&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Strike&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;~~strike~~&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Blockquote&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Links&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;[link name](https://link.com)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Images&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;![Image name](image.png)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Unordered list&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;* List item&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Ordered list&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;1. List item&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Inline Code&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;`insert code here`&lt;code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;headings&#34;&gt;Headings&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# Heading 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## Heading 2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;### Heading 3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#### Heading 4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;##### Heading 5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;###### Heading 6&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;heading-1&#34;&gt;Heading 1&lt;/h1&gt;&#xA;&lt;h2 id=&#34;heading-2&#34;&gt;Heading 2&lt;/h2&gt;&#xA;&lt;h3 id=&#34;heading-3&#34;&gt;Heading 3&lt;/h3&gt;&#xA;&lt;h4 id=&#34;heading-4&#34;&gt;Heading 4&lt;/h4&gt;&#xA;&lt;h5 id=&#34;heading-5&#34;&gt;Heading 5&lt;/h5&gt;&#xA;&lt;h6 id=&#34;heading-6&#34;&gt;Heading 6&lt;/h6&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;lists&#34;&gt;Lists&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;*&lt;/span&gt; Unordered item&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;*&lt;/span&gt; Unordered item&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;*&lt;/span&gt; Unordered item&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;1.&lt;/span&gt; Ordered item&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;2.&lt;/span&gt; Ordered item&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;3.&lt;/span&gt; Ordered item&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;- [ ]&lt;/span&gt; Task item&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;- [x]&lt;/span&gt; Checked Task item&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;- [ ]&lt;/span&gt; Task item&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Unordered item&lt;/li&gt;&#xA;&lt;li&gt;Unordered item&lt;/li&gt;&#xA;&lt;li&gt;Unordered item&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Ordered item&lt;/li&gt;&#xA;&lt;li&gt;Ordered item&lt;/li&gt;&#xA;&lt;li&gt;Ordered item&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Task item&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Checked Task item&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Task item&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;format&#34;&gt;Format&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Bold**&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;font-style:italic&#34;&gt;*Italic*&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;u&amp;gt;Underline&amp;lt;/u&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;sup&amp;gt;Superscript&amp;lt;/sup&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;sub&amp;gt;Subscript&amp;lt;/sub&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;mark&amp;gt;Highlight&amp;lt;/mark&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`Inline code`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;~~Strikethrough~~&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[&lt;span style=&#34;color:#f92672&#34;&gt;Hyperlink&lt;/span&gt;](&lt;span style=&#34;color:#a6e22e&#34;&gt;http://example.com&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;![&lt;span style=&#34;color:#f92672&#34;&gt;Image&lt;/span&gt;](&lt;span style=&#34;color:#a6e22e&#34;&gt;placeholder-50-09f-fff.png&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{ .img-fluid }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Bold&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Privacy Policy</title>
      <link>/en/privacy-policy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/privacy-policy/</guid>
      <description>&lt;h1 id=&#34;privacy-policy&#34;&gt;Privacy Policy&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: We do not use cookies and we do not collect any personal data.&lt;/p&gt;&#xA;&lt;h2 id=&#34;website-visitors&#34;&gt;Website visitors&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;No personal information is collected.&lt;/li&gt;&#xA;&lt;li&gt;No information is stored in the browser.&lt;/li&gt;&#xA;&lt;li&gt;No information is shared with, sent to or sold to third-parties.&lt;/li&gt;&#xA;&lt;li&gt;No information is shared with advertising companies.&lt;/li&gt;&#xA;&lt;li&gt;No information is mined and harvested for personal and behavioral trends.&lt;/li&gt;&#xA;&lt;li&gt;No information is monetized.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;information-we-collect-and-what-we-use-it-for&#34;&gt;Information we collect and what we use it for&lt;/h2&gt;&#xA;&lt;p&gt;The server hosting this site can collect the following information:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Security Best Practices 🔒</title>
      <link>/en/page/security-best-practices/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/en/page/security-best-practices/</guid>
      <description>&lt;h1 id=&#34;security-best-practices&#34;&gt;Security Best Practices&lt;/h1&gt;&#xA;&lt;p&gt;Improve code health of your web page following these best practices.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-https&#34;&gt;Use HTTPS&lt;/h2&gt;&#xA;&lt;p&gt;All websites should be protected with HTTPS, even ones that don&amp;rsquo;t handle sensitive data. HTTPS prevents intruders from tampering with or passively listening in on the communications between your site and your users.&lt;/p&gt;&#xA;&lt;h2 id=&#34;external-links&#34;&gt;External Links&lt;/h2&gt;&#xA;&lt;p&gt;When you link to a page on another site using the target=&amp;quot;_blank&amp;quot; attribute, you can expose your site to performance and security issues:&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于本站</title>
      <link>/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/about/</guid>
      <description>&lt;p&gt;使用了&lt;a href=&#34;https://github.com/filipecarneiro/hugo-bootstrap-theme/graphs/contributors&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Hugo Bootstrap Theme&lt;/a&gt; Hugo主题 ❤️  。&lt;/p&gt;</description>
    </item>
    <item>
      <title>通讯</title>
      <link>/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/contact/</guid>
      <description>&lt;h1 id=&#34;微信&#34;&gt;微信&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;mr_yupengfei&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;qq&#34;&gt;QQ&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1074064684&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;电子邮箱&#34;&gt;电子邮箱&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;mailto:mr_yupengfei@foxmail.com&#34;&gt;mr_yupengfei@foxmail.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;mailto:yupengfei.edu@gmail.com&#34;&gt;yupengfei.edu@gmail.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;orcid&#34;&gt;ORCID&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://orcid.org/0009-0009-1668-4543&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://orcid.org/0009-0009-1668-4543&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;simple-page&#34;&gt;Simple Page&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mryupengfei.github.io&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://mryupengfei.github.io&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://yupengfei.site&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://yupengfei.site&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;github&#34;&gt;Github&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mryupengfei&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://github.com/mryupengfei&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;gitee&#34;&gt;Gitee&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gitee.com/yupengfei1074064684&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://gitee.com/yupengfei1074064684&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>隐私政策</title>
      <link>/privacy-policy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>/privacy-policy/</guid>
      <description>&lt;h1 id=&#34;隐私政策&#34;&gt;隐私政策&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;本网站不使用cookies，也不收集任何个人数据。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;网站访问者&#34;&gt;网站访问者&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;不收集任何个人信息。&lt;/li&gt;&#xA;&lt;li&gt;在浏览器中不存储任何信息。&lt;/li&gt;&#xA;&lt;li&gt;不与第三方共享、发送或出售任何信息。&lt;/li&gt;&#xA;&lt;li&gt;不与广告公司共享任何信息。&lt;/li&gt;&#xA;&lt;li&gt;不进行个人和行为趋势的数据挖掘和收集。&lt;/li&gt;&#xA;&lt;li&gt;不进行信息货币化。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;我们收集的信息及其用途&#34;&gt;我们收集的信息及其用途&lt;/h2&gt;&#xA;&lt;p&gt;托管此网站的服务器可以收集以下信息：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;页面URL&lt;/li&gt;&#xA;&lt;li&gt;HTTP引荐来源&lt;/li&gt;&#xA;&lt;li&gt;浏览器&lt;/li&gt;&#xA;&lt;li&gt;操作系统&lt;/li&gt;&#xA;&lt;li&gt;设备类型&lt;/li&gt;&#xA;&lt;li&gt;IP地址&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;所有日志在每次发布时都会被删除。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
