diff --git a/apps/serverkit/1.11.4/data.yml b/apps/serverkit/1.11.4/data.yml new file mode 100644 index 000000000..369658927 --- /dev/null +++ b/apps/serverkit/1.11.4/data.yml @@ -0,0 +1,171 @@ +additionalProperties: + formFields: + - default: 5000 + 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 + tr: HTTP bağlantı noktası + es-es: Puerto HTTP + fa: پورت HTTP + lo: ພອດ HTTP + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: SECRET_KEY + labelEn: Flask secret key (unique hex value) + labelZh: Flask 密钥(请填写唯一的十六进制值) + label: + en: Flask secret key (unique hex value) + zh: Flask 密钥(请填写唯一的十六进制值) + zh-Hant: Flask 金鑰(請填寫唯一的十六進位值) + ja: Flask シークレットキー(固有の 16 進数値) + ko: Flask 비밀 키(고유한 16진수 값) + ru: Секретный ключ Flask (уникальное шестнадцатеричное значение) + ms: Kunci rahsia Flask (nilai heks unik) + pt-br: Chave secreta do Flask (valor hexadecimal exclusivo) + tr: Flask gizli anahtarı (benzersiz onaltılık değer) + es-es: Clave secreta de Flask (valor hexadecimal único) + fa: کلید مخفی Flask (مقدار هگزادسیمال یکتا) + lo: ຄີລັບ Flask (ຄ່າເລກຖານ 16 ທີ່ບໍ່ຊ້ຳກັນ) + required: true + rule: paramComplexity + type: password + - default: "" + edit: true + envKey: JWT_SECRET_KEY + labelEn: JWT secret key (unique hex value) + labelZh: JWT 密钥(请填写唯一的十六进制值) + label: + en: JWT secret key (unique hex value) + zh: JWT 密钥(请填写唯一的十六进制值) + zh-Hant: JWT 金鑰(請填寫唯一的十六進位值) + ja: JWT シークレットキー(固有の 16 進数値) + ko: JWT 비밀 키(고유한 16진수 값) + ru: Секретный ключ JWT (уникальное шестнадцатеричное значение) + ms: Kunci rahsia JWT (nilai heks unik) + pt-br: Chave secreta JWT (valor hexadecimal exclusivo) + tr: JWT gizli anahtarı (benzersiz onaltılık değer) + es-es: Clave secreta JWT (valor hexadecimal único) + fa: کلید مخفی JWT (مقدار هگزادسیمال یکتا) + lo: ຄີລັບ JWT (ຄ່າເລກຖານ 16 ທີ່ບໍ່ຊ້ຳກັນ) + required: true + rule: paramComplexity + type: password + - default: "" + edit: true + envKey: SERVERKIT_ENCRYPTION_KEY + labelEn: Fernet encryption key (44-character value ending in =) + labelZh: Fernet 加密密钥(44 位且以 = 结尾) + label: + en: Fernet encryption key (44-character value ending in =) + zh: Fernet 加密密钥(44 位且以 = 结尾) + zh-Hant: Fernet 加密金鑰(44 位且以 = 結尾) + ja: Fernet 暗号化キー(= で終わる 44 文字の値) + ko: Fernet 암호화 키(=로 끝나는 44자 값) + ru: Ключ шифрования Fernet (44 символа с окончанием =) + ms: Kunci penyulitan Fernet (44 aksara dan berakhir dengan =) + pt-br: Chave de criptografia Fernet (44 caracteres terminados em =) + tr: Fernet şifreleme anahtarı (= ile biten 44 karakterlik değer) + es-es: Clave de cifrado Fernet (valor de 44 caracteres terminado en =) + fa: کلید رمزنگاری Fernet (مقدار ۴۴ کاراکتری که با = تمام می‌شود) + lo: ຄີເຂົ້າລະຫັດ Fernet (ຄ່າ 44 ຕົວອັກສອນທີ່ລົງທ້າຍດ້ວຍ =) + required: true + type: password + - default: http://localhost + edit: true + envKey: CORS_ORIGINS + labelEn: Allowed browser origins (comma-separated) + labelZh: 允许的浏览器来源(多个来源用逗号分隔) + label: + en: Allowed browser origins (comma-separated) + zh: 允许的浏览器来源(多个来源用逗号分隔) + zh-Hant: 允許的瀏覽器來源(多個來源以逗號分隔) + ja: 許可するブラウザーオリジン(カンマ区切り) + ko: 허용된 브라우저 오리진(쉼표로 구분) + ru: Разрешённые источники браузера (через запятую) + ms: Asal pelayar yang dibenarkan (dipisahkan koma) + pt-br: Origens de navegador permitidas (separadas por vírgula) + tr: İzin verilen tarayıcı kaynakları (virgülle ayrılmış) + es-es: Orígenes de navegador permitidos (separados por comas) + fa: مبدأهای مجاز مرورگر (با ویرگول جدا شوند) + lo: ແຫຼ່ງທີ່ມາຂອງບຣາວເຊີທີ່ອະນຸຍາດ (ຄັ່ນດ້ວຍຈຸນ) + required: true + type: text + - default: "" + edit: true + envKey: SERVERKIT_PUBLIC_URL + labelEn: Public URL (optional, for reverse proxy and agents) + labelZh: 公网 URL(可选,用于反向代理和远程代理) + label: + en: Public URL (optional, for reverse proxy and agents) + zh: 公网 URL(可选,用于反向代理和远程代理) + zh-Hant: 公開 URL(選填,用於反向代理與遠端代理) + ja: パブリック URL(任意、リバースプロキシとエージェント用) + ko: 공용 URL(선택 사항, 역방향 프록시 및 에이전트용) + ru: Публичный URL (необязательно, для обратного прокси и агентов) + ms: URL awam (pilihan, untuk proksi terbalik dan ejen) + pt-br: URL público (opcional, para proxy reverso e agentes) + tr: Genel URL (isteğe bağlı, ters proxy ve aracılar için) + es-es: URL público (opcional, para proxy inverso y agentes) + fa: نشانی عمومی (اختیاری، برای پراکسی معکوس و عامل‌ها) + lo: URL ສາທາລະນະ (ທາງເລືອກ, ສຳລັບ reverse proxy ແລະ agent) + required: false + rule: paramExtUrl + type: text + - default: "false" + edit: true + envKey: TRUST_PROXY_HEADERS + labelEn: Trust reverse-proxy headers + labelZh: 信任反向代理请求头 + label: + en: Trust reverse-proxy headers + zh: 信任反向代理请求头 + zh-Hant: 信任反向代理標頭 + ja: リバースプロキシヘッダーを信頼 + ko: 역방향 프록시 헤더 신뢰 + ru: Доверять заголовкам обратного прокси + ms: Percayai pengepala proksi terbalik + pt-br: Confiar nos cabeçalhos do proxy reverso + tr: Ters proxy başlıklarına güven + es-es: Confiar en las cabeceras del proxy inverso + fa: اعتماد به سرخط‌های پراکسی معکوس + lo: ເຊື່ອຖື header ຂອງ reverse proxy + required: true + type: select + values: + - label: Direct access + value: "false" + - label: Behind a trusted reverse proxy + value: "true" + - 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 + tr: Saat dilimi + es-es: Zona horaria + fa: منطقه زمانی + lo: ເຂດເວລາ + required: true + type: text diff --git a/apps/serverkit/1.11.4/docker-compose.yml b/apps/serverkit/1.11.4/docker-compose.yml new file mode 100644 index 000000000..54b309a60 --- /dev/null +++ b/apps/serverkit/1.11.4/docker-compose.yml @@ -0,0 +1,44 @@ +services: + serverkit: + image: "jhd3197/serverkit:1.11.4" + container_name: ${CONTAINER_NAME} + ports: + - "${PANEL_APP_PORT_HTTP}:5000" + environment: + - "TZ=${TZ}" + - "DATABASE_URL=sqlite:////app/instance/serverkit.db" + - "FLASK_ENV=production" + - "SECRET_KEY=${SECRET_KEY}" + - "JWT_SECRET_KEY=${JWT_SECRET_KEY}" + - "SERVERKIT_ENCRYPTION_KEY=${SERVERKIT_ENCRYPTION_KEY}" + - "CORS_ORIGINS=${CORS_ORIGINS}" + - "SERVERKIT_PUBLIC_URL=${SERVERKIT_PUBLIC_URL:-}" + - "TRUST_PROXY_HEADERS=${TRUST_PROXY_HEADERS}" + - "TRUSTED_PROXY_HOPS=1" + - "SERVERKIT_GITHUB_REPO=jhd3197/ServerKit" + volumes: + - "serverkit-data:/app/instance" + networks: + - "1panel-network" + labels: + createdBy: "Apps" + restart: "unless-stopped" + healthcheck: + test: ["CMD-SHELL", "curl -f \"http://127.0.0.1:5000/api/v1/system/health\" || exit 1"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + +volumes: + serverkit-data: + name: serverkit-data + +networks: + 1panel-network: + external: true diff --git a/apps/serverkit/README.md b/apps/serverkit/README.md new file mode 100644 index 000000000..73130dc97 --- /dev/null +++ b/apps/serverkit/README.md @@ -0,0 +1,44 @@ +# ServerKit + +## 产品介绍 + +ServerKit 是一个自托管的远程服务器管理与运维面板,提供服务器接入、集群视图、终端、部署、监控、备份、安全和站点相关功能。 + +本应用包使用上游发布的 all-in-one Docker 镜像 `jhd3197/serverkit`,包含 API、前端 SPA 和 Socket.IO 服务。 + +## 主要功能 + +- 接入和管理远程服务器及服务器集群。 +- 提供终端、部署、监控、备份和安全相关能力。 +- 通过浏览器提供统一的 Web 面板和实时 Socket.IO 通信。 + +## 适配说明 + +这是 ServerKit 的容器化部署。容器默认不挂载 Docker Socket、宿主机文件系统或特权权限,因此它不能管理当前 1Panel 宿主机的 systemd、宿主机 Nginx、宿主机软件包或本机站点。它适合评估、管理其他已接入的远程服务器,以及放在反向代理后使用。 + +## 首次使用 + +1. 安装时填写三个唯一密钥:`SECRET_KEY`、`JWT_SECRET_KEY` 和 Fernet 格式的 `SERVERKIT_ENCRYPTION_KEY`。 +2. Fernet 密钥可用以下命令生成: + + ```bash + python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" + ``` + + 前两个密钥可用 `openssl rand -hex 32` 生成。密钥应妥善保存;更换它们会使已有会话或加密数据失效。 +3. 通过安装时配置的 HTTP 端口打开 ServerKit。首次打开时使用注册页面创建第一个用户;第一个用户会被授予管理员角色。 +4. 如果使用反向代理,请填写 `SERVERKIT_PUBLIC_URL`,并仅在请求一定经过可信反向代理时将 `TRUST_PROXY_HEADERS` 设为 `true`。需要同时允许多个浏览器来源时,在 `CORS_ORIGINS` 中用逗号分隔填写。 + +SQLite 数据库持久化在 `serverkit-data` 卷的 `/app/instance/serverkit.db`。不要删除该卷,否则会丢失 ServerKit 数据。 + +## 版本 + +应用同时提供 `latest` 和固定版本 `1.11.4`,两者均来自上游 Docker Hub 发布镜像,并支持 amd64 与 arm64。 + +## 相关链接 + +- [上游项目](https://github.com/jhd3197/ServerKit) +- [Docker 部署文档](https://github.com/jhd3197/ServerKit/blob/v1.11.4/docs/INSTALLATION.md#quick-install-docker) +- [上游 Compose 文件](https://github.com/jhd3197/ServerKit/blob/v1.11.4/docker-compose.yml) + +ServerKit 上游项目采用 MIT License,详细条款见[上游许可证](https://github.com/jhd3197/ServerKit/blob/v1.11.4/LICENSE)。 diff --git a/apps/serverkit/README_en.md b/apps/serverkit/README_en.md new file mode 100644 index 000000000..642e4c68c --- /dev/null +++ b/apps/serverkit/README_en.md @@ -0,0 +1,44 @@ +# ServerKit + +## Introduction + +ServerKit is a self-hosted panel for connecting remote servers and managing fleet operations, terminals, deployments, monitoring, backups, security, and sites. + +This package uses the upstream all-in-one Docker image `jhd3197/serverkit`, which serves the API, React SPA, and Socket.IO service from one container. + +## Features + +- Connect to and manage remote servers and server fleets. +- Provide terminal, deployment, monitoring, backup, and security capabilities. +- Serve a unified browser panel with real-time Socket.IO communication. + +## Container scope + +This is ServerKit's containerized deployment. The package does not mount the Docker Socket or the host filesystem and does not use privileged mode. As a result, it cannot manage the current 1Panel host's systemd services, host Nginx, host packages, or local sites. It is intended for evaluation, managing other connected remote servers, or running behind a reverse proxy. + +## First use + +1. During installation, provide unique values for `SECRET_KEY`, `JWT_SECRET_KEY`, and the Fernet-format `SERVERKIT_ENCRYPTION_KEY`. +2. Generate a Fernet key with: + + ```bash + python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" + ``` + + Generate the first two keys with `openssl rand -hex 32`. Keep all keys safe; changing them invalidates existing sessions or encrypted data. +3. Open ServerKit on the configured HTTP port. On the first visit, use the registration page to create the first user; the first user is given the administrator role. +4. When using a reverse proxy, set `SERVERKIT_PUBLIC_URL`. Set `TRUST_PROXY_HEADERS` to `true` only when every request is guaranteed to pass through a trusted proxy. Add multiple browser origins as a comma-separated `CORS_ORIGINS` value. + +The SQLite database is persisted at `/app/instance/serverkit.db` in the `serverkit-data` volume. Do not remove that volume unless the ServerKit data can be discarded. + +## Versions + +Both `latest` and the pinned `1.11.4` release are available. They use the upstream Docker Hub image and support amd64 and arm64. + +## Links + +- [Upstream project](https://github.com/jhd3197/ServerKit) +- [Docker deployment guide](https://github.com/jhd3197/ServerKit/blob/v1.11.4/docs/INSTALLATION.md#quick-install-docker) +- [Upstream Compose file](https://github.com/jhd3197/ServerKit/blob/v1.11.4/docker-compose.yml) + +The ServerKit upstream project is licensed under the MIT License. See the [upstream license](https://github.com/jhd3197/ServerKit/blob/v1.11.4/LICENSE). diff --git a/apps/serverkit/data.yml b/apps/serverkit/data.yml new file mode 100644 index 000000000..b9564fae8 --- /dev/null +++ b/apps/serverkit/data.yml @@ -0,0 +1,34 @@ +name: ServerKit +tags: + - Server +title: 远程服务器管理与运维面板 +description: 远程服务器管理与运维面板 +additionalProperties: + key: serverkit + name: ServerKit + tags: + - Server + shortDescZh: 远程服务器管理与运维面板 + shortDescEn: Remote server management and operations panel + description: + en: A self-hosted panel for remote server management, fleet operations, and deployments. + zh: 面向远程服务器管理、集群运维与部署的自托管面板。 + zh-Hant: 用於遠端伺服器管理、叢集維運與部署的自託管面板。 + ja: リモートサーバー管理、フリート運用、デプロイに対応したセルフホスト型パネル。 + ko: 원격 서버 관리, 플릿 운영 및 배포를 위한 셀프 호스팅 패널입니다. + ru: Самостоятельно размещаемая панель для управления удалёнными серверами, парком и развёртываниями. + ms: Panel kendiri untuk pengurusan pelayan jauh, operasi armada dan penggunaan. + pt-br: Painel auto-hospedado para gerenciar servidores remotos, frotas e implantações. + tr: Uzak sunucu yönetimi, filo operasyonları ve dağıtımlar için kendi kendine barındırılan panel. + es-es: Panel autoalojado para gestionar servidores remotos, flotas y despliegues. + fa: پنل خودمیزبان برای مدیریت سرورهای راه دور، ناوگان و استقرارها. + lo: ແຜງຄວບຄຸມແບບໂຮສຕ໌ເອງສຳລັບຈັດການເຊີບເວີລະໄກ, ຟລີດ ແລະການນຳໃຊ້. + type: tool + crossVersionUpdate: true + limit: 0 + website: https://github.com/jhd3197/ServerKit + github: https://github.com/jhd3197/ServerKit + document: https://github.com/jhd3197/ServerKit/blob/v1.11.4/docs/INSTALLATION.md#quick-install-docker + architectures: + - amd64 + - arm64 diff --git a/apps/serverkit/latest/data.yml b/apps/serverkit/latest/data.yml new file mode 100644 index 000000000..369658927 --- /dev/null +++ b/apps/serverkit/latest/data.yml @@ -0,0 +1,171 @@ +additionalProperties: + formFields: + - default: 5000 + 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 + tr: HTTP bağlantı noktası + es-es: Puerto HTTP + fa: پورت HTTP + lo: ພອດ HTTP + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: SECRET_KEY + labelEn: Flask secret key (unique hex value) + labelZh: Flask 密钥(请填写唯一的十六进制值) + label: + en: Flask secret key (unique hex value) + zh: Flask 密钥(请填写唯一的十六进制值) + zh-Hant: Flask 金鑰(請填寫唯一的十六進位值) + ja: Flask シークレットキー(固有の 16 進数値) + ko: Flask 비밀 키(고유한 16진수 값) + ru: Секретный ключ Flask (уникальное шестнадцатеричное значение) + ms: Kunci rahsia Flask (nilai heks unik) + pt-br: Chave secreta do Flask (valor hexadecimal exclusivo) + tr: Flask gizli anahtarı (benzersiz onaltılık değer) + es-es: Clave secreta de Flask (valor hexadecimal único) + fa: کلید مخفی Flask (مقدار هگزادسیمال یکتا) + lo: ຄີລັບ Flask (ຄ່າເລກຖານ 16 ທີ່ບໍ່ຊ້ຳກັນ) + required: true + rule: paramComplexity + type: password + - default: "" + edit: true + envKey: JWT_SECRET_KEY + labelEn: JWT secret key (unique hex value) + labelZh: JWT 密钥(请填写唯一的十六进制值) + label: + en: JWT secret key (unique hex value) + zh: JWT 密钥(请填写唯一的十六进制值) + zh-Hant: JWT 金鑰(請填寫唯一的十六進位值) + ja: JWT シークレットキー(固有の 16 進数値) + ko: JWT 비밀 키(고유한 16진수 값) + ru: Секретный ключ JWT (уникальное шестнадцатеричное значение) + ms: Kunci rahsia JWT (nilai heks unik) + pt-br: Chave secreta JWT (valor hexadecimal exclusivo) + tr: JWT gizli anahtarı (benzersiz onaltılık değer) + es-es: Clave secreta JWT (valor hexadecimal único) + fa: کلید مخفی JWT (مقدار هگزادسیمال یکتا) + lo: ຄີລັບ JWT (ຄ່າເລກຖານ 16 ທີ່ບໍ່ຊ້ຳກັນ) + required: true + rule: paramComplexity + type: password + - default: "" + edit: true + envKey: SERVERKIT_ENCRYPTION_KEY + labelEn: Fernet encryption key (44-character value ending in =) + labelZh: Fernet 加密密钥(44 位且以 = 结尾) + label: + en: Fernet encryption key (44-character value ending in =) + zh: Fernet 加密密钥(44 位且以 = 结尾) + zh-Hant: Fernet 加密金鑰(44 位且以 = 結尾) + ja: Fernet 暗号化キー(= で終わる 44 文字の値) + ko: Fernet 암호화 키(=로 끝나는 44자 값) + ru: Ключ шифрования Fernet (44 символа с окончанием =) + ms: Kunci penyulitan Fernet (44 aksara dan berakhir dengan =) + pt-br: Chave de criptografia Fernet (44 caracteres terminados em =) + tr: Fernet şifreleme anahtarı (= ile biten 44 karakterlik değer) + es-es: Clave de cifrado Fernet (valor de 44 caracteres terminado en =) + fa: کلید رمزنگاری Fernet (مقدار ۴۴ کاراکتری که با = تمام می‌شود) + lo: ຄີເຂົ້າລະຫັດ Fernet (ຄ່າ 44 ຕົວອັກສອນທີ່ລົງທ້າຍດ້ວຍ =) + required: true + type: password + - default: http://localhost + edit: true + envKey: CORS_ORIGINS + labelEn: Allowed browser origins (comma-separated) + labelZh: 允许的浏览器来源(多个来源用逗号分隔) + label: + en: Allowed browser origins (comma-separated) + zh: 允许的浏览器来源(多个来源用逗号分隔) + zh-Hant: 允許的瀏覽器來源(多個來源以逗號分隔) + ja: 許可するブラウザーオリジン(カンマ区切り) + ko: 허용된 브라우저 오리진(쉼표로 구분) + ru: Разрешённые источники браузера (через запятую) + ms: Asal pelayar yang dibenarkan (dipisahkan koma) + pt-br: Origens de navegador permitidas (separadas por vírgula) + tr: İzin verilen tarayıcı kaynakları (virgülle ayrılmış) + es-es: Orígenes de navegador permitidos (separados por comas) + fa: مبدأهای مجاز مرورگر (با ویرگول جدا شوند) + lo: ແຫຼ່ງທີ່ມາຂອງບຣາວເຊີທີ່ອະນຸຍາດ (ຄັ່ນດ້ວຍຈຸນ) + required: true + type: text + - default: "" + edit: true + envKey: SERVERKIT_PUBLIC_URL + labelEn: Public URL (optional, for reverse proxy and agents) + labelZh: 公网 URL(可选,用于反向代理和远程代理) + label: + en: Public URL (optional, for reverse proxy and agents) + zh: 公网 URL(可选,用于反向代理和远程代理) + zh-Hant: 公開 URL(選填,用於反向代理與遠端代理) + ja: パブリック URL(任意、リバースプロキシとエージェント用) + ko: 공용 URL(선택 사항, 역방향 프록시 및 에이전트용) + ru: Публичный URL (необязательно, для обратного прокси и агентов) + ms: URL awam (pilihan, untuk proksi terbalik dan ejen) + pt-br: URL público (opcional, para proxy reverso e agentes) + tr: Genel URL (isteğe bağlı, ters proxy ve aracılar için) + es-es: URL público (opcional, para proxy inverso y agentes) + fa: نشانی عمومی (اختیاری، برای پراکسی معکوس و عامل‌ها) + lo: URL ສາທາລະນະ (ທາງເລືອກ, ສຳລັບ reverse proxy ແລະ agent) + required: false + rule: paramExtUrl + type: text + - default: "false" + edit: true + envKey: TRUST_PROXY_HEADERS + labelEn: Trust reverse-proxy headers + labelZh: 信任反向代理请求头 + label: + en: Trust reverse-proxy headers + zh: 信任反向代理请求头 + zh-Hant: 信任反向代理標頭 + ja: リバースプロキシヘッダーを信頼 + ko: 역방향 프록시 헤더 신뢰 + ru: Доверять заголовкам обратного прокси + ms: Percayai pengepala proksi terbalik + pt-br: Confiar nos cabeçalhos do proxy reverso + tr: Ters proxy başlıklarına güven + es-es: Confiar en las cabeceras del proxy inverso + fa: اعتماد به سرخط‌های پراکسی معکوس + lo: ເຊື່ອຖື header ຂອງ reverse proxy + required: true + type: select + values: + - label: Direct access + value: "false" + - label: Behind a trusted reverse proxy + value: "true" + - 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 + tr: Saat dilimi + es-es: Zona horaria + fa: منطقه زمانی + lo: ເຂດເວລາ + required: true + type: text diff --git a/apps/serverkit/latest/docker-compose.yml b/apps/serverkit/latest/docker-compose.yml new file mode 100644 index 000000000..45d66ffb0 --- /dev/null +++ b/apps/serverkit/latest/docker-compose.yml @@ -0,0 +1,44 @@ +services: + serverkit: + image: "jhd3197/serverkit:latest" + container_name: ${CONTAINER_NAME} + ports: + - "${PANEL_APP_PORT_HTTP}:5000" + environment: + - "TZ=${TZ}" + - "DATABASE_URL=sqlite:////app/instance/serverkit.db" + - "FLASK_ENV=production" + - "SECRET_KEY=${SECRET_KEY}" + - "JWT_SECRET_KEY=${JWT_SECRET_KEY}" + - "SERVERKIT_ENCRYPTION_KEY=${SERVERKIT_ENCRYPTION_KEY}" + - "CORS_ORIGINS=${CORS_ORIGINS}" + - "SERVERKIT_PUBLIC_URL=${SERVERKIT_PUBLIC_URL:-}" + - "TRUST_PROXY_HEADERS=${TRUST_PROXY_HEADERS}" + - "TRUSTED_PROXY_HOPS=1" + - "SERVERKIT_GITHUB_REPO=jhd3197/ServerKit" + volumes: + - "serverkit-data:/app/instance" + networks: + - "1panel-network" + labels: + createdBy: "Apps" + restart: "unless-stopped" + healthcheck: + test: ["CMD-SHELL", "curl -f \"http://127.0.0.1:5000/api/v1/system/health\" || exit 1"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + +volumes: + serverkit-data: + name: serverkit-data + +networks: + 1panel-network: + external: true diff --git a/apps/serverkit/logo.LICENSE.txt b/apps/serverkit/logo.LICENSE.txt new file mode 100644 index 000000000..47052197f --- /dev/null +++ b/apps/serverkit/logo.LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (c) 2026 okxlin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/apps/serverkit/logo.png b/apps/serverkit/logo.png new file mode 100644 index 000000000..574b0ee6f Binary files /dev/null and b/apps/serverkit/logo.png differ