a smolweb server from proton to supercluster
Go to file
Eric S. Londres 05f517b3be
more work on packer build script (not complete yet)
2022-08-17 20:16:29 -04:00
config reconfigured project to work with rename and rescoping 2022-07-31 19:52:17 -04:00
lib disallow directory backtracking (by default) 2022-08-08 22:52:41 -04:00
meta more work on packer build script (not complete yet) 2022-08-17 20:16:29 -04:00
test fix test suite which was not running (whoops) 2022-08-08 22:55:45 -04:00
.build.yml fix builds 2022-07-31 18:34:52 -04:00
.formatter.exs create git repository 2022-02-19 12:49:20 -05:00
.gitignore update gitignore and add index file for easy testing 2022-07-31 19:25:22 -04:00
COPYING rename license file 2022-02-19 12:57:53 -05:00
README.gmi update readme 2022-07-31 20:44:10 -04:00
README.md update readme 2022-08-08 21:40:13 -04:00
README.org update readme 2022-08-08 21:40:13 -04:00
geminex.gmi update readme with new project name 2022-07-31 19:24:00 -04:00
geminex.toml hmm 2022-02-20 17:46:37 -05:00
index.gmi update gitignore and add index file for easy testing 2022-07-31 19:25:22 -04:00
mix.exs disallow directory backtracking (by default) 2022-08-08 22:52:41 -04:00
mix.lock implement TOML-based user configuration 2022-02-20 16:27:27 -05:00
roadmap.org update roadmap 2022-08-08 23:10:43 -04:00

README.md

Status

egalaxyd provides a robust, parallel, fault-tolerant server for the Gemini and Spartan protocols. It is production-ready, although not fully battle tested.

egalaxyd really shines when run on a multi-core computer, and will take full advantage of the CPU resources it can get its hands on. Despite this, egalaxyd is very memory-efficient, and will typically not use more than 64 MB of memory even under heavy sustained load (in the realm of tens of thousands of simultaneous requests served on commodity hardware).

Gemini support

egalaxyd supports basic server functionality. Properly-formed requests are usually handled correctly. Directory re-writing, MIME type support, and basic response codes are implemented. Application errors or erroneous requests do not cause the entire server to crash; egalaxyd is self-healing.

There is a list of features and bugfixes which guard the road to v1.0, tracked in <roadmap.md>.

Spartan support

egalaxyd's spartan server is fairly complete. Properly-formed requests are handled correctly. There may be some rough edges with regards to configuration.

By default, egalaxyd listens for Spartan requests on port 3000. This is user-configurable.

No special attention is paid to the interactive portions of the Spartan protocol specification.

Setup instrutions

Run MIX_ENV=prod mix release, and then executed the indicated start command (by default, _build/prod/rel/egalaxyd/bin/egalaxyd start). egalaxyd is now serving files on both Gemini and Spartan from your current working directory!

Make sure you start the application from a working directory containing the toml config file and your SSL certificates.

History

egalaxyd started life as a Gemini server named Geminex, which became feature-complete as a Gemini server by version 0.2. A separate but technically very similar spartan protocol server named Diarchy was written about six months later. In late July 2022, the project ambitions were merged into a single monolithic application, mainly out of a desire to implement Titan support for both servers at the same time.

The first version of the project under the name egalaxyd was 0.3, to represent a linear transition forward from geminex.

Motivation

I wanted a Gemini server that is both braindead easy to use quickly (think like serve in the Node space or http.server in Python) and viable for serious production use.

In support of those goals, egalaxyd aims to implement reasonable conventions without necessary configuration, and strives for fault-tolerance and scalability.

If you want more of a marketing pitch, see this (now very-outdated) gemlog post (gemini://tilde.pink/~slondr/geminex.gmi).