Denoscuri

A simple Gemini[1] server written using Deno[2] and Typescript[3].

GitHub page (https)

Features:

Planned features:

Unsupported features (likely won't implement):

Configuration

Create a configuration with one or more server blocks:

{
  "servers": [
    {
      "hostname": "host_one",
      "port": 5555,
      "certFile": "/var/gemini/certs/host_one_cert.pem",
      "keyFile": "/var/gemini/certs/host_one_key.pem",
      "documentRoot": "/var/gemini/host_one",
      "logFile": "/var/gemini/logs/host_one.log"
    },
    {
      "hostname": "host_two",
      "certFile": "/var/gemini/certs/host_two_cert.pem",
      "keyFile": "/var/gemini/certs/host_two_key.pem",
      "documentRoot": "/var/gemini/host_two",
      "logFile": "/var/gemini/logs/host_two.log",
      "requireCRLF": false
    }
  ]
}

port, requireCRLF, and logFile are optional configuration items, which will default to 1965, true, and ./<hostname>.log, respectively, if they are not present. All other options are required.

Running

Requires installation of Deno[2].

Using local copy

Clone the repository, then run the following commands, substituting appropriate values for the allow-read and allow-write parameters and passing the path to your config file:

deno run --allow-net --allow-read=/var/gemini --allow-write=/var/gemini/logs denoscuri.ts /var/gemini/config.json

Using an auto-fetched copy

To fetch the latest version from master and run it:

deno run --allow-net --allow-read=/var/gemini --allow-write=/var/gemini/logs https://raw.githubusercontent.com/caranatar/denoscuri/master/denoscuri.ts /var/gemini/config.json

To fetch a tagged version (such as the current one):

deno run --allow-net --allow-read=/var/gemini --allow-write=/var/gemini/logs https://raw.githubusercontent.com/caranatar/denoscuri/v0.1.0/denoscuri.ts /var/gemini/config.json

Trivia

"Denoscuri" is a portmanteau of Deno and Dioscuri - the Greek name for the twins Castor and Pollux, who became the constellation Gemini

[1] Gemini

[2] Deno (https)

[3] Typescript (https)