From ae858a9f8e9699aaa3950d390829d9105bdcefb1 Mon Sep 17 00:00:00 2001 From: Meng Sen Date: Fri, 18 Oct 2024 16:34:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=BA=94=E7=94=A8=20NezhaDas?= =?UTF-8?q?h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Meng Sen --- .github/README.md | 1 + README.md | 1 + apps/nezha-dash/0.5.9/data.yml | 24 +++++++++++++++++ apps/nezha-dash/0.5.9/docker-compose.yml | 30 +++++++++++++++++++++ apps/nezha-dash/0.5.9/scripts/init.sh | 15 +++++++++++ apps/nezha-dash/0.5.9/scripts/uninstall.sh | 10 +++++++ apps/nezha-dash/0.5.9/scripts/upgrade.sh | 15 +++++++++++ apps/nezha-dash/README.md | 19 +++++++++++++ apps/nezha-dash/data.yml | 14 ++++++++++ apps/nezha-dash/logo.png | Bin 0 -> 10272 bytes 10 files changed, 129 insertions(+) create mode 100644 apps/nezha-dash/0.5.9/data.yml create mode 100644 apps/nezha-dash/0.5.9/docker-compose.yml create mode 100644 apps/nezha-dash/0.5.9/scripts/init.sh create mode 100644 apps/nezha-dash/0.5.9/scripts/uninstall.sh create mode 100644 apps/nezha-dash/0.5.9/scripts/upgrade.sh create mode 100644 apps/nezha-dash/README.md create mode 100644 apps/nezha-dash/data.yml create mode 100644 apps/nezha-dash/logo.png diff --git a/.github/README.md b/.github/README.md index 3e3855faa..9500059c6 100644 --- a/.github/README.md +++ b/.github/README.md @@ -122,6 +122,7 @@ | 🟢 | | Percona | https://www.percona.com/ | 【MySQL分支】关系数据库管理系统 | MySQL | | 🟢 | | Nacos | https://nacos.io/ | 动态服务发现、配置管理和服务管理平台 | | | 🟢 | | 哪吒监控 | https://nezha.wiki/ | 【哪吒监控】开源、轻量、易用的服务器监控、运维工具 | | +| 🟢 | | NezhaDash | https://nezha-cf.buycoffee.top/ | 基于 Next.js 和 哪吒监控 的仪表盘 | | | 🟢 | | Nginx UI | https://nginxui.com/ | 全新的 Nginx 网络管理界面,旨在简化 Nginx 服务器的管理和配置 | | | 🟢 | | NocoDB | https://nocodb.com/ | 无代码数据库平台 | | | 🟢 | | OneDev | https://onedev.io/ | DevOps 平台、带有 CI/CD、看板和软件包的 Git 服务器 | | diff --git a/README.md b/README.md index 69e790b18..1aafd13b4 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,7 @@ | 🟢 | | Percona | https://www.percona.com/ | 【MySQL分支】关系数据库管理系统 | MySQL | | 🟢 | | Nacos | https://nacos.io/ | 动态服务发现、配置管理和服务管理平台 | | | 🟢 | | 哪吒监控 | https://nezha.wiki/ | 【哪吒监控】开源、轻量、易用的服务器监控、运维工具 | | +| 🟢 | | NezhaDash | https://nezha-cf.buycoffee.top/ | 基于 Next.js 和 哪吒监控 的仪表盘 | | | 🟢 | | Nginx UI | https://nginxui.com/ | 全新的 Nginx 网络管理界面,旨在简化 Nginx 服务器的管理和配置 | | | 🟢 | | NocoDB | https://nocodb.com/ | 无代码数据库平台 | | | 🟢 | | OneDev | https://onedev.io/ | DevOps 平台、带有 CI/CD、看板和软件包的 Git 服务器 | | diff --git a/apps/nezha-dash/0.5.9/data.yml b/apps/nezha-dash/0.5.9/data.yml new file mode 100644 index 000000000..4cf9387d1 --- /dev/null +++ b/apps/nezha-dash/0.5.9/data.yml @@ -0,0 +1,24 @@ +additionalProperties: + formFields: + - default: 3000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: NezhaBaseUrl + labelZh: 哪吒服务地址 + labelEn: Nezha service address + required: true + type: text + - default: "" + edit: true + envKey: NezhaAuth + labelZh: 哪吒 API Token + labelEn: Nezha API Token + required: true + type: text diff --git a/apps/nezha-dash/0.5.9/docker-compose.yml b/apps/nezha-dash/0.5.9/docker-compose.yml new file mode 100644 index 000000000..568bc6879 --- /dev/null +++ b/apps/nezha-dash/0.5.9/docker-compose.yml @@ -0,0 +1,30 @@ +networks: + 1panel-network: + external: true + +services: + nezha-dash: + image: hamster1963/nezha-dash:v0.5.9 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3000 + env_file: + - /etc/1panel/envs/global.env + - ${ENV_FILE:-/etc/1panel/envs/default.env} + environment: + - DefaultLocale=zh + - ForceShowAllServers=false + - NEXT_PUBLIC_NezhaFetchInterval=5000 + - NEXT_PUBLIC_ShowFlag=true + - NEXT_PUBLIC_DisableCartoon=false + - NEXT_PUBLIC_ShowTag=true + - NEXT_PUBLIC_ShowNetTransfer=false + - NEXT_PUBLIC_ForceUseSvgFlag=false + - NEXT_PUBLIC_CustomLogo=https://nezha-cf.buycoffee.top/apple-touch-icon.png + - NEXT_PUBLIC_CustomTitle=NezhaDash + - NEXT_PUBLIC_CustomDescription=NezhaDash is a dashboard for Nezha. diff --git a/apps/nezha-dash/0.5.9/scripts/init.sh b/apps/nezha-dash/0.5.9/scripts/init.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/nezha-dash/0.5.9/scripts/init.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/nezha-dash/0.5.9/scripts/uninstall.sh b/apps/nezha-dash/0.5.9/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/nezha-dash/0.5.9/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/nezha-dash/0.5.9/scripts/upgrade.sh b/apps/nezha-dash/0.5.9/scripts/upgrade.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/nezha-dash/0.5.9/scripts/upgrade.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/nezha-dash/README.md b/apps/nezha-dash/README.md new file mode 100644 index 000000000..6c5b4b01f --- /dev/null +++ b/apps/nezha-dash/README.md @@ -0,0 +1,19 @@ +# NezhaDash + +NezhaDash 是一个基于 Next.js 和 哪吒监控 的仪表盘 + +![哪吒监控](https://file.lifebus.top/imgs/nezha_dash_cover.svg) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +> 该应用是一个基于 Next.js 的仪表盘,用于展示哪吒监控的数据 +> +> 与 [哪吒监控](https://nezha.wiki/) 配合使用,可以实现监控数据的展示 +> +> 该应用作者与哪吒监控的作者没有任何关系,仅仅是一个爱好者的作品 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/nezha-dash/data.yml b/apps/nezha-dash/data.yml new file mode 100644 index 000000000..395e604c3 --- /dev/null +++ b/apps/nezha-dash/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: nezha-dash + name: NezhaDash + tags: + - WebSite + - Local + shortDescZh: 基于 Next.js 和 哪吒监控 的仪表盘 + shortDescEn: Dashboard based on Next.js and Nezha Monitor + type: tool + crossVersionUpdate: true + limit: 0 + website: https://nezha-cf.buycoffee.top/ + github: https://github.com/hamster1963/nezha-dash/ + document: https://buycoffee.top/blog/tech/nezha-docker/ diff --git a/apps/nezha-dash/logo.png b/apps/nezha-dash/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..516d91b650f8c4002fe0178d38efee4bd2bd8719 GIT binary patch literal 10272 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�Lj3n4+R8(kf?5e08nSG5`k_3 z0ie4B>I(pa_J9B|s2P?*AXz{FNCq~2C?EiYM0EoMfI4fH2y_bw0Nou>UjP`i2LymY z&9D>#$pQjEGO+1G0RbQ+sv95x)LE-Upj$uy=Gd>AOH+%hNTcl77zfEflVI@ z2mm2b-2efg&RQh`-2wtYcL&rL00!*=0bo!wEQLU_fB=vTZ2C|@00@cd1_%Ik)+!O` z77zfsJD|P*FlY}50E3!gDFl)Q1b}2<(}w~AKuA0zjR$N(8zE1c2@is4oBv+5-Z>pk`PKfn)&zAQ{;7 zp@0Ao64eb50P3t&BG4@$0CaaieF0$59uNQqHN#Q}Bnt=t$-t%$1q6VQsBVA&P-m?Y zfo=f-pt}R=3jl-mfB-P48J0pISwH|t1~z>tAOM6!bpr%|I%|~(bPEUo-5pS002s6f z1b{)!uoMEx0s=rXu<1hq0U#u*8z2DGS*t{#TR;Hl?tuCNz@R-K01Rq|r4UFK5CD>a zO&U{EtGg+Q`^0FVr9`cOas2#M+j2mp1~ zDiP=w5CFP6puPYwXb%VggPLI}1d;^=fMj6PhXMjXNK`jK0I0K8i9ol20MOk5^#y=I zdq4mf)C@}@kSrhoBm^Y=WB~yn z8QAopfB+B@)eR5;>a0~F&@CVUbay~~0btM`5C8@>!%_$&3kU$oz@`rc1b~pJZh!z# zXRQ)}ZUF(Hy94SA0E6~`05GT-mO>y|KmbSvHhm}{0E9$!0|bCNYn2Fe3kU$+9Z+8Y z7_94?lLUYqSF;izFh@WDn9~aZU`{Wb01WDdr4S&HBOn0exbB%%0NA6J^c*Ju zNwB6RKwyl305GN%n*cDU7ft{M^}J`6M!UG(-I&sMnC`< z(+Vd5b6T-E0hrVbYau`&ML+;ZVcj*U6M$W8IZtu|kmG7r0tDs=2mo_>App$jg%f~5 zy|5Gl1abrffE?F7vkCxv)RLa#1Rx34v;+u@5fA{zw8A|Ab6VjZfJwcu76Jrv1O$K_ z*FCd30obFK^c*JuNwB6RKwyl305GN%P5|b#!U@2nURVnO0yzQ#K#uF4S)BmvQA>J` z6M!UG(-I&sMnC`<(+Vd5b6Vj9U{Wuvg#dvZ0RbS#b^)RLa#1Rx34v;+u@5fA{zw89C%oK`pi znA8hvAwVEUKmf>b-7~8bfIVtS&v62f1Z!FX1jYym0ApI=1Yk}poB&Mfg|!eMkRu=f zQZKB90D&9< z0U*b9&#X=W_NXO2#|c0ZtZ4}l7$YD6jA?}vfH|#j0x+o;)7CjfiY zlAhxPAPLsA1PF`~5CF!s!U@2fRyYBe)C+4NKp;mz0LXFOGpiGTJ!(nMaRQJ8Ygz&X z#s~-iV_M+^U`{KX08HwIwGbeXBOn0exbB(N3BVq;q~|yRNP;yj0Rm$L1b{KEZ~`!= z6;1#q^}<>R5Xcb_0CHUS%<2SSk6O}moB$-jnw9{8F#-a>m{vFen9~X;0F!!QEd&VU z2nYZCjd#XrX@gNjDP?zrWH;A=Cr~Iz@%PS3jqQ-0s=se>z-Mi0PImqdX5u-Bv{iD zATUNi02tE>CjfI=;RIk(FRXTLV!SyfB=x=x@T4=0DIJup5p`{3D&d(2#gUB0LHY!3Ba6Ioc9Fai!Z*| zUcGuXsTI~jAYI^_Z@x*dF|mLEFsCa{0Os^!JL?I6|3MhE2`!~e;Pva*Wwj<1^56TM zZU_K#dLaM|>V>5c$QBR)vW3kb2?zj@P~pFK0#Jyp6oF;|0id}7%DV?((jE{1CUwJF z2;>R~0J*+qj|H3n#71Q!1b{MXg$T3@2mtLZIQ;?yfI(Y802tH^OCgXfAOIu-n?4i} z079a=0RljswMqoK1q6WZ4yZ2x4B7(%z@TPW3V~z+0U#OJ^r3(N5E9i55CH0|RU*(W zAOLiCKz#vV&>j!~1~tP{2qX�Lj3n4+R8(kf?5e08nSG5`k_30ie4B>I(pa_J9B| zs2P?*AXz{FNCq~2C?EiYM0EoMfI4fH2y_bw0Nou>UjP`i2LymY&9D>#$pQjEGO+1G z0RbQ+sv95x)LE-Upj$uy=Gd>AOH+%hNTcl77zfEflVI@2mm2b-2efg&RQh` z-2wtYcL&rL00!*=0bo!wEQLU_fB=vTZ2C|@00@cd1_%Ik)+!O`77zfsJD|P*FlY}5 z0E3!gDFl)Q1b}2<(}w~AKuA0zjR$N(8zE1c2@is4oBv+5-Z>pk`PKfn)&zAQ{;7p@0Ao64eb50P3t& zBG4@$0CaaieF0$59uNQqHN#Q}Bnt=t$-t%$1q6VQsBVA&P-m?Yfo=f-pt}R=3jl-m zfB-P48J0pISwH|t1~z>tAOM6!bpr%|I%|~(bPEUo-5pS002s6f1b{)!uoMEx0s=rX zu<1hq0U#u*8z2DGS*t{#TR;Hl?tuCNz@R-K01Rq|r4UFK5CD>aO&U{EtGg+Q`^0FVr9`cOas2#M+j2mp1~DiP=w5CFP6puPYw zXb%VggPLI}1d;^=fMj6PhXMjXNK`jK0I0K8i9ol20MOk5^#y=Idq4mf)C@}@kSrho zBm^Y=WB~yn8QAopfB+B@)eR5; z>a0~F&@CVUbay~~0btM`5C8@>!%_$&3kU$oz@`rc1b~pJZh!z#XRQ)}ZUF(Hy94SA z0E6~`05GT-mO>y|KmbSvHhm}{0E9$!0|bCNYn2Fe3kU$+9Z+8Y7_W0s=rtR5w5XsIyjyK(~MZ(A@#`1%N?&KmZuj3`-%9 zEFb_R1Die+5CB4=x&Z<}owZ5?x&;J)?hdFg01Vm#0>GeVSPFq;0RbQx*z}=*01y(@ z4G;k8tW_e=Eg%4NcR+msV9*{A00uR~QV1jq2mr~zrVj-KfRLzefB;ZutrCH50Rf=9 z1L_L^gZ6*`FsK=pLLgZ{07wQleJCIRghX`%1b{kgl?ZeT2msw3P+tHTvIMh^b=E2o=oSzF zx;vo005E6|2mphcVJQTX1q6U(VAF>J0zgPqH$VWWvsQ^fw}1f9-2wFlfI)je02tH^ zOCgXfAOIu-n?4i}079a=0RljswMqoK1q6WZ4yZ2x4B7(%z@TPW3V~z+0U#OJ^r3(N z5E9i55CH0|RU*(WAOLiCKz#vV&>j!~1~tP{2qX�Lj3n4+R8(kf?5e08nSG5`k_3 z0ie4B>I(pa_J9B|s2P?*AXz{FNCq~2C?EiYM0EoMfI4fH2y_bw0Nou>UjP`i2LymY z&9D>#$pQjEGO+1G0RbQ+sv95x)LE-Upj$uy=Gd>AOH+%hNTcl77zfEflVI@ z2mm2b-2efg&RQh`-2wtYcL&rL00!*=0bo!wEQLU_fB=vTZ2C|@00@cd1_%Ik)+!O` z77zfsJD|P*FlY}50E3!gDFl)Q1b}2<(}w~AKuA0zjR$N(8zE1c2@is4oBv+5-Z>pk`PKfn)&zAQ{;7 zp@0Ao64eb50P3t&BG4@$0CaaieF0$59uNQqHN#Q}Bnt=t$-t%$1q6VQsBVA&P-m?Y zfo=f-pt}R=3jl-mfB-P48J0pISwH|t1~z>tAOM6!bpr%|I%|~(bPEUo-5pS002s6f z1b{)!uoMEx0s=rXu<1hq0U#u*8z2DGS*t{#TR;Hl?tuCNz@R-K01Rq|r4UFK5CD>a zO&U{EtGg+Q`^0FVr9`cOas2#M+j2mp1~ zDiP=w5CFP6puPYwXb%VggPLI}1d;^=fMj6PhXMjXNK`jK0I0K8i9ol20MOk5^#y=I zdq4mf)C@}@kSrhoBm^Y=WB~yn z8QAopfB+B@)eR5;>a0~F&@CVUbay~~0btM`5C8@>!%_$&3kU$oz@`rc1b~pJZh!z# zXRQ)}ZUF(Hy94SA0E6~`05GT-mO>y|KmbSvHhm}{0E9$!0|bCNYn2Fe3kU$+9Z+8Y z7_W0s=rtR5w5XsIyjyK(~MZ(A@#` z1%N?&KmZuj3`-%9EFb_R1Die+5CB4=x&Z<}owZ5?x&;J)?hdFg01Vm#0>GeVSPFq; z0RbQx*z}=*01y(@4G;k8tW_e=Eg%4NcR+msV9*{A00uR~QV1jq2mr~zrVj-KfRLze zfB;ZutrCH50Rf=91L_L^gZ6*`FsK=pLLgZ{07wQleJCIRghX`%1b{kgl?ZeT2msw3 zP+tHTvIMh^b=E2o=oSzFx;vo005E6|2mphcVJQTX1q6U(VAF>J0zgPqH$VWWvsQ^fw}1f9 z-2wFlfI)je02tH^OCgXfAOIu-n?4i}079a=0RljswMqoK1q6WZ4yZ2x4B7(%z@TPW z3V~z+0U#OJ^r3(N5E9i55CH0|RU*(WAOLiCKz#vV&>j!~1~tP{2qX�Lj3n4+R8( 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 mmp|7F|N8&S-_w66>Hh=C3$&aKiP^dU0000