Shlink 5.1.8 介绍与选型指南

本文基于 shlinkio/shlink **5.1.8** 实测(Docker 镜像 `shlinkio/shlink:5.1.8`,2026-10-30 实验环境验证),所有命令与回显均为真实运行结果。

ShlinkPHP自托管Docker2026/10/30

Shlink 5.1.8 介绍与选型指南

本文基于 shlinkio/shlink 5.1.8 实测(Docker 镜像 shlinkio/shlink:5.1.8,2026-10-30 实验环境验证),所有命令与回显均为真实运行结果。

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 落本地卷)。

三种典型部署形态:

  1. SQLite 单容器:一个 shlinkio/shlink 容器搞定,适合个人低流量场景。
  2. PostgreSQL/MySQL 双服务编排(推荐):独立数据库容器,便于备份、迁移与统计查询,本专栏部署指南采用此形态实测。
  3. 纯 PHP 归档部署:下载 .phar,自备 PHP 8.3+ 与 Web 服务,适合宿主机直装。

四、版本演进(GitHub Releases 取证)

通过 GitHub releases feed 取证(截至 2026-10-30),最新版本序列:

版本发布时间要点
v5.1.82026-10-21唯一变更:Docker 镜像基础层升级 Alpine 3.24,随附 PHP 安全更新,修复 CVE-2026-109618、CVE-2026-109619
v5.1.72026-09-21常规维护
v5.1.6 ~ v5.1.02026 年内5.1 特性线迭代
v5.0.x2026 年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 命令详解》。

六、选型对比

维度ShlinkYOURLSKuttChhoto URL
语言/运行时PHP(RoadRunner 常驻)PHPNode.jsGo
数据库SQLite/MySQL/PostgreSQL/MSSQLMySQLPostgreSQL/SQLiteSQLite
REST API完整(v3,OpenAPI 文档)有(插件生态)有极简
CLI 管理30+ 命令无无无
访问统计深度(地理/UA/bot/orphan)基础点击数中等极简
多域名/失效控制/重定向规则全支持部分部分部分
资源占用中(PHP 常驻)低中极低

结论:

  • 需要完整统计、API、CLI 与多域名,选 Shlink,它是自托管短链里功能面的天花板;
  • 只求极轻量的转发跳板,Go 系极简方案(如 Chhoto URL)更省资源,但统计与管理面弱很多;
  • 已有 MySQL 且依赖 YOURLS 插件生态的存量系统可继续 YOURLS,新项目不建议。

七、适用与不适用场景

适用:个人/团队自托管短链并掌握点击数据;营销活动链接归因(标签 + 统计);需要把短链能力以 API 形式嵌进自有系统;多域名集中管理。

不适用:超大规模(日均亿级跳转)应使用专业短链平台或 CDN 边缘方案;只想要一个「缩短就完事」无统计需求的最小工具,Shlink 偏重。

八、前置依赖与站内导航

系列文章:

  1. 本文:Shlink 5.1.8 介绍与选型指南
  2. 《Shlink 5.1.8 Docker Compose 部署指南》
  3. 《Shlink 5.1.8 配置参数详解》
  4. 《Shlink 5.1.8 REST API 与 CLI 命令详解》
  5. 《Shlink 5.1.8 常见问题与进阶实战》