1.项目
Shlink 是一个开源且功能丰富的短链接管理系统,允许你轻松创建、管理和统计短链接。它采用 PHP 开发,易于部署和扩展,适合个人、企业或开发者自建短链服务。短链接(Short Link)是指将一个原始的长 URL(Uniform Resource Locator)通过特定的算法或服务转化为一个更短、易于记忆的 URL。短链接通常只包含几个字符,而原始的长 URL 可能会非常长。短链接的原理非常简单,通过一个原始链接生成个相对短的链接,然后通过访问短链接跳转到原始链接。
1.1项目介绍
主要特点
- 自托管:在自己的服务器或云端部署,无需依赖第三方短链服务
- 开源免费:完全开源,遵循 MIT 许可证
- API 支持:提供 REST API 方便集成到其它应用或服务
- 高级统计:记录访问次数、来源国家、浏览器、平台、引用来源等
- 多环境支持:支持多数据库,如 MySQL、PostgreSQL、SQLite 等
- 自定义短链:支持自定义短链后缀和关键字
- 安全机制:支持访问限制、密码保护
- 扩展性:支持插件机制和命令行工具管理
技术栈
- 语言:PHP 7.4+
- 框架:Laminas / Mezzio(PSR-7 兼容)
- 数据库:MySQL、PostgreSQL、SQLite 等
- API:RESTful API + Web UI
- 运行环境:支持 Docker,轻松部署
使用场景
- 企业内部短链服务
- 媒体营销链接追踪
- 开发者工具集成
- 替代 bit.ly、tinyurl 等第三方服务,避免数据泄漏风险
1.2项目展示



2.相关地址
gitHub开源项目:https://github.com/shlinkio/shlink
3.搭建环境
- 服务器:这里为了方便搭建项目使用的是莱卡云的境外香港云服务器。(国内用户连接建议使用国内的服务器(需备案域名或者IP+端口)延迟会更低)
- 莱卡云服务器促销活动性价比会更高。查看官网购买链接:https://www.lcayun.com
- 资源配置:2核2G 30G硬盘
由于国内服务器访问海外源较慢,这边为了方便演示直接使用海外服务器搭建。 - 服务器系统:Debian-12
- 【必需】安装Docker:安装好 Docker、Docker-compose
- 【非必需】域名一枚,可用于解析到服务器上使用域名访问

4.搭建视频
哔哩哔哩:https://www.bilibili.com/video/BV1YWhtzbEWu/
5.搭建方式
5.1 安装docker和docker-compose
安装教程:服务器上安装docker和docker-compose教程
5.2 注册MaxMind账号
不过,shlink也是最麻烦的,主要是因为需要定位访问者的来源,需要使用到MaxMind的GeoLite2数据库,所以需要去MaxMind注册一个账号,并获取key,请访问以下链接跳转到注册页面
注册完成登录之后点击Manage License keys创建您的keys

输入描述,然后点击下方的confirm即可生成完毕:

注意,key只有第一次创建成功的时候才会显示内容,随后就看不到了,请大家注意保存好。
5.3 部署Shlink后端server
docker run --name shlink -d --restart=always \
-p 9040:8080 \
-e DEFAULT_DOMAIN=服务器IP或者你的域名 \
-e IS_HTTPS_ENABLED=true \
-e GEOLITE_LICENSE_KEY=你注册的密钥 \
shlinkio/shlink:latest
访问IP:9040端口就可以有界面出现了。
http://ip:9040
会出现以下404输出就算成功:

然后执行以下命令获取shlink后端server的api-key,保存输出结果,这个需要配置在前端web-client里:
docker exec -it shlink shlink api-key:generate

5.4 部署前端web-client
SHLINK_API_KEY是生成的绿色那个API的KEY
SHLINK_API_URL填服务器IP或者域名
docker run -d --name shlink-web-client -p 9050:8080 \
-e SHLINK_API_URL="http://服务器IP或者域名:9040" \
-e SHLINK_API_KEY="你的APIKEY" \
shlinkio/shlink-web-client
5.5 通过web-client配置shlink

name随意,url填后端server的访问地址,我们是使用IP:9040端口,你有域名可以使用域名
api key就填写生成的绿色那个API的KEY


这样我们就进去web界面了


6.结尾
到此我们的搭建就结束了,这边是使用IP部署,如果有自己的域名可以使用nginx反代使用,更多问题可以查看一下官方文档