1
0
Fork 0

Merge branch 'patch/add-apps' into localApps

This commit is contained in:
pooneyy 2025-10-26 18:37:48 +08:00
commit 6e2acaa817
No known key found for this signature in database
45 changed files with 2179 additions and 0 deletions

View File

@ -0,0 +1,133 @@
additionalProperties:
formFields:
- child:
default: ""
envKey: PANEL_DB_HOST
required: true
type: service
default: mysql
envKey: PANEL_DB_TYPE
labelEn: Database Service
labelZh: 数据库服务
label:
en: Database Service
ja: データベースサービス
ms: Perkhidmatan Pangkalan Data
pt-br: Serviço de Banco de Dados
ru: Сервис базы данных
ko: 데이터베이스 서비스
zh: 数据库服务
zh-Hant: 數據庫 服務
required: true
type: apps
values:
- label: MySQL
value: mysql
- label: MariaDB
value: mariadb
- label: PostgreSQL
value: postgres
- default: anheyu
envKey: PANEL_DB_NAME
labelEn: Database Name
labelZh: 数据库名
label:
en: Database Name
ja: データベース
ms: Pangkalan Data
pt-br: Banco de Dados
ru: База данных
ko: 데이터베이스
zh: 数据库名
zh-Hant: 數據庫名
random: true
required: true
rule: paramCommon
type: text
- default: anheyu
envKey: PANEL_DB_USER
labelEn: Database User
labelZh: 数据库用户
label:
en: Database User
ja: ユーザー
ms: Pengguna
pt-br: Usuário
ru: Пользователь
ko: 사용자
zh: 数据库用户
zh-Hant: 數據庫用戶
random: true
required: true
rule: paramCommon
type: text
- default: anheyu
envKey: PANEL_DB_USER_PASSWORD
labelEn: Database User Password
labelZh: 数据库用户密码
label:
en: Database User Password
ja: パスワード
ms: Kata Laluan
pt-br: Senha
ru: Пароль
ko: 비밀번호
zh: 数据库用户密码
zh-Hant: 數據庫用戶密碼
random: true
required: true
type: password
- default: ""
envKey: PANEL_REDIS_HOST
key: redis
labelEn: Redis Service
labelZh: redis 服务
required: true
type: service
label:
en: Redis Service
ja: Redisサービス
ms: Perkhidmatan Redis
pt-br: Serviço Redis
ru: Сервис Redis
ko: Redis 서비스
zh: redis 服务
zh-Hant: redis 服务
- default: ""
envKey: PANEL_REDIS_ROOT_PASSWORD
labelEn: Redis Service Password
labelZh: 缓存服务服务密码
required: false
type: password
# 验证密钥
- default: ""
envKey: PANEL_LICENSE_KEY
labelEn: License Key
labelZh: 授权密钥
label:
en: License Key
ja: ライセンスキー
ms: Kunci Lesen
pt-br: Chave de Licença
ru: Лицензионный ключ
ko: 라이선스 키
zh: 授权密钥
zh-Hant: 授權密鑰
required: true
type: password
- default: 37826
envKey: PANEL_APP_PORT_HTTP
labelEn: Port
labelZh: HTTP 端口
label:
en: 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,32 @@
services:
anheyu:
image: anheyu/pro:1.5.2
container_name: ${CONTAINER_NAME}
restart: always
labels:
createdBy: "Apps"
ports:
- ${PANEL_APP_PORT_HTTP}:8091
environment:
ANHEYU_DATABASE_TYPE: ${PANEL_DB_TYPE}
ANHEYU_DATABASE_HOST: ${PANEL_DB_HOST}
ANHEYU_DATABASE_USER: ${PANEL_DB_USER}
ANHEYU_DATABASE_NAME: ${PANEL_DB_NAME}
ANHEYU_DATABASE_PORT: ${PANEL_DB_PORT}
ANHEYU_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD}
ANHEYU_REDIS_ADDR: ${PANEL_REDIS_HOST}:6379
ANHEYU_REDIS_PASSWORD: ${PANEL_REDIS_ROOT_PASSWORD}
ANHEYU_REDIS_DB: 10
ANHEYU_LICENSE_KEY: ${PANEL_LICENSE_KEY}
networks:
- 1panel-network
volumes:
- ./data/data:/anheyu/data
- ./data/themes:/anheyu/themes
- ./data/static:/anheyu/static
- ./data/backup:/anheyu/backup
networks:
1panel-network:
external: true

View File

