♻️ Simple & Efficient Gemini-to-HTTP Proxy fuwn.net
proxy gemini-protocol protocol gemini http rust
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

docs(readme): update usage and format

Fuwn 4b6513ca be94f5ce

+39 -22
+39 -22
README.md
··· 2 2 3 3 [![github.com](https://github.com/gemrest/september/actions/workflows/check.yaml/badge.svg?branch=main)](https://github.com/gemrest/september/actions/workflows/check.yaml) 4 4 5 - A simple and efficient Gemini-to-HTTP proxy written in Rust. 5 + September is a simple and efficient Gemini-to-HTTP proxy written in [Rust](https://www.rust-lang.org/). 6 + 7 + September remains simple, but packs more features than you could imagine, all configurable via environment variables. 6 8 7 9 ## Usage 8 10 9 11 A production deployment of September can be found at https://fuwn.me, with the root capsule set as [gemini://fuwn.me](gemini://fuwn.me). 10 12 11 - You can try proxying any external capsule through the /proxy route: e.g., https://fuwn.me/proxy/geminiprotocol.net/ 13 + You can try proxying any external capsule through the `/proxy/` route: https://fuwn.me/proxy/geminiprotocol.net/. 12 14 13 15 ### Docker 16 + 17 + `docker run` allows you to pass environment variables via the `-e` flag. 14 18 15 19 ```shell 16 - docker run -d [ -e ROOT="gemini://fuwn.me" ] [ -e PORT="8080"] [ -e CSS_EXTERNAL="https://example.com/style.css"] fuwn/september:latest 20 + # September with a custom root, listening on port 8080 21 + docker run -d \ 22 + -e ROOT="gemini://fuwn.me" \ 23 + -p 8080:80 \ 24 + fuwn/september:latest 25 + 26 + # September with a custom root, port, and external stylesheet, listening on port 80 27 + docker run -d \ 28 + -e ROOT="gemini://fuwn.me" \ 29 + -e PORT="8080" \ 30 + -e CSS_EXTERNAL="https://example.com/style.css" \ 31 + -p 80:80 \ 32 + fuwn/september:latest 17 33 ``` 34 + 35 + 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. 18 36 19 37 ### Docker Compose 20 38 21 - Edit the `docker-compose.yaml` file to your liking, and then 39 + 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. 40 + 41 + After editing the file, you can bring up the composition using `docker-compose` command. 22 42 23 43 ```shell 24 44 docker-compose up -d ··· 26 46 27 47 ### Executable 28 48 49 + While generally discouraged, you can run the September executable by itself and configure it through environment variables. 50 + 29 51 ```shell 30 - [ ROOT="gemini://fuwn.me" ] [ PORT="8080"] [ CSS_EXTERNAL="https://example.com/style.css"] ./september 52 + ROOT="gemini://fuwn.me" PORT="8080" CSS_EXTERNAL="https://example.com/style.css" ./september 31 53 ``` 32 54 33 - or use a `.env` file 55 + 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. 34 56 35 57 ```dotenv 36 58 # .env ··· 38 60 ROOT=gemini://fuwn.me 39 61 PORT=8080 40 62 CSS_EXTERNAL=https://example.com/style.css 41 - HEAD=<script>/* september */</script> 42 - ``` 43 - 44 - and then 45 - 46 - ```shell 47 - ./september 63 + HEAD=<script>/* This will appear in the head of the HTML document. */</script> 48 64 ``` 49 65 50 66 ## Configuration 51 67 52 - All configuration options with examples can be found in the [Configuration.md](./Configuration.md) file. 68 + 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. 53 69 54 70 ## Styling 55 71 56 - Want to give your website a shiny new look? Try using one of sources 57 - to find a stylish and **minimal** (!!) CSS theme/ framework! 72 + Want to give your website a shiny new look? Try using one of these sources to find a stylish and **minimal** (!!) CSS theme/ framework! 58 73 59 74 - [dohliam/dropin-minimal-css](https://github.com/dohliam/dropin-minimal-css): Drop-in switcher for previewing minimal CSS frameworks 60 75 - [dbohdan/classless-css](https://github.com/dbohdan/classless-css): A list of classless CSS themes/frameworks with screenshots 61 76 62 - ## Capsules using September 77 + ## Origins 63 78 64 - [Add yours!](https://github.com/gemrest/september/edit/main/README.md) 79 + The story of September starts with a simple request to add environment variable-configurable options to a pre-existing Gemini proxy. 80 + 81 + 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. 82 + 83 + 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. 65 84 66 - - <https://fuwn.me/> 67 - - <https://gem.rest/> 85 + 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. 68 86 69 87 ## License 70 88 71 - This project is licensed with the 72 - [GNU General Public License v3.0](https://github.com/gemrest/september/blob/main/LICENSE). 89 + This project is licensed with the [GNU General Public License v3.0](./LICENSE).