
后端前端运维MCP 服务【免费下载链接】nginx-uiYet another WebUI for Nginx项目地址https://gitcode.com/gh_mirrors/ngi/nginx-ui点击查看免费下载本文介绍如何在 Unraid 系统中通过官方 Community Applications 模板安装 Nginx UI。文章围绕官方 Unraid 模板的两种使用方式展开一种是管理内置 Nginx 实例的Standalone 模板另一种是作为 LinuxServer SWAG 容器控制器的SWAG 模板并深入讲解安装密钥install secret、路径映射、环境变量与 Docker socket 安全等关键细节。读完本文你将掌握在 Unraid 上选择、配置并安全使用 Nginx UI 的完整流程。官方模板来源与提交机制Nginx UI 的官方 Community Applications 模板源码位于仓库的packaging/unraid/repository目录其结构如下templates/nginx-ui.xmlStandalone独立模板templates/nginx-ui-swag.xmlSWAG 控制器模板tests/validate.sh模板合法性校验脚本ca_profile.xml、icon.svg、README.md、LICENSECommunity Applications 提交所需的配套文件。这些模板发布到nginxui/unraid公共仓库后需要通过 Unraid Community Applications 的Validate与Scan两道提交检查才会在 Community Applications 中可搜索到。模板仓库内置了一个基于xmllint的校验脚本packaging/unraid/repository/tests/validate.sh它会在提交前完成以下硬性检查两个模板均为Container version2镜像仓库必须是uozi/nginx-ui:latest且Privileged必须为false模板中不得出现PUID、PGID配置项或YOUR_占位符见该脚本第 54-57 行的 grep 检查Standalone 模板必须设置NGINX_UI_IGNORE_DOCKER_SOCKETtrue且不得挂载/var/run/docker.sockSWAG 模板必须设置NGINX_UI_DISABLE_BUNDLED_NGINXtrue、NGINX_UI_NGINX_CONTAINER_NAMEswag挂载/config与/var/run/docker.sock。你可以用bash tests/validate.sh在本地复现这套校验。Standalone 模板管理内置 Nginx 实例当希望 Nginx UI 直接运行并管理其内置的 Nginx 实例时在 Community Applications 中选择Nginx UI模板即可。该模板对应的 XML 定义见packaging/unraid/repository/templates/nginx-ui.xml。默认宿主机路径模板默认的路径映射如下Host path宿主机路径Container path容器路径/mnt/user/appdata/nginx-ui/etc/nginx-ui/mnt/user/appdata/nginx-ui/nginx/etc/nginx/mnt/user/appdata/nginx-ui/www/var/www三者分工明确/etc/nginx-ui保存 Nginx UI 的数据库、设置与启动密钥/etc/nginx保存内置 Nginx 实例的配置首次启动由resources/docker/init-config.sh从/usr/local/etc/nginx模板目录灌入初始配置/var/www静态网站内容根目录供 Nginx UI 管理站点时写入。端口与首次访问安装完成后打开http://unraid-address:8080即可进入 WebUI。模板中WebUI HTTP port配置项将容器内80端口映射到宿主机8080默认值HTTPS port则将容器内443映射到8443由内置 Nginx 实例提供 HTTPS。此外模板还提供了一个Timezone配置项默认Etc/UTC例如可改为Europe/Berlin对应容器环境变量TZ。首次启动密钥install secret首次访问时安装页面要求输入一次性安装密钥。该密钥的默认位置是/mnt/user/appdata/nginx-ui/.install_secret即NGINX_UI appdata宿主目录下的隐藏文件。它由 Nginx UI 后端在启动阶段生成相关实现位于internal/system/install_secret.go密钥为 32 字节加密随机数经 hex 编码生成generateInstallSecret写入文件时权限设为0600writeInstallSecret并且仅在容器启动后 10 分钟内有效InstallWindow 10 * time.Minute超时后会被自动清理IsInstallTimeoutExceeded调用CleanupInstallSecret安装请求通过请求头X-Install-Secret或查询参数install_secret携带密钥由internal/middleware/install_secret.go中的SetupAuthRequired中间件进行常量时间比较校验安装成功后api/system/install.go中的InstallNginxUI会调用ConsumeInstallSecret()删除该密钥文件。也就是说.install_secret是一把一次性钥匙安装完成后即被销毁无法再次使用。如果在 10 分钟窗口内没有完成安装需要重启容器重新生成。为什么 Standalone 模板不挂载 Docker socketUnraid 负责管理容器镜像的更新因此该模板不挂载 Docker socket并通过高级配置项Disable container self-update环境变量NGINX_UI_IGNORE_DOCKER_SOCKETtrue禁用 Nginx UI 依赖 socket 的自动更新器。从源码看internal/helper/docker.go中NGINX_UI_IGNORE_DOCKER_SOCKET正是用于关闭依赖 Docker socket 的功能开关internal/self_check/tasks.go的自检任务也提示如果不希望容器通过/var/run/docker.sock与宿主机 Docker Engine 通信该能力用于控制其他容器中的 Nginx以及在 OTA 升级时以容器替换而非二进制替换方式升级 Nginx UI就应设置该环境变量。SWAG 控制器模板管理已有的 LinuxServer SWAG 容器当 Unraid 上已有一个 LinuxServerSWAG容器在运行 Nginx希望由 Nginx UI 来管理它时选择Nginx UI (SWAG)模板。该模板对应的 XML 定义见packaging/unraid/repository/templates/nginx-ui-swag.xml。与 Standalone 模板的关键差异是SWAG 模板会禁用内置 NginxNGINX_UI_DISABLE_BUNDLED_NGINXtrue参见resources/docker/nginx.run与resources/docker/init-config.sh中的早期退出逻辑并将 Nginx UI 后端直接暴露在宿主机端口9000。安装前需要确认的三个要点SWAG container name设置为 SWAG 容器的精确 Docker 容器名默认swag。该值通过环境变量NGINX_UI_NGINX_CONTAINER_NAME传递给 Nginx UI用于定位目标容器。SWAG appdata必须与 SWAG 容器使用的宿主机路径一致默认/mnt/user/appdata/swag挂载到 Nginx UI 容器的/config。共享目标路径必须为/config两个容器必须把同一宿主机目录挂载到相同的/config路径。Nginx UI 会写入/config/nginx、读取/config/log/nginx如果 SWAG 侧路径不一致Nginx UI 将无法看到配置与日志文件。SWAG 模板的完整环境变量清单SWAG 模板通过以下环境变量精确描述 SWAG 的布局均可在模板的高级配置项中调整环境变量默认值作用NGINX_UI_DISABLE_BUNDLED_NGINXtrue禁用内置 NginxNginx UI 仅作为控制器运行NGINX_UI_NGINX_CONTAINER_NAMEswagSWAG 容器的精确名称NGINX_UI_NGINX_CONFIG_DIR/config/nginxSWAG 的 Nginx 配置目录共享挂载内NGINX_UI_NGINX_CONFIG_PATH/config/nginx/nginx.confSWAG 的主 Nginx 配置文件共享挂载内NGINX_UI_NGINX_ACCESS_LOG_PATH/config/log/nginx/access.logSWAG 的访问日志路径NGINX_UI_NGINX_ERROR_LOG_PATH/config/log/nginx/error.logSWAG 的错误日志路径NGINX_UI_NGINX_LOG_DIR_WHITE_LIST/config/log/nginx允许 Nginx UI 读取做日志分析的目录这些变量与docs/guide/env.md中 Nginx 配置段的映射一致如AccessLogPath↔NGINX_UI_NGINX_ACCESS_LOG_PATH、ConfigDir↔NGINX_UI_NGINX_CONFIG_DIR、ContainerName↔NGINX_UI_NGINX_CONTAINER_NAME说明这套机制并非 Unraid 模板私有而是 Nginx UI 官方向导容器通用的配置方式。Docker socket能力与风险并存SWAG 模板会挂载/var/run/docker.sockNginx UI 借此对 SWAG 容器执行nginx -t测试、reload 与 restart。这是本模板正常工作所必需的——因为它无法直接操作 SWAG 容器内的进程只能通过 Docker API 间接控制。但必须清醒认识到Docker socket 访问等同于宿主机 root 权限。拥有该 socket 控制权的人可以创建特权容器进而完全控制 Unraid 主机。因此官方文档给出明确的安全建议严格限制 Nginx UI 的访问权限例如仅在内网可达使用强壮的安装密钥绝不要把9000端口直接暴露到公网。从模板 XML 看Docker socket配置项的 Description 也明确写着 Required to test, reload, and restart Nginx in SWAG. Grants root-equivalent host control.模板的Requires字段同样强调了这一点。关于 PUID 与 PGID 的重要澄清LinuxServer 生态的容器通常通过PUID/PGID环境变量指定容器内运行用户的 UID/GID。但官方 Nginx UI 镜像不是 LinuxServer 镜像不消费PUID或PGID。因此官方 Unraid 模板刻意省略了这两个变量并且tests/validate.sh会在校验阶段强制检查这一点脚本第 37-38 行断言模板中不存在Config[TargetPUID]与Config[TargetPGID]配置项第 54-57 行还会对整个模板目录执行 grep一旦出现PUID/PGID字样即判定校验失败。给这两个变量添加任何值都不会改变容器内运行用户更不是解决 SWAG 的 Nginx 配置读写权限问题的办法。如果遇到 SWAG 场景下的权限问题应从共享挂载/config的属主与权限入手排查而不是依赖 PUID/PGID。安装后的验证与常见检查密钥获取若遗忘了安装密钥位置可在宿主机执行cat /mnt/user/appdata/nginx-ui/.install_secret同时 Nginx UI 启动日志也会打印一次性密钥含 10 分钟有效期的提示。模板校验如需二次确认模板配置正确可安装xmllint后运行bash tests/validate.sh复现官方校验。内置 Nginx 初始化Standalone 场景下容器首次启动会在/etc/nginx为空时从模板目录灌入初始配置见resources/docker/init-config.sh升级时只会同步仍与官方默认值一致的受管文件用户自定义过的配置会被保留并在 UI 自检中提示。自检功能登录 WebUI 后可借助系统自检任务internal/self_check/tasks.go确认 Docker socket 挂载、内置 Nginx 状态等是否符合预期。总结需要 Nginx UI 自带并管理 Nginx → 选Nginx UIStandalone模板默认 WebUI 端口8080不挂载 Docker socket容器更新交给 Unraid已有 LinuxServer SWAG 容器、希望由 Nginx UI 管理它 → 选Nginx UI (SWAG)模板后端端口9000需要挂载 Docker socket 与共享/config务必遵守官方安全建议无论哪种模板都不要添加PUID/PGID——官方镜像不使用它们加了也不会生效。两种模板的完整配置定义可在仓库的packaging/unraid/repository/templates/目录中查看其配套校验逻辑见packaging/unraid/repository/tests/validate.sh安装密钥机制可进一步阅读internal/system/install_secret.go与internal/middleware/install_secret.go。赞分享后端前端运维MCP 服务【免费下载链接】nginx-uiYet another WebUI for Nginx项目地址https://gitcode.com/gh_mirrors/ngi/nginx-ui点击查看免费下载相关推荐Nginx UI 官方 Unraid Community Applications 模板详解独立部署与 SWAG 控制器两种模式Nginx UI 官方 Unraid Community Applications 模板详解独立部署与 SWAG 控制器两种模式 本文以 Nginx UI 项后端前端运维MCP 服务Kubespider在Unraid系统上的安装与配置指南Kubespider在Unraid系统上的安装与配置指南 前言 Kubespider是一款功能强大的资源下载管理工具能够统一管理多种下载器并提供便捷的资源获取roop 快速指南一张照片能把你带进视频换脸的哪个地步roop 快速指南一张照片能把你带进视频换脸的哪个地步 roop 是一个视频换脸工具给一张人脸照片和一段视频它会把视频里的人脸换成照片里的那张产出一后端前端运维MCP 服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考