|
1 | | -### Docker和Github加速二合一 |
2 | | - |
3 | | -- 使用`docker`一键部署多种仓库的镜像加速 |
4 | | -- `docker`镜像默认缓存3天 |
5 | | -- 支持在线下载`docker`离线镜像包 |
6 | | -- 支持镜像搜索 |
7 | | -- 具有自动清理机制 |
8 | | -- 支持`github`文件加速 |
9 | | -- 支持`api.github.com` |
10 | | -- 支持shell脚本嵌套加速 |
11 | | -- 支持Al模型库Hugging Face |
12 | | -- 支持IP限流,默认每个IP,每小时20次请求。 |
13 | | -- 轻量级,简单方便 |
14 | | -- 自动配置HTTPS,默认使用caddy反代,请确保80和443端口没被占用 |
| 1 | +# HubProxy |
15 | 2 |
|
16 | | ---- |
| 3 | +🚀 **Docker 和 GitHub 加速代理服务器** |
17 | 4 |
|
18 | | -### 使用Docker部署 |
| 5 | +一个轻量级、高性能的多功能代理服务,提供 Docker 镜像加速、GitHub 文件加速等功能。 |
19 | 6 |
|
20 | | -1:域名解析:将`hub`,`ghcr`,`docker`这个几个解析为你的二级域名。 |
| 7 | +## ✨ 特性 |
21 | 8 |
|
22 | | -> 嫌麻烦也可以直接泛解析 |
| 9 | +- 🐳 **Docker 镜像加速** - 支持 Docker Hub、GHCR、Quay 等多个镜像仓库,以及优化拉取速度。支持批量下载离线镜像包。 |
| 10 | +- 📁 **GitHub 文件加速** - 加速 GitHub Release、Raw 文件下载,脚本嵌套加速,以及api.github。com |
| 11 | +- 🤖 **AI 模型库支持** - 支持 Hugging Face 模型下载加速 |
| 12 | +- 🛡️ **智能限流** - IP 限流保护,防止滥用 |
| 13 | +- 🔍 **镜像搜索** - 在线搜索 Docker 镜像 |
| 14 | +- ⚡ **轻量高效** - 基于 Go 语言,单二进制文件运行,资源占用低 |
| 15 | +- 🔧 **配置热重载** - 统一配置管理,部分配置项支持热重载,无需重启服务 |
23 | 16 |
|
| 17 | +## 🚀 快速开始 |
24 | 18 |
|
25 | | -2:拉取本项目 |
| 19 | +### Docker部署(推荐) |
26 | 20 | ``` |
27 | | -git clone https://github.com/sky22333/hubproxy.git |
| 21 | +docker run -d \ |
| 22 | + --name hubproxy \ |
| 23 | + -p 5000:5000 \ |
| 24 | + --restart always \ |
| 25 | + ghcr.io/sky22333/hubproxy |
28 | 26 | ``` |
29 | 27 |
|
30 | 28 |
|
31 | | -3:其他无需修改,只需修改`docker-compose.yml`配置里的域名环境变量,修改为你的`根域名` |
32 | 29 |
|
33 | | -> 这里的`根域名`只是为了动态写入配置和前端,不用解析,当然也不会影响你的根域名使用。 |
| 30 | +### 一键安装 |
34 | 31 |
|
35 | | -运行: |
36 | | -``` |
37 | | -docker compose up -d |
| 32 | +```bash |
| 33 | +curl -fsSL https://raw.githubusercontent.com/sky22333/hubproxy/main/install-service.sh | sudo bash |
38 | 34 | ``` |
39 | 35 |
|
40 | | -4:部署完成后稍等一分钟,等待`caddy`自动配置域名证书后,即可访问`hub.example.com`查看前端 |
| 36 | +这个命令会: |
| 37 | +- 🔍 自动检测系统架构(AMD64/ARM64) |
| 38 | +- 📥 从 GitHub Releases 下载最新版本 |
| 39 | +- ⚙️ 自动配置系统服务 |
| 40 | +- 🔄 保留现有配置(升级时) |
41 | 41 |
|
42 | | -> 可以使用命令`docker logs -f caddy`查看日志获取进度 |
43 | 42 |
|
44 | 43 |
|
| 44 | +## 📖 使用方法 |
45 | 45 |
|
46 | | ---- |
47 | | ---- |
48 | | ---- |
| 46 | +### Docker 镜像加速 |
| 47 | + |
| 48 | +```bash |
| 49 | +# 原命令 |
| 50 | +docker pull nginx |
| 51 | + |
| 52 | +# 使用加速(替换 yourdomain.com) |
| 53 | +docker pull yourdomain.com/nginx |
49 | 54 |
|
50 | | -#### 单独部署Github文件加速(可选) |
| 55 | +# ghcr加速(替换 yourdomain.com) |
| 56 | +docker pull yourdomain.com/ghcr.io/user/images |
51 | 57 | ``` |
52 | | -docker run -d \ |
53 | | - --name ghproxy \ |
54 | | - -p 5000:5000 \ |
55 | | - --restart always \ |
56 | | - ghcr.io/sky22333/hubproxy |
| 58 | + |
| 59 | +### GitHub 文件加速 |
| 60 | + |
| 61 | +```bash |
| 62 | +# 原链接 |
| 63 | +https://github.com/user/repo/releases/download/v1.0.0/file.tar.gz |
| 64 | + |
| 65 | +# 加速链接 |
| 66 | +https://yourdomain.com/https://github.com/user/repo/releases/download/v1.0.0/file.tar.gz |
57 | 67 | ``` |
58 | 68 |
|
59 | | ---- |
60 | | ---- |
61 | 69 |
|
62 | 70 |
|
63 | | -<details> |
64 | | - <summary>CF-CDN获取用户真实IP</summary> |
65 | | - |
| 71 | +## ⚙️ 配置 |
66 | 72 |
|
67 | | -- 替换`Caddyfile`配置 |
| 73 | +主配置文件位于 `/opt/hubproxy/config.toml`: |
68 | 74 |
|
69 | | -``` |
70 | | -hub.{$DOMAIN} { |
71 | | - reverse_proxy * ghproxy:5000 { |
72 | | - header_up X-Real-IP {http.request.header.CF-Connecting-IP} |
73 | | - header_up X-Forwarded-For {http.request.header.CF-Connecting-IP} |
74 | | - header_up X-Forwarded-Proto {http.request.scheme} |
75 | | - header_up CF-IPCountry {http.request.header.CF-IPCountry} |
76 | | - } |
77 | | -} |
78 | | -
|
79 | | -docker.{$DOMAIN} { |
80 | | - @v2_manifest_blob path_regexp v2_rewrite ^/v2/([^/]+)/(manifests|blobs)/(.*)$ |
81 | | - handle @v2_manifest_blob { |
82 | | - rewrite * /v2/library/{re.v2_rewrite.1}/{re.v2_rewrite.2}/{re.v2_rewrite.3} |
83 | | - } |
84 | | -
|
85 | | - reverse_proxy * docker:5000 { |
86 | | - header_up X-Real-IP {http.request.header.CF-Connecting-IP} |
87 | | - header_up X-Forwarded-For {http.request.header.CF-Connecting-IP} |
88 | | - header_up X-Forwarded-Proto {http.request.scheme} |
89 | | - header_up CF-IPCountry {http.request.header.CF-IPCountry} |
90 | | - } |
91 | | -} |
92 | | -
|
93 | | -ghcr.{$DOMAIN} { |
94 | | - reverse_proxy * ghcr:5000 { |
95 | | - header_up X-Real-IP {http.request.header.CF-Connecting-IP} |
96 | | - header_up X-Forwarded-For {http.request.header.CF-Connecting-IP} |
97 | | - header_up X-Forwarded-Proto {http.request.scheme} |
98 | | - header_up CF-IPCountry {http.request.header.CF-IPCountry} |
99 | | - } |
100 | | -} |
101 | | -``` |
102 | 75 |
|
103 | | -</details> |
104 | 76 |
|
105 | 77 |
|
106 | | ---- |
107 | | ---- |
| 78 | +## 🙏 致谢 |
108 | 79 |
|
109 | | -#### 鸣谢: |
110 | 80 |
|
111 | | -ghproxy基于go语言的Gin框架,镜像加速基于`registry`镜像实现 |
| 81 | +- UI 界面参考了[相关开源项目](https://github.com/WJQSERVER-STUDIO/GHProxy-Frontend) |
112 | 82 |
|
113 | | -前端借鉴了[此项目](https://github.com/WJQSERVER-STUDIO/ghproxy)的UI,许可证见`ghproxy/LICENSE` |
| 83 | +## ⚠️ 免责声明 |
| 84 | + |
| 85 | +- 本程序仅供学习交流使用,请勿用于非法用途 |
| 86 | +- 使用本程序需遵守当地法律法规 |
| 87 | +- 作者不对使用者的任何行为承担责任 |
| 88 | + |
| 89 | +--- |
114 | 90 |
|
| 91 | +<div align="center"> |
115 | 92 |
|
116 | | -### 免责声明 |
| 93 | +**⭐ 如果这个项目对你有帮助,请给个 Star!⭐** |
117 | 94 |
|
118 | | -* 本程序完全开源并且仅供学习了解,请勿下载非法文件,使用本项目即默认接受此条款。 |
119 | | -* 使用本程序必循遵守部署免责声明。使用本程序必循遵守部署服务器所在地、所在国家和用户所在国家的法律法规, 程序作者不对使用者任何不当行为负责。 |
| 95 | +</div> |
0 commit comments