From 1273a63933bb7a33248ff2741662b5901f9133bf Mon Sep 17 00:00:00 2001 From: arch3rPro Date: Fri, 5 Sep 2025 14:46:51 +0800 Subject: [PATCH 1/3] feat: add app 1Panel-Tools --- 1panel-tools/README.md | 46 +++++++++++++++++++++++++ 1panel-tools/README_en.md | 41 ++++++++++++++++++++++ 1panel-tools/data.yml | 22 ++++++++++++ 1panel-tools/latest/data.yml | 11 ++++++ 1panel-tools/latest/docker-compose.yml | 16 +++++++++ 1panel-tools/logo.png | Bin 0 -> 26300 bytes 6 files changed, 136 insertions(+) create mode 100644 1panel-tools/README.md create mode 100644 1panel-tools/README_en.md create mode 100644 1panel-tools/data.yml create mode 100644 1panel-tools/latest/data.yml create mode 100644 1panel-tools/latest/docker-compose.yml create mode 100644 1panel-tools/logo.png diff --git a/1panel-tools/README.md b/1panel-tools/README.md new file mode 100644 index 000000000..64c5d5bbc --- /dev/null +++ b/1panel-tools/README.md @@ -0,0 +1,46 @@ +# 1Panel-Tools + +## 概述 + +1Panel-Tools 是一个专门设计的工具集,旨在简化为 1Panel AppStore 创建应用程序的过程。该集合中的主要工具是 Docker Compose 到 1Panel AppStore 的转换器,它将标准的 Docker Compose 文件转换为 1Panel AppStore 所需的格式。 + +![1Panel-Tools](https://cdn.jsdelivr.net/gh/arch3rPro/1Panel-Tools@main/public/1Panel-Tools.png) + +![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white) + +## 热知识 + +当前这个1Panel-Appstore应用,就是用该项目创建的,俄罗斯套娃,传说中我生了我自己。 + +## 功能特点 + +- **Docker Compose 转换**:自动将 Docker Compose 文件转换为 1Panel AppStore 格式 +- **参数配置**:轻松定义和管理应用程序参数 +- **元数据管理**:设置应用程序名称、描述、标签和其他元数据 +- **多语言支持**:配置中英文描述 +- **导出功能**:下载转换后的文件,准备提交到 1Panel AppStore + + +## 使用方法 + +1. **输入 Docker Compose**:将您的 Docker Compose 文件粘贴到编辑器中 +2. **配置应用程序**:设置应用程序名称、键值、描述和其他元数据 +3. **定义参数**:为您的应用程序添加参数(端口、环境变量等) +4. **预览转换**:查看生成的 1Panel AppStore 文件 +5. **导出**:下载转换后的文件,用于 1Panel AppStore + + +## 1Panel AppStore 格式 + +转换器生成的文件遵循 1Panel AppStore 格式: + +``` +├── app-key/ + ├── logo.png + ├── data.yml + ├── README.md + └── version/ + ├── data.yml + ├── docker-compose.yml + └── scripts/ +``` diff --git a/1panel-tools/README_en.md b/1panel-tools/README_en.md new file mode 100644 index 000000000..f7f18fb1b --- /dev/null +++ b/1panel-tools/README_en.md @@ -0,0 +1,41 @@ +# 1Panel-Tools + +## Overview + +1Panel-Tools is a specialized toolkit designed to simplify the process of creating applications for the 1Panel AppStore. The primary tool in this collection is the Docker Compose to 1Panel AppStore converter, which transforms standard Docker Compose files into the format required by the 1Panel AppStore. + +![1Panel-Tools](https://cdn.jsdelivr.net/gh/arch3rPro/1Panel-Tools@main/public/1Panel-Tools.png) + +![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white) + +## Features + +- **Docker Compose Conversion**: Automatically convert Docker Compose files to 1Panel AppStore format +- **Parameter Configuration**: Easily define and manage application parameters +- **Metadata Management**: Set application name, description, tags, and other metadata +- **Multi-language Support**: Configure descriptions in both English and Chinese +- **Export Functionality**: Download the converted files ready for 1Panel AppStore submission + + +## Usage + +1. **Input Docker Compose**: Paste your Docker Compose file into the editor +2. **Configure Application**: Set the application name, key, description, and other metadata +3. **Define Parameters**: Add parameters for your application (ports, environment variables, etc.) +4. **Preview Conversion**: Review the generated 1Panel AppStore files +5. **Export**: Download the converted files for use with 1Panel AppStore + +## 1Panel AppStore Format + +The converter generates files following the 1Panel AppStore format: + +``` +├── app-key/ + ├── logo.png + ├── data.yml + ├── README.md + └── version/ + ├── data.yml + ├── docker-compose.yml + └── scripts/ +``` \ No newline at end of file diff --git a/1panel-tools/data.yml b/1panel-tools/data.yml new file mode 100644 index 000000000..c773a4d5b --- /dev/null +++ b/1panel-tools/data.yml @@ -0,0 +1,22 @@ +name: 1Panel-Tools +tags: + - 实用工具 + - 开发工具 +title: 轻松将您的 Docker Compose 文件转换为 1Panel 应用商店格式 +description: + en: Convert your Docker Compose files to 1Panel AppStore format with ease + zh: 轻松将您的 Docker Compose 文件转换为 1Panel 应用商店格式 +additionalProperties: + key: 1panel-tools + name: 1Panel-Tools + tags: + - Tool + - DevTool + shortDescZh: 轻松将您的 Docker Compose 文件转换为 1Panel 应用商店格式 + shortDescEn: Convert your Docker Compose files to 1Panel AppStore format with ease + type: website + crossVersionUpdate: true + limit: 0 + website: https://github.com/arch3rPro/1Panel-Tools + github: https://github.com/arch3rPro/1Panel-Tools + document: https://github.com/arch3rPro/1Panel-Tools diff --git a/1panel-tools/latest/data.yml b/1panel-tools/latest/data.yml new file mode 100644 index 000000000..b26276751 --- /dev/null +++ b/1panel-tools/latest/data.yml @@ -0,0 +1,11 @@ +additionalProperties: + formFields: + - default: "8080" + envKey: PANEL_APP_PORT_HTTP + label: + en: Web-Port + zh: Web端口 + required: true + type: number + edit: true + rule: paramPort diff --git a/1panel-tools/latest/docker-compose.yml b/1panel-tools/latest/docker-compose.yml new file mode 100644 index 000000000..1232de7ee --- /dev/null +++ b/1panel-tools/latest/docker-compose.yml @@ -0,0 +1,16 @@ +services: + 1panel-tools: + image: vuldocker/1panel-tools:latest + container_name: ${CONTAINER_NAME} + ports: + - "${PANEL_APP_PORT_HTTP}:8080" + restart: unless-stopped + environment: + - NODE_ENV=production + labels: + createdBy: "Apps" + networks: + - 1panel-tools-network +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/1panel-tools/logo.png b/1panel-tools/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..17df08f5d051dfe65b3e442725f13cecdc28153d GIT binary patch literal 26300 zcmYhj2{@GR7dQTl!H}J@#8|T=yRRj?D2yzLkUd2qOGb9ak|nZb%`OuyLPCvgq)23$ z$`XSpj4k`ly!Z6`zwhCR4uTe(AxJG3 zg1CGOa91?I2edbg4fG*0<*THn;xTwa?`vr54?&22%0F1#6!_xrmshW?_<5 zT6Rc!3qiL;jP!LagMKa(1H*p&*(0y*1VozBj=^rG6>ta!WbRi3J}3^g8#(hySufU%Yv< z!2fmsyP{MB0jtntw>afY5VihWmvX|>z-s35tAE-Po z)}qq6pTS`djZN-#d}mr+IgXsTs8da22XAi2^Ex-Tm#EM+bUYeq^TECFL()kd?OCE) zkVXgz?D5NzXE!r?Ohw^ba8(|R2=TwLw=wOJw634%ZjxJ{zX^GXPPafIAgqQ^b;vdk z=d3?>c{&;iPfA#3?Z~NFwXf;}^39^BLig&TDj1*Sp@_Nn6`Cdo}&% zH3Kl6=l^xTlvFRIKNr=Kv-bSxOu~E1K&ng>3lhpi#f*;`Pkik>Ow=(jYz(qj`CKqs z>%8Yr5JJ%uQiiozSr+ARF3^VON)o3zmf7x^c{>ce(*->XDiUBQn$s~Os)0IO!VxHu@<^d zK|e;>Bgniel|v($8b?@ctWHJDEaO9Ui_~rwq`yA*JuUZ2Npz*|%~< zss)c4N8BsRHAzCo~}DML41J&= z8HuWrg{-%$k^hD+qm2JipN7Dsdu{w%*<@WNiv8$@g=AuaUpYF)0>u;yBreKPtMx(o z0nXoGaYqXD(w3Wv5)(s07N5OIL;gUl>=fC`v{1`E7-ut}%qN5L&BCt%t(*2fd~7o` z+rp^K=`u<*%deavy4UT|;QyP=!+KV_KXSubva{7i zm|)Ysey23L*k*e+OP?|Px`X8V#Ds``3rVBRB%|lQ3DwU}PA6+2YyQ7R_ejH;7GJnF z^Rq0v^+V`%&i-McDCOl>PFGQ9BL{r0p+wmhDX)lAUNO?&SHfnl(^H1~|F^{UQ<roRxP=N!GcDky6!}>U*kmxZoT>qxQMSk^r14@WN<{+uUFYAf zn{#p*{lDMd*gO#~ECDUCIZ|h{sK1>?DFp5evcOInH&W-Bm@nq`n2pqLd^|UapGmDl zr&>fj6PG%xWRt{|KR(h{@wlCo?WYzs!63+>(~7>H;3Yob�l-8UC#6=HcGgmn-8k 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 literal 0 HcmV?d00001 From 9755fc6128814ee4cef65df8cc5b1a5c1a10fcea Mon Sep 17 00:00:00 2001 From: arch3rPro Date: Mon, 8 Sep 2025 10:50:39 +0800 Subject: [PATCH 2/3] feat: update 1panel-tools 0.2.0 --- 1panel-tools/0.2.0/data.yml | 11 +++++++++++ 1panel-tools/0.2.0/docker-compose.yml | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 1panel-tools/0.2.0/data.yml create mode 100644 1panel-tools/0.2.0/docker-compose.yml diff --git a/1panel-tools/0.2.0/data.yml b/1panel-tools/0.2.0/data.yml new file mode 100644 index 000000000..b26276751 --- /dev/null +++ b/1panel-tools/0.2.0/data.yml @@ -0,0 +1,11 @@ +additionalProperties: + formFields: + - default: "8080" + envKey: PANEL_APP_PORT_HTTP + label: + en: Web-Port + zh: Web端口 + required: true + type: number + edit: true + rule: paramPort diff --git a/1panel-tools/0.2.0/docker-compose.yml b/1panel-tools/0.2.0/docker-compose.yml new file mode 100644 index 000000000..be37a838c --- /dev/null +++ b/1panel-tools/0.2.0/docker-compose.yml @@ -0,0 +1,16 @@ +services: + 1panel-tools: + image: vuldocker/1panel-tools:0.2.0 + container_name: ${CONTAINER_NAME} + ports: + - "${PANEL_APP_PORT_HTTP}:8080" + restart: unless-stopped + environment: + - NODE_ENV=production + labels: + createdBy: "Apps" + networks: + - 1panel-tools-network +networks: + 1panel-network: + external: true \ No newline at end of file From 6effb5ad24ce695508f4c00b42c0fe3c0beab894 Mon Sep 17 00:00:00 2001 From: arch3rPro Date: Mon, 8 Sep 2025 10:59:58 +0800 Subject: [PATCH 3/3] fix: fix 1panel-tools networks --- 1panel-tools/0.2.0/docker-compose.yml | 2 +- 1panel-tools/latest/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/1panel-tools/0.2.0/docker-compose.yml b/1panel-tools/0.2.0/docker-compose.yml index be37a838c..c75c0b8d9 100644 --- a/1panel-tools/0.2.0/docker-compose.yml +++ b/1panel-tools/0.2.0/docker-compose.yml @@ -10,7 +10,7 @@ services: labels: createdBy: "Apps" networks: - - 1panel-tools-network + - 1panel-network networks: 1panel-network: external: true \ No newline at end of file diff --git a/1panel-tools/latest/docker-compose.yml b/1panel-tools/latest/docker-compose.yml index 1232de7ee..ce41e9194 100644 --- a/1panel-tools/latest/docker-compose.yml +++ b/1panel-tools/latest/docker-compose.yml @@ -10,7 +10,7 @@ services: labels: createdBy: "Apps" networks: - - 1panel-tools-network + - 1panel-network networks: 1panel-network: external: true \ No newline at end of file