diff --git a/.github/README.md b/.github/README.md index a1861595d..e5f2ce240 100644 --- a/.github/README.md +++ b/.github/README.md @@ -121,7 +121,8 @@ | 🟢 | | MariaDB | https://mariadb.org/ | 【MySQL分支】创新的开源数据库 | MySQL | | 🟢 | | Percona | https://www.percona.com/ | 【MySQL分支】关系数据库管理系统 | MySQL | | 🟢 | | Nacos | https://nacos.io/ | 动态服务发现、配置管理和服务管理平台 | | -| 🟢 | | NeZha | https://nezha.wiki/ | 【哪吒监控】开源、轻量、易用的服务器监控、运维工具 | | +| 🟢 | | 哪吒监控 | https://nezha.wiki/ | 【哪吒监控】开源、轻量、易用的服务器监控、运维工具 | | +| 🟢 | | Nginx UI | https://nginxui.com/ | 全新的 Nginx 网络管理界面,旨在简化 Nginx 服务器的管理和配置 | | | 🟢 | | NocoDB | https://nocodb.com/ | 无代码数据库平台 | | | 🟢 | | OneDev | https://onedev.io/ | DevOps 平台、带有 CI/CD、看板和软件包的 Git 服务器 | | | 🟢 | | OutLine | https://www.getoutline.com/ | 快速、协作的团队知识库 | | diff --git a/README.md b/README.md index ff88b88cb..b30834251 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,8 @@ | 🟢 | | MariaDB | https://mariadb.org/ | 【MySQL分支】创新的开源数据库 | MySQL | | 🟢 | | Percona | https://www.percona.com/ | 【MySQL分支】关系数据库管理系统 | MySQL | | 🟢 | | Nacos | https://nacos.io/ | 动态服务发现、配置管理和服务管理平台 | | -| 🟢 | | NeZha | https://nezha.wiki/ | 【哪吒监控】开源、轻量、易用的服务器监控、运维工具 | | +| 🟢 | | 哪吒监控 | https://nezha.wiki/ | 【哪吒监控】开源、轻量、易用的服务器监控、运维工具 | | +| 🟢 | | Nginx UI | https://nginxui.com/ | 全新的 Nginx 网络管理界面,旨在简化 Nginx 服务器的管理和配置 | | | 🟢 | | NocoDB | https://nocodb.com/ | 无代码数据库平台 | | | 🟢 | | OneDev | https://onedev.io/ | DevOps 平台、带有 CI/CD、看板和软件包的 Git 服务器 | | | 🟢 | | OutLine | https://www.getoutline.com/ | 快速、协作的团队知识库 | | diff --git a/apps/nginx-ui/2.0.0/data.yml b/apps/nginx-ui/2.0.0/data.yml new file mode 100644 index 000000000..93211472e --- /dev/null +++ b/apps/nginx-ui/2.0.0/data.yml @@ -0,0 +1,86 @@ +additionalProperties: + formFields: + - default: "/home/nginx-ui" + edit: true + envKey: NGINX_UI_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 80 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: Web UI 端口 + labelEn: Web UI Port + required: true + rule: paramPort + type: number + - default: 443 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelZh: Web UI 端口 (HTTPS) + labelEn: Web UI Port (HTTPS) + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: ADMINMAIL + labelZh: 管理员邮箱 + labelEn: Admin Email + required: true + type: text + - default: "" + edit: true + envKey: ADMINPASS + labelZh: 管理员密码 + labelEn: Admin Password + required: true + type: password + - default: "" + edit: true + envKey: NGINX_UI_SERVER_JWT_SECRET + labelZh: JWT 密钥盐 + labelEn: JWT Secret Salt + required: true + type: password + - default: "https://mirror.ghproxy.com/" + edit: true + envKey: NGINX_UI_SERVER_GITHUB_PROXY + labelZh: GitHub 代理地址 + labelEn: GitHub Proxy + required: false + type: text + - default: "Nginx UI" + edit: true + envKey: NGINX_UI_SERVER_NAME + labelZh: Nginx UI 显示标题 + labelEn: Nginx UI Display Title + required: true + type: text + - default: "false" + edit: true + envKey: NGINX_UI_SERVER_SKIP_INSTALLATION + labelZh: 跳过安装模式 + labelEn: Skip Installation Mode + required: true + type: select + values: + - label: 跳过 + value: "true" + - label: 不跳过 + value: "false" + - default: "" + edit: true + envKey: NGINX_UI_PREDEFINED_USER_NAME + labelZh: 预设用户名 (跳过安装模式) + labelEn: Predefined Username + required: false + type: text + - default: "" + edit: true + envKey: NGINX_UI_PREDEFINED_USER_PASSWORD + labelZh: 预设密码 (跳过安装模式) + labelEn: Predefined Password + required: false + type: text diff --git a/apps/nginx-ui/2.0.0/docker-compose.yml b/apps/nginx-ui/2.0.0/docker-compose.yml new file mode 100644 index 000000000..168148c6f --- /dev/null +++ b/apps/nginx-ui/2.0.0/docker-compose.yml @@ -0,0 +1,33 @@ +networks: + 1panel-network: + external: true + +services: + nginx-ui: + image: uozi/nginx-ui:v2.0.0-beta.36 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + stdin_open: true + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:80 + - ${PANEL_APP_PORT_HTTPS}:443 + volumes: + - ${NGINX_UI_ROOT_PATH}/nginx:/etc/nginx + - ${NGINX_UI_ROOT_PATH}/nginx-ui:/etc/nginx-ui + - ${NGINX_UI_ROOT_PATH}/www:/var/www + environment: + - TZ=Asia/Shanghai + - NGINX_UI_SERVER_HTTP_HOST=0.0.0.0 + - NGINX_UI_SERVER_HTTP_PORT=9000 + - NGINX_UI_SERVER_RUN_MODE=release + - NGINX_UI_SERVER_HTTP_CHALLENGE_PORT=9180 + - NGINX_UI_SERVER_DATABASE=database + - NGINX_UI_SERVER_START_CMD=login + - NGINX_UI_SERVER_START_CMD=database + - NGINX_UI_SERVER_PAGE_SIZE=10 + - NGINX_UI_SERVER_CERT_RENEWAL_INTERVAL=7 + - NGINX_UI_SERVER_SKIP_INSTALLATION=false diff --git a/apps/nginx-ui/2.0.0/scripts/init.sh b/apps/nginx-ui/2.0.0/scripts/init.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/nginx-ui/2.0.0/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/nginx-ui/2.0.0/scripts/uninstall.sh b/apps/nginx-ui/2.0.0/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/nginx-ui/2.0.0/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/nginx-ui/2.0.0/scripts/upgrade.sh b/apps/nginx-ui/2.0.0/scripts/upgrade.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/nginx-ui/2.0.0/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/nginx-ui/README.md b/apps/nginx-ui/README.md new file mode 100644 index 000000000..d8aeb2d24 --- /dev/null +++ b/apps/nginx-ui/README.md @@ -0,0 +1,33 @@ +# Nginx UI + +Nginx 网络管理界面 + +![Nginx UI](https://file.lifebus.top/imgs/kimai_cover.png) + +Kimai 是一个基于网络的多用户时间追踪应用。对每个人都很棒:自由职业者、公司、组织 - 每个人都可以追踪时间、生成报告、创建发票并做更多事情。 + +![](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) + +## 简介 + +Nginx UI 是一个全新的 Nginx 网络管理界面,旨在简化 Nginx 服务器的管理和配置。它提供实时服务器统计数据、ChatGPT +助手、一键部署、Let's Encrypt 证书的自动续签以及用户友好的网站配置编辑工具。此外,Nginx UI 还提供了在线访问 Nginx +日志、配置文件的自动测试和重载、网络终端、深色模式和自适应网页设计等功能。Nginx UI 采用 Go 和 Vue 构建,确保在管理 Nginx +服务器时提供无缝高效的体验。 + +## 特性 + ++ 在线查看服务器 CPU、内存、系统负载、磁盘使用率等指标 ++ 在线 ChatGPT 助理 ++ 一键申请和自动续签 Let's encrypt 证书 ++ 在线编辑 Nginx 配置文件,编辑器支持 Nginx 配置语法高亮 ++ 在线查看 Nginx 日志 ++ 使用 Go 和 Vue 开发,发行版本为单个可执行的二进制文件 ++ 保存配置后自动测试配置文件并重载 Nginx ++ 基于网页浏览器的高级命令行终端 ++ 支持深色模式 ++ 自适应网页设计 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/nginx-ui/data.yml b/apps/nginx-ui/data.yml new file mode 100644 index 000000000..444823333 --- /dev/null +++ b/apps/nginx-ui/data.yml @@ -0,0 +1,15 @@ +additionalProperties: + key: nginx-ui + name: Nginx UI + tags: + - WebSite + - Middleware + - Local + shortDescZh: 全新的 Nginx 网络管理界面,旨在简化 Nginx 服务器的管理和配置 + shortDescEn: A new Nginx network management interface designed to simplify the management and configuration of Nginx servers + type: website + crossVersionUpdate: true + limit: 0 + website: https://nginxui.com/ + github: https://github.com/0xJacky/nginx-ui/ + document: https://nginxui.com/zh_CN/guide/about.html diff --git a/apps/nginx-ui/logo.png b/apps/nginx-ui/logo.png new file mode 100644 index 000000000..3a0a8436c Binary files /dev/null and b/apps/nginx-ui/logo.png differ diff --git a/script/update_app_config.ps1 b/script/update_app_config.ps1 index c2dc8927c..0a140d142 100644 --- a/script/update_app_config.ps1 +++ b/script/update_app_config.ps1 @@ -1,28 +1,28 @@ -$appsDir = "C:\Users\ms\Documents\JetBrains\IdeaProjects\appstore\apps" -# 遍历 apps 目录中的每个子目录 -Get-ChildItem -Path $appsDir -Directory | ForEach-Object { - $appDir = $_.FullName - $dataFile = Join-Path $appDir "data.yml" - - # 检查 data.yml 文件是否存在 - if (Test-Path $dataFile) { - # 读取文件内容,指定编码为 UTF-8 - $lines = Get-Content $dataFile -Encoding UTF8 - - # 查找 "additionalProperties:" 行的索引 - $index = $lines.IndexOf("additionalProperties:") - - if ($index -ne -1) { - # 只保留从 "additionalProperties:" 行开始的内容 - $newContent = $lines[$index..($lines.Length - 1)] - - # 将新的内容写回到文件中,指定编码为 UTF-8 - Set-Content -Path $dataFile -Value $newContent -Encoding UTF8 - Write-Host "处理完成: $dataFile" - } else { - Write-Host "未找到 'additionalProperties:' 行: $dataFile" - } - } else { - Write-Host "文件不存在: $dataFile" - } +$appsDir = "C:\Users\ms\Documents\JetBrains\IdeaProjects\appstore\apps" +# 遍历 apps 目录中的每个子目录 +Get-ChildItem -Path $appsDir -Directory | ForEach-Object { + $appDir = $_.FullName + $dataFile = Join-Path $appDir "data.yml" + + # 检查 data.yml 文件是否存在 + if (Test-Path $dataFile) { + # 读取文件内容,指定编码为 UTF-8 + $lines = Get-Content $dataFile -Encoding UTF8 + + # 查找 "additionalProperties:" 行的索引 + $index = $lines.IndexOf("additionalProperties:") + + if ($index -ne -1) { + # 只保留从 "additionalProperties:" 行开始的内容 + $newContent = $lines[$index..($lines.Length - 1)] + + # 将新的内容写回到文件中,指定编码为 UTF-8 + Set-Content -Path $dataFile -Value $newContent -Encoding UTF8 + Write-Host "处理完成: $dataFile" + } else { + Write-Host "未找到 'additionalProperties:' 行: $dataFile" + } + } else { + Write-Host "文件不存在: $dataFile" + } } \ No newline at end of file