Skip to content

OpsNav 运维导航平台

标签
开源项目/运维/导航系统
字数
3107 字
阅读时间
13 分钟

项目名称:OpsNav

核心定位:统一运维门户

📌 一句话介绍

OpsNav 是一款基于 Go + Vue 3 构建的、隐私优先、高颜值的企业级统一运维门户导航平台,旨在为运维与研发团队提供一个清爽、高速、集中的导航中心。

🎯 为什么需要 OpsNav?

在复杂的企业 IT 环境中,运维和研发人员通常面临以下痛点:

  • 入口分散:各种监控、日志、代码、发布系统入口各异,查找效率低下。
  • 管理混乱:传统书签无法共享,新员工入职需要耗费大量时间熟悉系统分布。
  • 视觉枯燥:大多数运维平台界面生硬,缺乏现代感,长期使用易产生视觉疲劳。
  • 权限难管控:无法针对不同职能角色精细化展示其所需的系统入口。

OpsNav 不是简单的网址收藏夹,它是企业运维体系的“第一入口”,通过 毛玻璃拟态 设计和 RBAC 权限体系,让查找平台变得前所未有的简单与优雅。

开源仓库

🌐 演示站点https://opsnav.hayden.pub (账号: admin / 密码: admin123)

🗺️ 功能全景图

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 及耗时。
  • 扁平化展示:专属审计透视图,大屏模式下支持单行紧凑排版。
  • 物理日志切割:基于时间维度的自动切割(按天/按月)与归档清理。

🛠️ 技术架构与版本依赖

本项目采用标准的前后端分离全栈架构,核心依赖项及建议版本如下:

服务端

组件/框架建议版本说明/用途
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官方路由管理器

🚀 快速起步 (部署方案)

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

💡 模式切换

后端支持通过 APP_ENV 环境变量选择配置文件(对应 configs/config-{APP_ENV}.toml)。

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

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

1. 准备工作

  • 安装 Go 1.24+Node.js 18+
  • 准备 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. 登录系统

🔵 模式 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

🔴 模式 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),建议通过“系统管理”完成基础配置。

⚙️ 系统初始化

启动成功后,浏览器访问:http://localhost (模式 B/C) 或 http://localhost:3000 (模式 A)。

🔐 默认超级管理员账号

  • 用户名: admin
  • 密 码: admin123

🖼️ 系统预览

1. 核心视觉与主题

注入毛玻璃拟态设计,内置三套精心调配的高级感主题,支持一键无感切换。

登录页面导航首页我的收藏
登录页面导航首页我的收藏
云岚蓝主题青屿绿主题深海夜主题
云岚蓝主题青屿绿主题深海夜主题

2. 导航管理与申请流

支持批量导入与灵活的分组管理,内置完整的申请-审批工作流。

导航列表批量添加导航导航申请列表
导航列表批量添加导航导航申请列表
管理员通过申请管理员驳回申请
管理员通过申请管理员驳回申请

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

RBAC 权限控制、账户全生命周期管理及 LDAP/AD 深度集成。

用户管理角色管理菜单管理LDAP 配置
用户管理角色管理菜单管理LDAP配置

4. 通知中心与安全审计

完美适配主流办公软件机器人,详细记录每一笔操作记录。

通用通知配置钉钉通知飞书通知企业微信通知
通知配置钉钉通知飞书通知企业微信通知
操作历史审计
操作历史

🤝 贡献指南

  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

📄 开源协议

本项目基于 MIT 无排他性开源协议,无论个人学习还是内外部企业商用,均可自由使用。

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