ToNav-go
🧭 内部服务导航系统 — Go 版本
基于 Go + Gin + GORM + SQLite 构建的轻量级服务导航页,用于管理和展示内部服务链接。
功能特性
前台导航
- 🔍 实时搜索 — 输入即过滤,匹配服务名称、描述、标签
- 📑 分类 Tab 切换 — 一键过滤不同分类的服务
- 🟢 健康状态指示 — 绿色在线 / 红色离线 / 灰色未检测
- 📱 响应式设计 — 完美适配手机端
- 🎨 深色 Header + 白色卡片 — 现代化 UI 风格
后台管理
- 📡 服务管理 — 新增/编辑/删除服务(名称、URL、图标、分类、描述、标签、排序、健康检查配置)
- 📂 分类管理 — 新增/编辑/删除分类,支持排序权重
- ⚙️ 系统设置 — 站点标题、WebDAV 配置、自动备份开关
- 🔐 登录认证 — bcrypt 密码加密,首次登录强制修改密码
- 📊 Dashboard — 服务总数、分类数、在线/离线统计
健康检查
- ⏱️ 定时检测 — 每 5 分钟自动检测所有启用健康检查的服务
- 🎯 独立检查 URL — 可为每个服务配置专用健康检查地址
- 🔘 三态指示 — 开启检测 + 成功 = 绿色 / 开启检测 + 失败 = 红色 / 未开启 = 灰色
云端备份(WebDAV)
- ☁️ 手动备份 — 一键备份数据库到 WebDAV 云端
- 🔄 恢复备份 — 从云端备份列表选择恢复,恢复前自动备份当前数据
- 🗑️ 删除备份 — 清理云端旧备份(需 WebDAV 服务端开放 DELETE 权限)
- ⏰ 定时自动备份 — 可配置每天凌晨 3:00 自动执行
- 📁 本地备份管理 — 自动保留最近 5 份本地备份
技术栈
| 组件 |
技术 |
| 语言 |
Go 1.24+ |
| Web 框架 |
Gin |
| ORM |
GORM |
| 数据库 |
SQLite |
| 认证 |
bcrypt + Cookie Session |
| 前端 |
原生 HTML/CSS/JS |
| 备份 |
WebDAV 协议 |
项目结构
快速开始
环境要求
- Go 1.24+
- GCC(CGO 编译 SQLite 需要)
编译运行
使用管理脚本
环境变量配置
| 变量 |
默认值 |
说明 |
TONAV_PORT |
9520 |
监听端口 |
TONAV_DB |
tonav.db |
数据库文件路径 |
TONAV_SECRET |
内置密钥 |
Cookie 签名密钥 |
默认账号
- 用户名:
admin
- 密码:
admin123
- 首次登录会强制修改密码
API 接口
公开接口
| 方法 |
路径 |
说明 |
| GET |
/ |
前台导航页 |
| GET |
/admin/login |
登录页 |
| POST |
/admin/login |
登录 |
管理接口(需登录)
| 方法 |
路径 |
说明 |
| GET |
/admin/dashboard |
后台首页 |
| GET |
/admin/api/services |
获取所有服务 |
| POST |
/admin/api/services |
新增服务 |
| PUT |
/admin/api/services/:id |
更新服务 |
| DELETE |
/admin/api/services/:id |
删除服务 |
| GET |
/admin/api/categories |
获取所有分类 |
| POST |
/admin/api/categories |
新增分类 |
| PUT |
/admin/api/categories/:id |
更新分类 |
| DELETE |
/admin/api/categories/:id |
删除分类 |
| GET |
/admin/api/settings |
获取设置 |
| POST |
/admin/api/settings |
保存设置 |
| POST |
/admin/api/backup/webdav |
执行云端备份 |
| GET |
/admin/api/backup/list |
列出云端备份 |
| DELETE |
/admin/api/backup/delete?name=xxx |
删除云端备份 |
| POST |
/admin/api/backup/restore?name=xxx |
恢复云端备份 |
数据模型
Service 服务
| 字段 |
类型 |
说明 |
| name |
string |
服务名称 |
| url |
string |
服务地址 |
| icon |
string |
图标(emoji) |
| description |
string |
描述 |
| category_id |
uint |
所属分类 ID |
| tags |
string |
标签(逗号分隔) |
| status |
string |
状态(online/offline/unknown) |
| is_enabled |
bool |
是否启用 |
| sort_order |
int |
排序权重(越大越靠前) |
| health_check_url |
string |
健康检查 URL |
| health_check_enabled |
bool |
是否启用健康检查 |
| click_count |
int |
点击次数 |
Category 分类
| 字段 |
类型 |
说明 |
| name |
string |
分类名称 |
| sort_order |
int |
排序权重(越大越靠前) |
License
MIT