<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Featured on 技术分享 Public Site</title>
    <link>https://mryupengfei.github.io/tags/featured/</link>
    <description>Recent content in Featured 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="https://mryupengfei.github.io/tags/featured/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>RAGFlow项目配置与部署指南 😸	</title>
      <link>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>使用自定义域名访问 GitLab 私有仓库</title>
      <link>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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>https://mryupengfei.github.io/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 Bootstrap Theme alpha</title>
      <link>https://mryupengfei.github.io/en/post/hugo-bootstrap-theme/</link>
      <pubDate>Sun, 22 May 2022 13:35:02 +0100</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>https://mryupengfei.github.io/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>Bootstrap Carousel 🎠</title>
      <link>https://mryupengfei.github.io/en/page/bootstrap-carousel/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>https://mryupengfei.github.io/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;https://mryupengfei.github.io/carousel/bootstrap-v5-new-logo_hu_e4c567b26223597e.webp&#34;&#xA;                 srcset=&#34;https://mryupengfei.github.io/carousel/bootstrap-v5-new-logo_hu_868ab0caa8c1ea89.webp 2560w, https://mryupengfei.github.io/carousel/bootstrap-v5-new-logo_hu_8c7815b60042997c.webp 1920w, https://mryupengfei.github.io/carousel/bootstrap-v5-new-logo_hu_e4c567b26223597e.webp 1280w, https://mryupengfei.github.io/carousel/bootstrap-v5-new-logo_hu_f02d8114a926fe8b.webp 960w, https://mryupengfei.github.io/carousel/bootstrap-v5-new-logo_hu_98ea1cc9fcc628e9.webp 640w, https://mryupengfei.github.io/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;https://mryupengfei.github.io/carousel/hugo-bootstrap-banner_hu_f5c58e8fd3bf94cd.webp&#34;&#xA;                 srcset=&#34;https://mryupengfei.github.io/carousel/hugo-bootstrap-banner_hu_ca213fa3f12e87a1.webp 2560w, https://mryupengfei.github.io/carousel/hugo-bootstrap-banner_hu_987c0856de059395.webp 1920w, https://mryupengfei.github.io/carousel/hugo-bootstrap-banner_hu_f5c58e8fd3bf94cd.webp 1280w, https://mryupengfei.github.io/carousel/hugo-bootstrap-banner_hu_3569854ca2402d40.webp 960w, https://mryupengfei.github.io/carousel/hugo-bootstrap-banner_hu_3a632ea0cf515ae.webp 640w, https://mryupengfei.github.io/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;https://mryupengfei.github.io/carousel/site-feature-image_hu_2307e3bf8cbc3b13.webp&#34;&#xA;                 srcset=&#34;https://mryupengfei.github.io/carousel/site-feature-image_hu_5a7d8ece9e74673e.webp 2560w, https://mryupengfei.github.io/carousel/site-feature-image_hu_5ca2777393db0e32.webp 1920w, https://mryupengfei.github.io/carousel/site-feature-image_hu_2307e3bf8cbc3b13.webp 1280w, https://mryupengfei.github.io/carousel/site-feature-image_hu_ed12dd2cf96c83.webp 960w, https://mryupengfei.github.io/carousel/site-feature-image_hu_29b1e057aa93d8f4.webp 640w, https://mryupengfei.github.io/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>https://mryupengfei.github.io/en/page/bootstrap-components/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>https://mryupengfei.github.io/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>Markdown Cheat Sheet Ⓜ️⬇️</title>
      <link>https://mryupengfei.github.io/en/page/markdown-cheat-sheet/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>https://mryupengfei.github.io/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>Security Best Practices 🔒</title>
      <link>https://mryupengfei.github.io/en/page/security-best-practices/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mr_yupengfei@foxmail.com (MrYuPengfei)</author>
      <guid>https://mryupengfei.github.io/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>
  </channel>
</rss>
