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

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

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

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

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

点击Generate new license key

image.png

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

image.png

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

image.png

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

1.使用默认sqlite数据库

docker run:

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数据库许可证密钥

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

image.png

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

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

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

按需决定是否申请ssl证书

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

image.png

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

image.png

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

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

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 的容器名

docker exec -it my_shlink shlink api-key:generate

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

image.png

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

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

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

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

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

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

docker run \ --name shlink-web-client \ -p 25601:80 \ shlinkio/shlink-web-client

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

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

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 面板搭建好了

image.png

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

四、使用 Web 面板管理 Shlink

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

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

点击 Add a server

image.png

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

image.png

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

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

原文链接:https://developer.aliyun.com/article/1153398

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享