Gemini
Gemini это протокол прикладного уровня который специально создавался похожим на страый протокол gopher, он такой же минималистичный, но синтаксис страниц этого протокола сделан более логичным и простым, также протокол поддерживает шифрование, сертификаты, вот это все. Причины просты: многие люди создают свои сервера с блогами, статьями итд, и они хотели бы сосредоточить свои силы на самом контенте страниц, а не на оформлении, но html с сопутствующими языками типа css, php, дополнительными фреймворками которые служат в основном для красивого оформления страниц неоправданно сложен и оформление отнимает слишком много сил. Поэтому для простого написания текстовых страничек с меню часть этих функций была зашита в сам протокол.

Как оно выглядит



Ставим и настраиваем сервер
Создаем папку
mkdir gemini
Создаем заглавную страницу которая будет открываться при входе на ваш сервер
nano gemini/index.gmi

Пишем там что хотим, о синтаксисе будет сказано ниже

Создадим папку для исполняемого файла сервера
mkdir gemini/bin
cd gemini/bin

Скачиваем сервер под вашу ось и архитектуру отсюда https://github.com/mbrubeck/agate/releases
(дальше исходим из предположения что ставим в линуксе)
Распаковываем файл, переименовываем для удобства в agate и разрешаем исполнение
sudo chmod +x agate

возвращаемся в папку gemini и создаем файл gemini.sh отвечающий за старт
cd ..
nano gemini.sh

Пишем в файл
#!/bin/bash
/home/USER/gemini/bin/agate --content /home/USER/gemini/ --addr [::]:1965 --addr 0.0.0.0:1965 --hostname example.com --lang en-US
НЕ ЗАБУДЬТЕ ЗАМЕНИТЬ USER НА ВАШ ЮЗЕРНЕЙМ
Делаем файл исполняемым
sudo chmod +x gemini.sh

Запускаем (можно запускать при старте сервера через crontab например)
./gemini.sh

Синтаксис
Текст пишется без переносов, браузер gemini сам переносит слова, подстраивая строки под размер окна, как блокнот при включении переноса по словам.

Ссылки
Ссылки занимают отдельные строки, нельзя сделать ссылкой часть строки.
Строка со ссылкой начинается с =>, после чего МОЖНО но не обязательно ставить пробел, затем адрес ссылки, затем опять от одного пробела или табуляции и текст-описание.
перед ссылкой на другой сервис или сайт указывается протокол ( https:// gopher:// ftp:// ), ссылка на файл находящийся на вашем сервере должна быть относительной ( ссылк на файл в текущей папке => about_me.txt файл во вложенной папке => foo/bar/baz.txt )
Можно давать ссылки на другие gmi страницы ( => links.gmi    Интересные ссылки   =>/blog/post.gmi    Первый пост в моем gemini блоге!)

Пример
=> https://example.com A cool website
=> gopher://example.com An even cooler gopherhole
=> gopher://example.org:70/1
=> gemini://example.com A supremely cool Gemini capsule
=> sftp://example.com
=> foo/bar/baz.txt
=> blog/2024/new_year.gmi    Merry crysis and a happy new fear

И это рабочий пример
=>https://example.com A cool website
=>gopher://example.com An even cooler gopherhole
=> gopher://example.org:70/1
=> gemini://example.com A supremely cool Gemini capsule
=> sftp://example.com
=> foo/bar/baz.txt
=> blog/2024/new_year.gmi    Merry crysis and a happy new fear

Заголовки
Есть три уровня заголовков, строка заголовка начинается с символа #. По идее они в клиенте должны иметь разный размер, но некоторые браузеры кладут на это болт и заголовки имеют такой же размер что и текст.
# Заголовок первого уровня
## Заголовок второго уровня
### Заголовок третьего уровня

Списки
Несортированные списки,  каждый пункт списка начинается со звездочки *, после нее идет пробел,  и занимает одну строку.
* Mercury
* Gemini
* Apollo

Цитаты
Цитаты в gemini , цитата пишется в одну строку, начинается с символа >, при чем тут имиджборды...
> Gemtext supports blockquotes. The quoted content is written as a single long line

Форматированный текст
Строка начинающаяся с ```  переключает рендеринг текста в форматированный режим. После них клиент отображает текст так как вы его писали, со спецсимволами, переносами итд. Заканчивается форматированный текст так же символами ```


Простой пример отсюда https://kypan.me/geminispacea-web-alternative-with-serenity-and-simplicity.html
Текст index.gmi
# Welcome to my Gemini Capsule

💡 Hello world~


## My posts

=> posts/20211225.gmi December 25, 2021
=> posts/20220101.gmi January 01, 2022

=> img/geminids.jpg
=> https://commons.wikimedia.org/w/index.php?curid=30551402 By Asim Patel via Wikimedia Commons (CC BY-SA 3.0)
И как оно отображается в браузере gemini


Еще пример оттуда же
# Heading 1
## Heading 2
### Heading 3

Hard line breaks (by pressing Enter) are also rendered in the results.

Therefore, you should put the whole paragraph on its own line.
Don’t
break
long lines
manually
like this.

=> path/to/another/file Link to another file (not only .gmi)
=> https://example.com Protocols can also be specified

* List item 1
* List item 2
* List item 3

> This is a block quotation ...
> Second line ...
> Third line ...

``` This is an alt text (optional)
Preformatted block is also supported and will be rendered in monospaced font.
So you may put ASCII art here:
___ ___ _______ ___ ___ ________ ___ __ ________ ________ ___ ________
|\ \|\ \|\ ___ \ |\ \ |\ \ |\ __ \ |\ \ |\ \|\ __ \|\ __ \|\ \ |\ ___ \
\ \ \\\ \ \ __/|\ \ \ \ \ \ \ \ \|\ \ \ \ \ \ \ \ \ \|\ \ \ \|\ \ \ \ \ \ \_|\ \
\ \ __ \ \ \_|/_\ \ \ \ \ \ \ \ \\\ \ \ \ \ __\ \ \ \ \\\ \ \ _ _\ \ \ \ \ \ \\ \
\ \ \ \ \ \ \_|\ \ \ \____\ \ \____\ \ \\\ \ \ \ \|\__\_\ \ \ \\\ \ \ \\ \\ \ \____\ \ \_\\ \
\ \__\ \__\ \_______\ \_______\ \_______\ \_______\ \ \____________\ \_______\ \__\\ _\\ \_______\ \_______\
\|__|\|__|\|_______|\|_______|\|_______|\|_______| \|____________|\|_______|\|__|\|__|\|_______|\|_______|
```