😋更新两个应用,尝试代理
This commit is contained in:
parent
efe570be4b
commit
dffeedea1e
|
|
@ -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>
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
|
|
@ -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)
|
||||
|
|
@ -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
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 8.9 KiB |
Loading…
Reference in New Issue