diff --git a/README.md b/README.md
index 7f53d3a6..fa5a9907 100644
--- a/README.md
+++ b/README.md
@@ -52,49 +52,50 @@
## 维护状态
-| 维护状态 | 应用名称 | 官网 | 描述 | 集合 |
-|:----:|:-----------------------:|:-----------------------------------------:|:---------------------------------------------------------------------|:---------:|
-| 🟢 | AList | https://alist.nn.ci/ | 一款支持多重存储的文件列表程序 | |
-| 🟢 | Bark | https://bark.day.app/ | 一款注重隐私、安全可控的自定义通知推送工具 | |
-| 🔴 | Cookie Cloud | https://github.com/easychen/CookieCloud/ | CookieCloud是一个和自架服务器同步浏览器Cookie和LocalStorage的小工具 | |
-| 🔴 | DeepLX | https://deeplx.owo.network/ | DeepL免费API(无需TOKEN) | |
-| 🟢 | Dockge | https://dockge.kuma.pet/ | 面向堆栈的管理器 | |
-| 🔴 | Elasticsearch | https://www.elastic.co/elasticsearch/ | Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎 | Elastic |
-| 🔴 | Kibana | https://www.elastic.co/kibana/ | Kibana 针对大规模数据快速运行数据分析 | Elastic |
-| 🟢 | Emby | https://emby.media/ | Emby Server 是一款个人媒体服务器,可在几乎所有设备上运行应用程序 | |
-| 🟢 | Emby-lovechen | https://emby.media/ | 【开心版】Emby Server 是一款个人媒体服务器,可在几乎所有设备上运行应用程序 | |
-| 🟢 | Gitea | https://gitea.io/ | 私有、快速、可靠的 DevOps 平台 | Gitea |
-| 🟢 | Gitea Runner | https://gitea.io/ | 【Runner】私有、快速、可靠的 DevOps 平台 | Gitea |
-| 🟢 | Halo | https://halo.run/ | 强大易用的开源建站工具 | |
-| 🟢 | Immich | https://immich.app/ | 【完整版本】高性能自托管照片和视频管理解决方案 | Immich |
-| 🟢 | Immich-Server | https://immich.app/ | 【主服务模块】高性能自托管照片和视频管理解决方案 | Immich |
-| 🟢 | Immich-Machine-Learning | https://immich.app/ | 【机器学习模块】高性能自托管照片和视频管理解决方案 | Immich |
-| 🟢 | IYUU Plus | https://doc.iyuu.cn/ | 基于特征码的索引工具 | |
-| 🟢 | Jellyfin | https://jellyfin.org/ | 自由软件媒体系统 | |
-| 🔴 | LinkDing | https://github.com/sissbruecker/linkding/ | 自托管书签管理器 | |
-| 🔴 | MinIO | https://min.io/ | MinIO 是一种高性能、兼容 S3 的对象存储 | |
-| 🟢 | MoviePilot | https://github.com/jxxghp/MoviePilot/ | NAS媒体库自动化管理工具 | |
-| 🟢 | MySQL | https://www.mysql.com/ | 关系数据库管理系统 | MySQL |
-| 🟢 | MariaDB | https://mariadb.org/ | 【MySQL分支】创新的开源数据库 | MySQL |
-| 🟢 | Percona | https://www.percona.com/ | 【MySQL分支】关系数据库管理系统 | MySQL |
-| 🔴 | Nacos | https://nacos.io/ | 动态服务发现、配置管理和服务管理平台 | |
-| 🟢 | NeZha | https://nacos.io/ | 【哪吒监控】开源、轻量、易用的服务器监控、运维工具 | |
-| 🟢 | OneDev | https://onedev.io/ | DevOps 平台、带有 CI/CD、看板和软件包的 Git 服务器 | |
-| 🟢 | OutLine | https://www.getoutline.com/ | 快速、协作的团队知识库 | |
-| 🟢 | PostgreSQL | https://www.postgresql.org/ | 世界上最先进的开源关系数据库 | |
-| 🟢 | qBittorrent | https://www.qbittorrent.org/ | qBittorrent 比特流客户端 | |
-| 🟢 | QingLong | https://github.com/whyour/qinglong/ | 【青龙】支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台 | |
-| 🟢 | Redis | https://redis.io/ | 从世界上最快的内存数据库创建者那里获取该数据库 | |
-| 🔴 | Sentinel | https://sentinelguard.io/ | 面向分布式、多语言异构化服务架构的流量治理组件 | |
-| 🟢 | SiYuan | https://b3log.org/siyuan/ | 【思源笔记】一款隐私优先、自托管、完全开源的个人知识管理软件 | |
-| 🔴 | SpeedTest | https://www.speedtest.net/ | 互联网速度测试 | SpeedTest |
-| 🔴 | SpeedTest-Tracker | https://docs.speedtest-tracker.dev/ | Speedtest Tracker 是一款自托管互联网性能跟踪应用程序,可针对 Ookla 的 Speedtest 服务运行速度测试检查 | |
-| 🔴 | Stream-Rec | https://github.com/hua0512/stream-rec | Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | |
-| 🟢 | Transmission | https://transmissionbt.com/ | 快速、简单、免费的 Bittorrent 客户端 | |
-| 🟢 | Uptime Kuma | https://uptime.kuma.pet/ | 自托管监控工具 | |
-| 🟢 | Umami | https://umami.is/ | 为速度和效率而构建的网站分析 | |
-| 🔴 | Yarr | https://github.com/nkanaev/yarr | Rss 阅读器 | |
-| 🔴 | Ztncui | https://www.zerotier.com/ | 【自建服务端】ZeroTier 可让您构建几乎任何类型的现代化安全多点虚拟化网络 | ZeroTier |
+| 状态 | 图标 | 应用名称 | 应用官网 | 短的描述 | 集合 |
+|:--:|:---------------------------------------------------------------------------------------:|:-----------------------:|:-----------------------------------------:|:---------------------------------------------------------------------|:---------:|
+| 🟢 | | AList | https://alist.nn.ci/ | 一款支持多重存储的文件列表程序 | |
+| 🟢 | | Bark | https://bark.day.app/ | 一款注重隐私、安全可控的自定义通知推送工具 | |
+| 🟢 | | Casdoor | https://casdoor.org/ | 身份和访问管理(IAM)/单点登录(SSO)平台 | |
+| 🔴 | | Cookie Cloud | https://github.com/easychen/CookieCloud/ | CookieCloud是一个和自架服务器同步浏览器Cookie和LocalStorage的小工具 | |
+| 🔴 | | DeepLX | https://deeplx.owo.network/ | DeepL免费API(无需TOKEN) | |
+| 🟢 | | Dockge | https://dockge.kuma.pet/ | 面向堆栈的管理器 | |
+| 🔴 | | Elasticsearch | https://www.elastic.co/elasticsearch/ | Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎 | Elastic |
+| 🔴 | | Kibana | https://www.elastic.co/kibana/ | Kibana 针对大规模数据快速运行数据分析 | Elastic |
+| 🟢 | | Emby | https://emby.media/ | Emby Server 是一款个人媒体服务器,可在几乎所有设备上运行应用程序 | |
+| 🟢 | | Emby-lovechen | https://emby.media/ | 【开心版】Emby Server 是一款个人媒体服务器,可在几乎所有设备上运行应用程序 | |
+| 🟢 | | Gitea | https://gitea.io/ | 私有、快速、可靠的 DevOps 平台 | Gitea |
+| 🟢 | | Gitea Runner | https://gitea.io/ | 【Runner】私有、快速、可靠的 DevOps 平台 | Gitea |
+| 🟢 | | Halo | https://halo.run/ | 强大易用的开源建站工具 | |
+| 🟢 | | Immich | https://immich.app/ | 【完整版本】高性能自托管照片和视频管理解决方案 | Immich |
+| 🟢 | | Immich-Server | https://immich.app/ | 【主服务模块】高性能自托管照片和视频管理解决方案 | Immich |
+| 🟢 | | Immich-Machine-Learning | https://immich.app/ | 【机器学习模块】高性能自托管照片和视频管理解决方案 | Immich |
+| 🟢 | | IYUU Plus | https://doc.iyuu.cn/ | 基于特征码的索引工具 | |
+| 🟢 | | Jellyfin | https://jellyfin.org/ | 自由软件媒体系统 | |
+| 🔴 | | LinkDing | https://github.com/sissbruecker/linkding/ | 自托管书签管理器 | |
+| 🔴 | | MinIO | https://min.io/ | MinIO 是一种高性能、兼容 S3 的对象存储 | |
+| 🟢 | | MoviePilot | https://github.com/jxxghp/MoviePilot/ | NAS媒体库自动化管理工具 | |
+| 🟢 | | MySQL | https://www.mysql.com/ | 关系数据库管理系统 | MySQL |
+| 🟢 | | MariaDB | https://mariadb.org/ | 【MySQL分支】创新的开源数据库 | MySQL |
+| 🟢 | | Percona | https://www.percona.com/ | 【MySQL分支】关系数据库管理系统 | MySQL |
+| 🔴 | | Nacos | https://nacos.io/ | 动态服务发现、配置管理和服务管理平台 | |
+| 🟢 | | NeZha | https://nacos.io/ | 【哪吒监控】开源、轻量、易用的服务器监控、运维工具 | |
+| 🟢 | | OneDev | https://onedev.io/ | DevOps 平台、带有 CI/CD、看板和软件包的 Git 服务器 | |
+| 🟢 | | OutLine | https://www.getoutline.com/ | 快速、协作的团队知识库 | |
+| 🟢 | | PostgreSQL | https://www.postgresql.org/ | 世界上最先进的开源关系数据库 | |
+| 🟢 | | qBittorrent | https://www.qbittorrent.org/ | qBittorrent 比特流客户端 | |
+| 🟢 | | QingLong | https://github.com/whyour/qinglong/ | 【青龙】支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台 | |
+| 🟢 | | Redis | https://redis.io/ | 从世界上最快的内存数据库创建者那里获取该数据库 | |
+| 🔴 | | Sentinel | https://sentinelguard.io/ | 面向分布式、多语言异构化服务架构的流量治理组件 | |
+| 🟢 | | SiYuan | https://b3log.org/siyuan/ | 【思源笔记】一款隐私优先、自托管、完全开源的个人知识管理软件 | |
+| 🔴 | | SpeedTest | https://www.speedtest.net/ | 互联网速度测试 | SpeedTest |
+| 🔴 | | SpeedTest-Tracker | https://docs.speedtest-tracker.dev/ | Speedtest Tracker 是一款自托管互联网性能跟踪应用程序,可针对 Ookla 的 Speedtest 服务运行速度测试检查 | |
+| 🔴 | | Stream-Rec | https://github.com/hua0512/stream-rec | Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | |
+| 🟢 | | Transmission | https://transmissionbt.com/ | 快速、简单、免费的 Bittorrent 客户端 | |
+| 🟢 | | Uptime Kuma | https://uptime.kuma.pet/ | 自托管监控工具 | |
+| 🟢 | | Umami | https://umami.is/ | 为速度和效率而构建的网站分析 | |
+| 🔴 | | Yarr | https://github.com/nkanaev/yarr | Rss 阅读器 | |
+| 🔴 | | Ztncui | https://www.zerotier.com/ | 【自建服务端】ZeroTier 可让您构建几乎任何类型的现代化安全多点虚拟化网络 | ZeroTier |
> 说明:
>
diff --git a/apps/casdoor/1.645.0/config/init_data.json b/apps/casdoor/1.645.0/config/init_data.json
new file mode 100644
index 00000000..a08a677f
--- /dev/null
+++ b/apps/casdoor/1.645.0/config/init_data.json
@@ -0,0 +1,490 @@
+{
+ "organizations": [
+ {
+ "owner": "",
+ "name": "",
+ "displayName": "",
+ "websiteUrl": "",
+ "favicon": "",
+ "passwordType": "plain",
+ "passwordSalt": "",
+ "passwordOptions": [
+ "AtLeast6"
+ ],
+ "countryCodes": [
+ "US",
+ "GB",
+ "ES",
+ "FR",
+ "DE",
+ "CN",
+ "JP",
+ "KR",
+ "VN",
+ "ID",
+ "SG",
+ "IN",
+ "IT",
+ "MY",
+ "TR",
+ "DZ",
+ "IL",
+ "PH",
+ "NL",
+ "PL",
+ "FI",
+ "SE",
+ "UA",
+ "KZ"
+ ],
+ "defaultAvatar": "",
+ "defaultApplication": "",
+ "tags": [],
+ "languages": [
+ "en",
+ "zh",
+ "es",
+ "fr",
+ "de",
+ "id",
+ "ja",
+ "ko",
+ "ru",
+ "vi",
+ "it",
+ "ms",
+ "tr",
+ "ar",
+ "he",
+ "nl",
+ "pl",
+ "fi",
+ "sv",
+ "uk",
+ "kk",
+ "fa"
+ ],
+ "masterPassword": "",
+ "defaultPassword": "",
+ "initScore": 2000,
+ "enableSoftDeletion": false,
+ "isProfilePublic": true,
+ "accountItems": []
+ }
+ ],
+ "applications": [
+ {
+ "owner": "",
+ "name": "",
+ "displayName": "",
+ "logo": "",
+ "homepageUrl": "",
+ "organization": "",
+ "cert": "",
+ "enablePassword": true,
+ "enableSignUp": true,
+ "clientId": "",
+ "clientSecret": "",
+ "providers": [
+ {
+ "name": "",
+ "canSignUp": true,
+ "canSignIn": true,
+ "canUnlink": false,
+ "prompted": false,
+ "alertType": "None"
+ }
+ ],
+ "signinMethods": [
+ {
+ "name": "Password",
+ "displayName": "Password",
+ "rule": "All"
+ },
+ {
+ "name": "Verification code",
+ "displayName": "Verification code",
+ "rule": "All"
+ },
+ {
+ "name": "WebAuthn",
+ "displayName": "WebAuthn",
+ "rule": "None"
+ },
+ {
+ "name": "Face ID",
+ "displayName": "Face ID",
+ "rule": "None"
+ }
+ ],
+ "signupItems": [
+ {
+ "name": "ID",
+ "visible": false,
+ "required": true,
+ "prompted": false,
+ "rule": "Random"
+ },
+ {
+ "name": "Username",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "rule": "None"
+ },
+ {
+ "name": "Display name",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "rule": "None"
+ },
+ {
+ "name": "Password",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "rule": "None"
+ },
+ {
+ "name": "Confirm password",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "rule": "None"
+ },
+ {
+ "name": "Email",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "rule": "None"
+ },
+ {
+ "name": "Phone",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "rule": "None"
+ },
+ {
+ "name": "Agreement",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "rule": "None"
+ }
+ ],
+ "grantTypes": [
+ "authorization_code",
+ "password",
+ "client_credentials",
+ "token",
+ "id_token",
+ "refresh_token"
+ ],
+ "redirectUris": [
+ "http://localhost:9000/callback"
+ ],
+ "tokenFormat": "JWT",
+ "tokenFields": [],
+ "expireInHours": 168,
+ "failedSigninLimit": 5,
+ "failedSigninFrozenTime": 15
+ }
+ ],
+ "users": [
+ {
+ "owner": "",
+ "name": "",
+ "type": "normal-user",
+ "password": "",
+ "displayName": "",
+ "avatar": "",
+ "email": "",
+ "phone": "",
+ "countryCode": "",
+ "address": [],
+ "affiliation": "",
+ "tag": "",
+ "score": 2000,
+ "ranking": 1,
+ "isAdmin": true,
+ "isForbidden": false,
+ "isDeleted": false,
+ "signupApplication": "",
+ "createdIp": "",
+ "groups": []
+ }
+ ],
+ "providers": [
+ {
+ "owner": "",
+ "name": "",
+ "displayName": "",
+ "category": "",
+ "type": ""
+ }
+ ],
+ "certs": [
+ {
+ "owner": "",
+ "name": "",
+ "displayName": "",
+ "scope": "JWT",
+ "type": "x509",
+ "cryptoAlgorithm": "RS256",
+ "bitSize": 4096,
+ "expireInYears": 20,
+ "certificate": "",
+ "privateKey": ""
+ }
+ ],
+ "ldaps": [
+ {
+ "id": "",
+ "owner": "",
+ "serverName": "",
+ "host": "",
+ "port": 389,
+ "username": "",
+ "password": "",
+ "baseDn": "",
+ "autoSync": 0,
+ "lastSync": ""
+ }
+ ],
+ "models": [
+ {
+ "owner": "",
+ "name": "",
+ "modelText": "",
+ "displayName": ""
+ }
+ ],
+ "permissions": [
+ {
+ "actions": [],
+ "displayName": "",
+ "effect": "",
+ "isEnabled": true,
+ "model": "",
+ "name": "",
+ "owner": "",
+ "resourceType": "",
+ "resources": [],
+ "roles": [],
+ "users": []
+ }
+ ],
+ "payments": [
+ {
+ "currency": "",
+ "detail": "",
+ "displayName": "",
+ "invoiceRemark": "",
+ "invoiceTaxId": "",
+ "invoiceTitle": "",
+ "invoiceType": "",
+ "invoiceUrl": "",
+ "message": "",
+ "name": "",
+ "organization": "",
+ "owner": "",
+ "payUrl": "",
+ "personEmail": "",
+ "personIdCard": "",
+ "personName": "",
+ "personPhone": "",
+ "price": 0,
+ "productDisplayName": "",
+ "productName": "",
+ "provider": "",
+ "returnUrl": "",
+ "state": "",
+ "tag": "",
+ "type": "",
+ "user": ""
+ }
+ ],
+ "products": [
+ {
+ "currency": "",
+ "detail": "",
+ "displayName": "",
+ "image": "",
+ "name": "",
+ "owner": "",
+ "price": 0,
+ "providers": [],
+ "quantity": 0,
+ "returnUrl": "",
+ "sold": 0,
+ "state": "",
+ "tag": ""
+ }
+ ],
+ "resources": [
+ {
+ "owner": "",
+ "name": "",
+ "user": "",
+ "provider": "",
+ "application": "",
+ "tag": "",
+ "parent": "",
+ "fileName": "",
+ "fileType": "",
+ "fileFormat": "",
+ "url": "",
+ "description": ""
+ }
+ ],
+ "roles": [
+ {
+ "displayName": "",
+ "isEnabled": true,
+ "name": "",
+ "owner": "",
+ "roles": [],
+ "users": []
+ }
+ ],
+ "syncers": [
+ {
+ "affiliationTable": "",
+ "avatarBaseUrl": "",
+ "database": "",
+ "databaseType": "",
+ "errorText": "",
+ "host": "",
+ "isEnabled": false,
+ "name": "",
+ "organization": "",
+ "owner": "",
+ "password": "",
+ "port": 0,
+ "syncInterval": 0,
+ "table": "",
+ "tableColumns": [
+ {
+ "casdoorName": "",
+ "isHashed": true,
+ "name": "",
+ "type": "",
+ "values": []
+ }
+ ],
+ "tablePrimaryKey": "",
+ "type": "",
+ "user": ""
+ }
+ ],
+ "tokens": [
+ {
+ "accessToken": "",
+ "application": "",
+ "code": "",
+ "codeChallenge": "",
+ "codeExpireIn": 0,
+ "codeIsUsed": true,
+ "createdTime": "",
+ "expiresIn": 0,
+ "name": "",
+ "organization": "",
+ "owner": "",
+ "refreshToken": "",
+ "scope": "",
+ "tokenType": "",
+ "user": ""
+ }
+ ],
+ "webhooks": [
+ {
+ "contentType": "",
+ "events": [],
+ "headers": [
+ {
+ "name": "",
+ "value": ""
+ }
+ ],
+ "isEnabled": true,
+ "isUserExtended": true,
+ "method": "",
+ "name": "",
+ "organization": "",
+ "owner": "",
+ "url": ""
+ }
+ ],
+ "groups": [
+ {
+ "owner": "",
+ "name": "",
+ "displayName": "",
+ "manager": "",
+ "contactEmail": "",
+ "type": "",
+ "parent_id": "",
+ "isTopGroup": true,
+ "title": "",
+ "key": "",
+ "children": "",
+ "isEnabled": true
+ }
+ ],
+ "adapters": [
+ {
+ "owner": "",
+ "name": "",
+ "table": "",
+ "useSameDb": true,
+ "type": "",
+ "databaseType": "",
+ "database": "",
+ "host": "",
+ "port": 0,
+ "user": "",
+ "password": ""
+ }
+ ],
+ "enforcers": [
+ {
+ "owner": "",
+ "name": "",
+ "displayName": "",
+ "description": "",
+ "model": "",
+ "adapter": "",
+ "enforcer": ""
+ }
+ ],
+ "plans": [
+ {
+ "owner": "",
+ "name": "",
+ "displayName": "",
+ "description": "",
+ "price": 0,
+ "currency": "",
+ "period": "",
+ "product": "",
+ "paymentProviders": [],
+ "isEnabled": true,
+ "role": ""
+ }
+ ],
+ "pricings": [
+ {
+ "owner": "",
+ "name": "",
+ "displayName": "",
+ "description": "",
+ "plans": [],
+ "isEnabled": true,
+ "trialDuration": 0,
+ "application": ""
+ }
+ ]
+}
diff --git a/apps/casdoor/1.645.0/data.yml b/apps/casdoor/1.645.0/data.yml
new file mode 100644
index 00000000..199607ea
--- /dev/null
+++ b/apps/casdoor/1.645.0/data.yml
@@ -0,0 +1,138 @@
+additionalProperties:
+ formFields:
+ - child:
+ default: ""
+ envKey: PANEL_DB_HOST
+ required: true
+ type: service
+ default: postgresql
+ edit: true
+ envKey: PANEL_DB_TYPE
+ labelZh: 数据库 服务 (前置检查)
+ labelEn: Database Service (Pre-check)
+ required: true
+ type: apps
+ values:
+ - label: PostgreSQL
+ value: postgresql
+ - label: MySQL
+ value: mysql
+ - label: MariaDB
+ value: mariadb
+ - label: Percona
+ value: percona
+ - child:
+ default: ""
+ envKey: PANEL_REDIS_SERVICE
+ required: true
+ type: service
+ default: redis
+ envKey: PANEL_REDIS_TYPE
+ labelZh: Redis 服务 (前置检查)
+ labelEn: Redis Service (Pre-check)
+ required: true
+ type: apps
+ values:
+ - label: Redis
+ value: redis
+ - default: "/home/casdoor"
+ edit: true
+ envKey: CASDOOR_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 8000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: postgresql
+ edit: true
+ envKey: DB_TYPE
+ labelZh: 数据库 类型
+ labelEn: Database Type
+ required: true
+ type: select
+ values:
+ - label: PostgreSQL
+ value: postgresql
+ - label: MySQL (MariaDB, Percona)
+ value: mysql
+ - default: "127.0.0.1"
+ edit: true
+ envKey: DB_HOSTNAME
+ labelZh: 数据库 主机地址
+ labelEn: Database Host
+ required: false
+ type: text
+ - default: 5432
+ edit: true
+ envKey: DB_PORT
+ labelZh: 数据库 端口
+ labelEn: Database Port
+ required: false
+ rule: paramPort
+ type: number
+ - default: "gitea"
+ edit: true
+ envKey: DB_USER
+ labelZh: 数据库 用户名
+ labelEn: Database User
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: DB_PASSWD
+ labelEn: Database Password
+ labelZh: 数据库 密码
+ random: true
+ required: false
+ rule: paramComplexity
+ type: password
+ - default: "gitea"
+ edit: true
+ envKey: DB_NAME
+ labelZh: 数据库 名称
+ labelEn: Database Name
+ required: false
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: REDIS_HOSTNAME
+ labelZh: Redis 主机
+ labelEn: Redis Host
+ required: true
+ type: text
+ - default: 6379
+ edit: true
+ envKey: REDIS_PORT
+ labelZh: Redis 端口
+ labelEn: Redis Port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 0
+ edit: true
+ envKey: REDIS_DBINDEX
+ labelZh: Redis 索引
+ labelEn: Redis Index
+ required: true
+ type: number
+ - default: ""
+ edit: true
+ envKey: REDIS_PASSWORD
+ labelZh: Redis 密码
+ labelEn: Redis Password
+ required: false
+ type: password
+ - default: ""
+ edit: true
+ envKey: socks5Proxy
+ labelZh: Socks5 代理 (地区网络限制)
+ labelEn: Socks5 Proxy (Region Network Restriction)
+ required: false
+ type: text
diff --git a/apps/casdoor/1.645.0/docker-compose.yml b/apps/casdoor/1.645.0/docker-compose.yml
new file mode 100644
index 00000000..93ec9bb8
--- /dev/null
+++ b/apps/casdoor/1.645.0/docker-compose.yml
@@ -0,0 +1,31 @@
+version: "3.8"
+
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ casdoor:
+ image: casbin/casdoor:v1.645.0
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ build:
+ context: ./
+ dockerfile: Dockerfile
+ target: STANDARD
+ entrypoint: /bin/sh -c './server --createDatabase=true'
+ volumes:
+ - ${CASDOOR_ROOT_PATH}/data/files:/home/user/casdoor/files
+ environment:
+ - driverName=${DB_TYPE}
+ - dbName=${DB_NAME}
+ - redisEndpoint=${REDIS_HOSTNAME}:${REDIS_PORT}
+ - verificationCodeTimeout=10
+ - appname="casdoor"
+ - authState="casdoor"
diff --git a/apps/casdoor/1.645.0/scripts/init.sh b/apps/casdoor/1.645.0/scripts/init.sh
new file mode 100644
index 00000000..8d37dc47
--- /dev/null
+++ b/apps/casdoor/1.645.0/scripts/init.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+
+ if [ "$DB_TYPE" == "mysql" ]; then
+ echo "dataSourceName=\"$DB_USER:$DB_PASSWD@tcp($DB_HOSTNAME:$DB_PORT)/\"" >> .env
+ fi
+
+ if [ "$DB_TYPE" == "postgresql" ]; then
+ echo "dataSourceName=\"user=$DB_USER password=$DB_PASSWD host=$DB_HOSTNAME port=$DB_PORT sslmode=disable dbname=$DB_NAME\"" >> .env
+ fi
+
+ if [ -z "$REDIS_PASSWORD" ]; then
+ echo "redisEndpoint=\"$REDIS_HOSTNAME:$REDIS_PORT,$REDIS_DBINDEX,$REDIS_PASSWORD\"" >> .env
+ else
+ echo "redisEndpoint=\"$REDIS_HOSTNAME:$REDIS_PORT,$REDIS_DBINDEX\"" >> .env
+ fi
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/casdoor/1.645.0/scripts/uninstall.sh b/apps/casdoor/1.645.0/scripts/uninstall.sh
new file mode 100644
index 00000000..c86c4fbc
--- /dev/null
+++ b/apps/casdoor/1.645.0/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/casdoor/1.645.0/scripts/upgrade.sh b/apps/casdoor/1.645.0/scripts/upgrade.sh
new file mode 100644
index 00000000..c211154a
--- /dev/null
+++ b/apps/casdoor/1.645.0/scripts/upgrade.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/casdoor/README.md b/apps/casdoor/README.md
new file mode 100644
index 00000000..d77dbc7a
--- /dev/null
+++ b/apps/casdoor/README.md
@@ -0,0 +1,81 @@
+# Casdoor
+
+Casdoor 是一个 UI 优先的身份访问管理 (IAM)/单点登录 (SSO) 平台,其 Web UI 支持 OAuth
+2.0、OIDC、SAML、CAS、LDAP、SCIM、WebAuthn、TOTP、MFA、RADIUS、Google Workspace、活动目录和 Kerberos。
+
+![Casdoor](https://file.lifebus.top/imgs/casdoor_cover.png)
+
+## 简介
+
+Casdoor是一个基于OAuth 2.0、OIDC、SAML 和 CAS 的,UI-first的身份和访问管理(IAM)/单点登录(SSO)平台。
+
+Casdoor是由Casbin社区通过Golang和React进行开发。
+
+Casdoor旨在提供一个强大的认证平台来处理用户管理问题。
+
++ ⚡️ 强大的功能和极简的配置。 支持使用 登录和传统的用户名/密码登录,只需几个步骤,Casdoor即可帮助您构建您的用户管理系统。
+
++ 💥 前后端分离架构。 Casdoor提供可随心所欲的网页界面并支持高并发。
+
++ 🥂 活跃的开源社区。 Casdoor是开源的,并有专业团队积极维护中。
+
++ 🌐 多语言支持。 Casdoor支持多种语言,包括中文、英文、法文、以及更多语言。
+
+## 特性
+
++ Casdoor 遵循前后端分离架构,采用 Golang 进行开发。 它支持高同步,提供基于网页的用户界面管理,并支持10多种语言的本地化。
+
++ Casdoor 支持第三方应用登录,如 GitHub、谷歌、QQ、微信等,并支持通过插件扩展第三方登录。
+
++ Casdoor 支持基于 Cassbin 的授权管理。 它支持 ACL、RBAC、ABAC 和 RESTful鉴权管理模式。
+
++ Casdoor 提供了手机验证码、电子邮件验证码以及重置密码的功能。
+
++ Casdoor 支持日志的审计和记录。
+
++ Casdoor 可以使用阿里云、腾讯云、七牛云提供的图片CDN云存储功能。
+
++ Casdoor 允许自定义注册、登录以及找回密码页面。
+
++ 通过数据库同步支持与现有系统的集成,从而能够顺利过渡到 Casdoor。
+
++ Casdoor 支持主流数据库: MySQL、PostgreSQL、SQL Server 等, 并支持扩展插件以支持新的数据库。
+
+## 安装说明
+
+### 数据库支持
+
+当前仅支持 `MySQL` 和 `PostgreSQL` 数据库。
+
+官方支持使用 'SQLite' 数据库,但不建议在生产环境中使用。因此,我们放弃了 'SQLite' 数据库的配置选项。
+
+同时还有一些其他数据库的支持,但是这些数据库的支持并不完善,因此我们也放弃了这些数据库的配置选项。
+
+### 存储 `本地文件系统`
+
+Casdoor 支持将用户头像等文件存储在本地文件系统中。默认情况下,Casdoor 会将文件存储在容器内部 `/home/user/casdoor/files`
+目录下。
+
+我们将其挂载在 持久化目录 `/home/casdoor` 下,以便于数据的持久化。
+
+### `Socks5 代理 (地区网络限制)` 配置
+
+如果您的网络环境受到地区网络限制,您可以通过配置 `Socks5 代理` 来解决这个问题。
+
+socks5Proxy 是 SOCKS 代理服务器 IP 地址。
+设置代理端口,因为我们有与Google相关的服务,或者使用Google、GitHub、Facebook、LinkedIn或Steam作为OAuth提供商,这在某些地区可能会受到网络限制。
+
+### 数据初始化 `init_data.json` 配置
+
+Casdoor 会在第一次启动时,自动初始化数据库。您可以通过配置 `init_data.json` 文件来初始化数据库。
+
+配置自定义的 `init_data.json` 文件,需要挂载到容器中。
+
+需要修改 `docker-compose.yml` 文件中的 `volumes` 部分,添加自定义配置的挂载,将 `init_data.json` 文件挂载到容器中,覆盖默认配置。
+
+```yaml
+volumes:
+ - ./config/init_data.json:/init_data.json
+```
+
+其中 `./config/init_data.json` 为默认配置文件所在路径,您可以根据实际情况进行修改为自定义绝对文件路径即可。
diff --git a/apps/casdoor/data.yml b/apps/casdoor/data.yml
new file mode 100644
index 00000000..59c536eb
--- /dev/null
+++ b/apps/casdoor/data.yml
@@ -0,0 +1,19 @@
+name: Casdoor
+title: 身份和访问管理(IAM)/单点登录(SSO)平台
+description: 身份和访问管理(IAM)/单点登录(SSO)平台
+additionalProperties:
+ key: casdoor
+ name: Casdoor
+ tags:
+ - WebSite
+ - Middleware
+ - Tool
+ - Local
+ shortDescZh: 身份和访问管理(IAM)/单点登录(SSO)平台
+ shortDescEn: Identity and Access Management (IAM)/Single Sign-On (SSO) platform
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://casdoor.org/
+ github: https://github.com/casdoor/casdoor/
+ document: https://casdoor.org/zh/docs/overview/
diff --git a/apps/casdoor/logo.png b/apps/casdoor/logo.png
new file mode 100644
index 00000000..21114837
Binary files /dev/null and b/apps/casdoor/logo.png differ
diff --git a/envs/casdoor/casdoor.env b/envs/casdoor/casdoor.env
new file mode 100644
index 00000000..70eaeccc
--- /dev/null
+++ b/envs/casdoor/casdoor.env
@@ -0,0 +1,31 @@
+appname = casdoor
+httpport = 8000
+runmode = prod
+copyrequestbody = true
+driverName = mysql
+dataSourceName = root:123456@tcp(localhost:3306)/
+dbName = casdoor
+tableNamePrefix =
+showSql = false
+redisEndpoint =
+defaultStorageProvider =
+isCloudIntranet = false
+authState = "casdoor"
+socks5Proxy = "127.0.0.1:10808"
+verificationCodeTimeout = 10
+initScore = 0
+logPostOnly = true
+isUsernameLowered = false
+origin =
+originFrontend =
+staticBaseUrl = "https://cdn.casbin.org"
+isDemoMode = false
+batchSize = 100
+enableGzip = true
+ldapServerPort = 389
+radiusServerPort = 1812
+radiusSecret = "secret"
+quota = {"organization": -1, "user": -1, "application": -1, "provider": -1}
+logConfig = {"filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"}
+initDataFile = "./init_data.json"
+frontendBaseDir = "../casdoor"