Gemini server written in Common Lisp
Go to file
2023-08-01 13:41:08 -06:00
src Makefile and -v flag 2023-08-01 13:41:08 -06:00
.editorconfig Makefile and -v flag 2023-08-01 13:41:08 -06:00
.gitignore unix-opts 2023-08-01 13:02:27 -06:00
build.lisp unix-opts 2023-08-01 13:02:27 -06:00
geml.asd build 2023-08-01 11:11:57 -06:00
geml.ini update readme 2023-08-01 07:43:09 -06:00
LICENSE Create LICENSE 2021-11-14 10:29:50 -06:00
Makefile Makefile and -v flag 2023-08-01 13:41:08 -06:00
packages.lisp build 2023-08-01 11:11:57 -06:00
README.md unix-opts 2023-08-01 13:02:27 -06:00

geml

Gemini server written in Common Lisp

/etc/geml/geml.ini

geml requires cert and key to be configured before it will run. And will have nothing to serve until you configure at least one domain and root. See geml.ini as an example.

cert = /var/lib/geml/localhost.crt
key = /var/lib/geml/localhost.key

[my.gmi.capsule]
root = /srv/gmi

Generate Self-Signed SSL Certificate

  • include/write helper script for this
openssl req -x509 \
  -out localhost.crt \
  -keyout localhost.key \
  -newkey rsa:2048 \
  -nodes \
  -sha256 \
  -subj '/CN=localhost' \
  -extensions EXT \
  -config <(printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

Usage

SBCL

Start sbcl with proper readline support: rlwrap sbcl

(ql:quickload "geml")
(gemini.server:start-server "/etc/geml/geml.ini")

Standalone Executable

To get a geml-server binary run:

./build.sh && ./bin/geml-server -h

Systemd

  • geml.service