GHProxy 详细部署教程
项目简介
GhProxy 是一个基于 Go 语言的工具,旨在加速部分地区对 GitHub 仓库的访问。它支持速率限制和用户鉴权,并且可以通过 Docker 进行部署。GhProxy 使用 Gin 框架和 req 库构建,并采用 Caddy 作为 Web 服务器。
前端界面:
项目特点
- 前端界面: 加入前端界面,以便用户快速转换链接。同时在前端页面显示本站点的部分配置信息。
- 外部配置文件: 支持外部配置文件,可以方便地进行配置修改。
- 速率限制: 支持速率限制,限制每个 IP 的访问频率。在一定程度上避免滥用。
- 黑白名单: 支持黑白名单,可以对特定GitHub仓库进行访问限制。
- 高效实现:基于 Go 语言,使用 Gin 框架,通过req库请求,性能优化显著。
- 多功能支持:支持 Git clone、raw、releases 等文件的拉取。
- Docker 部署:支持通过 Docker 快速部署,简化安装过程。
- 用户鉴权:支持用户鉴权功能,确保访问安全。在一定程度上避免滥用。
- 标准化流程:基于 WJQSERVER-STUDIO 的golang-temp 模板构建,拥有标准化的日志记录和构建流程。
开发背景
本项目是 WJQSERVER-STUDIO/ghproxy-go 的重构版本,解决了之前版本中的一些问题,并新增若干新功能。项目的开发历程详见 Commit 记录及 CHANGELOG.md。
使用示例
GhProxy 提供了简单的使用方式,可以通过以下格式进行文件拉取:
|
|
部署教程
本项目支持 Docker 部署,可以快速部署并运行。也可自行下载release内的二进制文件自定义运行。
Docker 部署
若要使用 Docker 部署 GhProxy,请确保 Docker 环境已经安装并运行。若还未安装 Docker,可以使用以下脚本内的 主菜单 > Docker管理 > Docker一键安装&更新 以安装 Docker。
您也可以使用以下脚本部署 GhProxy, 请使用主菜单 -> 项目部署 -> GhProxy
进行部署。注意,使用此脚本部署的GHProxy不会对外映射端口,请反代172.20.20.35:80
,谢谢。
|
|
使用 Docker CLI
在终端中运行以下命令即可启动 GhProxy:
|
|
使用 Docker Compose
可以参考项目中的 docker-compose.yml 文件,进行更复杂的部署配置。
在自定义目录创建docker-compose.yml
文件后,执行docker compose up -d
命令即可
二进制文件部署(不推荐)
若使用二进制文件部署,您会失去部分防滥用功能,如速率限制等。同时也会失去部分重要功能,如符合RFC 7234的HTTP缓存与支持Zstandard,Brotli,Gzip的压缩。
部署一键脚本:
|
|
配置文件
GhProxy 使用 config.toml
作为外部配置文件。默认配置如下:
|
|
注意:使用 Docker 部署时,非必要请勿修改server
和log
部分的配置。
功能详解
黑白名单
GHProxy 支持黑白名单功能,可以对特定 GitHub 仓库进行访问限制。
需要提醒的是,黑白名单功能是不冲突的,程序内执行顺序为白名单检查
-> 黑名单检查
-> 正常处理
。即使在白名单中也会被黑名单屏蔽。
黑名单
请将[blacklist]
内的enabled
设置为true
开启黑名单功能。
黑名单文件 blacklist.json
格式如下:
|
|
在此文件中,使用owner/repo
格式指定需要屏蔽的仓库,owner/*
表示屏蔽该用户下所有仓库,*
是通配符,表示匹配所有仓库。
白名单
请将[whitelist]
内的enabled
设置为true
开启白名单功能。
白名单文件 whitelist.json
格式如下:
|
|
在此文件中,使用owner/repo
格式指定需要放行的仓库,owner/*
表示白名单该用户下所有仓库,*
是通配符,表示匹配所有仓库。
用户鉴权
请将[auth]
内的enabled
设置为true
开启用户鉴权功能。使用[auth]
内的authtoken
字段设置鉴权 Token。
GhProxy 支持简单用户鉴权,可对请求进行鉴权。
开启鉴权后,URL后需加上?auth_token=your_token
参数,才能访问。
结语
我们感谢所有用户的支持与反馈,并期待 GhProxy 能为您的开发工作带来更大的便利和效率!若此项目对您有所帮助,请不要忘记 star 本项目,您的支持是我们前进的动力!
本文最初发表于WJQSERVER的博客;WJQserver-Studio旗下所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载需注明出处!