GhProxy介绍及部署教程,基于Go的Github加速项目
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 提供了简单的使用方式,可以通过以下格式进行文件拉取:
# 拉取 raw 文件
https://ghproxy.1888866.xyz/raw.githubusercontent.com/WJQSERVER-STUDIO/tools-stable/main/tools-stable-ghproxy.sh
# 克隆 Git 仓库
git clone https://ghproxy.1888866.xyz/github.com/WJQSERVER-STUDIO/ghproxy.git
部署教程
本项目支持 Docker 部署,可以快速部署并运行。也可自行下载release内的二进制文件自定义运行。
Docker 部署
若要使用 Docker 部署 GhProxy,请确保 Docker 环境已经安装并运行。若还未安装 Docker,可以使用以下脚本内的 主菜单 > Docker管理 > Docker一键安装&更新 以安装 Docker。
您也可以使用以下脚本部署 GhProxy, 请使用主菜单 -> 项目部署 -> GhProxy
进行部署。注意,使用此脚本部署的GHProxy不会对外映射端口,请反代172.20.20.35:80
,谢谢。
wget -O tools-stable.sh https://raw.githubusercontent.com/WJQSERVER-STUDIO/tools-stable/main/tools-stable.sh && chmod +x tools-stable.sh && clear && ./tools-stable.sh
使用 Docker CLI
在终端中运行以下命令即可启动 GhProxy:
docker run -d \
--name ghproxy \
--restart always \
-v ./ghproxy/log/run:/data/ghproxy/log \
-v ./ghproxy/log/caddy:/data/caddy/log \
-v ./ghproxy/config:/data/ghproxy/config \
-p 7210:80 \
wjqserver/ghproxy:latest
使用 Docker Compose
可以参考项目中的 docker-compose.yml 文件,进行更复杂的部署配置。
在自定义目录创建docker-compose.yml
文件后,执行docker compose up -d
命令即可
二进制文件部署(不推荐)
若使用二进制文件部署,您会失去部分防滥用功能,如速率限制等。同时也会失去部分重要功能,如符合 RFC 7234 的HTTP缓存与支持Zstandard,Brotli,Gzip的压缩。
部署一键脚本:
wget -O install.sh https://raw.githubusercontent.com/WJQSERVER-STUDIO/ghproxy/main/deploy/install.sh && chmod +x install.sh &&./install.sh
配置文件
GhProxy 使用 config.toml
作为外部配置文件。默认配置如下:
[server]
host = "127.0.0.1" # 监听地址(小白请勿修改)
port = 8080 #监听端口(小白请勿修改)
sizelimit = 131072000 # 125MB
[log]
logfilepath = "/data/ghproxy/log/ghproxy.log" # 日志文件路径(小白请勿修改)
maxlogsize = 5 # MB
[cors]
enabled = true # 是否开启CORS
[auth]
authtoken = "test" # 鉴权Token
enabled = false # 是否开启鉴权
[blacklist]
blacklistfile = "/data/ghproxy/config/blacklist.json" # 黑名单文件路径
enabled = false # 是否开启黑名单
[whitelist]
enabled = false # 是否开启白名单
whitelistfile = "/data/ghproxy/config/whitelist.json" # 白名单文件路径
注意:使用 Docker 部署时,非必要请勿修改server
和log
部分的配置。
功能详解
黑白名单
GHProxy 支持黑白名单功能,可以对特定 GitHub 仓库进行访问限制。
需要提醒的是,黑白名单功能是不冲突的,程序内执行顺序为白名单检查
-> 黑名单检查
-> 正常处理
。即使在白名单中也会被黑名单屏蔽。
黑名单
请将[blacklist]
内的enabled
设置为true
开启黑名单功能。
黑名单文件 blacklist.json
格式如下:
{
"blacklist": [
"black/list",
"test/test1",
"example/*"
]
}
在此文件中,使用owner/repo
格式指定需要屏蔽的仓库,owner/*
表示屏蔽该用户下所有仓库,*
是通配符,表示匹配所有仓库。
白名单
请将[whitelist]
内的enabled
设置为true
开启白名单功能。
白名单文件 whitelist.json
格式如下:
{
"whitelist": [
"white/list",
"white/test1",
"example/*"
]
}
在此文件中,使用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 许可协议。转载需注明出处!