1
0
Fork 0

😋更新两个应用,尝试代理

This commit is contained in:
LiuShen 2025-09-16 11:21:13 +08:00
parent efe570be4b
commit dffeedea1e
10 changed files with 673 additions and 0 deletions

239
hubproxy/README.md Normal file
View File

@ -0,0 +1,239 @@
# 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 语言,单二进制文件运行,资源占用低。
- 🔧 **统一配置** - 统一配置管理,便于维护。
- 🛡️ **完全自托管** - 避免依赖免费第三方服务的不稳定性,例如`cloudflare`等等。
- 🚀 **多服务统一加速** - 单个程序即可统一加速 Docker、GitHub、Hugging Face 等多种服务,简化部署与管理。
## 🚀 快速开始
### Docker部署推荐
```
docker run -d \
--name hubproxy \
-p 5000:5000 \
--restart always \
ghcr.io/sky22333/hubproxy
```
### 一键脚本安装
```bash
curl -fsSL https://raw.githubusercontent.com/sky22333/hubproxy/main/install.sh | sudo bash
```
也可以直接下载二进制文件执行`./hubproxy`使用,无需配置文件即可启动,内置默认配置,支持所有功能。
这个脚本会:
- 🔍 自动检测系统架构AMD64/ARM64
- 📥 从 GitHub Releases 下载最新版本
- ⚙️ 自动配置系统服务
- 🔄 保留现有配置(升级时)
## 📖 使用方法
### Docker 镜像加速
```bash
# 原命令
docker pull nginx
# 使用加速
docker pull yourdomain.com/nginx
# ghcr加速
docker pull yourdomain.com/ghcr.io/sky22333/hubproxy
# 符合Docker Registry API v2标准的仓库都支持
```
当然也支持配置为全局镜像加速,在主机上新建(或编辑)`/etc/docker/daemon.json`
`"registry-mirrors"` 中加入域名:
```json
{
"registry-mirrors": [
"https://yourdomain.com"
]
}
```
若已设置其他加速地址,直接并列添加后保存,再执行 `sudo systemctl restart docker` 重启docker服务让配置生效。
### GitHub 文件加速
```bash
# 原链接
https://github.com/user/repo/releases/download/v1.0.0/file.tar.gz
# 加速链接
https://yourdomain.com/https://github.com/user/repo/releases/download/v1.0.0/file.tar.gz
# 加速下载仓库
git clone https://yourdomain.com/https://github.com/sky22333/hubproxy.git
```
## ⚙️ 配置
<details>
<summary>config.toml 配置说明</summary>
*此配置是默认配置,已经内置在程序中了*
```
[server]
host = "0.0.0.0"
# 监听端口
port = 5000
# Github文件大小限制字节默认2GB
fileSize = 2147483648
# HTTP/2 多路复用,提升下载速度
enableH2C = false
[rateLimit]
# 每个IP每周期允许的请求数(注意Docker镜像会有多个层会消耗多个次数)
requestLimit = 500
# 限流周期(小时)
periodHours = 3.0
[security]
# IP白名单支持单个IP或IP段
# 白名单中的IP不受限流限制
whiteList = [
"127.0.0.1",
"172.17.0.0/16",
"192.168.1.0/24"
]
# IP黑名单支持单个IP或IP段
# 黑名单中的IP将被直接拒绝访问
blackList = [
"192.168.100.1",
"192.168.100.0/24"
]
[access]
# 代理服务白名单支持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
# 留空不使用代理
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"
```
</details>
容器内的配置文件位于 `/root/config.toml`
脚本部署配置文件位于 `/opt/hubproxy/config.toml`
为了IP限流能够正常运行反向代理需要传递IP头用来获取访客真实IP以caddy为例
```
example.com {
reverse_proxy {
to 127.0.0.1:5000
header_up X-Real-IP {remote}
header_up X-Forwarded-For {remote}
header_up X-Forwarded-Proto {scheme}
}
}
```
cloudflare CDN
```
example.com {
reverse_proxy 127.0.0.1:5000 {
header_up X-Forwarded-For {http.request.header.CF-Connecting-IP}
header_up X-Real-IP {http.request.header.CF-Connecting-IP}
header_up X-Forwarded-Proto https
header_up X-Forwarded-Host {host}
}
}
```
> 对于使用nginx反代的用户Github加速提示`无效输入`的问题可以参见[issues/62](https://github.com/sky22333/hubproxy/issues/62#issuecomment-3219572440)
## ⚠️ 免责声明
- 本程序仅供学习交流使用,请勿用于非法用途
- 使用本程序需遵守当地法律法规
- 作者不对使用者的任何行为承担责任
---
<div align="center">
**⭐ 如果这个项目对你有帮助,请给个 Star⭐**
</div>

36
hubproxy/data.yml Normal file
View File

@ -0,0 +1,36 @@
name: HubProxy
tags:
- Proxy
- Docker
- GitHub
- DevOps
- 加速
title: 🚀 Docker 和 GitHub 加速代理服务器
description: 一个轻量级、高性能的多功能代理服务,提供 Docker 镜像加速、GitHub 文件加速、离线镜像下载、AI 模型加速、智能限流等功能。
additionalProperties:
key: hubproxy
name: HubProxy
tags:
- Tool
- DevOps
- Proxy
shortDescZh: Docker & GitHub 镜像加速代理服务器,支持多功能加速与离线镜像
shortDescEn: Lightweight proxy server for accelerating Docker, GitHub, and AI model downloads
type: website
crossVersionUpdate: true
limit: 0
website: https://github.com/sky22333/hubproxy
github: https://github.com/sky22333/hubproxy
document: https://github.com/sky22333/hubproxy
description:
en: A lightweight, high-performance proxy server for accelerating Docker images, GitHub files, Hugging Face models, and more. Supports offline image packages, intelligent rate limiting, and unified configuration.
zh: 一个轻量级、高性能的多功能代理服务,支持 Docker 镜像加速、GitHub 文件加速、Hugging Face 模型下载、离线镜像包、智能限流等功能。
zh-Hant: 輕量級高效能多功能代理服務,支援 Docker 鏡像加速、GitHub 檔案加速、Hugging Face 模型下載、離線鏡像包、智慧限流等功能。
ja: 軽量で高性能な多機能プロキシサーバー。Docker イメージや GitHub ファイル、Hugging Face モデルの加速、オフラインイメージパッケージ、インテリジェントレート制限などをサポート。
ms: Pelayan proksi ringan dan berprestasi tinggi untuk mempercepat imej Docker, fail GitHub, model Hugging Face, serta menyokong pakej imej luar talian dan had kadar pintar.
pt-br: Servidor proxy leve e de alto desempenho para acelerar imagens Docker, arquivos do GitHub, modelos Hugging Face e muito mais. Suporta pacotes de imagens offline, limitação de taxa inteligente e configuração unificada.
ru: Легковесный высокопроизводительный прокси-сервер для ускорения загрузки Docker-образов, файлов GitHub, моделей Hugging Face и др. Поддерживает офлайн-пакеты, интеллектуальное ограничение скорости и унифицированную конфигурацию.
ko: 가볍고 고성능의 다기능 프록시 서버로 Docker 이미지, GitHub 파일, Hugging Face 모델 가속을 지원하며 오프라인 이미지 패키지, 지능형 속도 제한, 통합 설정을 제공합니다.
architectures:
- amd64
- arm64

18
hubproxy/latest/data.yml Normal file
View File

@ -0,0 +1,18 @@
additionalProperties:
formFields:
- default: 13485
envKey: PANEL_APP_PORT_HTTP
labelEn: HTTP Port
labelZh: HTTP 端口
label:
en: HTTP Port
ja: ポート
ms: Port
pt-br: Porta
ru: Порт
ko: 포트
zh: HTTP 端口
zh-Hant: HTTP 連接埠
required: true
rule: paramPort
type: number

View File

@ -0,0 +1,22 @@
services:
hubproxy:
image: ghcr.io/sky22333/hubproxy:latest
container_name: ${CONTAINER_NAME}
ports:
- "${PANEL_APP_PORT_HTTP}:8888"
volumes:
- ./src/config.toml:/root/config.toml
logging:
driver: json-file
options:
max-size: "1g"
max-file: "2"
labels:
createdBy: "Apps"
networks:
- 1panel-network
restart: always
networks:
1panel-network:
external: true

BIN
hubproxy/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,193 @@
additionalProperties:
formFields:
- default: 23847
envKey: PANEL_APP_PORT_HTTP
labelEn: HTTP Port
labelZh: HTTP 端口
label:
en: HTTP Port
ja: ポート
ms: Port
pt-br: Porta
ru: Порт
ko: 포트
zh: HTTP 端口
zh-Hant: HTTP 連接埠
required: true
rule: paramPort
type: number
- default: oidc
envKey: PANEL_OAUTH2_PROXY_PROVIDER
labelEn: Provider
labelZh: 身份提供商
label:
en: Provider
ja: プロバイダー
ms: Penyedia
pt-br: Provedor
ru: Провайдер
ko: 제공자
zh: 身份提供商
zh-Hant: 身份提供商
required: true
type: text
- default: ""
envKey: PANEL_OAUTH2_PROXY_CLIENT_ID
labelEn: Client ID
labelZh: 客户端ID
label:
en: Client ID
ja: クライアントID
ms: ID Klien
pt-br: ID do Cliente
ru: ID клиента
ko: 클라이언트 ID
zh: 客户端ID
zh-Hant: 客戶端ID
required: true
type: text
- default: ""
envKey: PANEL_OAUTH2_PROXY_CLIENT_SECRET
labelEn: Client Secret
labelZh: 客户端密钥
label:
en: Client Secret
ja: クライアントシークレット
ms: Rahsia Klien
pt-br: Segredo do Cliente
ru: Секрет клиента
ko: 클라이언트 비밀
zh: 客户端密钥
zh-Hant: 客戶端密鑰
required: true
type: password
- default: "https://example.com/oauth2/callback"
envKey: PANEL_OAUTH2_PROXY_REDIRECT_URL
labelEn: Redirect URL
labelZh: 回调地址
label:
en: Redirect URL
ja: リダイレクトURL
ms: URL Pengalihan
pt-br: URL de Redirecionamento
ru: URL перенаправления
ko: 리디렉션 URL
zh: 回调地址
zh-Hant: 回調地址
required: true
type: text
- default: "https://keycloak.example.com/realms/master"
envKey: PANEL_OAUTH2_PROXY_OIDC_ISSUER_URL
labelEn: OIDC Issuer URL
labelZh: OIDC 颁发者地址
label:
en: OIDC Issuer URL
ja: OIDC発行者URL
ms: URL Pengeluar OIDC
pt-br: URL do emissor OIDC
ru: URL издателя OIDC
ko: OIDC 발급자 URL
zh: OIDC 颁发者地址
zh-Hant: OIDC 頒發者地址
required: true
type: text
- default: ""
envKey: PANEL_OAUTH2_PROXY_COOKIE_SECRET
labelEn: Cookie Secret
labelZh: Cookie 密钥
label:
en: Cookie Secret
ja: Cookieシークレット
ms: Rahsia Cookie
pt-br: Segredo do Cookie
ru: Секрет Cookie
ko: 쿠키 비밀
zh: Cookie 密钥
zh-Hant: Cookie 密鑰
required: true
type: password
- default: "*"
envKey: PANEL_OAUTH2_PROXY_EMAIL_DOMAINS
labelEn: Email Domains
labelZh: 邮箱域名
label:
en: Email Domains
ja: メールドメイン
ms: Domain E-mel
pt-br: Domínios de Email
ru: Домены электронной почты
ko: 이메일 도메인
zh: 邮箱域名
zh-Hant: 郵箱域名
required: true
type: text
- default: "false"
envKey: PANEL_OAUTH2_PROXY_INSECURE_OIDC_ALLOW_UNVERIFIED_EMAIL
labelEn: Allow Unverified Email
labelZh: 允许未验证邮箱
label:
en: Allow Unverified Email
ja: 未確認メールを許可
ms: Benarkan E-mel Tidak Disahkan
pt-br: Permitir Email Não Verificado
ru: Разрешить неподтвержденную почту
ko: 확인되지 않은 이메일 허용
zh: 允许未验证邮箱
zh-Hant: 允許未驗證郵箱
required: false
type: select
values:
- label: 启用
value: "true"
- label: 禁用
value: "false"
- default: "S256"
envKey: PANEL_OAUTH2_PROXY_CODE_CHALLENGE_METHOD
labelEn: Code Challenge Method
labelZh: 代码挑战方法
label:
en: Code Challenge Method
ja: コードチャレンジ方式
ms: Kaedah Cabaran Kod
pt-br: Método de Desafio de Código
ru: Метод проверки кода
ko: 코드 챌린지 방법
zh: 代码挑战方法
zh-Hant: 代碼挑戰方法
required: false
type: select
values:
- label: S256
value: S256
- label: plain
value: plain
- default: "true"
envKey: PANEL_OAUTH2_PROXY_REVERSE_PROXY
labelEn: Reverse Proxy
labelZh: 启用反向代理
label:
en: Reverse Proxy
ja: リバースプロキシ
ms: Proksi Songsang
pt-br: Proxy Reverso
ru: Обратный прокси
ko: 리버스 프록시
zh: 启用反向代理
zh-Hant: 啟用反向代理
required: false
type: select
values:
- label: 启用
value: "true"
- label: 禁用
value: "false"

View File

@ -0,0 +1,27 @@
services:
oauth2_proxy:
image: quay.io/oauth2-proxy/oauth2-proxy:v7.12.0
container_name: ${CONTAINER_NAME}
environment:
- OAUTH2_PROXY_PROVIDER=${PANEL_OAUTH2_PROXY_PROVIDER}
- OAUTH2_PROXY_CLIENT_ID=${PANEL_OAUTH2_PROXY_CLIENT_ID}
- OAUTH2_PROXY_CLIENT_SECRET=${PANEL_OAUTH2_PROXY_CLIENT_SECRET}
- OAUTH2_PROXY_REDIRECT_URL=${PANEL_OAUTH2_PROXY_REDIRECT_URL}
- OAUTH2_PROXY_OIDC_ISSUER_URL=${PANEL_OAUTH2_PROXY_OIDC_ISSUER_URL}
- OAUTH2_PROXY_COOKIE_SECRET=${PANEL_OAUTH2_PROXY_COOKIE_SECRET}
- OAUTH2_PROXY_EMAIL_DOMAINS=${PANEL_OAUTH2_PROXY_EMAIL_DOMAINS}
- OAUTH2_PROXY_INSECURE_OIDC_ALLOW_UNVERIFIED_EMAIL=${PANEL_OAUTH2_PROXY_INSECURE_OIDC_ALLOW_UNVERIFIED_EMAIL}
- OAUTH2_PROXY_CODE_CHALLENGE_METHOD=${PANEL_OAUTH2_PROXY_CODE_CHALLENGE_METHOD}
- OAUTH2_PROXY_REVERSE_PROXY=${PANEL_OAUTH2_PROXY_REVERSE_PROXY}
- OAUTH2_PROXY_HTTP_ADDRESS=0.0.0.0:4180
ports:
- "${PANEL_APP_PORT_HTTP}:4180"
labels:
createdBy: "Apps"
networks:
- 1panel-network
restart: always
networks:
1panel-network:
external: true

106
oauth2-proxy/README.md Normal file
View File

@ -0,0 +1,106 @@
# OAuth2 Proxy
[OAuth2 Proxy](https://oauth2-proxy.github.io/oauth2-proxy/) 是一个反向代理与认证中间件,支持通过 Google、GitHub、GitLab、Keycloak、OIDC 等多种身份提供商进行 OAuth2 认证。常用于在已有 Web 服务前增加统一登录认证。
---
## 功能特性
* 支持 OAuth2 和 OpenID Connect (OIDC) 协议
* 多身份提供商支持Google、GitHub、GitLab、Microsoft、Keycloak 等)
* 提供登录保护(适用于内部应用、管理面板等)
* 支持将认证信息传递给后端应用Header / Cookie
* 可与 Nginx、Traefik、Envoy 等反向代理协作使用
---
## 快速开始
### 使用 Docker
```bash
docker run -p 4180:4180 \
-e OAUTH2_PROXY_PROVIDER=google \
-e OAUTH2_PROXY_CLIENT_ID=<client-id> \
-e OAUTH2_PROXY_CLIENT_SECRET=<client-secret> \
-e OAUTH2_PROXY_COOKIE_SECRET=$(openssl rand -base64 32 | head -c 32 | base64) \
-e OAUTH2_PROXY_REDIRECT_URL=https://your.domain.com/oauth2/callback \
-e OAUTH2_PROXY_EMAIL_DOMAINS=* \
quay.io/oauth2-proxy/oauth2-proxy:latest
```
容器启动后,访问 `http://localhost:4180` 即会跳转到 OAuth2 提供商登录。
---
### 使用 Helm (Kubernetes)
```bash
helm repo add oauth2-proxy https://oauth2-proxy.github.io/manifests
helm repo update
helm install oauth2-proxy/oauth2-proxy \
--generate-name \
--set config.clientID=<client-id> \
--set config.clientSecret=<client-secret> \
--set config.cookieSecret=$(openssl rand -base64 32 | head -c 32 | base64) \
--set config.provider=google
```
---
## 配置示例
### 基本配置文件 `oauth2-proxy.cfg`
```ini
provider = "oidc"
client_id = "your-client-id"
client_secret = "your-client-secret"
redirect_url = "https://your.domain.com/oauth2/callback"
oidc_issuer_url = "https://accounts.example.com"
email_domains = ["*"]
cookie_secret = "random-cookie-secret"
```
运行:
```bash
oauth2-proxy --config ./oauth2-proxy.cfg
```
---
## Nginx 反向代理示例
```nginx
server {
listen 443 ssl;
server_name app.example.com;
location / {
proxy_pass http://127.0.0.1:4180;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
---
## 常用环境变量
| 变量名 | 说明 |
| ---------------------------- | ---------------------------------- |
| `OAUTH2_PROXY_PROVIDER` | 身份提供商类型,如 `google`、`github`、`oidc` |
| `OAUTH2_PROXY_CLIENT_ID` | OAuth2 客户端 ID |
| `OAUTH2_PROXY_CLIENT_SECRET` | OAuth2 客户端密钥 |
| `OAUTH2_PROXY_COOKIE_SECRET` | 随机字符串,用于加密 Cookie |
| `OAUTH2_PROXY_REDIRECT_URL` | 回调地址 |
| `OAUTH2_PROXY_EMAIL_DOMAINS` | 允许的邮箱域,`*` 表示允许所有 |
---
## 参考资料
* [官方文档](https://oauth2-proxy.github.io/oauth2-proxy/)
* [GitHub 仓库](https://github.com/oauth2-proxy/oauth2-proxy)

32
oauth2-proxy/data.yml Normal file
View File

@ -0,0 +1,32 @@
name: OAuth2 Proxy
tags:
- 开发工具
- 安全
title: OAuth2身份认证代理支持多种身份提供商的统一登录解决方案
description: 一个支持多种OAuth2和OIDC身份提供商的认证代理工具常用于在现有Web服务前添加统一登录认证。
additionalProperties:
key: oauth2-proxy
name: OAuth2 Proxy
tags:
- DevTool
- Security
shortDescZh: OAuth2认证代理支持多身份提供商的一站式登录认证解决方案
shortDescEn: OAuth2 authentication proxy with multi-provider SSO support
type: website
crossVersionUpdate: true
limit: 0
website: https://oauth2-proxy.github.io/oauth2-proxy/
github: https://github.com/oauth2-proxy/oauth2-proxy
document: https://oauth2-proxy.github.io/oauth2-proxy/
description:
en: A reverse proxy and authentication provider that provides login using OAuth2 and OpenID Connect providers, suitable for securing existing web services with SSO.
zh: 一个反向代理和认证中间件支持多种OAuth2和OIDC身份提供商为现有Web服务提供统一登录保护。
zh-Hant: 一個反向代理與認證中介軟體支援多種OAuth2和OIDC身份提供商為既有Web服務提供單一登入保護。
ja: 複数のOAuth2およびOIDCプロバイダーに対応した認証プロキシで、既存のWebサービスにSSO保護を追加可能。
ms: Proksi pengesahan yang menyokong penyedia OAuth2 dan OIDC pelbagai, sesuai untuk melindungi perkhidmatan web sedia ada dengan SSO.
pt-br: Proxy de autenticação que suporta múltiplos provedores OAuth2 e OIDC, adequado para proteger serviços web existentes com SSO.
ru: Обратный прокси и провайдер аутентификации, поддерживающий OAuth2 и OIDC, обеспечивающий единую точку входа для существующих веб-сервисов.
ko: 다양한 OAuth2 및 OIDC 제공자를 지원하는 인증 프록시로, 기존 웹 서비스에 단일 로그인 보호를 제공합니다.
architectures:
- amd64
- arm64

BIN
oauth2-proxy/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB