src | ||
.editorconfig | ||
.gitignore | ||
build.lisp | ||
geml.asd | ||
geml.ini | ||
geml.service | ||
LICENSE | ||
Makefile | ||
packages.lisp | ||
README.md |
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
Standalone Executable
To get an executable bin/geml-server
run make
.
make && bin/geml-server -h
Systemd
Install the build to /usr/local/bin/geml-server
with
sudo make install
which will also wire up systemd so you can sudo systemctl enable --now geml
You'll need to sudo systemctl restart geml
whenever you update
/etc/geml/geml.ini
... you did do that didn't you?
yeet it
To undo all that run these:
sudo make uninstall
make clean
SBCL
Start sbcl with proper readline support: rlwrap sbcl
(ql:quickload "geml")
(gemini.server:start-server "/etc/geml/geml.ini")