前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用docker搭建Shlink个人向短链接服务

使用docker搭建Shlink个人向短链接服务

原创
作者头像
猫猫摸大鱼
发布2022-05-27 17:44:41
3K0
发布2022-05-27 17:44:41
举报
文章被收录于专栏:摸鱼摸鱼

#本文使用了宝塔面板,如不愿使用宝塔面板请自行解决部分技术性问题(例如docker安装,nginx反代)

最近淘了个比较短的域名,没什么用处,就打算搭建一个私人用的短链接服务,然后就找到了Shlink

Shlink 是一个基于 PHP 的开源项目,官网地址:https://shlink.io/,能够提供个人向短链接服务,可通过API、CLI或者web面板进行管理;支持自定义短网址、访问统计、标签管理、访问次数和时间限制、生成短链二维码等功能。建议搭建在国外服务器且仅作为个人服务使用。

一、获取GeoLite2数据库许可证密钥

Shlink利用MaxMind的GeoLite2数据库来定位访客,所以我们需要先生成许可证密钥

进入https://www.maxmind.com/en/accounts/current/license-key

如果没注册过的话先注册并登录

点击Generate new license key

按下图所示选择,许可描述随意,点击确定

将生成的许可秘钥记录下来,然后就可以关掉网页了(密钥只会展示一次,请妥善保存)

二、使用 docker 镜像安装 Shlink 并使用 nginx 反代

1.使用默认sqlite数据库

docker run:

代码语言:javascript
复制
docker run \
    --name my_shlink \
    -p 25600:8080 \
    -e DEFAULT_DOMAIN=yourshlink.com \
    -e IS_HTTPS_ENABLED=true \
    -e GEOLITE_LICENSE_KEY=Ojf****di****3X0 \
    shlinkio/shlink:stable

其中的

-p 25600:8080 \ 可以将25600替换为你想要映射的主机端口

-e DEFAULT_DOMAIN=yourshlink.com \ 将yourshlink.com替换为你的域名

-e IS_HTTPS_ENABLED=true \ 如果使用https请填 true

-e GEOLITE_LICENSE_KEY=Ojfxxxxdixxxx3X0 \ 将Ojfxxxxdixxxx3X0替换为你第一步生成的GeoLite2数据库许可证密钥

使用命令行执行修改好的命令,如果出现类似下图的提示

不要惊慌,这证明你的Shlink搭建成功了

接下来使用宝塔面板进行nginx反代(或自行设置反代)

新建一个网站,域名为刚刚docker run 里填的域名

按需决定是否申请ssl证书

设置nginx反代,目标url里的端口就是你自定义的端口,点击提交

这时候访问你的域名,如果显示404(如下图),就代表你反代成功了

