2024-10-10 20:08:33 +08:00
2024-10-10 03:03:13 +08:00
2024-10-10 20:08:33 +08:00
2024-10-06 19:38:53 +08:00
2024-10-08 05:33:41 +08:00
2024-10-10 03:22:10 +08:00
2024-10-03 10:39:53 +08:00
2024-09-24 17:16:21 +08:00
2024-10-08 06:20:35 +08:00
2024-10-10 03:03:13 +08:00
2024-10-10 03:03:13 +08:00
2024-10-10 20:06:08 +08:00
2024-10-09 22:29:24 +08:00
2024-10-08 05:33:41 +08:00
2024-09-24 17:16:21 +08:00
2024-10-10 20:07:44 +08:00
2024-10-08 20:04:07 +08:00
2024-10-09 20:53:50 +08:00

GhProxy

pull Go Report Card

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

DEMO

项目说明

项目特点

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

项目开发过程

本项目是WJQSERVER-STUDIO/ghproxy-go的重构版本,实现了原项目原定功能的同时,进一步优化了性能 本项目源于WJQSERVER-STUDIO/ghproxy-goWJQSERVER/ghproxy-go-0RTT两个项目,前者带来了实现框架与资源,后者带来了解决Git clone问题的办法,使得本项目从net/http标准库切换至Gin框架,已解决此困扰已久的问题,在此基础上,本项目进一步优化了性能,并添加了用户鉴权功能,使得部署更加安全可靠。 关于此项目的详细开发过程,请参看Commit记录与CHANGELOG.md

  • V1.0.0 迁移至本仓库,并再次重构内容实现
  • v0.2.0 重构项目实现,Git clone的实现完全自主化

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

外部配置文件

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

# 核心配置
server:
  port: 8080  # 监听端口(小白请勿修改)
  host: "127.0.0.1"  # 监听地址(小白请勿修改)
  sizelimit: 131072000 # 125MB

# 日志配置
logger:
  logfilepath: "/data/ghproxy/log/ghproxy.log"  # 日志文件路径(小白请勿修改)
  maxlogsize: 5 # MB

# CORS 配置
cors:
  enabled: true  # 是否开启CORS

# 鉴权配置
auth:
  enabled: false  # 是否开启鉴权
  authtoken: "test"  # 鉴权Token

# 黑名单配置
blacklist:
  enabled: true  # 是否开启黑名单
  blacklistfile: "/data/ghproxy/config/blacklist.json"

# 白名单配置
whitelist:
  enabled: false  # 是否开启白名单
  whitelistfile: "/data/ghproxy/config/whitelist.json"

黑名单配置

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

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

白名单配置

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

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

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    
}

TODO & DEV

TODO

  • 允许更多参数通过config结构传入
  • 改进程序效率
  • 用户鉴权
  • 仓库黑名单
  • 仓库白名单

DEV

  • Docker Pull 代理
Description
基于Go的高性能,多功能,可扩展的Github代理加速项目
Readme MPL-2.0 1.2 MiB
Languages
Go 89.9%
Shell 7.5%
Dockerfile 2.6%