跳到正文

OpsNav 运维导航 ​

标签
开源项目/运维/导航系统
字数
2337 字
阅读时间
9 分钟
最后更新于
2026年9月15日

📖 一、项目简介 ​

📌 一句话介绍

OpsNav 是一款基于 Go + Vue 3 构建的企业运维导航门户平台。抛弃了传统枯燥的纯净色调,加入了现代感十足的毛玻璃拟态 UI 设计,并内置护眼双模式及高级质感的定制主题,致力于为运维与研发团队提供一个清爽、高速、集中的导航中心。

开源仓库:

平台地址
GitHubhttps://github.com/ghl1024/OpsNav
Giteehttps://gitee.com/ghl1024/OpsNav
CNBhttps://cnb.cool/ghl1024/OpsNav
GitCodehttps://gitcode.com/haydenguo/OpsNav
博客https://hayden.pub

🛠️ 二、技术架构 ​

本项目采用标准的前后端分离全栈架构,运行时主链路为 用户浏览器 → Nginx + Vue 3 SPA → Gin API Server → MySQL 8.3。后端在同一进程内承载 JWT/RBAC 权限校验、审计日志、LDAP/AD 登录与定时同步,以及飞书/钉钉/企业微信 Webhook 通知分发。

运行时架构

服务端 ​

组件/框架建议版本说明/用途
Golangv1.25+强劲的高性能底层支撑
Ginv1.12Web 服务框架,负责快速路由映射
Gormv1.31ORM 框架,处理数据实体转化与自动建表
Golang-JWTv5.3鉴权模块,结合中间件构建安全签发
robfig/cronv3.0定时任务调度,驱动动态任务引擎
go-ldap/ldapv3.4LDAP/AD 协议通信,支撑企业目录集成

WEB端 ​

组件/库建议版本说明/用途
Vuev3.5.24渐进式 JavaScript 框架
Vitev6.3.0下一代前端构建工具
Element-Plusv2.13.0UI 组件库,深度定制毛玻璃质感主题
Piniav3.0.4轻量化状态管理工具
Vue-Routerv4.6.4官方路由管理器

🗺️ 三、功能模块 ​

1. 极速导航门户 ​

  • ✅ 动态分类筛选:支持根据分组实时切换,响应极速。
  • ✅ 全局模糊搜索:基于名称、域名、标签及描述的秒级检索。
  • ✅ 个人收藏系统:一键收藏常用站点,支持专属的金边发光视觉标识。
  • ✅ 地址查重机制:内置 URL 唯一性驱动,杜绝重复申请与冗余收录。
  • ✅ 卡片交互动效:超轻量级 hover 浮动与色彩高亮反馈。

2. 视觉与主题系统 ​

  • ✅ 高辨识度三系主题:
    • 云岚蓝:清新电光感,适合日间高强度办公。
    • 青屿绿:森林日光感,主打视觉护眼与呼吸感。
    • 深海夜:极地紫质感,适配暗黑开发环境。
  • ✅ 极光背景引擎:全屏 A/B 双色调液态流体动效,大跨度全屏巡航。
  • ✅ 毛玻璃视觉:全站采用 backdrop-filter 柔和渲染,层次分明。
  • ✅ 大屏宽屏适配:内容区块自适应 100% 宽度,完美兼容 2K/4K 生产力显示器。

3. 企业级 LDAP/AD 集成 ​

  • ✅ 全自动开户同步:域账号首次登录即触发现场开户与角色分配。
  • ✅ 分页同步支持:内建 Paged Results 支持,轻松承载过万组织架构。
  • ✅ 配置自愈能力:对常见 LDAP 属性自动补全与协议兼容,降低部署门槛。
  • ✅ 调度控制中心:支持在 UI 界面实时修改 Cron 同步周期,无需重启服务。

4. 智能通知引擎 ​

  • ✅ 多渠道通知:原生支持飞书、钉钉、企业微信机器人。
  • ✅ 交互式消息卡片:飞书 Card / 钉钉 Markdown 渲染,包含申请详情与操作人。
  • ✅ 一键跳转审批:通知消息内嵌前端直达链接,实现即收即批的极速流程。
  • ✅ 地址查重拦截:重复申请在提交瞬间即刻拦截并精准吐回冲突原因。

