From 4ca55e291e335308155eb215f8f8d28fa628fb4d Mon Sep 17 00:00:00 2001 From: okxlin Date: Sun, 30 Jun 2024 23:35:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BF=AE=E6=AD=A3icat=5Flite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/icat_lite/1.1/.env.sample | 10 ++ apps/icat_lite/1.1/data.yml | 147 ++++++++++------------- apps/icat_lite/1.1/docker-compose.yml | 7 +- apps/icat_lite/README.md | 4 +- apps/icat_lite/data.yml | 30 +++-- apps/icat_lite/latest/.env.sample | 10 ++ apps/icat_lite/latest/data.yml | 65 ++++++++++ apps/icat_lite/latest/docker-compose.yml | 21 ++++ apps/icat_lite/logo.png | Bin 16802 -> 3450 bytes 9 files changed, 193 insertions(+), 101 deletions(-) create mode 100644 apps/icat_lite/1.1/.env.sample create mode 100644 apps/icat_lite/latest/.env.sample create mode 100644 apps/icat_lite/latest/data.yml create mode 100644 apps/icat_lite/latest/docker-compose.yml diff --git a/apps/icat_lite/1.1/.env.sample b/apps/icat_lite/1.1/.env.sample new file mode 100644 index 000000000..92505f841 --- /dev/null +++ b/apps/icat_lite/1.1/.env.sample @@ -0,0 +1,10 @@ +CONTAINER_NAME="icat_lite" +ICAT_COOKIEPWD="fibowrlnidazotocrichechotechovad" +ICAT_PWDKEY="nevovltregopezeminatisejlbojudos" +PANEL_APP_PORT_HTTP=8095 +PANEL_DB_HOST="postgresql" +PANEL_DB_HOST_NAME="postgresql" +PANEL_DB_NAME="icat_lite" +PANEL_DB_PORT=5432 +PANEL_DB_USER="icat_lite" +PANEL_DB_USER_PASSWORD="icat_bbs" diff --git a/apps/icat_lite/1.1/data.yml b/apps/icat_lite/1.1/data.yml index b2aeecc56..363fa31d7 100644 --- a/apps/icat_lite/1.1/data.yml +++ b/apps/icat_lite/1.1/data.yml @@ -1,82 +1,65 @@ -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 +additionalProperties: + formFields: + - default: "" + edit: true + envKey: PANEL_DB_HOST + key: postgresql + labelEn: Database Service + labelZh: 数据库服务 + required: true + type: service + - default: 5432 + envKey: PANEL_DB_PORT + labelEn: Database port + labelZh: 数据库端口 + random: false + required: true + rule: paramPort + type: number + - default: icat_lite + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + random: true + required: true + rule: paramCommon + type: text + - 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 + - default: 8095 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "nevovltregopezeminatisejlbojudos" + edit: true + envKey: ICAT_PWDKEY + labelEn: Key for encrypted password (lost and can't log in) + labelZh: 用于加密的密码的密钥 (丢失无法登录) + random: true + required: true + type: text + - default: "fibowrlnidazotocrichechotechovad" + edit: true + envKey: ICAT_COOKIEPWD + labelEn: CookiePassword (at least 32 bits) + labelZh: 登录状态加密密码 (至少32位) + required: false + 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 index 8cfde1466..d0c911754 100644 --- a/apps/icat_lite/1.1/docker-compose.yml +++ b/apps/icat_lite/1.1/docker-compose.yml @@ -1,9 +1,8 @@ -version: "3" services: icat_lite: - image: bluesdo/icat_lite_public:latest + image: "bluesdo/icat_lite_public:1.1" container_name: ${CONTAINER_NAME} - restart: on-failure + restart: always networks: - 1panel-network volumes: @@ -14,7 +13,7 @@ services: - ./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" + command: "serve.js --host 0.0.0.0 --port 8095 --dbHost ${PANEL_DB_HOST} --dbPort ${PANEL_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: diff --git a/apps/icat_lite/README.md b/apps/icat_lite/README.md index 7f39070c2..8e6f2e666 100644 --- a/apps/icat_lite/README.md +++ b/apps/icat_lite/README.md @@ -1,3 +1 @@ -1. 上传并解压文件到1panel的目录:/opt/1panel/resource/apps/local -2. 点击应用商店->更新应用列表->勾选显示本地应用->菜单选择【更多】-【本地】 -3. 安装应用 \ No newline at end of file +# 喵空间社区程序 Lite 版 diff --git a/apps/icat_lite/data.yml b/apps/icat_lite/data.yml index 0b8676785..395ff3089 100644 --- a/apps/icat_lite/data.yml +++ b/apps/icat_lite/data.yml @@ -1,13 +1,19 @@ +name: icat_lite +tags: + - 建站 +title: 喵空间社区程序 Lite 版 +description: 喵空间社区程序 Lite 版 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 + key: icat_lite + name: icat_lite + tags: + - WebSite + shortDescZh: 喵空间社区程序 Lite 版 + shortDescEn: A mini bbs/forum/talk communicaty program + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://miao.o-o.zone + github: https://github.com/0ui0/icat_lite_public + document: https://github.com/0ui0/icat_lite_public diff --git a/apps/icat_lite/latest/.env.sample b/apps/icat_lite/latest/.env.sample new file mode 100644 index 000000000..92505f841 --- /dev/null +++ b/apps/icat_lite/latest/.env.sample @@ -0,0 +1,10 @@ +CONTAINER_NAME="icat_lite" +ICAT_COOKIEPWD="fibowrlnidazotocrichechotechovad" +ICAT_PWDKEY="nevovltregopezeminatisejlbojudos" +PANEL_APP_PORT_HTTP=8095 +PANEL_DB_HOST="postgresql" +PANEL_DB_HOST_NAME="postgresql" +PANEL_DB_NAME="icat_lite" +PANEL_DB_PORT=5432 +PANEL_DB_USER="icat_lite" +PANEL_DB_USER_PASSWORD="icat_bbs" diff --git a/apps/icat_lite/latest/data.yml b/apps/icat_lite/latest/data.yml new file mode 100644 index 000000000..363fa31d7 --- /dev/null +++ b/apps/icat_lite/latest/data.yml @@ -0,0 +1,65 @@ +additionalProperties: + formFields: + - default: "" + edit: true + envKey: PANEL_DB_HOST + key: postgresql + labelEn: Database Service + labelZh: 数据库服务 + required: true + type: service + - default: 5432 + envKey: PANEL_DB_PORT + labelEn: Database port + labelZh: 数据库端口 + random: false + required: true + rule: paramPort + type: number + - default: icat_lite + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + random: true + required: true + rule: paramCommon + type: text + - 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 + - default: 8095 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "nevovltregopezeminatisejlbojudos" + edit: true + envKey: ICAT_PWDKEY + labelEn: Key for encrypted password (lost and can't log in) + labelZh: 用于加密的密码的密钥 (丢失无法登录) + random: true + required: true + type: text + - default: "fibowrlnidazotocrichechotechovad" + edit: true + envKey: ICAT_COOKIEPWD + labelEn: CookiePassword (at least 32 bits) + labelZh: 登录状态加密密码 (至少32位) + required: false + type: text \ No newline at end of file diff --git a/apps/icat_lite/latest/docker-compose.yml b/apps/icat_lite/latest/docker-compose.yml new file mode 100644 index 000000000..e434821c4 --- /dev/null +++ b/apps/icat_lite/latest/docker-compose.yml @@ -0,0 +1,21 @@ +services: + icat_lite: + image: "bluesdo/icat_lite_public:latest" + container_name: ${CONTAINER_NAME} + restart: always + 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 ${PANEL_DB_HOST} --dbPort ${PANEL_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/logo.png b/apps/icat_lite/logo.png index 846246e775efc0c530fb48e6549b5996111cff7f..80094a5a9938ccab7ce66fae03f96ce241a30cbc 100644 GIT binary patch literal 3450 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 ZiC5mBlNq_A`RArW40KFjMOt<*{tr}cC=&nx literal 16802 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