From 193b4b8edcc1c35025d4802d85f9a6cf3f07cb39 Mon Sep 17 00:00:00 2001 From: okxlin Date: Thu, 14 Mar 2024 14:40:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BF=AE=E6=94=B9nodebb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/nodebb/1.19/.env.sample | 2 ++ apps/nodebb/1.19/data.yml | 10 ++++++++++ apps/nodebb/1.19/data/.gitkeep | 0 apps/nodebb/1.19/docker-compose.yml | 18 ++++++++++++++++++ apps/nodebb/1.19/scripts/init.sh | 3 +++ apps/nodebb/README.md | 8 +------- apps/nodebb/data.yml | 10 +++++----- apps/nodebb/latest/.env.sample | 2 ++ apps/nodebb/latest/data.yml | 25 +++++++++---------------- apps/nodebb/latest/data/.gitkeep | 0 apps/nodebb/latest/docker-compose.yml | 20 ++++++++------------ apps/nodebb/latest/scripts/init.sh | 3 +++ apps/nodebb/logo.png | Bin 13884 -> 3102 bytes 13 files changed, 61 insertions(+), 40 deletions(-) create mode 100644 apps/nodebb/1.19/.env.sample create mode 100644 apps/nodebb/1.19/data.yml create mode 100644 apps/nodebb/1.19/data/.gitkeep create mode 100644 apps/nodebb/1.19/docker-compose.yml create mode 100644 apps/nodebb/1.19/scripts/init.sh create mode 100644 apps/nodebb/latest/.env.sample create mode 100644 apps/nodebb/latest/data/.gitkeep create mode 100644 apps/nodebb/latest/scripts/init.sh diff --git a/apps/nodebb/1.19/.env.sample b/apps/nodebb/1.19/.env.sample new file mode 100644 index 00000000..d2482cea --- /dev/null +++ b/apps/nodebb/1.19/.env.sample @@ -0,0 +1,2 @@ +CONTAINER_NAME="nodebb" +PANEL_APP_PORT_HTTP="40202" diff --git a/apps/nodebb/1.19/data.yml b/apps/nodebb/1.19/data.yml new file mode 100644 index 00000000..b409ef37 --- /dev/null +++ b/apps/nodebb/1.19/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: 40202 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/nodebb/1.19/data/.gitkeep b/apps/nodebb/1.19/data/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/nodebb/1.19/docker-compose.yml b/apps/nodebb/1.19/docker-compose.yml new file mode 100644 index 00000000..9fc4b651 --- /dev/null +++ b/apps/nodebb/1.19/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.8" +services: + nodebb: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:4567" + volumes: + - ./data:/usr/src/app/public/uploads + image: nodebb/docker:1.19 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/nodebb/1.19/scripts/init.sh b/apps/nodebb/1.19/scripts/init.sh new file mode 100644 index 00000000..2ffd123d --- /dev/null +++ b/apps/nodebb/1.19/scripts/init.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +chmod 777 data \ No newline at end of file diff --git a/apps/nodebb/README.md b/apps/nodebb/README.md index 452d3e61..d873723b 100644 --- a/apps/nodebb/README.md +++ b/apps/nodebb/README.md @@ -1,14 +1,8 @@ # 介绍 -NodeBB 是一款由Node.js开发的、开源的、现代化的论坛程序 +NodeBB 是一款由 Node.js 开发的、开源的、现代化的论坛程序 -## 所使用docker镜像相关: - -> 项目链接 ->> - https://hub.docker.com/r/elestio/nodebb ->> - https://github.com/elestio-examples/nodebb - ## 数据库连接问题 需要新建数据库再进行安装 diff --git a/apps/nodebb/data.yml b/apps/nodebb/data.yml index fc500132..58c20844 100644 --- a/apps/nodebb/data.yml +++ b/apps/nodebb/data.yml @@ -1,19 +1,19 @@ name: NodeBB tags: - 建站 -title: 基于Node.js的现代化论坛程序 +title: 基于 Node.js 的现代化论坛程序 type: 建站 -description: 基于Node.js的现代化论坛程序 +description: 基于 Node.js 的现代化论坛程序 additionalProperties: key: nodebb - name: nodebb + name: NodeBB tags: - WebSite - shortDescZh: 基于Node.js的现代化论坛程序 + shortDescZh: 基于 Node.js 的现代化论坛程序 shortDescEn: Open source Forum Powered by Node.js type: website crossVersionUpdate: true limit: 0 website: https://nodebb.org/ github: https://github.com/NodeBB/NodeBB - document: https://docs.nodebb.org/ \ No newline at end of file + document: https://docs.nodebb.org/ diff --git a/apps/nodebb/latest/.env.sample b/apps/nodebb/latest/.env.sample new file mode 100644 index 00000000..d2482cea --- /dev/null +++ b/apps/nodebb/latest/.env.sample @@ -0,0 +1,2 @@ +CONTAINER_NAME="nodebb" +PANEL_APP_PORT_HTTP="40202" diff --git a/apps/nodebb/latest/data.yml b/apps/nodebb/latest/data.yml index 8def98b5..b409ef37 100644 --- a/apps/nodebb/latest/data.yml +++ b/apps/nodebb/latest/data.yml @@ -1,17 +1,10 @@ additionalProperties: - formFields: - - default: 4567 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 应用端口 - required: true - rule: paramPort - type: number - - default: example.com - envKey: DOMAIN - labelEn: Allowed_Origins - labelZh: 绑定域名 - required: true - rule: paramExtUrl - type: text + formFields: + - default: 40202 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/nodebb/latest/data/.gitkeep b/apps/nodebb/latest/data/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/nodebb/latest/docker-compose.yml b/apps/nodebb/latest/docker-compose.yml index 790af483..9368ebea 100644 --- a/apps/nodebb/latest/docker-compose.yml +++ b/apps/nodebb/latest/docker-compose.yml @@ -1,22 +1,18 @@ -version: "3.3" +version: "3.8" services: nodebb: container_name: ${CONTAINER_NAME} - ports: - - "${PANEL_APP_PORT_HTTP}:4567" - user: 0:0 - image: elestio/nodebb:latest restart: always networks: - 1panel-network - environment: - URL: "https://${DOMAIN}" + ports: + - "${PANEL_APP_PORT_HTTP}:4567" volumes: - - ./nodebb-files:/usr/src/app/public/uploads - # - ./nodebb-config/config.json:/usr/src/app/config.json - - ./entrypoint.sh:/usr/src/app/entrypoint.sh - + - ./data:/usr/src/app/public/uploads + image: nodebb/docker:latest + labels: + createdBy: "Apps" networks: 1panel-network: - external: true \ No newline at end of file + external: true diff --git a/apps/nodebb/latest/scripts/init.sh b/apps/nodebb/latest/scripts/init.sh new file mode 100644 index 00000000..2ffd123d --- /dev/null +++ b/apps/nodebb/latest/scripts/init.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +chmod 777 data \ No newline at end of file diff --git a/apps/nodebb/logo.png b/apps/nodebb/logo.png index a5d7782158b5a5c535aaff145b6dc1928a0cb28a..25bee1b0b0381e26cc1c0e1aada79661d29b1e48 100644 GIT binary patch literal 3102 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 Y_NrpL$Ha@^Q-{UD#>M)LCG5t30HG0*N&o-= literal 13884 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 KMNUMnLSTX-ZdmI8