geml/README.md

57 lines
1.1 KiB
Markdown
Raw Normal View History

2023-08-01 13:34:38 +00: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
2023-08-01 13:43:09 +00:00
[`geml.ini`](./geml.ini) as an example.
2023-08-01 13:34:38 +00:00
```
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
2023-08-01 17:11:57 +00:00
(ql:quickload "geml")
2023-08-01 19:02:27 +00:00
(gemini.server:start-server "/etc/geml/geml.ini")
2023-08-01 13:34:38 +00:00
```
2023-08-01 17:11:57 +00:00
2023-08-01 13:43:09 +00:00
### Standalone Executable
2023-08-01 13:34:38 +00:00
2023-08-01 17:11:57 +00:00
To get a `geml-server` binary run:
```sh
2023-08-01 19:02:27 +00:00
./build.sh && ./bin/geml-server -h
2023-08-01 17:11:57 +00:00
```
2023-08-01 13:43:09 +00:00
### Systemd
- [ ] geml.service