今天发现一个有趣的协议: Gemini, 在目前这个时代,大家提到 Gemini 可能最先想到的是 Google 开发的人工智能助手,但其实这是一种类似 HTTP 的协议。
这个协议有趣的是只支持纯文本,使用一种被叫作 Gemtext 的轻量标记语言,这种文档格式非常简单,只支持最多 3 级的标题,链接必须写在单独的行。从这些设计中可以发现, Gemini 全部的设计都是为了一个目标: 简洁 。
由此想来,突然发现我之前写过的一些东西,标题的嵌套可能太过深,反而表现效果不是很好,过多的层次反而会消耗读者的精力。
区别与 HTTP 网站,访问其他人搭建的 Gemini 服务器时候,应该称为 「Gemini 胶囊」 ,英文是 Gemini Capsules ,站是专属于 HTTP 的概念。
访问 Gemini 胶囊 #
由于 Gemini 是一种区别与 HTTP 的协议,所以使用普通的网页浏览器就无法访问 Gemini 胶囊的,需要使用一些专门的客户端,如果你喜欢使用终端,那可以尝试使用 Amfora 这个终端中的 Gemini 客户端:
在手机上面,也可以使用 Deedum 这个软件。当然作为一个 Emacser, 那肯定是使用 Elpher 来作为客户端的,直接使用 Emacs 的包管理器就可以安装。
M-x package-install RET elpher RET
然后在 Elpher 界面上,使用 g 来访问 Gemini 胶囊了,比如说我博客的地址 gemini://lizqwer.site ,当然也可以去引导我发现这个协议的博客 gemini://cytrogen.icu 看看。
写博客 #
我主要使用 Org mode 来完成博客的书写,所以我使用了 ox-gemini 包来将 Org 写的文章导出成 .gmi 格式的文章,使用 gemini-mode 来给 Gemtext 提供基本的高亮。
部署 #
我使用 Agate 来搭建我的 Gemini 胶囊,在我的服务器上面,直接使用 docker 来部署 Agate.
services:
agate:
image: ghcr.io/mbrubeck/agate:latest
container_name: agate
ports:
- "1965:1965"
volumes:
- ./gmi:/gmi
- ./certs:/certs
environment:
- UID=1001
- GID=1001
command: --hostname hostname --lang zh
restart: unless-stopped
只要将文章放到 gmi 目录下面,就好了,在 Agate 中可以使用 index.gmi 来为当前路径设置一个默认访问地址。
我目前的目录结构大致是这样的:
.
├── index.gmi
├── posts
│ └── Gemini 协议介绍.gmi