This project is a server implementation of the Gemini Protocol, a lightweight, secure, privacy-focused internet protocol alternative to HTTP.
The Gemini Protocol is designed to be much simpler than HTTP, focusing on serving static content securely. It uses a single request-response model, and all connections are encrypted. Unlike HTTP, Gemini requests consist of a single line (a URL), and the response contains a small header followed by the body of the response, if any.
- Go
- OpenSSL
git clone https://github.com/remreren/goemini.git
Then open the project on your preferred editor.
Generate your server's certificate and private key with OpenSSL:
openssl req -x509 -newkey rsa:4096 -keyout gemini.key -out gemini.cert -days 365 -nodes
There are two ways to run the server: installing it as a Go binary or running it directly.
To install the server as a Go binary, use:
go install ./cmd/goemini
Then, you can run the server using the binary:
/path/to/binary --cert gemini.cert --key gemini.key --path ./content/
To run the server directly without installing:
go run ./cmd/goemini --cert gemini.cert --key gemini.key --path ./content/
You can now access the server using any Gemini client. I recommend using Amfora