中链导航
项目概述
中链导航是一个基于 Go 语言开发的现代化轻量级网址导航系统,专为个人和团队打造便捷的网址收藏与分享平台。项目采用单二进制可执行文件部署,嵌入所有静态资源与模板,无需额外的 Web 服务器或 PHP 运行环境,部署极其简单。
核心特性
截图
🎯 核心功能
- 多级分类管理:支持二级分类结构,灵活组织网址
- 多线路链接支持:每个链接可配置主地址、备用地址、手动选择备用线路
- 标签分组:支持密码保护的标签组,方便分享特定内容集合
- 公开收录申请:访客可提交网址申请,管理员后台审核后自动入库
- 一键抓取元信息:添加链接时自动抓取网页标题和描述,减少手动输入
- 点击统计:记录每个链接的访问次数,支持热门链接排行
- 私密模式:可配置全站隐私模式,未登录用户无法访问首页
🌐 内外网智能切换(特色功能)
- 服务器端IP检测:根据访问者IP自动判断内外网,内网用户经外网域名访问时自动302跳转到内网地址
- 客户端连通性探测:针对 Cloudflare 隧道等代理场景,前端通过 fetch 探测内网地址连通性,可达则自动切换到内网访问
- 支持Cloudflare隧道部署:完美解决隧道代理后真实IP被隐藏的问题
- 用户逃生舱:支持
?nojump=1参数跳过自动跳转并写入Cookie,30天内不再自动跳转
📊 数据库与备份
- SQLite 嵌入式数据库:单文件存储,无需额外数据库服务
- WAL 日志模式:保证读写性能与数据一致性
- 在线备份恢复:后台一键导出完整数据库快照(使用 VACUUM INTO 保证一致性),支持上传备份热恢复
- 自动回滚机制:恢复失败自动回滚到原数据库,保证服务可用性
🔒 安全特性
- 自定义后台路径:可自定义后台访问路径(2‑32位字符),避免被爬虫扫描
- 4位图形验证码:登录需要验证码,SVG 格式,防暴力破解,验证码一次性消费
- bcrypt 密码加密:密码存储使用 bcrypt 强哈希
- 会话令牌轮换:用户名/密码修改后自动轮换令牌,所有现有会话立即失效
- Cookie‑based Session:使用 Gin Session 中间件,HttpOnly 标志防 XSS
- 登录日志记录:记录每次登录尝试的IP、时间和结果
🎨 前端设计
- 前台(首页):使用 Tailwind CSS,现代 iOS 18 风格设计,磨砂玻璃卡片效果
- 后台管理:使用 Layui 框架,稳定成熟的组件库,iframe 布局
- 响应式设计:完美适配桌面端与移动端
- 自动favicon抓取:自动抓取网站图标并本地缓存,30天过期,失败时使用首字母渐变SVG兜底
- 过渡页跳转:支持倒计时跳转页面,显示蓝色倒计时圆环,现代设计风格
- 链接描述单行淡出:描述文字超长时尾部渐变淡出,不使用悬浮弹窗
🚀 性能优化
- 静态资源长缓存:
/static/*资源设置Cache‑Control: public, max‑age=604800(7天) - 内置 gzip 压缩:文本类型资源(js/css/svg/html/json)自动gzip压缩,二进制资源跳过
- 配置内存缓存:高频配置项(如后台路径)缓存到内存,减少 SQLite 查询
- Go 原生编译:单二进制文件,启动快,内存占用低
- 模板嵌入:所有模板和静态资源通过
go:embed嵌入二进制,部署无需拷贝文件
🐳 部署方式
- Docker 支持:提供官方 Dockerfile 和 docker‑compose.yml,支持 amd64/arm64 多架构
- 环境变量配置:端口、数据目录、Session密钥通过环境变量配置
- 非 root 用户运行:容器内使用固定 UID/GID=1000 运行,安全合规
- 健康检查:内置 Docker 健康检查,自动监控服务状态
- 数据卷挂载:数据库数据通过 Volume 持久化存储
技术架构
后端技术栈
- 语言:Go 1.25
- Web 框架:Gin 1.12
- 数据库:SQLite (modernc.org/sqlite 纯 Go 实现,无需 CGO)
- 会话管理:gin‑contrib/sessions (Cookie 存储)
- 密码加密:golang.org/x/crypto/bcrypt
- 依赖管理:Go Modules
前端技术栈
- 管理后台:Layui 2.x + jQuery
- 前台首页:Tailwind CSS + 原生 JavaScript
- 模板引擎:Go html/template(服务端渲染)
- 验证码:原生 SVG 生成,无需额外图片库
数据表结构
users- 管理员用户表(用户名、密码哈希、会话令牌)categories- 分类表(名称、父ID、图标、权重、隐私属性)links- 链接表(标题、URL、备用URL、描述、图标、分类ID、标签ID、点击数)tags- 标签组表(名称、标识、访问密码、过期时间)applies- 收录申请表(标题、URL、邮箱、描述、分类、状态)config- 系统配置表(键值对存储)login_logs- 登录日志表
配置项
| 配置项 | 说明 | 默认值 |
|---|---|---|
| site_title | 网站标题 | 中链导航 |
| site_subtitle | 网站副标题 | 简洁优雅的网站导航 |
| jump_mode | 跳转模式:direct直接跳转/privacy隐私跳转/transition过渡页 | direct |
| transition_stay | 过渡页停留秒数 | 3 |
| smart_jump | 内外网智能跳转开关 | 0 |
| public_host | 外网域名(如 nav.example.com) | 空 |
| intranet_url | 内网访问地址(如 http://192.168.1.10:8080 ) | 空 |
| apply_switch | 收录申请:0关闭/1需审核/2自动通过 | 1 |
| site_privacy | 全站隐私模式:1=未登录不可访问 | 0 |
| admin_path | 后台访问路径 | admin |
部署说明
Docker Compose 部署(推荐)
services:
chinasclmnav:
image: vipiu/chinasclmnav:latest
container_name: chinasclmnav
restart: unless-stopped
ports:
- "8080:8080"
environment:
- CHINASCLMNAV_PORT=8080
- CHINASCLMNAV_DATA=/data
- TZ=Asia/Shanghai
volumes:
- ./data:/data
首次启动默认账号:
admin / admin123,登录后请立即修改密码。
项目亮点
- 零依赖部署:单二进制文件,嵌入所有资源,下载即可运行
- 内外网双地址支持:独创客户端 + 服务端双重探测机制,完美兼容 Cloudflare 隧道等代理场景
- 现代化 UI 设计:前台采用 iOS 18 风格设计,磨砂玻璃卡片,圆角设计,体验优秀
- 数据安全可靠:SQLite WAL 模式,在线备份使用 VACUUM INTO 保证一致性,恢复失败自动回滚
- 性能优化到位:静态资源缓存 + gzip 压缩,配置内存缓存,后台菜单加载流畅不卡顿
- 容器化友好:官方 Docker 镜像支持多架构,非 root 用户运行,健康检查完备
适用场景
- 个人书签管理与导航主页
- 团队内部工具网址导航
- 同时拥有内外网访问的自托管服务导航
- 博客 / 网站侧边导航栏
- 公开网址分享与收录平台
最低资源要求:内存 ≥ 64MB,磁盘 ≥ 100MB
版权申明:









请先 !