From e08e7ccb3f655b9f62e23b6d4c11907bc1648ee2 Mon Sep 17 00:00:00 2001 From: QYG2297248353 Date: Mon, 9 Dec 2024 03:23:21 +0000 Subject: [PATCH] Processed apps directory via GitHub Actions --- appstore/logto/1.22.0/.env | 36 +++++++ appstore/logto/1.22.0/data.yml | 104 +++++++++++++++++++++ appstore/logto/1.22.0/docker-compose.yml | 29 ++++++ appstore/logto/1.22.0/envs/default.env | 2 + appstore/logto/1.22.0/envs/global.env | 2 + appstore/logto/1.22.0/scripts/init.sh | 17 ++++ appstore/logto/1.22.0/scripts/uninstall.sh | 10 ++ appstore/logto/1.22.0/scripts/upgrade.sh | 17 ++++ appstore/logto/README.md | 47 ++++++++++ appstore/logto/data.yml | 15 +++ appstore/logto/logo.png | Bin 0 -> 62876 bytes dockge/logto/.env | 36 +++++++ dockge/logto/docker-compose.yml | 29 ++++++ dockge/logto/envs/default.env | 2 + dockge/logto/envs/global.env | 2 + 15 files changed, 348 insertions(+) create mode 100644 appstore/logto/1.22.0/.env create mode 100644 appstore/logto/1.22.0/data.yml create mode 100644 appstore/logto/1.22.0/docker-compose.yml create mode 100644 appstore/logto/1.22.0/envs/default.env create mode 100644 appstore/logto/1.22.0/envs/global.env create mode 100644 appstore/logto/1.22.0/scripts/init.sh create mode 100644 appstore/logto/1.22.0/scripts/uninstall.sh create mode 100644 appstore/logto/1.22.0/scripts/upgrade.sh create mode 100644 appstore/logto/README.md create mode 100644 appstore/logto/data.yml create mode 100644 appstore/logto/logo.png create mode 100644 dockge/logto/.env create mode 100644 dockge/logto/docker-compose.yml create mode 100644 dockge/logto/envs/default.env create mode 100644 dockge/logto/envs/global.env diff --git a/appstore/logto/1.22.0/.env b/appstore/logto/1.22.0/.env new file mode 100644 index 000000000..b80b60787 --- /dev/null +++ b/appstore/logto/1.22.0/.env @@ -0,0 +1,36 @@ +# Postgres 服务 (前置检查) [必填] +PANEL_POSTGRES_TYPE=postgresql + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=3002 + +# API 端口 [必填] +PANEL_APP_PORT_API=3001 + +# OIDC 发行者域名 [必填] +ENDPOINT=http://127.0.0.1:3001 + +# 控制台重定向地址 [必填] +ADMIN_ENDPOINT=http://127.0.0.1:3002 + +# 禁用后台访问 [必填] +ADMIN_DISABLE_LOCALHOST=false + +# 数据库 主机地址 [必填] +POSTGRES_HOST=127.0.0.1 + +# 数据库 端口 [必填] +POSTGRES_PORT=5432 + +# 数据库 名称 [必填] +POSTGRES_NAME=logto + +# 数据库 用户名 [必填] +POSTGRES_USER=logto + +# 数据库 密码 [必填] +POSTGRES_PASSWORD= + +# 中央缓存 Redis +REDIS_URL= + diff --git a/appstore/logto/1.22.0/data.yml b/appstore/logto/1.22.0/data.yml new file mode 100644 index 000000000..aac2f13e9 --- /dev/null +++ b/appstore/logto/1.22.0/data.yml @@ -0,0 +1,104 @@ +additionalProperties: + formFields: + - child: + default: "" + envKey: PANEL_POSTGRES_SERVICE + required: true + type: service + default: postgresql + envKey: PANEL_POSTGRES_TYPE + labelZh: Postgres 服务 (前置检查) + labelEn: Postgres Service (Pre-check) + required: true + type: apps + values: + - label: PostgreSQL + value: postgresql + - default: 3002 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: 3001 + edit: true + envKey: PANEL_APP_PORT_API + labelZh: API 端口 + labelEn: API port + required: true + rule: paramPort + type: number + - default: "http://127.0.0.1:3001" + edit: true + envKey: ENDPOINT + labelZh: OIDC 发行者域名 + labelEn: OIDC Issuer Domain + required: true + type: text + - default: "http://127.0.0.1:3002" + edit: true + envKey: ADMIN_ENDPOINT + labelZh: 控制台重定向地址 + labelEn: Admin Redirect URL + required: true + type: text + - default: "false" + edit: true + envKey: ADMIN_DISABLE_LOCALHOST + labelZh: 禁用后台访问 + labelEn: Disable Admin Access + required: true + type: select + values: + - label: 禁用访问 + value: "true" + - label: 允许访问 + value: "false" + - default: "127.0.0.1" + edit: true + envKey: POSTGRES_HOST + labelZh: 数据库 主机地址 + labelEn: Database Host + required: true + type: text + - default: 5432 + edit: true + envKey: POSTGRES_PORT + labelZh: 数据库 端口 + labelEn: Database Port + required: true + rule: paramPort + type: number + - default: "logto" + edit: true + envKey: POSTGRES_NAME + labelZh: 数据库 名称 + labelEn: Database Name + required: true + rule: paramCommon + type: text + - default: "logto" + edit: true + envKey: POSTGRES_USER + labelZh: 数据库 用户名 + labelEn: Database Username + required: true + type: text + - default: "" + edit: true + envKey: POSTGRES_PASSWORD + labelZh: 数据库 密码 + labelEn: Database Password + random: true + required: true + rule: paramComplexity + type: password + - default: "" + edit: true + envKey: REDIS_URL + labelZh: 中央缓存 Redis + labelEn: Central Cache Redis + required: false + type: text diff --git a/appstore/logto/1.22.0/docker-compose.yml b/appstore/logto/1.22.0/docker-compose.yml new file mode 100644 index 000000000..e6b19d680 --- /dev/null +++ b/appstore/logto/1.22.0/docker-compose.yml @@ -0,0 +1,29 @@ +networks: + 1panel-network: + external: true +services: + logto: + container_name: logto + entrypoint: + - sh + - -c + - npm run cli db seed -- --swe && npm start + env_file: + - ./envs/global.env + - .env + environment: + - NODE_ENV=production + - PORT=${PANEL_APP_PORT_API} + - ADMIN_PORT=${PANEL_APP_PORT_HTTP} + - TRUST_PROXY_HEADER=true + - CASE_SENSITIVE_USERNAME=true + - DB_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_NAME} + image: svhd/logto:1.22.0 + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_API} + - ${PANEL_APP_PORT_HTTP} + restart: always diff --git a/appstore/logto/1.22.0/envs/default.env b/appstore/logto/1.22.0/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/appstore/logto/1.22.0/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/appstore/logto/1.22.0/envs/global.env b/appstore/logto/1.22.0/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/appstore/logto/1.22.0/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/appstore/logto/1.22.0/scripts/init.sh b/appstore/logto/1.22.0/scripts/init.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/appstore/logto/1.22.0/scripts/init.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/appstore/logto/1.22.0/scripts/uninstall.sh b/appstore/logto/1.22.0/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/appstore/logto/1.22.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/appstore/logto/1.22.0/scripts/upgrade.sh b/appstore/logto/1.22.0/scripts/upgrade.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/appstore/logto/1.22.0/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/appstore/logto/README.md b/appstore/logto/README.md new file mode 100644 index 000000000..2edb8247e --- /dev/null +++ b/appstore/logto/README.md @@ -0,0 +1,47 @@ +# Logto + +开发者更好的身份基础设施,以及 Auth0 的开源替代方案。 + +![Logto](https://file.lifebus.top/imgs/logto_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +Logto 是一个开源的身份和访问管理(IAM)平台,旨在简化客户身份和访问管理(CIAM)和员工身份管理。 +基于单点登录(SSO)、基于 OIDC 的认证和多租户 SaaS 功能,Logto 提供了一种可扩展、安全且对开发者友好的现代 Web 和移动应用认证管理方式 + +## 特性 + +🧑‍💻 全栈式身份解决方案 + ++ 启用基于 OpenID Connect (OIDC) 的身份验证,使用 Logto SDKs。 ++ 支持无密码登录,以及电子邮件、电话号码、用户名、谷歌、Facebook 和其他社交登录方式等多种选项。 ++ 提供美观的 UI 组件,具有可定制的 CSS 以满足您的业务需求。 + +📦 即插即用型基础设施 + ++ 包含一个可立即使用的管理 API,作为您的身份验证提供者,从而消除了额外实现的需求。 ++ 提供无缝集成您的应用程序与 Logto 的 SDK,支持多平台和语言,适用于您的开发环境。 ++ 提供可扩展的连接器,可由社区贡献进行扩展,并可通过 SAML、OAuth 和 OIDC 协议进行定制。 + +💻 企业级解决方案 + ++ 实现可扩展授权的基于角色的访问控制(RBAC)。 ++ 启用用户管理,通过审计日志跟踪与身份相关的活动并维护安全。 ++ 支持无需最小编码的单点登录(SSO)和多因素认证(MFA)。 ++ 利用Logto 组织轻松构建多租户应用程序。 + +## 安装说明 + +### `中央缓存 Redis` 配置 + +基本格式, 请根据实际情况修改, 遵循 [Redis协议](https://www.iana.org/assignments/uri-schemes/prov/rediss): + +```env +REDIS_URL=redis://:@: +``` + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/appstore/logto/data.yml b/appstore/logto/data.yml new file mode 100644 index 000000000..ed104d4a7 --- /dev/null +++ b/appstore/logto/data.yml @@ -0,0 +1,15 @@ +additionalProperties: + key: logto + name: Logto + tags: + - WebSite + - Middleware + - Local + shortDescZh: 开发者更好的身份基础设施,以及 Auth0 的开源替代方案。 + shortDescEn: A better identity infrastructure for developers, and an open-source alternative to Auth0. + type: website + crossVersionUpdate: true + limit: 0 + website: https://logto.io/ + github: https://github.com/logto-io/logto/ + document: https://docs.logto.io/ diff --git a/appstore/logto/logo.png b/appstore/logto/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..438246a8e2777e3491441855c3aff9a2e48da479 GIT binary patch literal 62876 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

