<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on AIOVTUE-雪</title><link>https://20030327.xyz/</link><description>Recent content in Home on AIOVTUE-雪</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 01 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://20030327.xyz/index.xml" rel="self" type="application/rss+xml"/><item><title>valaxy博客全局美化教程（一）</title><link>https://20030327.xyz/posts/77e14fc0/</link><pubDate>Thu, 28 May 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/77e14fc0/</guid><description>&lt;h3 id="本系列教程共十篇"&gt;本系列教程共十篇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://20030327.xyz/posts/77e14fc0/"&gt;&lt;em&gt;valaxy博客全局美化教程（一）&lt;/em&gt;&lt;/a&gt;：&lt;em&gt;分类、标签、归档三个页面的美化教程&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/47f7a318/"&gt;valaxy博客全局美化教程（二）&lt;/a&gt;：首页公告栏美化，新增随机文章展示板块&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/ae9004a/"&gt;valaxy博客全局美化教程（三）&lt;/a&gt;：给网页增加加载动画&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/bdc4192f/"&gt;valaxy博客全局美化教程（四）&lt;/a&gt;：增加图片预览功能&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/d25adc68/"&gt;valaxy博客全局美化教程（五）&lt;/a&gt;：友链页面美化，修改了友链样式以及增加留言板&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/b75497b1/"&gt;valaxy博客全局美化教程（六）&lt;/a&gt;：留言页面增加信封展开效果&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6554e02e/"&gt;valaxy博客全局美化教程（七）&lt;/a&gt;：新增网址导航页面&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/923fc86d/"&gt;valaxy博客全局美化教程（八）&lt;/a&gt;：页脚倒计时、搜索问题修复&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/e8f2e932/"&gt;valaxy博客全局美化教程（九）&lt;/a&gt;：新增相册页面，支持使用webdav作为相册&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6dc0ccf6/"&gt;valaxy博客全局美化教程（十）&lt;/a&gt;：修复构建结束的时候会卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="最初部署"&gt;最初部署&lt;/h3&gt;
&lt;h4 id="简介"&gt;简介&lt;/h4&gt;
&lt;p&gt;简单介绍一下valaxy，Valaxy = V + Galaxy 旨在成为下一代静态博客框架，提供更好的热更新与用户加载体验、更强大更便捷的自定义开发可能性。附上开源地址&lt;a href="https://github.com/YunYouJun/valaxy"&gt;valaxy&lt;/a&gt;
本系列教程使用的主题是Sakura主题，附上开源地址&lt;a href="https://github.com/wrxinyue/valaxy-theme-sakura"&gt;sakura&lt;/a&gt;
在开始教程之前先看一下最终的页面效果先：
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780923255231_1780923153704.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780923256550_1780923170709.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780923257251_1780923185560.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="开始部署"&gt;开始部署&lt;/h4&gt;
&lt;p&gt;本教程基于windows端&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;选择一个合适的地方新建一个文件夹。&lt;/p&gt;
&lt;p&gt;由于后期这个文件夹会变得非常大，所以建议一开始就选择合适的位置，推荐路径不要出现中文，虽然我弄下来没啥问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用管理员身份打开powershell终端&lt;/p&gt;
&lt;p&gt;虽然官方文档没要求必须管理员运行，但是我拉取文件的时候遇到一些问题，所有还是建议用一下。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在终端cd到你的文件夹&lt;/p&gt;
&lt;p&gt;以防你不懂，加入你刚刚创建的文件夹路径是这个&lt;code&gt;C:\demo\demo&lt;/code&gt;,那么你只需要输入&lt;code&gt;cd&lt;/code&gt;加上你的文件夹路径即可，示例：&lt;code&gt;cd C:\demo\demo&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;安装valaxy和主题&lt;/p&gt;
&lt;p&gt;该操作基于电脑安装了&lt;code&gt;pnpm&lt;/code&gt;或&lt;code&gt;npm&lt;/code&gt;的基础上，没安装的搜一下教程，或者看这个&lt;a href="https://blog.csdn.net/m0_52827996/article/details/138163237"&gt;pnpm安装教程&lt;/a&gt;(主播也是百度找的~)
推荐安装&lt;code&gt;pnpm&lt;/code&gt;，因为我用的这个，你们使用另一个的话后面可能会出一些奇奇怪怪的问题，毕竟我没用过
在刚刚的终端运行以下命令&lt;code&gt;pnpm create valaxy&lt;/code&gt;，运行之后程序会开始创建流程
会经理一下过程
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780923703157_1780923402482.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

这个界面是问你用来干什么，选择第一个&lt;code&gt;blog&lt;/code&gt;作为博客
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780923705402_1780923418964.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

这是让你选择主题，我们选第三行&lt;code&gt;custom&lt;/code&gt;,这行的意思是自己输入主题名
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780923703693_1780923434733.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

输入主题名&lt;code&gt;sakura&lt;/code&gt;，本教程所有修改基于此主题，虽然没改主题文件，但是选其他主题可能会遇到奇奇怪怪的问题
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780923701172_1780923447006.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

这是问你项目名称叫什么，就是文件夹名称，随便起一个英文就行
然后会问你是否运行，输入&lt;code&gt;y&lt;/code&gt;就行
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780923707384_1780923466631.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

这里选择&lt;code&gt;pnpm&lt;/code&gt;即可开始自动安装
出现下面的界面就是安装完成了
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780923705406_1780923640411.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

上面的链接就是你的网站，&lt;code&gt;ctrl&lt;/code&gt;+鼠标点击即可在浏览器打开链接，到此可以初步预览你的博客&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="开始美化"&gt;开始美化&lt;/h3&gt;
&lt;p&gt;一共分为两大步，其中要增加六个文件，修改三个文件，由于大部分教程重复，只拿第一次出现的地方进行说明，后面忘记了回来看前面&lt;/p&gt;
&lt;h4 id="分类页面"&gt;分类页面&lt;/h4&gt;
&lt;p&gt;分类页面公新增两个文件，别漏了哦&lt;/p&gt;
&lt;h5 id="新增文件"&gt;新增文件&lt;/h5&gt;
&lt;p&gt;所谓新增文件的意思就是新增文件夹，哈哈哈，这里解释一下我的写法是什么意思，博客的目录类似于&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;项目根目录/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ .valaxy/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ .vscode/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ components/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ layouts/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ locales/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ node_modules/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ pages/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ public/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ styles/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ .dockerignore
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ .editorconfig
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ .gitignore
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ .npmrc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ Dockerfile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ netlify.toml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ nginx.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ package.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ pnpm-lock.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ site.config.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ tsconfig.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ valaxy.config.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└─ vercel.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;这个就是你刚才创建的文件夹，拉取valaxy博客之后的文件夹目录，我写的路径是基于此根目录的，举个例子，下方的&lt;code&gt;\components\SakuraCategoriesChart.vue&lt;/code&gt;文件的意思就是，在文件夹&lt;code&gt;components&lt;/code&gt;内部，新建一个名为&lt;code&gt;SakuraCategoriesChart.vue&lt;/code&gt;的文件（windows创建这种文件的办法是右键，新建文本文档，然后把文件名连同后缀更改为这个即可），接着将文件下方的代码&lt;code&gt;&amp;lt;script lang=&amp;quot;ts&amp;quot; setup&amp;gt; .........&lt;/code&gt;复制到文件内即可，后续类似的新建文件按照同样的步骤，根据上方的文件夹路径和文件夹名称创建文件在写入内容即可。&lt;/p&gt;</description></item><item><title>绝美hugo主题博客-行星环</title><link>https://20030327.xyz/posts/hugoblog-aiovt-simple/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://20030327.xyz/posts/hugoblog-aiovt-simple/</guid><description>&lt;h3 id="简介"&gt;简介&lt;/h3&gt;
&lt;p&gt;本项目基于hugo进行构建，主题为&lt;code&gt;aiovt-simple&lt;/code&gt;主题，主题的制作参考了开源项目&lt;a href="https://github.com/Innei/Shiro"&gt;Shiro&lt;/a&gt;,部分页面几乎一样，感谢大佬开源，本项目也已经开源&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;开源地址： &lt;a href="https://github.com/AIOVTUE/hugo-theme-asimple"&gt;https://github.com/AIOVTUE/hugo-theme-asimple&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;原创部分为&lt;em&gt;行星环&lt;/em&gt; 采用绝无仅有的方式展示你的文章，本项目更适合用作记录而非发布，下面是预览图片展示
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1782655349920_1782655066518.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1782655904620_1782655875410.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1782655349185_1782655081243.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;下面是行星环深色模式动态演示&lt;/p&gt;
&lt;p&gt;&lt;a href="https://naixiai.cn/video/20260628-215843.Ldci1"&gt;&lt;video src="https://img.naixiai.cn/2026/06/28/20260628_215843.mp4" controls poster="https://img.naixiai.cn/2026/06/28/20260628_215843.fr.jpeg"&gt;&lt;/video&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="部署教程"&gt;部署教程&lt;/h3&gt;
&lt;h4 id="快速开始"&gt;快速开始&lt;/h4&gt;
&lt;p&gt;本地开放，先克隆仓库，再运行预览&lt;/p&gt;
&lt;div class="post-code" data-lang="bash"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 克隆仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/AIOVTUE/hugo-theme-aiovtue.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; hugo-theme-aiovtue
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 修改 hugo.toml 中的 baseURL、站点信息等&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 本地开发（含草稿，热更新）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo server -D
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 生产构建&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo --minify --gc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;构建输出在 &lt;code&gt;public/&lt;/code&gt;&lt;/p&gt;</description></item><item><title>免服务器动态博客-AueXUE</title><link>https://20030327.xyz/posts/auexue/</link><pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate><guid>https://20030327.xyz/posts/auexue/</guid><description>&lt;h3 id="简介"&gt;简介&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;AueXUE&lt;/em&gt; 是一个基于cloudflare进行托管，使用R2作为储存源，D1作为数据库的现代化动态博客项目，无需每次更改重新部署项目，实时预览你的更改，同时配套专属obsidian插件，方便在obsidian管理和发布文章，配有一键发布文章的功能，在obsidian打开对应文章点击发布即可直接将文档发布到云端并返回分享链接&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;开源地址：https://github.com/AIOVTUE/AueXUE&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="网站预览"&gt;网站预览&lt;/h4&gt;
&lt;p&gt;网站样式预览可以前往 &lt;strong&gt;&lt;a href="https://daily.yybb.us"&gt;https://daily.yybb.us&lt;/a&gt;&lt;/strong&gt; 该站点是基于hugo重构，ui界面保持一致，如果对这个感兴趣的话，请看 &lt;a href="https://daily.yybb.us/posts/hugotheme-aiovtue/"&gt;Hugo最美主题-aiovtue&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这里也放几张站点的截图方便预览&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%E5%8D%9A%E5%AE%A2/%E6%96%87%E7%AB%A0/1782137472842_6a3938ff4a893629d992bb61.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%E5%8D%9A%E5%AE%A2/%E6%96%87%E7%AB%A0/1780923255231_1780923153704.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;具体还是前往站点亲自体验比较好，下面是站点后台管理的样式，这个无法体验，我多几张&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%E5%8D%9A%E5%AE%A2/%E6%96%87%E7%AB%A0/NBxHR4aV.png"
 alt="登陆页面"
 loading="lazy"
 decoding="async"
 &gt;&lt;figcaption class="post-figure__caption"&gt;登陆页面&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%E5%8D%9A%E5%AE%A2/%E6%96%87%E7%AB%A0/QlXxCaTn.png"
 alt="文章页面"
 loading="lazy"
 decoding="async"
 &gt;&lt;figcaption class="post-figure__caption"&gt;文章页面&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%E5%8D%9A%E5%AE%A2/%E6%96%87%E7%AB%A0/Uvnt7X7L.png"
 alt="友链管理"
 loading="lazy"
 decoding="async"
 &gt;&lt;figcaption class="post-figure__caption"&gt;友链管理&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="自定义"&gt;自定义&lt;/h3&gt;
&lt;h4 id="页面"&gt;页面&lt;/h4&gt;
&lt;p&gt;下面是各个页面的自定义部分位置，首先是文章，由于文章储存在云端，但是在部署的时候会进行一次文章迁移，会将本地文章迁移至云端，因此，本地调试时可以加上想写的文章，不过后续更新文章不要使用这种方式，直接在后台管理即可，具体路径是&lt;code&gt;\AueXUE\content\posts&lt;/code&gt;文件夹，默认放了两篇文章
同样的，在&lt;code&gt;\AueXUE\content&lt;/code&gt;文件夹内部还有关于页，相册页，友链页以及公告栏等页面的相关配置，修改相关页面头图标题之类的找到对应&lt;code&gt;index.md&lt;/code&gt;文件修改即可&lt;/p&gt;
&lt;h4 id="其他页面"&gt;其他页面&lt;/h4&gt;
&lt;p&gt;部分页面只有静态文件，没有放在云端，后续也只需要修改一次，上面那些页面基本都是能在后台管理的，本地改不改都行，只是首次会进行同步，但是这部分的页面并不是，只是一次性的，静态文件，不支持后台修改，但是基本只需要修改一次，使用没有集成到后台，具体路径是&lt;code&gt;\AueXUE\pages&lt;/code&gt;文件夹下各文件夹，包括分类，标签，等页面，注意，后缀为&lt;code&gt;.vue&lt;/code&gt;的文件不要修改，只需要找到相应的&lt;code&gt;index.md&lt;/code&gt;文件修改即可&lt;/p&gt;
&lt;h4 id="站点信息"&gt;站点信息&lt;/h4&gt;
&lt;p&gt;站点信息分布在两个地方，涵盖两个文件&lt;code&gt;site.config.ts&lt;/code&gt;和&lt;code&gt;valaxy.config.ts&lt;/code&gt;
&lt;code&gt;site.config.ts&lt;/code&gt;文件包含内容如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;站点地址
站点标题
站点头像
站点图标
社交图标
打赏信息&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;valaxy.config.ts&lt;/code&gt;文件包含内容如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;主题色
导航页视频链接
默认文章封面
首页头图文字、背景
顶栏信息
侧边栏信息
页脚计时起始时间
页脚备案信息
归档页图表起始时间
评论配置（twikoo）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;大部分应该都写上去了，可能会漏掉一些~&lt;/p&gt;
&lt;h4 id="友链公告"&gt;友链公告&lt;/h4&gt;
&lt;p&gt;这部分比较特殊，被写死了，所以没再配置文件里面，具体修改位置在&lt;code&gt;\AueXUE\components\FriendLinkNotice.vue&lt;/code&gt;文件内，具体位置在&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 本站友链信息如下：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;ul class=&amp;#34;friend-link-site-info__list&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 站点名称：&amp;lt;span class=&amp;#34;friend-link-highlight&amp;#34;&amp;gt;AIOVTUE-雪&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 站点链接：&amp;lt;span class=&amp;#34;friend-link-highlight&amp;#34;&amp;gt;https://live.yybb.us&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 站长头像：&amp;lt;span class=&amp;#34;friend-link-highlight&amp;#34;&amp;gt;{{ siteInfo.avatar }}&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 站点描述：&amp;lt;span class=&amp;#34;friend-link-highlight&amp;#34;&amp;gt;雨滴会记录生命中的每一个瞬间&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 站点截图：&amp;lt;span class=&amp;#34;friend-link-highlight&amp;#34;&amp;gt;https://r2tc.20030327.xyz/file/博客/主题/1780909850378_1780909790262.png&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/li&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;具体在这部分，正常情况会自动获取站点配置，但是部分信息得自己改，修改很简单，直接把对应文字或者链接改为自己的即可&lt;/p&gt;</description></item><item><title/><link>https://20030327.xyz/thoughts/2026-06-28-site-migrate/</link><pubDate>Sun, 28 Jun 2026 14:30:00 +0800</pubDate><guid>https://20030327.xyz/thoughts/2026-06-28-site-migrate/</guid><description>&lt;p&gt;把 Hexo 站点的文章和页面慢慢搬进 Hugo 了。文件名、链接都对齐之后，心里踏实不少——博客还是那块数字花园，只是换了个更快的架子。&lt;/p&gt;</description></item><item><title>为回忆定制的Hugo主题-Simple</title><link>https://20030327.xyz/posts/hugotheme-simple/</link><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><guid>https://20030327.xyz/posts/hugotheme-simple/</guid><description>&lt;h3 id="简介"&gt;简介&lt;/h3&gt;
&lt;p&gt;这几天呢，又开发了一个hugo的主题，参考了一下开源项目&lt;a href="https://github.com/innei/Shiro"&gt;Shiro&lt;/a&gt;,同时也加入了一些自己的小巧思，制作出了这一块转为记录一生的网站，主要作为记录自己的过去现在以及未来，主题是简约和梦幻，本项目不适合用作发布一些教程之类的的传统博客，仅推荐作为个人站点记叙&lt;/p&gt;
&lt;h3 id="预览"&gt;预览&lt;/h3&gt;
&lt;p&gt;先给大家放出实际demo地址，有兴趣可以去看看&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;行星环：https://www.yybb.us
时间轴：https://20030327.xyz&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;下面使用图片进行介绍：&lt;/p&gt;
&lt;h4 id="首页"&gt;首页&lt;/h4&gt;
&lt;p&gt;首先是首页，首页的设计基本是完全参考了 &lt;em&gt;Shiro&lt;/em&gt; ，AIOVTUE-雪 觉得他的头图页面和这个博客的主题十分适配，最开始想到做这个其实也是看到它之后才有的想法，使用很大部分都会非常像，那么为什么不直接用它呢，因为要服务器？
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1782655349920_1782655066518.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="文章页"&gt;文章页&lt;/h4&gt;
&lt;h5 id="时间轴"&gt;时间轴&lt;/h5&gt;
&lt;p&gt;然后是文章列表页面，着重介绍的部分就是文章列表页面，因为是以记录和回忆为出发点，因此，没有采用传统的列表或者时间轴排布，当然其实是支持时间轴模式的，可以在配置文件自由设置，先看看时间轴的样式吧
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1782655904620_1782655875410.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h5 id="行星环"&gt;行星环&lt;/h5&gt;
&lt;p&gt;是不是感觉和Shiro一模一样，因为就是跟着写的，喜欢的当然也可以选这种模式，不过AIOVTUE-雪想介绍的是下面这个，这个显示效果应该是独一份吧，至少我还没见过类似的样式，AIOVTUE-雪 称他为&lt;strong&gt;行星环&lt;/strong&gt;，顾名思义，就是所有文章显示在行星环上面，每一年会形成一个行星环，如果某一年没有文章则会跳过这一年，年内的每一篇文章都会变成一个运行在行星环上面的星星，鼠标靠近星星会暂停行星环转动，并且弹出预览框，行星环最多会显示十环，也就是十年的文章，超过十年，行星环会开始更替，环会不断变大，然后最外环会消失，最内环会新生一个，如此更替，那么，看看效果吧
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1782655349185_1782655081243.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1782655353885_1782655097964.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