5. 用户与权限管理 (RBAC) ​

  • ✅ 多层级权限拦截:支持到菜单级、按钮级的粒度控制。
  • ✅ 账户源追踪:清晰标记 Local 或 LDAP 来源,支持行内开关控制账号状态。
  • ✅ 批量账户管理:支持职能角色的快速分配与回收。

6. 安全与审计中心 ​

  • ✅ 全景审计日志:记录 Operator、Method、Path、IP 及耗时。
  • ✅ 扁平化展示:专属审计透视图,大屏模式下支持单行紧凑排版。
  • ✅ 物理日志切割:基于时间维度的自动切割(按天/按月)与归档清理。

7. 用户建议与反馈中心 ​

  • ✅ 一键发声通道:任意用户均可随时提交功能期望、优化建议或系统 BUG 反馈。
  • ✅ 分类与追踪:支持工单式状态跟踪,协助管理员快速定位问题并推进解决优化。
  • ✅ 闭环服务体验:打造用户与开发者间的直接互动桥梁,持续赋能平台迭代升级。

🖼️ 四、系统截图 ​

1. 核心视觉与主题 ​

登录、导航浏览、个人收藏及显示偏好。

登录页面导航首页我的收藏
登录页面导航首页我的收藏
主题切换卡片展示设置
主题切换卡片展示设置

2. 导航管理与申请流 ​

从导航管理到申请审批。

导航列表新增导航导航审批
导航列表新增导航导航审批

3. 系统管理与企业级集成 ​

用户、角色、菜单、全局配置及 LDAP/AD 用户同步。

用户列表新增用户角色列表
用户列表新增用户角色列表
新增角色菜单管理新增菜单
新增角色菜单管理新增菜单
全局配置LDAP 配置
全局配置LDAP配置
LDAP 用户同步LDAP 同步完成
LDAP用户同步LDAP同步完成

4. 通知中心与安全审计 ​

通知渠道配置与操作历史。

通知配置新增通知配置钉钉通知
通知配置新增通知配置钉钉通知
飞书通知企微通知操作历史
飞书通知企微通知操作历史

5. 用户反馈 ​

反馈列表提交反馈
反馈列表提交反馈

🚀 五、部署方案 ​

根据您的使用场景,选择以下三种模式之一进行部署。


🟢 模式 A:本地源码拉取启动 (适合开发/调试) ​

如果您需要修改源码并预览效果,请按此步骤执行:

1. 准备工作 ​

  • 安装 Go 1.25+ 和 Node.js 20.19+(或 22.12+)。
  • 准备 MySQL 8.0+ 数据库,执行 backend/migrations/init.sql 进行初始化。

2. 启动后端 (Go) ​

bash
# 安装依赖
cd backend
go mod tidy

# 启动开发环境,使用配置文件为 configs/config-dev.toml
go run cmd/server/main.go --env=dev

# 启动生产环境,使用配置文件为 configs/config-prod.toml
go run cmd/server/main.go --env=prod

3. 启动前端 (Vue) ​

bash
# 安装依赖
cd frontend
npm install

# 启动开发环境,默认访问 http://localhost:3000
npm run dev

# 启动线上环境,结合Nginx将打包后的dist目录放到对应的位置
npm run build:prod

4. 登录系统 ​

  • 访问:http://localhost:3000
  • 用户名密码:admin/admin123

已有数据库升级时,如果后端启动日志提示存在重复导航地址,请先备份数据库,再执行 backend/migrations/20260903_navigation_active_url.sql 完成去重和唯一约束升级。


🔵 模式 B:Docker-Compose 一键启动 (在你本地编译) ​

  • 适合在本地环境通过容器化方式完整拉起整个项目。
  • 使用的配置文件为 configs/config-docker.toml
  • 使用的docker-compose文件为 docker-compose.yml
bash
# 在项目根目录执行
cd OpsNav
docker-compose up -d --build

# 删除服务
docker-compose down -v

说明:此命令会根据本地 Dockerfile 现场编译前端和后端镜像,耗时取决于您的网络与机器性能。后端会自动处理数据库初始化。


