diff --git a/apps/nodebb/3.12.4/conf/setup.json b/apps/nodebb/3.12.4/conf/setup.json new file mode 100644 index 00000000..e5efa16d --- /dev/null +++ b/apps/nodebb/3.12.4/conf/setup.json @@ -0,0 +1,11 @@ +{ + "defaults": { + "$NODEBB_DB": { + "host": "$NODEBB_DB_HOST", + "port": $NODEBB_DB_PORT, + "database": "$NODEBB_DB_NAME", + "username": "$NODEBB_DB_USER", + "password": "$NODEBB_DB_PASSWORD" + } + } +} diff --git a/apps/nodebb/3.12.4/data.yml b/apps/nodebb/3.12.4/data.yml new file mode 100644 index 00000000..a161316f --- /dev/null +++ b/apps/nodebb/3.12.4/data.yml @@ -0,0 +1,98 @@ +additionalProperties: + formFields: + - default: "/home/nodebb" + edit: true + envKey: NODEBB_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 4567 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "http://127.0.0.1:4567" + edit: true + envKey: NODEBB_URL + labelZh: 服务地址 + labelEn: Service address + required: true + type: text + - default: "" + edit: true + envKey: NODEBB_ADMIN_USERNAME + labelZh: 管理员用户名 + labelEn: Admin Username + required: true + type: text + - default: "" + edit: true + envKey: NODEBB_ADMIN_PASSWORD + labelZh: 管理员密码 + labelEn: Admin Password + required: true + type: password + - default: "" + edit: true + envKey: NODEBB_ADMIN_EMAIL + labelZh: 管理员邮箱 + labelEn: Admin Email + required: true + type: text + - default: "postgres" + edit: true + envKey: NODEBB_DB + labelZh: 数据库类型 + labelEn: Database type + required: true + type: select + values: + - label: PostgreSQL + value: "postgres" + - label: Redis + value: "redis" + - label: MongoDB + value: "mongo" + - default: "127.0.0.1" + edit: true + envKey: NODEBB_DB_HOST + labelZh: 数据库 主机地址 + labelEn: Database Host + required: true + type: text + - default: 5432 + edit: true + envKey: NODEBB_DB_PORT + labelZh: 数据库 端口 + labelEn: Database Port + required: true + rule: paramPort + type: number + - default: "nodebb" + edit: true + envKey: NODEBB_DB_NAME + labelZh: 数据库 名称 + labelEn: Database Name + required: true + rule: paramCommon + type: text + - default: "nodebb" + edit: true + envKey: NODEBB_DB_USER + labelZh: 数据库 用户名 + labelEn: Database Username + required: false + type: text + - default: "" + edit: true + envKey: NODEBB_DB_PASSWORD + labelZh: 数据库 密码 + labelEn: Database Password + random: true + required: false + rule: paramComplexity + type: password diff --git a/apps/nodebb/3.12.4/docker-compose.yml b/apps/nodebb/3.12.4/docker-compose.yml new file mode 100644 index 00000000..f7f41f49 --- /dev/null +++ b/apps/nodebb/3.12.4/docker-compose.yml @@ -0,0 +1,26 @@ +networks: + 1panel-network: + external: true + +services: + nodebb: + image: ghcr.io/nodebb/nodebb:3.12.4 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:4567 + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${NODEBB_ROOT_PATH}/node_modules:/usr/src/app/node_modules + - ${NODEBB_ROOT_PATH}/build:/usr/src/app/build + - ${NODEBB_ROOT_PATH}/uploads:/usr/src/app/public/uploads + - ${NODEBB_ROOT_PATH}/config:/opt/config + - ${NODEBB_ROOT_PATH}/setup.json:/usr/src/app/setup.json + environment: + - TZ=Asia/Shanghai diff --git a/apps/nodebb/3.12.4/envs/default.env b/apps/nodebb/3.12.4/envs/default.env new file mode 100644 index 00000000..cd05f46e --- /dev/null +++ b/apps/nodebb/3.12.4/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/nodebb/3.12.4/envs/global.env b/apps/nodebb/3.12.4/envs/global.env new file mode 100644 index 00000000..e10989fe --- /dev/null +++ b/apps/nodebb/3.12.4/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/nodebb/3.12.4/scripts/init.sh b/apps/nodebb/3.12.4/scripts/init.sh new file mode 100644 index 00000000..00b4605f --- /dev/null +++ b/apps/nodebb/3.12.4/scripts/init.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + # setup-2 update dir permissions + mkdir -p "$NODEBB_ROOT_PATH" + mkdir -p "$NODEBB_ROOT_PATH/node_modules" + mkdir -p "$NODEBB_ROOT_PATH/build" + mkdir -p "$NODEBB_ROOT_PATH/uploads" + mkdir -p "$NODEBB_ROOT_PATH/config" + + # setup-3 初始化参数配置 + if [ -z "$NODEBB_DB_NAME" ]; then + NODEBB_DB_NAME="nodebb" + fi + + if [ -z "$NODEBB_DB_USER" ]; then + NODEBB_DB_USER="" + fi + + if [ -z "$NODEBB_DB_PASSWORD" ]; then + NODEBB_DB_PASSWORD="" + fi + + SETUP_JSON_PATH="$NODEBB_ROOT_PATH/setup.json" + cp ./conf/setup.json "$SETUP_JSON_PATH" + sed -i " + s|\$NODEBB_DB_HOST|$NODEBB_DB_HOST|g; + s|\$NODEBB_DB_PORT|$NODEBB_DB_PORT|g; + s|\$NODEBB_DB_NAME|$NODEBB_DB_NAME|g; + s|\$NODEBB_DB_USER|$NODEBB_DB_USER|g; + s|\$NODEBB_DB_PASSWORD|$NODEBB_DB_PASSWORD|g; + s|\$NODEBB_DB|$NODEBB_DB|g + " "$SETUP_JSON_PATH" + + + # setup-4 update dir permissions + chown -R 1001:1001 "$NODEBB_ROOT_PATH" + chown -R 1001:1001 "$NODEBB_ROOT_PATH/node_modules" + chown -R 1001:1001 "$NODEBB_ROOT_PATH/build" + chown -R 1001:1001 "$NODEBB_ROOT_PATH/uploads" + chown -R 1001:1001 "$NODEBB_ROOT_PATH/config" + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/nodebb/3.12.4/scripts/uninstall.sh b/apps/nodebb/3.12.4/scripts/uninstall.sh new file mode 100644 index 00000000..c86c4fbc --- /dev/null +++ b/apps/nodebb/3.12.4/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/nodebb/3.12.4/scripts/upgrade.sh b/apps/nodebb/3.12.4/scripts/upgrade.sh new file mode 100644 index 00000000..6cdcf174 --- /dev/null +++ b/apps/nodebb/3.12.4/scripts/upgrade.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + # setup-2 update dir permissions + mkdir -p "$NODEBB_ROOT_PATH" + mkdir -p "$NODEBB_ROOT_PATH/node_modules" + mkdir -p "$NODEBB_ROOT_PATH/build" + mkdir -p "$NODEBB_ROOT_PATH/uploads" + mkdir -p "$NODEBB_ROOT_PATH/config" + + if [ ! -f "$NODEBB_ROOT_PATH/setup.json" ]; then + SETUP_JSON_PATH="$NODEBB_ROOT_PATH/setup.json" + cp ./conf/setup.json "$SETUP_JSON_PATH" + sed -i " + s|\$NODEBB_DB_HOST|$NODEBB_DB_HOST|g; + s|\$NODEBB_DB_PORT|$NODEBB_DB_PORT|g; + s|\$NODEBB_DB_NAME|$NODEBB_DB_NAME|g; + s|\$NODEBB_DB_USER|$NODEBB_DB_USER|g; + s|\$NODEBB_DB_PASSWORD|$NODEBB_DB_PASSWORD|g; + s|\$NODEBB_DB|$NODEBB_DB|g + " "$SETUP_JSON_PATH" + fi + + # setup-3 update dir permissions + chown -R 1001:1001 "$NODEBB_ROOT_PATH" + chown -R 1001:1001 "$NODEBB_ROOT_PATH/node_modules" + chown -R 1001:1001 "$NODEBB_ROOT_PATH/build" + chown -R 1001:1001 "$NODEBB_ROOT_PATH/uploads" + chown -R 1001:1001 "$NODEBB_ROOT_PATH/config" + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi