轻量级团队内部网址导航系统,基于 Go + SQLite + Vue 3 架构,主打“开箱即用”与“极简运维”。
部署时只需运行一个二进制文件即可启动完整服务,前端静态资源已通过 go:embed 嵌入二进制中。
- 单文件部署:Go 二进制内嵌前端静态资源,无需 Nginx
- 树状导航:按分类聚合展示,支持分类锚点平滑滚动
- 实时搜索:支持按系统名称、URL、描述搜索(快捷键
Ctrl + K) - 健康探活:后台定时探测各系统在线状态,卡片显示绿点/红点
- 暗黑模式:一键切换浅色/深色主题
- 管理后台:弹窗式分类与导航条目管理,支持 JSON 导入导出
- 轻量鉴权:通过
X-Admin-TokenHeader 进行简易管理员鉴权
| 层级 | 技术 |
|---|---|
| 后端 | Go 1.22 + Gin + GORM + SQLite |
| 前端 | Vue 3 + Vite + Tailwind CSS |
| 部署 | go:embed 静态资源嵌入 |
git clone <repo-url>
cd internal-navigationmake build./internal-navigation默认监听 http://localhost:8080。
在 macOS 或 Windows 开发环境下,编译可在 Linux 服务器运行的二进制:
make build-linux-simple生成的 internal-navigation-linux-amd64 可直接在 Linux x86_64 服务器运行。
# macOS 安装交叉编译工具链
brew install FiloSottile/musl-cross/musl-cross
make build-linuxsudo mkdir -p /var/lib/internal-navigation
sudo cp internal-navigation-linux-amd64 /usr/local/bin/internal-navigation
sudo chmod +x /usr/local/bin/internal-navigationsudo sed -i 's/changeme/YOUR_SECURE_TOKEN/g' /etc/systemd/system/internal-navigation.service或直接编辑
internal-navigation.service文件中的ADMIN_TOKEN。
sudo cp internal-navigation.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable internal-navigation
sudo systemctl start internal-navigationsudo systemctl status internal-navigation
sudo journalctl -u internal-navigation -f通过环境变量配置:
| 变量 | 默认值 | 说明 |
|---|---|---|
PORT |
8080 |
服务监听端口 |
ADMIN_TOKEN |
admin123 |
管理后台鉴权 Token |
DB_PATH |
nav.db |
SQLite 数据库文件路径 |
示例:
PORT=80 ADMIN_TOKEN=mytoken ./internal-navigation| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/navs |
获取分类导航树(含在线状态) |
| GET | /api/v1/categories |
获取分类列表 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/v1/admin/categories |
创建分类 |
| PUT | /api/v1/admin/categories/:id |
更新分类 |
| DELETE | /api/v1/admin/categories/:id |
删除分类 |
| POST | /api/v1/admin/navs |
创建导航 |
| PUT | /api/v1/admin/navs/:id |
更新导航 |
| DELETE | /api/v1/admin/navs/:id |
删除导航 |
| GET | /api/v1/admin/export |
导出 JSON |
| POST | /api/v1/admin/import |
导入 JSON |
{
"categories": [
{ "id": 1, "name": "基础架构", "sort_order": 0 }
],
"navigations": [
{ "id": 1, "category_id": 1, "title": "Prometheus", "url": "http://10.0.0.20:9090", "icon": "📈", "description": "监控系统", "sort_order": 0 }
]
}internal-navigation/
├── main.go # 程序入口
├── Makefile # 构建脚本
├── internal-navigation.service # systemd 服务文件
├── backend/
│ ├── config/ # 配置管理
│ ├── handler/ # HTTP 处理器
│ ├── model/ # 数据模型
│ └── repository/ # 数据访问层
├── frontend/
│ ├── src/ # Vue 3 源码
│ ├── index.html
│ ├── package.json
│ └── vite.config.js
└── dist/ # 前端构建产物(被 Go embed 嵌入)
MIT