5个版本 (3个重大更新)
新版本 0.4.0 | 2024年8月15日 |
---|---|
0.3.0 | 2024年8月12日 |
0.2.0 | 2024年8月11日 |
0.1.1 | 2024年8月11日 |
0.1.0 | 2024年8月10日 |
#23 在 HTTP客户端
每月518次下载
58KB
1K SLoC
git-gemini-forge
一个简单的Gemini胶囊(服务器),将Git forge的公共仓库桥接到Geminispace。受masalachai的gemini-git-browser启发。
使用Gemini浏览器(如Lagrange)在gemini://git.average.name查看项目演示。
建设中
[!警告] 此项目正在积极建设中,缺少基本功能。输入和环境变量可能会在任何时候更改,直到v1.0.0。
功能
此胶囊代理给定git forge的公共API,通常通过localhost。
支持的Forge
Forge支持愿望清单
路由
/
-> 列出多个代码仓库,按最近活动排序。/users
-> 列出forge的多个用户。/users/{username}
-> 列出给定用户的代码仓库。/users/{username}/{repository}
-> 列出给定仓库的分支和代码树,以及HTTP视图的链接。/users/{username}/{repository}/src/branch/{branch}
-> 尚未实现。/users/{username}/{repository}/src/branch/{branch}/{filename}
-> 尚未实现。
待办事项
- 显示仓库文件树的第1级。
- 显示更多仓库元数据(描述等)。
- 显示仓库的任意文件树。
- 在主页上渲染仓库的README文件。
- 分页长列表。
- 解决GitLab集成的故障。
安装
见下文 了解如何配置环境变量。
Docker
创建一个如下的compose.yaml
文件
services:
git-gemini-forge:
image: git.average.name/averagehelper/git-gemini-forge:latest
container_name: git-gemini-forge
restart: unless-stopped
environment:
- FORGE_TYPE=forgejo
- FORGE_URL=http://localhost:3000
volumes:
- "./.certs:/app/.certs:ro"
network_mode: "host"
还可以参考这里提供的示例compose.yaml
文件。
如果您的git forge位于与主机不同的网络上,则省略network_mode
并指定一个ports
映射
services:
git-gemini-forge:
# [...]
ports:
- "1965:1965"
然后运行
docker compose pull
docker compose up -d
Cargo
这个crate已在我们自己的包注册处发布。安装cargo
后,运行以下命令
cargo install --index sparse+https://git.average.name/api/packages/AverageHelper/cargo/ git-gemini-forge
也可从crates.io获取
cargo install git-gemini-forge
然后使用以下方式运行
FORGE_URL=http://localhost:3000 git-gemini-forge
从源码构建
使用git
克隆此项目。然后,安装cargo
后,使用以下命令运行项目
FORGE_URL=http://localhost:3000 cargo run --release
环境变量
CERTS_DIR
:当二进制运行时的当前工作目录相对路径,其中git-gemini-forge
应该检查key.pem
和cert.pem
文件。有关如何生成和配置这些文件的说明,请参阅下面的内容。默认为.certs
。FORGE_TYPE
:描述被代理的forge类型,并定义调用API的预期形状。必须是forgejo
、gitea
或gitlab
之一,不区分大小写。默认为forgejo
。FORGE_URL
:forge的URL。如果提供的URL格式不正确,程序将立即停止。默认为http://localhost:3000
(Forgejo运行的常见端口)。FORGE_AUTH_TOKEN
:一个可选的token,可以授权访问某些特权路由,例如GitLab上的/metadata
或/users
。如果省略,并且代理需要授权的forge,则不会发送授权,某些路由可能会响应Gemini43 代理错误
。
证书
对于本地开发
创建TLS证书如下
mkdir -p .certs
cd .certs
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 1103760 -nodes -subj '/CN=localhost'
[!IMPORTANT] 当在生产环境中使用时,将
'/CN=localhost'
部分更改为预期的域名。
请注意,上述命令中的-days
参数将证书设置为在公元3024年左右到期。这对于使用Gemini胶囊或本地开发来说足够了,但除此之外并不多。
项目<project>/.certs
目录必须包含key.pem
和cert.pem
,否则服务器将崩溃。
免责声明
我对此工具的滥用不承担责任。目的是让Forgejo管理员在他们自己的Forgejo安装旁边托管此胶囊,通过localhostping forge的API。虽然支持通过HTTPS代理,但在未经许可的情况下代理外部git forge(您不拥有的)是非常无礼的。在使他人的服务器因代理流量而负载过重之前,请务必获得同意。
依赖项
~18–30MB
~497K SLoC