概念 study · 研习 #server, devops 2026-05-30

博客与 Wiki 私有化迁移

本文记录将个人博客从 GitHub Pages 迁移到自托管服务器,以及将 wiki 从 GitHub 推送到私有 Git 服务器的完整过程。

前置:服务器已就绪 → 从零购买并配置云服务器

为什么从 GitHub 迁走

GitHub Pages 的问题

自己服务器的好处

博客迁移(Nginx 部分)

安装 Nginx

sudo apt install -y nginx
sudo systemctl enable nginx

创建站点配置

# 创建博客目录
sudo mkdir -p /var/www/blog
sudo chown ops:ops /var/www/blog

Nginx 配置文件 /etc/nginx/sites-available/blog

server {
    listen 80;
    server_name www.lyrical-wander.cn lyrical-wander.cn;
    root /var/www/blog;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    # Let's Encrypt 验证用
    location ^~ /.well-known/acme-challenge/ {
        root /var/www/blog;
    }
}

启用和测试:

sudo ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default  # 删除默认站点
sudo nginx -t       # 检查配置语法
sudo systemctl reload nginx

🕳 Nginx server_name 匹配逻辑:

当你 curl http://localhost 时,Nginx 会找 server_name 包含 localhost 的 server 块。我们的配置只匹配域名,所以访问 localhost 会回退到默认页面。这是正常的——用域名访问就会匹配。

开放端口

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

ICP 备案(进行中)

国内服务器需要 ICP 备案。备案流程:

步骤 耗时
腾讯云在线提交 30 分钟
腾讯云初审 1-2 天
广东管局审核 7-15 个工作日

备案期间网站不能用域名访问——在腾讯云 beian.cloud.tencent.com 在线提交即可,全程不用跑任何地方。

🕳 常见被退回原因:

  • 网站名称含「博客」二字(建议用「个人技术分享」)
  • 身份证照片模糊
  • 手机号与身份证归属地不一致

备案通过后待完成

Wiki 私有化(Git bare repos)

创建 bare repo

Bare repo 是「没有工作目录的 Git 仓库」——只存历史记录,不能直接编辑文件。专门用来做远程推送目标。

sudo mkdir -p /srv/git
sudo chown ops:ops /srv/git

cd /srv/git
git init --bare work-wiki.git
git init --bare study-wiki.git

切换 remote

在本地 wiki 目录里:

cd ~/work-wiki
git remote set-url origin ops@服务器IP:/srv/git/work-wiki.git
git push origin master

cd ~/study-wiki
git remote set-url origin ops@服务器IP:/srv/git/study-wiki.git
git push origin master

🕳 git push origin mainsrc refspec main does not match any

你的默认分支可能是 master 而不是 main。用 git branch 查看,然后 push 正确的分支名。

验证

ssh ops@服务器IP
cd /srv/git/work-wiki.git
git log --oneline -3   # 应该看到提交记录

Obsidian 如何配合

Obsidian vault 本质上就是一个 Git 仓库目录。改了 remote 后 Obsidian 编辑体验完全不变——变化的只是 git push 的目的地。

在你的电脑上切换 remote

⚠️ 这一步必须在你运行 Obsidian 的电脑上执行,不只是服务器端。

打开终端:

# work-wiki
cd ~/work-wiki   # 你的 Obsidian vault 目录
git remote set-url origin ops@139.199.70.119:/srv/git/work-wiki.git
git remote -v    # 确认 remote 已改

# study-wiki
cd ~/study-wiki
git remote set-url origin ops@139.199.70.119:/srv/git/study-wiki.git
git remote -v
操作 改之前 改之后
git push → GitHub → 你的服务器
git pull ← GitHub ← 你的服务器
Obsidian 编辑 不变 不变

🕳 需要先配 SSH 免密登录。 如果没配,每次 git push 都要输密码,很烦。

ssh-keygen -t ed25519      # 一路 Enter,已有则跳过
ssh-copy-id ops@139.199.70.119   # 输一次密码

日常使用流程

  1. Obsidian 里照常编辑笔记
  2. Ctrl+S 保存(或自动保存)
  3. 终端里:
    cd ~/work-wiki
    git add -A
    git commit -m "今日笔记"
    git push
    
  4. 笔记自动推到你自己的服务器

🕳 如果 push 报 src refspec main does not match any 你的仓库默认分支是 master 不是 main。用 git branch 查看当前分支名,然后 git push origin master(或你的分支名)。一次配置以后记住即可:

git config --global init.defaultBranch main   # 可选:统一改成 main

架构总览

你的电脑 (Obsidian)
    │ git push
    ▼
私有 Git 服务器 (/srv/git/*.git)
    │
    ├──→ Hermes Agent 可 clone 处理
    │
    ▼
你的手机 (微信)
    │ 发消息
    ▼
Hermes Gateway (cron @reboot)
    │
    ├──→ DeepSeek API (推理)
    │
    ▼
微信回复
GitHub Actions (构建 Hugo)
    │ rsync (备案后)
    ▼
Nginx (/var/www/blog)
    │
    ▼
www.lyrical-wander.cn

验证清单


相关阅读: