Merge pull request #4879 from okxlin/feat/unleash-20260716

Add Unleash app
This commit is contained in:
okxlin
2026-07-16 09:31:07 +08:00
committed by GitHub
15 changed files with 678 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
PANEL_APP_PORT_HTTP=4242
PANEL_DB_TYPE=postgresql
PANEL_DB_HOST=postgresql
PANEL_DB_PORT=5432
PANEL_DB_NAME=unleash
PANEL_DB_USER=unleash
PANEL_DB_USER_PASSWORD=replace-with-a-strong-database-password
UNLEASH_DEFAULT_ADMIN_USERNAME=admin
UNLEASH_DEFAULT_ADMIN_PASSWORD=replace-with-a-strong-admin-password
UNLEASH_SECRET=replace-with-a-long-random-session-secret
UNLEASH_URL=
LOG_LEVEL=warn
TZ=Asia/Shanghai
CONTAINER_NAME=unleash-compose-check
+234
View File
@@ -0,0 +1,234 @@
additionalProperties:
formFields:
- default: 4242
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: HTTP Port
labelZh: HTTP 端口
label:
en: HTTP Port
zh: HTTP 端口
zh-Hant: HTTP 連接埠
ja: HTTP ポート
ko: HTTP 포트
ru: HTTP-порт
ms: Port HTTP
pt-br: Porta HTTP
required: true
rule: paramPort
type: number
- default: postgresql
envKey: PANEL_DB_TYPE
labelEn: Database Runtime
labelZh: 数据库 Runtime
label:
en: Database Runtime
zh: 数据库 Runtime
zh-Hant: 資料庫 Runtime
ja: データベース Runtime
ko: 데이터베이스 Runtime
ru: Среда базы данных
ms: Runtime Pangkalan Data
pt-br: Runtime de banco de dados
required: true
type: apps
values:
- label: PostgreSQL
value: postgresql
child:
default: ''
envKey: PANEL_DB_HOST
labelEn: PostgreSQL Service
labelZh: PostgreSQL 服务
label:
en: PostgreSQL Service
zh: PostgreSQL 服务
zh-Hant: PostgreSQL 服務
ja: PostgreSQL サービス
ko: PostgreSQL 서비스
ru: Сервис PostgreSQL
ms: Perkhidmatan PostgreSQL
pt-br: Serviço PostgreSQL
required: true
type: service
- default: 5432
edit: true
envKey: PANEL_DB_PORT
labelEn: Database Port
labelZh: 数据库端口
label:
en: Database Port
zh: 数据库端口
zh-Hant: 資料庫連接埠
ja: データベースポート
ko: 데이터베이스 포트
ru: Порт базы данных
ms: Port pangkalan data
pt-br: Porta do banco de dados
required: true
rule: paramPort
type: number
- default: unleash
edit: true
envKey: PANEL_DB_NAME
labelEn: Database Name
labelZh: 数据库名
label:
en: Database Name
zh: 数据库名
zh-Hant: 資料庫名稱
ja: データベース名
ko: 데이터베이스 이름
ru: Имя базы данных
ms: Nama pangkalan data
pt-br: Nome do banco de dados
random: true
required: true
rule: paramCommon
type: text
- default: unleash
edit: true
envKey: PANEL_DB_USER
labelEn: Database User
labelZh: 数据库用户
label:
en: Database User
zh: 数据库用户
zh-Hant: 資料庫使用者
ja: データベースユーザー
ko: 데이터베이스 사용자
ru: Пользователь базы данных
ms: Pengguna pangkalan data
pt-br: Usuário do banco de dados
random: true
required: true
rule: paramCommon
type: text
- default: ''
edit: true
envKey: PANEL_DB_USER_PASSWORD
labelEn: Database Password
labelZh: 数据库密码
label:
en: Database Password
zh: 数据库密码
zh-Hant: 資料庫密碼
ja: データベースパスワード
ko: 데이터베이스 비밀번호
ru: Пароль базы данных
ms: Kata laluan pangkalan data
pt-br: Senha do banco de dados
required: true
rule: paramComplexity
type: password
- default: admin
edit: true
envKey: UNLEASH_DEFAULT_ADMIN_USERNAME
labelEn: Initial Admin Username
labelZh: 初始管理员用户名
label:
en: Initial Admin Username
zh: 初始管理员用户名
zh-Hant: 初始管理員使用者名稱
ja: 初期管理者ユーザー名
ko: 초기 관리자 사용자 이름
ru: Имя начального администратора
ms: Nama pengguna pentadbir awal
pt-br: Usuário administrador inicial
required: true
rule: paramCommon
type: text
- default: ''
edit: true
envKey: UNLEASH_DEFAULT_ADMIN_PASSWORD
labelEn: Initial Admin Password
labelZh: 初始管理员密码
label:
en: Initial Admin Password
zh: 初始管理员密码
zh-Hant: 初始管理員密碼
ja: 初期管理者パスワード
ko: 초기 관리자 비밀번호
ru: Пароль начального администратора
ms: Kata laluan pentadbir awal
pt-br: Senha do administrador inicial
required: true
rule: paramComplexity
type: password
- default: ''
edit: true
envKey: UNLEASH_SECRET
labelEn: Session Secret
labelZh: 会话密钥
label:
en: Session Secret
zh: 会话密钥
zh-Hant: 工作階段密鑰
ja: セッションシークレット
ko: 세션 비밀 키
ru: Секрет сеанса
ms: Rahsia sesi
pt-br: Segredo da sessão
required: true
rule: paramComplexity
type: password
- default: ''
edit: true
envKey: UNLEASH_URL
labelEn: Public URL
labelZh: 公共访问 URL
label:
en: Public URL
zh: 公共访问 URL
zh-Hant: 公開存取 URL
ja: 公開 URL
ko: 공개 URL
ru: Публичный URL
ms: URL awam
pt-br: URL pública
required: false
rule: paramExtUrl
type: text
- default: warn
edit: true
envKey: LOG_LEVEL
labelEn: Log Level
labelZh: 日志级别
label:
en: Log Level
zh: 日志级别
zh-Hant: 日誌層級
ja: ログレベル
ko: 로그 수준
ru: Уровень журналирования
ms: Tahap log
pt-br: Nível de log
required: true
type: select
values:
- label: debug
value: debug
- label: info
value: info
- label: warn
value: warn
- label: error
value: error
- label: fatal
value: fatal
- default: Asia/Shanghai
edit: true
envKey: TZ
labelEn: Timezone
labelZh: 时区
label:
en: Timezone
zh: 时区
zh-Hant: 時區
ja: タイムゾーン
ko: 시간대
ru: Часовой пояс
ms: Zon waktu
pt-br: Fuso horário
required: true
type: text
+36
View File
@@ -0,0 +1,36 @@
services:
unleash:
image: "unleashorg/unleash-server:8.0.3"
container_name: ${CONTAINER_NAME}
restart: unless-stopped
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:4242"
environment:
- DATABASE_HOST=${PANEL_DB_HOST}
- DATABASE_PORT=${PANEL_DB_PORT}
- DATABASE_NAME=${PANEL_DB_NAME}
- DATABASE_USERNAME=${PANEL_DB_USER}
- DATABASE_PASSWORD=${PANEL_DB_USER_PASSWORD}
- DATABASE_SSL=false
- UNLEASH_DEFAULT_ADMIN_USERNAME=${UNLEASH_DEFAULT_ADMIN_USERNAME}
- UNLEASH_DEFAULT_ADMIN_PASSWORD=${UNLEASH_DEFAULT_ADMIN_PASSWORD}
- UNLEASH_SECRET=${UNLEASH_SECRET}
- UNLEASH_URL=${UNLEASH_URL}
- LOG_LEVEL=${LOG_LEVEL}
- TZ=${TZ}
healthcheck:
test:
- CMD-SHELL
- wget --no-verbose --tries=1 --spider http://127.0.0.1:4242/ready || exit 1
interval: 30s
timeout: 10s
start_period: 90s
retries: 5
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
set -euo pipefail
docker-compose down --volumes
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
+56
View File
@@ -0,0 +1,56 @@
# Unleash
## 产品介绍
Unleash 是一个开源的功能开关与特性管理平台,可用于解耦代码部署和功能发布、渐进式发布、A/B 实验以及多环境功能配置。
本应用包使用 Unleash 官方容器镜像,并复用 1Panel 管理的 PostgreSQL Runtime。应用 Compose 只包含一个 Unleash 服务,不内置数据库 sidecar。
## 主要功能
- 通过功能开关控制软件功能的启用范围和发布时间
- 管理项目、环境、策略、约束和变体
- 为后端与前端 SDK 提供 API,并记录变更审计事件
## 访问说明
- 选择一个 PostgreSQL 15 或更高版本的 1Panel Runtime;Unleash v8 仅正式测试并支持 PostgreSQL 15+。
- 首次安装时填写管理员用户名和随机强密码。初始管理员只会在空数据库的第一次启动时创建。
- Session Secret 用于签名登录会话,必须保持私密且在升级时保持不变。
- 默认访问地址为 `http://<服务器地址>:<HTTP 端口>`,数据库感知的就绪检查地址为 `/ready`。
- 使用域名或反向代理时,可填写 Public URL;留空时沿用上游默认值 `http://localhost:4242`。
## 数据与升级
- 项目、功能开关、用户和审计数据全部存放在所选的 PostgreSQL Runtime 中;容器本身不保存业务数据。
- Unleash 启动时自动执行数据库迁移。升级前应完整备份 PostgreSQL 数据库,并等待 `/ready` 恢复后再继续操作。
- `latest` 跟随上游稳定镜像;需要可复现部署时请选择固定版本。
## 安全说明
- 本包不使用上游演示 Compose 中的默认管理员密码或不安全示例 API token。
- 安装表单要求填写符合复杂度规则的管理员密码、数据库密码和 Session Secret,包内不预置共享默认值。
- 官方镜像以非 root 的 UID 1000 运行,不需要特权模式、主机网络或 Docker Socket。
- 1Panel 内部 PostgreSQL 连接默认不启用 TLS;如连接远程数据库,请按照上游文档配置 `DATABASE_SSL_*` 参数并重新评估网络信任边界。
- Unleash v8 的开源许可为 AGPL-3.0-or-later,请在部署前确认其与使用场景兼容。
## Introduction
Unleash is an open-source feature management platform for separating code deployment from feature release, progressive delivery, experimentation, and multi-environment configuration.
This package uses the official Unleash image and a selectable 1Panel-managed PostgreSQL Runtime. Its Compose topology contains one Unleash service and no bundled database sidecar.
## Features
- Control feature exposure independently from code deployment
- Manage projects, environments, strategies, constraints, and variants
- Serve backend and frontend SDK APIs with an auditable change history
## Usage and upgrades
- Select PostgreSQL 15 or newer; Unleash v8 officially tests and supports PostgreSQL 15+.
- Supply strong database, administrator, and Session Secret values in the install form and keep them private. The package contains no shared secret defaults; the initial administrator is created only on the first start of an empty database.
- Business data lives in PostgreSQL. Back up that database before upgrades and wait for `/ready` to recover after migrations.
- The image runs as non-root UID 1000 and requires no privileged mode, host network, or Docker Socket.
Sources: `https://github.com/Unleash/unleash`, `https://docs.getunleash.io/deploy/getting-started`, and `https://docs.getunleash.io/deploy/configuring-unleash`.
+36
View File
@@ -0,0 +1,36 @@
name: Unleash
tags:
- DevOps
title: 开源功能开关与特性管理平台
description: 开源功能开关与特性管理平台
additionalProperties:
key: unleash
name: Unleash
tags:
- DevOps
type: tool
website: https://www.getunleash.io/
document: https://docs.getunleash.io/deploy/getting-started
github: https://github.com/Unleash/unleash
shortDescZh: 开源功能开关与特性管理平台
shortDescEn: An open-source feature management platform
crossVersionUpdate: true
limit: 0
recommend: 0
memoryRequired: 512
architectures:
- amd64
- arm64
description:
en: An open-source feature management platform for controlled software releases
and experimentation
zh: 用于可控软件发布与实验的开源功能开关和特性管理平台
zh-Hant: 用於可控軟體發佈與實驗的開源功能開關和特性管理平台
ja: 制御されたソフトウェアリリースと実験のためのオープンソース機能管理基盤
ko: 제어된 소프트웨어 릴리스와 실험을 위한 오픈 소스 기능 관리 플랫폼
ru: Платформа управления функциями с открытым кодом для контролируемых выпусков
и экспериментов
ms: Platform pengurusan ciri sumber terbuka untuk keluaran perisian terkawal dan
eksperimen
pt-br: Plataforma de gerenciamento de recursos de código aberto para lançamentos
controlados e experimentos
+14
View File
@@ -0,0 +1,14 @@
PANEL_APP_PORT_HTTP=4242
PANEL_DB_TYPE=postgresql
PANEL_DB_HOST=postgresql
PANEL_DB_PORT=5432
PANEL_DB_NAME=unleash
PANEL_DB_USER=unleash
PANEL_DB_USER_PASSWORD=replace-with-a-strong-database-password
UNLEASH_DEFAULT_ADMIN_USERNAME=admin
UNLEASH_DEFAULT_ADMIN_PASSWORD=replace-with-a-strong-admin-password
UNLEASH_SECRET=replace-with-a-long-random-session-secret
UNLEASH_URL=
LOG_LEVEL=warn
TZ=Asia/Shanghai
CONTAINER_NAME=unleash-compose-check
+234
View File
@@ -0,0 +1,234 @@
additionalProperties:
formFields:
- default: 4242
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: HTTP Port
labelZh: HTTP 端口
label:
en: HTTP Port
zh: HTTP 端口
zh-Hant: HTTP 連接埠
ja: HTTP ポート
ko: HTTP 포트
ru: HTTP-порт
ms: Port HTTP
pt-br: Porta HTTP
required: true
rule: paramPort
type: number
- default: postgresql
envKey: PANEL_DB_TYPE
labelEn: Database Runtime
labelZh: 数据库 Runtime
label:
en: Database Runtime
zh: 数据库 Runtime
zh-Hant: 資料庫 Runtime
ja: データベース Runtime
ko: 데이터베이스 Runtime
ru: Среда базы данных
ms: Runtime Pangkalan Data
pt-br: Runtime de banco de dados
required: true
type: apps
values:
- label: PostgreSQL
value: postgresql
child:
default: ''
envKey: PANEL_DB_HOST
labelEn: PostgreSQL Service
labelZh: PostgreSQL 服务
label:
en: PostgreSQL Service
zh: PostgreSQL 服务
zh-Hant: PostgreSQL 服務
ja: PostgreSQL サービス
ko: PostgreSQL 서비스
ru: Сервис PostgreSQL
ms: Perkhidmatan PostgreSQL
pt-br: Serviço PostgreSQL
required: true
type: service
- default: 5432
edit: true
envKey: PANEL_DB_PORT
labelEn: Database Port
labelZh: 数据库端口
label:
en: Database Port
zh: 数据库端口
zh-Hant: 資料庫連接埠
ja: データベースポート
ko: 데이터베이스 포트
ru: Порт базы данных
ms: Port pangkalan data
pt-br: Porta do banco de dados
required: true
rule: paramPort
type: number
- default: unleash
edit: true
envKey: PANEL_DB_NAME
labelEn: Database Name
labelZh: 数据库名
label:
en: Database Name
zh: 数据库名
zh-Hant: 資料庫名稱
ja: データベース名
ko: 데이터베이스 이름
ru: Имя базы данных
ms: Nama pangkalan data
pt-br: Nome do banco de dados
random: true
required: true
rule: paramCommon
type: text
- default: unleash
edit: true
envKey: PANEL_DB_USER
labelEn: Database User
labelZh: 数据库用户
label:
en: Database User
zh: 数据库用户
zh-Hant: 資料庫使用者
ja: データベースユーザー
ko: 데이터베이스 사용자
ru: Пользователь базы данных
ms: Pengguna pangkalan data
pt-br: Usuário do banco de dados
random: true
required: true
rule: paramCommon
type: text
- default: ''
edit: true
envKey: PANEL_DB_USER_PASSWORD
labelEn: Database Password
labelZh: 数据库密码
label:
en: Database Password
zh: 数据库密码
zh-Hant: 資料庫密碼
ja: データベースパスワード
ko: 데이터베이스 비밀번호
ru: Пароль базы данных
ms: Kata laluan pangkalan data
pt-br: Senha do banco de dados
required: true
rule: paramComplexity
type: password
- default: admin
edit: true
envKey: UNLEASH_DEFAULT_ADMIN_USERNAME
labelEn: Initial Admin Username
labelZh: 初始管理员用户名
label:
en: Initial Admin Username
zh: 初始管理员用户名
zh-Hant: 初始管理員使用者名稱
ja: 初期管理者ユーザー名
ko: 초기 관리자 사용자 이름
ru: Имя начального администратора
ms: Nama pengguna pentadbir awal
pt-br: Usuário administrador inicial
required: true
rule: paramCommon
type: text
- default: ''
edit: true
envKey: UNLEASH_DEFAULT_ADMIN_PASSWORD
labelEn: Initial Admin Password
labelZh: 初始管理员密码
label:
en: Initial Admin Password
zh: 初始管理员密码
zh-Hant: 初始管理員密碼
ja: 初期管理者パスワード
ko: 초기 관리자 비밀번호
ru: Пароль начального администратора
ms: Kata laluan pentadbir awal
pt-br: Senha do administrador inicial
required: true
rule: paramComplexity
type: password
- default: ''
edit: true
envKey: UNLEASH_SECRET
labelEn: Session Secret
labelZh: 会话密钥
label:
en: Session Secret
zh: 会话密钥
zh-Hant: 工作階段密鑰
ja: セッションシークレット
ko: 세션 비밀 키
ru: Секрет сеанса
ms: Rahsia sesi
pt-br: Segredo da sessão
required: true
rule: paramComplexity
type: password
- default: ''
edit: true
envKey: UNLEASH_URL
labelEn: Public URL
labelZh: 公共访问 URL
label:
en: Public URL
zh: 公共访问 URL
zh-Hant: 公開存取 URL
ja: 公開 URL
ko: 공개 URL
ru: Публичный URL
ms: URL awam
pt-br: URL pública
required: false
rule: paramExtUrl
type: text
- default: warn
edit: true
envKey: LOG_LEVEL
labelEn: Log Level
labelZh: 日志级别
label:
en: Log Level
zh: 日志级别
zh-Hant: 日誌層級
ja: ログレベル
ko: 로그 수준
ru: Уровень журналирования
ms: Tahap log
pt-br: Nível de log
required: true
type: select
values:
- label: debug
value: debug
- label: info
value: info
- label: warn
value: warn
- label: error
value: error
- label: fatal
value: fatal
- default: Asia/Shanghai
edit: true
envKey: TZ
labelEn: Timezone
labelZh: 时区
label:
en: Timezone
zh: 时区
zh-Hant: 時區
ja: タイムゾーン
ko: 시간대
ru: Часовой пояс
ms: Zon waktu
pt-br: Fuso horário
required: true
type: text
+36
View File
@@ -0,0 +1,36 @@
services:
unleash:
image: "unleashorg/unleash-server:latest"
container_name: ${CONTAINER_NAME}
restart: unless-stopped
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:4242"
environment:
- DATABASE_HOST=${PANEL_DB_HOST}
- DATABASE_PORT=${PANEL_DB_PORT}
- DATABASE_NAME=${PANEL_DB_NAME}
- DATABASE_USERNAME=${PANEL_DB_USER}
- DATABASE_PASSWORD=${PANEL_DB_USER_PASSWORD}
- DATABASE_SSL=false
- UNLEASH_DEFAULT_ADMIN_USERNAME=${UNLEASH_DEFAULT_ADMIN_USERNAME}
- UNLEASH_DEFAULT_ADMIN_PASSWORD=${UNLEASH_DEFAULT_ADMIN_PASSWORD}
- UNLEASH_SECRET=${UNLEASH_SECRET}
- UNLEASH_URL=${UNLEASH_URL}
- LOG_LEVEL=${LOG_LEVEL}
- TZ=${TZ}
healthcheck:
test:
- CMD-SHELL
- wget --no-verbose --tries=1 --spider http://127.0.0.1:4242/ready || exit 1
interval: 30s
timeout: 10s
start_period: 90s
retries: 5
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
set -euo pipefail
docker-compose down --volumes
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB