# 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`](./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 ```sh 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` ```lisp (ql:quickload "geml") (gemini.server:start-server "/etc/geml/geml.ini") ``` ### Standalone Executable To get a `geml-server` binary run: ```sh ./build.sh && ./bin/geml-server -h ``` ### Systemd - [ ] geml.service