Home

Awesome

Denoscuri

A simple Gemini server written using Deno and Typescript.

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.

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