行星环本身也会转动，视频可能会更清楚吧：
&lt;a href="https://naixiai.cn/video/20260628-215843.Ldci1"&gt;&lt;video src="https://img.naixiai.cn/2026/06/28/20260628_215843.mp4" controls poster="https://img.naixiai.cn/2026/06/28/20260628_215843.fr.jpeg"&gt;&lt;/video&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="行星环特写"&gt;行星环特写&lt;/h5&gt;
&lt;p&gt;当然啦，想在这样一个庞然大物寻找想要的文章无异于大海捞针，更别说到时候文章数量上来之后，密密麻麻，更加是异想天开，使用，其实每个行星环都有特写页面，只需要在行星环继续向下滚动，就和放ppt一样，会开始按时间展示每个行星环，上面的星星就是文章，当然，也是会转动的，下面是效果图
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1782655356588_1782655161956.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="动态页"&gt;动态页&lt;/h4&gt;
&lt;p&gt;除却上述页面外，还有传统的文章页面，即按文章列表的样式显示文章，不过更加简约就是了，还有归档，标签这些必不可少的功能都是有的，需要着重介绍的是下面这个，动态页面，独立于文章页面，可以在这里写每日动态，感想等东西，并且，每个动态都支持独立评论，下面是预览效果
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1782655349051_1782655203732.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;其他页面就大差不差了，想体验的话还是推荐前往示例站点亲自体验一下&lt;/p&gt;</description></item><item><title/><link>https://20030327.xyz/thoughts/2026-06-22-theme-online/</link><pubDate>Mon, 22 Jun 2026 20:15:00 +0800</pubDate><guid>https://20030327.xyz/thoughts/2026-06-22-theme-online/</guid><description>&lt;p&gt;重构后的主题终于跑起来了。本地 &lt;code&gt;hugo server&lt;/code&gt; 一刷新，快得有点不真实。接下来慢慢把细节磨圆润吧。&lt;/p&gt;</description></item><item><title>Hugo最美主题-aiovtue</title><link>https://20030327.xyz/posts/c8f00873/</link><pubDate>Mon, 22 Jun 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/c8f00873/</guid><description>&lt;h3 id="简介"&gt;简介&lt;/h3&gt;
&lt;p&gt;简单说一下吧，就是之前的博客使用的是valaxy架构配合sakura主题，后面经过&lt;strong&gt;AIOVTUE-雪&lt;/strong&gt;的一系列魔改才有了如今的模样，怀念的小伙伴可以去这里看看&lt;a href="https://live.yybb.us"&gt;AIOVTUE-valaxy&lt;/a&gt;,你会发现其实和现在没什么区别，因为我将他完完全全的在&lt;code&gt;hugo&lt;/code&gt;进行了重构，由于是重构，所以整体项目和文件会更加清晰，配置也会更加简单，由于之前是魔改的，导致东一块西一块的，这也是重构的原因之一，另一个重构的原因就是，&lt;strong&gt;AIOVTUE-雪&lt;/strong&gt;很久之前就听说&lt;code&gt;hugo&lt;/code&gt;的速度多么多么块，实际体验下来也很震惊，真的很快，就是主题太稀缺了，而且大都不符合&lt;strong&gt;AIOVTUE-雪&lt;/strong&gt;的审美，因此进行了重构，重构后的主题&lt;strong&gt;AIOVTUE-雪&lt;/strong&gt;觉得在&lt;code&gt;hugo&lt;/code&gt;的主题里应该也算能排得上号了吧，至少按我的审美是这样的啦~&lt;/p&gt;
&lt;h4 id="预览一下站点"&gt;预览一下站点&lt;/h4&gt;
&lt;p&gt;看看站点截图吧（斯~，为什么要让你们在这个站点看这个站点的截图）
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1782137472842_6a3938ff4a893629d992bb61.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/6a3938ff4a893629d992bb60.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/6a3938fe4a893629d992bb5f.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/6a3938fe4a893629d992bb5d.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/6a3938fe4a893629d992bb5e.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="开源地址"&gt;开源地址&lt;/h3&gt;
&lt;p&gt;先附上开源地址吧&lt;a href="https://github.com/AIOVTUE/hugo-theme-aiovtue"&gt;Hugo-aiovtue&lt;/a&gt;,点击链接fork到自己的仓库之后在修改哦，记得给&lt;strong&gt;AIOVTUE-雪&lt;/strong&gt;点个star哦，谢谢啦~&lt;/p&gt;
&lt;h3 id="自定义"&gt;自定义&lt;/h3&gt;
&lt;h4 id="目录结构"&gt;目录结构&lt;/h4&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo-blog/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── hugo.toml # ★ 主配置（站点信息、导航、Hero、评论、赞助等）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── data/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── links.yaml # ★ 友链卡片数据
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── content/ # ★ 所有文章与页面（Markdown）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── posts/ # 博客文章
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── gallery/ # 相册
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── about.md # 关于页
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── links.md # 友链页（壳子，数据在 data/links.yaml）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── comment.md # 留言页
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── search.md # 搜索页
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── archives/ # 归档页
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── categories/ # 分类列表页
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── tags/ # 标签列表页
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── static/ # ★ 原样复制的静态文件（favicon、hero、envelope）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── themes/aiovtue/ # 主题（一般不改，除非调样式/布局）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── scripts/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── migrate-content.mjs # 从上级 Valaxy 项目批量同步内容
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── package.json # npm 脚本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── public/ # 构建输出（自动生成，勿手改，已 gitignore）&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;标 ★ 的是日常最常改动的位置。&lt;code&gt;hugo.toml&lt;/code&gt; 和 &lt;code&gt;data/links.yaml&lt;/code&gt; 内已写中文注释，可直接打开查看说明&lt;/p&gt;</description></item><item><title/><link>https://20030327.xyz/thoughts/2026-06-11-memos-note/</link><pubDate>Thu, 11 Jun 2026 09:40:00 +0800</pubDate><guid>https://20030327.xyz/thoughts/2026-06-11-memos-note/</guid><description>&lt;p&gt;写了个不需要服务器的 Memos 网页，数据走 WebDAV。坚果云同步一下，手机电脑都能看——穷人版 memos，但够用。&lt;/p&gt;</description></item><item><title>Memos-web 不需要服务器</title><link>https://20030327.xyz/posts/77ba7d06/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/77ba7d06/</guid><description>&lt;h3 id="介绍"&gt;介绍&lt;/h3&gt;
&lt;h4 id="起因"&gt;起因&lt;/h4&gt;
&lt;p&gt;最近无聊，写了个小玩意，感觉挺不错的，说说为什么想写个这个吧，最开始的时候用哪个memos，但是那个要部署在服务器上面，就很~没办法，我没有钱买服务器，或者说不想花钱买，后面就一直在找其他的项目，看看有没平替，不得不说，确实让我找到几个，但是吧，那个ui和操作，以及访问速度，真的有点感人，说的是这个&lt;a href="https://github.com/Allhuo/memos-cloudflare"&gt;memos-cloudflare&lt;/a&gt;,该说不说，作者很厉害，数据库，储存全都白嫖cloudflare，但是正因为需要数据库和R2这些，就注定离不开cloudflare，但是吧，这玩意在国内的速度就很迷会，时快时慢的，大多数时候打开就得加载半天，属于是很难受了，之后看到的项目基本都大同小异。&lt;/p&gt;
&lt;h4 id="想法"&gt;想法&lt;/h4&gt;
&lt;p&gt;这时候就不得不提&lt;em&gt;AI-雪&lt;/em&gt;的想法了，我想的是使用静态网站，这样就能托管到netlify，vercel这种国内速度还行的平台，但是静态网站，总不能每次都手动修改在上传吧，想想都不现实，诶，你猜怎么着，有个叫webdav的东西，这玩意真是个好东西啊，由于文件很小，同步个几千次都要不了多少流量，所有坚果云这种甚至都行，将webdav作为环境变量储存到网站中，在给定一个既定格式，网页通过既定格式渲染memos页面，每次加载网页都实时读取webdav文件渲染，这简直是绝了，并且obsidian支持webdav同步，所以完全可以将数据文件放在obsidian里面，如何再写一个obsidian插件，这样obsidian也能使用memos了，并且通过webdav云同步同步数据到云端，这样数据就和网页端实时同步了，这个想法简支太不错了，然后呢，是不是可以在做一个专门显示memos的安卓软件，配置好webdav信息之后，实时读取云端数据文档，再按照同样的数据格式渲染memos，这样手机端也能实时显示了，并且由于渲染格式是一样的，所以完全可以将手机端和网页端的webdav数据文件设定为同一个，这样两边数据就互通了，这个想法是不是很棒。&lt;/p&gt;
&lt;h4 id="展示"&gt;展示&lt;/h4&gt;
&lt;p&gt;那么，展示吧，网页端，看看ui喜不喜欢，&lt;em&gt;AI-雪&lt;/em&gt;自己反正挺喜欢的
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1781110022442_1781109932676.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

怎么样怎么样，还不错吧，左边的侧边栏哦，是根据浏览器边框自动显示隐藏的，因此，其实大部分时候是看不到侧边栏的，可以通过点击上面的&lt;code&gt;Memos&lt;/code&gt;字样控制侧边栏显示隐藏~
如你所见，它支持大部分memos语法，当然也包括图片啦（都有快捷键了啦），上面的输入框那里有一个memo还是待办的切换按钮，这个按钮切换到待办的时候，每一行就会变成一个todo~这个时候有些语法就会失灵咯，因为是专门写代办的，第一条就是待办的样子，左上角的星星是置顶的意思，是不是很棒&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1781110021058_1781109962070.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

诺，这就是没有侧边栏的样子啦，是不是清爽多了，右上角那个按钮就是切换显示样式的，现在的样子其实也还行，方便快速寻找memo，可以自由切换哦&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1781110027826_1781109980468.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

来看这个页面，点击任意memo就会触发这个小卡，方便快速预览，虽然点击展开按钮也能看，不过这样不是更显眼么，因为&lt;em&gt;AI-雪&lt;/em&gt;有时候找memo，找半天分不清楚是哪一条的，这个功能我喜欢
对啦，memo支持标签，#加任意文字回车就是标签，和标题的区别是没有空格，侧边栏可以通过标签筛选memo，虽然没啥用，我为什么不直接搜索呢&lt;del&gt;好看就完了呗&lt;/del&gt;&lt;/p&gt;
&lt;h3 id="部署"&gt;部署&lt;/h3&gt;
&lt;p&gt;这个项目，&lt;em&gt;AI-雪&lt;/em&gt;将他放在github了哦，&lt;a href="https://github.com/AIOVTUE/memos-web"&gt;Memos-web&lt;/a&gt;,ummmm
&lt;a href="https://github.com/AIOVTUE/memos-web"&gt;https://github.com/AIOVTUE/memos-web&lt;/a&gt;
你问我为什么要再放一个链接吗，因为我觉得这样好看
上面有介绍怎么部署的其实，不过呢我还是再讲一遍吧，笔记那边写的有点乱乱的
提一句，不要使用vercel，因为有点问题，但是&lt;em&gt;AI-雪&lt;/em&gt;不怎么用这个，所以没修（主要是修的话再出问题还得修），推荐使用netlify，访问快，cloudflare也能够部署的，其实说严谨一点的话，vercel也能部署，就是webdav的api有点问题，导致用不了~&lt;/p&gt;
&lt;h4 id="环境变量"&gt;环境变量&lt;/h4&gt;
&lt;p&gt;以下是所有用到的环境变量
可以复制 &lt;code&gt;.env.example&lt;/code&gt; 为 &lt;code&gt;.env&lt;/code&gt; 并填写，到时候部署可以直接上传.env文件，当然你也可以一个个自己设置&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;变量&lt;/th&gt;
					&lt;th&gt;必填&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;SITE_PASSWORD&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
					&lt;td&gt;网站访问密码&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;WEBDAV_URL&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
					&lt;td&gt;WebDAV 根地址，如 &lt;code&gt;https://example.com/remote.php/dav/files/user&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;WEBDAV_USERNAME&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
					&lt;td&gt;WebDAV 用户名&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;WEBDAV_PASSWORD&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
					&lt;td&gt;WebDAV 密码&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;WEBDAV_FILE_PATH&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;否&lt;/td&gt;
					&lt;td&gt;文件路径（相对 &lt;code&gt;WEBDAV_URL&lt;/code&gt;），默认 &lt;code&gt;basic.memos.md&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;AUTH_SECRET&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;建议&lt;/td&gt;
					&lt;td&gt;会话签名密钥，至少 32 位随机字符串&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ALLOWED_ORIGIN&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;否&lt;/td&gt;
					&lt;td&gt;跨域前端地址（逗号分隔），同域部署无需设置&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;basic.memos.md&lt;/code&gt;这个东西吧，尽量别改哦，如果你还想用后续的obsidian插件或者手机端的话，改了就无法读取了，手机端好像可以读取，obsidian似乎，好像也行？我没试过啦&lt;/p&gt;
