(无国外服务器/免服务器) 搭建hubproxy 自建Docker 和 GitHub 加速代理服务器
编辑一个轻量级、高性能的多功能代理服务,提供 Docker 镜像加速、GitHub 文件加速、下载离线镜像、在线搜索 Docker 镜像等功能。
⚠️ 重要:选择一台国外服务器,并且未被墙。对于域名,无需进行国内备案。你也可以通过一些平台申请免费域名。
特性
🐳 Docker 镜像加速 - 单域名实现 Docker Hub、GHCR、Quay 等多个镜像仓库加速,流式传输优化拉取速度。
🐳 离线镜像包 - 支持下载离线镜像包,流式传输加防抖设计。
📁 GitHub 文件加速 - 加速 GitHub Release、Raw 文件下载,支持
api.github.com
,脚本嵌套加速等等🤖 AI 模型库支持 - 支持 Hugging Face 模型下载加速
🛡️ 智能限流 - IP 限流保护,防止滥用
🚫 仓库审计 - 强大的自定义黑名单,白名单,同时审计镜像仓库,和GitHub仓库
🔍 镜像搜索 - 在线搜索 Docker 镜像
⚡ 轻量高效 - 基于 Go 语言,单二进制文件运行,资源占用低,优雅的内存清理机制。
🔧 统一配置 - 统一配置管理
Github地址 & 演示
https://github.com/sky22333/hubproxy
部署
启动
Docker Compose(推荐)
新建文件 compose.yml
services:
hubproxy:
container_name: hubproxy
ports:
- 5000:5000
restart: always
image: ghcr.io/sky22333/hubproxy
docker compose up -d
命令启动即可
Docker 命令
docker run -d \
--name hubproxy \
-p 5000:5000 \
--restart always \
ghcr.io/sky22333/hubproxy
官方一键脚本
curl -fsSL https://raw.githubusercontent.com/sky22333/hubproxy/main/install-service.sh | sudo bash
域名配置
nginx配置参考
location ^~ / {
proxy_pass http://127.0.0.1:5000;
# 设置代理头部,传递真实 IP
proxy_set_header X-Forwarded-For $http_cf_connecting_ip;
proxy_set_header X-Real-IP $http_cf_connecting_ip;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
proxy_ssl_server_name off;
proxy_ssl_name $proxy_host;
}
程序配置
容器内的配置文件位于 /root/config.toml
脚本部署配置文件位于 /opt/hubproxy/config.toml
不配置也可以,程序内置有默认值
[server]
host = "0.0.0.0"
# 监听端口
port = 5000
# Github文件大小限制(字节),默认2GB
fileSize = 2147483648
[rateLimit]
# 每个IP每小时允许的请求数(注意Docker镜像会有多个层,会消耗多个次数)
requestLimit = 500
# 限流周期(小时)
periodHours = 1.0
[security]
# IP白名单,支持单个IP或IP段
# 白名单中的IP不受限流限制
whiteList = [
"127.0.0.1",
"192.168.1.0/24"
]
# IP黑名单,支持单个IP或IP段
# 黑名单中的IP将被直接拒绝访问
blackList = [
"192.168.100.1",
"192.168.100.0/24"
]
[proxy]
# 代理服务白名单(支持GitHub仓库和Docker镜像,支持通配符)
# 只允许访问白名单中的仓库/镜像,为空时不限制
whiteList = []
# 代理服务黑名单(支持GitHub仓库和Docker镜像,支持通配符)
# 禁止访问黑名单中的仓库/镜像
blackList = [
"baduser/malicious-repo",
"*/malicious-repo",
"baduser/*"
]
# 代理配置,支持有用户名/密码认证和无认证模式
# 无认证: socks5://127.0.0.1:1080
# 有认证: socks5://username:password@127.0.0.1:1080
# HTTP 代理示例
# http://username:password@127.0.0.1:7890
# SOCKS5 代理示例
# socks5://username:password@127.0.0.1:1080
# SOCKS5H 代理示例
# socks5h://username:password@127.0.0.1:1080
# 留空不使用代理
proxy = ""
[download]
# 批量下载离线镜像数量限制
maxImages = 10
# Registry映射配置,支持多种镜像仓库上游
[registries]
# GitHub Container Registry
[registries."ghcr.io"]
upstream = "ghcr.io"
authHost = "ghcr.io/token"
authType = "github"
enabled = true
# Google Container Registry
[registries."gcr.io"]
upstream = "gcr.io"
authHost = "gcr.io/v2/token"
authType = "google"
enabled = true
# Quay.io Container Registry
[registries."quay.io"]
upstream = "quay.io"
authHost = "quay.io/v2/auth"
authType = "quay"
enabled = true
# Kubernetes Container Registry
[registries."registry.k8s.io"]
upstream = "registry.k8s.io"
authHost = "registry.k8s.io"
authType = "anonymous"
enabled = true
[tokenCache]
# 是否启用缓存(同时控制Token和Manifest缓存)显著提升性能
enabled = true
# 默认缓存时间(分钟)
defaultTTL = "20m"
以dokcer部署方式为例
docker exec -it hubproxy sh #进入容器内部
执行ls 命令后 可以看到配置文件config.toml文件
然后使用vi 或vim 命令就行修改保存即可~
使用方式
搭建成功会有使用ui界面 可参考使用
方式一 、配置前缀方式
方式二、配置加速地址
创建或修改 /etc/docker/daemon.json
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"demo.52013120.xyz"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
demo.52013120.xyz 为作者搭建示例 请勿滥用,如需使用 请自行搭建。
无国外服务器/免服务器 搭建
fork此项目后点击 一键运行,然后映射5000端口,即可投入使用。
本文示例搭建好的
- 2
- 1
-
分享