#gemini #proxy #env-var #rust

app september

一个简单高效的Gemini到HTTP代理

19个版本

0.2.24 2024年6月29日
0.2.10 2023年6月20日
0.2.4 2023年3月12日
0.2.1 2022年7月17日

32HTTP服务器

Download history 117/week @ 2024-06-16 231/week @ 2024-06-23 109/week @ 2024-06-30

每月 1,000 次下载

GPL-3.0-only

43KB
589

September

github.com

September是一个用Rust编写的简单高效的Gemini到HTTP代理。

尽管September保持简单,但它包含了你想象不到的更多功能,所有功能均可通过环境变量进行配置。

用法

September的生产部署可以在https://fuwn.me找到,根胶囊设置为gemini://fuwn.me

您可以通过/proxy/路由尝试代理任何外部胶囊: https://fuwn.me/proxy/geminiprotocol.net/

Docker

docker run允许您通过-e标志传递环境变量。

# September with a custom root, listening on port 8080
docker run -d \
  -e ROOT="gemini://fuwn.me" \
  -p 8080:80 \
  fuwn/september:latest

# September with a custom root, port, and external stylesheet, listening on port 80
docker run -d \
  -e ROOT="gemini://fuwn.me" \
  -e PORT="8080" \
  -e CSS_EXTERNAL="https://example.com/style.css" \
  -p 80:80 \
  fuwn/september:latest

您可能会发现这种方式传递配置对于许多选项来说有些繁琐,因此像Portainer或Docker Compose文件这样的Docker管理工具可能很有帮助。

Docker Compose

Docker Compose是一个可文件配置的Docker实用程序,用于简化部署精确的容器配置和配置集。此存储库提供了一个示例Docker Compose文件,./docker-compose.yaml,其中包含一些您可以修改以符合您喜好的示例配置值。

编辑文件后,您可以使用docker-compose命令启动组合。

docker-compose up -d

可执行文件

虽然通常不建议这样做,但您可以通过单独运行September可执行文件并使用环境变量进行配置。

ROOT="gemini://fuwn.me" PORT="8080" CSS_EXTERNAL="https://example.com/style.css" ./september

如果可用,September将使用相对目录的.env文件来填充其配置。以下是一个添加了一些值的示例.env文件。

# .env

ROOT=gemini://fuwn.me
PORT=8080
CSS_EXTERNAL=https://example.com/style.css
HEAD=<script>/* This will appear in the head of the HTML document. */</script>

配置

所有配置选项及其示例均可在Configuration.md文件中找到。无论部署方法如何,这些选项都存在于每个情况下。

样式

想给你的网站一个全新的外观?尝试使用以下来源之一,找到时尚且极简(!!)的CSS主题/框架!

起源

九月的起源始于一个简单的请求,即在现有的Gemini代理中添加环境变量可配置的选项。

该代理已经有一些选项,只是它们是通过命令行标志配置的。显然,将网络应用程序容器化不是一个“有效用例”,每个人都应该更喜欢在自己的系统和服务器上运行原始二进制文件。此外,令人挑剔的命令行参数比行业标准的环境变量更优越,至少我是从这位作者对添加一些我已经编写好的环境变量支持代码的回应中得出这个结论的。

无论如何,我创建了代理的分支。在某个时候,我意识到这个代理根本不适用,一开始设计就很糟糕,所以我把它扔进了字面上的垃圾桶,并从头开始编写九月。

最终,一切都成功了,因为九月成为了最容易配置、功能最齐全、最容易理解(以及总体上速度最快的)Gemini到HTTP代理。

许可证

本项目采用GNU通用公共许可证v3.0授权。

依赖项

~17–30MB
~538K SLoC