&lt;h4 id="部署到云端"&gt;部署到云端&lt;/h4&gt;
&lt;p&gt;其实到cloudflare还是到netlify步骤都一样啦，这里就介绍一个&lt;/p&gt;
&lt;p&gt;部署到 Netlify&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 netlify→ &lt;strong&gt;Add new site&lt;/strong&gt; → &lt;strong&gt;Import an existing project&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;连接 Git 仓库&lt;/li&gt;
&lt;li&gt;构建设置（&lt;code&gt;netlify.toml&lt;/code&gt; 已预配置，一般无需修改）：
&lt;ul&gt;
&lt;li&gt;Build command: &lt;code&gt;npm run build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Publish directory: &lt;code&gt;dist&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Site configuration → Environment variables&lt;/strong&gt; 中添加全部环境变量&lt;/li&gt;
&lt;li&gt;触发部署
提一句，其实首次部署可以不加环境变量，后面再去加，加了在重新部署也行，看你喜欢哪种咯~
然后？然后就没啦，直接就能用了，是不是很简单~&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;常见问题：&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Valaxy博客动态化</title><link>https://20030327.xyz/posts/795c7881/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/795c7881/</guid><description>&lt;h3 id="简介"&gt;简介&lt;/h3&gt;
&lt;p&gt;继之前对valaxy博客进行美化之后，觉得每次上传部署太过麻烦，因此对其进行了大改，现实现功能如下，数据改为储存于R2，数据库使用D1，文章页面，关于页面，友链页面等页面均储存在云端数据中，可以实现动态更改文章，发布文章，修改友链和其他页面数据等操作，而不需要重新部署，以下是部分截面预览截图
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/NBxHR4aV.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/lGhxldJX.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/QlXxCaTn.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/Uvnt7X7L.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="开源地址"&gt;开源地址&lt;/h3&gt;
&lt;p&gt;老样子，&lt;em&gt;AIOVTUE-雪&lt;/em&gt; 将文件开源在github，顺便说一下，这个项目由于改为实时获取云端数据渲染，所以导致搜索引擎爬虫可能会获取到空页面导致seo收录效果不好，酌情考虑是否作为主要站点，这个项目配有专门的obsidian插件，可以使用obsidian编辑，并且给obsidian增加了一键上传文章到云端的功能，凭借这个你也可以做到分享自己的本地文章给别人，好啦，这是地址：&lt;a href="https://github.com/AIOVTUE/aiovtueBlogUseR2"&gt;点我前往开源地址&lt;/a&gt;，喜欢的话记得点个star哦&lt;/p&gt;
&lt;h3 id="部署教程"&gt;部署教程&lt;/h3&gt;
&lt;p&gt;这个不像静态，部署稍微有一点复杂，不过其实也还好，跟着一步步操作就行&lt;/p&gt;
&lt;h4 id="克隆仓库"&gt;克隆仓库&lt;/h4&gt;
&lt;p&gt;前往开源地址，fork克隆一份到自己的github，或者直接下载zip包也行，反正要下载下来修改的&lt;/p&gt;
&lt;h4 id="本地运行"&gt;本地运行&lt;/h4&gt;
&lt;h5 id="安装依赖"&gt;安装依赖&lt;/h5&gt;
&lt;p&gt;打开终端运行如下命令&lt;/p&gt;
&lt;div class="post-code" data-lang="bash"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h5 id="配置本地密钥"&gt;配置本地密钥&lt;/h5&gt;
&lt;p&gt;复制示例文件并按需修改：&lt;/p&gt;</description></item><item><title>valaxy博客全局美化教程（十）</title><link>https://20030327.xyz/posts/6dc0ccf6/</link><pubDate>Sat, 06 Jun 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/6dc0ccf6/</guid><description>&lt;h3 id="本系列教程共十篇"&gt;本系列教程共十篇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/77e14fc0/"&gt;valaxy博客全局美化教程（一）&lt;/a&gt;：分类、标签、归档三个页面的美化教程&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/47f7a318/"&gt;valaxy博客全局美化教程（二）&lt;/a&gt;：首页公告栏美化，新增随机文章展示板块&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/ae9004a/"&gt;valaxy博客全局美化教程（三）&lt;/a&gt;：给网页增加加载动画&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/bdc4192f/"&gt;valaxy博客全局美化教程（四）&lt;/a&gt;：增加图片预览功能&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/d25adc68/"&gt;valaxy博客全局美化教程（五）&lt;/a&gt;：友链页面美化，修改了友链样式以及增加留言板&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/b75497b1/"&gt;valaxy博客全局美化教程（六）&lt;/a&gt;：留言页面增加信封展开效果&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6554e02e/"&gt;valaxy博客全局美化教程（七）&lt;/a&gt;：新增网址导航页面&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/923fc86d/"&gt;valaxy博客全局美化教程（八）&lt;/a&gt;：页脚倒计时、搜索问题修复&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/e8f2e932/"&gt;valaxy博客全局美化教程（九）&lt;/a&gt;：新增相册页面，支持使用webdav作为相册&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://20030327.xyz/posts/6dc0ccf6/"&gt;&lt;em&gt;valaxy博客全局美化教程（十）&lt;/em&gt;&lt;/a&gt;：修复构建结束的时候会卡住&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="覆盖文件"&gt;覆盖文件&lt;/h3&gt;
&lt;p&gt;覆盖文件的意思就是，这个文件已存在，删除原本全部内容，替换为下方内容，不过删之前建议备份哦&lt;/p&gt;
&lt;h5 id="覆盖scriptsbuild-ssgmjs"&gt;覆盖&lt;code&gt;scripts\build-ssg.mjs&lt;/code&gt;&lt;/h5&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import { spawn } from &amp;#39;node:child_process&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import { createRequire } from &amp;#39;node:module&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import { existsSync } from &amp;#39;node:fs&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import { resolve } from &amp;#39;node:path&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const BUILD_DONE_MARKERS = [
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;[HOOK] build:after done&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;RSS Feed Files&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const GRACE_MS = 800
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const HEARTBEAT_MS = 45_000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const MAX_MS = 20 * 60 * 1000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const require = createRequire(import.meta.url)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const valaxyBin = require.resolve(&amp;#39;valaxy/bin/valaxy.mjs&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const distIndex = resolve(process.cwd(), &amp;#39;dist/index.html&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const child = spawn(process.execPath, [valaxyBin, &amp;#39;build&amp;#39;, &amp;#39;--ssg&amp;#39;], {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; stdio: [&amp;#39;inherit&amp;#39;, &amp;#39;pipe&amp;#39;, &amp;#39;pipe&amp;#39;],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; env: process.env,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; windowsHide: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;let finished = false
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;let successTimer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;let outputBuffer = &amp;#39;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;function killChildTree() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (!child.pid)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (process.platform === &amp;#39;win32&amp;#39;) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; spawn(&amp;#39;taskkill&amp;#39;, [&amp;#39;/PID&amp;#39;, String(child.pid), &amp;#39;/T&amp;#39;, &amp;#39;/F&amp;#39;], {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; stdio: &amp;#39;ignore&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; windowsHide: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; try {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; child.kill(&amp;#39;SIGKILL&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; catch {}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;function finishSuccess() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (finished)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; finished = true
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; clearTimeout(maxTimer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; clearTimeout(successTimer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; clearInterval(heartbeatTimer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (!existsSync(distIndex)) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.error(&amp;#39;\n构建流程已结束，但未找到 dist/index.html，请检查构建日志。\n&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; killChildTree()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; process.exit(1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;\n✓ 构建已完成，正在结束进程…\n&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; killChildTree()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; setTimeout(() =&amp;gt; process.exit(0), 200)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;function finishError(code) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (finished)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; finished = true
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; clearTimeout(maxTimer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; clearTimeout(successTimer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; clearInterval(heartbeatTimer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; process.exit(code ?? 1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;function scheduleSuccess() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; clearTimeout(successTimer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; successTimer = setTimeout(finishSuccess, GRACE_MS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;function inspectOutput(text) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; outputBuffer += text
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (outputBuffer.length &amp;gt; 8192)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; outputBuffer = outputBuffer.slice(-8192)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (BUILD_DONE_MARKERS.some(marker =&amp;gt; outputBuffer.includes(marker)))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; scheduleSuccess()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const heartbeatTimer = setInterval(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (finished)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;\n⏳ 仍在构建中（SSG 预渲染可能较慢，请稍候）…\n&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}, HEARTBEAT_MS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const maxTimer = setTimeout(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (finished)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.error(&amp;#39;\nSSG 构建超时（20 分钟）。\n&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; killChildTree()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; finishError(1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}, MAX_MS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;child.stdout.on(&amp;#39;data&amp;#39;, (chunk) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const text = chunk.toString()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; process.stdout.write(text)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; inspectOutput(text)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;child.stderr.on(&amp;#39;data&amp;#39;, (chunk) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const text = chunk.toString()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; process.stderr.write(text)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; inspectOutput(text)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;child.on(&amp;#39;error&amp;#39;, (error) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.error(error)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; finishError(1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;child.on(&amp;#39;close&amp;#39;, (code) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (finished)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (code === 0 || existsSync(distIndex))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; finishSuccess()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; else
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; finishError(code)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;})&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h3 id="修改文件"&gt;修改文件&lt;/h3&gt;
&lt;h5 id="修改packagejson"&gt;修改&lt;code&gt;package.json&lt;/code&gt;&lt;/h5&gt;
&lt;p&gt;替换原本&lt;code&gt;&amp;quot;build:ssg&amp;quot;: &amp;quot;valaxy build --ssg&amp;quot;,&lt;/code&gt;为&lt;/p&gt;</description></item><item><title>valaxy博客全局美化教程（九）</title><link>https://20030327.xyz/posts/e8f2e932/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/e8f2e932/</guid><description>&lt;h3 id="本系列教程共十篇"&gt;本系列教程共十篇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/77e14fc0/"&gt;valaxy博客全局美化教程（一）&lt;/a&gt;：分类、标签、归档三个页面的美化教程&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/47f7a318/"&gt;valaxy博客全局美化教程（二）&lt;/a&gt;：首页公告栏美化，新增随机文章展示板块&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/ae9004a/"&gt;valaxy博客全局美化教程（三）&lt;/a&gt;：给网页增加加载动画&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/bdc4192f/"&gt;valaxy博客全局美化教程（四）&lt;/a&gt;：增加图片预览功能&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/d25adc68/"&gt;valaxy博客全局美化教程（五）&lt;/a&gt;：友链页面美化，修改了友链样式以及增加留言板&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/b75497b1/"&gt;valaxy博客全局美化教程（六）&lt;/a&gt;：留言页面增加信封展开效果&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6554e02e/"&gt;valaxy博客全局美化教程（七）&lt;/a&gt;：新增网址导航页面&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/923fc86d/"&gt;valaxy博客全局美化教程（八）&lt;/a&gt;：页脚倒计时、搜索问题修复&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://20030327.xyz/posts/e8f2e932/"&gt;&lt;em&gt;valaxy博客全局美化教程（九）&lt;/em&gt;&lt;/a&gt;：新增相册页面，支持使用webdav作为相册&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6dc0ccf6/"&gt;valaxy博客全局美化教程（十）&lt;/a&gt;：修复构建结束的时候会卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="效果展示"&gt;效果展示&lt;/h3&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780936835609_1780936759223.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780936837068_1780936789803.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

支持图床相册或者webdav网盘相册，均支持加密，支持时间轴显示（图床需要自己设置时间，webdav没测试时间轴），图片预览界面和之前的预览界面一样的，安装本美化之前请先安装&lt;code&gt;valaxy博客全局美化教程（四）&lt;/code&gt;，否则可能会出奇奇怪怪的问题&lt;/p&gt;
&lt;h3 id="开始美化"&gt;开始美化&lt;/h3&gt;
&lt;p&gt;由于相册功能改动十分大，有涉及到三四十个新建文件，如果让你们一个个添加的话，那也太累了，所以我将所有新建文件全部打包，按照项目根目录路径打包，解压之后可以直接覆盖导入，不放心的话可以一个个导入，&lt;strong&gt;注意，修改相册之前记得备份一份博客文件，由于本次美化设计文件过多，一个个回退不太现实，万一出问题造成后果自己负责哦&lt;/strong&gt;，&lt;/p&gt;
&lt;h4 id="环境变量"&gt;环境变量&lt;/h4&gt;
&lt;p&gt;说明一下，由于要使用webdav相册，需要在部署到托管时增加环境变量，以下是环境变量名称&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WEBDAV_PASSWORD&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;值是你的webdav访问密码，记得类型选择秘钥类型哦~&lt;/p&gt;</description></item><item><title>valaxy博客全局美化教程（八）</title><link>https://20030327.xyz/posts/923fc86d/</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/923fc86d/</guid><description>&lt;h3 id="本系列教程共十篇"&gt;本系列教程共十篇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/77e14fc0/"&gt;valaxy博客全局美化教程（一）&lt;/a&gt;：分类、标签、归档三个页面的美化教程&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/47f7a318/"&gt;valaxy博客全局美化教程（二）&lt;/a&gt;：首页公告栏美化，新增随机文章展示板块&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/ae9004a/"&gt;valaxy博客全局美化教程（三）&lt;/a&gt;：给网页增加加载动画&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/bdc4192f/"&gt;valaxy博客全局美化教程（四）&lt;/a&gt;：增加图片预览功能&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/d25adc68/"&gt;valaxy博客全局美化教程（五）&lt;/a&gt;：友链页面美化，修改了友链样式以及增加留言板&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/b75497b1/"&gt;valaxy博客全局美化教程（六）&lt;/a&gt;：留言页面增加信封展开效果&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6554e02e/"&gt;valaxy博客全局美化教程（七）&lt;/a&gt;：新增网址导航页面&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://20030327.xyz/posts/923fc86d/"&gt;&lt;em&gt;valaxy博客全局美化教程（八）&lt;/em&gt;&lt;/a&gt;：页脚倒计时、搜索问题修复&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/e8f2e932/"&gt;valaxy博客全局美化教程（九）&lt;/a&gt;：新增相册页面，支持使用webdav作为相册&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6dc0ccf6/"&gt;valaxy博客全局美化教程（十）&lt;/a&gt;：修复构建结束的时候会卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="页脚添加计时功能"&gt;页脚添加计时功能&lt;/h3&gt;
&lt;h4 id="预览效果"&gt;预览效果&lt;/h4&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780935908626_1780935876619.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="新建文件"&gt;新建文件&lt;/h4&gt;
&lt;p&gt;以下是新建文件部分&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新增&lt;code&gt;components\SakuraFooter.vue&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;script lang=&amp;#34;ts&amp;#34; setup&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import type { Pkg } from &amp;#39;valaxy&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import { useConfig } from &amp;#39;valaxy&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import { isClient } from &amp;#39;@vueuse/core&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import { computed, onMounted, onUnmounted, ref, watch } from &amp;#39;vue&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;interface FooterConfig {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; icp?: string
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; powered?: boolean
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; runtimeSince?: string
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;interface RuntimeParts {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; days: number
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; hours: number
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; minutes: number
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; seconds: number
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const props = defineProps&amp;lt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; footer?: FooterConfig
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pkg?: Pkg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&amp;gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const config = useConfig()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const footer = computed(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (props.footer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return props.footer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return (config.value?.themeConfig as { footer?: FooterConfig } | undefined)?.footer ?? {}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const runtime = ref&amp;lt;RuntimeParts | null&amp;gt;(null)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;let timer: ReturnType&amp;lt;typeof setInterval&amp;gt; | undefined
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;function parseStartTime(since: string) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const trimmed = since.trim()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (/^\d{4}-\d{2}-\d{2}$/.test(trimmed)) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const [year, month, day] = trimmed.split(&amp;#39;-&amp;#39;).map(Number)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return new Date(year, month - 1, day, 0, 0, 0, 0)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const start = new Date(trimmed)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (Number.isNaN(start.getTime()))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return start
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;function updateRuntime() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const since = footer.value.runtimeSince
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (!since) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; runtime.value = null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const start = parseStartTime(since)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (!start) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; runtime.value = null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; let diffMs = Date.now() - start.getTime()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (diffMs &amp;lt; 0) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; runtime.value = null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const days = Math.floor(diffMs / 86_400_000)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; diffMs -= days * 86_400_000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const hours = Math.floor(diffMs / 3_600_000)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; diffMs -= hours * 3_600_000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const minutes = Math.floor(diffMs / 60_000)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; diffMs -= minutes * 60_000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const seconds = Math.floor(diffMs / 1000)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; runtime.value = { days, hours, minutes, seconds }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;function stopTimer() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (timer !== undefined) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; clearInterval(timer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; timer = undefined
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;function startTimer() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; updateRuntime()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; stopTimer()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (isClient)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; timer = setInterval(updateRuntime, 1000)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;watch(() =&amp;gt; footer.value.runtimeSince, startTimer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;onMounted(startTimer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;onUnmounted(stopTimer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/script&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;template&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;footer class=&amp;#34;sakura-footer h-$sakura-footer-height&amp;#34; text=&amp;#34;center sm&amp;#34; style=&amp;#34;color:var(--va-c-text-light)&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div v-if=&amp;#34;footer.icp&amp;#34; class=&amp;#34;icp&amp;#34; p=&amp;#34;y-2&amp;#34; v-html=&amp;#34;footer.icp&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;SakuraCopyright /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;p v-if=&amp;#34;runtime&amp;#34; class=&amp;#34;sakura-footer-runtime&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 本站已经流畅运行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span class=&amp;#34;sakura-footer-runtime__num&amp;#34;&amp;gt;{{ runtime.days }}&amp;lt;/span&amp;gt;天
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span class=&amp;#34;sakura-footer-runtime__num&amp;#34;&amp;gt;{{ runtime.hours }}&amp;lt;/span&amp;gt;小时
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span class=&amp;#34;sakura-footer-runtime__num&amp;#34;&amp;gt;{{ runtime.minutes }}&amp;lt;/span&amp;gt;分钟
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span class=&amp;#34;sakura-footer-runtime__num&amp;#34;&amp;gt;{{ runtime.seconds }}&amp;lt;/span&amp;gt;秒
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;SakuraPowered v-if=&amp;#34;footer.powered&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;slot /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/footer&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/template&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;style lang=&amp;#34;scss&amp;#34; scoped&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.sakura-footer-runtime {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin: 0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding: 4px 0 8px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 0.875rem;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; line-height: 1.6;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: var(--va-c-text-light);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.sakura-footer-runtime__num {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-variant-numeric: tabular-nums;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-weight: 600;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: var(--sakura-color-primary, #fe9500);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h4 id="修改文件"&gt;修改文件&lt;/h4&gt;
&lt;p&gt;以下是修改文件部分&lt;/p&gt;</description></item><item><title>valaxy博客全局美化教程（七）</title><link>https://20030327.xyz/posts/6554e02e/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/6554e02e/</guid><description>&lt;h3 id="本系列教程共十篇"&gt;本系列教程共十篇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/77e14fc0/"&gt;valaxy博客全局美化教程（一）&lt;/a&gt;：分类、标签、归档三个页面的美化教程&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/47f7a318/"&gt;valaxy博客全局美化教程（二）&lt;/a&gt;：首页公告栏美化，新增随机文章展示板块&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/ae9004a/"&gt;valaxy博客全局美化教程（三）&lt;/a&gt;：给网页增加加载动画&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/bdc4192f/"&gt;valaxy博客全局美化教程（四）&lt;/a&gt;：增加图片预览功能&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/d25adc68/"&gt;valaxy博客全局美化教程（五）&lt;/a&gt;：友链页面美化，修改了友链样式以及增加留言板&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/b75497b1/"&gt;valaxy博客全局美化教程（六）&lt;/a&gt;：留言页面增加信封展开效果&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://20030327.xyz/posts/6554e02e/"&gt;&lt;em&gt;valaxy博客全局美化教程（七）&lt;/em&gt;&lt;/a&gt;：新增网址导航页面&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/923fc86d/"&gt;valaxy博客全局美化教程（八）&lt;/a&gt;：页脚倒计时、搜索问题修复&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/e8f2e932/"&gt;valaxy博客全局美化教程（九）&lt;/a&gt;：新增相册页面，支持使用webdav作为相册&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6dc0ccf6/"&gt;valaxy博客全局美化教程（十）&lt;/a&gt;：修复构建结束的时候会卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="效果演示"&gt;效果演示&lt;/h3&gt;
&lt;p&gt;这个页面效果有点多，其中有一个随机网站抽卡界面，大家最好还是亲自体验一下比较好
&lt;a href="https://live.yybb.us/navigation"&gt;前往体验&lt;/a&gt;
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780934727393_1780934695511.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;站长的小巧思，点击到处转转按钮有惊喜哦~&lt;/p&gt;
&lt;h3 id="文件修改"&gt;文件修改&lt;/h3&gt;
&lt;p&gt;以下是文件修改部分，共&lt;code&gt;1&lt;/code&gt;个修改文件
注意这里给的完整代码哦
文件&lt;code&gt;valaxy.config.ts&lt;/code&gt;增加&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  themeConfig: {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  //...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;     // 导航页「随机网站跳转」抽卡视频：weight 越大越容易抽到
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    navigation: {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      randomDrawVideos: [
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          url: &amp;#39;https://img.naixiai.cn/2026/06/09/_compressed.mp4&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          weight: 1,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          url: &amp;#39;https://img.naixiai.cn/2026/06/09/_compresseddbc6ff3507fddbf4.mp4&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          weight: 2,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          url: &amp;#39;https://img.naixiai.cn/2026/06/09/_compressedf1fc8ccd127613ac.fr.jpeg&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          weight: 3,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      ],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  //...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;上面这个解释一下，三个&lt;code&gt;url&lt;/code&gt;链接是点击随机跳转按钮后的抽卡视频，最好自己准备哦，下面的是概率，挺好玩的
上下两部分都需要添加，下面这部分就是给你的网页增加导航页面按钮，具体放置位置可以看看官方文档的顶栏按钮怎么写的，&lt;a href="https://sakura.valaxy.site/guide/theme-config/nav"&gt;点我去看看&lt;/a&gt;&lt;/p&gt;</description></item><item><title>valaxy博客全局美化教程（六）</title><link>https://20030327.xyz/posts/b75497b1/</link><pubDate>Tue, 02 Jun 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/b75497b1/</guid><description>&lt;h3 id="本系列教程共十篇"&gt;本系列教程共十篇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/77e14fc0/"&gt;valaxy博客全局美化教程（一）&lt;/a&gt;：分类、标签、归档三个页面的美化教程&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/47f7a318/"&gt;valaxy博客全局美化教程（二）&lt;/a&gt;：首页公告栏美化，新增随机文章展示板块&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/ae9004a/"&gt;valaxy博客全局美化教程（三）&lt;/a&gt;：给网页增加加载动画&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/bdc4192f/"&gt;valaxy博客全局美化教程（四）&lt;/a&gt;：增加图片预览功能&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/d25adc68/"&gt;valaxy博客全局美化教程（五）&lt;/a&gt;：友链页面美化，修改了友链样式以及增加留言板&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://20030327.xyz/posts/b75497b1/"&gt;&lt;em&gt;valaxy博客全局美化教程（六）&lt;/em&gt;&lt;/a&gt;：留言页面增加信封展开效果&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6554e02e/"&gt;valaxy博客全局美化教程（七）&lt;/a&gt;：新增网址导航页面&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/923fc86d/"&gt;valaxy博客全局美化教程（八）&lt;/a&gt;：页脚倒计时、搜索问题修复&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/e8f2e932/"&gt;valaxy博客全局美化教程（九）&lt;/a&gt;：新增相册页面，支持使用webdav作为相册&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6dc0ccf6/"&gt;valaxy博客全局美化教程（十）&lt;/a&gt;：修复构建结束的时候会卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="话不多说先看效果"&gt;话不多说，先看效果&lt;/h3&gt;
&lt;video width="500" height="300" controls&gt;
 &lt;source src="https://r2tc.20030327.xyz/file/博客/文章/1780933818866_asdfewsd_compressed.mp4" type="video/mp4"&gt;
&lt;/video&gt;
&lt;p&gt;页面下滑时信封自动展开，上划自动闭合，可以自己换图片，但是尺寸要一样哈，由于涉及到图床，大家尽量只下载图片，不要直接使用站长的链接，因为站长不能保证什么时候就失效了
给出所有图片的图床链接：&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://pic1.imgdb.cn/item/6a26e5483c9809430d376f88.png
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://pic1.imgdb.cn/item/6a26e5483c9809430d376f87.png
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://pic1.imgdb.cn/item/6a26e5483c9809430d376f85.png
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://pic1.imgdb.cn/item/6a26e5483c9809430d376f86.png&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;从上到下分别是信纸、顶部信封、底部信封和横条，下面链接和这里一样，大家最好修改一下，测试用着可以，不要生产环境使用哦&lt;/p&gt;</description></item><item><title>valaxy博客全局美化教程（五）</title><link>https://20030327.xyz/posts/d25adc68/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/d25adc68/</guid><description>&lt;h3 id="本系列教程共十篇"&gt;本系列教程共十篇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/77e14fc0/"&gt;valaxy博客全局美化教程（一）&lt;/a&gt;：分类、标签、归档三个页面的美化教程&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/47f7a318/"&gt;valaxy博客全局美化教程（二）&lt;/a&gt;：首页公告栏美化，新增随机文章展示板块&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/ae9004a/"&gt;valaxy博客全局美化教程（三）&lt;/a&gt;：给网页增加加载动画&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/bdc4192f/"&gt;valaxy博客全局美化教程（四）&lt;/a&gt;：增加图片预览功能&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://20030327.xyz/posts/d25adc68/"&gt;&lt;em&gt;valaxy博客全局美化教程（五）&lt;/em&gt;&lt;/a&gt;：友链页面美化，修改了友链样式以及增加留言板&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/b75497b1/"&gt;valaxy博客全局美化教程（六）&lt;/a&gt;：留言页面增加信封展开效果&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6554e02e/"&gt;valaxy博客全局美化教程（七）&lt;/a&gt;：新增网址导航页面&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/923fc86d/"&gt;valaxy博客全局美化教程（八）&lt;/a&gt;：页脚倒计时、搜索问题修复&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/e8f2e932/"&gt;valaxy博客全局美化教程（九）&lt;/a&gt;：新增相册页面，支持使用webdav作为相册&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6dc0ccf6/"&gt;valaxy博客全局美化教程（十）&lt;/a&gt;：修复构建结束的时候会卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="效果演示"&gt;效果演示&lt;/h3&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780932344888_1780932280379.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780932343011_1780932303059.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;原本的友链页面比较单调，也没有留言板，就改了一下&lt;/p&gt;
&lt;h3 id="新增文件"&gt;新增文件&lt;/h3&gt;
&lt;p&gt;以下是新增文件部分哦，共&lt;code&gt;4&lt;/code&gt;个文件&lt;/p&gt;
&lt;p&gt;第一个比较特殊，说明一下，公告部分再次修改&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;const rules = [
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; { icon: &amp;#39;🎉&amp;#39;, text: &amp;#39;本站支持交换友链，在您提出申请之前，请将本站添加到友链&amp;#39; },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; { icon: &amp;#39;🍵&amp;#39;, text: &amp;#39;为了保障本站用户，本站仅支持个人网站的友链申请&amp;#39; },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; { icon: &amp;#39;💡&amp;#39;, text: &amp;#39;申请本站友链需要拥有独立域名（非免费域名），建议开启全站 HTTPS&amp;#39; },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; { icon: &amp;#39;⌛&amp;#39;, text: &amp;#39;如果友情链接已经添加，请保持网站的正常访问，会定期清理僵尸网站&amp;#39; },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; { icon: &amp;#39;🐚&amp;#39;, text: &amp;#39;网站有一定的实质性内容和主题，不能是空壳网站和练手网站&amp;#39; },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; { icon: &amp;#39;💕&amp;#39;, text: &amp;#39;感谢您对本站的支持，如果您已经满足上述要求，请在下方表单提交友链申请~~~&amp;#39; },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;这里面的中文可以自由修改
下面这部分是自己站点的友链信息：&lt;/p&gt;</description></item><item><title>valaxy博客全局美化教程（四）</title><link>https://20030327.xyz/posts/bdc4192f/</link><pubDate>Sun, 31 May 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/bdc4192f/</guid><description>&lt;h3 id="本系列教程共十篇"&gt;本系列教程共十篇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/77e14fc0/"&gt;valaxy博客全局美化教程（一）&lt;/a&gt;：分类、标签、归档三个页面的美化教程&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/47f7a318/"&gt;valaxy博客全局美化教程（二）&lt;/a&gt;：首页公告栏美化，新增随机文章展示板块&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/ae9004a/"&gt;valaxy博客全局美化教程（三）&lt;/a&gt;：给网页增加加载动画&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://20030327.xyz/posts/bdc4192f/"&gt;&lt;em&gt;valaxy博客全局美化教程（四）&lt;/em&gt;&lt;/a&gt;：增加图片预览功能&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/d25adc68/"&gt;valaxy博客全局美化教程（五）&lt;/a&gt;：友链页面美化，修改了友链样式以及增加留言板&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/b75497b1/"&gt;valaxy博客全局美化教程（六）&lt;/a&gt;：留言页面增加信封展开效果&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6554e02e/"&gt;valaxy博客全局美化教程（七）&lt;/a&gt;：新增网址导航页面&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/923fc86d/"&gt;valaxy博客全局美化教程（八）&lt;/a&gt;：页脚倒计时、搜索问题修复&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/e8f2e932/"&gt;valaxy博客全局美化教程（九）&lt;/a&gt;：新增相册页面，支持使用webdav作为相册&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6dc0ccf6/"&gt;valaxy博客全局美化教程（十）&lt;/a&gt;：修复构建结束的时候会卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="效果预览"&gt;效果预览&lt;/h3&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780931408729_1780931382565.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

简单介绍一下，我用的时候这个博客没有图片预览，就加了一个，大概效果是这样的，底部有预览栏，可以点击切换，移动端可以滑动切换，支持图片缩放，效果还是不错的，对了，后续有一个相册页面，如果想要加入相册页面的话，这个部分必须得加哦，否则可能会出小问题，因为这两个东西是一起写的，虽然二者的图片预览是单独分开的，但是说不好哦~&lt;/p&gt;
&lt;h3 id="开始美化"&gt;开始美化&lt;/h3&gt;
&lt;h4 id="修改文件"&gt;修改文件&lt;/h4&gt;
&lt;p&gt;修改文件部分共&lt;code&gt;2&lt;/code&gt;个文件需要修改
下面这个是&lt;code&gt;css&lt;/code&gt;文件，控制组件特效的，默认文件时空的，直接新增即可&lt;/p&gt;
&lt;h5 id="在stylesindexscss文件增加以下代码"&gt;在&lt;code&gt;styles\index.scss&lt;/code&gt;文件增加以下代码&lt;/h5&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/* 文章图片点击放大 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.markdown-body img,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.prose img {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cursor: zoom-in;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;html.image-gallery-open {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; overflow: hidden;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;下面也是修改哦，下面给的是纯净代码，记得格式哦~&lt;/p&gt;</description></item><item><title/><link>https://20030327.xyz/thoughts/2026-05-30-evening-rain/</link><pubDate>Sat, 30 May 2026 22:08:00 +0800</pubDate><guid>https://20030327.xyz/thoughts/2026-05-30-evening-rain/</guid><description>&lt;p&gt;傍晚下过一阵雨，窗外凉了一度。适合什么都不做，只听键盘声。&lt;/p&gt;</description></item><item><title>valaxy博客全局美化教程（三）</title><link>https://20030327.xyz/posts/ae9004a/</link><pubDate>Sat, 30 May 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/ae9004a/</guid><description>&lt;h3 id="本系列教程共十篇"&gt;本系列教程共十篇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/77e14fc0/"&gt;valaxy博客全局美化教程（一）&lt;/a&gt;：分类、标签、归档三个页面的美化教程&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/47f7a318/"&gt;valaxy博客全局美化教程（二）&lt;/a&gt;：首页公告栏美化，新增随机文章展示板块&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://20030327.xyz/posts/ae9004a/"&gt;&lt;em&gt;valaxy博客全局美化教程（三）&lt;/em&gt;&lt;/a&gt;：给网页增加加载动画&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/bdc4192f/"&gt;valaxy博客全局美化教程（四）&lt;/a&gt;：增加图片预览功能&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/d25adc68/"&gt;valaxy博客全局美化教程（五）&lt;/a&gt;：友链页面美化，修改了友链样式以及增加留言板&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/b75497b1/"&gt;valaxy博客全局美化教程（六）&lt;/a&gt;：留言页面增加信封展开效果&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6554e02e/"&gt;valaxy博客全局美化教程（七）&lt;/a&gt;：新增网址导航页面&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/923fc86d/"&gt;valaxy博客全局美化教程（八）&lt;/a&gt;：页脚倒计时、搜索问题修复&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/e8f2e932/"&gt;valaxy博客全局美化教程（九）&lt;/a&gt;：新增相册页面，支持使用webdav作为相册&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6dc0ccf6/"&gt;valaxy博客全局美化教程（十）&lt;/a&gt;：修复构建结束的时候会卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="效果预览"&gt;效果预览&lt;/h3&gt;
&lt;p&gt;老规矩，先看效果
&lt;video width="600" height="400" controls&gt;
&lt;source src="https://r2tc.20030327.xyz/file/博客/文章/1780930394021_6月8日_compressed.mp4" type="video/mp4"&gt;
&lt;/video&gt;&lt;/p&gt;
&lt;h3 id="前置步骤"&gt;前置步骤&lt;/h3&gt;
&lt;p&gt;本效果基于valaxy内置的&lt;code&gt;foucGuard&lt;/code&gt;服务，需要先开启，全名叫FOUC（Flash of Unstyled Content）防护配置。效果是，通过在 &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; 中内联 &lt;code&gt;body { opacity: 0 !important }&lt;/code&gt; 隐藏页面，并通过 JS 监测所有样式表加载完成后，移除该隐藏样式标签以显示页面，防止首屏样式闪烁和样式分批渲染的问题。
简单来说就是在你的页面加载完成之前一直白屏，以防加载出乱码来，但是白屏不太美观，所以我加入了加载动画
先开启服务：
这是控制该组件的代码&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;enabled&lt;/code&gt;（默认 &lt;code&gt;true&lt;/code&gt;）：是否启用 FOUC 防护&lt;/li&gt;
&lt;li&gt;&lt;code&gt;maxDuration&lt;/code&gt;（默认 &lt;code&gt;5000&lt;/code&gt;）：最大等待时间（毫秒），作为 CSS 加载失败时的安全兜底。设为 &lt;code&gt;0&lt;/code&gt; 可禁用超时兜底&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;启用方式如下：
修改&lt;code&gt;valaxy.config.ts&lt;/code&gt;文件，在其中&lt;code&gt;export default defineValaxyConfig({})&lt;/code&gt;部分增加以下代码：&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; build: {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ssgForPagination: false,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; foucGuard: {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; enabled: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; maxDuration: 5000,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; },&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;最终的效果是这样的，别加错了：&lt;/p&gt;</description></item><item><title>valaxy博客全局美化教程（二）</title><link>https://20030327.xyz/posts/47f7a318/</link><pubDate>Fri, 29 May 2026 00:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/47f7a318/</guid><description>&lt;h3 id="本系列教程共十篇"&gt;本系列教程共十篇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/77e14fc0/"&gt;valaxy博客全局美化教程（一）&lt;/a&gt;：分类、标签、归档三个页面的美化教程&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://20030327.xyz/posts/47f7a318/"&gt;&lt;em&gt;valaxy博客全局美化教程（二）&lt;/em&gt;&lt;/a&gt;：首页公告栏美化，新增随机文章展示板块&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/ae9004a/"&gt;valaxy博客全局美化教程（三）&lt;/a&gt;：给网页增加加载动画&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/bdc4192f/"&gt;valaxy博客全局美化教程（四）&lt;/a&gt;：增加图片预览功能&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/d25adc68/"&gt;valaxy博客全局美化教程（五）&lt;/a&gt;：友链页面美化，修改了友链样式以及增加留言板&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/b75497b1/"&gt;valaxy博客全局美化教程（六）&lt;/a&gt;：留言页面增加信封展开效果&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6554e02e/"&gt;valaxy博客全局美化教程（七）&lt;/a&gt;：新增网址导航页面&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/923fc86d/"&gt;valaxy博客全局美化教程（八）&lt;/a&gt;：页脚倒计时、搜索问题修复&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/e8f2e932/"&gt;valaxy博客全局美化教程（九）&lt;/a&gt;：新增相册页面，支持使用webdav作为相册&lt;/li&gt;
&lt;li&gt;&lt;a href="https://20030327.xyz/posts/6dc0ccf6/"&gt;valaxy博客全局美化教程（十）&lt;/a&gt;：修复构建结束的时候会卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="最终效果展示"&gt;最终效果展示&lt;/h3&gt;
&lt;p&gt;老样子，先看看最终效果
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%e5%8d%9a%e5%ae%a2/%e6%96%87%e7%ab%a0/1780928752080_1780928716520.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

左侧部分是公告栏，会自动识别连接，点击跳转，右侧部分是随机文章，会在这部分显示随机文章，并且会随时间自动切换，当然也可以滚轮手动切换&lt;/p&gt;
&lt;h3 id="开始美化"&gt;开始美化&lt;/h3&gt;
&lt;p&gt;那么久开始咯，大部分操作和上一篇类似，不会的可以回去看，这里不赘述了&lt;/p&gt;
&lt;h4 id="修改文件"&gt;修改文件&lt;/h4&gt;
&lt;p&gt;这部分内容是修改配置文件哦，本部分修改文件&lt;code&gt;1&lt;/code&gt;
这里我就是将&lt;code&gt;themeConfig: {},&lt;/code&gt;一起给出了，注意区份哦&lt;/p&gt;
&lt;p&gt;文件&lt;code&gt;valaxy.config.ts&lt;/code&gt;新增代码：&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  themeConfig: {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  //...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    notice: {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      rotateInterval: 5000,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      title: &amp;#39;公告栏&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      sections: [
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          label: &amp;#39;--- 主域名 ---&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          lines: [
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            &amp;#39;daily.yybb.us&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            &amp;#39;hexo.yybb.us&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            // 也支持对象：{ text: &amp;#39;显示文字&amp;#39;, url: &amp;#39;https://example.com&amp;#39; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          ],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          label: &amp;#39;--- 备用域名 ---&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          lines: [
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            &amp;#39;vercel.yybb.us&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            &amp;#39;aiovtue.onrender.com&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;            &amp;#39;aiovtue.zeabur.app&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;          ],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      ],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    //...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;修改文件到此结束啦，下面是新增文件&lt;/p&gt;</description></item><item><title/><link>https://20030327.xyz/thoughts/2026-05-28-valaxy-tutorial/</link><pubDate>Thu, 28 May 2026 16:00:00 +0800</pubDate><guid>https://20030327.xyz/thoughts/2026-05-28-valaxy-tutorial/</guid><description/></item><item><title>免费域名2-netlib</title><link>https://20030327.xyz/posts/253b9cb7/</link><pubDate>Wed, 12 Nov 2025 15:07:35 +0800</pubDate><guid>https://20030327.xyz/posts/253b9cb7/</guid><description>&lt;h2 id="简介"&gt;简介&lt;/h2&gt;
&lt;p&gt;这次介绍的免费域名服务叫-netlib，介绍说是提供了很多年的免费域名了，还可以托管到cloudflare，实际体验下来确实不错，就是托管到cloudflare的时候成功率随缘，不过跟着本教程走可以大大提高成功率
先给出&lt;a href="https://www.netlib.re/"&gt;官网地址&lt;/a&gt;，同时给出官网截图
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/69143dd63203f7be00f8b46b.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="注册"&gt;注册&lt;/h3&gt;
&lt;p&gt;点击官网地址，进入后点击右上角的&lt;code&gt;register&lt;/code&gt;进行注册，这一步没啥好说的，正常使用邮箱进行注册就行&lt;/p&gt;
&lt;h2 id="前置步骤"&gt;前置步骤&lt;/h2&gt;
&lt;p&gt;为了提高成功率，请务必按照该步骤进行后再添加域名，否则可能会导致该前缀的域名无法托管到cloudflare（亲身经历，几个喜欢的前缀彻底无法托管，等了好几天都没反应，希望大家不要踩坑）
首先前往cloudflare界面，点击添加域名，随便输入一个域名（后面会删掉）例如&lt;code&gt;ceshi.xyz&lt;/code&gt;,然后和正常添加托管域名一样，选择免费服务，一直到这个页面，记录&lt;em&gt;划线部分&lt;/em&gt;的地址备用，放到方便复制和粘贴的地方，后续需要快速复制粘贴
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/69143f4f3203f7be00f8b7cf.jpg"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="后续步骤"&gt;后续步骤：&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;请注意，为了提高成功率，后续步骤的步骤1-2需要尽可能连续快速完成，最好是一气呵成那种，越快成功率越高，后续失败大概率就是这里太慢了。因此建议先观看后续步骤之后再进行操作&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="1添加域名"&gt;1、添加域名&lt;/h3&gt;
&lt;p&gt;登陆最开始注册的免费域名网站，在网页的这个页面进行域名添加，如果域名重复或者其他问题会在底部进行反馈（一开始没看见，愣了半天）,似乎只有&lt;code&gt;netlib.re&lt;/code&gt;后缀可以托管cloudflare，不过博主并未测试过，因为另一个域名跟这个比起来不怎么样其实
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691440103203f7be00f8b840.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="2更改域名服务器"&gt;2、更改域名服务器&lt;/h3&gt;
&lt;p&gt;添加完域名之后点击你的域名,即红色位置
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691440d33203f7be00f8b8ac.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;然后在该页面找到&lt;code&gt;delegate your domain to different servers&lt;/code&gt;，点击该按钮
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691441a03203f7be00f8b929.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;在这两个位置输入前置步骤中在cloudflare获取的两个链接地址，一行一个，然后点击提交
（注意：若是后续步骤3添加域名到cloudflare时显示的名称服务器和之前获取的不一样就再回来这里修改就可以了，不过现场获取的大概率是一样的，稍微看一眼就行）
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691442003203f7be00f8b960.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="3添加到cloudflare"&gt;3、添加到cloudflare&lt;/h3&gt;
&lt;p&gt;按照博主个人理解，建议在上述更名步骤后等待五到十分钟左右再进行后续步骤，成功率会更高
然后再cloudflare添加你注册的域名，此步骤和前置步骤类似，注意，添加的时候需要选择&lt;strong&gt;手动输入dns记录&lt;/strong&gt;，参考如下图片，&lt;strong&gt;不要&lt;/strong&gt;选择快速扫描
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691442e93203f7be00f8b9e8.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;进入如下页面后，红色框部分没有官方域名就是成功了（就是什么都没有就是成功了，有东西大概就失败了），然后点击继续
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691443be3203f7be00f8ba63.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;在最后的页面显示这个页面就是&lt;strong&gt;成功&lt;/strong&gt;了
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/6914440b3203f7be00f8ba93.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;如果显示这样的话大概率就是 &lt;strong&gt;失败&lt;/strong&gt; 了,这两个的区别就是下面这个显示了官方的域名服务器，虽然已经更改，但是实测几天后都不会显示成功，按照上述步骤大概率不会出现这个样子
如果出现了，这个域名前缀基本就是废了，换一个前缀重试吧
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691444483203f7be00f8bb21.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Cloud Mail-无限邮箱</title><link>https://20030327.xyz/posts/cc554bfe/</link><pubDate>Wed, 12 Nov 2025 15:03:46 +0800</pubDate><guid>https://20030327.xyz/posts/cc554bfe/</guid><description>&lt;p&gt;部署次项目需要一个可以托管在cloudflare的域名，没有的可以参考博主写的免费域名推荐注册一个&lt;/p&gt;
&lt;h2 id="简介"&gt;简介&lt;/h2&gt;
&lt;p&gt;此项目叫&lt;strong&gt;cloud-mail&lt;/strong&gt;，这里附上&lt;a href="https://github.com/maillab/cloud-mail"&gt;原作者github项目地址&lt;/a&gt;
这里同时给出原作者发布的&lt;a href="https://skymail.ink/"&gt;demo&lt;/a&gt;，嫌麻烦的可以直接使用，不过求稳定的话建议还是自己部署一个，因为这个可以设置所有邮件发到指定邮箱，所以使用别人部署的服务的话信息容易泄露，不在乎的当我没说
来一张网站截图,可以自己选是否开放注册、用户多邮箱功能，所有邮箱邮件发送到指定邮箱等功能
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/69144dfc3203f7be00f8d285.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="部署教程"&gt;部署教程&lt;/h2&gt;
&lt;p&gt;这里同时给出原作者的部署文档，写的很清楚，看不懂我写的可以看原作者的，我会把我部署时候遇到的问题写出来，所以看不懂的话也可以回来看看我的
&lt;a href="https://doc.skymail.ink/guide/via-ui"&gt;原作者部署教程地址&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="前置条件"&gt;前置条件&lt;/h3&gt;
&lt;p&gt;此项目需要一个域名才行，可以使用免费域名，只要能托管到cloudflare就可以，免费域名可以看博主发的免费域名推荐文章。
博主更推荐使用付费域名，更稳定，免费域名的话说不定哪天就寄了对吧，到时候邮件丢失没地哭了就，付费域名的话博主推荐 &lt;a href="https://www.spaceship.com/zh/"&gt;spaceship&lt;/a&gt;,这是一家国外服务商，老牌了，主打一个低价，他家的xyz域名很便宜，博主的博客用的就是这个域名，最便宜的时候50块钱可以买十年，博主就一口气买了十年，搜索：&lt;code&gt;任意数字+xyz&lt;/code&gt;,数字最好大于等于5会便宜点，博主这个就是博主的生日，还是挺有寓意的
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/6914500f3203f7be00f8d662.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="创建worker项目"&gt;创建worker项目&lt;/h3&gt;
&lt;p&gt;1、fork该项目到自己的github，&lt;a href="https://github.com/maillab/cloud-mail"&gt;项目地址在此&lt;/a&gt;
2、登陆cloudflare，点击创建worker，导入刚刚fork的储存库
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691450d63203f7be00f8d755.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691451353203f7be00f8d7e4.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;3、然后再下一页设置启动目录，将根目录的路径改成&lt;code&gt;mail-worker&lt;/code&gt;就好了，具体见图片
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691451913203f7be00f8dadc.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;4、直接构建就可以了，构建完成之后会在列表中出现cloudmail项目，点进去就可以看到访问地址了
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/6914521c3203f7be00f8df76.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="设置环境变量"&gt;设置环境变量&lt;/h3&gt;
&lt;p&gt;这一步是最关键的一步，截止目前还无法运行，需要添加环境变量之后才能运行
具体添加地点在这里：
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/6914529d3203f7be00f8e2ad.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;添加以下变量，注意&lt;code&gt;domain&lt;/code&gt;是&lt;code&gt;json&lt;/code&gt;类型的，&lt;strong&gt;管理员账号之后需要你在注册页面注册&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: center"&gt;变量名&lt;/th&gt;
					&lt;th style="text-align: center"&gt;值&lt;/th&gt;
					&lt;th style="text-align: center"&gt;类型&lt;/th&gt;
					&lt;th style="text-align: center"&gt;作用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;&lt;code&gt;domain&lt;/code&gt;&lt;/td&gt;
					&lt;td style="text-align: center"&gt;[&amp;ldquo;你的域名&amp;rdquo;]， 示例：[&amp;ldquo;admin.admin&amp;rdquo;]，多域名 [&amp;ldquo;doamin1&amp;rdquo;,&amp;ldquo;domain2&amp;rdquo;]&lt;/td&gt;
					&lt;td style="text-align: center"&gt;JSON&lt;/td&gt;
					&lt;td style="text-align: center"&gt;网站会使用这个域名作为邮箱域名&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;&lt;code&gt;admin&lt;/code&gt;&lt;/td&gt;
					&lt;td style="text-align: center"&gt;管理员的邮箱，示例：admin@admin.com&lt;/td&gt;
					&lt;td style="text-align: center"&gt;纯文本&lt;/td&gt;
					&lt;td style="text-align: center"&gt;对应的用户变成管理员&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;&lt;code&gt;jwt_secret&lt;/code&gt;&lt;/td&gt;
					&lt;td style="text-align: center"&gt;随便输入一串字符串，示例：Z7fxPq8mVL2bCr9XN1t&lt;/td&gt;
					&lt;td style="text-align: center"&gt;纯文本&lt;/td&gt;
					&lt;td style="text-align: center"&gt;登录身份令牌的安全密钥&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;domain下的域名需要和你后续访问这个网站的域名一样，否则会出问题，建议先绑定号域名在绑定&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;admin邮箱会在你注册该邮箱的时候自动变为超级管理员，拥有绝对的控制权&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;jwt就是一串秘钥，复杂切随意就行，不需要记下来&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;设置完后显示如下：
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691454d53203f7be00f8e941.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="绑定数据库"&gt;绑定数据库&lt;/h3&gt;
&lt;p&gt;1、在cloudflare左侧菜单存储和数据库，创建&lt;code&gt;kv&lt;/code&gt;数据库，数据库名字随意
2、在cloudflare的&lt;code&gt;d1&lt;/code&gt;数据库创建数据库，位置按需选择，名称同样随意
位置如图,这两个都需要按步骤添加，名字稍微记一下，后面绑定需要选择，只有一个的话就当我没说
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/6914567e3203f7be00f8f02d.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;3、回到worker设置界面，绑定刚刚创建的数据库
&lt;code&gt;d1&lt;/code&gt;数据库 变量名为 &lt;code&gt;db&lt;/code&gt;
&lt;code&gt;kv&lt;/code&gt;数据库 变量名为 &lt;code&gt;kv&lt;/code&gt;
绑定好之后就跟下图一样
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691457103203f7be00f8f3dd.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>网页归档工具-Web Archive</title><link>https://20030327.xyz/posts/2cf4839a/</link><pubDate>Wed, 12 Nov 2025 14:04:09 +0800</pubDate><guid>https://20030327.xyz/posts/2cf4839a/</guid><description>&lt;h3 id="简介"&gt;简介&lt;/h3&gt;
&lt;p&gt;这里先介绍一下-Web Archive，它和最著名的服务“Wayback Machine”（时光机）类似，能够抓取和存档网页，并允许用户在过去的不同时间点查看这些网页的快照。这里附上&lt;a href="https://github.com/Ray-D-Song/web-archive"&gt;项目开源地址&lt;/a&gt;先&lt;/p&gt;
&lt;h4 id="这是作者对该项目的介绍"&gt;这是作者对该项目的介绍：&lt;/h4&gt;
&lt;p&gt;Web Archive 是一个网页归档工具，包含以下几个部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;浏览器插件：将网页保存为网页快照，并上传到服务端。&lt;/li&gt;
&lt;li&gt;服务端： 接收浏览器插件上传的快照，并存储在数据库和存储桶中。&lt;/li&gt;
&lt;li&gt;web 客户端： 查询快照并展示。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;服务端基于 Cloudflare Worker 的全套服务，包含 D1 数据库、R2 存储桶&lt;/p&gt;
&lt;h4 id="预览图"&gt;预览图&lt;/h4&gt;
&lt;p&gt;这里附上一张部署完成后的图片：
&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/691426033203f7be00f8313e.png"
 alt="图片预览"
 loading="lazy"
 decoding="async"
 &gt;&lt;figcaption class="post-figure__caption"&gt;图片预览&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/6914269b3203f7be00f8321b.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;整体效果还是不错的，接下来将怎么部署吧&lt;/p&gt;
&lt;h3 id="部署教程"&gt;部署教程&lt;/h3&gt;
&lt;p&gt;以下部署内容参考官方部署文档，可以在github项目地址中找到
使用该教程需要电脑本地安装node环境&lt;/p&gt;
&lt;h4 id="1-下载代码"&gt;1. 下载代码&lt;/h4&gt;
&lt;p&gt;在 项目的&lt;a href="https://github.com/Ray-D-Song/web-archive/releases"&gt;release&lt;/a&gt; 页面下载最新的 service.zip，解压后在根目录执行后续操作（可以cd到该目录或者直接在文件管理器上方地址栏输入cmd后回车）。&lt;/p&gt;
&lt;h4 id="2-登录cloudflare"&gt;2. 登录Cloudflare&lt;/h4&gt;
&lt;p&gt;在该目录的cmd下运行如下命令&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx wrangler login&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;会返回一个登陆链接地址，将他从cmd复制出来后再浏览器打开，然后登陆即可&lt;/p&gt;</description></item><item><title>Aiovtue-ob - 全栈文章发布平台</title><link>https://20030327.xyz/posts/aiovtue-ob/</link><pubDate>Fri, 22 Aug 2025 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/aiovtue-ob/</guid><description>&lt;h1 id="aiovtue-ob---全栈文章发布平台"&gt;Aiovtue-ob - 全栈文章发布平台&lt;/h1&gt;
&lt;h5 id="本项目由aiovtue独立开发"&gt;本项目由==&lt;em&gt;&lt;strong&gt;AIOVTUE&lt;/strong&gt;&lt;/em&gt;==独立开发&lt;/h5&gt;
&lt;p&gt;一个基于Cloudflare的全栈解决方案，让您可以轻松地将Obsidian笔记发布到Web平台，支持文章管理、分享和在线编辑。&lt;/p&gt;
&lt;h3 id="obsidian插件安装教程"&gt;&lt;a href="https://github.com/AIOVTUE/AIOVTUE-OB#5-obsidian%E6%8F%92%E4%BB%B6%E5%AE%89%E8%A3%85"&gt;obsidian插件安装教程&lt;/a&gt;&lt;/h3&gt;
&lt;h2 id="-网页预览"&gt;🌟 网页预览&lt;/h2&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/689f622658cb8da5c8281965.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="-功能特性"&gt;🌟 功能特性&lt;/h2&gt;
&lt;h3 id="后端-cloudflare-workers"&gt;后端 (Cloudflare Workers)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;高性能API&lt;/strong&gt;：基于Cloudflare Workers的无服务器架构&lt;/li&gt;
&lt;li&gt;💾 &lt;strong&gt;R2存储&lt;/strong&gt;：使用Cloudflare R2作为数据库和文件存储&lt;/li&gt;
&lt;li&gt;🔐 &lt;strong&gt;API密钥认证&lt;/strong&gt;：安全的访问控制&lt;/li&gt;
&lt;li&gt;🖼️ &lt;strong&gt;图片上传&lt;/strong&gt;：支持图片文件上传和管理&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;分享链接&lt;/strong&gt;：为文章创建公开分享链接&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;CRUD操作&lt;/strong&gt;：完整的文章增删改查功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="前端-vuejs--cloudflare-pages"&gt;前端 (Vue.js + Cloudflare Pages)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;🎨 &lt;strong&gt;现代UI&lt;/strong&gt;：基于Vue 3和Tailwind CSS的美观界面&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;响应式设计&lt;/strong&gt;：完美适配桌面和移动设备&lt;/li&gt;
&lt;li&gt;✏️ &lt;strong&gt;Markdown编辑器&lt;/strong&gt;：支持实时预览和语法高亮&lt;/li&gt;
&lt;li&gt;🖼️ &lt;strong&gt;图片查看器&lt;/strong&gt;：点击图片全屏查看&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;文章管理&lt;/strong&gt;：直观的文章列表和搜索功能&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;分享功能&lt;/strong&gt;：一键生成和复制分享链接&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="obsidian插件"&gt;Obsidian插件&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;📤 &lt;strong&gt;一键发布&lt;/strong&gt;：直接从Obsidian发布笔记&lt;/li&gt;
&lt;li&gt;🖼️ &lt;strong&gt;自动图片上传&lt;/strong&gt;：本地图片自动上传到服务器&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;分享链接生成&lt;/strong&gt;：为已发布文章创建分享链接&lt;/li&gt;
&lt;li&gt;⚙️ &lt;strong&gt;简单配置&lt;/strong&gt;：只需配置网站地址和API密钥&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-项目结构"&gt;📁 项目结构&lt;/h2&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AIOVTUE-OB/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── backend/ # Cloudflare Workers后端
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── src/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── index.ts # 主要API逻辑
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── wrangler.jsonc # Cloudflare配置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── package.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── frontend/ # Vue.js前端
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── src/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ ├── views/ # 页面组件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ ├── services/ # API服务
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ ├── stores/ # 状态管理
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── router/ # 路由配置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── .env # 环境变量模板
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── .env.local # 本地开发环境变量
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── package.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── obsidian-plugin/ # Obsidian插件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── main.ts # 插件主文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── manifest.json # 插件清单
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── README.md # 插件说明
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── README.md # 项目说明&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h2 id="-快速开始"&gt;🚀 快速开始&lt;/h2&gt;
&lt;h3 id="前置要求"&gt;前置要求&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Node.js 18+&lt;/li&gt;
&lt;li&gt;npm 或 yarn&lt;/li&gt;
&lt;li&gt;Cloudflare账户&lt;/li&gt;
&lt;li&gt;Obsidian（用于插件）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="1-后端部署-cloudflare-workers"&gt;1. 后端部署 (Cloudflare Workers)&lt;/h3&gt;
&lt;h4 id="步骤一修改环境变量-backendwranglerjsonc"&gt;步骤一：修改环境变量 &lt;code&gt;\backend\wrangler.jsonc&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;只需要修改如下内容&lt;/p&gt;</description></item><item><title/><link>https://20030327.xyz/thoughts/2025-02-14-reading/</link><pubDate>Fri, 14 Feb 2025 11:20:00 +0800</pubDate><guid>https://20030327.xyz/thoughts/2025-02-14-reading/</guid><description>&lt;p&gt;重读了一遍《挪威的森林》，还是会在某些段落停很久。书没变，变的是读它的人。&lt;/p&gt;</description></item><item><title>邮箱汇总</title><link>https://20030327.xyz/posts/60c1d46/</link><pubDate>Mon, 29 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/60c1d46/</guid><description>&lt;p&gt;电子邮箱这玩意，用得着的需要挺多的，用不着的那就用不着，管他那，写着，总有人要的&lt;/p&gt;
&lt;h2 id="qq邮箱"&gt;QQ邮箱&lt;/h2&gt;
&lt;p&gt;腾讯旗下的邮箱，用过qq的都知道，这玩意就是你的QQ号，但是吧这玩意纯数字的东西，老被打上底端的标签，不过用过最多知道最广的莫过于这个了&lt;/p&gt;
&lt;p&gt;&lt;a href="https://wx.mail.qq.com/"&gt;wx.mail.qq.com&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="谷歌邮箱"&gt;谷歌邮箱&lt;/h2&gt;
&lt;p&gt;外企上班的好像要求用这个，拿出去很有逼格的邮箱，谷歌大厂的，国际都很出名，在哪里拿出去都显得很正式，但是吧，懂得都懂，谷歌退出中国了，所以嘛，没点特殊手段的话，你是收不到邮件的&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mail.google.com/"&gt;谷歌&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="网易邮箱"&gt;网易邮箱&lt;/h2&gt;
&lt;p&gt;网易这个都不陌生，就是游戏那个网易，他也有邮箱，也是数字的，跟qq差不多，不咋常用，但是在国内邮箱行业算比较靠前的那种&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mail.126.com/"&gt;126网易免费邮-你的专业电子邮局&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="yandex邮箱"&gt;Yandex邮箱&lt;/h2&gt;
&lt;p&gt;这个或许没什么人听过，yandex是德国的一家公司，地位就和中国的百度一样，由于是外国的所以不咋出名在中国，但是不影响人家好用，但是访问起来卡卡的，毕竟外国的嘛&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mail.yandex.com/"&gt;Yandex&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="微软邮箱"&gt;微软邮箱&lt;/h2&gt;
&lt;p&gt;后缀@outlook.com，是上面的最长的了属于是，微软官方的邮箱，全球数一数二的，不过不咋好用，个人觉得而已，毕竟界面太丑了&lt;/p&gt;
&lt;p&gt;&lt;a href="https://outlook.live.com/"&gt;Microsoft Outlook (formerly Hotmail): Free email and calendar | Microsoft 365&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="tutaio"&gt;&lt;a href="http://Tuta.io"&gt;Tuta.io&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这是一个小众邮箱，是一个端到端加密的邮箱，不会发生信息泄露，注重安全的可以考虑这个&lt;/p&gt;
&lt;p&gt;&lt;a href="https://app.tuta.com/"&gt;Turn ON Privacy&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="proton邮箱"&gt;Proton邮箱&lt;/h2&gt;
&lt;p&gt;这也是一个小众邮箱，也是加密的，除了你谁也看不到，同样是安全在意者首选&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mail.proton.me/"&gt;Proton Mail&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mailru"&gt;&lt;a href="http://Mail.ru"&gt;Mail.ru&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;忘记这是哪个的了，但是公司挺大的，可以看看，注册有点麻烦&lt;/p&gt;
&lt;p&gt;&lt;a href="https://e.mail.ru/"&gt;mail&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="自建邮箱"&gt;自建邮箱&lt;/h2&gt;
&lt;p&gt;这个就很多了，可以实现任何后缀，只要你有域名，自定义程度很大的，自己搜吧，有空再写&lt;/p&gt;</description></item><item><title>夸克网盘扩容教程</title><link>https://20030327.xyz/posts/df250554/</link><pubDate>Sun, 28 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/df250554/</guid><description>&lt;p&gt;夸克网盘扩容20T，本教程通过夸克官方推广计划进行扩容，大致步骤为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;申请推广&lt;/li&gt;
&lt;li&gt;填满网盘&lt;/li&gt;
&lt;li&gt;申请扩容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中申请成为推广需要一天审核，申请扩容审核比较快，总体两天就可以完成&lt;/p&gt;
&lt;h1 id="第一步申请推广"&gt;第一步申请推广&lt;/h1&gt;
&lt;h2 id="一下载任推邦app"&gt;一、下载任推邦app&lt;/h2&gt;
&lt;p&gt;注册登陆，或者不下载也行，那就收藏官方网址，然后注册登陆，地址如下&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dt.bd.cn/"&gt;dt.bd.cn&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="二准备工作"&gt;二、准备工作&lt;/h2&gt;
&lt;p&gt;申请之前，准备一下填写需要的信息&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;夸克网盘分享连接&lt;/p&gt;
&lt;p&gt;随便保存一个文件进行分享，复制纯链接就行，最好不要删除，至少申请成功之前不要&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;夸克uid&lt;/p&gt;
&lt;p&gt;用夸克浏览器打开下方链接获取夸克UID/ID，并绑定服务商任推邦（1002）截图备用&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://b.quark.cn/apps/c3qMkYerj/routes/J1bMu5GVq?uc_param_str=dsdnfrpfbivesscpgimibtbmnijblauputogpintnwktprchmt&amp;amp;uc_biz_str=S%3Acustom%7CC%3Atitlebar_hover_2&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;粉丝数截图&lt;/p&gt;</description></item><item><title>夸克网盘加速</title><link>https://20030327.xyz/posts/f788f94a/</link><pubDate>Sat, 27 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/f788f94a/</guid><description>&lt;p&gt;众所不周知，我一般发的都是夸克网盘链接，下载速度有点慢，但是也不是没有办法&lt;/p&gt;
&lt;h3 id="第一步安装软件"&gt;第一步安装软件&lt;/h3&gt;
&lt;p&gt;下载这玩意离不开第三方软件，这次要用到的是bitcomet，老样子，下载链接如下&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pan.quark.cn/s/97dfd2601e94#/list/share"&gt;夸克网盘分享&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这时候你或许会问了，我要的夸克网盘下载加速教程你给我发夸克网盘的文件，那我怎么下载夸克网盘加速下载的文件，这就不是我的问题啦，或许你可先下载夸克网盘下载加速软件在回来下载夸克网盘下载加速文件，嘻嘻&lt;/p&gt;
&lt;h3 id="第二步安装插件"&gt;第二步安装插件&lt;/h3&gt;
&lt;p&gt;跟上一个其实是一样的，连接如下&lt;/p&gt;
&lt;p&gt;&lt;a href="https://greasyfork.org/zh-CN/scripts/449291-linkswift"&gt;LinkSwift&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载配置也是需要tampermonkey的，不会的百度&lt;/p&gt;
&lt;p&gt;如何就是在下载截面点击下载助手&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://r2tc.20030327.xyz/file/%E5%8D%9A%E5%AE%A2/%E6%96%87%E7%AB%A0/cuOU2PCQ.png"
 alt="1740577827907.png"
 loading="lazy"
 decoding="async"
 &gt;&lt;figcaption class="post-figure__caption"&gt;1740577827907.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;点击BC下载，获取下载链接之后复制链接，然后打开bitcoment点击磁链，将刚刚的下载链接复制进去点击下载就好了，下载速度也是很快的，大概有10mb左右，很可以了&lt;/p&gt;</description></item><item><title>阿里云盘加速</title><link>https://20030327.xyz/posts/3d2f1781/</link><pubDate>Fri, 26 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/3d2f1781/</guid><description>&lt;p&gt;众所周知，网盘这玩意没有一个不限速的，不是限速就是在限速的路上，，阿里云盘这玩意早些说永不限速，emmm，现在速度依旧感人，之所以在用是因为容量比较大，不过没事，今天来一个加速的办法&lt;/p&gt;
&lt;h3 id="方法一"&gt;方法一&lt;/h3&gt;
&lt;p&gt;也是最推荐的，毕竟其他的失灵了似乎&lt;/p&gt;
&lt;p&gt;准备工作，先下载软件，小白羊云盘，地址如下&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pan.quark.cn/s/8fe18fd707de"&gt;夸克网盘分享&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一如既往，下载安装，然后登陆你的账号，选择多线程下载，把同时下载个数拉高，就可以几个一起下，总体速度比官方快不少，属于是能用吧&lt;/p&gt;
&lt;h3 id="方法二"&gt;方法二&lt;/h3&gt;
&lt;p&gt;首先是准备工作，下载下载软件，那当然是IDM，什么在哪里下载？，好吧&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pan.quark.cn/s/fc3847bf6fab"&gt;夸克网盘分享&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;什么，你说夸克网盘下载慢？那好吧，你可以出去看看我那个夸克网盘下载加速的文章，你问我为什么不用下载快的网盘分析，那当然还是因为容量大，嘿嘿&lt;/p&gt;
&lt;p&gt;下载过程略过，然后就是解压，安装过程就是点击绿化如何就好啦，在显示一栏可以隐藏托盘图标，选项立面的下载可以更改保存位置，默认在下载文件夹，改不改都行&lt;/p&gt;
&lt;p&gt;要是提示更新的话可以如下设置，没有不管&lt;/p&gt;
&lt;p&gt;第一步：打开&lt;a href="https://so.csdn.net/so/search?q=%E6%B3%A8%E5%86%8C%E8%A1%A8%E7%BC%96%E8%BE%91%E5%99%A8&amp;amp;spm=1001.2101.3001.7020"&gt;注册表编辑器&lt;/a&gt;。按下 &lt;code&gt;Win + R&lt;/code&gt; 组合键，打开运行&lt;a href="https://so.csdn.net/so/search?q=%E5%AF%B9%E8%AF%9D%E6%A1%86&amp;amp;spm=1001.2101.3001.7020"&gt;对话框&lt;/a&gt;。在运行框中输入 “regedit” 并点击 “确定” ，打开注册表编辑器&lt;/p&gt;
&lt;p&gt;第二步：定位到 LstCheck 项目。在注册表编辑器中，&lt;a href="https://so.csdn.net/so/search?q=%E5%AF%BC%E8%88%AA%E5%88%B0&amp;amp;spm=1001.2101.3001.7020"&gt;导航到&lt;/a&gt;路径：&lt;code&gt;计算机\\HKEY_CURRENT_USER\\SOFTWARE\\DownloadManager&lt;/code&gt;，找到 “LstCheck” 项（这是控制 IDM 自动更新的注册表项），双击该项并将数值数据改为 0 即可&lt;/p&gt;
&lt;p&gt;就像这样：&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/67befe15d0e0a243d406170a.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;简单，这样第一步就完成了，然后是获取插件，获取阿里云盘下载链接，地址如下：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://greasyfork.org/zh-CN/scripts/449291-linkswift"&gt;LinkSwift&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;啊对，要下载这个玩意，你得是电脑浏览器，并且是下载了tampermonkey这个插件之后，如果你不知道什么是tampermonkey的话，emmmm，百度please&lt;/p&gt;
&lt;p&gt;安装完了之后应该是这个样子&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic1.imgdb.cn/item/67beffd3d0e0a243d4061782.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;在上面会有一个这个玩意，当你需要下载文件的时候，选中一个，缺点就是以此只能下载一个，选中之后点击下载助手，然后点api下载，理论上来说你直接点击下载链接就可以唤起IDM，但是吧总有失败的情况，你可以右键复制连接，然后打开IDM，点击新建任务，复制进去连接，点击下载就可以了&lt;/p&gt;
&lt;p&gt;不过这玩意得看浏览器插件管不管用，看作者更新吧，找那种获取网盘连接的插件就行，理论上都可以，但是最近似乎不太行了&lt;/p&gt;</description></item><item><title>网盘汇总</title><link>https://20030327.xyz/posts/5a5f8961/</link><pubDate>Thu, 25 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/5a5f8961/</guid><description>&lt;p&gt;网盘这玩意在精不在多，推荐几个容量大的常用，小众小容量的备用&lt;/p&gt;
&lt;h3 id="百度网盘"&gt;百度网盘&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://pan.baidu.com/"&gt;百度网盘-免费云盘丨文件共享软件丨超大容量丨存储安全&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;百度网盘这玩意懂得都懂，空间大速度低资源多，分享方便下载困难，最开始的用户注册有3T，后来变成2T，到现在新用户注册只有100G了，emmm问题不大，淘宝上有卖号的，可以买一个容量大的换绑也不是很贵。主要是下载，几百kb，不过淘宝一天会员急用还行，几块钱&lt;/p&gt;
&lt;h3 id="阿里云盘"&gt;阿里云盘&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.aliyundrive.com/"&gt;阿里云盘 - 备份无忧 整理有序·阿里巴巴集团出品&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;阿里云盘这玩意，前几年刚出的时候可以领很多永久容量，现在嘛和百度差不多了，就100G，但是下载比百度快一点，通过一些第三方下载和插件的话，可以下载挺快的，说是说不限速，到现在其实速度还是慢了很多，好在还能接受，数据安全的话，和百度有的一拼吧，注册的早的容量也还行&lt;/p&gt;
&lt;h3 id="夸克网盘"&gt;夸克网盘&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://pan.quark.cn/"&gt;网盘移动端入口&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;夸克网盘，用夸克浏览器的有福了，内置网盘，属于是继阿里和百度之外比较可靠的网盘了，也是阿里搞得，不知道为啥搞两个，容量的话，新用户10G，少得很，但是新用户做任务似乎有一个月1T容量，没啥用就是说，除此之外，通过一些推广设置活动什么的，可以扩容20T甚至80T，但是得推广分享，而且容量只有三个月到期就得在续期，emmmm，有很多大文件可以搞一个1存一下，日常的话，有个vip包年，之前看是十块钱，3T空间，挺不错的，就是下载速度没啥提升，但是夸克下载可以通过浏览器插件提升，属于是还行吧&lt;/p&gt;
&lt;h3 id="中国移动云盘"&gt;中国移动云盘&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://yun.139.com/"&gt;yun.139.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个嘛，就是中国移动出的云盘，可信可靠，速度快，资源也挺多，缺点吗当然是容量不够，大概200G，其他的手机号也能注册，没必要移动，但是有一说一移动卡福利多一点，例如浙江移动就可以在中国移动云盘app内部活动页面领取每月1T空间，属于是偏爱了，除了云盘界面丑了点，广告多了点之外的话，想不出什么缺点&lt;/p&gt;
&lt;h3 id="115网盘"&gt;115网盘&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://115.com/"&gt;115科技官网_首页_115，一生相伴&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这玩意可是个好东西，但是容量注册了之后会发现并不大，但是在咸鱼等地方可以十几块买一个十几个T的账号，限速这玩意很迷惑，在某些地方不限速，有时候吧下载就有些慢，不过挡不住她容量大，挺好的&lt;/p&gt;
&lt;h3 id="123云盘"&gt;123云盘&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.123pan.com/?notoken=1"&gt;123云盘&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个嘛，经常鼓捣的人肯定知道，不限速，容量大，资源也还行，缺点就是，小作坊，不知道能撑多久，云盘广告多，不过这也无可厚非，毕竟人机不要钱，新用户2T，属于是非常不错了，很多博主都喜欢用这个分享文件，之前是可以免客户端下载的，最近因为防止滥用，被限制了，但是安卓客户端下载没有限制，其实浏览器扩展也可以解决，emmm，理解，但是，嘿嘿&lt;/p&gt;
&lt;h3 id="uc网盘"&gt;UC网盘&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://drive.uc.cn/"&gt;UC 网盘&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;UC浏览器都用过吧，也是浏览器内置网盘，新用户10G空间，可以通过特殊手段扩容到1T，新用户可以多关注官方活动，或者一些博主，都有发扩容的链接，是永久的，不过不能重复扩，速度也是不限制的，至少最近不限制，速度挺快的，资源就少了点，不过，能用就行&lt;/p&gt;
&lt;h3 id="迅雷云盘"&gt;迅雷云盘&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://pan.xunlei.com/"&gt;迅雷云盘&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;迅雷这玩意都听过，他家也出云盘了，新老用户都2T，速度有所限制，不过依旧能打，部分资源比较慢而已，偶尔用用还行，注册了再说呗，不用白不用&lt;/p&gt;
&lt;h3 id="蓝奏云"&gt;蓝奏云&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://up.woozooo.com/"&gt;蓝奏·云存储&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这可是个好东西，不限量空间，不限速下载，资源超级丰富，老牌储存，也是很不错了，就是嘛她的单文件限制在100M，但是依旧好用，很多博主用它分析文件大受好评，你找文件的时候，相信我，你最希望遇到的链接之一，不建议存重要资料，分享文件和备份些小东西挺不错&lt;/p&gt;
&lt;h3 id="118网盘"&gt;118网盘&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.118pan.com/"&gt;118&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;和蓝奏云差不多，无限空间，不限速下载，限制单文件大小，似乎比蓝奏云大一点，200M，用的人不多，知道的也不多，不过不影响她好用&lt;/p&gt;
&lt;h3 id="onedrive"&gt;Onedrive&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://onedrive.live.com/"&gt;Personal Cloud Storage – Microsoft OneDrive&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个有电脑的一般都听过，不过可能不知道是干嘛的，这是微软自带的网盘，初始容量5G，可以在淘宝扩容到15G，不限速，就是容量小了点，很多软件接入用来备份的，例如obsidian什么的，管他那，注册呗&lt;/p&gt;
&lt;h3 id="谷歌云盘"&gt;谷歌云盘&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://drive.google.com/"&gt;谷歌&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;对，谷歌，15G，理论上不限速，但是你访问不了怪谁，谷歌浏览器备份用，很多软件也会接入，属于是特殊人群必备了&lt;/p&gt;
&lt;h3 id="infinicloud"&gt;InfiniCloud&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://ogi.teracloud.jp/"&gt;infi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一个日本的网盘，好像是15G,可以通过邀请码扩容，之前官方活动也可以扩容，我现在有25G，主要是支持webdav，你可能不知道这是啥，但是知道的就知道这玩意很有用，有一点注意的是，几个月登陆或者使用一下，太久不登录或者使用会被回收账号，经常使用webdav的可以注册&lt;/p&gt;
&lt;h3 id="坚果云"&gt;坚果云&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.jianguoyun.com/"&gt;Nutstore Official Website|Enterprise Network Disk|Team Network Disk|Personal Cloud Disk|Synchronous Cloud Disk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;坚果云，国内唯一一个支持webdav的云盘，但是吧，这玩意很感人，每月上传流量1G，下载流量5G.好像是，很少，主要用来同步文件，emmmm，除了比上面那个靠谱一点不删账号，此外的话，不是什么很重要的资料同步的话，选上面那个，这个太抠了&lt;/p&gt;
&lt;h3 id="文叔叔"&gt;文叔叔&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.wenshushu.cn/"&gt;文叔叔 - 传文件，找文叔叔（永不限速）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;免费40G空间，是用来发送接收文件的，发送文件似乎不占用空间，但是会删除，有时效，不限速，偶尔用用&lt;/p&gt;
&lt;h3 id="pikpak"&gt;pikpak&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://mypikpak.com/drive/all"&gt;mypikpak.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;pikpak云盘，初始容量8G，通过官方分析活动可以获得几天10T空间的会员，主要是这玩意磁力下载很厉害，什么都能存，但是这可能没什么，主要的是，她不限速，并且不限制敏感资源，也就是懂得都懂，但是容量用超了就限速了，哦对了，外国的，emmm，用的时候不用翻墙，但是嘿嘿，锁国区，不科学上网无法登陆&lt;/p&gt;</description></item><item><title>IPV6服务器</title><link>https://20030327.xyz/posts/bb9ce498/</link><pubDate>Wed, 24 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/bb9ce498/</guid><description>&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dc00b1d9c307b7e9b946ba.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;对于一个爱折腾的人来说，一个服务器的诱惑还是不小的，但是动辄几十上百大千的服务器，实在是力不从心，最近发现有纯ipv6服务器的存在，这东西的优点就是价格低，坏处也不少，例如部署麻烦，容易跑路什么的，但是这价格跑路其实也不是很心疼，附上一个自用的&lt;a href="https://idc.17ir.cn/"&gt;服务器购买地址&lt;/a&gt;，最便宜的只要十五块一年，最贵的也才五六十一年，我选了个折中的三十块一年，储存空间什么的小了点，但是也有办法解决，下文我就当你们都有了&lt;/p&gt;
&lt;h3 id="获取ipv6地址"&gt;获取ipv6地址&lt;/h3&gt;
&lt;p&gt;这个设定很无语，买了之后他不给地址，只给一个后台和穿透的域名，使用得自己获取，登上后台终端之后（ ubuntu 适用，其他的自行尝试），依次输入&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install net-tools
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ifconfig&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;如何你就会看到一大堆网口的ip地址，找到我们要的ipv6，记下来，输入到ssh终端就可以远程访问了，浏览器访问ipv6的格式是这样的&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://[ipv6地址]:端口&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h3 id="安装ddns-go"&gt;安装ddns-go&lt;/h3&gt;
&lt;p&gt;有了ipv6地址，接下来需要设置ddns，否则ip会变，前往&lt;a href="https://github.com/jeessy2/ddns-go"&gt;ddns-go官网&lt;/a&gt;下载最新版本，然后解压上传到服务器（自己建一个文件夹），然后赋权&lt;/p&gt;</description></item><item><title>免费域名</title><link>https://20030327.xyz/posts/658cf4e8/</link><pubDate>Tue, 23 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/658cf4e8/</guid><description>&lt;h6 id="想一个人有多想念那又是文字失效瞬间"&gt;想一个人有多想念，那又是文字失效瞬间&lt;/h6&gt;
&lt;p&gt;搭建网站什么的都需要一个域名，不想付费或者只用一点没必要付费，那免费域名肯定得安排上啊，下面是我自己在网上找到的一些免费域名方案，我自己只在两个地方成功过，其他地方不是绑卡就是申请失败，还有些不支持托管cloudflare，很无奈。&lt;/p&gt;
&lt;h3 id="uskg"&gt;us.kg&lt;/h3&gt;
&lt;p&gt;这个注册稍微麻烦，但是注册完申请很快，一个账号免费三个域名，亲测很好用，可以托管cloudflare（目前主力免费域名）  &lt;/p&gt;
&lt;h4 id="注册"&gt;注册&lt;/h4&gt;
&lt;p&gt;首先到&lt;a href="https://register.us.kg/"&gt;UsKg官网&lt;/a&gt;,前往注册界面，然后填写自己的邮箱，姓名，地址，电话，当然，除了邮箱之外，其他的都可以用&lt;a href="https://www.meiguodizhi.com/"&gt;随机美国地址生成器&lt;/a&gt;          &lt;/p&gt;
&lt;p&gt;提交之后会发邮件确认，到邮箱确认以下，然后登陆，会提示你验证kyc，所谓kyc，差不多就是身份验证，但是，好玩的来了，他这个验证很水，我之前随便上传图片就成功了，但是后来不太行，我在网上学了个新办法，实测有用，你可以新建一个文档，然后把自己虚拟出来的信息写上去，然后截图上传，然后提交，诶！成功了，很玄学，使用多试试&lt;/p&gt;
&lt;p&gt;like this:&lt;/p&gt;
&lt;h4 id="添加"&gt;添加&lt;/h4&gt;
&lt;p&gt;然后就可以前往domains界面创建自己的域名，创建的时候会提示输入ns，这个你可以现在写也可以申请下来了，托管到cloudflare、的时候写。&lt;/p&gt;
&lt;p&gt;托管到cloudflare就是点击添加网站&lt;/p&gt;
&lt;p&gt;写上你刚刚申请的域名，然后下一步，会给你两个ns值，like this：&lt;/p&gt;
&lt;p&gt;把这俩写到刚刚让你填写ns的地方就好啦，开始没写的话，后面也可以在domains界面点进域名添加的，可能会有多个空，多的空着，没事，过一会cloudflare就会打v提示你完成啦。&lt;/p&gt;
&lt;h3 id="cloudnschbe"&gt;Cloudns.ch/be&lt;/h3&gt;
&lt;p&gt;这是cloudns的免费域名，很长，但是奈何他免费呐，虽然可以托管cloudflare，但是有点小瑕疵，不过也够用了。&lt;/p&gt;
&lt;p&gt;首先前往&lt;a href="https://www.cloudns.net/"&gt;cloudns官网&lt;/a&gt;,先注册账号，网页有中文，注册很顺利的，自行注册，然后登陆上去先点击创建区域&lt;/p&gt;
&lt;p&gt;然后点免费区域&lt;/p&gt;
&lt;p&gt;然后在这里自己选一个喜欢的域名，点击提交就好啦&lt;/p&gt;
&lt;p&gt;下面那个框框不用管，如果注册失败他说什么：免费域名过多什么什么的，就是你的ip地址不行，我开始的时候一直不行，换了好几个ip都不行，建议魔法，而且是各种魔法，慢慢试，我也是突然发现某个节点可以，不难总之。我就当你们都成功了。&lt;/p&gt;
&lt;p&gt;如何点击刚刚创建的域名进去，我们要解析到cloudflare，将这里下面本来存在的几个解析全部删了&lt;/p&gt;
&lt;p&gt;然后去cloudflare添加刚刚的域名获取ns，然后回到cloudns解析这里，添加ns解析，解析到cloudflare，主机名空着，如何提交就像，等一会就能看到cloudflare提示成功了  &lt;/p&gt;
&lt;p&gt;除了这个，ssl证书需要单独解析（上面那个不用，就cloudns麻烦），前往cloudflare，选择刚刚添加的域名，点进去，然后点击ssl，边缘证书&lt;/p&gt;
&lt;p&gt;把下面两个解析添加到cloudns，添加主机名的时候记得不要写红框立面的内容，因为后边写了，如何选择txt，内容写相应的内容，如何保存，就搞定啦，到这里这个域名就成功的托管到cloudflare啦&lt;/p&gt;
&lt;p&gt;你以为完了吗，怎么可能，我都说他可麻烦，当然还有了，你使用的时候，在cloudflare上直接解析的话，可能没啥用，要用的话，你得在cloudns同步添加解析，不过是解析到cloudflare的ns，例如：&lt;/p&gt;
&lt;p&gt;我要托管ipv4-1.1.1.1到域名a.example.cloudns.be,我需要先在cloudflare新建解析，类型A，地址1.1.1.1，名称a，如何去cloudns添加两个解析&lt;/p&gt;
&lt;p&gt;类型ns，主机名a(和cloudflare名称同步)地址写cloudflare的ns值，也就是上面托管到cloudflare的值，如何等待部署就好啦，cloudns比较慢，你得多等会，几分钟吧，如何就可以访问了。还有一点，cloudflare的pages和workers的域名似乎无法添加cloudns的，uskg不受影响，他不能识别，很无奈了属于是，目前似乎也就能解析ip地址，说是可以cname，但是基本无法识别，导致失败，很无奈。&lt;/p&gt;
&lt;p&gt;诶！看到这里，你是不是想问，cloudns也可以解析，为什么还费力不讨好托管到cloudflare呐，那当然是应为托管到cloudflare之后可以白嫖他的cdn，还有他的回源和重定向等一系列服务，总之你比在cloudns原本的功能只多不少。&lt;/p&gt;
&lt;h3 id="euorg"&gt;eu.org&lt;/h3&gt;
&lt;p&gt;老样子，&lt;a href="https://nic.eu.org/"&gt;官网走起&lt;/a&gt;,然后点击注册，信息什么都，老样子，瞎编就好，上边那个生成器很不错，然后把这个Private (not shown in the public Whois)勾上，不然听说会被发现，你的域名就没咯，我也是听说，布吉岛，但是万一嘞。&lt;/p&gt;
&lt;p&gt;记得邮箱写自己的，注册完之后他会发你一个账号，大概长XXXX-FREE这样，然后根据你的密码登陆几好啦，然后你就会看到：&lt;/p&gt;
&lt;p&gt;然后点这个new domain注册域名&lt;/p&gt;
&lt;p&gt;这个地方，写你的域名，后缀是eu.org，或者你可以点list找个你喜欢的，然后加上前缀，例如example.eu.org&lt;/p&gt;
&lt;p&gt;这个地方，也就是最下面找个，选择第一个，然后添加ns记录（这个还要我解释吗，好吧，去cloudflare添加你的example.eu.org域名，获取俩ns，写到第一个和第二个框里）ip不用管，中间的信息自动写好的，你有补充就写，然后直接提交，会出现一个代码页面，这是正常的，看不懂请翻译，要是域名重复会有警告，一切顺利的话会提示成功，然后就等待你的邮箱收到成功通知了，不过，你猜我为什么没成功，他这个验证是人工的，不知道要多久，最近好像都没啥动静，好无奈啊，慢慢等呗，建议搞一个放着，然后用uskg，万一呐，这个要是下来了，似乎永久，而且很稳定，当然uskg那个也很稳定，一年一续期，永久免费，也还行，cloudns嘛，玩玩就好啦，要什么自行车。  &lt;/p&gt;
&lt;h3 id="其他"&gt;其他&lt;/h3&gt;
&lt;p&gt;我之前也搜罗了一些不能托管到cloudflare的，能用是能用，但是界面丑的很，我是不喜欢用的，我就不写了有兴趣自己看看吧，给个地址：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sitelutions.com/"&gt;rr.nu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://freedns.afraid.org/"&gt;freedns&lt;/a&gt;  &lt;/p&gt;
&lt;p&gt;好像还有别的，但是我都没申请下来的话，我当然就不记得了，我搜罗的好东西都在这啦。&lt;/p&gt;</description></item><item><title>个人博客-Rin</title><link>https://20030327.xyz/posts/62cf18f0/</link><pubDate>Mon, 22 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/62cf18f0/</guid><description>&lt;h6 id="永远年轻永远热泪盈眶"&gt;永远年轻，永远热泪盈眶&lt;/h6&gt;
&lt;p&gt;预览：&lt;a href="https://20030327.xyz"&gt;AIOVTUE&amp;rsquo;S blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本博客根据开源博客&lt;a href="https://github.com/openRin/Rin"&gt;&lt;strong&gt;Rin&lt;/strong&gt;&lt;/a&gt;部署  &lt;/p&gt;
&lt;p&gt; Rin 是一个基于 Cloudflare Pages + Workers + D1 + R2 全家桶的博客，无需服务器无需备案，只需要一个解析到 Cloudflare 的域名即可部署  &lt;/p&gt;
&lt;p&gt;我选他的原因也很明显，他可以实现动态博客，不用像一般的静态博客一样，需要本地编译发表文章，他可以直接线上发布，很好用！（你说为什么不直接用动态博客，没有服务器呗），缺点就是，部署稍微麻烦点这里稍微介绍一下难点和大体部署思路：  &lt;/p&gt;
&lt;h3 id="后端"&gt;后端&lt;/h3&gt;
&lt;p&gt;部署需要一系列变量，都可以在github设置，很方便  &lt;/p&gt;
&lt;p&gt;在自己 fork 的仓库中 &amp;gt; Settings &amp;gt; Secrets and Variables &amp;gt; Actions &amp;gt; Repository &lt;strong&gt;secrets&lt;/strong&gt; 点击 New repository secret ：  &lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CLOUDFLARE_ACCOUNT_ID=&amp;lt;你的用户ID&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CLOUDFLARE_API_TOKEN=&amp;lt;你的令牌&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RIN_GITHUB_CLIENT_ID=&amp;lt;你的GithubClientID&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RIN_GITHUB_CLIENT_SECRET=&amp;lt;你的GithubClientSecret&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;JWT_SECRET=&amp;lt;JWT 认证所需密钥，可为常规格式的任意密码&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;S3_ACCESS_KEY_ID=&amp;lt;你的S3AccessKeyID&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;S3_SECRET_ACCESS_KEY=&amp;lt;你的S3SecretAccessKey&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;同时你可以在Actions secrets and variables的 &lt;strong&gt;Variables&lt;/strong&gt; 中创建以下变量:&lt;/p&gt;</description></item><item><title>Makedown语法</title><link>https://20030327.xyz/posts/ff972c56/</link><pubDate>Sun, 21 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/ff972c56/</guid><description>&lt;h6 id="来了爱了给了她一颗星星走了"&gt;来了，爱了，给了她一颗星星，走了&lt;/h6&gt;
&lt;h3 id="标题语法"&gt;标题语法&lt;/h3&gt;
&lt;p&gt;|Markdown语法|HTML|&lt;/p&gt;
&lt;p&gt;|&amp;mdash;|&amp;mdash;|&lt;/p&gt;
&lt;p&gt;|&lt;code&gt;# 一级&lt;/code&gt;|&lt;code&gt;&amp;lt;h1&amp;gt;一级&amp;lt;/h1&amp;gt;&lt;/code&gt;|&lt;/p&gt;
&lt;p&gt;|&amp;hellip;|&amp;hellip;|&lt;/p&gt;
&lt;p&gt;|&lt;code&gt;###### 六级&lt;/code&gt;|&lt;code&gt;&amp;lt;h6&amp;gt;六级&amp;lt;/h6&amp;gt;&lt;/code&gt;|&lt;/p&gt;
&lt;h3 id="段落语法"&gt;段落语法&lt;/h3&gt;
&lt;p&gt;要创建段落，请使用空白行将一行或多行文本进行分隔  &lt;/p&gt;
&lt;p&gt;不要用空格（spaces）或制表符（ tabs）缩进段落&lt;/p&gt;
&lt;h3 id="换行语法"&gt;换行语法&lt;/h3&gt;
&lt;p&gt;Markdown:&lt;/p&gt;
&lt;p&gt;在一行的末尾添加两个或多个空格，然后按回车键,即可创建一个换行  &lt;/p&gt;
&lt;p&gt;HTML：&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;p&amp;gt;内容&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h3 id="强调语法"&gt;强调语法&lt;/h3&gt;
&lt;h4 id="粗体"&gt;粗体：&lt;/h4&gt;
&lt;p&gt;Markdown：&lt;/p&gt;</description></item><item><title>群辉相册</title><link>https://20030327.xyz/posts/e62522a2/</link><pubDate>Sat, 20 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/e62522a2/</guid><description>&lt;h6 id="每个人都是生命中的过路人而我也在旅途中"&gt;每个人都是生命中的过路人，而我也在旅途中&lt;/h6&gt;
&lt;h4 id="一黑群晖synology-photos人脸识别补丁"&gt;一、黑群晖Synology Photos人脸识别补丁&lt;/h4&gt;
&lt;p&gt;1、先安装synology photos 套件&lt;/p&gt;
&lt;p&gt;2、安装synology photos后先进入套件中心，停用synology photos套件&lt;/p&gt;
&lt;p&gt;3、打开ssh软件，通过ssh进入，输入以下命令&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo -i&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;synopkgctl stop SynologyPhotos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget http://code.imnks.com/face/PatchELFSharp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x PatchELFSharp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# support face and concept
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./PatchELFSharp “/var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-platform.so.1.0” “_ZN9synophoto6plugin8platform20IsSupportedIENetworkEv” “B8 00 00 00 00 C3”&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# force to support concept
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./PatchELFSharp “/var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-platform.so.1.0” “_ZN9synophoto6plugin8platform18IsSupportedConceptEv” “B8 01 00 00 00 C3”&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# force no Gpu
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./PatchELFSharp “/var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-platform.so.1.0” “_ZN9synophoto6plugin8platform23IsSupportedIENetworkGpuEv” “B8 00 00 00 00 C3”&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget http://code.imnks.com/face/1.6.1-0641/libsynophoto-plugin-platform.so.1.0 -O /var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-platform.so.1.0 &amp;amp;&amp;amp; synopkgctl stop SynologyPhotos &amp;amp;&amp;amp; synopkgctl start SynologyPhotos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;synopkgctl start SynologyPhotos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;4、SSH输入以上代码后，重新启动synology photos套件&lt;/p&gt;</description></item><item><title>玩客云刷机</title><link>https://20030327.xyz/posts/37540b40/</link><pubDate>Fri, 19 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/37540b40/</guid><description>&lt;h6 id="你配得上世间所有的美好我将携漫天星辰向你涌来"&gt;你配得上世间所有的美好，我将携漫天星辰向你涌来&lt;/h6&gt;
&lt;h4 id="一固件下载"&gt;一、&lt;a href="https://github.com/hzyitc/armbian-onecloud"&gt;固件下载&lt;/a&gt;&lt;/h4&gt;
&lt;h4 id="固件版本说明"&gt;固件版本说明&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;current（推荐）：稳定版，一般指代当前官方推荐的稳定版本，经过了充分的测试和优化，确保兼容性和稳定性较高&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Edge：开发版，一般是让高级用户或开发者提前体验新功能，并提供反馈，包含了最新的功能更新或者实验性特性，但相对稳定性可能会较低，可能存在未知的问题&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;带“burn”（推荐）：在Armbian或类似的基于Linux的嵌入式设备固件发布中，带有“burn”字样的文件通常是指直接烧录（Flash）用的镜像文件。这类文件往往是针对特定硬件设计的，可以直接通过SD卡、USB闪存或其他方式一次性将整个操作系统及配置写入&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设备内部的存储介质（如eMMC、NAND Flash等）。它们通常是经过特殊处理的二进制映像文件，包含了引导加载程序、内核以及根文件系统等必要的系统组件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;带“minimal”（按需）：有&amp;quot;minimal&amp;quot;字样的刷机包通常指的是一个精简版或最小化安装版本的固件。这种固件镜像包含了运行操作系统和特定应用所必需的最基础软件包，去除了不必要的服务、图形界面和其他非核心组件&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="二刷机方法"&gt;二、刷机方法&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;打开USB_Burning_Tool软件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;左上角文件&amp;gt;导入烧录包，选择下载的固件，点击开始&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;双公头USB数据线，一头插靠近HDMI接口USB，一头电脑USB&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;短接刷机点通电到3%再松手，直到刷机完成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;刷机完成后立马点击停止后断电，拔下数据线&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用户名root，密码1234，登录后提示需要更改密root的初始密码，自行设置，更改完密码后，会提示创建账户，我们直接Ctrl+C取消&lt;/p&gt;
&lt;h4 id="三时区设置"&gt;三、时区设置&lt;/h4&gt;
&lt;p&gt;设置时区&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;查看时间&lt;/p&gt;</description></item><item><title>Linux换源</title><link>https://20030327.xyz/posts/18f26aa6/</link><pubDate>Thu, 18 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/18f26aa6/</guid><description>&lt;h6 id="总要热爱点什么不能被这无聊的生活吞没"&gt;总要热爱点什么，不能被这无聊的生活吞没&lt;/h6&gt;
&lt;h4 id="一一键更换国内源"&gt;一、一键更换国内源&lt;/h4&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash &amp;lt;(curl -sSL https://linuxmirrors.cn/main.sh)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h4 id="二armbian"&gt;二、armbian：&lt;/h4&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim /etc/apt/sources.list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h5 id="清华"&gt;清华&lt;/h5&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.tuna.tsinghua.edu.cn/armbian buster main utils
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src https://mirrors.tuna.tsinghua.edu.cn/armbian buster main utils
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main non-free contrib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main non-free contrib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main non-free contrib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main non-free contrib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main non-free contrib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main non-free contrib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://security.debian.org/ buster/updates main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://security.debian.org/ buster/updates main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h5 id="阿里"&gt;阿里&lt;/h5&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.aliyun.com/debian/ bullseye main contrib non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#deb-src http://mirrors.aliyun.com/debian/ bullseye main contrib non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.aliyun.com/debian/ bullseye-backports main contrib non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main contrib non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.aliyun.com/debian-security/ bullseye-security main contrib non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main contrib non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h4 id="三ubuntu"&gt;三、ubuntu：&lt;/h4&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim /etc/apt/sources.list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;########   Ubuntu22.04LTS 清华镜像源   ###############
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 默认注释了源码镜像以提高 apt update 速度，如有需要可自行取消注释
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 预发布软件源，不建议启用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;########   Ubuntu22.04 阿里云镜像源   ###############
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;########   Ubuntu22.04 中科大镜像源   ###############
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;########   Ubuntu22.04 网易163镜像源   ###############
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt upgrade&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;</description></item><item><title>Docker换源</title><link>https://20030327.xyz/posts/a1c5c39f/</link><pubDate>Wed, 17 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/a1c5c39f/</guid><description>&lt;h6 id="一点星光在心上就能反射出太阳"&gt; 一点星光，在心上就能反射出太阳&lt;/h6&gt;
&lt;h4 id="一snap版docker"&gt;一、snap版docker&lt;/h4&gt;
&lt;p&gt;修改：&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim /var/snap/docker/current/config/daemon.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h4 id="二apt版docker"&gt;二、apt版docker&lt;/h4&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim /etc/docker/daemon.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;docker镜像：&lt;/p&gt;</description></item><item><title>小雅</title><link>https://20030327.xyz/posts/fbe24aba/</link><pubDate>Tue, 16 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/fbe24aba/</guid><description>&lt;h6 id="梦如同黎明的泡沫一样逐渐消失"&gt;梦如同黎明的泡沫一样逐渐消失&lt;/h6&gt;
&lt;h4 id="一阿里云盘token获取"&gt;一、&lt;a href="https://alist.nn.ci/zh/guide/drivers/aliyundrive.html#%E5%88%B7%E6%96%B0%E4%BB%A4%E7%89%8C"&gt;阿里云盘token获取&lt;/a&gt;&lt;/h4&gt;
&lt;h4 id="二阿里云盘opentoken获取"&gt;二、&lt;a href="https://alist.nn.ci/tool/aliyundrive/request.html"&gt;阿里云盘opentoken获取&lt;/a&gt;&lt;/h4&gt;
&lt;h4 id="三一键安装"&gt;三、一键安装：&lt;/h4&gt;
&lt;p&gt;一键安装和更新容器，标准模式，打开端口 5678&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;`bash -c &amp;#34;$(curl http://docker.xiaoya.pro/update_new.sh)&amp;#34;`&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;一键安装和更新容器，host模式（推荐，软路由和NAS上更少网络故障，打开端口 5678）&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;`bash -c &amp;#34;$(curl http://docker.xiaoya.pro/update_new.sh)&amp;#34; -s host`&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;h4 id="四docker-compose安装"&gt;四、docker compose安装：&lt;/h4&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;version: &amp;#39;3&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; xiaoya:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; image: xiaoyaliu/alist
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; container_name: xiaoya
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; restart: unless-stopped
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 8765:80
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; volumes:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - ./data:/data&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 新建文件夹 xiaoya 和 子目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /volume1/docker/xiaoya/data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 进入 xiaoya 目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd /volume1/docker/xiaoya
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 将 mytoken.txt 、 myopentoken.txt 、 temp_transfer_folder_id.txt 放入 /data 目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 将 docker-compose.yml 放入当前目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 一键启动
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;webdav 账号密码 用户: guest 密码: guest_Api789&lt;/p&gt;</description></item><item><title>Hello World</title><link>https://20030327.xyz/posts/4a17b156/</link><pubDate>Mon, 15 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/4a17b156/</guid><description>&lt;p&gt;雨是神的烟花&lt;/p&gt;</description></item><item><title>笔记</title><link>https://20030327.xyz/posts/20249114d/</link><pubDate>Sun, 14 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/20249114d/</guid><description>&lt;h3 id="casaos"&gt;Casaos&lt;/h3&gt;
&lt;p&gt;安装命令：&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -qO- https://get.casaos.io | sudo bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;div class="post-code" data-lang="text"&gt;
 &lt;div class="post-code__chrome"&gt;
 &lt;div class="post-code__traffic" aria-hidden="true"&gt;
 &lt;span class="post-code__dot post-code__dot--close"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--min"&gt;&lt;/span&gt;
 &lt;span class="post-code__dot post-code__dot--max"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__copy" aria-label="复制代码"&gt;
 &lt;svg class="post-code__copy-icon" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;rect x="9" y="9" width="11" height="11" rx="1.5"/&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;
 &lt;/svg&gt;
 &lt;svg class="post-code__copy-done" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M5 13l4 4L19 7"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="post-code__body"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://get.casaos.io | sudo bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;button type="button" class="post-code__toggle" hidden aria-expanded="false" aria-label="展开代码"&gt;
 &lt;svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M7 10l5 5 5-5"/&gt;
 &lt;path d="M7 14l5 5 5-5"/&gt;
 &lt;/svg&gt;
 &lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;更新命令：&lt;/p&gt;</description></item><item><title>绘画之旅</title><link>https://20030327.xyz/posts/9a06950a/</link><pubDate>Sat, 13 Jan 2024 16:00:00 +0800</pubDate><guid>https://20030327.xyz/posts/9a06950a/</guid><description>&lt;p&gt;这个板块主要记录我画画的路上出现的一些作品，可能不会那么好看，主要做一个记录，当然没有特别备注的不存在版权问题，可以随意使用，但请尊重，不要喷哦&lt;/p&gt;
&lt;h3 id="1首张作品"&gt;1.首张作品：  &lt;/h3&gt;
&lt;p&gt;这是在我开始接触板绘，然后找了个地方学习了一段时间画出来的，花了老大劲了&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabb84d9c307b7e924347a.png"
 alt="img"
 loading="lazy"
 decoding="async"
 &gt;&lt;figcaption class="post-figure__caption"&gt;img&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="2生日作品"&gt;2.生日作品：&lt;/h3&gt;
&lt;p&gt;出自我20岁生日，23年，庆祝自己生日画的，四周是按我朋友的特点画的，可能不怎么像&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabbf0d9c307b7e92496e9.png"
 alt="im"
 loading="lazy"
 decoding="async"
 &gt;&lt;figcaption class="post-figure__caption"&gt;im&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="3照片改画"&gt;3.照片改画：&lt;/h3&gt;
&lt;p&gt;这是根据几张照片画的  &lt;/p&gt;
&lt;p&gt;下面这张是我自己的照片，挺像的，还蛮好看嘿嘿&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabc1bd9c307b7e924bfd2.png"
 alt="i0"
 loading="lazy"
 decoding="async"
 &gt;&lt;figcaption class="post-figure__caption"&gt;i0&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;这张是我的朋友，也是根据照片画的，她本人挺满意&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabc5bd9c307b7e924f814.png"
 alt="im"
 loading="lazy"
 decoding="async"
 &gt;&lt;figcaption class="post-figure__caption"&gt;im&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="4二一贺生图"&gt;4.二一贺生图：&lt;/h3&gt;
&lt;p&gt;出自21岁生日，很早就开始画，但是元素太多，没画完，然后就一直是半成品状态，以后有机会再画完叭&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabc8ad9c307b7e9251ee3.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="5几只水母"&gt;5.几只水母：&lt;/h3&gt;
&lt;p&gt;闲着没事画的几只水母是不是怪有感觉的&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabca7d9c307b7e92538d5.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;这张水母是在黑白情况下画的，画完才知道的颜色，看着还行&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabca7d9c307b7e92538f7.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="6接力"&gt;6.接力  &lt;/h3&gt;
&lt;p&gt;这是一系列接力的作品，我和我的朋友俩人接来接去的：&lt;/p&gt;
&lt;h4 id="第一幅"&gt;第一幅：&lt;/h4&gt;
&lt;p&gt;看着有点生疏，毕竟之前没玩过&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabcffd9c307b7e92587ea.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabcfed9c307b7e925874d.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabcfed9c307b7e9258764.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabcfed9c307b7e92587b2.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabcffd9c307b7e92587d9.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="第二幅"&gt;第二幅：&lt;/h4&gt;
&lt;p&gt;这里就渐渐地熟悉起来啦&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabd42d9c307b7e925cd7b.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;他改完的这个我真的觉得很有感觉&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabd42d9c307b7e925cd9c.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabd42d9c307b7e925cdb3.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;美少女变虾仁饭哈哈哈哈&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabd41d9c307b7e925cd38.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="第三幅"&gt;第三幅：&lt;/h4&gt;
&lt;p&gt;这里本来不长这样，但是那个线稿平涂的话不太能画，她正好也不会厚涂，我也不太会其实，嘿嘿我就改了下线稿&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabf02d9c307b7e92741fe.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabf02d9c307b7e92741cc.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabdaad9c307b7e9262cd0.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="第四幅"&gt;第四幅：&lt;/h4&gt;
&lt;p&gt;这幅我超喜欢，可可爱爱的&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabdabd9c307b7e9262dcd.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;说真的，到这里变化挺大的，哈哈哈亲妈都认不出来了，但是很好看&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img
 src="https://pic.imgdb.cn/item/66dabdacd9c307b7e9262e08.png"
 alt=""
 loading="lazy"
 decoding="async"
 &gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>今天是我的生日哦</title><link>https://20030327.xyz/posts/20110327/</link><pubDate>Sun, 27 Mar 2011 14:04:09 +0800</pubDate><guid>https://20030327.xyz/posts/20110327/</guid><description>&lt;h4 id="这是一篇为了网页展示效果的凑数文件"&gt;这是一篇为了网页展示效果的凑数文件&lt;/h4&gt;</description></item><item><title>今天是我的生日哦</title><link>https://20030327.xyz/posts/20100327/</link><pubDate>Sat, 27 Mar 2010 14:04:09 +0800</pubDate><guid>https://20030327.xyz/posts/20100327/</guid><description>&lt;h4 id="这是一篇为了网页展示效果的凑数文件"&gt;这是一篇为了网页展示效果的凑数文件&lt;/h4&gt;</description></item><item><title>今天是我的生日哦</title><link>https://20030327.xyz/posts/20090327/</link><pubDate>Fri, 27 Mar 2009 14:04:09 +0800</pubDate><guid>https://20030327.xyz/posts/20090327/</guid><description>&lt;h4 id="这是一篇为了网页展示效果的凑数文件"&gt;这是一篇为了网页展示效果的凑数文件&lt;/h4&gt;</description></item><item><title>今天是我的生日哦</title><link>https://20030327.xyz/posts/20080327/</link><pubDate>Thu, 27 Mar 2008 14:04:09 +0800</pubDate><guid>https://20030327.xyz/posts/20080327/</guid><description>&lt;h4 id="这是一篇为了网页展示效果的凑数文件"&gt;这是一篇为了网页展示效果的凑数文件&lt;/h4&gt;</description></item><item><title>今天是我的生日哦</title><link>https://20030327.xyz/posts/20070327/</link><pubDate>Tue, 27 Mar 2007 14:04:09 +0800</pubDate><guid>https://20030327.xyz/posts/20070327/</guid><description>&lt;h4 id="这是一篇为了网页展示效果的凑数文件"&gt;这是一篇为了网页展示效果的凑数文件&lt;/h4&gt;</description></item><item><title>今天是我的生日哦</title><link>https://20030327.xyz/posts/20060327/</link><pubDate>Mon, 27 Mar 2006 14:04:09 +0800</pubDate><guid>https://20030327.xyz/posts/20060327/</guid><description>&lt;h4 id="这是一篇为了网页展示效果的凑数文件"&gt;这是一篇为了网页展示效果的凑数文件&lt;/h4&gt;</description></item><item><title>今天是我的生日哦</title><link>https://20030327.xyz/posts/20050327/</link><pubDate>Sun, 27 Mar 2005 14:04:09 +0800</pubDate><guid>https://20030327.xyz/posts/20050327/</guid><description>&lt;h4 id="这是一篇为了网页展示效果的凑数文件"&gt;这是一篇为了网页展示效果的凑数文件&lt;/h4&gt;</description></item><item><title>今天是我的生日哦</title><link>https://20030327.xyz/posts/20040327/</link><pubDate>Sat, 27 Mar 2004 14:04:09 +0800</pubDate><guid>https://20030327.xyz/posts/20040327/</guid><description>&lt;h4 id="这是一篇为了网页展示效果的凑数文件"&gt;这是一篇为了网页展示效果的凑数文件&lt;/h4&gt;</description></item><item><title>今天是我的生日哦</title><link>https://20030327.xyz/posts/20030327/</link><pubDate>Thu, 27 Mar 2003 14:04:09 +0800</pubDate><guid>https://20030327.xyz/posts/20030327/</guid><description>&lt;h4 id="这是一篇为了网页展示效果的凑数文件"&gt;这是一篇为了网页展示效果的凑数文件&lt;/h4&gt;</description></item></channel></rss>