Gemini — это новый интернет-протокол, отличающийся от HTTP и Gopher. Он намного чище и имеет растущее сообщество и аудиторию.

Зачем использовать протокол Gemini?

  • Капсулы Gemini (веб-страницы Gemini) легкие, минималистичные и не требуют много ресурсов для работы.
  • Он может работать вместе с вашими веб-сайтами. Капсулы Gemini по умолчанию используют порт 1965. Ваш веб-сервер может работать через порт 80 или 443, а сервер Gemini — через порт 1965.
  • Изучая альтернативный протокол, вы можете проверить различные способы предоставления данных и блогов.

Чтобы получить доступ к любым URL-адресам Gemini, например, gemini://example.org, вы можете использовать любой клиент Gemini, например amfora, lagrange, elpher и т.д.

Предварительные условия

  • Сервер под управлением Ubuntu 24.04 или любой другой ОС Linux.
  • Привилегии пользователя: пользователь root или не root с привилегиями sudo.

Конвенции

1
2
# - данные команды должны выполняться с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo.
$ - данные команды должны выполняться от имени обычного пользователя

Шаг 1. Обновите систему

Мы предполагаем, что у вас установлена ​​новая версия Ubuntu 24.04. Нам необходимо обновить системные пакеты до последних доступных версий. Для этого выполните следующие команды:

1
sudo apt update -y && sudo apt upgrade -y

Шаг 2. Добавьте системного пользователя

Gemini будет управляться новым пользователем системы по имени gemini. Давайте теперь создадим нового системного пользователя, выполним эту команду ниже.

1
2
3
4
5
6
7
/usr/sbin/adduser \
   --system \
   --shell /bin/bash \
   --gecos 'Gemini user' \
   --group \
   --home /home/gemini \
gemini

Затем давайте дадим новому пользователю пароль.

1
# passwd gemini

Вам будет предложено дважды ввести пароль пользователя gemini, пароль не будет отображаться на вашем экране.

Давайте теперь переключимся на нового пользователя. С этого момента команды будут выполняться новым пользователем.

1
# su - gemini

Чтобы создать и обслуживать капсулу Gemini необходимо:

  1. Контент – веб-страницы в нашей капсуле.
  2. Сертификат TLS — Gemini требует зашифрованного соединения.
  3. Сервер Gemini — программа, которая делает нашу капсулу доступной (аналогично Nginx для HTTP).

Как пользователь Gemini, мы можем создать три разных каталога, чтобы упростить процесс:

1
$ mkdir -p ~/gemini/{content,certificate,server}

Шаг 3. Добавьте контент

Это будет каталог, в котором будут храниться файлы вашей капсулы. Gemini использует разметку text/gemini (вместо HTTP-эквивалента HTML). Он в значительной степени заимствован у Markdown. Подобно .html или .md, Gemini использует в качестве расширения .gmi.

Чтобы создать один файл Gemini, зайдите в каталог содержимого и создайте один файл index.gmi.

1
$ nano gemini/content/index.gmi

Мы можем добавить желаемый контент в нашу капсулу Gemini здесь:

1
2
3
4
# Это пример страницы Gemini
## С заголовком 1 и заголовком 2
И такой короткий абзац.
=> /index.gmi Ссылка на ту же страницу

Шаг 4. Добавьте TLS-сертификат

Перейдите в каталог сертификатов, который мы создали ранее, и сгенерируйте сертификат TLS с помощью OpenSSL.

1
2
$ cd ~/gemini/certificate/
$ openssl req -new -subj "/CN=example.org" -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -days 3650 -nodes -out cert.pem -keyout key.pem

Шаг 5. Загрузите и установите Gemini

Доступно множество вариантов программного обеспечения для серверов Gemini. Сейчас мы будем использовать сервер Agate. Это простой сервер Gemini, написанный на Rust.

Рекомендуется всегда получать самую последнюю версию, которую вы можете увидеть на странице выпусков Agate. На момент написания статьи это agate v3.3.7, который мы сейчас скачаем. Мы загрузим его в созданный нами каталог сервера.

1
2
$ cd ~/gemini/server
$ wget https://github.com/mbrubeck/agate/releases/download/v3.3.7/agate.x86_64-unknown-linux-gnu.gz

Разархивируйте gz, затем переименуйте и сделайте его исполняемым:

1
2
3
$ gunzip agate.x86_64-unknown-linux-gnu.gz
$ mv agate.x86_64-unknown-linux-gnu agate-server
$ chmod +x agate-server

Шаг 6. Создать системный сервис

Теперь нам нужно создать службу systemd для автозапуска и управления агатом. У пользователя Gemini нет разрешения на это, поэтому нажмите ctrl-d, чтобы выйти из системы пользователя Gemini и вернуться под root. От имени пользователя root создайте файл ниже, открыв его в текстовом редакторе (nano, vim и т.д.):

1
# nano /etc/systemd/system/agate.service

Добавьте в файл следующее содержимое, настроив выделенный текст под свои нужды.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[Unit]
Description=agate
After=network.target

[Service]
User=gemini
Type=simple
ExecStart=/home/gemini/gemini/server/agate-server --content /home/gemini/gemini/content --certs /home/gemini/gemini/certificate/ --hostname example.org --lang ru-RU

[Install]
WantedBy=default.target

Теперь мы готовы запустить сервер. Включите и запустите сервер Agate.

1
2
# systemctl enable agate.service
# systemctl start agate.service

Шаг 7. Брандмауэр

Наконец, если у вас работает брандмауэр, не забудьте открыть порт 1965, который является номером порта, используемого Gemini:

1
# ufw allow 1965

Завершение

Теперь ваш сервер должен работать. Если все прошло хорошо, вы можете получить доступ к своей капсуле Gemini через любой клиент Gemini с таким URL-адресом:

1
gemini://example.org

Пример сайта Gemini для справки:

1
gemini://gemini.circumlunar.space

Наслаждайтесь своей первой капсулой Gemini.

Информацию о том, как писать на языке разметки «gemtext» в Gemini, можно найти на этом сайте: https://gemini.circumlunar.space/docs/gemtext.gmi. Как нетрудно догадаться, здесь также есть аналогичная капсула-близнец:

1
gemini://gemini.circumlunar.space/docs/gemtext.gmi.

Если вам понравился этот пост о том, как установить Gemini на Ubuntu 24.04. Вы также можете поделиться этим постом с друзьями в социальных сетях, кому эта статья может быть интересна или просто оставьте комментарий ниже. Спасибо.