From 62adc2df237f9a73a2933eb850b9c3b419f170d6 Mon Sep 17 00:00:00 2001 From: Blue_sdo Date: Sat, 22 Jun 2024 17:33:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=96=B5=E7=A9=BA=E9=97=B4?= =?UTF-8?q?=E7=A4=BE=E5=8C=BA=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/icat_lite/1.1/data.yml | 82 ++++++++++++++++++++++++++ apps/icat_lite/1.1/docker-compose.yml | 22 +++++++ apps/icat_lite/README.md | 3 + apps/icat_lite/data.yml | 13 ++++ apps/icat_lite/logo.png | Bin 0 -> 16802 bytes 5 files changed, 120 insertions(+) create mode 100644 apps/icat_lite/1.1/data.yml create mode 100644 apps/icat_lite/1.1/docker-compose.yml create mode 100644 apps/icat_lite/README.md create mode 100644 apps/icat_lite/data.yml create mode 100644 apps/icat_lite/logo.png diff --git a/apps/icat_lite/1.1/data.yml b/apps/icat_lite/1.1/data.yml new file mode 100644 index 00000000..b2aeecc5 --- /dev/null +++ b/apps/icat_lite/1.1/data.yml @@ -0,0 +1,82 @@ +additionalProperties: #固定参数 + formFields: + - default: "" + envKey: PANEL_DB_HOST #docker-compose 文件中的参数 + key: postgres #依赖应用的 key , 例如 mysql + labelEn: Database Service #英文的label + labelZh: 数据库服务 #中文的label + required: true #是否必填 + type: service #如果需要依赖其他应用,例如数据库,使用此 type + + - default: 5432 + envKey: ICAT_DB_PORT + labelEn: Database port + labelZh: 数据库端口 + random: false #是否在 default 文字后面,增加随机字符串 + required: true + rule: paramPort + type: number #端口使用此 type + + + - default: "" + envKey: ICAT_DB_HOST + labelEn: Database host + labelZh: 数据库连接主机(地址),在数据库信息里可以查询到 + random: false #是否在 default 文字后面,增加随机字符串 + required: true + rule: paramCommon + type: text + + - default: icat_lite + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + random: true #是否在 default 文字后面,增加随机字符串 + required: true + rule: paramCommon #校验规则 + type: text #需要手动填写的,使用此 type + + - default: icat_lite + envKey: PANEL_DB_USER + labelEn: User + labelZh: 数据库用户 + random: true + required: true + rule: paramCommon + type: text + + - default: "icat_bbs" + envKey: PANEL_DB_USER_PASSWORD + labelEn: Password + labelZh: 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password #密码字段使用此 type + + - default: 8095 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number #端口使用此 type + + - default: "用于加密的密码的密钥,请务必替换成随机字符并重点保存,丢失将永久无法登录" + envKey: ICAT_PWDKEY + labelEn: PasswordKey + labelZh: 密钥(Key) + random: true + required: true + rule: paramCommon + type: text + + - default: "这里是加密登录状态的密码,随机字符,至少32位,这个不用保存,每次可以不一样" + envKey: ICAT_COOKIEPWD + labelEn: CookiePassword + labelZh: 登录状态加密密码 + random: true + required: true + rule: paramCommon + type: text \ No newline at end of file diff --git a/apps/icat_lite/1.1/docker-compose.yml b/apps/icat_lite/1.1/docker-compose.yml new file mode 100644 index 00000000..8cfde146 --- /dev/null +++ b/apps/icat_lite/1.1/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3" +services: + icat_lite: + image: bluesdo/icat_lite_public:latest + container_name: ${CONTAINER_NAME} + restart: on-failure + networks: + - 1panel-network + volumes: + - ./icat_lite/data:/icat_lite/www/data + - ./icat_lite/system:/icat_lite/www/public/statics/system + - ./icat_lite/systemBlock:/icat_lite/www/public/statics/systemBlock + - ./icat_lite/sticker:/icat_lite/www/public/statics/sticker + - ./icat_lite/certs:/icat_lite/certs + ports: + - ${PANEL_APP_PORT_HTTP}:8095 + command: "serve.js --host 0.0.0.0 --port 8095 --dbHost ${ICAT_DB_HOST} --dbPort ${ICAT_DB_PORT} --dbName ${PANEL_DB_NAME} --dbUser ${PANEL_DB_USER} --dbPassword ${PANEL_DB_USER_PASSWORD} --pwdKey ${ICAT_PWDKEY} --cookiePwd ${ICAT_COOKIEPWD} --alterAll" + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/icat_lite/README.md b/apps/icat_lite/README.md new file mode 100644 index 00000000..7f39070c --- /dev/null +++ b/apps/icat_lite/README.md @@ -0,0 +1,3 @@ +1. 上传并解压文件到1panel的目录:/opt/1panel/resource/apps/local +2. 点击应用商店->更新应用列表->勾选显示本地应用->菜单选择【更多】-【本地】 +3. 安装应用 \ No newline at end of file diff --git a/apps/icat_lite/data.yml b/apps/icat_lite/data.yml new file mode 100644 index 00000000..0b867678 --- /dev/null +++ b/apps/icat_lite/data.yml @@ -0,0 +1,13 @@ +additionalProperties: + key: icat_lite #应用的 key ,仅限英文,用于在 Linux 创建文件夹 + name: 喵空间社区程序Lite版 #应用名称 + tags: + - 建站 #应用标签,可以有多个,请参照下方的标签列表 + shortDescZh: 不太可爱(*╹▽╹*)的社区程序 #应用中文描述,不要超过30个字 + shortDescEn: a mini bbs/forum/talk communicaty program. #应用英文描述 + type: website #应用类型,区别于应用分类,只能有一个,请参照下方的类型列表 + crossVersionUpdate: true #是否可以跨大版本升级 + limit: 0 #应用安装数量限制,0 代表无限制 + website: https://miao.o-o.zone #官网地址 + github: https://github.com/0ui0/icat_lite_public.git #github 地址 + document: https://github.com/0ui0/icat_lite_public.git #文档地址 \ No newline at end of file diff --git a/apps/icat_lite/logo.png b/apps/icat_lite/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..846246e775efc0c530fb48e6549b5996111cff7f GIT binary patch literal 16802 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