molly-brown на Debian 13
molly-brown это - это полнофункциональный сервер Gemini на Go. На текущий момент это единственный сервер, доступный из репозитория Debian.
Устанавливаем пакеты:
# apt install molly-brown ncat ssl-cert
Качаем исходники пакета и запускаем скрипт:
$ apt source molly-brown
# sh molly-brown-0.0~git20230820.2068c3b/debian/tests/run-server
Если интересно, содержание скрипта следующее:
#!/bin/sh
set -e
set -x
# Set hostname to match certificates
echo "Hostname = \"$(hostname -f)\"" >> /etc/molly-brown/localhost.conf
# Create links for SSL certificate and key
mkdir --parents /etc/molly-brown/certs
ln --symbolic --force /etc/ssl/certs/ssl-cert-snakeoil.pem \
/etc/molly-brown/certs/localhost.crt
ln --symbolic --force /etc/ssl/private/ssl-cert-snakeoil.key \
/etc/molly-brown/certs/localhost.key
# Create gemtext documents
mkdir --parents /var/lib/molly-brown
cat > /var/lib/molly-brown/test.gmi <<EOF
# Gemtext example
This is an example of gemtext.
## List example
* Item 1
* Item 2
## Quote example
> Hello, world.
EOF
mkdir --parents /var/lib/molly-brown/users/molly
cat > /var/lib/molly-brown/users/molly/test.gmi <<EOF
# Example using HomeDocBase
This document is accessed through ~/molly/test.gmi path.
EOF
# Start server
systemctl enable molly-brown@localhost
systemctl start molly-brown@localhost
sleep 10
# Get various documents and folder listings
for i in / /test.gmi /~/ /~/molly/ /~/molly/test.gmi
do
url="gemini://$(hostname -f)$i"
echo
echo "Get $url"
echo "$url" | ncat --ssl localhost 1965 || exit 1
done
Вы можете использовать этот скрипт или написать свой на основе этого.
Вы успешно установили и запустили сервер. Это было не сложно, правда?
Теперь всё что осталось - это загрузить нашу капсулу в директорию
/var/log/private/molly-brown. К сожалению, этот метод
подразумевает загрузку капсулы только через суперпользователя, потому-что
systemd напрямую контролирует права и владельцев
/var/log/private.
Чтобы загружать файлы как обычный пользователь необходимо в файле
конфигурации поменять путь DocBase на что-то другое (например
/var/gemini) и выдать права или владение директории нужному
пользователю, а затем перезагрузить сервер.
$ mkdir /var/gemini
$ sed -i 's|lib/private/molly-brown|gemini|g' /etc/molly-brown/localhost.conf
$ chown lessavin /var/gemini
$ systemctl restart molly-brown@localhost.service