summaryrefslogtreecommitdiff
path: root/content/colophon.md
blob: 3022459278457182da03a8b364981dc5b06c232b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
+++
title = "考锹"
date = 2026-02-14 16:29:46
toc = true
+++

一些出版物的扉页或最后一页会附上说明,交代作者信息、出版方和印刷方式等等,这个页面叫作版权页,英文单词是「Colophon」。这个单词还是一种锹形虫(考锹甲属)的学名,我取了这一种甲虫名字的前两个字作为本页标题。

`/colophon` 页面的概念来自 [IndieWeb](https://indieweb.org/colophon)。

## 技术栈

本站是静态网站,使用全世界最快的静态网站生成器 [Hugo](https://gohugo.io/) 构建。使用的主题是自己开发的 [Venin](https://src.eltr.ac/eltrac/hugo-theme-venin),以 MIT 协议授权。博客内容的源代码见此:[eltrac/geedeapro](https://src.eltr.ac/eltrac/geedeapro)。

本站没有常规的评论系统,文章的评论、点赞等互动信息与[我的联邦宇宙账号](https://akk.eltr.ac/eltrac)互通。互通是通过 [Brid.gy](https://brid.gy/) 实现的,它会每隔一段时间抓取我的联邦宇宙账号,一旦发现新的回复和点赞,就会将互动信息以 [Webmention](https://indieweb.org/Webmention) 的形式发送到这个网站上。

本站的 Webmention 接收端是自己开发部署的 [Weepinbell](https://codeberg.org/eltrac/weepinbell)。Webmention 不是通过 JavaScript 动态抓取的,而是在受到新 Webmention 时通过 Webhook 触发重新构建,所以需要等一两分钟才能看到发送到本站的 Webmention。

本站选择技术栈的原则是:==静态高于一切==,以及==内容网站不应该大量依赖 JavaScript==。

## 构建和部署

本站部署在 [Contabo](https://contabo.com/) 的 VPS 上,一家德国的云计算公司,服务器位于欧盟地区,数据受到 GDPR 法律保护。我使用 [Caddy](https://caddyserver.com/) 运行 Web 服务器并自动签发 SSL 证书;没有什么复杂的配置,仅仅是写在 `Caddyfile` 里的一行 `file_server` 而已。

网站的代码托管在名为 [Hydra](https://src.eltr.ac/) 的 Forgejo 实例上,CI/CD 工作流也运行在自己部署的 Forgejo Runner 里。如果你不了解这是什么,可以简单理解为自有的 GitHub 和 GitHub Actions。至于部署,是通过 Webhook 在每次 `git push` 推送新代码到 Forgejo 仓库后,触发 VPS 上的构建脚本进行的,所以不能算严格意义上的「部署」,网站是直接在宿主机上「构建」的。

如果你问我为什么部署静态网站还要用一台 VPS:那是因为我还有别的服务跑在上面,以及我非常在乎我的数字主权。

## 发布流程

我在本地使用 [NeoVim](https://neovim.io/) 编辑器,以 Markdown 格式撰写文章,用 TOML 格式编写页面元数据(Frontmatter)。我使用 [Git](https://git-scm.com/) 作为版本管理工具,当有改动被推送到自己部署的远程仓库之后,就会触发网站重新构建,新页面也就在这个过程中被发布。

本站的文字内容全部由我本人撰写,不接受投稿([周刊](/categories/稻草人周刊/)会接受推荐,但仍由我本人撰稿),也绝对不会使用 AI 生成。

## 性能

本站的 [PageSpeed Insight](https://pagespeed.web.dev/) 得分如下,我会加油做得更好的!

![](https://img.eltr.ac/geedeapro/colophon/pagespeed-insight-20250214.png)

本站使用 [instantpage.js](https://github.com/instantpage/instant.page) 优化页面打开速度。

## 数据收集

本站没有 Cookie。

本站会在你的 LocalStorage 里存储三项数据:

- `geedeapro.fediInstance`:如果你使用了文章互动区的联邦宇宙表单并填写了你的实例域名,这个域名会被保存在本地。
- `geedeapro.theme`:如果你切换了配色方案(自动、亮色或暗色),网站会记住你的选择。
- `geedeapro.ui.seenAndUsedBat`:本站的返回顶部按钮的样式是一只蝙蝠,他叫 Batrick,点击它你就能回到页面顶部;如果你见过并使用了 Batrick,这个行为会被保存,这之后 Batrick 就不会告诉你他是来「带你上去」的了,默认你已经知晓如何使用返回顶部按钮。

以上数据全都储存在本地,不会被发送到服务器,你可以随时删除。

流量统计使用注重隐私保护、不跟踪用户的 [GoatCounter](https://goatcounter.com/),统计数据是[公开的](https://stats.geedea.pro/)。我只能看到「有多少人访问了某页面」「我的访客中有多少人使用某操作系统、某浏览器」「我的访客中有多少人来自某某国家」,但我没有办法知道这个人是谁,因为本站不会跟踪用户。如果你想完全悄无声息地访问我的网站,请在 URL 最后加上 `#toggle-goatcounter`,这样你的踪迹就完全不会被记录。

## 其他

- 搜索功能使用 [Pagefind](https://pagefind.app/) 实现。
- 图片等媒体文件由 [bunny.net](https://bunny.net/) 托管,数据存储于欧盟地区,有亚太和北美的节点。
- 网站的图标来源
	- Favicon: [Icons8](https://icons8.com/icon/dFh2MtWbG5FC/skull)
	- Logo: [Freepik](http://www.freepik.com)
	- Other Icons: [RPG Game Filled Icons Collection](https://www.svgrepo.com/collection/rpg-game-filled-icons/)
- 文章标题中使用的 CSS 扭曲效果来自 [endtimes.dev](https://endtimes.dev)
- 网站背景纹理来自 [Hero Patterns](https://heropatterns.com)