跳过正文
Background Image

Gemini 协议介绍

·657 字·2 分钟·
lizqwerscott
作者
lizqwerscott

今天发现一个有趣的协议: 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