dGN28tAq?i=ZjH6(iWyg9<7g$Exiz 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 J8WE$Q{{c}z;7I@g literal 0 HcmV?d00001 diff --git a/dockge/logto/.env b/dockge/logto/.env new file mode 100644 index 000000000..b80b60787 --- /dev/null +++ b/dockge/logto/.env @@ -0,0 +1,36 @@ +# Postgres 服务 (前置检查) [必填] +PANEL_POSTGRES_TYPE=postgresql + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=3002 + +# API 端口 [必填] +PANEL_APP_PORT_API=3001 + +# OIDC 发行者域名 [必填] +ENDPOINT=http://127.0.0.1:3001 + +# 控制台重定向地址 [必填] +ADMIN_ENDPOINT=http://127.0.0.1:3002 + +# 禁用后台访问 [必填] +ADMIN_DISABLE_LOCALHOST=false + +# 数据库 主机地址 [必填] +POSTGRES_HOST=127.0.0.1 + +# 数据库 端口 [必填] +POSTGRES_PORT=5432 + +# 数据库 名称 [必填] +POSTGRES_NAME=logto + +# 数据库 用户名 [必填] +POSTGRES_USER=logto + +# 数据库 密码 [必填] +POSTGRES_PASSWORD= + +# 中央缓存 Redis +REDIS_URL= + diff --git a/dockge/logto/docker-compose.yml b/dockge/logto/docker-compose.yml new file mode 100644 index 000000000..e6b19d680 --- /dev/null +++ b/dockge/logto/docker-compose.yml @@ -0,0 +1,29 @@ +networks: + 1panel-network: + external: true +services: + logto: + container_name: logto + entrypoint: + - sh + - -c + - npm run cli db seed -- --swe && npm start + env_file: + - ./envs/global.env + - .env + environment: + - NODE_ENV=production + - PORT=${PANEL_APP_PORT_API} + - ADMIN_PORT=${PANEL_APP_PORT_HTTP} + - TRUST_PROXY_HEADER=true + - CASE_SENSITIVE_USERNAME=true + - DB_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_NAME} + image: svhd/logto:1.22.0 + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_API} + - ${PANEL_APP_PORT_HTTP} + restart: always diff --git a/dockge/logto/envs/default.env b/dockge/logto/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/dockge/logto/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/dockge/logto/envs/global.env b/dockge/logto/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/dockge/logto/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai