Shlink 5.1.8 介绍与选型指南
本文基于 shlinkio/shlink **5.1.8** 实测(Docker 镜像 `shlinkio/shlink:5.1.8`,2026-10-30 实验环境验证),所有命令与回显均为真实运行结果。
Shlink 5.1.8 介绍与选型指南
本文基于 shlinkio/shlink 5.1.8 实测(Docker 镜像
shlinkio/shlink:5.1.8,2026-10-30 实验环境验证),所有命令与回显均为真实运行结果。
一、Shlink 是什么
Shlink 是一个用 PHP 编写的开源自托管 URL 短链接服务(GitHub 仓库 shlinkio/shlink,官网 shlink.io),可将自己的域名变成短链服务:把冗长的 URL 压缩成短码,并在用户点击跳转时完整记录每一次访问(时间、来源、User-Agent、地理位置、是否爬虫等),再把统计数据通过 REST API 或命令行回吐给你。
它的定位介于「玩具级短链脚本」与「商业短链 SaaS」之间:单二进制(PHP 归档)或单容器即可运行,SQLite 数据库就能起步,却提供了多域名、访问统计、标签、失效控制、重定向规则、二维码、REST API + CLI 双操作面等完整能力,是自托管场景下功能最全的短链方案之一。
核心项目构成(同一仓库出品):
| 项目 | 说明 |
|---|---|
| Shlink(本组件) | 短链服务本体:REST API + 跳转服务 + CLI |
| Shlink Web Client | 独立仓库的官方 Web 管理界面,独立组件,不在本专栏范围内 |
| Shlink Roadmap Runner 等 | 周边小工具 |
二、核心特性(5.1.x 实测确认)
- 短链生成:随机短码(实测生成
23tSb、DyIhz)或自定义 slug(实测quzuo);支持长 URL 自动抓取页面标题(实测创建时自动填入Shlink — The URL shortener)。 - 访问统计:每次 302 跳转即记录一条 visit,含时间、User-Agent、referer、国家/地区/城市(需 GeoLite2 库)、potential bot 判定(实测 curl 访问被标记为
Potential bot);还单独记录 orphan visits(孤儿访问,如访问不存在的短码、直接访问域名根路径)。 - 失效控制:
validSince/validUntil/maxVisits三种元数据(实测maxVisits: 1的短链第二次访问返回 404)。 - 多域名:一套 Shlink 服务多个域名,每个短链绑定独立域名。
- 标签系统:创建短链时打标签(实测
tags: ["demo","test"]),支持重命名、删除、按标签查访问统计。 - 重定向规则:为单个短链配置基于设备/语言/query 的动态重定向。
- 双操作面:完整的 REST API(
/rest/v3/*)与 CLI 命令(shlink short-url:create等 30+ 命令)。 - 多数据库:SQLite(默认,零依赖起步)、MySQL/MariaDB、PostgreSQL、MSSQL。
- 安全:API Key 认证(实测无 Key 请求返回 401),支持生成/禁用/按名称管理多个 Key。
三、技术架构与运行形态
Shlink 本体是 PHP(基于 Mezzio/Laminas 中间件框架)长驻进程,官方 Docker 镜像内置 RoadRunner 常驻运行时,无需外部 PHP-FPM + Nginx 即可对外服务(容器内监听 8080)。数据库是唯一外部依赖,最小形态甚至可以完全无外部依赖(SQLite 落本地卷)。
三种典型部署形态:
- SQLite 单容器:一个
shlinkio/shlink容器搞定,适合个人低流量场景。 - PostgreSQL/MySQL 双服务编排(推荐):独立数据库容器,便于备份、迁移与统计查询,本专栏部署指南采用此形态实测。
- 纯 PHP 归档部署:下载
.phar,自备 PHP 8.3+ 与 Web 服务,适合宿主机直装。
四、版本演进(GitHub Releases 取证)
通过 GitHub releases feed 取证(截至 2026-10-30),最新版本序列:
| 版本 | 发布时间 | 要点 |
|---|---|---|
| v5.1.8 | 2026-10-21 | 唯一变更:Docker 镜像基础层升级 Alpine 3.24,随附 PHP 安全更新,修复 CVE-2026-109618、CVE-2026-109619 |
| v5.1.7 | 2026-09-21 | 常规维护 |
| v5.1.6 ~ v5.1.0 | 2026 年内 | 5.1 特性线迭代 |
| v5.0.x | 2026 年 | 5.0 大版本(CLI/API 与配置体系重构线) |
版本节奏为月度维护 + 安全补丁跟进及时,5.1.8 是当前容器镜像的最新 tag,本专栏全部实测基于该版本。
五、实测验证摘要
在实验环境(Docker Compose 双服务栈:shlinkio/shlink:5.1.8 + postgres:16-alpine)完成的关键验证:
- 健康检查:
GET /rest/health返回{"status":"pass","version":"5.1.8"}。 - 短链闭环:创建(含自定义 slug、标签、标题)→ 302 跳转 → 命中统计 +2,全链路通过。
- 安全边界:无 API Key 创建短链返回 401;
maxVisits超限返回 404。 - CLI:
api-key:generate、short-url:create/list/resolve/visits等命令实测通过。
完整部署步骤见 《Shlink 5.1.8 Docker Compose 部署指南》,配置参数全量详解见 《Shlink 5.1.8 配置参数详解》,API 与命令行细节见 《Shlink 5.1.8 REST API 与 CLI 命令详解》。
六、选型对比
| 维度 | Shlink | YOURLS | Kutt | Chhoto URL |
|---|---|---|---|---|
| 语言/运行时 | PHP(RoadRunner 常驻) | PHP | Node.js | Go |
| 数据库 | SQLite/MySQL/PostgreSQL/MSSQL | MySQL | PostgreSQL/SQLite | SQLite |
| REST API | 完整(v3,OpenAPI 文档) | 有(插件生态) | 有 | 极简 |
| CLI 管理 | 30+ 命令 | 无 | 无 | 无 |
| 访问统计 | 深度(地理/UA/bot/orphan) | 基础点击数 | 中等 | 极简 |
| 多域名/失效控制/重定向规则 | 全支持 | 部分 | 部分 | 部分 |
| 资源占用 | 中(PHP 常驻) | 低 | 中 | 极低 |
结论:
- 需要完整统计、API、CLI 与多域名,选 Shlink,它是自托管短链里功能面的天花板;
- 只求极轻量的转发跳板,Go 系极简方案(如 Chhoto URL)更省资源,但统计与管理面弱很多;
- 已有 MySQL 且依赖 YOURLS 插件生态的存量系统可继续 YOURLS,新项目不建议。
七、适用与不适用场景
适用:个人/团队自托管短链并掌握点击数据;营销活动链接归因(标签 + 统计);需要把短链能力以 API 形式嵌进自有系统;多域名集中管理。
不适用:超大规模(日均亿级跳转)应使用专业短链平台或 CDN 边缘方案;只想要一个「缩短就完事」无统计需求的最小工具,Shlink 偏重。
八、前置依赖与站内导航
- 容器运行时与编排:《Docker Compose 安装与多容器编排》
- 推荐数据库:《PostgreSQL 18.6 Docker Compose 部署指南》
- 生产 HTTPS 接入:《Nginx HTTPS 与证书配置方案(certbot/自签名)》
系列文章: