基于Go的高性能,多功能,可扩展的Github代理加速项目 https://ghproxy.1888866.xyz
Find a file
2024-11-11 19:35:39 +08:00
.github Bump Go From 1.23.2 to 1.23.3 2024-11-07 13:31:53 +08:00
api 24w21d 2024-11-04 05:53:53 +08:00
auth 1.7.0 2024-11-04 18:38:12 +08:00
caddyfile 1.6.1 2024-10-24 22:30:41 +08:00
config 1.7.0 2024-11-04 18:38:12 +08:00
deploy 1.7.0 2024-11-04 18:38:12 +08:00
docker 1.7.3 2024-11-11 19:35:39 +08:00
logger 24w21d 2024-11-04 05:53:53 +08:00
pages 24w21d 2024-11-04 05:59:39 +08:00
proxy Add HEAD request to fetch Content-Length 2024-11-07 13:37:40 +08:00
rate 24w21a 2024-11-01 03:58:47 +08:00
CHANGELOG.md 1.7.3 2024-11-11 19:35:39 +08:00
DEV-VERSION 24w22b 2024-11-07 13:52:49 +08:00
go.mod Update deps 2024-11-07 13:32:41 +08:00
go.sum Update deps 2024-11-07 13:32:41 +08:00
init.sh 24w22a 2024-11-05 11:28:11 +08:00
LICENSE update 2024-09-24 17:16:21 +08:00
main.go 1.7.1 2024-11-08 12:14:04 +08:00
README.md 1.7.0 2024-11-04 19:05:36 +08:00
SECURITY.MD 24w20a 2024-10-28 18:02:58 +08:00
VERSION 1.7.3 2024-11-11 19:35:39 +08:00

GHProxy

pull Go Report Card

使用Go实现的GHProxy,用于加速部分地区Github仓库的拉取,支持速率限制,用户鉴权,支持Docker部署

DEMO

TG讨论群组

版本更新介绍

项目说明

项目特点

  • 基于Go语言实现,使用Gin框架req库]
  • 支持Git clone,raw,realeases等文件拉取
  • 支持Docker部署
  • 支持速率限制
  • 支持用户鉴权
  • 支持自定义黑名单/白名单
  • 符合RFC 7234的HTTP Cache
  • 使用Caddy作为Web Server
  • 基于WJQSERVER-STUDIO/golang-temp模板构建,具有标准化的日志记录与构建流程

项目开发过程

本项目是WJQSERVER-STUDIO/ghproxy-go的重构版本,实现了原项目原定功能的同时,进一步优化了性能 关于此项目的详细开发过程,请参看Commit记录与CHANGELOG.md

  • V1.0.0 迁移至本仓库,并再次重构内容实现
  • v0.2.0 重构项目实现

LICENSE

本项目使用WSL LICENSE Version1.2 (WJQSERVER STUDIO LICENSE Version1.2)

在v1.0.0版本之前,本项目继承于WJQSERVER-STUDIO/ghproxy-go的APACHE2.0 LICENSE VERSION

使用示例

https://ghproxy.1888866.xyz/raw.githubusercontent.com/WJQSERVER-STUDIO/tools-stable/main/tools-stable-ghproxy.sh

git clone https://ghproxy.1888866.xyz/github.com/WJQSERVER-STUDIO/ghproxy.git

部署说明

Docker部署

  • Docker-cli
docker run -p 7210:80 -v ./ghproxy/log/run:/data/ghproxy/log -v ./ghproxy/log/caddy:/data/caddy/log -v ./ghproxy/config:/data/ghproxy/config  --restart always wjqserver/ghproxy

二进制文件部署(不推荐)

一键部署脚本:

wget -O install.sh https://raw.githubusercontent.com/WJQSERVER-STUDIO/ghproxy/main/deploy/install.sh && chmod +x install.sh &&./install.sh

配置说明

外部配置文件

本项目采用config.toml作为外部配置,默认配置如下 使用Docker部署时,慎重修改config.toml,以免造成不必要的麻烦

[server]
host = "127.0.0.1"  # 监听地址
port = 8080  # 监听端口
sizeLimit = 125 # 125MB

[pages]
enabled = false  # 是否开启内置静态页面(Docker版本请关闭此项)
staticPath = "/data/www"  # 静态页面文件路径

[log]
logFilePath = "/data/ghproxy/log/ghproxy.log" # 日志文件路径
maxLogSize = 5 # MB 日志文件最大大小

[cors]
enabled = true  # 是否开启跨域

[auth]
authToken = "token"  # 用户鉴权Token
enabled = false  # 是否开启用户鉴权

[blacklist]
blacklistFile = "/data/ghproxy/config/blacklist.json"  # 黑名单文件路径
enabled = false  # 是否开启黑名单

[whitelist]
enabled = false  # 是否开启白名单
whitelistFile = "/data/ghproxy/config/whitelist.json"  # 白名单文件路径

[rateLimit]
enabled = false  # 是否开启速率限制
ratePerMinute = 180  # 每分钟限制请求数量
burst = 5  # 突发请求数量

黑名单配置

黑名单配置位于config/blacklist.json,格式如下:

{
    "blacklist": [
      "test/test1",
      "example/repo2",
      "another/*"
    ]
  }

白名单配置

白名单配置位于config/whitelist.json,格式如下:

{
    "whitelist": [
      "test/test1",
      "example/repo2",
      "another/*"
    ]
  }

Caddy反代配置

example.com {
    reverse_proxy {
        to 127.0.0.1:7210
        header_up X-Real-IP {remote_host}	    
        header_up X-Real-IP {http.request.header.CF-Connecting-IP}
        header_up X-Forwarded-For {http.request.header.CF-Connecting-IP}
        header_up X-Forwarded-Proto {http.request.header.CF-Visitor}
    }
    encode zstd gzip    
}

前端页面

ghproxy-demo-v1.5.0.png

结语

本项目基于Go语言实现的GHProxy,使用Gin框架与req库 Docker镜像基于WJQSERVER-STUDIO/caddy 本项目使用WSL LICENSE Version1.2 (WJQSERVER STUDIO LICENSE Version1.2) 授权协议,请遵守相关条例。