Gemini server written in Common Lisp
Go to file
2023-08-01 11:11:57 -06:00
src build 2023-08-01 11:11:57 -06:00
.editorconfig /etc/geml/geml.ini 2023-08-01 07:34:38 -06:00
build.lisp build 2023-08-01 11:11:57 -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
packages.lisp build 2023-08-01 11:11:57 -06:00
README.md build 2023-08-01 11:11:57 -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)
; or with a custom settings file location
(gemini.server:start-server "/path/to/geml.ini")

Standalone Executable

To get a geml-server binary run:

sbcl --non-interactive --load build.lisp

Systemd

  • geml.service