@ -0,0 +1,37 @@
#!/bin/bash
set -e
BASE_DIR="./data"
TEMP_DIR="./data_temp"
CONF_FILE_OLD="$BASE_DIR/conf.ini"
CONF_FILE_NEW="$BASE_DIR/data/conf.ini"
# 1. 如果 data_temp 存在,直接删除
if [ -d "$TEMP_DIR" ]; then
echo "发现 $TEMP_DIR,正在删除..."
rm -rf "$TEMP_DIR"
fi
# 2. 判断当前结构
if [ -f "$CONF_FILE_NEW" ]; then
echo "检测到新结构 ($CONF_FILE_NEW 存在),无需迁移。"
exit 0
elif [ -f "$CONF_FILE_OLD" ]; then
echo "检测到旧结构 ($CONF_FILE_OLD 存在),开始迁移..."
# 2.1 将 data 重命名为 data_temp
mv "$BASE_DIR" "$TEMP_DIR"
# 2.2 创建新的目录结构
mkdir -p "$BASE_DIR/data" "$BASE_DIR/themes" "$BASE_DIR/static" "$BASE_DIR/backup"
# 2.3 把旧数据移到新的 data 目录
cp -a "$TEMP_DIR"/* "$BASE_DIR/data/" 2>/dev/null || true
cp -a "$TEMP_DIR"/.[!.]* "$BASE_DIR/data/" 2>/dev/null || true
echo "迁移完成!旧数据已移入 $BASE_DIR/data/ 下。"
echo "请检查无误后再次运行脚本,以彻底删除 $TEMP_DIR"
else
echo "未找到 $CONF_FILE_OLD$CONF_FILE_NEW,无法确认目录结构,退出。"
exit 1
fi

View File

@ -0,0 +1,81 @@
# 🌈 Anheyu Blog Pro
## ❕ 注意必看
> 该版本需要**密钥**方可运行如果尚未得到Pro授权请使用社区版本
> 如果后台添加域名,密钥会变动,请跳转到目录,直接修改.env文件中的授权密钥即可
如果能给我一个 **Star ⭐**,那将是对我莫大的鼓励。
在使用本应用前请注意:
它是一个 **独立应用**,需要服务器环境才能运行。推荐使用 **Docker 部署**,可大大减少环境配置带来的问题。
**安知鱼** 负责开发与维护。
* GitHub: [https://github.com/anzhiyu-c/anheyu-app](https://github.com/anzhiyu-c/anheyu-app)
* 预览: 👍 AnZhiYu 🤞 AnZhiYu
* 文档: 📖 AnHeYu Docs
---
## 🌟 系统简介
**Anheyu Blog** 是一个基于 **Go + Vue3** 的现代化博客与内容管理系统。
后端使用 **Go** 提供高性能 API前端采用 **Vue3 + Element Plus** 打造美观易用的用户界面。
---
## ✨ 功能特性
* ✅ Markdown 编辑 & 富文本预览
* ✅ 图片上传、管理与懒加载
* ✅ 分类 & 标签管理
* ✅ 外部链接收集与分享
* ✅ 内置评论系统,支持用户互动
* ✅ 文件管理与缩略图优化
* ✅ 多种数据库支持MySQL/PostgreSQL/SQLite
* ✅ 灵活存储配置
* ✅ 暗黑模式 / 沉浸式状态栏
* ✅ LaTeX 数学公式 & Mermaid 流程图
* ✅ 广告挂载 & Inject 自定义扩展
* ✅ AI 摘要Pro
* ✅ PWA 渐进式应用 & 高速缓存
* ✅ 优秀的隐私协议支持
---
## 🏗️ 技术栈
* **后端**: Go + Ent
* **前端**: Vue3 + Element Plus
* **数据库**: MySQL / PostgreSQL / SQLite
---
## 🤝 贡献
欢迎提交 **Issue / PR** 帮助改进项目!
---
## 📄 开源协议
本项目基于 **GPL-3.0 License** 开源。
---
## 👨‍💻 作者
* **安知鱼**(项目维护者)
---
## 🙏 致谢
感谢所有为本项目贡献的开发者与用户!
---
## 📢 社区
* QQ 群组:**464636182**

View File

@ -0,0 +1,30 @@
name: Anheyu Blog Pro
tags:
- 建站
title: 【赞助版】一个基于 Go + Vue3 的现代化博客与内容管理系统
description: 【赞助版】基于 Go 语言后端与 Vue3 前端构建的高性能博客与内容管理平台
additionalProperties:
key: anheyu-blog-pro
name: Anheyu Blog Pro
tags:
- website
shortDescZh: 一个基于 Go + Vue3 的现代化博客与内容管理系统
shortDescEn: A modern blog and content management system built with Go and Vue3
type: website
crossVersionUpdate: true
limit: 0
website: https://anheyu.com/
github: https://github.com/anzhiyu-c/anheyu-app
document: https://dev.anheyu.com/docs/getting-started/
description:
en: A modern blog and content management system built with Go backend and Vue3 frontend.
zh: 一个基于 Go 语言后端与 Vue3 前端构建的现代化博客与内容管理系统。
zh-Hant: 一個基於 Go 語言後端與 Vue3 前端構建的現代化部落格與內容管理系統。
ja: Go バックエンドと Vue3 フロントエンドで構築されたモダンなブログ・コンテンツ管理システム。
ms: Sistem blog dan pengurusan kandungan moden dibina dengan Go backend dan Vue3 frontend.
pt-br: Um sistema moderno de blog e gerenciamento de conteúdo construído com Go e Vue3.
ru: Современная система ведения блогов и управления контентом, построенная на Go и Vue3.
ko: Go 백엔드와 Vue3 프론트엔드로 구축된 현대적인 블로그 및 콘텐츠 관리 시스템.
architectures:
- amd64
- arm64

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -0,0 +1,117 @@
additionalProperties:
formFields:
- child:
default: ""
envKey: PANEL_DB_HOST
required: true
type: service
default: mysql
envKey: PANEL_DB_TYPE
labelEn: Database Service
labelZh: 数据库服务
label:
en: Database Service
ja: データベースサービス
ms: Perkhidmatan Pangkalan Data
pt-br: Serviço de Banco de Dados
ru: Сервис базы данных
ko: 데이터베이스 서비스
zh: 数据库服务
zh-Hant: 數據庫 服務
required: true
type: apps
values:
- label: MySQL
value: mysql
- label: MariaDB
value: mariadb
- label: PostgreSQL
value: postgres
- default: anheyu
envKey: PANEL_DB_NAME
labelEn: Database Name
labelZh: 数据库名
label:
en: Database Name
ja: データベース
ms: Pangkalan Data
pt-br: Banco de Dados
ru: База данных
ko: 데이터베이스
zh: 数据库名
zh-Hant: 數據庫名
random: true
required: true
rule: paramCommon
type: text
- default: anheyu
envKey: PANEL_DB_USER
labelEn: Database User
labelZh: 数据库用户
label:
en: Database User
ja: ユーザー
ms: Pengguna
pt-br: Usuário
ru: Пользователь
ko: 사용자
zh: 数据库用户
zh-Hant: 數據庫用戶
random: true
required: true
rule: paramCommon
type: text
- default: anheyu
envKey: PANEL_DB_USER_PASSWORD
labelEn: Database User Password
labelZh: 数据库用户密码
label:
en: Database User Password
ja: パスワード
ms: Kata Laluan
pt-br: Senha
ru: Пароль
ko: 비밀번호
zh: 数据库用户密码
zh-Hant: 數據庫用戶密碼
random: true
required: true
type: password
- default: ""
envKey: PANEL_REDIS_HOST
key: redis
labelEn: Redis Service
labelZh: redis 服务
required: true
type: service
label:
en: Redis Service
ja: Redisサービス
ms: Perkhidmatan Redis
pt-br: Serviço Redis
ru: Сервис Redis
ko: Redis 서비스
zh: redis 服务
zh-Hant: redis 服务
- default: ""
envKey: PANEL_REDIS_ROOT_PASSWORD
labelEn: Redis Service Password
labelZh: 缓存服务服务密码
required: false
type: password
- default: 37826
envKey: PANEL_APP_PORT_HTTP
labelEn: Port
labelZh: HTTP 端口
label:
en: 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,30 @@
services:
anheyu:
image: anheyu/anheyu-backend:1.5.2
container_name: ${CONTAINER_NAME}
restart: always
labels:
createdBy: "Apps"
ports:
- ${PANEL_APP_PORT_HTTP}:8091
environment:
ANHEYU_DATABASE_TYPE: ${PANEL_DB_TYPE}
ANHEYU_DATABASE_HOST: ${PANEL_DB_HOST}
ANHEYU_DATABASE_USER: ${PANEL_DB_USER}
ANHEYU_DATABASE_NAME: ${PANEL_DB_NAME}
ANHEYU_DATABASE_PORT: ${PANEL_DB_PORT}
ANHEYU_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD}
ANHEYU_REDIS_ADDR: ${PANEL_REDIS_HOST}:6379
ANHEYU_REDIS_PASSWORD: ${PANEL_REDIS_ROOT_PASSWORD}
ANHEYU_REDIS_DB: 10
networks:
- 1panel-network
volumes:
- ./data/data:/anheyu/data
- ./data/themes:/anheyu/themes
- ./data/static:/anheyu/static
- ./data/backup:/anheyu/backup
networks:
1panel-network:
external: true

View File

@ -0,0 +1,37 @@
#!/bin/bash
set -e
BASE_DIR="./data"
TEMP_DIR="./data_temp"
CONF_FILE_OLD="$BASE_DIR/conf.ini"
CONF_FILE_NEW="$BASE_DIR/data/conf.ini"
# 1. 如果 data_temp 存在,直接删除
if [ -d "$TEMP_DIR" ]; then
echo "发现 $TEMP_DIR,正在删除..."
rm -rf "$TEMP_DIR"
fi
# 2. 判断当前结构
if [ -f "$CONF_FILE_NEW" ]; then
echo "检测到新结构 ($CONF_FILE_NEW 存在),无需迁移。"
exit 0
elif [ -f "$CONF_FILE_OLD" ]; then
echo "检测到旧结构 ($CONF_FILE_OLD 存在),开始迁移..."
# 2.1 将 data 重命名为 data_temp
mv "$BASE_DIR" "$TEMP_DIR"
# 2.2 创建新的目录结构
mkdir -p "$BASE_DIR/data" "$BASE_DIR/themes" "$BASE_DIR/static" "$BASE_DIR/backup"
# 2.3 把旧数据移到新的 data 目录
cp -a "$TEMP_DIR"/* "$BASE_DIR/data/" 2>/dev/null || true
cp -a "$TEMP_DIR"/.[!.]* "$BASE_DIR/data/" 2>/dev/null || true
echo "迁移完成!旧数据已移入 $BASE_DIR/data/ 下。"
echo "请检查无误后再次运行脚本,以彻底删除 $TEMP_DIR"
else
echo "未找到 $CONF_FILE_OLD$CONF_FILE_NEW,无法确认目录结构,退出。"
exit 1
fi

View File

@ -0,0 +1,76 @@
# 🌈 Anheyu Blog
如果能给我一个 **Star ⭐**,那将是对我莫大的鼓励。
在使用本应用前请注意:
它是一个 **独立应用**,需要服务器环境才能运行。推荐使用 **Docker 部署**,可大大减少环境配置带来的问题。
**安知鱼** 负责开发与维护。
* GitHub: [https://github.com/anzhiyu-c/anheyu-app](https://github.com/anzhiyu-c/anheyu-app)
* 预览: 👍 AnZhiYu 🤞 AnZhiYu
* 文档: 📖 AnHeYu Docs
---
## 🌟 系统简介
**Anheyu Blog** 是一个基于 **Go + Vue3** 的现代化博客与内容管理系统。
后端使用 **Go** 提供高性能 API前端采用 **Vue3 + Element Plus** 打造美观易用的用户界面。
---
## ✨ 功能特性
* ✅ Markdown 编辑 & 富文本预览
* ✅ 图片上传、管理与懒加载
* ✅ 分类 & 标签管理
* ✅ 外部链接收集与分享
* ✅ 内置评论系统,支持用户互动
* ✅ 文件管理与缩略图优化
* ✅ 多种数据库支持MySQL/PostgreSQL/SQLite
* ✅ 灵活存储配置
* ✅ 暗黑模式 / 沉浸式状态栏
* ✅ LaTeX 数学公式 & Mermaid 流程图
* ✅ 广告挂载 & Inject 自定义扩展
* ✅ AI 摘要Pro
* ✅ PWA 渐进式应用 & 高速缓存
* ✅ 优秀的隐私协议支持
---
## 🏗️ 技术栈
* **后端**: Go + Ent
* **前端**: Vue3 + Element Plus
* **数据库**: MySQL / PostgreSQL / SQLite
---
## 🤝 贡献
欢迎提交 **Issue / PR** 帮助改进项目!
---
## 📄 开源协议
本项目基于 **GPL-3.0 License** 开源。
---
## 👨‍💻 作者
* **安知鱼**(项目维护者)
---
## 🙏 致谢
感谢所有为本项目贡献的开发者与用户!
---
## 📢 社区
* QQ 群组:**464636182**

30
apps/anheyu-blog/data.yml Normal file
View File

@ -0,0 +1,30 @@
name: Anheyu Blog
tags:
- 建站
title: 一个基于 Go + Vue3 的现代化博客与内容管理系统
description: 基于 Go 语言后端与 Vue3 前端构建的高性能博客与内容管理平台
additionalProperties:
key: anheyu-blog
name: Anheyu Blog
tags:
- website
shortDescZh: 一个基于 Go + Vue3 的现代化博客与内容管理系统
shortDescEn: A modern blog and content management system built with Go and Vue3
type: website
crossVersionUpdate: true
limit: 0
website: https://anheyu.com/
github: https://github.com/anzhiyu-c/anheyu-app
document: https://dev.anheyu.com/docs/getting-started/
description:
en: A modern blog and content management system built with Go backend and Vue3 frontend.
zh: 一个基于 Go 语言后端与 Vue3 前端构建的现代化博客与内容管理系统。
zh-Hant: 一個基於 Go 語言後端與 Vue3 前端構建的現代化部落格與內容管理系統。
ja: Go バックエンドと Vue3 フロントエンドで構築されたモダンなブログ・コンテンツ管理システム。
ms: Sistem blog dan pengurusan kandungan moden dibina dengan Go backend dan Vue3 frontend.
pt-br: Um sistema moderno de blog e gerenciamento de conteúdo construído com Go e Vue3.
ru: Современная система ведения блогов и управления контентом, построенная на Go и Vue3.
ko: Go 백엔드와 Vue3 프론트엔드로 구축된 현대적인 블로그 및 콘텐츠 관리 시스템.
architectures:
- amd64
- arm64

BIN
apps/anheyu-blog/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

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

View File

@ -0,0 +1,17 @@
services:
moontv:
image: bestrui/bestsub:v1.6.3
container_name: ${CONTAINER_NAME}
restart: always
labels:
createdBy: "Apps"
ports:
- ${PANEL_APP_PORT_HTTP}:8080
volumes:
- ./data:/app/data
networks:
- 1panel-network
networks:
1panel-network:
external: true

160
apps/bestsub/README.md Normal file
View File

@ -0,0 +1,160 @@
# BestSub
BestSub 是一个高性能的节点检测,订阅转换服务,基于 Go 语言开发。该项目提供了完整的 Web 界面和 API 接口,支持多种检测项目,多种订阅格式转换,为用户提供便捷的订阅管理解决方案。
## ✨ 主要特性
- 🎨 **现代的 WebUI**: 提供现代化的 Web 管理界面,完善的 API 文档,方便用户自定义开发
- ⚡ **高性能**: 并发处理,低 CPU 占用,低内存消耗,优化的资源利用率
- 🌍 **多架构**: 支持多种系统架构和操作系统,广泛的兼容性
- 🗂️ **节点池**: 可持久化保存历史节点,智能淘汰质量低下的节点,确保最佳体验
- 🔄 **内置 Subconverter**: 支持各种订阅格式的输入输出转换
- 🔧 **扩展**: 模块化设计,支持 PR 扩展新功能,仅需创建单个文件即可添加新的通知、保存或检测方式
- 📢 **通知**: 支持多样化的通知方式和自定义通知模板,满足不同场景的消息推送需求
- 💾 **保存**: 支持多样化的数据保存方式,灵活的数据持久化选择
- 🔍 **检测**: 支持多样化的节点检测方式,全面的质量评估体系
## 🚀 快速开始
### 方式一:直接运行
1. 从 [Releases](https://github.com/bestruirui/BestSub/releases/latest) 页面下载适合您系统架构的可执行文件
2. 直接运行程序,系统将自动:
- 创建必要的配置文件
- 下载 WebUI
- 下载 Subconverter
### 方式二Docker
```bash
docker run -d \
--name bestsub \
--restart unless-stopped \
-v /path/to/data:/app/data \
-p 8080:8080 \
ghcr.io/bestruirui/bestsub
```
**参数说明:**
- `--name bestsub`: 设置容器名称
- `--restart unless-stopped`: 容器自动重启策略
- `-v /path/to/data:/app/data`: 数据持久化挂载(请将 `/path/to/data` 替换为您的实际路径)
- `-p 8080:8080`: 端口映射,访问地址为 `http://localhost:8080`
### 方式三Docker Compose
创建 `docker-compose.yml` 文件:
```yaml
services:
bestsub:
image: ghcr.io/bestruirui/bestsub:latest
container_name: bestsub
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./data:/app/data
```
启动服务:
```bash
docker-compose up -d
```
## 📁 目录结构
程序运行后将创建以下目录结构:
```
bestsub/
├── config.json # 主配置文件
├── data/ # 数据目录
│ └── bestsub.db # SQLite 数据库文件
├── log/ # 日志文件目录
├── session/ # 会话数据目录
│ └── bestsub.session # 会话文件
├── subconverter/ # 订阅转换器目录
│ ├── base/ # 转换规则基础配置
│ │ └── base/
│ │ └── all_base.tpl
│ ├── pref.yml # 转换器配置文件
│ └── subconverter # 转换器可执行文件
└── ui/ # Web 界面文件
├── index.html # 主页面
└── ... # 其他静态资源
```
## 🛠️ 手动部署
当自动下载失败时,请按以下步骤手动部署:
1. **下载 WebUI 组件**
- 访问 [BestSubOrg/Front](https://github.com/BestSubOrg/Front/releases/latest)
- 下载最新版本并解压到 `ui` 目录
2. **下载 Subconverter 组件**
- 访问 [BestSubOrg/subconverter](https://github.com/BestSubOrg/subconverter/releases/latest)
- 下载对应系统架构的版本并解压到 `subconverter` 目录
3. **验证部署**
- 确保目录结构与上述 [目录结构](#-目录结构) 章节一致
- 重新启动程序
## 🔗 版本历史
### 当前版本 (v1.x)
- 全新的 Web 界面
- 增强的性能和稳定性
- 完整的容器化支持
### 经典版本 (v0.3.5)
- **命令行界面版本**
- **[📖 查看文档](https://github.com/bestruirui/BestSub/blob/legacy/doc/README_zh.md)**
- **[⬇️ 下载应用](https://github.com/bestruirui/BestSub/releases/tag/v0.3.5)**
## 🤝 贡献指南
我们欢迎任何形式的贡献!
### 项目图标
- **格式要求**: SVG 格式
- **用途**: 项目 Logo 和品牌标识
- **提交方式**: 创建 Issue 或 Pull Request
### 更多功能
- 新的节点检测项目
- 新的储存渠道
- 新的通知渠道
### 其他贡献方式
- 🐛 报告 Bug
- 💡 提出新功能建议
- 📝 改进文档
- 🧪 编写测试用例
## ⚠️ 免责声明
本项目仅供学习和研究使用。使用本软件时,请您:
- ✅ 遵守当地法律法规和相关政策
- ✅ 尊重网络服务提供商的使用条款
- ✅ 承担使用本软件可能产生的一切后果和责任
- ⚠️ 理解作者不对使用本软件造成的任何损失承担责任
**请在合法合规的前提下使用本软件。如果您不同意上述条款,请勿使用本软件。**
## ❤️ 支持项目
如果这个项目对您有帮助,请考虑:
- ⭐ 给项目点个 Star
- 🍴 Fork 项目并参与开发
- 📢 向朋友推荐本项目
- 💬 在社区中分享使用体验
## 📊 项目统计
![Repobeats analytics image](https://repobeats.axiom.co/api/embed/dfefb13ae0ed117da68382c0ed63695992826039.svg "Repobeats analytics image")

32
apps/bestsub/data.yml Normal file
View File

@ -0,0 +1,32 @@
name: BestSub
tags:
- 网络工具
title: 高性能的节点检测与订阅转换服务
description: ⚡ BestSub 是一个基于 Go 语言开发的高性能节点检测与订阅转换服务,支持现代 WebUI、API、节点池管理、内置 Subconverter、多样化检测与通知方式等功能。
additionalProperties:
key: bestsub
name: BestSub
tags:
- Tool
shortDescZh: 高性能的节点检测与订阅转换服务
shortDescEn: High-performance node detection and subscription conversion service
type: website
crossVersionUpdate: true
limit: 0
recommend: 0
website: https://github.com/bestruirui/BestSub
github: https://github.com/bestruirui/BestSub
document: https://github.com/bestruirui/BestSub
description:
en: ⚡ BestSub is a high-performance node detection and subscription conversion service built with Go. It provides a modern Web UI and complete API, supports multiple detection methods, subscription format conversions, persistent node pools, extensible modules, and flexible notification and storage options.
zh: ⚡ BestSub 是一个高性能的节点检测与订阅转换服务,基于 Go 语言开发。它提供现代化的 Web 管理界面与完整的 API支持多种检测方式、订阅格式转换、节点池持久化、模块化扩展以及灵活的通知与存储方案。
zh-Hant: ⚡ BestSub 是一個高效能的節點檢測與訂閱轉換服務,基於 Go 語言開發。提供現代化的 Web 管理介面與完整的 API支援多種檢測方式、訂閱格式轉換、節點池持久化、模組化擴展以及靈活的通知與存儲方案。
ja: ⚡ BestSub は Go で開発された高性能ノード検出およびサブスクリプション変換サービスです。最新の Web 管理画面と完全な API を提供し、複数の検出方式、サブスクリプション形式変換、ノードプールの永続化、モジュール拡張、柔軟な通知と保存方法をサポートします。
ms: ⚡ BestSub ialah perkhidmatan pengesanan nod berprestasi tinggi dan penukaran langganan yang dibangunkan dengan Go. Ia menyediakan antara muka pengurusan Web moden dan API lengkap, menyokong pelbagai kaedah pengesanan, penukaran format langganan, kolam nod berterusan, modul boleh diperluas, serta pilihan notifikasi dan simpanan yang fleksibel.
pt-br: ⚡ BestSub é um serviço de detecção de nós e conversão de assinaturas de alto desempenho, desenvolvido em Go. Ele fornece uma interface Web moderna e API completa, suporta vários métodos de detecção, conversões de formato de assinatura, pool de nós persistente, módulos extensíveis e opções flexíveis de notificação e armazenamento.
ru: ⚡ BestSub — это высокопроизводительный сервис для проверки узлов и преобразования подписок, разработанный на Go. Он предоставляет современный веб-интерфейс и полный API, поддерживает различные методы проверки, преобразование форматов подписок, постоянные пулы узлов, модульные расширения, а также гибкие варианты уведомлений и хранения данных.
ko: ⚡ BestSub는 Go로 개발된 고성능 노드 감지 및 구독 변환 서비스입니다. 현대적인 웹 UI와 완전한 API를 제공하며, 다양한 감지 방식, 구독 형식 변환, 노드 풀 영속화, 모듈 확장, 유연한 알림 및 저장 옵션을 지원합니다.
architectures:
- amd64
- arm64
- arm/v7

BIN
apps/bestsub/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

15
apps/dnsmgr/README.md Normal file
View File

@ -0,0 +1,15 @@
# 彩虹聚合DNS管理系统
彩虹聚合DNS管理系统是一款基于ThinkPHP开发的网站程序可实现在单一网站内管理多个平台的域名解析目前已支持的域名解析平台有阿里云、腾讯云、华为云、百度云、西部数码、火山引擎、DNSLA、CloudFlare、Namesilo、PowerDNS。
## ✨ 特性
- **多平台统一管理**在一个面板内集中管理阿里云、腾讯云、华为云等10+主流解析商
- **多用户权限体系**:可为每个用户分配不同的域名解析权限,支持分级管理
- **容灾智能切换**支持ping、tcp、http(s)检测协议,故障自动暂停/修改解析并发送通知
- **定时任务策略**:支持在指定时间/周期自动修改/开启/暂停/删除解析记录
- **CF优选IP**自动获取最新Cloudflare优选IP并批量更新到解析记录
- **SSL证书全自动化**一键从Let's Encrypt等渠道申请证书并自动部署到面板、云厂商、服务器
- **全渠道通知**邮件、微信公众号、Telegram、钉钉、飞书、企业微信等消息实时触达
## 🛠 支持的DNS服务商
阿里云、腾讯云、华为云、百度云、西部数码、火山引擎、DNSLA、CloudFlare、Namesilo、PowerDNS

33
apps/dnsmgr/data.yml Normal file
View File

@ -0,0 +1,33 @@
name: dnsmgr
tags:
- DNS
- 聚合
- 管理
- 自托管
title: 轻量级多上游 DNS 聚合管理系统
description: 彩虹聚合DNS管理系统是一个支持多上游 DNS 聚合、智能分流、缓存加速与可视化管理的轻量级 DNS 管理方案,支持 DoH/DoT/DoQ 等现代协议。
additionalProperties:
key: dnsmgr
name: dnsmgr
tags:
- WebSite
- Tool
shortDescZh: 轻量级多上游 DNS 聚合管理系统
shortDescEn: Lightweight multi-upstream DNS aggregation management system
type: website
crossVersionUpdate: true
limit: 0
website: https://github.com/netcccyun/dnsmgr
github: https://github.com/netcccyun/dnsmgr
document: https://github.com/netcccyun/dnsmgr
description:
en: Lightweight multi-upstream DNS aggregation management system with intelligent routing, cache acceleration, and visual management, supporting DoH/DoT/DoQ.
zh: 轻量级多上游 DNS 聚合管理系统,支持智能分流、缓存加速与可视化管理,兼容 DoH/DoT/DoQ 等现代协议。
zh-Hant: 輕量化多上游 DNS 聚合管理系統,支援智慧分流、快取加速與可視化管理,相容 DoH/DoT/DoQ 等現代協議。
ja: 軽量なマルチアップストリームDNS集約管理システムで、インテリジェントルーティング、キャッシュ加速、ビジュアル管理をサポートし、DoH/DoT/DoQなどの最新プロトコルに対応。
ms: Sistem pengurusan agregasi DNS multi-upstream ringan dengan penghalaan pintar, pecutan cache, dan pengurusan visual, menyokong protokol moden DoH/DoT/DoQ.
pt-br: Sistema de gerenciamento de agregação DNS multi-upstream leve com roteamento inteligente, aceleração de cache e gerenciamento visual, suportando protocolos modernos como DoH/DoT/DoQ.
ru: Лёгкая система управления агрегацией DNS с несколькими upstream-серверами, поддерживающая интеллектуальную маршрутизацию, кеширование и визуальное управление, а также современные протоколы DoH/DoT/DoQ.
ko: 다중 업스트림 DNS 집합 관리 시스템으로, 지능형 라우팅, 캐시 가속 및 시각적 관리를 지원하며 DoH/DoT/DoQ 등 최신 프로토콜을 지원합니다.
architectures:
- amd64

View File

@ -0,0 +1,19 @@
additionalProperties:
formFields:
- default: 13489
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,17 @@
services:
dnsmgr:
image: netcccyun/dnsmgr:latest
container_name: ${CONTAINER_NAME}
restart: always
labels:
createdBy: "Apps"
ports:
- "${PANEL_APP_PORT_HTTP}:80"
volumes:
- ./data:/app/www
networks:
- 1panel-network
networks:
1panel-network:
external: true

BIN
apps/dnsmgr/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

239
apps/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
apps/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

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,90 @@
[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"

View File

@ -0,0 +1,22 @@
services:
hubproxy:
image: ghcr.io/sky22333/hubproxy:latest
container_name: ${CONTAINER_NAME}
ports:
- "${PANEL_APP_PORT_HTTP}:5000"
volumes:
- ./data/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
apps/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
apps/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)

View File

@ -0,0 +1,35 @@
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
- ppc64le
- arm/v7
- s390x

BIN
apps/oauth2-proxy/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

21
apps/termix/README.md Normal file
View File

@ -0,0 +1,21 @@
# Termix
🖥️ **Termix** 是一个跨平台的多功能终端工具,支持多种终端协议和插件扩展,帮助开发者更高效地管理和使用命令行环境。
## 特性
- 支持多平台Linux / macOS / Windows
- 多终端协议兼容
- 插件化扩展,满足不同场景需求
- 界面简洁,使用方便
## 快速开始
1. 部署应用后,访问服务地址即可开始使用。
2. 根据需要安装或启用插件,扩展更多功能。
3. 在配置文件中自定义参数,以适配个人工作流。
## 项目地址
- GitHub: [https://github.com/LukeGus/Termix](https://github.com/LukeGus/Termix)
- 文档: [https://github.com/LukeGus/Termix#readme](https://github.com/LukeGus/Termix#readme)

33
apps/termix/data.yml Normal file
View File

@ -0,0 +1,33 @@
name: Termix
tags:
- 工具
- 终端
title: 多功能跨平台终端工具
description: 🖥️ Termix 是一个跨平台的终端工具,支持多种终端协议和插件扩展,帮助开发者更高效地管理和使用命令行环境。
additionalProperties:
key: termix
name: Termix
tags:
- Tool
- Terminal
shortDescZh: 多功能跨平台终端工具
shortDescEn: A versatile cross-platform terminal tool
type: website
crossVersionUpdate: true
limit: 0
recommend: 0
website: https://github.com/LukeGus/Termix
github: https://github.com/LukeGus/Termix
document: https://github.com/LukeGus/Termix
description:
en: 🖥️ Termix is a versatile cross-platform terminal tool that supports multiple terminal protocols, plugins, and customizations, making it easier to manage and enhance your command-line experience.
zh: 🖥️ Termix 是一个多功能的跨平台终端工具,支持多种终端协议、插件与个性化扩展,帮助开发者更高效地管理和优化命令行体验。
zh-Hant: 🖥️ Termix 是一個多功能的跨平台終端工具,支援多種終端協議、外掛與自訂擴展,幫助開發者更高效地管理和優化命令列體驗。
ja: 🖥️ Termix は、多くのターミナルプロトコルやプラグイン、カスタマイズに対応した多機能クロスプラットフォームターミナルツールで、コマンドライン体験を効率的に管理・向上させます。
ms: 🖥️ Termix ialah alat terminal merentas platform yang serba boleh, menyokong pelbagai protokol terminal, pemalam dan penyesuaian untuk memudahkan pengurusan serta meningkatkan pengalaman baris perintah.
pt-br: 🖥️ Termix é uma ferramenta de terminal multiplataforma versátil, com suporte a vários protocolos, plugins e personalizações, tornando a experiência de linha de comando mais eficiente.
ru: 🖥️ Termix — это многофункциональный кроссплатформенный терминал, поддерживающий различные протоколы, плагины и кастомизации, упрощающий работу с командной строкой.
ko: 🖥️ Termix는 다양한 터미널 프로토콜, 플러그인 및 사용자 정의를 지원하는 다기능 크로스플랫폼 터미널 도구로, 명령줄 경험을 보다 효율적으로 관리하고 향상시킬 수 있습니다.
architectures:
- amd64
- arm64

BIN
apps/termix/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

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

View File

@ -0,0 +1,21 @@
services:
termix:
image: ghcr.io/lukegus/termix:release-1.7.3
container_name: ${CONTAINER_NAME}
restart: always
labels:
createdBy: "Apps"
ports:
- ${PANEL_APP_PORT_HTTP}:8080
networks:
- 1panel-network
volumes:
- ./data:/app/data
environment:
PORT: "8080"
networks:
1panel-network:
external: true

View File

@ -0,0 +1,185 @@
additionalProperties:
formFields:
- default: 14389
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: "https://sso.example.com"
envKey: PANEL_TINYAUTH_APP_URL
labelEn: App URL
labelZh: 应用地址(结尾不要添加斜杠)
label:
en: App URL
ja: アプリURL
ms: URL Aplikasi
pt-br: URL do Aplicativo
ru: URL приложения
ko: 앱 URL
zh: 应用地址(结尾不要添加斜杠)
zh-Hant: 應用地址
required: false
type: text
- default: ""
envKey: PANEL_TINYAUTH_SECRET
labelEn: Secret
labelZh: 密钥
label:
en: Secret
ja: シークレット
ms: Rahsia
pt-br: Segredo
ru: Секрет
ko: 비밀
zh: 密钥
zh-Hant: 密鑰
required: false
type: password
- default: "86400"
envKey: PANEL_TINYAUTH_SESSION_EXPIRY
labelEn: Session Expiry (seconds)
labelZh: 会话过期时间(秒)
label:
en: Session Expiry (seconds)
ja: セッション有効期限(秒)
ms: Tamat Sesi (saat)
pt-br: Expiração da Sessão (segundos)
ru: Время жизни сессии (секунды)
ko: 세션 만료 (초)
zh: 会话过期时间(秒)
zh-Hant: 會話過期時間(秒)
required: false
type: number
- default: "TinyAuth"
envKey: PANEL_TINYAUTH_APP_TITLE
labelEn: App Title
labelZh: 应用标题
label:
en: App Title
ja: アプリタイトル
ms: Tajuk Aplikasi
pt-br: Título do Aplicativo
ru: Заголовок приложения
ko: 앱 제목
zh: 应用标题
zh-Hant: 應用標題
required: false
type: text
- default: ""
envKey: PANEL_TINYAUTH_OAUTH_AUTO_REDIRECT
labelEn: Auto Redirect Provider
labelZh: 自动跳转到登录页面
label:
en: Auto Redirect Provider
ja: 自動リダイレクトプロバイダー
ms: Penyedia Pengalihan Automatik
pt-br: Provedor de Redirecionamento Automático
ru: Автоматический редирект провайдера
ko: 자동 리디렉션 제공자
zh: 自动跳转到登录页面
zh-Hant: 自動跳轉到登錄頁面
required: false
type: select
values:
- label: "关闭"
value: "none"
- label: "开启"
value: "PROVIDER_ID_PLACEHOLDER" # 后面会替换掉为对应的提供商
- default: ""
envKey: PANEL_TINYAUTH_BACKGROUND_IMAGE
labelEn: Background Image
labelZh: 背景图片
label:
en: Background Image
ja: 背景画像
ms: Imej Latar Belakang
pt-br: Imagem de Fundo
ru: Фоновое изображение
ko: 배경 이미지
zh: 背景图片
zh-Hant: 背景圖片
required: false
type: text
- default: "github"
envKey: PANEL_TINYAUTH_PROVIDER_ID
labelEn: Provider ID
labelZh: 提供商ID仅填写一个名称任意如果为github或google后面参数仅需要填写client_id和client_secret
label:
en: Provider ID
ja: プロバイダーID
ms: ID Penyedia
pt-br: ID do Provedor
ru: ID провайдера
ko: 자동 리디렉션 제공자
zh: 提供商ID仅填写一个名称任意如果为github或google后面参数仅需要填写client_id和client_secret
zh-Hant: 供應商ID僅填寫一個名稱任意如果為github或google後面參數僅需要填寫client_id和client_secret
required: True
type: text
# Generic
- default: ""
envKey: PANEL_TINYAUTH_GENERIC_CLIENT_ID
labelEn: Generic Client ID
labelZh: 通用客户端ID
required: true
type: text
- default: ""
envKey: PANEL_TINYAUTH_GENERIC_CLIENT_SECRET
labelEn: Generic Client Secret
labelZh: 通用客户端密钥
required: true
type: password
- default: ""
envKey: PANEL_TINYAUTH_GENERIC_NAME
labelEn: Generic Provider Name
labelZh: 通用提供商名称
required: false
type: text
- default: ""
envKey: PANEL_TINYAUTH_GENERIC_AUTH_URL
labelEn: Generic Auth URL
labelZh: 通用认证地址
required: false
type: text
- default: ""
envKey: PANEL_TINYAUTH_GENERIC_TOKEN_URL
labelEn: Generic Token URL
labelZh: 通用令牌地址
required: false
type: text
- default: ""
envKey: PANEL_TINYAUTH_GENERIC_USER_INFO_URL
labelEn: Generic User Info URL
labelZh: 通用用户信息地址
required: false
type: text
- default: ""
envKey: PANEL_TINYAUTH_GENERIC_SCOPES
labelEn: Generic Scopes
labelZh: 通用范围
required: false
type: text

View File

@ -0,0 +1,36 @@
services:
tinyauth:
image: ghcr.io/steveiliop56/tinyauth:v4.0.1
container_name: ${CONTAINER_NAME}
environment:
# ---- 通用配置 ----
- APP_URL=${PANEL_TINYAUTH_APP_URL}
- SECRET=${PANEL_TINYAUTH_SECRET}
- SESSION_EXPIRY=${PANEL_TINYAUTH_SESSION_EXPIRY}
- APP_TITLE=${PANEL_TINYAUTH_APP_TITLE}
- OAUTH_AUTO_REDIRECT=${PANEL_TINYAUTH_OAUTH_AUTO_REDIRECT}
- BACKGROUND_IMAGE=${PANEL_TINYAUTH_BACKGROUND_IMAGE}
# ---- Generic (示例 Linux.Do) ----
- PROVIDERS_PLACEHOLDER_CLIENT_ID=${PANEL_TINYAUTH_GENERIC_CLIENT_ID}
- PROVIDERS_PLACEHOLDER_CLIENT_SECRET=${PANEL_TINYAUTH_GENERIC_CLIENT_SECRET}
- PROVIDERS_PLACEHOLDER_NAME=${PANEL_TINYAUTH_GENERIC_NAME}
- PROVIDERS_PLACEHOLDER_AUTH_URL=${PANEL_TINYAUTH_GENERIC_AUTH_URL}
- PROVIDERS_PLACEHOLDER_TOKEN_URL=${PANEL_TINYAUTH_GENERIC_TOKEN_URL}
- PROVIDERS_PLACEHOLDER_USER_INFO_URL=${PANEL_TINYAUTH_GENERIC_USER_INFO_URL}
- PROVIDERS_PLACEHOLDER_REDIRECT_URL=${PANEL_TINYAUTH_APP_URL}/api/oauth/callback/${PANEL_TINYAUTH_PROVIDER_ID}
- PROVIDERS_PLACEHOLDER_SCOPES=${PANEL_TINYAUTH_GENERIC_SCOPES}
ports:
- "${PANEL_APP_PORT_HTTP}:3000"
labels:
createdBy: "Apps"
networks:
- 1panel-network
restart: always
volumes:
- ./data:/data
networks:
1panel-network:
external: true

View File

@ -0,0 +1,37 @@
#!/bin/bash
set -e
# 确保.env存在
if [ ! -f ".env" ]; then
echo "❌ 未找到 .env 文件"
exit 1
fi
# 读取 PANEL_TINYAUTH_PROVIDER_ID 变量
PANEL_TINYAUTH_PROVIDER_ID=$(grep '^PANEL_TINYAUTH_PROVIDER_ID=' .env | cut -d '=' -f2- | tr -d '"')
# 去掉 PANEL_TINYAUTH_PROVIDER_ID 中存在的单引号或者双引号
PANEL_TINYAUTH_PROVIDER_ID=$(echo "$PANEL_TINYAUTH_PROVIDER_ID" | tr -d '"' | tr -d "'")
if [ -z "$PANEL_TINYAUTH_PROVIDER_ID" ]; then
echo "❌ 未在 .env 中找到 PANEL_TINYAUTH_PROVIDER_ID"
exit 1
fi
# 生成大写版本
UPPER_ID=$(echo "$PANEL_TINYAUTH_PROVIDER_ID" | tr '[:lower:]' '[:upper:]')
# 替换 .env 中的 PROVIDER_ID_PLACEHOLDER
echo "🧩 替换 .env 文件中的 PROVIDER_ID_PLACEHOLDER → $PANEL_TINYAUTH_PROVIDER_ID"
sed -i "s/PROVIDER_ID_PLACEHOLDER/${PANEL_TINYAUTH_PROVIDER_ID}/g" .env
# 替换 docker-compose.yml 中的 PROVIDERS_PLACEHOLDER
if [ ! -f "docker-compose.yml" ]; then
echo "❌ 未找到 docker-compose.yml 文件"
exit 1
fi
echo "🧩 替换 docker-compose.yml 文件中的 PROVIDERS_PLACEHOLDER → PROVIDERS_${UPPER_ID}"
sed -i "s/PROVIDERS_PLACEHOLDER/PROVIDERS_${UPPER_ID}/g" docker-compose.yml
# 6⃣ 提示完成
echo "✅ 替换完成!"

View File

@ -0,0 +1,33 @@
#!/bin/bash
set -e
# 确保.env存在
if [ ! -f ".env" ]; then
echo "❌ 未找到 .env 文件"
exit 1
fi
# 读取 PANEL_TINYAUTH_PROVIDER_ID 变量
PANEL_TINYAUTH_PROVIDER_ID=$(grep '^PANEL_TINYAUTH_PROVIDER_ID=' .env | cut -d '=' -f2- | tr -d '"')
# 去掉 PANEL_TINYAUTH_PROVIDER_ID 中存在的单引号或者双引号
PANEL_TINYAUTH_PROVIDER_ID=$(echo "$PANEL_TINYAUTH_PROVIDER_ID" | tr -d '"' | tr -d "'")
if [ -z "$PANEL_TINYAUTH_PROVIDER_ID" ]; then
echo "❌ 未在 .env 中找到 PANEL_TINYAUTH_PROVIDER_ID"
exit 1
fi
# 生成大写版本
UPPER_ID=$(echo "$PANEL_TINYAUTH_PROVIDER_ID" | tr '[:lower:]' '[:upper:]')
# 替换 docker-compose.yml 中的 PROVIDERS_PLACEHOLDER
if [ ! -f "docker-compose.yml" ]; then
echo "❌ 未找到 docker-compose.yml 文件"
exit 1
fi
echo "🧩 替换 docker-compose.yml 文件中的 PROVIDERS_PLACEHOLDER → PROVIDERS_${UPPER_ID}"
sed -i "s/PROVIDERS_PLACEHOLDER/PROVIDERS_${UPPER_ID}/g" docker-compose.yml
# 提示完成
echo "✅ 替换完成!"

78
apps/tinyauth/README.md Normal file
View File

@ -0,0 +1,78 @@
# TinyAuth
TinyAuth 是一个轻量级的 OAuth2 / OIDC 认证代理,适合为已有的 Web 应用、面板或服务添加登录保护。你可以将它部署在应用之前,通过标准的身份提供商(如 Casdoor、Keycloak、Auth0 等实现单点登录SSO
## 功能特性
* 支持 OAuth2 / OpenID Connect 协议
* 支持多身份提供商配置
* 可保护现有 Web 服务(无需修改应用本身)
* 简单的反向代理模式
* 支持多种回调和重定向策略
## 快速开始
### 1. 部署 TinyAuth
使用 Docker 运行:
```bash
docker run -d \
--name=tinyauth \
-p 8080:8080 \
-v $(pwd)/config.yml:/app/config.yml \
ghcr.io/tinyauth/tinyauth:latest
```
### 2. 配置示例
`config.yml` 中配置认证提供商(例如 Casdoor
```yaml
server:
port: 8080
providers:
- id: casdoor
name: Casdoor
client_id: your-client-id
client_secret: your-client-secret
issuer: https://auth.example.com
redirect_url: https://tinyauth.example.com/callback
```
### 3. Nginx 反向代理示例
```nginx
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
```
### 4. 登录流程
1. 访问受保护的应用(如 `app.example.com`
2. TinyAuth 会跳转到认证提供商(如 Casdoor登录
3. 登录成功后跳转回应用
## 配置参数
常见参数:
| 参数 | 描述 |
| --------------- | ----------------- |
| `client_id` | OAuth2 客户端 ID |
| `client_secret` | OAuth2 客户端密钥 |
| `issuer` | 身份提供商地址OIDC 发行者) |
| `redirect_url` | 登录成功后的回调地址 |
## 参考链接
* [TinyAuth 文档](https://tinyauth.app/docs)
* [OAuth2 Proxy](https://oauth2-proxy.github.io/oauth2-proxy/)(类似工具)
* [Casdoor](https://casdoor.org/)(身份提供商示例)

32
apps/tinyauth/data.yml Normal file
View File

@ -0,0 +1,32 @@
name: TinyAuth
tags:
- 开发工具
- 安全
title: 轻量级OAuth2/OIDC认证代理支持多身份提供商的统一登录解决方案
description: 一个轻量级的OAuth2和OIDC认证代理工具常用于在现有Web服务前添加统一登录认证。
additionalProperties:
key: tinyauth
name: TinyAuth
tags:
- DevTool
- Security
shortDescZh: 轻量级OAuth2/OIDC认证代理支持多身份提供商的一站式登录认证
shortDescEn: Lightweight OAuth2/OIDC authentication proxy with multi-provider SSO support
type: website
crossVersionUpdate: true
limit: 0
website: https://tinyauth.app/
github: https://github.com/tinyauth/tinyauth
document: https://tinyauth.app/docs/
description:
en: A lightweight reverse proxy and authentication middleware supporting multiple OAuth2 and OpenID Connect providers, ideal for securing existing web services with SSO.
zh: 一个轻量级的反向代理与认证中间件支持多种OAuth2和OIDC身份提供商为现有Web服务提供统一登录保护。
zh-Hant: 一個輕量級的反向代理與認證中介軟體支援多種OAuth2和OIDC身份提供商為既有Web服務提供單一登入保護。
ja: 複数のOAuth2およびOIDCプロバイダーに対応した軽量認証プロキシで、既存のWebサービスにSSO保護を追加可能。
ms: Proksi pengesahan ringan yang menyokong penyedia OAuth2 dan OIDC pelbagai, sesuai untuk melindungi perkhidmatan web sedia ada dengan SSO.
pt-br: Proxy de autenticação leve 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
apps/tinyauth/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB