···2233[](https://github.com/gemrest/september/actions/workflows/check.yaml)
4455-A simple and efficient Gemini-to-HTTP proxy written in Rust.
55+September is a simple and efficient Gemini-to-HTTP proxy written in [Rust](https://www.rust-lang.org/).
66+77+September remains simple, but packs more features than you could imagine, all configurable via environment variables.
6879## Usage
810911A production deployment of September can be found at https://fuwn.me, with the root capsule set as [gemini://fuwn.me](gemini://fuwn.me).
10121111-You can try proxying any external capsule through the /proxy route: e.g., https://fuwn.me/proxy/geminiprotocol.net/
1313+You can try proxying any external capsule through the `/proxy/` route: https://fuwn.me/proxy/geminiprotocol.net/.
12141315### Docker
1616+1717+`docker run` allows you to pass environment variables via the `-e` flag.
14181519```shell
1616-docker run -d [ -e ROOT="gemini://fuwn.me" ] [ -e PORT="8080"] [ -e CSS_EXTERNAL="https://example.com/style.css"] fuwn/september:latest
2020+# September with a custom root, listening on port 8080
2121+docker run -d \
2222+ -e ROOT="gemini://fuwn.me" \
2323+ -p 8080:80 \
2424+ fuwn/september:latest
2525+2626+# September with a custom root, port, and external stylesheet, listening on port 80
2727+docker run -d \
2828+ -e ROOT="gemini://fuwn.me" \
2929+ -e PORT="8080" \
3030+ -e CSS_EXTERNAL="https://example.com/style.css" \
3131+ -p 80:80 \
3232+ fuwn/september:latest
1733```
3434+3535+You may start to find this way of passing configuration cumbersome for many options, so Docker management tool like [Portainer](https://www.portainer.io/) or a Docker Compose file might come in handy.
18361937### Docker Compose
20382121-Edit the `docker-compose.yaml` file to your liking, and then
3939+Docker Compose is a file-configurable Docker utility to make deploying exact container configuration and configuration sets simple. This repository provides a sample Docker Compose file, [`./docker-compose.yaml`](./docker-compose.yaml), with some examples configuration values that you can modify to your liking.
4040+4141+After editing the file, you can bring up the composition using `docker-compose` command.
22422343```shell
2444docker-compose up -d
···26462747### Executable
28484949+While generally discouraged, you can run the September executable by itself and configure it through environment variables.
5050+2951```shell
3030-[ ROOT="gemini://fuwn.me" ] [ PORT="8080"] [ CSS_EXTERNAL="https://example.com/style.css"] ./september
5252+ROOT="gemini://fuwn.me" PORT="8080" CSS_EXTERNAL="https://example.com/style.css" ./september
3153```
32543333-or use a `.env` file
5555+If available, September will use the relative directory's `.env` file for populating its configuration. Here is an example `.env` file with a few values added.
34563557```dotenv
3658# .env
···3860ROOT=gemini://fuwn.me
3961PORT=8080
4062CSS_EXTERNAL=https://example.com/style.css
4141-HEAD=<script>/* september */</script>
4242-```
4343-4444-and then
4545-4646-```shell
4747-./september
6363+HEAD=<script>/* This will appear in the head of the HTML document. */</script>
4864```
49655066## Configuration
51675252-All configuration options with examples can be found in the [Configuration.md](./Configuration.md) file.
6868+All configuration options with examples can be found in the [Configuration.md](./Configuration.md) file. Regardless of deployment method, these options remain present in each case.
53695470## Styling
55715656-Want to give your website a shiny new look? Try using one of sources
5757-to find a stylish and **minimal** (!!) CSS theme/ framework!
7272+Want to give your website a shiny new look? Try using one of these sources to find a stylish and **minimal** (!!) CSS theme/ framework!
58735974- [dohliam/dropin-minimal-css](https://github.com/dohliam/dropin-minimal-css): Drop-in switcher for previewing minimal CSS frameworks
6075- [dbohdan/classless-css](https://github.com/dbohdan/classless-css): A list of classless CSS themes/frameworks with screenshots
61766262-## Capsules using September
7777+## Origins
63786464-[Add yours!](https://github.com/gemrest/september/edit/main/README.md)
7979+The story of September starts with a simple request to add environment variable-configurable options to a pre-existing Gemini proxy.
8080+8181+The proxy in question already had options, just that they were command-line flag configurable options. Apparently, containerising a networked application is not a "valid use-case", and everyone should prefer running raw binaries on their systems and servers. Also, finicky command-line arguments reign superior to the industry standard environment variable, or at least that's what I gather from this author's response to adding a few extra lines of code that I already wrote out for environment variable support.
8282+8383+Anyway, I forked the proxy. Somewhere down the line, I realised that this proxy just isn't cutting it and was poorly designed to begin with, so I threw it in the figurative trash, and wrote September from scratch.
65846666-- <https://fuwn.me/>
6767-- <https://gem.rest/>
8585+In the end, it all worked out, since September has become the easiest to configure, most feature-packed, quickest to understand (and quickest in general) Gemini-to-HTTP proxy of the bunch.
68866987## License
70887171-This project is licensed with the
7272-[GNU General Public License v3.0](https://github.com/gemrest/september/blob/main/LICENSE).
8989+This project is licensed with the [GNU General Public License v3.0](./LICENSE).