🟣 模式 C:Docker-Compose 一键快速启动 (使用官方镜像) ​

  • 适合生产部署或快速拉起。镜像通过 CI/CD 自动构建并推送至阿里云 ACR,无需本地编译。
  • 使用的配置文件为 configs/config-docker.toml
  • 使用的docker-compose文件为 docker-compose.image.yml
bash
# 使用预编译镜像启动
cd OpsNav
docker-compose -f docker-compose.image.yml up -d

# 删除服务
docker-compose -f docker-compose.image.yml down -v
bash
# 使用生产配置启动
APP_ENV=prod docker-compose -f docker-compose.image.yml up -d

🔴 模式 D:极速体验模式 (无需拉取源码) ​

  • 推荐方案:适合临时体验或快速预览。无需 git clone 任何代码,直接使用预编译镜像启动。
  • 前提条件:本地已安装 Docker。

方案 1:使用 Docker-Compose (推荐) ​

通过远程拉取配置文件,一键拉起全套服务(含 MySQL)。

bash
# 1. 下载远程部署配置文件
curl -L https://raw.githubusercontent.com/ghl1024/OpsNav/main/docker-compose.image.yml -o docker-compose.yml

# 2. 一键启动
docker-compose up -d

# 3. 停止并删除服务 (可选)
docker-compose down -v

方案 2:纯 Docker 命令启动 ​

如果您不想使用 Docker-Compose,也可以通过纯 Docker 命令手动拉起(需先创建网络):

bash
# 1. 创建专用网络
docker network create opsnav-net

# 2. 启动 MySQL
docker run -d --name opsnav-mysql \
  --network opsnav-net \
  -e MYSQL_ROOT_PASSWORD=opsnav_password \
  -e MYSQL_DATABASE=opsnav \
  -e MYSQL_USER=opsnav \
  -e MYSQL_PASSWORD=opsnav_password \
  registry.cn-beijing.aliyuncs.com/guohailiang/mysql:8.3.0

# 3. 启动后端 (连接到 mysql 容器)
docker run -d --name opsnav-backend \
  --network opsnav-net \
  -p 8080:8080 \
  -e DB_HOST=opsnav-mysql \
  -e DB_USER=opsnav \
  -e DB_PASSWORD=opsnav_password \
  registry.cn-beijing.aliyuncs.com/guohailiang/opsnav-backend:latest

# 4. 启动前端
docker run -d --name opsnav-frontend \
  --network opsnav-net \
  -p 80:80 \
  registry.cn-beijing.aliyuncs.com/guohailiang/opsnav-frontend:latest

# 停止并删除容器 (可选)
docker rm -f opsnav-backend opsnav-frontend opsnav-mysql
docker network rm opsnav-net

提示:由于该模式下没有本地 init.sql 环境,MySQL 启动后会自动创建空表。首次进入系统(admin/admin123),建议通过“系统管理”完成基础配置。


⚙️ 六、系统登录 ​

模式 B/C 启动成功后,浏览器访问:http://localhost 模式 A 启动成功后,浏览器访问:http://localhost:3000默认账号

  • 超级管理员: admin / admin123
  • 运维管理员: ops / ops456
  • 普通用户: user / user789

🌐 七、演示站点 ​

  • 登录地址 https://opsnav.hayden.pub
  • 超级管理员: admin / admin123
  • 运维管理员: ops / ops456
  • 普通用户: user / user789

🤝 八、贡献指南 ​

  1. Fork 本仓库并 Clone 到您的本地环境。
  2. 建立您自己的特性分支: git checkout -b feature/AmazingFeature。
  3. 提交代码: git commit -m 'Add some AmazingFeature'。
  4. 推送分支: git push origin feature/AmazingFeature。
  5. 开启一次 Pull Request 供审查。如果您觉得本项目有帮助,别忘了点个 Star ⭐️ 支持作者 ghl1024!

📄 九、开源协议 ​

本项目基于 Apache 2.0 开源协议,在使用和分发时需保留相关的版权声明和许可通知。

🌴 春风若有怜花意,可否许我再少年。🍅