parent
cbdadef165
commit
d2195ca1b9
43
README.gmi
43
README.gmi
|
@ -1,20 +1,23 @@
|
|||
# egalaxyd
|
||||
|
||||
# Status
|
||||
A smallweb server from proton to supercluster.
|
||||
|
||||
## 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
|
||||
### 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 .
|
||||
There is a list of features and bugfixes which guard the road to v1.0, tracked in the roadmap:
|
||||
=> roadmap.org Roadmap
|
||||
|
||||
|
||||
## Spartan support
|
||||
### 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.
|
||||
|
||||
|
@ -23,40 +26,48 @@ By default, egalaxyd listens for Spartan requests on port 3000. This is user-con
|
|||
No special attention is paid to the interactive portions of the Spartan protocol specification.
|
||||
|
||||
|
||||
# Setup instrutions
|
||||
## Setup instrutions
|
||||
|
||||
## Quickstart with docker
|
||||
### Quickstart with docker
|
||||
|
||||
Just `docker run -it -p 1965:1965 -p 300:3000 tildegit.org/slondr/egalaxyd:latest `. Boom, you are now serving content on Gemini at port 1965 and on Spartan at port 300. Yeah, it's that easy! (Assuming you had rights to port 300).
|
||||
Just
|
||||
```
|
||||
docker run -it -p 1965:1965 -p 300:3000 tildegit.org/slondr/egalaxyd:latest
|
||||
```
|
||||
Boom, you are now serving content on Gemini at port 1965 and on Spartan at port 300. Yeah, it's that easy! (Assuming you had rights to port 300).
|
||||
|
||||
Note that the docker setup command creates an SSL certificate that is very well-known. It's useful to check your network setup by hitting localhost:1965 with a gemini client and seeing the hello world message, but if you get beyond that point you must delete the `server.crt' and `server.key' files and re-generate them using your actual domain information.
|
||||
|
||||
The container will serve files directly out of the `/root/public' directory by default, so just put more gmi files (or whatever you want to serve) there.
|
||||
|
||||
|
||||
## Installing from source
|
||||
### Installing from source
|
||||
|
||||
This is the recommended way to install production instances of egalaxyd.
|
||||
|
||||
Run `MIX_ENV=prod mix deps.get; 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!
|
||||
Run MIX_ENV=prod mix deps.get; mix release, and then executed the indicated start command, which by default is:
|
||||
```
|
||||
_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 certificate.
|
||||
Make sure you start the application from a working directory containing the toml config file and your SSL certificate.
|
||||
|
||||
The releases command also produces a tarball, which can be copied to another machines, untarred and run as-is. The other machine does *not* need Erlang or Elixir installed on the machine; egalaxyd has no external dependencies except ncurses when run this way. The build machine and target machine must have the same target triple (OS, architecture, ABI) though.
|
||||
|
||||
|
||||
# History
|
||||
## 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
|
||||
## 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 this (now very-outdated) gemlog post
|
||||
If you want more of a marketing pitch, see this (now very-outdated) gemlog post:
|
||||
=> gemini://tilde.pink/~slondr/geminex.gmi original geminex announcement
|
||||
|
|
84
README.md
84
README.md
|
@ -1,61 +1,75 @@
|
|||
# egalaxyd
|
||||
|
||||
A smallweb server from proton to supercluster.
|
||||
|
||||
## 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).
|
||||
|
||||
|
||||
# Status
|
||||
### Gemini support
|
||||
|
||||
egalaxyd provides a robust, parallel, fault-tolerant server for the Gemini and Spartan protocols. It is production-ready, although not fully battle tested.
|
||||
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.
|
||||
|
||||
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).
|
||||
There is a list of features and bugfixes which guard the road to v1.0, tracked in the roadmap:
|
||||
[Roadmap](roadmap.org)
|
||||
|
||||
|
||||
## 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.
|
||||
### Spartan support
|
||||
|
||||
There is a list of features and bugfixes which guard the road to v1.0, tracked in <roadmap.md>.
|
||||
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.
|
||||
|
||||
|
||||
## Spartan support
|
||||
## Setup instrutions
|
||||
|
||||
egalaxyd's spartan server is fairly complete. Properly-formed requests are handled correctly. There may be some rough edges with regards to configuration.
|
||||
### Quickstart with docker
|
||||
|
||||
By default, egalaxyd listens for Spartan requests on port 3000. This is user-configurable.
|
||||
Just
|
||||
```
|
||||
docker run -it -p 1965:1965 -p 300:3000 tildegit.org/slondr/egalaxyd:latest
|
||||
```
|
||||
Boom, you are now serving content on Gemini at port 1965 and on Spartan at port 300. Yeah, it's that easy! (Assuming you had rights to port 300).
|
||||
|
||||
No special attention is paid to the interactive portions of the Spartan protocol specification.
|
||||
Note that the docker setup command creates an SSL certificate that is very well-known. It's useful to check your network setup by hitting localhost:1965 with a gemini client and seeing the hello world message, but if you get beyond that point you must delete the `server.crt' and `server.key' files and re-generate them using your actual domain information.
|
||||
|
||||
The container will serve files directly out of the `/root/public' directory by default, so just put more gmi files (or whatever you want to serve) there.
|
||||
|
||||
|
||||
# Setup instrutions
|
||||
### Installing from source
|
||||
|
||||
This is the recommended way to install production instances of egalaxyd.
|
||||
|
||||
## Quickstart with docker
|
||||
|
||||
Just `docker run -it -p 1965:1965 -p 300:3000 tildegit.org/slondr/egalaxyd:latest`. Boom, you are now serving content on Gemini at port 1965 and on Spartan at port 300. Yeah, it's that easy! (Assuming you had rights to port 300).
|
||||
|
||||
Note that the docker setup command creates an SSL certificate that is very well-known. It's useful to check your network setup by hitting localhost:1965 with a gemini client and seeing the hello world message, but if you get beyond that point you must delete the `server.crt` and `server.key` files and re-generate them using your actual domain information.
|
||||
|
||||
The container will serve files directly out of the `/root/public` directory by default, so just put more gmi files (or whatever you want to serve) there.
|
||||
|
||||
|
||||
## Installing from source
|
||||
|
||||
This is the recommended way to install production instances of egalaxyd.
|
||||
|
||||
Run `MIX_ENV=prod mix deps.get; 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!
|
||||
Run MIX_ENV=prod mix deps.get; mix release, and then executed the indicated start command, which by default is:
|
||||
```
|
||||
_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 certificate.
|
||||
|
||||
|
||||
# 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.
|
||||
The releases command also produces a tarball, which can be copied to another machines, untarred and run as-is. The other machine does *not* need Erlang or Elixir installed on the machine; egalaxyd has no external dependencies except ncurses when run this way. The build machine and target machine must have the same target triple (OS, architecture, ABI) though.
|
||||
|
||||
|
||||
# Motivation
|
||||
## History
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
In support of those goals, egalaxyd aims to implement reasonable conventions without necessary configuration, and strives for fault-tolerance and scalability.
|
||||
The first version of the project under the name egalaxyd was 0.3, to represent a linear transition forward from geminex.
|
||||
|
||||
If you want more of a marketing pitch, see this (now very-outdated) gemlog post (gemini://tilde.pink/~slondr/geminex.gmi).
|
||||
|
||||
## 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:
|
||||
[original geminex announcement](gemini://tilde.pink/~slondr/geminex.gmi)
|
||||
|
||||
|
|
45
README.org
45
README.org
|
@ -1,45 +0,0 @@
|
|||
#+title: egalaxyd
|
||||
#+subtitle: a smallweb server from proton to supercluster
|
||||
#+author:
|
||||
#+options: toc:nil num:nil
|
||||
* 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 file:roadmap.org.
|
||||
** 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
|
||||
** Quickstart with docker
|
||||
Just ~docker run -it -p 1965:1965 -p 300:3000 tildegit.org/slondr/egalaxyd:latest~. Boom, you are now serving content on Gemini at port 1965 and on Spartan at port 300. Yeah, it's that easy! (Assuming you had rights to port 300).
|
||||
|
||||
Note that the docker setup command creates an SSL certificate that is very well-known. It's useful to check your network setup by hitting localhost:1965 with a gemini client and seeing the hello world message, but if you get beyond that point you must delete the =server.crt= and =server.key= files and re-generate them using your actual domain information.
|
||||
|
||||
The container will serve files directly out of the =/root/public= directory by default, so just put more gmi files (or whatever you want to serve) there.
|
||||
** Installing from source
|
||||
This is the recommended way to install production instances of egalaxyd.
|
||||
|
||||
Run =MIX_ENV=prod mix deps.get; 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 certificate.
|
||||
* 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
|
||||
:PROPERTIES:
|
||||
:ID: 9bdbc436-6b11-4209-abc2-344a9f81185e
|
||||
:END:
|
||||
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 [[gemini://tilde.pink/~slondr/geminex.gmi][this (now very-outdated) gemlog post]].
|
Loading…
Reference in New Issue