欢迎光临
我们一直在努力

教你用服务器Docker搭建一个开源短链生成系统-shlink

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,请访问以下链接跳转到注册页面

https://www.maxmind.com/en/geolite2/signup?utm_source=kb&utm_medium=kb-link&utm_campaign=kb-create-account

注册完成登录之后点击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反代使用,更多问题可以查看一下官方文档

赞(0)
未经允许不得转载:莱卡云 » 教你用服务器Docker搭建一个开源短链生成系统-shlink