2.使用其他数据库(支持mysqlmariapostgresmssql

如果要使用其他数据库只需要在 docker run 的代码里添加相应的环境变量就可以了,例如

代码语言:javascript
复制
docker run \
    --name my_shlink \
    -p 25600:8080 \
    -e DEFAULT_DOMAIN=shlink.io \
    -e IS_HTTPS_ENABLED=true \
    -e GEOLITE_LICENSE_KEY=Ojf****di****3X0 \
    -e DB_DRIVER=mysql \
    -e DB_PORT=3306 \
    -e DB_NAME=shlink \
    -e DB_USER=root \
    -e DB_PASSWORD=123abc \
    -e DB_HOST=yourdatabase.com \
    shlinkio/shlink:stable

其中

-e DB_DRIVER=mysql \ 为数据库类型

-e DB_PORT=3306 \ 为数据库端口,默认为DB_DRIVER中数据库的默认端口

-e DB_NAME=shlink \ 为数据库中使用的表名

-e DB_USER=root \ 为数据库用户名

-e DB_PASSWORD=123abc \ 为数据库密码

-e DB_HOST=yourdatabase.com \ 为数据库地址

三、使用 docker 镜像安装 Shlink 的 web面板【并使用 nginx 反代(可选)】

我们先获取 Shlink 的 API密钥

使用命令行运行命令,其中的 my_shlink 为 Shlink 的容器名

代码语言:javascript
复制
docker exec -it my_shlink shlink api-key:generate

得到 Shlink 的 API密钥,记录下来

接下来我们要面临一个选择,是否预配置 Shlink 服务器信息

1.如果没有预配置,那你第一次从浏览器访问 Shlink Web 面板时,需要配置 shlink 服务器信息,这些信息填写后是保存在本地存储中的,那就意味着如果你使用另一台电脑或清空了浏览器cookie,你就需要重新配置 shlink 服务器信息。

2.如果预配置了 Shlink 服务器信息,那就意味着任何一个人如果知道了你的面板地址并且能访问,那他就可以管理你的 Shlink ,所以如果你选择预配置的话那你就需要隐藏你的面板地址,或者限制访问设备,或者将面板地址设置为密码访问。

1.选择不预配置 Shlink 服务器信息

这样的话搭建起来就比较简单

直接docker run,记得端口和Shlink不能一样

代码语言:javascript
复制
docker run \
  --name shlink-web-client \
  -p 25601:80 \
  shlinkio/shlink-web-client

2.选择预配置 Shlink 服务器信息

这样的话你可以在docker run的时候直接指定环境变量

代码语言:javascript
复制
docker run \
  --name shlink-web-client \
  -p 25601:80 \
  -e SHLINK_SERVER_URL=http(s)://yourshlink.com/ \
  -e SHLINK_SERVER_API_KEY=e51befb9-c5c2-4b**-****-******892927 \
  shlinkio/shlink-web-client

-e SHLINK_SERVER_URL=http(s)://yourshlink.com/ \ 是你的shlink的域名

-e SHLINK_SERVER_API_KEY=e51befb9-c5c2-4b**-****-******892927 \ 是上面你获取的 Shlink API 密钥

使用命令行执行修改好的命令,如果出现类似下图的提示则代表你的 Shlink Web 面板搭建好了

接下来我们可以将 Shlink Web 面板进行nginx反代(反代域名不能和 Shlink 的反代域名一样),具体方式参考 Shlink 的 nginx 反代,或者我们不反代,直接访问 IP:端口 来管理 Shlink

四、使用 Web 面板管理 Shlink

访问IP : Web面板端口或反代后的域名访问面板

1.选择不预配置 Shlink 服务器信息

点击 Add a server

Name 为备注, URL 为Shlink反代后的域名, APIKey 为 Shlink 的 API密钥,点击 Create serve

2.选择预配置 Shlink 服务器信息

直接访问即可,在首页就可以添加短链接

如果需要更详细的参数点击 Create short URL 即可,具体功能参考下图谷歌的翻译

List short URLs 里可以管理已经添加的短链接

Manage tags 里可以管理已经添加的标签

Manage domains 里可以管理 shlink 的相关设置

点击上图的Edit redirects即可设置 shlink 域名相关的重定向


腾云先锋(TDP,Tencent Cloud Developer Pioneer)是腾讯云 GTS 官方组建并运营的技术开发者群体。这里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹。来加入属于我们开发者的社群吧 。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、获取GeoLite2数据库许可证密钥
  • 二、使用 docker 镜像安装 Shlink 并使用 nginx 反代
    • 1.使用默认sqlite数据库
      • 2.使用其他数据库(支持mysql、maria、postgres、mssql)
      • 三、使用 docker 镜像安装 Shlink 的 web面板【并使用 nginx 反代(可选)】
        • 1.选择不预配置 Shlink 服务器信息
          • 2.选择预配置 Shlink 服务器信息
          • 四、使用 Web 面板管理 Shlink
            • 1.选择不预配置 Shlink 服务器信息
              • 2.选择预配置 Shlink 服务器信息
              相关产品与服务
              轻量应用服务器
              轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档