#gemini #hypertext #internet #protocols #file-serving #server

app stargazer

一款快速且易于使用的Gemini服务器

9个稳定版本

1.2.1 2024年5月24日
1.1.1 2024年5月3日
1.1.0 2023年11月23日
1.0.5 2022年9月24日
1.0.2 2022年5月18日

#63 in 网络编程

每月48次下载

AGPL-3.0-or-later

125KB
2.5K SLoC

stargazer

Stargazer是一款快速且易于使用的Gemini服务器,无运行时依赖(如果使用musl libc编译)。

灵感主要来自 gmnisrv

Gemini项目页面

功能

  • 静态文件服务
  • 自动证书生成
  • CGI
    • 大部分与Jetforce兼容
  • SCGI
  • 多个域名和路由
    • 正则表达式重写
  • 开发模式

安装

有多种安装方法,任选其一。

通过包管理器安装

Packaging status

容器

docker pull zethra/stargazer Docker Hub

下载预构建版本

您可以从发布页面下载预构建的Linux二进制文件。该捆绑包包含静态二进制文件、示例配置文件和手册页。它应该适用于任何发行版。

从crates.io安装

cargoinstall stargazer

从源码构建

依赖项

  • POSIX或其他兼容系统
  • Rust编译器1.77或更高版本和cargo
  • scdoc(可选)用于生成手册页
  • strip(可选)(来自binutils)以减小二进制文件大小
  • Python 3(测试)
  • Python 3密码学(测试)
git clone https://git.sr.ht/~zethra/stargazer && cg stargazer
./scripts/build
# As root
./scripts/install --prefix=/usr

如果crates.io无法访问,Stargazer的每个版本的依赖项也可以在发布页面上找到。只需下载供应商tar包,将其提取到项目根目录中,然后按照INSTRUSTIONS文件中的说明操作即可。

最低支持的Rust版本策略

修补程序版本之间不会更改所需的Rust版本。

支持的平台

Stargazer官方支持Linux和FreeBSD。它可能在其他BSD、macOS、Windows和其他其依赖项支持的平台上运行,但目前尚未在这些平台上进行测试。如果对其他免费平台有足够的请求,未来可能会正式支持。虽然可能会接受支持其他平台的补丁,但请记住这一点。

使用方法

通过编辑配置文件来配置Stargazer,通常位于/etc/stargazer.ini。有关命令行选项,请参阅stargazer(1),有关配置说明,请参阅stargazer.ini(5)

安全性

Stargazer应该是相当安全的。我自己使用过它,并且进行了相当多的测试。然而,Stargazer几乎完全由一个人编写,并且没有经过任何正式的代码审查或审计,所以请记住这一点。

如果您使用CGI脚本,请务必注意。编写它们可能会很容易导致安全问题,特别是如果它们是用POSIX shell编写的。

了解安全问题

已修复:如果在握手期间收到close_notify警报,则可能导致潜在的中断 - 1.1.1之前

Stargazer的依赖项rustls存在一个可能影响Stargazer的漏洞。有关更多详细信息,请参阅RUSTSEC-2024-0336

已修复:来自异常客户端证书的潜在中断 - 1.1.0之前

Stargazer的依赖项webpki存在一个可能影响Stargazer的漏洞。有关更多详细信息,请参阅RUSTSEC-2023-0052

已修复:根逃避 - 0.4.0之前

如果请求以//开头的路径,Stargazer会从文件系统的任何位置提供文件。

复制

stargazer的所有源代码和生成的二进制文件均根据GNU AFFERO GENERAL PUBLIC LICENSE Version 3的条款授权。

贡献

请将任何补丁、错误和问题发送到stargazer邮件列表~zethra/[email protected],或者如果您愿意,提交一个错误跟踪器票据todo.sr.ht/~zethra/stargazer。您也可以直接与我联系。最新的联系方式可以在我的网站上找到sashanoraa.gay

需要帮助打包

如果您可以打包stargazer,请这样做!我目前维护Arch和Alpine包,但如果您可以为任何其他发行版打包,请这样做,并告诉我。

依赖项

~21–35MB
~604K SLoC