Go 标准库 · SQLite · 静态编译 · 完全自托管

把长链接
变成你自己的域名

链飞 · LinkFly 是一套面向自有域名的短链接服务。一个 Go 二进制一个 SQLite 文件, 自带管理后台、访问统计、密码访问、二维码与开放 API —— 拷到服务器,一条命令装成开机自启的系统服务。

  • 0第三方 Web 框架
  • 1个文件装下全部数据
  • 3平台一键交叉编译
  • 100%数据留在自己服务器
hfw.me/admin
链飞 · LinkFly 管理后台仪表盘:今日访问量、独立访客、趋势图与来源渠道

该有的都有

不是「能跳转就行」的玩具。从短码策略到访问统计,一套自建服务该具备的能力都在里面。

短链接管理

随机短码或自定义短码,带标题备注、启用停用;支持批量启停、批量删除、批量改分组,以及 CSV 导入导出。

有效期与次数

永久、1 小时、1 天、7 天、30 天或自定义到期时间;还能设「最大访问次数」,用完自动失效。

密码访问

单条链接可设访问密码。验证通过后 12 小时内免重复输入,靠 HMAC 签名 Cookie 记住,不用每次转发都问一遍。

三级跳转策略

302 / 301 / 307 / 中间提示页四种方式,按「全局默认 → 分组 → 单条链接」逐级覆盖,任意一级都可跟随上级。

分组管理

分组可设名称、颜色、描述和分组级跳转方式,一眼分清推广渠道。删除分组不会连带删除里面的链接。

访问统计

按天趋势画访问量与独立访客双线,另有来源渠道、设备 / 系统 / 浏览器分布和访问明细,IP 自动脱敏。

二维码

每条短链一键出码,支持自定义尺寸与 L/M/Q/H 纠错等级,可直接下载 PNG 拿去印刷或贴物料。

开放 API

API Key 鉴权,创建、查询、修改、删除短链,查统计、查分组全都能脚本化,接进你自己的发布流程。

安全与运维

后台登录与短链密码都有失败次数限制,超限临时封禁来源。体检、在线备份、重置密码全程不用停服。

后台长这样

内嵌在二进制里的管理界面,不需要 Node 构建,深浅色双主题跟随系统。以下是真实截图。

仪表盘
仪表盘 · 今日访问与近期趋势
短链接管理
短链接管理 · 批量操作与筛选
新建短链接
新建短链接 · 有效期、密码、跳转方式
访问统计
访问统计 · 深色主题下的双线趋势
分组管理
分组管理 · 渠道归类与分组级策略
API 密钥
API 密钥与接口文档
密码访问页
密码访问页 · 访客看到的验证界面
中间跳转页
中间提示页 · 倒计时后跳转,不泄露来源

为什么这么轻

刻意不用框架,刻意不引前端构建链。换来的是一个可以直接 scp 上去就跑的静态二进制。

Go 标准库,零 Web 框架

路由走 net/http 原生实现,没有 Gin、没有 Echo。依赖越少,升级越省心,出问题时能读懂每一行。

SQLite,纯 Go 驱动

默认用 modernc.org/sqlite不需要 gcc,可以直接交叉编译出静态二进制;想换 mattn/go-sqlite3 加个 build tag 即可。

前端内嵌进二进制

模板和静态资源用 go:embed 打包,不需要 Node、不需要 npm install。部署时只有孤零零一个可执行文件。

零依赖二维码编码器

自己实现的 QR 编码器,不引第三方库,已通过 zxing 解码交叉验证,出码能被主流扫码器正确识别。

数据全在一个文件里

备份就是拷一个 .db 文件。内置 VACUUM INTO 在线备份,服务运行中执行也不会读到写了一半的状态。

装完自带运维命令

install / doctor / backup / reset-password / logs —— 体检、备份、找回密码都不用停服,也不用翻文档。

三步跑起来

从源码到线上服务,全程不到两分钟。默认只监听 127.0.0.1,前面挂 Nginx 或 Caddy 反代即可。

1

交叉编译

在本地(或任意有 Go 的机器)产出目标平台的静态二进制,无 CGO 依赖。

export GOPROXY=https://goproxy.cn,direct
make deps
make build-linux     # bin/linkfly-linux-amd64
2

传到服务器

就一个文件,scp 上去即可,不需要装运行时、不需要拉依赖。

scp bin/linkfly-linux-amd64 root@服务器:/root/linkfly
3

装成系统服务

自动建用户、建数据目录、写配置、注册 systemd 并启动,最后打印初始密码。

ssh root@服务器 "chmod +x /root/linkfly && \
  /root/linkfly install --base-url https://hfw.me"
root@server — linkfly install
$ sudo ./linkfly install --base-url https://hfw.me

 链飞 · LinkFly 安装完成
────────────────────────────────────────────────
  服务名称    linkfly.service
  程序位置    /usr/local/bin/linkfly
  配置文件    /etc/linkfly/linkfly.env
  数据目录    /var/lib/linkfly
  监听地址    127.0.0.1:8080
  运行状态    运行中
────────────────────────────────────────────────
  管理后台    https://hfw.me/admin
  管理员账号  admin
  初始密码    YSmF3NCNm2EaAk
────────────────────────────────────────────────
  ⚠ 该密码只显示这一次,登录后请立即修改

默认只监听本机,别忘了反向代理

装完默认是 127.0.0.1:8080,用 Caddy 反代到你的域名即可自动签发 HTTPS 证书(配置示例在仓库 deploy/Caddyfile)。反代后保持 HFW_TRUST_PROXY=true,统计才能拿到访客真实 IP。想直接对外就跑 install --public

一个请求,一条短链

后台生成 API Key 后即可调用。所有 /api/v1/* 接口统一返回 { ok, data } 结构。

$ curl -X POST https://hfw.me/api/v1/shorten \
    -H "X-API-Key: hfw_xxxxxxxx" \
    -H "Content-Type: application/json" \
    -d '{
      "target": "https://example.com/a/very/long/path",
      "code": "spring26",
      "title": "春季大促",
      "group": "市场推广",
      "expires_in": 604800,
      "password": "8888",
      "redirect_type": "page"
    }'

接口一览

  • POST /api/v1/shorten创建短链接
  • GET /api/v1/links列表与检索
  • GET /api/v1/links/{code}查询单条
  • PUT /api/v1/links/{code}修改短链接
  • DELETE /api/v1/links/{code}删除短链接
  • GET /api/v1/stats/{code}访问统计
  • GET /api/v1/groups分组列表
  • GET /qr/{code}.png二维码(免鉴权)

把短链接攥在自己手里

没有用量套餐,没有第三方跳转,没有数据出境。一台最便宜的云主机就能跑起来。