站点目录

文档站当前统一部署在 ~/server/docs 下:

  • ~/server/docs/docker-compose.yml:本地 Hugo 调试入口
  • ~/server/docs/site/config.toml:Hugo 站点配置
  • ~/server/docs/site/content/:文档正文
  • ~/server/docs/site/themes/PaperMod/:主题目录
  • ~/server/docs/site/public/:静态生成产物

本地调试

当前本地调试域名为:http://docs.cc.arpa

调试容器由 ~/server/docs/docker-compose.yml 启动,关键配置如下:

  • 容器名:hugo-docs
  • 镜像:hugomods/hugo:exts
  • 本地端口:127.0.0.1:1313
  • 挂载目录:~/server/docs/site -> /src
  • 重启策略:unless-stopped

启动命令:

cd ~/server/docs
docker compose up -d

线上发布

当前线上域名为:https://geoffyu.com

发布方式不是直接把 Hugo 开发容器搬到线上,而是:

  1. 在本地把站点生成到 ~/server/docs/site/public/
  2. 将生成结果同步到 ali:/root/server/geoffyu-site/site/
  3. ali 上的 nginx-duel 统一反向代理到 geoffyu-site
  4. nginx-duel 负责 HTTPS 证书和 80 -> 443 跳转

站点配置

站点核心配置文件是 ~/server/docs/site/config.toml

当前约定:

  • baseURL = "https://geoffyu.com/"
  • 默认语言为中文
  • 主题使用 PaperMod
  • 首页菜单包含:文档、关于、归档

如果要改站点标题、菜单、首页文案、文档功能开关,优先修改这个文件。

反向代理链路

线上反代链路:

geoffyu.com -> nginx-duel:443 -> geoffyu-site:80

当前 HTTPS 证书由 alinginx-duel 挂载 /root/server/duelarena/certbot/conf 中的 Let’s Encrypt 证书提供。Nginx 1.29 已改用较新的 HTTP/2 写法:

  • listen 443 ssl;
  • http2 on;

不要再继续使用旧的 listen 443 ssl http2; 写法,否则 nginx -T 会出现 deprecated warning。

本地调试链路:

docs.cc.arpa -> nginx-all -> host.docker.internal:1313 -> hugo-docs

文档发布方式

当前文章直接写在 ~/server/docs/site/content/ 下。

常见位置:

  • 首页:~/server/docs/site/content/_index.md
  • 普通页面:~/server/docs/site/content/about.md
  • 文档页:~/server/docs/site/content/docs/*.md

保存后,本地 Hugo 开发容器会自动热更新;需要上线时,再重新生成静态文件并同步到 ali