mirror of
https://github.com/okxlin/appstore.git
synced 2026-09-26 16:01:04 +00:00
Merge pull request #3706 from okxlin/openclaw/feat-metapi-sub2api-20260414
feat: add metapi and sub2api to localApps
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
APP_DATA_DIR="./data"
|
||||
AUTH_TOKEN=""
|
||||
BALANCE_REFRESH_CRON="0 * * * *"
|
||||
CHECKIN_CRON="0 8 * * *"
|
||||
CONTAINER_NAME="metapi"
|
||||
PANEL_APP_PORT_HTTP=4000
|
||||
PROXY_TOKEN=""
|
||||
TZ="Asia/Shanghai"
|
||||
@@ -0,0 +1,118 @@
|
||||
additionalProperties:
|
||||
formFields:
|
||||
- default: 4000
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
edit: true
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
label:
|
||||
en: Port
|
||||
zh: 端口
|
||||
zh-Hant: 埠
|
||||
ja: ポート
|
||||
ko: 포트
|
||||
ru: Порт
|
||||
ms: Port
|
||||
pt-br: Porta
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ./data
|
||||
envKey: APP_DATA_DIR
|
||||
edit: true
|
||||
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
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- default: ""
|
||||
envKey: AUTH_TOKEN
|
||||
edit: true
|
||||
labelEn: Admin token
|
||||
labelZh: 管理员令牌
|
||||
label:
|
||||
en: Admin token
|
||||
zh: 管理员令牌
|
||||
zh-Hant: 管理員令牌
|
||||
ja: 管理者トークン
|
||||
ko: 관리자 토큰
|
||||
ru: Администраторский токен
|
||||
ms: Token pentadbir
|
||||
pt-br: Token de administrador
|
||||
required: true
|
||||
type: password
|
||||
- default: ""
|
||||
envKey: PROXY_TOKEN
|
||||
edit: true
|
||||
labelEn: Proxy token
|
||||
labelZh: 代理令牌
|
||||
label:
|
||||
en: Proxy token
|
||||
zh: 代理令牌
|
||||
zh-Hant: 代理令牌
|
||||
ja: プロキシトークン
|
||||
ko: 프록시 토큰
|
||||
ru: Прокси‑токен
|
||||
ms: Token proksi
|
||||
pt-br: Token de proxy
|
||||
required: true
|
||||
type: password
|
||||
- default: "0 8 * * *"
|
||||
envKey: CHECKIN_CRON
|
||||
edit: true
|
||||
labelEn: Check-in cron
|
||||
labelZh: 签到 Cron
|
||||
label:
|
||||
en: Check-in cron
|
||||
zh: 签到 Cron
|
||||
zh-Hant: 簽到 Cron
|
||||
ja: チェックイン Cron
|
||||
ko: 체크인 Cron
|
||||
ru: Cron для签到
|
||||
ms: Cron daftar masuk
|
||||
pt-br: Cron de check-in
|
||||
required: false
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- default: "0 * * * *"
|
||||
envKey: BALANCE_REFRESH_CRON
|
||||
edit: true
|
||||
labelEn: Balance refresh cron
|
||||
labelZh: 余额刷新 Cron
|
||||
label:
|
||||
en: Balance refresh cron
|
||||
zh: 余额刷新 Cron
|
||||
zh-Hant: 餘額刷新 Cron
|
||||
ja: 残高更新 Cron
|
||||
ko: 잔액 새로고침 Cron
|
||||
ru: Cron обновления баланса
|
||||
ms: Cron segar semula baki
|
||||
pt-br: Cron de atualização de saldo
|
||||
required: false
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- default: Asia/Shanghai
|
||||
envKey: TZ
|
||||
edit: true
|
||||
labelEn: Timezone
|
||||
labelZh: 时区
|
||||
label:
|
||||
en: Timezone
|
||||
zh: 时区
|
||||
zh-Hant: 時區
|
||||
ja: タイムゾーン
|
||||
ko: 시간대
|
||||
ru: Часовой пояс
|
||||
ms: Zon waktu
|
||||
pt-br: Fuso horário
|
||||
required: true
|
||||
type: text
|
||||
@@ -0,0 +1,18 @@
|
||||
services:
|
||||
metapi:
|
||||
image: "1467078763/metapi:latest"
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:4000"
|
||||
environment:
|
||||
- "AUTH_TOKEN=${AUTH_TOKEN:?AUTH_TOKEN is required}"
|
||||
- "PROXY_TOKEN=${PROXY_TOKEN:?PROXY_TOKEN is required}"
|
||||
- "CHECKIN_CRON=${CHECKIN_CRON:-0 8 * * *}"
|
||||
- "BALANCE_REFRESH_CRON=${BALANCE_REFRESH_CRON:-0 * * * *}"
|
||||
- "PORT=4000"
|
||||
- "DATA_DIR=/app/data"
|
||||
- "TZ=${TZ}"
|
||||
volumes:
|
||||
- "${APP_DATA_DIR}:/app/data"
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
mkdir -p "${APP_DATA_DIR:-./data}"
|
||||
Executable
+2
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
docker-compose down --volumes
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
# Reserved for future migrations.
|
||||
exit 0
|
||||
@@ -0,0 +1,57 @@
|
||||
# Metapi
|
||||
|
||||
Metapi 是一个面向多 AI 中转站聚合场景的统一网关,适合在 1Panel 中部署为集中入口,用于统一转发、令牌管理与定时任务调度。
|
||||
|
||||
## 应用简介
|
||||
|
||||
该应用将多个 AI 中转服务的访问能力收敛到一个统一网关内,方便在单一入口下完成鉴权、代理调用与日常维护。当前 1Panel 适配版本提供开箱即用的本地应用结构,部署后可直接通过 Web 端口对外提供服务。
|
||||
|
||||
## 功能亮点
|
||||
|
||||
- 聚合多个 AI 中转站,统一对外暴露访问入口
|
||||
- 支持管理员令牌与代理令牌配置,方便分权管理
|
||||
- 支持签到任务与余额刷新任务的 Cron 调度
|
||||
- 支持数据目录持久化,便于保留运行数据与后续迁移
|
||||
- 配置项集中在安装表单中维护,适合面板化运维
|
||||
|
||||
## 安装说明
|
||||
|
||||
安装时建议至少确认以下参数:
|
||||
|
||||
- 访问端口
|
||||
- 数据目录
|
||||
- `AUTH_TOKEN` 管理员令牌
|
||||
- `PROXY_TOKEN` 代理令牌
|
||||
- `CHECKIN_CRON` 自动签到计划
|
||||
- `BALANCE_REFRESH_CRON` 余额刷新计划
|
||||
- 时区配置
|
||||
|
||||
其中两类令牌都属于关键安全参数,建议直接使用高强度随机值。
|
||||
|
||||
## 默认配置
|
||||
|
||||
- 访问端口:`4000`
|
||||
- 容器内部端口:`4000`
|
||||
- 默认数据目录:`./data`
|
||||
- 容器内数据目录:`/app/data`
|
||||
- 默认签到 Cron:`0 8 * * *`
|
||||
- 默认余额刷新 Cron:`0 * * * *`
|
||||
- 默认时区:`Asia/Shanghai`
|
||||
|
||||
## 使用建议
|
||||
|
||||
- 首次安装时优先更换为高强度 `AUTH_TOKEN` 与 `PROXY_TOKEN`
|
||||
- 若服务器已有统一反向代理,可将 Metapi 作为内部网关服务接入
|
||||
- Cron 任务建议按实际中转站频率与额度策略调整,避免过于激进
|
||||
- 数据目录建议放到稳定存储位置,便于备份与故障恢复
|
||||
|
||||
## 安装后检查
|
||||
|
||||
1. 打开 `http://<服务器IP>:<访问端口>` 确认服务已启动。
|
||||
2. 检查令牌配置是否生效。
|
||||
3. 检查数据目录是否已正确挂载。
|
||||
4. 观察签到与余额刷新任务是否按预期执行。
|
||||
|
||||
## 适配说明
|
||||
|
||||
当前目录为可直接导入 1Panel 的本地应用包,已按商店应用结构整理,重点保留安装表单、数据挂载和运行参数的面板化配置体验。
|
||||
@@ -0,0 +1,30 @@
|
||||
name: Metapi
|
||||
tags:
|
||||
- AI
|
||||
title: 聚合多个 AI 中转站的统一网关
|
||||
description: 聚合多个 AI 中转站的统一网关
|
||||
additionalProperties:
|
||||
key: metapi
|
||||
name: Metapi
|
||||
tags:
|
||||
- AI
|
||||
shortDescZh: 聚合多个 AI 中转站的统一网关
|
||||
shortDescEn: Unified gateway aggregating multiple AI relay services
|
||||
description:
|
||||
en: Unified gateway aggregating multiple AI relay services
|
||||
zh: 聚合多个 AI 中转站的统一网关
|
||||
zh-Hant: 聚合多個 AI 中轉站的統一網關
|
||||
ja: 複数のAI中継サービスを統合する統一ゲートウェイ
|
||||
ko: 여러 AI 중계 서비스를 통합하는 통합 게이트웨이
|
||||
ru: Единый шлюз, объединяющий несколько AI‑ретрансляторов
|
||||
ms: Gerbang bersatu yang menggabungkan pelbagai relay AI
|
||||
pt-br: Gateway unificado que agrega múltiplos relay de IA
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://metapi.cita777.me
|
||||
github: https://github.com/cita-777/metapi
|
||||
document: https://metapi.cita777.me
|
||||
architectures:
|
||||
- amd64
|
||||
@@ -0,0 +1,8 @@
|
||||
APP_DATA_DIR="./data"
|
||||
AUTH_TOKEN=""
|
||||
BALANCE_REFRESH_CRON="0 * * * *"
|
||||
CHECKIN_CRON="0 8 * * *"
|
||||
CONTAINER_NAME="metapi"
|
||||
PANEL_APP_PORT_HTTP=4000
|
||||
PROXY_TOKEN=""
|
||||
TZ="Asia/Shanghai"
|
||||
@@ -0,0 +1,118 @@
|
||||
additionalProperties:
|
||||
formFields:
|
||||
- default: 4000
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
edit: true
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
label:
|
||||
en: Port
|
||||
zh: 端口
|
||||
zh-Hant: 埠
|
||||
ja: ポート
|
||||
ko: 포트
|
||||
ru: Порт
|
||||
ms: Port
|
||||
pt-br: Porta
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ./data
|
||||
envKey: APP_DATA_DIR
|
||||
edit: true
|
||||
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
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- default: ""
|
||||
envKey: AUTH_TOKEN
|
||||
edit: true
|
||||
labelEn: Admin token
|
||||
labelZh: 管理员令牌
|
||||
label:
|
||||
en: Admin token
|
||||
zh: 管理员令牌
|
||||
zh-Hant: 管理員令牌
|
||||
ja: 管理者トークン
|
||||
ko: 관리자 토큰
|
||||
ru: Администраторский токен
|
||||
ms: Token pentadbir
|
||||
pt-br: Token de administrador
|
||||
required: true
|
||||
type: password
|
||||
- default: ""
|
||||
envKey: PROXY_TOKEN
|
||||
edit: true
|
||||
labelEn: Proxy token
|
||||
labelZh: 代理令牌
|
||||
label:
|
||||
en: Proxy token
|
||||
zh: 代理令牌
|
||||
zh-Hant: 代理令牌
|
||||
ja: プロキシトークン
|
||||
ko: 프록시 토큰
|
||||
ru: Прокси‑токен
|
||||
ms: Token proksi
|
||||
pt-br: Token de proxy
|
||||
required: true
|
||||
type: password
|
||||
- default: "0 8 * * *"
|
||||
envKey: CHECKIN_CRON
|
||||
edit: true
|
||||
labelEn: Check-in cron
|
||||
labelZh: 签到 Cron
|
||||
label:
|
||||
en: Check-in cron
|
||||
zh: 签到 Cron
|
||||
zh-Hant: 簽到 Cron
|
||||
ja: チェックイン Cron
|
||||
ko: 체크인 Cron
|
||||
ru: Cron для签到
|
||||
ms: Cron daftar masuk
|
||||
pt-br: Cron de check-in
|
||||
required: false
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- default: "0 * * * *"
|
||||
envKey: BALANCE_REFRESH_CRON
|
||||
edit: true
|
||||
labelEn: Balance refresh cron
|
||||
labelZh: 余额刷新 Cron
|
||||
label:
|
||||
en: Balance refresh cron
|
||||
zh: 余额刷新 Cron
|
||||
zh-Hant: 餘額刷新 Cron
|
||||
ja: 残高更新 Cron
|
||||
ko: 잔액 새로고침 Cron
|
||||
ru: Cron обновления баланса
|
||||
ms: Cron segar semula baki
|
||||
pt-br: Cron de atualização de saldo
|
||||
required: false
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- default: Asia/Shanghai
|
||||
envKey: TZ
|
||||
edit: true
|
||||
labelEn: Timezone
|
||||
labelZh: 时区
|
||||
label:
|
||||
en: Timezone
|
||||
zh: 时区
|
||||
zh-Hant: 時區
|
||||
ja: タイムゾーン
|
||||
ko: 시간대
|
||||
ru: Часовой пояс
|
||||
ms: Zon waktu
|
||||
pt-br: Fuso horário
|
||||
required: true
|
||||
type: text
|
||||
@@ -0,0 +1,18 @@
|
||||
services:
|
||||
metapi:
|
||||
image: "1467078763/metapi:latest"
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:4000"
|
||||
environment:
|
||||
- "AUTH_TOKEN=${AUTH_TOKEN:?AUTH_TOKEN is required}"
|
||||
- "PROXY_TOKEN=${PROXY_TOKEN:?PROXY_TOKEN is required}"
|
||||
- "CHECKIN_CRON=${CHECKIN_CRON:-0 8 * * *}"
|
||||
- "BALANCE_REFRESH_CRON=${BALANCE_REFRESH_CRON:-0 * * * *}"
|
||||
- "PORT=4000"
|
||||
- "DATA_DIR=/app/data"
|
||||
- "TZ=${TZ}"
|
||||
volumes:
|
||||
- "${APP_DATA_DIR}:/app/data"
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
mkdir -p "${APP_DATA_DIR:-./data}"
|
||||
Executable
+2
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
docker-compose down --volumes
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
# Reserved for future migrations.
|
||||
exit 0
|
||||
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 8.3 KiB |
@@ -0,0 +1,21 @@
|
||||
CONTAINER_NAME="sub2api"
|
||||
PANEL_APP_PORT_HTTP="8080"
|
||||
TZ="Asia/Shanghai"
|
||||
SERVER_MODE="release"
|
||||
RUN_MODE="standard"
|
||||
PANEL_DB_TYPE="postgresql"
|
||||
PANEL_DB_HOST=""
|
||||
PANEL_DB_NAME="sub2api"
|
||||
PANEL_DB_USER="sub2api"
|
||||
PANEL_DB_PORT="5432"
|
||||
PANEL_DB_USER_PASSWORD=""
|
||||
REDIS_HOST=""
|
||||
REDIS_PORT="6379"
|
||||
PANEL_REDIS_ROOT_PASSWORD=""
|
||||
REDIS_DB="0"
|
||||
ADMIN_EMAIL="admin@sub2api.local"
|
||||
ADMIN_PASSWORD=""
|
||||
JWT_SECRET=""
|
||||
TOTP_ENCRYPTION_KEY=""
|
||||
UPDATE_PROXY_URL=""
|
||||
APP_DATA_DIR_1="./data"
|
||||
@@ -0,0 +1,350 @@
|
||||
additionalProperties:
|
||||
formFields:
|
||||
- child:
|
||||
default: ""
|
||||
envKey: PANEL_DB_HOST
|
||||
labelEn: Database Service
|
||||
labelZh: 数据库服务
|
||||
label:
|
||||
en: Database Service
|
||||
zh: 数据库服务
|
||||
zh-hant: 資料庫服務
|
||||
ja: データベースサービス
|
||||
ko: 데이터베이스 서비스
|
||||
ru: Служба базы данных
|
||||
ms: Perkhidmatan Pangkalan Data
|
||||
pt-br: Serviço de Banco de Dados
|
||||
required: true
|
||||
type: service
|
||||
default: postgresql
|
||||
envKey: PANEL_DB_TYPE
|
||||
labelEn: Database
|
||||
labelZh: 数据库服务
|
||||
label:
|
||||
en: Database
|
||||
zh: 数据库服务
|
||||
zh-hant: 資料庫服務
|
||||
ja: データベース
|
||||
ko: 데이터베이스
|
||||
ru: База данных
|
||||
ms: Pangkalan Data
|
||||
pt-br: Banco de dados
|
||||
required: true
|
||||
type: apps
|
||||
values:
|
||||
- label: PostgreSQL
|
||||
value: postgresql
|
||||
- default: sub2api
|
||||
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: sub2api
|
||||
edit: true
|
||||
envKey: PANEL_DB_USER
|
||||
labelEn: Database User
|
||||
labelZh: 数据库用户
|
||||
label:
|
||||
en: Database User
|
||||
zh: 数据库用户
|
||||
zh-hant: 資料庫使用者
|
||||
ja: データベースユーザー
|
||||
ko: 데이터베이스 사용자
|
||||
ru: Пользователь базы данных
|
||||
ms: Nama pengguna pangkalan data
|
||||
pt-br: Usuário do banco de dados
|
||||
random: true
|
||||
required: true
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- 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: ""
|
||||
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
|
||||
random: true
|
||||
required: true
|
||||
rule: paramComplexity
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: REDIS_HOST
|
||||
key: redis
|
||||
labelEn: Redis Service
|
||||
labelZh: Redis服务
|
||||
label:
|
||||
en: Redis Service
|
||||
zh: Redis服务
|
||||
zh-hant: Redis 服務
|
||||
ja: Redis サービス
|
||||
ko: Redis 서비스
|
||||
ru: Служба Redis
|
||||
ms: Perkhidmatan Redis
|
||||
pt-br: Serviço Redis
|
||||
required: true
|
||||
type: service
|
||||
- default: 6379
|
||||
edit: true
|
||||
envKey: REDIS_PORT
|
||||
labelEn: Redis Service Port
|
||||
labelZh: Redis服务端口
|
||||
label:
|
||||
en: Redis Service Port
|
||||
zh: Redis服务端口
|
||||
zh-hant: Redis 服務連接埠
|
||||
ja: Redis サービスポート
|
||||
ko: Redis 서비스 포트
|
||||
ru: Порт службы Redis
|
||||
ms: Port Perkhidmatan Redis
|
||||
pt-br: Porta do serviço Redis
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PANEL_REDIS_ROOT_PASSWORD
|
||||
labelEn: Redis Password
|
||||
labelZh: Redis 密码
|
||||
label:
|
||||
en: Redis Password
|
||||
zh: Redis 密码
|
||||
zh-hant: Redis 密碼
|
||||
ja: Redis パスワード
|
||||
ko: Redis 비밀번호
|
||||
ru: Пароль Redis
|
||||
ms: Kata laluan Redis
|
||||
pt-br: Senha do Redis
|
||||
random: true
|
||||
required: true
|
||||
type: password
|
||||
- default: 0
|
||||
edit: true
|
||||
envKey: REDIS_DB
|
||||
labelEn: Redis Database
|
||||
labelZh: Redis 数据库
|
||||
label:
|
||||
en: Redis Database
|
||||
zh: Redis 数据库
|
||||
zh-hant: Redis 資料庫
|
||||
ja: Redis データベース
|
||||
ko: Redis 데이터베이스
|
||||
ru: База данных Redis
|
||||
ms: Pangkalan Data Redis
|
||||
pt-br: Banco de dados Redis
|
||||
required: true
|
||||
type: number
|
||||
- default: 8080
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Web Port
|
||||
labelZh: Web 访问端口
|
||||
label:
|
||||
en: Web Port
|
||||
zh: Web 访问端口
|
||||
zh-hant: Web 訪問埠
|
||||
ja: Webポート
|
||||
ko: 웹 포트
|
||||
ru: Веб-порт
|
||||
ms: Port Web
|
||||
pt-br: Porta Web
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: Asia/Shanghai
|
||||
edit: true
|
||||
envKey: TZ
|
||||
labelEn: Timezone
|
||||
labelZh: 时区
|
||||
label:
|
||||
en: Timezone
|
||||
zh: 时区
|
||||
zh-hant: 時區
|
||||
ja: タイムゾーン
|
||||
ko: 시간대
|
||||
ru: Часовой пояс
|
||||
ms: Zon masa
|
||||
pt-br: Fuso horário
|
||||
required: true
|
||||
type: text
|
||||
- default: release
|
||||
edit: true
|
||||
envKey: SERVER_MODE
|
||||
labelEn: Server Mode
|
||||
labelZh: 服务模式
|
||||
label:
|
||||
en: Server Mode
|
||||
zh: 服务模式
|
||||
zh-hant: 服務模式
|
||||
ja: サーバーモード
|
||||
ko: 서버 모드
|
||||
ru: Режим сервера
|
||||
ms: Mod pelayan
|
||||
pt-br: Modo do servidor
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: release
|
||||
value: release
|
||||
- label: debug
|
||||
value: debug
|
||||
- default: standard
|
||||
edit: true
|
||||
envKey: RUN_MODE
|
||||
labelEn: Run Mode
|
||||
labelZh: 运行模式
|
||||
label:
|
||||
en: Run Mode
|
||||
zh: 运行模式
|
||||
zh-hant: 運行模式
|
||||
ja: 実行モード
|
||||
ko: 실행 모드
|
||||
ru: Режим работы
|
||||
ms: Mod jalanan
|
||||
pt-br: Modo de execução
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: standard
|
||||
value: standard
|
||||
- label: simple
|
||||
value: simple
|
||||
- default: admin@sub2api.local
|
||||
edit: true
|
||||
envKey: ADMIN_EMAIL
|
||||
labelEn: Admin Email
|
||||
labelZh: 管理员邮箱
|
||||
label:
|
||||
en: Admin Email
|
||||
zh: 管理员邮箱
|
||||
zh-hant: 管理員郵箱
|
||||
ja: 管理者メール
|
||||
ko: 관리자 이메일
|
||||
ru: Email администратора
|
||||
ms: E-mel pentadbir
|
||||
pt-br: E-mail do administrador
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ADMIN_PASSWORD
|
||||
labelEn: Admin Password
|
||||
labelZh: 管理员密码
|
||||
label:
|
||||
en: Admin Password
|
||||
zh: 管理员密码
|
||||
zh-hant: 管理員密碼
|
||||
ja: 管理者パスワード
|
||||
ko: 관리자 비밀번호
|
||||
ru: Пароль администратора
|
||||
ms: Kata laluan pentadbir
|
||||
pt-br: Senha do administrador
|
||||
random: true
|
||||
required: false
|
||||
rule: paramComplexity
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: JWT_SECRET
|
||||
labelEn: JWT Secret
|
||||
labelZh: JWT 密钥
|
||||
label:
|
||||
en: JWT Secret
|
||||
zh: JWT 密钥
|
||||
zh-hant: JWT 金鑰
|
||||
ja: JWT シークレット
|
||||
ko: JWT 시크릿
|
||||
ru: JWT-секрет
|
||||
ms: Rahsia JWT
|
||||
pt-br: Segredo JWT
|
||||
random: true
|
||||
required: true
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: TOTP_ENCRYPTION_KEY
|
||||
labelEn: TOTP Encryption Key
|
||||
labelZh: TOTP 加密密钥
|
||||
label:
|
||||
en: TOTP Encryption Key
|
||||
zh: TOTP 加密密钥
|
||||
zh-hant: TOTP 加密金鑰
|
||||
ja: TOTP 暗号化キー
|
||||
ko: TOTP 암호화 키
|
||||
ru: Ключ шифрования TOTP
|
||||
ms: Kunci penyulitan TOTP
|
||||
pt-br: Chave de criptografia TOTP
|
||||
random: true
|
||||
required: true
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: UPDATE_PROXY_URL
|
||||
labelEn: Update Proxy URL
|
||||
labelZh: 更新代理地址
|
||||
label:
|
||||
en: Update Proxy URL
|
||||
zh: 更新代理地址
|
||||
zh-hant: 更新代理地址
|
||||
ja: 更新プロキシ URL
|
||||
ko: 업데이트 프록시 URL
|
||||
ru: URL прокси для обновлений
|
||||
ms: URL proksi kemas kini
|
||||
pt-br: URL do proxy de atualização
|
||||
required: false
|
||||
rule: paramExtUrl
|
||||
type: text
|
||||
- default: ./data
|
||||
edit: true
|
||||
envKey: APP_DATA_DIR_1
|
||||
labelEn: App Data Directory
|
||||
labelZh: 应用数据目录
|
||||
label:
|
||||
en: App Data Directory
|
||||
zh: 应用数据目录
|
||||
zh-hant: 應用資料目錄
|
||||
ja: アプリデータディレクトリ
|
||||
ko: 앱 데이터 디렉터리
|
||||
ru: Каталог данных приложения
|
||||
ms: Direktori data aplikasi
|
||||
pt-br: Diretório de dados da aplicação
|
||||
required: true
|
||||
type: text
|
||||
@@ -0,0 +1,46 @@
|
||||
services:
|
||||
sub2api:
|
||||
image: "ghcr.io/wei-shaw/sub2api:0.1.112"
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
environment:
|
||||
- AUTO_SETUP=true
|
||||
- SERVER_HOST=0.0.0.0
|
||||
- SERVER_PORT=8080
|
||||
- SERVER_MODE=${SERVER_MODE}
|
||||
- RUN_MODE=${RUN_MODE}
|
||||
- DATABASE_HOST=${PANEL_DB_HOST}
|
||||
- DATABASE_PORT=${PANEL_DB_PORT}
|
||||
- DATABASE_USER=${PANEL_DB_USER}
|
||||
- DATABASE_PASSWORD=${PANEL_DB_USER_PASSWORD}
|
||||
- DATABASE_DBNAME=${PANEL_DB_NAME}
|
||||
- DATABASE_SSLMODE=disable
|
||||
- REDIS_HOST=${REDIS_HOST}
|
||||
- REDIS_PORT=${REDIS_PORT}
|
||||
- REDIS_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD}
|
||||
- REDIS_DB=${REDIS_DB}
|
||||
- ADMIN_EMAIL=${ADMIN_EMAIL}
|
||||
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
|
||||
- JWT_SECRET=${JWT_SECRET}
|
||||
- JWT_EXPIRE_HOUR=24
|
||||
- TOTP_ENCRYPTION_KEY=${TOTP_ENCRYPTION_KEY}
|
||||
- TZ=${TZ}
|
||||
- UPDATE_PROXY_URL=${UPDATE_PROXY_URL:-}
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:8080"
|
||||
volumes:
|
||||
- "${APP_DATA_DIR_1}:/app/data"
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-q", "-T", "5", "-O", "/dev/null", "http://localhost:8080/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# 当前适配使用 1Panel 数据库 / Redis 依赖注入。
|
||||
# 这里只初始化应用自身的数据目录。
|
||||
mkdir -p "${APP_DATA_DIR_1:-./data}"
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# 当前适配只卸载 Sub2API 容器本身。
|
||||
# 数据库与 Redis 为 1Panel 依赖应用,不在此处删除。
|
||||
docker-compose down --volumes
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# 升级时确保应用自身的数据目录存在。
|
||||
# 数据库与 Redis 数据由 1Panel 依赖应用管理。
|
||||
mkdir -p "${APP_DATA_DIR_1:-./data}"
|
||||
@@ -0,0 +1,81 @@
|
||||
# Sub2API
|
||||
|
||||
Sub2API 是一个面向订阅转换与统一接口访问场景的轻量服务,适合在 1Panel 中作为独立应用部署,为客户端或上游系统提供稳定的订阅处理入口。
|
||||
|
||||
## 应用简介
|
||||
|
||||
该应用提供 Web 访问入口,并支持自动初始化、管理员账户设置、日志级别控制、JWT/TOTP 安全配置,以及基于 PostgreSQL 与 Redis 的持久化与缓存能力。当前 1Panel 适配版本采用“应用本体 + 商店依赖”的方式交付,便于直接复用面板内已有的数据库与缓存服务。
|
||||
|
||||
## 功能亮点
|
||||
|
||||
- 支持订阅转换与 API 化访问,方便统一接入与后续集成
|
||||
- 支持 PostgreSQL + Redis 组合依赖,适合长期运行
|
||||
- 支持管理员邮箱、管理员密码、JWT 密钥、TOTP 加密密钥等初始化参数
|
||||
- 支持日志级别与安全 URL 白名单开关,便于按环境调整
|
||||
- 支持数据目录挂载,方便备份、迁移与持久化管理
|
||||
|
||||
## 持久化目录
|
||||
|
||||
适配默认使用相对目录持久化应用数据:
|
||||
|
||||
- `./data` → `/app/data`
|
||||
|
||||
其中 `/app/data` 会保存应用运行数据、自动生成的 `config.yaml`、日志以及部分缓存内容。上游入口脚本会在启动时确保该目录可写。数据库和 Redis 的数据由对应的 1Panel 依赖应用自行管理。
|
||||
|
||||
## 安装说明
|
||||
|
||||
安装时需要在 1Panel 表单中补齐以下关键信息:
|
||||
|
||||
- PostgreSQL 服务实例
|
||||
- Redis 服务实例
|
||||
- 管理员邮箱
|
||||
- 访问端口
|
||||
- 数据目录
|
||||
- 安全参数:`JWT_SECRET`、`TOTP_ENCRYPTION_KEY`、`ADMIN_PASSWORD`
|
||||
|
||||
其中数据库与缓存服务由 1Panel 商店依赖注入:
|
||||
|
||||
- PostgreSQL:用于应用数据持久化
|
||||
- Redis:用于缓存与运行时状态
|
||||
|
||||
若面板中已经安装对应服务,直接在安装表单中选择实例与 Service 即可。
|
||||
|
||||
## 默认配置
|
||||
|
||||
- 访问端口:`8080`
|
||||
- 容器内部端口:`8080`
|
||||
- 默认数据目录:`./data`
|
||||
- 容器内数据目录:`/app/data`
|
||||
- 默认时区:`Asia/Shanghai`
|
||||
- 默认日志级别:`info`
|
||||
|
||||
## 使用建议
|
||||
|
||||
- 首次安装时补全管理员邮箱,建议同时设置管理员密码
|
||||
- 生产环境建议显式配置 `JWT_SECRET` 与 `TOTP_ENCRYPTION_KEY`
|
||||
- 若启用 URL 安全白名单,请提前确认业务访问范围
|
||||
- 如需代理更新源,可按需填写 `UPDATE_PROXY_URL`
|
||||
|
||||
## 安装后检查
|
||||
|
||||
1. 打开 `http://<服务器IP>:<访问端口>` 确认页面可访问。
|
||||
2. 检查数据库与 Redis 连接是否正常。
|
||||
3. 确认数据目录已正确挂载并具备写入权限。
|
||||
4. 若使用初始化管理员账户,确认可正常登录后台。
|
||||
|
||||
## 反向代理说明
|
||||
|
||||
如果你在 Nginx 后面反代 Sub2API,并且需要兼容 Codex CLI 等依赖下划线请求头的客户端,请在 Nginx 的 `http` 块中开启:
|
||||
|
||||
```nginx
|
||||
underscores_in_headers on;
|
||||
```
|
||||
|
||||
这是上游 README 明确提到的要求,否则某些带下划线的头部可能会被 Nginx 丢弃,影响会话粘性与部分 CLI 场景。
|
||||
|
||||
## 备注
|
||||
|
||||
- 本适配默认启用 `AUTO_SETUP=true`
|
||||
- 默认时区为 `Asia/Shanghai`
|
||||
- 生命周期脚本只会初始化应用自身的 `./data` 目录,不会创建数据库或 Redis 的本地目录,因为这两者由 1Panel 依赖应用托管
|
||||
- 如需更细的运行参数,可参考 `latest/.env.sample` 和上游文档继续扩展
|
||||
@@ -0,0 +1,30 @@
|
||||
name: Sub2API
|
||||
tags:
|
||||
- AI
|
||||
title: 提供 OpenAI 兼容接口的 AI 网关服务
|
||||
description: 提供 OpenAI 兼容接口的 AI 网关服务
|
||||
additionalProperties:
|
||||
key: sub2api
|
||||
name: Sub2API
|
||||
tags:
|
||||
- AI
|
||||
shortDescZh: 提供 OpenAI 兼容接口的 AI 网关服务
|
||||
shortDescEn: AI gateway service with OpenAI-compatible APIs
|
||||
description:
|
||||
en: AI gateway service with OpenAI-compatible APIs
|
||||
zh: 提供 OpenAI 兼容接口的 AI 网关服务
|
||||
zh-Hant: 提供 OpenAI 相容介面的 AI 閘道服務
|
||||
ja: OpenAI 互換 API を提供する AI ゲートウェイサービス
|
||||
ko: OpenAI 호환 API를 제공하는 AI 게이트웨이 서비스
|
||||
ru: AI-шлюз с API, совместимыми с OpenAI
|
||||
ms: Perkhidmatan gerbang AI dengan API serasi OpenAI
|
||||
pt-br: Serviço de gateway de IA com APIs compatíveis com OpenAI
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://github.com/Wei-Shaw/sub2api
|
||||
github: https://github.com/Wei-Shaw/sub2api
|
||||
document: https://github.com/Wei-Shaw/sub2api
|
||||
architectures:
|
||||
- amd64
|
||||
@@ -0,0 +1,21 @@
|
||||
CONTAINER_NAME="sub2api"
|
||||
PANEL_APP_PORT_HTTP="8080"
|
||||
TZ="Asia/Shanghai"
|
||||
SERVER_MODE="release"
|
||||
RUN_MODE="standard"
|
||||
PANEL_DB_TYPE="postgresql"
|
||||
PANEL_DB_HOST=""
|
||||
PANEL_DB_NAME="sub2api"
|
||||
PANEL_DB_USER="sub2api"
|
||||
PANEL_DB_PORT="5432"
|
||||
PANEL_DB_USER_PASSWORD=""
|
||||
REDIS_HOST=""
|
||||
REDIS_PORT="6379"
|
||||
PANEL_REDIS_ROOT_PASSWORD=""
|
||||
REDIS_DB="0"
|
||||
ADMIN_EMAIL="admin@sub2api.local"
|
||||
ADMIN_PASSWORD=""
|
||||
JWT_SECRET=""
|
||||
TOTP_ENCRYPTION_KEY=""
|
||||
UPDATE_PROXY_URL=""
|
||||
APP_DATA_DIR_1="./data"
|
||||
@@ -0,0 +1,350 @@
|
||||
additionalProperties:
|
||||
formFields:
|
||||
- child:
|
||||
default: ""
|
||||
envKey: PANEL_DB_HOST
|
||||
labelEn: Database Service
|
||||
labelZh: 数据库服务
|
||||
label:
|
||||
en: Database Service
|
||||
zh: 数据库服务
|
||||
zh-hant: 資料庫服務
|
||||
ja: データベースサービス
|
||||
ko: 데이터베이스 서비스
|
||||
ru: Служба базы данных
|
||||
ms: Perkhidmatan Pangkalan Data
|
||||
pt-br: Serviço de Banco de Dados
|
||||
required: true
|
||||
type: service
|
||||
default: postgresql
|
||||
envKey: PANEL_DB_TYPE
|
||||
labelEn: Database
|
||||
labelZh: 数据库服务
|
||||
label:
|
||||
en: Database
|
||||
zh: 数据库服务
|
||||
zh-hant: 資料庫服務
|
||||
ja: データベース
|
||||
ko: 데이터베이스
|
||||
ru: База данных
|
||||
ms: Pangkalan Data
|
||||
pt-br: Banco de dados
|
||||
required: true
|
||||
type: apps
|
||||
values:
|
||||
- label: PostgreSQL
|
||||
value: postgresql
|
||||
- default: sub2api
|
||||
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: sub2api
|
||||
edit: true
|
||||
envKey: PANEL_DB_USER
|
||||
labelEn: Database User
|
||||
labelZh: 数据库用户
|
||||
label:
|
||||
en: Database User
|
||||
zh: 数据库用户
|
||||
zh-hant: 資料庫使用者
|
||||
ja: データベースユーザー
|
||||
ko: 데이터베이스 사용자
|
||||
ru: Пользователь базы данных
|
||||
ms: Nama pengguna pangkalan data
|
||||
pt-br: Usuário do banco de dados
|
||||
random: true
|
||||
required: true
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- 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: ""
|
||||
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
|
||||
random: true
|
||||
required: true
|
||||
rule: paramComplexity
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: REDIS_HOST
|
||||
key: redis
|
||||
labelEn: Redis Service
|
||||
labelZh: Redis服务
|
||||
label:
|
||||
en: Redis Service
|
||||
zh: Redis服务
|
||||
zh-hant: Redis 服務
|
||||
ja: Redis サービス
|
||||
ko: Redis 서비스
|
||||
ru: Служба Redis
|
||||
ms: Perkhidmatan Redis
|
||||
pt-br: Serviço Redis
|
||||
required: true
|
||||
type: service
|
||||
- default: 6379
|
||||
edit: true
|
||||
envKey: REDIS_PORT
|
||||
labelEn: Redis Service Port
|
||||
labelZh: Redis服务端口
|
||||
label:
|
||||
en: Redis Service Port
|
||||
zh: Redis服务端口
|
||||
zh-hant: Redis 服務連接埠
|
||||
ja: Redis サービスポート
|
||||
ko: Redis 서비스 포트
|
||||
ru: Порт службы Redis
|
||||
ms: Port Perkhidmatan Redis
|
||||
pt-br: Porta do serviço Redis
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PANEL_REDIS_ROOT_PASSWORD
|
||||
labelEn: Redis Password
|
||||
labelZh: Redis 密码
|
||||
label:
|
||||
en: Redis Password
|
||||
zh: Redis 密码
|
||||
zh-hant: Redis 密碼
|
||||
ja: Redis パスワード
|
||||
ko: Redis 비밀번호
|
||||
ru: Пароль Redis
|
||||
ms: Kata laluan Redis
|
||||
pt-br: Senha do Redis
|
||||
random: true
|
||||
required: true
|
||||
type: password
|
||||
- default: 0
|
||||
edit: true
|
||||
envKey: REDIS_DB
|
||||
labelEn: Redis Database
|
||||
labelZh: Redis 数据库
|
||||
label:
|
||||
en: Redis Database
|
||||
zh: Redis 数据库
|
||||
zh-hant: Redis 資料庫
|
||||
ja: Redis データベース
|
||||
ko: Redis 데이터베이스
|
||||
ru: База данных Redis
|
||||
ms: Pangkalan Data Redis
|
||||
pt-br: Banco de dados Redis
|
||||
required: true
|
||||
type: number
|
||||
- default: 8080
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Web Port
|
||||
labelZh: Web 访问端口
|
||||
label:
|
||||
en: Web Port
|
||||
zh: Web 访问端口
|
||||
zh-hant: Web 訪問埠
|
||||
ja: Webポート
|
||||
ko: 웹 포트
|
||||
ru: Веб-порт
|
||||
ms: Port Web
|
||||
pt-br: Porta Web
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: Asia/Shanghai
|
||||
edit: true
|
||||
envKey: TZ
|
||||
labelEn: Timezone
|
||||
labelZh: 时区
|
||||
label:
|
||||
en: Timezone
|
||||
zh: 时区
|
||||
zh-hant: 時區
|
||||
ja: タイムゾーン
|
||||
ko: 시간대
|
||||
ru: Часовой пояс
|
||||
ms: Zon masa
|
||||
pt-br: Fuso horário
|
||||
required: true
|
||||
type: text
|
||||
- default: release
|
||||
edit: true
|
||||
envKey: SERVER_MODE
|
||||
labelEn: Server Mode
|
||||
labelZh: 服务模式
|
||||
label:
|
||||
en: Server Mode
|
||||
zh: 服务模式
|
||||
zh-hant: 服務模式
|
||||
ja: サーバーモード
|
||||
ko: 서버 모드
|
||||
ru: Режим сервера
|
||||
ms: Mod pelayan
|
||||
pt-br: Modo do servidor
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: release
|
||||
value: release
|
||||
- label: debug
|
||||
value: debug
|
||||
- default: standard
|
||||
edit: true
|
||||
envKey: RUN_MODE
|
||||
labelEn: Run Mode
|
||||
labelZh: 运行模式
|
||||
label:
|
||||
en: Run Mode
|
||||
zh: 运行模式
|
||||
zh-hant: 運行模式
|
||||
ja: 実行モード
|
||||
ko: 실행 모드
|
||||
ru: Режим работы
|
||||
ms: Mod jalanan
|
||||
pt-br: Modo de execução
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: standard
|
||||
value: standard
|
||||
- label: simple
|
||||
value: simple
|
||||
- default: admin@sub2api.local
|
||||
edit: true
|
||||
envKey: ADMIN_EMAIL
|
||||
labelEn: Admin Email
|
||||
labelZh: 管理员邮箱
|
||||
label:
|
||||
en: Admin Email
|
||||
zh: 管理员邮箱
|
||||
zh-hant: 管理員郵箱
|
||||
ja: 管理者メール
|
||||
ko: 관리자 이메일
|
||||
ru: Email администратора
|
||||
ms: E-mel pentadbir
|
||||
pt-br: E-mail do administrador
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ADMIN_PASSWORD
|
||||
labelEn: Admin Password
|
||||
labelZh: 管理员密码
|
||||
label:
|
||||
en: Admin Password
|
||||
zh: 管理员密码
|
||||
zh-hant: 管理員密碼
|
||||
ja: 管理者パスワード
|
||||
ko: 관리자 비밀번호
|
||||
ru: Пароль администратора
|
||||
ms: Kata laluan pentadbir
|
||||
pt-br: Senha do administrador
|
||||
random: true
|
||||
required: false
|
||||
rule: paramComplexity
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: JWT_SECRET
|
||||
labelEn: JWT Secret
|
||||
labelZh: JWT 密钥
|
||||
label:
|
||||
en: JWT Secret
|
||||
zh: JWT 密钥
|
||||
zh-hant: JWT 金鑰
|
||||
ja: JWT シークレット
|
||||
ko: JWT 시크릿
|
||||
ru: JWT-секрет
|
||||
ms: Rahsia JWT
|
||||
pt-br: Segredo JWT
|
||||
random: true
|
||||
required: true
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: TOTP_ENCRYPTION_KEY
|
||||
labelEn: TOTP Encryption Key
|
||||
labelZh: TOTP 加密密钥
|
||||
label:
|
||||
en: TOTP Encryption Key
|
||||
zh: TOTP 加密密钥
|
||||
zh-hant: TOTP 加密金鑰
|
||||
ja: TOTP 暗号化キー
|
||||
ko: TOTP 암호화 키
|
||||
ru: Ключ шифрования TOTP
|
||||
ms: Kunci penyulitan TOTP
|
||||
pt-br: Chave de criptografia TOTP
|
||||
random: true
|
||||
required: true
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: UPDATE_PROXY_URL
|
||||
labelEn: Update Proxy URL
|
||||
labelZh: 更新代理地址
|
||||
label:
|
||||
en: Update Proxy URL
|
||||
zh: 更新代理地址
|
||||
zh-hant: 更新代理地址
|
||||
ja: 更新プロキシ URL
|
||||
ko: 업데이트 프록시 URL
|
||||
ru: URL прокси для обновлений
|
||||
ms: URL proksi kemas kini
|
||||
pt-br: URL do proxy de atualização
|
||||
required: false
|
||||
rule: paramExtUrl
|
||||
type: text
|
||||
- default: ./data
|
||||
edit: true
|
||||
envKey: APP_DATA_DIR_1
|
||||
labelEn: App Data Directory
|
||||
labelZh: 应用数据目录
|
||||
label:
|
||||
en: App Data Directory
|
||||
zh: 应用数据目录
|
||||
zh-hant: 應用資料目錄
|
||||
ja: アプリデータディレクトリ
|
||||
ko: 앱 데이터 디렉터리
|
||||
ru: Каталог данных приложения
|
||||
ms: Direktori data aplikasi
|
||||
pt-br: Diretório de dados da aplicação
|
||||
required: true
|
||||
type: text
|
||||
@@ -0,0 +1,46 @@
|
||||
services:
|
||||
sub2api:
|
||||
image: "weishaw/sub2api:latest"
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
environment:
|
||||
- AUTO_SETUP=true
|
||||
- SERVER_HOST=0.0.0.0
|
||||
- SERVER_PORT=8080
|
||||
- SERVER_MODE=${SERVER_MODE}
|
||||
- RUN_MODE=${RUN_MODE}
|
||||
- DATABASE_HOST=${PANEL_DB_HOST}
|
||||
- DATABASE_PORT=${PANEL_DB_PORT}
|
||||
- DATABASE_USER=${PANEL_DB_USER}
|
||||
- DATABASE_PASSWORD=${PANEL_DB_USER_PASSWORD}
|
||||
- DATABASE_DBNAME=${PANEL_DB_NAME}
|
||||
- DATABASE_SSLMODE=disable
|
||||
- REDIS_HOST=${REDIS_HOST}
|
||||
- REDIS_PORT=${REDIS_PORT}
|
||||
- REDIS_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD}
|
||||
- REDIS_DB=${REDIS_DB}
|
||||
- ADMIN_EMAIL=${ADMIN_EMAIL}
|
||||
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
|
||||
- JWT_SECRET=${JWT_SECRET}
|
||||
- JWT_EXPIRE_HOUR=24
|
||||
- TOTP_ENCRYPTION_KEY=${TOTP_ENCRYPTION_KEY}
|
||||
- TZ=${TZ}
|
||||
- UPDATE_PROXY_URL=${UPDATE_PROXY_URL:-}
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:8080"
|
||||
volumes:
|
||||
- "${APP_DATA_DIR_1}:/app/data"
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-q", "-T", "5", "-O", "/dev/null", "http://localhost:8080/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# 当前适配使用 1Panel 数据库 / Redis 依赖注入。
|
||||
# 这里只初始化应用自身的数据目录。
|
||||
mkdir -p "${APP_DATA_DIR_1:-./data}"
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# 当前适配只卸载 Sub2API 容器本身。
|
||||
# 数据库与 Redis 为 1Panel 依赖应用,不在此处删除。
|
||||
docker-compose down --volumes
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# 升级时确保应用自身的数据目录存在。
|
||||
# 数据库与 Redis 数据由 1Panel 依赖应用管理。
|
||||
mkdir -p "${APP_DATA_DIR_1:-./data}"
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.4 KiB |
Reference in New Issue
Block a user