-- Leo's gemini proxy

-- Connecting to carcosa.net:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Germinal, a Gemini Protocol server


Germinal is a server for the Gemini Protocol written in Common Lisp.


Gemini Protocol


It is named after the early 20th century Yiddish-language anarchist newspaper Germinal. I wanted to name it after an anarchist publication to convey the idea of people sharing information and ideas with each other, in contrast to the way the web is used to push advertising from corporations to people. And it happened that Germinal shares some sounds with Gemini.


Germinal (journal)


Features


Current


Serves any type of document with an appropriate mime type.

Serves .gmi files as text/gemini, the gemini mapfile format.

Serves index.gmi as a directory listing, if it exists.

Serves a simple directory listing for directories without index.gml

Serves only world-readable content, much like Gophernicus.

Configuration in Lisp.

Use Lisp functions as path handlers or middleware.



Gophernicus


Planned


Keep up to date with protocol changes



Maybe

authentication by client certificate


Download


The source is available on my self-hosted git forge.


Germinal on git

Germinal 0.1 tarball

Germinal 0.2 tarball

Germinal 1.0.0 tarball


Installation


With Roswell


1. Install Roswell.


2. Put the Germinal sources in a folder that Common Lisp knows about; usually, either `~/common-lisp/`, or `~/.roswell/local-projects/`. You can just put a symbolic link to the folder containing the sources into either of those directories.


3. Edit `germinal.ros`, setting the configuration variables to what's appropriate for your server. In particular, you'll want to use gemcert to generate keys for your domain, and set your domain name and the path to the keys in `germinal.ros`. If you don't want to run a swank (debugging) server on localhost, you'll want to comment out the lines that start it.


4. Run `germinal.ros`. For production deployment, you'll probably want to create a user such as ~germinal~ for Germinal to run as. They'll need to own their home directory, and to run `ros setup` before you run `germinal.ros` as them. They'll also need the Germinal sources symlinked into someplace Roswell can find it, as above.


The `germinal.service` file is a pretty typical systemd configuration for running Germinal from Roswell.


Roswell

gemcert


Manually


Germinal doesn't *depend* on Roswell; you can start it up any old way, as long as you have all the dependencies installed (generally with quicklisp). You can write a script to start it with `sbcl -load` or whatever you like; it just has to set the configuration variables and run `germinal:start`.

-- Response ended

-- Page fetched on Wed Apr 24 17:29:38 2024