From a7293f7130f6edccf1d8848089401fe847573950 Mon Sep 17 00:00:00 2001 From: okxlin <61420215+okxlin@users.noreply.github.com> Date: Sat, 4 Jul 2026 01:59:00 +0800 Subject: [PATCH] Require explicit SimpleX address and add Voicebox CUDA variant Remove the localhost default from simplex-smp-server so 1Panel users must enter a real public domain or IP during installation, and align the README and env samples with that requirement. Add the official ghcr.io/jamiepine/voicebox:latest-cuda package as a latest-cuda version directory, keeping the same data/model persistence layout while adding the standard GPU reservation block used by existing appstore GPU variants. Verification: strict validate-v2 for simplex latest/6.5.2 and voicebox latest/latest-cuda; fresh 1Panel v2 smoke for simplex latest and 6.5.2 with an explicit ADDR; CUDA runtime smoke intentionally skipped on this host because no GPU is available. --- apps/simplex-smp-server/6.5.2/.env.sample | 2 +- apps/simplex-smp-server/6.5.2/data.yml | 2 +- apps/simplex-smp-server/README.md | 5 +- apps/simplex-smp-server/latest/.env.sample | 2 +- apps/simplex-smp-server/latest/data.yml | 2 +- apps/voicebox/README.md | 10 ++- apps/voicebox/latest-cuda/.env.sample | 6 ++ apps/voicebox/latest-cuda/data.yml | 83 +++++++++++++++++++ apps/voicebox/latest-cuda/data/.gitkeep | 0 apps/voicebox/latest-cuda/docker-compose.yml | 35 ++++++++ apps/voicebox/latest-cuda/scripts/.gitkeep | 0 apps/voicebox/latest-cuda/scripts/init.sh | 6 ++ .../voicebox/latest-cuda/scripts/uninstall.sh | 4 + apps/voicebox/latest-cuda/scripts/upgrade.sh | 6 ++ apps/voicebox/source-evidence.json | 6 +- 15 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 apps/voicebox/latest-cuda/.env.sample create mode 100644 apps/voicebox/latest-cuda/data.yml create mode 100644 apps/voicebox/latest-cuda/data/.gitkeep create mode 100644 apps/voicebox/latest-cuda/docker-compose.yml create mode 100644 apps/voicebox/latest-cuda/scripts/.gitkeep create mode 100755 apps/voicebox/latest-cuda/scripts/init.sh create mode 100755 apps/voicebox/latest-cuda/scripts/uninstall.sh create mode 100755 apps/voicebox/latest-cuda/scripts/upgrade.sh diff --git a/apps/simplex-smp-server/6.5.2/.env.sample b/apps/simplex-smp-server/6.5.2/.env.sample index 5fe4b9452..3e486a424 100644 --- a/apps/simplex-smp-server/6.5.2/.env.sample +++ b/apps/simplex-smp-server/6.5.2/.env.sample @@ -2,6 +2,6 @@ PANEL_APP_PORT_HTTP=8000 PANEL_APP_PORT_SMP=5223 APP_CONFIG_DIR=./data/config APP_STATE_DIR=./data/state -ADDR=127.0.0.1 +ADDR= PASS= CONTAINER_NAME= diff --git a/apps/simplex-smp-server/6.5.2/data.yml b/apps/simplex-smp-server/6.5.2/data.yml index 1554cbfc7..56a5d0b9b 100644 --- a/apps/simplex-smp-server/6.5.2/data.yml +++ b/apps/simplex-smp-server/6.5.2/data.yml @@ -66,7 +66,7 @@ additionalProperties: pt-br: Diretório de Estado required: true type: text - - default: 127.0.0.1 + - default: '' edit: true envKey: ADDR labelEn: Server Domain or IP diff --git a/apps/simplex-smp-server/README.md b/apps/simplex-smp-server/README.md index 2ebe42864..4afa9fdcc 100644 --- a/apps/simplex-smp-server/README.md +++ b/apps/simplex-smp-server/README.md @@ -16,9 +16,9 @@ SimpleX SMP Server 是官方推荐的自托管 SimpleX 中继服务,提供 SMP http://服务器IP:信息页端口 ``` -信息页端口用于查看服务器说明页;SimpleX 客户端实际连接请使用 `ADDR` 对应的公网域名或 IP 与 SMP 端口。 +信息页端口用于查看服务器说明页;SimpleX 客户端实际连接请使用 `ADDR` 对应的公网域名或公网 IP 与 SMP 端口。 -`ADDR` 默认值为 `127.0.0.1`,仅用于本地初始化与测试。正式使用前请改成你的公网域名或公网 IP。 +安装时必须填写 `ADDR`,请直接填写你的公网域名或公网 IP。 ## 数据持久化 - `APP_CONFIG_DIR`:持久化 `/etc/opt/simplex`,保存证书、指纹与 `smp-server.ini` @@ -32,6 +32,7 @@ SimpleX SMP Server is the official self-hosted relay server for SimpleX. This ad - Embedded HTTP server information page - Auto-generated certificates, fingerprint, and `smp-server.ini` - Optional password for creating new queues +- `ADDR` must be set to your public domain or public IP during installation ## 版本说明 固定版本使用官方镜像 `simplexchat/smp-server:v6.5.2`,`latest` 当前同样基于 6.5.x 发布线。 diff --git a/apps/simplex-smp-server/latest/.env.sample b/apps/simplex-smp-server/latest/.env.sample index 5fe4b9452..3e486a424 100644 --- a/apps/simplex-smp-server/latest/.env.sample +++ b/apps/simplex-smp-server/latest/.env.sample @@ -2,6 +2,6 @@ PANEL_APP_PORT_HTTP=8000 PANEL_APP_PORT_SMP=5223 APP_CONFIG_DIR=./data/config APP_STATE_DIR=./data/state -ADDR=127.0.0.1 +ADDR= PASS= CONTAINER_NAME= diff --git a/apps/simplex-smp-server/latest/data.yml b/apps/simplex-smp-server/latest/data.yml index 1554cbfc7..56a5d0b9b 100644 --- a/apps/simplex-smp-server/latest/data.yml +++ b/apps/simplex-smp-server/latest/data.yml @@ -66,7 +66,7 @@ additionalProperties: pt-br: Diretório de Estado required: true type: text - - default: 127.0.0.1 + - default: '' edit: true envKey: ADDR labelEn: Server Domain or IP diff --git a/apps/voicebox/README.md b/apps/voicebox/README.md index 7e1e995ec..6ca346a43 100644 --- a/apps/voicebox/README.md +++ b/apps/voicebox/README.md @@ -34,11 +34,19 @@ Voicebox is a local-first AI voice studio with web UI, REST API, voice cloning, - OpenAPI docs at `/docs` and health endpoint at `/health` ## 版本说明 -官方 GHCR 当前公开提供 `latest`、`dev`、`latest-cuda` 与 `dev-cuda` 标签,未发布可直接拉取的数字版稳定标签。本适配使用官方 `latest` 镜像。 +官方 GHCR 当前公开提供 `latest`、`dev`、`latest-cuda` 与 `dev-cuda` 标签,未发布可直接拉取的数字版稳定标签。 + +本适配提供: +- `latest`:官方 CPU 通用镜像 +- `latest-cuda`:官方 NVIDIA CUDA 镜像 + +`latest-cuda` 需要宿主机已安装 NVIDIA Container Toolkit,并且当前官方镜像仅发布 `linux/amd64`。 ## 参考资料 - 官网: - 文档: - 源码: - Compose: +- Docker 文档: +- GPU 文档: - GHCR: diff --git a/apps/voicebox/latest-cuda/.env.sample b/apps/voicebox/latest-cuda/.env.sample new file mode 100644 index 000000000..3ae29dcd4 --- /dev/null +++ b/apps/voicebox/latest-cuda/.env.sample @@ -0,0 +1,6 @@ +PANEL_APP_PORT_HTTP=8000 +APP_DATA_DIR=./data/app +APP_MODELS_DIR=./data/models +LOG_LEVEL=info +VOICEBOX_CORS_ORIGINS= +CONTAINER_NAME= diff --git a/apps/voicebox/latest-cuda/data.yml b/apps/voicebox/latest-cuda/data.yml new file mode 100644 index 000000000..06ca7eba9 --- /dev/null +++ b/apps/voicebox/latest-cuda/data.yml @@ -0,0 +1,83 @@ +additionalProperties: + formFields: + - default: 8000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web Port + labelZh: Web 端口 + label: + en: Web Port + zh: Web 端口 + zh-Hant: Web 埠 + ja: Web ポート + ko: Web 포트 + ru: Веб-порт + ms: Port Web + pt-br: Porta Web + required: true + rule: paramPort + type: number + - default: ./data/app + edit: true + envKey: APP_DATA_DIR + labelEn: Data Directory + labelZh: 数据目录 + label: + en: Data Directory + zh: 数据目录 + zh-Hant: 資料目錄 + ja: データディレクトリ + ko: 데이터 디렉터리 + ru: Каталог данных + ms: Direktori Data + pt-br: Diretório de Dados + required: true + type: text + - default: ./data/models + edit: true + envKey: APP_MODELS_DIR + labelEn: Models Directory + labelZh: 模型目录 + label: + en: Models Directory + zh: 模型目录 + zh-Hant: 模型目錄 + ja: モデルディレクトリ + ko: 모델 디렉터리 + ru: Каталог моделей + ms: Direktori Model + pt-br: Diretório de Modelos + required: true + type: text + - default: info + edit: true + envKey: LOG_LEVEL + labelEn: Log Level + labelZh: 日志级别 + label: + en: Log Level + zh: 日志级别 + zh-Hant: 日誌等級 + ja: ログレベル + ko: 로그 레벨 + ru: Уровень логов + ms: Tahap Log + pt-br: Nivel de Log + required: true + type: text + - default: '' + edit: true + envKey: VOICEBOX_CORS_ORIGINS + labelEn: CORS Origins + labelZh: CORS 来源 + label: + en: CORS Origins + zh: CORS 来源 + zh-Hant: CORS 來源 + ja: CORS オリジン + ko: CORS 출처 + ru: Источники CORS + ms: Asal CORS + pt-br: Origens CORS + required: false + type: text diff --git a/apps/voicebox/latest-cuda/data/.gitkeep b/apps/voicebox/latest-cuda/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/voicebox/latest-cuda/docker-compose.yml b/apps/voicebox/latest-cuda/docker-compose.yml new file mode 100644 index 000000000..4066a3f0a --- /dev/null +++ b/apps/voicebox/latest-cuda/docker-compose.yml @@ -0,0 +1,35 @@ +services: + voicebox: + image: "ghcr.io/jamiepine/voicebox:latest-cuda" + container_name: ${CONTAINER_NAME} + ports: + - "${PANEL_APP_PORT_HTTP}:8000" + environment: + - LOG_LEVEL=${LOG_LEVEL} + - NUMBA_CACHE_DIR=/tmp/numba_cache + - VOICEBOX_MODELS_DIR=/app/models + - VOICEBOX_CORS_ORIGINS=${VOICEBOX_CORS_ORIGINS} + - NVIDIA_VISIBLE_DEVICES=all + volumes: + - "${APP_DATA_DIR}:/app/data" + - "${APP_MODELS_DIR}:/app/models" + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + healthcheck: + test: + - CMD + - python + - -c + - import urllib.request; urllib.request.urlopen("http://127.0.0.1:8000/health", timeout=10) + labels: + createdBy: Apps + networks: + - 1panel-network + restart: unless-stopped + +networks: + 1panel-network: + external: true diff --git a/apps/voicebox/latest-cuda/scripts/.gitkeep b/apps/voicebox/latest-cuda/scripts/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/voicebox/latest-cuda/scripts/init.sh b/apps/voicebox/latest-cuda/scripts/init.sh new file mode 100755 index 000000000..5fd3d54b5 --- /dev/null +++ b/apps/voicebox/latest-cuda/scripts/init.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -euo pipefail + +DATA_DIR="${APP_DATA_DIR:-./data/app}" +MODELS_DIR="${APP_MODELS_DIR:-./data/models}" +mkdir -p "$DATA_DIR" "$MODELS_DIR" diff --git a/apps/voicebox/latest-cuda/scripts/uninstall.sh b/apps/voicebox/latest-cuda/scripts/uninstall.sh new file mode 100755 index 000000000..024242bb3 --- /dev/null +++ b/apps/voicebox/latest-cuda/scripts/uninstall.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -euo pipefail + +docker-compose down --volumes diff --git a/apps/voicebox/latest-cuda/scripts/upgrade.sh b/apps/voicebox/latest-cuda/scripts/upgrade.sh new file mode 100755 index 000000000..5fd3d54b5 --- /dev/null +++ b/apps/voicebox/latest-cuda/scripts/upgrade.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -euo pipefail + +DATA_DIR="${APP_DATA_DIR:-./data/app}" +MODELS_DIR="${APP_MODELS_DIR:-./data/models}" +mkdir -p "$DATA_DIR" "$MODELS_DIR" diff --git a/apps/voicebox/source-evidence.json b/apps/voicebox/source-evidence.json index cc3c2bc94..53121b7d7 100644 --- a/apps/voicebox/source-evidence.json +++ b/apps/voicebox/source-evidence.json @@ -1,6 +1,8 @@ { "repository": "https://github.com/jamiepine/voicebox", - "dockerDocs": "https://github.com/jamiepine/voicebox#download", + "dockerDocs": "https://github.com/jamiepine/voicebox/blob/main/docs/content/docs/overview/docker.mdx", + "gpuDocs": "https://github.com/jamiepine/voicebox/blob/main/docs/content/docs/overview/gpu-acceleration.mdx", "composeFile": "https://github.com/jamiepine/voicebox/blob/main/docker-compose.yml", - "image": "ghcr.io/jamiepine/voicebox:latest" + "image": "ghcr.io/jamiepine/voicebox:latest", + "cudaImage": "ghcr.io/jamiepine/voicebox:latest-cuda" }