From f33537641a4e58a2fc7b21e30339c0aef0326d11 Mon Sep 17 00:00:00 2001 From: butubb <1422726308@qq.com> Date: Wed, 7 Jan 2026 08:30:24 +0800 Subject: [PATCH] update hugo config and update posts --- content/posts/Git 完整教程指南.md | 570 ++++++++++++++++++ content/posts/Linux 硬链接.md | 50 ++ content/posts/Linux文件系统概述.md | 55 ++ content/posts/docker搭建思源笔记.md | 30 + content/posts/frp内网穿透使用指南.md | 175 ++++++ content/posts/gitea 自部署使用体验.md | 373 ++++++++++++ content/posts/markdown语法使用指南.md | 112 ++++ content/posts/zerotier使用指南.md | 101 ++++ ...AS用户的UPS求生指南:从断电焦虑到真香体验.md | 62 ++ ...屏!越狱+自动更换新闻壁纸全攻略_附开源代码.md | 71 +++ content/posts/重新用回 macos.md | 9 + hugo.toml | 19 +- 12 files changed, 1620 insertions(+), 7 deletions(-) create mode 100644 content/posts/Git 完整教程指南.md create mode 100644 content/posts/Linux 硬链接.md create mode 100644 content/posts/Linux文件系统概述.md create mode 100644 content/posts/docker搭建思源笔记.md create mode 100644 content/posts/frp内网穿透使用指南.md create mode 100644 content/posts/gitea 自部署使用体验.md create mode 100644 content/posts/markdown语法使用指南.md create mode 100644 content/posts/zerotier使用指南.md create mode 100644 content/posts/一个NAS用户的UPS求生指南:从断电焦虑到真香体验.md create mode 100644 content/posts/把Kindle变成信息屏!越狱+自动更换新闻壁纸全攻略_附开源代码.md create mode 100644 content/posts/重新用回 macos.md diff --git a/content/posts/Git 完整教程指南.md b/content/posts/Git 完整教程指南.md new file mode 100644 index 0000000..9b11708 --- /dev/null +++ b/content/posts/Git 完整教程指南.md @@ -0,0 +1,570 @@ +--- +title: Git 完整教程指南 +tags: ["git", "版本控制", "教程"] +date: 2025-10-08 +summary: "从零开始学习 Git 版本控制系统,包含基础概念、常用命令、分支管理、协作流程等完整内容。" +--- + +> 本教程适用于 Git 初学者到进阶用户,涵盖日常开发中 90% 的使用场景。 + +## 什么是 Git + +Git 是一个分布式版本控制系统,用于跟踪文件的修改历史。与集中式版本控制系统(如 SVN)不同,Git 的每个工作副本都是完整的仓库,包含项目的完整历史记录。 + +### Git 的核心概念 + +- **仓库(Repository)**: 项目的版本控制中心,包含所有文件的历史记录。 +- **工作目录(Working Directory)**: 你在本地进行修改的文件所在目录。 +- **暂存区(Staging Area)**: 一个中间区域,用于暂存你要提交的文件变更。 +- **本地仓库(Local Repository)**: 你在本地计算机上的仓库,包含完整的历史记录。 +- **远程仓库(Remote Repository)**: 托管在服务器上的仓库,用于与团队成员共享代码。 + +### Git 工作流程 + +```mermaid +graph TB + subgraph "Git 工作区域" + A[工作目录
Working Directory] + B[暂存区
Staging Area] + C[本地仓库
Local Repository] + D[远程仓库
Remote Repository] + end + + A -->|git add| B + B -->|git commit| C + C -->|git push| D + D -->|git pull| C + C -->|git checkout| A + + style A fill:#e3f2fd + style B fill:#f3e5f5 + style C fill:#e8f5e9 + style D fill:#fff3e0 +``` + +## Git 安装与配置 + +### 安装 Git + +**Windows**: 下载并安装 [Git for Windows](https://git-scm.com/download/win) + +**macOS**: +```bash +# 使用 Homebrew +brew install git + +# 或者下载安装包 +# https://git-scm.com/download/mac +``` + +**Linux (Ubuntu/Debian)**: +```bash +sudo apt update +sudo apt install git +``` + +**Linux (CentOS/RHEL)**: +```bash +sudo yum install git +``` + +### 基础配置 + +```bash +# 配置用户信息(必须) +git config --global user.name "你的名字" +git config --global user.email "your.email@example.com" + +# 配置默认分支名(推荐) +git config --global init.defaultBranch main + +# 配置文本编辑器(可选) +git config --global core.editor vim + +# 查看配置 + git config --list +``` + +## Git 基础操作 + +### 初始化仓库 + +```bash +# 在当前目录初始化 Git 仓库 +git init + +# 克隆远程仓库 +git clone https://github.com/username/repository.git + +# 克隆并指定目录名 +git clone https://github.com/username/repository.git my-project +``` + +### 文件状态管理 + +```bash +# 查看文件状态 +git status + +# 添加文件到暂存区 +git add filename.txt +git add . # 添加所有文件 +git add -A # 添加所有变更(包括删除) + +# 从暂存区移除文件 +git reset filename.txt + +# 提交变更 +git commit -m "提交信息" +git commit -m "标题" -m "详细描述" + +# 跳过暂存区直接提交 +git commit -am "提交信息" +``` + +### 查看历史 + +```bash +# 查看提交历史 +git log + +# 简洁查看 +git log --oneline + +# 查看最近5次提交 +git log -5 + +# 查看文件修改历史 +git log --follow filename.txt + +# 查看每次提交的差异 +git log -p + +# 查看统计信息 +git log --stat +``` + +### 撤销操作 + +```bash +# 撤销工作区的修改 +git checkout -- filename.txt + +# 撤销暂存区的文件 +git reset HEAD filename.txt + +# 修改最后一次提交 +git commit --amend -m "新的提交信息" + +# 回退到指定版本 +git reset --hard commit-hash + +# 软回退(保留修改) +git reset --soft commit-hash +``` + +## 分支管理 + +### 分支概念 + +```mermaid +graph LR + A[main分支] --> B[创建feature分支] + B --> C[开发新功能] + C --> D[合并回main] + A --> E[创建hotfix分支] + E --> F[修复bug] + F --> D + + style A fill:#4caf50 + style B fill:#2196f3 + style C fill:#2196f3 + style D fill:#4caf50 + style E fill:#ff9800 + style F fill:#ff9800 +``` + +### 分支操作 + +```bash +# 查看分支 +git branch # 本地分支 +git branch -r # 远程分支 +git branch -a # 所有分支 + +# 创建分支 +git branch feature-login +git checkout -b feature-login # 创建并切换 + +# 切换分支 +git checkout main +git switch main # Git 2.23+ 新命令 + +# 合并分支 +git merge feature-login + +# 删除分支 +git branch -d feature-login # 安全删除 +git branch -D feature-login # 强制删除 + +# 重命名分支 +git branch -m old-name new-name +``` + +### 解决冲突 + +当合并分支时出现冲突: + +```bash +# 1. 查看冲突文件 +git status + +# 2. 手动编辑冲突文件 +# 删除冲突标记,保留需要的代码 + +# 3. 标记冲突已解决 +git add filename.txt + +# 4. 完成合并 +git commit +``` + +## 远程仓库操作 + +### 连接远程仓库 + +```bash +# 添加远程仓库 +git remote add origin https://github.com/username/repository.git + +# 查看远程仓库 +git remote -v + +# 重命名远程仓库 +git remote rename origin github + +# 删除远程仓库 +git remote remove origin +``` + +### 推送与拉取 + +```bash +# 推送到远程仓库 +git push origin main + +# 首次推送(设置上游分支) +git push -u origin main + +# 强制推送(谨慎使用) +git push -f origin main + +# 拉取更新 +git pull origin main + +# 获取更新但不合并 +git fetch origin +``` + +### 标签管理 + +```bash +# 创建标签 +git tag v1.0.0 +git tag -a v1.0.0 -m "版本说明" + +# 查看标签 +git tag + +# 推送标签 +git push origin v1.0.0 +git push origin --tags + +# 删除标签 +git tag -d v1.0.0 +git push origin --delete v1.0.0 +``` + +## 高级功能 + +### Stash(暂存) + +```bash +# 保存当前工作进度 +git stash + +# 查看保存的进度 +git stash list + +# 恢复最近保存的进度 +git stash pop + +# 恢复指定的进度 +git stash apply stash@{1} + +# 删除保存的进度 +git stash drop stash@{0} +``` + +### Cherry-pick + +```bash +# 选择性地合并某个提交 +git cherry-pick commit-hash + +# 合并多个提交 +git cherry-pick commit1 commit2 + +# 继续合并(解决冲突后) +git cherry-pick --continue +``` + +### Rebase + +```bash +# 交互式 rebase +git rebase -i HEAD~3 + +# 继续 rebase +git rebase --continue + +# 中止 rebase +git rebase --abort + +# 跳过当前提交 +git rebase --skip +``` + +### 子模块 + +```bash +# 添加子模块 +git submodule add https://github.com/user/repo.git path/to/submodule + +# 初始化子模块 +git submodule init + +# 更新子模块 +git submodule update + +# 递归更新 +git submodule update --recursive --remote +``` + +## Git 工作流程 + +### Git Flow 工作流 + +```mermaid +graph TB + A[main] --> B[develop] + B --> C[feature/feature-1] + B --> D[feature/feature-2] + C --> B + D --> B + B --> E[release/v1.0] + E --> A + E --> F[hotfix/fix-1] + F --> A + F --> B + + style A fill:#4caf50 + style B fill:#2196f3 + style C fill:#9c27b0 + style D fill:#9c27b0 + style E fill:#ff9800 + style F fill:#f44336 +``` + +### GitHub Flow + +1. **创建分支**:从 main 分支创建功能分支 +2. **提交修改**:在功能分支上进行开发 +3. **创建 Pull Request**:提交代码审查 +4. **代码审查**:团队成员进行代码审查 +5. **合并分支**:审查通过后合并到 main 分支 +6. **部署**:自动或手动部署到生产环境 + +### GitLab Flow + +结合 Git Flow 和 GitHub Flow 的优点,支持多环境部署。 + +## 实用技巧 + +### 配置别名 + +```bash +# 配置常用别名 +git config --global alias.st status +git config --global alias.co checkout +git config --global alias.br branch +git config --global alias.ci commit +git config --global alias.unstage 'reset HEAD --' +git config --global alias.last 'log -1 HEAD' +git config --global alias.visual '!gitk' +``` + +### 忽略文件 + +创建 `.gitignore` 文件: + +``` +# 忽略所有 .log 文件 +*.log + +# 忽略 node_modules 目录 +node_modules/ + +# 忽略 IDE 配置文件 +.vscode/ +.idea/ + +# 忽略操作系统文件 +.DS_Store +Thumbs.db + +# 忽略编译输出 +dist/ +build/ +*.exe +*.dll +``` + +### 查看文件差异 + +```bash +# 查看工作区与暂存区的差异 +git diff + +# 查看暂存区与仓库的差异 +git diff --staged + +# 查看两个提交的差异 +git diff commit1 commit2 + +# 查看文件的历史修改 +git log -p filename.txt +``` + +### 统计信息 + +```bash +# 查看提交统计 +git shortlog -sn + +# 查看代码行数统计 +git log --stat + +# 查看贡献者 +git log --pretty=format:"%an" | sort | uniq -c | sort -nr +``` + +## 常见问题解决 + +### 误提交大文件 + +```bash +# 从仓库中删除大文件 +git filter-branch --force --index-filter \ +'git rm --cached --ignore-unmatch path/to/large-file' \ +--prune-empty --tag-name-filter cat -- --all + +# 清理和垃圾回收 +git reflog expire --expire=now --all +git gc --prune=now --aggressive +``` + +### 修改历史提交信息 + +```bash +# 修改最近一次提交 +git commit --amend + +# 修改历史提交(交互式) +git rebase -i HEAD~3 +``` + +### 找回丢失的提交 + +```bash +# 查看引用日志 +git reflog + +# 恢复到某个状态 +git reset --hard HEAD@{1} +``` + +### 子模块问题 + +```bash +# 更新子模块 +git submodule update --init --recursive + +# 克隆包含子模块的仓库 +git clone --recursive https://github.com/user/repo.git +``` + +## 最佳实践 + +### 提交信息规范 + +``` +类型(范围): 简短描述 + +详细描述(可选) + +Fixes #123 +``` + +**类型说明**: +- `feat`: 新功能 +- `fix`: 修复bug +- `docs`: 文档更新 +- `style`: 代码格式调整 +- `refactor`: 代码重构 +- `test`: 测试相关 +- `chore`: 构建过程或辅助工具的变动 + +### 分支命名规范 + +- `feature/功能名称`:新功能开发 +- `bugfix/bug描述`:bug修复 +- `hotfix/紧急修复`:紧急修复 +- `release/版本号`:发布准备 +- `test/测试名称`:测试相关 + +### 工作流程建议 + +1. **频繁提交**:小而频繁的提交比大而少的提交更好 +2. **明确提交信息**:写清楚提交的目的和内容 +3. **及时拉取**:开始工作前拉取最新代码 +4. **使用分支**:不要在主分支上直接开发 +5. **代码审查**:提交前进行自我审查 +6. **保持同步**:定期与远程仓库同步 + +## 学习资源 + +### 官方资源 +- [Git 官方文档](https://git-scm.com/doc) +- [Pro Git 书籍](https://git-scm.com/book/zh/v2) +- [GitHub Guides](https://guides.github.com/) + +### 交互式学习 +- [Learn Git Branching](https://learngitbranching.js.org/) +- [GitHub Learning Lab](https://lab.github.com/) +- [Git 小游戏](https://onlywei.github.io/explain-git-with-d3/) + +### 可视化工具 +- [GitKraken](https://www.gitkraken.com/) +- [SourceTree](https://www.sourcetreeapp.com/) +- [GitHub Desktop](https://desktop.github.com/) + +## 总结 + +Git 是现代软件开发中不可或缺的工具。掌握 Git 不仅能够提高开发效率,还能更好地与团队协作。本教程涵盖了 Git 的核心概念和常用操作,建议通过实践来加深理解。 + +记住 Git 的学习曲线可能有些陡峭,但一旦掌握,它将成为你开发工具箱中最强大的工具之一。持续练习,遇到问题不要害怕,Git 的强大功能值得你投入时间学习。 + +--- + +> 💡 **提示**:Git 命令很多,不需要全部记住。常用的命令熟练掌握即可,其他的可以按需查询。建议收藏本教程作为参考手册。 \ No newline at end of file diff --git a/content/posts/Linux 硬链接.md b/content/posts/Linux 硬链接.md new file mode 100644 index 0000000..2c7fc7b --- /dev/null +++ b/content/posts/Linux 硬链接.md @@ -0,0 +1,50 @@ +--- +title: Linux 硬链接 +tags: ["linux"] +date: 2024-12-04 +summary: "在 Linux 系统中,文件的存储与管理是通过链接来实现的。硬链接是其中一种重要的链接类型,本文将详细介绍硬链接的概念、创建方法及其应用场景。" +--- +在 Linux 系统中,文件的存储与管理是通过链接来实现的。硬链接是其中一种重要的链接类型,本文将详细介绍硬链接的概念、创建方法及其应用场景。 + +## 什么是硬链接? + +硬链接是指向文件系统中某个文件数据块的直接引用。通过硬链接,多个文件名可以指向同一个数据块,即使一个文件被删除,其他指向相同数据块的硬链接仍然存在并可以访问数据。这意味着硬链接并不创建文件的副本,而是创建了一个新的目录项。 + +## 硬链接的特点 + +1. **共享数据**:多个文件名共享同一个数据块,节省存储空间。 +2. **不支持跨文件系统**:硬链接只能在同一个文件系统中创建,无法链接到其他文件系统的文件。 +3. **目录不能创建硬链接**:为了防止循环引用,通常不允许为目录创建硬链接(只有超级用户可以)。 +4. **引用计数**:每个文件在文件系统中都有一个引用计数,表示有多少个硬链接指向该文件。当引用计数减为零时,文件数据才会被实际删除。 + +## 示例 + +1. 创建一个名为 `file1.txt` 的文件: + +```shell +echo "Hello, Linux!" > file1.txt + + +``` + +2. 创建一个硬链接 `file2.txt`: + +```shell +ln file1.txt file2.txt + +``` + +3. 检查链接: + +```shell +ls -l + +``` + +## 实际应用 + +之前有朋友问我,威联通的外部设备如何做共享,想在外部设备里面存电影,挂载到emby上,但是由于外置在威联通系统里压根就没法共享,导致无法在emby里引用出来。 + +说到这很多朋友大概能明白了,可以直接在可以引用的目录里创建一个硬链接,让程序访问这个硬链接即可。 + +说白了,linux下的硬链接有点类似于windows上的快捷方式。 \ No newline at end of file diff --git a/content/posts/Linux文件系统概述.md b/content/posts/Linux文件系统概述.md new file mode 100644 index 0000000..37a4cad --- /dev/null +++ b/content/posts/Linux文件系统概述.md @@ -0,0 +1,55 @@ +--- +title: Linux文件系统概述 +tags: ["linux"] +date: 2024-12-04 +--- +Linux的文件系统结构是其核心组成部分之一,它以一种层次化的方式组织数据,使得用户和程序能够高效地访问和管理文件。以下是一些关键概念和特点: + +## 1\. 层次化结构 + +Linux的文件系统是从根目录(\`/\`)开始的。所有文件和目录都在这个根目录下,形成树状结构。常见的目录包括: + +- ** `/bin` ** :存放基本命令的二进制文件。 +- ** `/etc` ** :系统配置文件。 +- ** `/home` ** :用户的主目录,每个用户在此有自己的文件夹。 +- ** `/var` ** :存放可变数据,如日志文件和邮件。 + +这种层次化结构有助于保持系统的整洁和高效。 + +## 2\. 文件权限 + +Linux对文件和目录的管理非常注重安全性,采用了严格的文件权限机制。每个文件和目录都有三种基本权限: + +- **读(r)** :允许查看文件内容或列出目录内容。 +- **写(w)** :允许修改文件内容或添加/删除目录内容。 +- **执行(x)** :允许执行文件(如果是可执行文件)或访问目录。 + +此外,文件权限是分为三类的: + +- **用户(u)** :文件的所有者。 +- **组(g)** :与文件所有者同属一个组的用户。 +- **其他(o)** :所有其他用户。 + +## 3\. 硬链接与软链接 + +Linux支持两种类型的链接: + +- **硬链接**:指向同一文件的多个目录项,实际上是同一数据块,删除一个不会影响其他。 +- **软链接(符号链接)** :指向另一个文件的路径,如果目标文件被删除,软链接会失效。 + +## 4\. 文件系统的挂载 + +Linux支持多种文件系统(如ext4、XFS等),可以通过挂载(mount)将其他文件系统整合进当前的文件系统结构中。挂载点是一个目录,挂载后,外部文件系统的内容会出现在该目录下。 + +## 5\. 文件系统的管理 + +在Linux中,文件系统的管理包括格式化、检查和修复等操作。常用工具包括: + +- ** `mkfs` ** :用于创建文件系统。 +- ** `fsck` ** :用于检查和修复文件系统错误。 + +--- + +--- + +Linux文件系统的设计强调灵活性、安全性和效率,使得用户可以轻松地管理和组织文件。理解文件系统结构和权限机制对于使用和管理Linux系统至关重要。 \ No newline at end of file diff --git a/content/posts/docker搭建思源笔记.md b/content/posts/docker搭建思源笔记.md new file mode 100644 index 0000000..639a225 --- /dev/null +++ b/content/posts/docker搭建思源笔记.md @@ -0,0 +1,30 @@ +--- +title: docker搭建思源笔记 +tags: ["linux","docker"] +date: 2024-11-23 +summary: "docker搭建思源笔记..." +--- + +- `PUID`: 自定义用户 ID(可选,如果未提供,默认为 `1000`) +- `PGID`: 自定义组 ID(可选,如果未提供,默认为 `1000`) +- `workspace_dir_host`:宿主机上的工作空间文件夹路径 +- `accessAuthCode`:访问授权码,请**务必修改**,否则任何人都可以读写你的数据(必须配置,否则容器无法启动) + +--- + +# docker-compose + + version: "3.9" + services: + main: + image: b3log/siyuan + command: ['--workspace=/siyuan/workspace/', '--accessAuthCode=xxx'] + ports: + - 6806:6806 + volumes: + - workspace_dir_host:/siyuan/workspace + restart: unless-stopped + environment: + - TZ=Asia/shanghai + - PUID=${YOUR_USER_PUID} # 自定义用户 ID + - PGID=${YOUR_USER_PGID} # 自定义组 ID \ No newline at end of file diff --git a/content/posts/frp内网穿透使用指南.md b/content/posts/frp内网穿透使用指南.md new file mode 100644 index 0000000..bd3d30b --- /dev/null +++ b/content/posts/frp内网穿透使用指南.md @@ -0,0 +1,175 @@ +--- +title: frp内网穿透使用指南 +tags: ["linux"] +date: 2024-12-02 +summary: "frp(Fast Reverse Proxy)是一个高性能的反向代理应用,主要用于内网穿透。..." +--- +## 什么是 frp? + +frp(Fast Reverse Proxy)是一个高性能的反向代理应用,主要用于内网穿透。它可以将内网服务暴露到公网上,方便外部访问。 + +有很多小伙伴,家里都有性能很强大的电脑,但是苦于没有公网 IP,导致无法在互联网上部署自己的网站或者服务,而 frp 内网穿透就是用来解决这个问题的。 + +--- + +- 首先你得拥有一台具有公网 IP 的服务器,如果你只是用来进行内网穿透的话,性能并不需要很强,1h1g 是肯定够用了。 +- 其次,在中国境内的服务器因为种种原因,需要进行网站备案,所以我这里更推荐你去购买香港或者美国的服务器,可以免备案。会省下很多麻烦事。 + +> PS: 这里推荐一下本站在用的服务器 CloudCone,价格便宜实惠,流量大,用作 frp 服务器绰绰有余。我这边购买的是 2h1g 服务器,一年也就 130 元人民币,并且还支持支付宝直接支付,无需 VISA 卡之类的,本站强烈推荐!!!! + +--- + +## frp 内网穿透 + +frp 一共分为两个部分: + +- **服务器**:一个具有公网 IP 的服务器,运行 frps(frp server)。 +- **客户端**:一台处于内网中的机器,运行 frpc(frp client)。 + +### frps(服务端) + +1. 前往 [frp GitHub Releases 页面](https://github.com/fatedier/frp/releases) 下载适合你服务器操作系统的 frp 包。(一般linux64位系统选择linux\_amd64即可) +2. 解压缩下载的包: + + tar -zxvf frp_x.x.x_linux_amd64.tar.gz +3. 进入解压好的目录,找到frps.toml文件 + + vim frps.toml +4. 编辑frps.toml文件 + + ```sh + [common] + + # frps 服务端的基本配置 + + # frps 监听的端口,frpc 将通过这个端口连接到 frps + + bind_port = 7443 + + # 用于身份验证的 token,frpc 连接时需要提供相同的 token + + token = xxxxxxxxx + + # 监控面板的端口(可选),通过这个端口可以访问 frps 的状态信息 + + dashboard_port = 8443 + + # 监控面板的用户名和密码,保护监控面板的访问 + + dashboard_user = new_username + dashboard_pwd = NewPassword!2024 + + # 允许开放的端口范围,设置为只开放 10000-11000 端口(可自定义开放端口) + + allow_ports = 10000-11000 + + # 日志级别,可选值有 trace, debug, info, warn, error + + log_level = info + + # 日志文件路径,frps 的日志将写入该文件 + + log_file = ./frps.log + + # 指定日志的最大大小(单位:MB),达到该大小后将进行轮转 + + max_log_size = 10 + + # 允许的最大连接数,限制同时连接到 frps 的 frpc 客户端数量 + + max_connections = 100 + + # 启用加密传输(可选),可以提高数据传输的安全性 + + enable_encrypt = true + + # 启用 TCP KeepAlive(可选),可以防止由于网络问题导致的连接断开 + + tcp_keep_alive = true + + # 允许的最大数据包大小(单位:字节) + + max_packet_size = 8192 + ``` + +### frp从(客户端) + +前面的步骤都是一样的 + +- 前往 [frp GitHub Releases 页面](https://github.com/fatedier/frp/releases) 下载适合你服务器操作系统的 frp 包。(一般linux64位系统选择linux\_amd64即可) +- 解压缩下载的包: + + tar -zxvf frp_x.x.x_linux_amd64.tar.gz + +1. 找到frpc.toml +2. 编辑frpc.toml + + + ```sh + [common] + + # frpc 连接到 frps 服务器的配置 + + # frps 服务器的地址 + + server_addr = "your_frps_server_ip" # 替换为你的 frps 服务器 IP + + # frps 服务器的端口 + + server_port = 7443 # 与 frps 的 bind_port 一致 + + # 身份验证 token,必须与 frps 中的 token 一致 + + token = "xxxxxxxxx" + + # 以下是需要开放的服务配置 + + # 例如,HTTP 服务 + + [http] + type = "tcp" + local_ip = "127.0.0.1" + local_port = 80 # 本地 HTTP 服务端口 + remote_port = 10001 # 通过 frp 暴露的端口 + + # 其他服务可以继续添加 + ``` +--- + +> ***这时候通过访问公网服务器ip加上remote_port端口,即可访问你对应的内网服务了!如果访问有不了请检查一下服务器的防火墙,和云服务器上的防火墙。*** + +这时我们还需要把公网服务器上的frps服务设置为开机自启动 + +--- + +- 创建 一个Systemd 服务文件 + + sudo vi /etc/systemd/system/frps.service + +在文件里添加 + +``` +[Unit] +Description=frp server +After=network.target + +[Service] +ExecStart=/path/to/frps -c /path/to/frps.toml +Restart=on-failure +User=your_username # 替换为运行 frps 的用户名 +WorkingDirectory=/path/to/frp # frp 的工作目录 + +[Install] +WantedBy=multi-user.target +``` + +- 重新加载 Systemd + + sudo systemctl daemon-reload +- 启动服务并设置为开机自启 + + sudo systemctl start frpssudo systemctl enable frps +- 查看服务状态 + + sudo systemctl status frps +- 如果出现错误,大概率是你的路径填写的不对,确保 `ExecStart` 路径指向你的 frps 可执行文件和配置文件的正确路径。 \ No newline at end of file diff --git a/content/posts/gitea 自部署使用体验.md b/content/posts/gitea 自部署使用体验.md new file mode 100644 index 0000000..6bd886d --- /dev/null +++ b/content/posts/gitea 自部署使用体验.md @@ -0,0 +1,373 @@ +--- +title: gitea 自部署使用体验 +tags: ["git","docker"] +date: 2025-11-27 +summary: "本文基于 Docker Compose 一键启动 Gitea + Gitea Runner 的实战记录。" +--- + +> 注意:本文基于 Docker Compose 一键启动 Gitea + Gitea Runner 的实战记录。 + +## 为什么使用 gitea +使用 gitea,主要原因是它的内存占用低,只有100 M 左右,而 gitlab 官方推荐的最小配置是 4 G 内存。github 在大多数区域访问速度较慢,而 gitea 可以在自部署的情况下,提供与 github 相同的功能。 + +## 架构速览 + +Gitea 采用微内核 + 插件扩展的轻量架构,核心组件如下: + +1. **Web 服务层** + - 基于 Go 的 HTTP 服务(Gin 框架) + - 提供 Web UI、REST & Git 协议入口 + +2. **业务逻辑层** + - 路由与中间件(鉴权、CSRF、Session) + - 仓库管理(Git 命令封装、钩子触发) + - 组织/用户/权限模型(RBAC) + +3. **存储层** + - **SQLite**(默认,单文件零配置) + - **MySQL / PostgreSQL**(生产推荐) + - 文件系统:Git 裸仓库、LFS 对象、头像、日志 + +4. **后台任务** + - 定时器:镜像同步、归档清理、统计更新 + - 队列:邮件、WebHook、索引构建 + +5. **可选扩展** + - **Gitea Runner**:基于 act(兼容 GitHub Actions)的 CI 执行器 + - **包管理**:npm、maven、nuget、docker registry 统一入口 + +### 架构图(Mermaid) + +```mermaid +graph TB + subgraph "客户端层" + A[Web浏览器] + B[Git客户端] + C[API客户端] + end + + subgraph "负载均衡/反向代理" + D[Nginx/Apache] + end + + subgraph "Gitea核心服务" + E[Web服务
Gin框架] + F[API服务
RESTful] + G[Git服务
SSH/HTTP] + H[认证授权
Session/OAuth] + end + + subgraph "业务逻辑层" + I[仓库管理] + J[用户管理] + K[组织管理] + L[权限控制
RBAC] + M[WebHook] + N[邮件服务] + end + + subgraph "数据存储层" + O[数据库
SQLite/MySQL/PostgreSQL] + P[Git仓库
文件系统] + Q[LFS对象存储] + R[缓存
Redis/Memcached] + end + + subgraph "后台任务" + S[定时任务
Cron] + T[队列处理
WebHook/邮件] + U[索引构建] + V[镜像同步] + end + + subgraph "可选扩展" + W[Gitea Runner
CI/CD] + X[包管理
npm/docker/maven] + Y[代码搜索
Bleve] + end + + A --> D + B --> D + C --> D + + D --> E + D --> F + D --> G + + E --> H + F --> H + G --> H + + H --> I + H --> J + H --> K + H --> L + + I --> O + I --> P + J --> O + K --> O + L --> O + + I --> Q + M --> T + N --> T + + S --> V + U --> R + T --> N + + W --> P + X --> Q + Y --> R + + style A fill:#e1f5fe + style B fill:#e1f5fe + style C fill:#e1f5fe + style D fill:#fff3e0 + style E fill:#f3e5f5 + style F fill:#f3e5f5 + style G fill:#f3e5f5 + style H fill:#f3e5f5 + style I fill:#e8f5e9 + style J fill:#e8f5e9 + style K fill:#e8f5e9 + style L fill:#e8f5e9 + style M fill:#e8f5e9 + style N fill:#e8f5e9 + style O fill:#ffebee + style P fill:#ffebee + style Q fill:#ffebee + style R fill:#ffebee + style S fill:#fce4ec + style T fill:#fce4ec + style U fill:#fce4ec + style V fill:#fce4ec + style W fill:#e0f2f1 + style X fill:#e0f2f1 + style Y fill:#e0f2f1 +``` + +### 架构说明 + +**Gitea** 采用分层架构设计,各层职责清晰: + +1. **客户端层**:支持 Web 浏览器、Git 客户端和 API 客户端访问 +2. **负载均衡层**:可通过 Nginx/Apache 实现反向代理和负载均衡 +3. **核心服务层**:提供 Web UI、API 接口和 Git 协议支持 +4. **业务逻辑层**:处理仓库、用户、组织管理和权限控制 +5. **数据存储层**:支持多种数据库和文件系统存储 +6. **后台任务**:负责定时任务、队列处理和同步操作 +7. **扩展功能**:提供 CI/CD、包管理和代码搜索等可选功能 + +这种架构设计使得 Gitea 具有轻量级、高可用和易扩展的特点。 + +```mermaid +graph TB + subgraph "客户端层" + A[Web浏览器] + B[Git客户端] + C[API客户端] + end + + subgraph "负载均衡层" + D[Nginx/反向代理] + end + + subgraph "Gitea核心服务" + E[Web服务
Gin框架] + F[REST API] + G[Git协议处理器] + H[认证授权
RBAC] + I[中间件
CSRF/Session] + end + + subgraph "业务逻辑层" + J[仓库管理] + K[用户/组织管理] + L[问题跟踪] + M[PR/MR流程] + N[WebHook系统] + O[通知系统] + end + + subgraph "数据存储层" + P[Git仓库
文件系统] + Q[SQLite/MySQL
PostgreSQL] + R[LFS对象存储] + S[会话存储] + T[缓存Redis] + end + + subgraph "后台服务" + U[定时任务
镜像同步] + V[队列服务
异步任务] + W[邮件服务] + X[索引构建] + end + + subgraph "扩展组件" + Y[Gitea Runner
CI/CD] + Z[包管理
npm/maven] + AA[容器注册表] + end + + A --> D + B --> D + C --> D + + D --> E + D --> F + D --> G + + E --> H + F --> H + G --> H + + H --> I + I --> J + I --> K + I --> L + I --> M + I --> N + I --> O + + J --> P + K --> Q + L --> Q + M --> P + N --> V + O --> W + + V --> U + V --> X + V --> W + + J --> Y + J --> Z + J --> AA + + P --> R + Q --> S + Q --> T + + style A fill:#e1f5fe + style B fill:#e1f5fe + style C fill:#e1f5fe + style D fill:#fff3e0 + style E fill:#f3e5f5 + style F fill:#f3e5f5 + style G fill:#f3e5f5 + style H fill:#f3e5f5 + style I fill:#f3e5f5 + style J fill:#e8f5e8 + style K fill:#e8f5e8 + style L fill:#e8f5e8 + style M fill:#e8f5e8 + style N fill:#e8f5e8 + style O fill:#e8f5e8 + style P fill:#fce4ec + style Q fill:#fce4ec + style R fill:#fce4ec + style S fill:#fce4ec + style T fill:#fce4ec + style U fill:#fff9c4 + style V fill:#fff9c4 + style W fill:#fff9c4 + style X fill:#fff9c4 + style Y fill:#e0f2f1 + style Z fill:#e0f2f1 + style AA fill:#e0f2f1 +``` + +### 架构特点说明 + +**1. 轻量级设计** +- 单二进制文件部署,内存占用仅100M左右 +- 内置Web服务器,无需额外HTTP服务 +- SQLite零配置支持,适合个人和小团队 + +**2. 模块化架构** +- 核心服务与业务逻辑分离 +- 插件化扩展机制 +- 可选组件按需启用 + +**3. 数据一致性** +- Git裸仓库直接存储,保证数据完整性 +- 数据库存储元数据,支持快速查询 +- LFS支持大文件存储 + +**4. 高可用支持** +- 支持数据库主从复制 +- 文件系统可对接分布式存储 +- 会话和缓存支持外部存储 + +## docker compose 部署 +> docker 和 docker compose 的安装可以参考 [docker 官方文档](https://docs.docker.com/get-docker/) + +```yaml +networks: + gitea: + external: false + +services: + gitea: + image: gitea/gitea:latest + container_name: gitea + environment: + - USER_UID=1000 + - USER_GID=10 + - GITEA__database__DB_TYPE=mysql + - GITEA__database__HOST=db:3306 + - GITEA__database__NAME=gitea + - GITEA__database__USER=gitea + - GITEA__database__PASSWD=xxxxx + restart: always + networks: + - gitea + volumes: + - ./data:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "23000:3000" + - "22222:22" + depends_on: + - db + + db: + image: mysql:8 + container_name: mysql-gitea + restart: always + environment: + - MYSQL_ROOT_PASSWORD=gitea + - MYSQL_USER=gitea + - MYSQL_PASSWORD=xxxxxx + - MYSQL_DATABASE=gitea + networks: + - gitea + volumes: + - ./mysql:/var/lib/mysql + + runner: + image: gitea/act_runner:latest + container_name: runner + restart: always + depends_on: + - gitea + volumes: + - ./runner/data:/data + - ./runner/cache:/root/.cache + - ./runner/config.yaml:/config.yaml + - /var/run/docker.sock:/var/run/docker.sock + networks: + - gitea + environment: + - GITEA_INSTANCE_URL=http://gitea:3000/ + - GITEA_RUNNER_REGISTRATION_TOKEN=xxxxxxx + - CONFIG_FILE=/config.yaml + - GITEA_RUNNER_NAME=docker-runner + - GITEA_RUNNER_LABELS=docker +``` +其中,runner 的 token可以先随便填一个,后面在 gitea 中注册时会替换。 + diff --git a/content/posts/markdown语法使用指南.md b/content/posts/markdown语法使用指南.md new file mode 100644 index 0000000..378aec0 --- /dev/null +++ b/content/posts/markdown语法使用指南.md @@ -0,0 +1,112 @@ +--- +title: markdown语法使用指南 +tags: ["markdown"] +date: 2025-03-06 +summary: "用来学习markdown语法" +--- +## 基础语法 + +--- + +### 标题 + +```markdown +# H1 +## H2 +### H3 +#### H4 +##### H5 +###### H6 +``` + +### 文本样式 + +```markdown +*斜体* _斜体_ +**粗体** __粗体__ +***粗斜体*** ___粗斜体___ +~~删除线~~ +``` + +### 列表 + +```markdown +- 无序列表 +* 无序列表 ++ 无序列表 + +1. 有序列表 +2. 有序列表 +3. 有序列表 + +- [x] 已完成 +- [ ] 未完成 +``` + +### 代码 + +```markdown +行内代码:`code` + +代码块: +‍```python +print("Hello World") +‍``` +``` + +### 链接与图片 + +```markdown +[链接文字](URL "标题") +![图片alt](图片URL "标题") +``` + +### 引用 + +```markdown +> 引用内容 +> 多行引用 +``` + +### 表格 + +```markdown +| 左对齐 | 居中对齐 | 右对齐 | +|:-------|:-------:|-------:| +| 数据 | 数据 | 数据 | +| 数据 | 数据 | 数据 | +``` + +## 高级语法 + +--- + +### 分隔线 + +```markdown +--- +*** +___ +``` + +### 脚注 + +```markdown +这是一个脚注[^note] +[^note]: 脚注内容 +``` + +### HTML + +```markdown +
+点击展开 +隐藏内容 +
+``` + +### 转义字符 + +```markdown +\*转义星号\* +``` \ No newline at end of file diff --git a/content/posts/zerotier使用指南.md b/content/posts/zerotier使用指南.md new file mode 100644 index 0000000..5298b7c --- /dev/null +++ b/content/posts/zerotier使用指南.md @@ -0,0 +1,101 @@ +--- +title: zerotier使用指南 +tags: ["linux"] +date: 2025-09-07 +summary: "zerotier使用指南" +--- +# 注册 + +1.进入[https://my.zerotier.com/network](https://my.zerotier.com/network)注册登录 + +Create A Network 新建网络,查看网络id + +# linux端 + +## 1.安装 + + curl -s [https://install.zerotier.com](https://install.zerotier.com) | sudo bash + +## 2.加入网络 + + sudo zerotier-cli join #你的网络id + #设置zerotier自启 + sudo systemctl enable zerotier-one.service + +新设备加入都要去[zerotier后台](https://my.zerotier.com/network)许可 + +![](https://img.butubb.cn/i/2024/12/09/67564e1d90bb7.png) + +![](https://img.butubb.cn/i/2024/12/09/67564e2d8f266.png) + +Authorized勾打上,name自己起,点击save保存 + +# docker安装 + + docker run -d -restart always -name zerotier -v 你本地的地址:/var/lib/zerotier-one -network host zerotier/zerotier:latest + #要使用host网络模式 + + docker exec -it zerotier + sudo zerotier-cli join #你的网络id + +# ios端 + +App Store登录美区账号 + +搜索下载zerotier-one + +打开点击右上角➕ + +输入网页端显示的网络id + +点击add network + +--- + +如果只是简单的互通到这里为止,你的iphone和linux已经可以实现互相访问了,直接ping网页端显示的ip地址即可,一般刚连上会延迟比较高,打洞成功后延迟基本在个位数 + +![](https://img.butubb.cn/i/2024/12/12/675a2c5a84c21.png) + +# 进阶设置 + +## zerotier托管路由 + +如果你想实现访问linux客户端下的其他局域网设备,比如ps5等无法安装zerotier的设备 + +在linux已经安装配置好zerotier的基础上 + + # 通过 ip a可以查看网卡配置,找到对应的zerotier虚拟网卡 + ztiv5heone: mtu 2800 qdisc fq_codel state UNKNOWN group default qlen 1000 + link/ether c6:a0:24:d1:76:3b brd ff:ff:ff:ff:ff:ff + inet 10.147.17.11/24 brd 10.147.17.255 scope global ztiv5heone + valid_lft forever preferred_lft forever + inet6 fe80::c4a0:24ff:fed1:763b/64 scope link + valid_lft forever preferred_lft forever + + # ztiv5heone 为虚拟网卡名字 + #允许防火墙通过 + iptables -I FORWARD -i ztiv5heone -j ACCEPT + iptables -I FORWARD -o ztiv5heone -j ACCEPT + iptables -t nat -I POSTROUTING -o ztiv5heone -j MASQUERADE + + # 允许转发 + cat /proc/sys/net/ipv4/ip_forward + # 如果返回 1,表示开启不需要后续操作;0 表示关闭需要开启 + + sudo vim /etc/sysctl.conf + #在文件中找到(或添加)以下行:net.ipv4.ip_forward = 1 + + sudo sysctl -p + #保存后执行生效 + +进入[https://my.zerotier.com/network](https://my.zerotier.com/network)进入当前的网络id + +找到 + +![](https://img.butubb.cn/i/2024/12/09/67564e4c2e223.png) + +destination填写你的局域网网段例如192.168.2.0/24 ,via输入分配给你的虚拟局域网地址例如10.147.17.11 + +这里的意思就是如果我要访问局域网的其他设备,是要通过via填写的地址转发到目的局域网ip + +此时使用在同一zerotier网络下的其他设备,ping你的局域网其他设备,能ping通即成功 \ No newline at end of file diff --git a/content/posts/一个NAS用户的UPS求生指南:从断电焦虑到真香体验.md b/content/posts/一个NAS用户的UPS求生指南:从断电焦虑到真香体验.md new file mode 100644 index 0000000..f937361 --- /dev/null +++ b/content/posts/一个NAS用户的UPS求生指南:从断电焦虑到真香体验.md @@ -0,0 +1,62 @@ +--- +title: 一个NAS用户的UPS求生指南:从断电焦虑到真香体验 +tags: ["nas"] +date: 2025-10-22 +summary: '作为一个在群租房里"苟活"的绿联NAS用户,这两年我深刻体会到了什么叫"用电如履薄冰"...' +--- +## 第一章:那些年,我们一起经历的断电惊魂 + +作为一个在群租房里"苟活"的绿联NAS用户,这两年我深刻体会到了什么叫"用电如履薄冰": + +- 每月一次的断电"保留节目",比大姨妈还准时 +- 每次断电后重启NAS时的手抖程度,堪比拆炸弹 +- 硬盘的"咔咔"声在我耳中自动翻译成"给老子等着" + +## 第二章:UPS选购的哲学思考 + +在研究了市面上的UPS后,我陷入了当代青年的经典选择困境: + +### 选项A:磷酸铁锂"坦克型"UPS + +- ✅ 安全系数堪比防弹衣 +- ❌ 体积和噪音堪比小型发电机 +- ❌ 待机功耗够我多喝两杯奶茶 + +### 选项B:锂电池"精灵型"UPS + +- ✅ 体积小巧如充电宝 +- ✅ 安静得像个美男子 +- ❓ 安全性...应该也许大概没问题? + +直到某个月黑风高的夜晚,连续两次断电后,我的NAS用数据丢失的方式向我发出最后通牒。 + +## 第三章:我与瓦力UPS + +最终入手的瓦力UPS给我的惊喜远超预期: + +### 三大真香体验 + +1. **身材管理满分**:120 x 106.7 x 40.3mm放在在NAS上毫无存在感 +2. **功能强大**: + + - 实时功率监测 + - 用电统计(终于知道NAS偷吃了多少电) + - 智能关机保护 + - mac地址网络唤醒 +3. **零噪音**:存在感比我的前任还低 + +*每天看功率成了新的解压方式* +​![](https://img.butubb.cn/i/2025/04/07/67f3813bc9bdb.jpeg) +*每日详细电量消耗* +​![](https://img.butubb.cn/i/2025/04/07/67f3796faf0e3.png) + +## 第四章:给同病相怜者的建议 + +1. 别等数据火葬场才想起UPS这个"后悔药" +2. 租房党优先考虑体积和噪音(除非你想体验噪音的关爱) +3. 锂电池UPS没想象中可怕,毕竟手机天天放床头不是? +4. 记得定期测试,别让UPS变成"装饰品" + +## 终极感悟 + +从最初的"应该不用买UPS吧",到现在的"怎么没早点买",真香定律再次胜利。现在我的NAS终于可以安心地说:"我要稳稳的幸福~"(而我的钱包说:你开心就好) diff --git a/content/posts/把Kindle变成信息屏!越狱+自动更换新闻壁纸全攻略_附开源代码.md b/content/posts/把Kindle变成信息屏!越狱+自动更换新闻壁纸全攻略_附开源代码.md new file mode 100644 index 0000000..e937b5a --- /dev/null +++ b/content/posts/把Kindle变成信息屏!越狱+自动更换新闻壁纸全攻略_附开源代码.md @@ -0,0 +1,71 @@ +--- +title: 把Kindle变成信息屏!越狱+自动更换新闻壁纸全攻略 | 附开源代码 +tags: ["学习"] +date: 2025-10-01 +summary: "前些日子翻出尘封两年的KPW4,本想重拾阅读初心,却发现亚马逊中国早已物是人非。正当想着要不要给它闲鱼出手时转卖时,B站刷到Kindle全机型都支持越狱了。" +--- + +前些日子翻出尘封两年的KPW4,本想重拾阅读初心,却发现亚马逊中国早已物是人非。 +正当想着要不要给它闲鱼出手时转卖时,B站刷到Kindle全机型都支持越狱了。 + +- 书伴网的详细图文教程[2025 Kindle 越狱教程:不限 Kindle 型号,不限固件版本](https://bookfere.com/post/1145.html) + +瞬间燃起折腾欲,一直没有给kindle越狱过,想着就算要出手也要越狱折腾看看。 + +## kindle越狱 + +参考书伴网的教程[2025 Kindle 越狱教程:不限 Kindle 型号,不限固件版本](https://bookfere.com/post/1145.html) +跟着教程一步一步进行即可,这一步我就不再详细说明了。 + +越狱后的kindle安装了koreader,传书变得方便了,不需要再使用数据线进行拷贝,可以链接webdav服务器进行下载,确实方便多了,也重燃起我的阅读兴趣。 +遂想着还有什么可折腾的,想起没越狱之前,一直想着把kindle的壁纸给换掉,现在越狱了应该可以实现了。 + +## 实践 + +整理一下我的需求 + +- 自动化更换kindle壁纸 +- 图片内容为新闻排行榜 +- 自动化生成壁纸图片 + +根据需求我大概去网上看了一下有没有相同想法的小伙伴,但是看到的大多是使用git上传管理自己的图片,不是自动化生成一些壁纸 +[读书|通过 Git 管理 Kindle 屏保图片,一键自动同步](https://blog.csdn.net/mzlogin/article/details/132960326) +这是链接大家也可以参考一下。 + +基于没有现成的,我根据需求大概整理了一下实现的思路 + +1. github仓库python代码爬取新闻网站信息,整理好生成壁纸,需要适配一下kindle屏幕大小和黑白色,使用github action自动化执行仓库内py脚本每隔30分钟爬取生成一张图片,自动覆盖原图片。 +2. kindle写一个sh脚本自动下载图片到指定的目录,使用cron定时任务设置定时下载覆盖 + +### github + +![项目生成的图片](https://img.butubb.cn/i/2025/04/16/67ff6ed10314e.png) +我的github项目地址[8butubb/kindlepic](https://github.com/8butubb/kindlepic) +信息来源是[今日热榜](https://tophub.today) +不知道爬哪个网站的同学可以看看这个网站,信息聚合 + +### kindle + +kindle上壁纸目录是可以使用koreader进行指定,指定或者默认目录, +写一个sh脚本用来下载图片 + +```sh +#!/bin/sh + +# 目标壁纸文件名(需固定名称以覆盖旧文件) +WALLPAPER_NAME="custom_wallpaper.png" +# 壁纸下载链接(替换为你的实际图片URL) +IMAGE_URL="https://example.com/your-image.png" +# 目标路径 +TARGET_DIR="/mnt/us/koreader/screensaver" + +# 使用 curl 下载并覆盖文件 +curl -L -o "${TARGET_DIR}/${WALLPAPER_NAME}" "${IMAGE_URL}" +``` + +chmod +x download_wallpaper.sh 给个脚本执行权限 +写完可以执行一次试试,没有问题的话使用cron设置一下定时任务即可 + +## 进阶 + +- 可以在添加天气信息和一些其他自定义信息,这里大家就可以发挥想象力了 \ No newline at end of file diff --git a/content/posts/重新用回 macos.md b/content/posts/重新用回 macos.md new file mode 100644 index 0000000..0f0694f --- /dev/null +++ b/content/posts/重新用回 macos.md @@ -0,0 +1,9 @@ +--- +title: 重新用回macos +tags: ["日常","mac"] +date: 2025-12-01 +summary: "" +--- + +最近几天,我重新用回了去年使用的macbookpro,屏幕有一条黑线,使用的是外接显示器 +深感还是mac系统简洁好用,没有windows那么多的莫名其妙的bug diff --git a/hugo.toml b/hugo.toml index c236e2e..036d64e 100644 --- a/hugo.toml +++ b/hugo.toml @@ -1,12 +1,12 @@ baseURL = 'https://8butubb.github.io/' languageCode = 'zh-cn' -title = '我的博客' +title = '日志' theme = 'PaperMod' [params] defaultTheme = "auto" # 内联表必须写在一行内 - homeInfoParams = { Title = "你好,我是butubb", Content = "欢迎来到我的博客主页:个人 / 博客 / 教程" } + homeInfoParams = { Title = "你好!我是butubb,安徽人,现工作居住在苏州。", Content = "喜欢互联网冲浪🏄‍♂️,折腾机器💻,看电影🎥,编程🧑‍💻,听音乐🎶等" } [taxonomies] @@ -15,16 +15,21 @@ theme = 'PaperMod' category = "categories" [[menu.main]] - name = "个人" - url = "/posts" + name = "首页" + url = "/" weight = 1 [[menu.main]] - name = "教程" - url = "/docs" + name = "博文" + url = "/posts" weight = 2 +[[menu.main]] + name = "标签" + url = "/tags" + weight = 3 + [[menu.main]] name = "学习" url = "/study" - weight = 3 \ No newline at end of file + weight = 4 \ No newline at end of file