王旭阳个人博客

WXY

(无国外服务器/免服务器) 搭建hubproxy 自建Docker 和 GitHub 加速代理服务器

2025-06-23

一个轻量级、高性能的多功能代理服务,提供 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

https://demo.52013120.xyz/

部署

启动

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 命令就行修改保存即可~

2025-06-23-cgnqvvrc.png

使用方式

搭建成功会有使用ui界面 可参考使用

方式一 、配置前缀方式

2025-06-23-glapygvz.png

方式二、配置加速地址

创建或修改 /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 为作者搭建示例 请勿滥用,如需使用 请自行搭建。

无国外服务器/免服务器 搭建

https://cnb.cool/znb/hubproxy

fork此项目后点击 一键运行,然后映射5000端口,即可投入使用。

2025-07-02-ytxydnpx.png

本文示例搭建好的

https://ey9dmq9n0o-5000.cnb.run/