开源URL短链接服务Shlink

在这里插入图片描述

最近一直有人在问,docker 查询注册表失败的问题,目前老苏验证可用的方法有 2 个:

  • 方法一(可用):
  1. 看过老苏以前文章的读者都知道,在遇到发布到 ghcr.io 的镜像时,老苏都会推荐用 dockerproxy,其实发布到 hub.docker.com 的镜像也是一样可用的

在这里插入图片描述

  1. 打开 https://dockerproxy.com,在第一步中输入镜像的 用户名/镜像名称:tag,点 获取命令

在这里插入图片描述

  1. ssh 客户端登录到群晖,在命令行依次执行第二步~第四步的命令,权限不够的话,加 sudo 再执行

此方法虽然麻烦,但适合没有条件科学上网的人,如果你觉得好用的话,记得去给网站捐助一下,不过这个方法并不能解决注册表搜索的问题

更多的玩法请看官方文档:https://dockerproxy.com/docs

  • 方法二(不可用)

从文档看,似乎有更简单的方式,但老苏没成功,大家可以试试看

注册表 --> 设置,选中 https://rigistry.hub.docker.com,点 编辑

在这里插入图片描述

勾选 启用注册表镜像,在 注册表镜像 URL 中填入 https://dockerproxy.com

在这里插入图片描述

但老苏试了还是不行,当然你也可以找找其他的镜像 URL 试试,其中阿里和华为需要注册自己的账号

在这里插入图片描述

  • 方法三(可用):

就用科学上网了,把 docker.com 加入到域名黑名单,一劳永逸


本文完成于 2 月上旬;

什么是 Shlink ?

Shlink 是一个自托管的开源 URL 缩短器,它提供了一个 REST 和一个 CLI 接口来与之交互。此外,还有一个官方的 Shlink web 客户端,通过使用 ShlinkREST API,提供了一个漂亮的 web UI 来处理多个 Shlink 实例。

前期准备

获取 API key

Shlink 使用 MaxMindGeoLite2 数据库来定位对您的短 URL 的访问。

Shlink 需要一个 GeoLite2 许可证密钥,用来定期下载新版本的数据库,确保数据始终是最新的。

这些许可证是免费的,只需要在 https://www.maxmind.com/en/geolite2/signup 注册用户,然后生成一个 license key 就可以

保存这个 License Key 值很重要,因为也是只显示一次的

在这里插入图片描述

建数据库

老苏用了群晖自带的 MariaDB 10 数据库。

在这里插入图片描述

phpMyAdmin 中创建名为 shlink 的空数据库。

为便于说明,假设数据库密码为 123456

在这里插入图片描述

反向代理

短链接应该是放在公网用的,用局域网 IP 方式显然是不合理的

域名局域网地址说明
st.laosu.ml192.168.0.197:8019服务端
stc.laosu.ml192.168.0.197:8020客户端

老苏的域名没有备案,在实际访问时是要带端口的,例如服务端是 https://st.laosu.ml:444

虽然老苏已经尽量缩短 url,但是实际上还是有点长,毕竟是二级域名,有条件的话,最好用短的一级域名 😂

在这里插入图片描述

SSL 还是没问题就全选

在这里插入图片描述

客户端也是一样的

在这里插入图片描述

环境变量

老苏用到了下面👇这些环境变量

可变
DEFAULT_DOMAIN用于此 Shlink 实例的自定义域名
IS_HTTPS_ENABLED是否启用 https 协议
GEOLITE_LICENSE_KEY您的 GeoLite2 许可证密钥
DB_DRIVER使用值 mysqlmariapostgresmssql来防止使用 SQLite 数据库
DB_USER数据库服务器的用户名
DB_PASSWORD数据库服务器的口令
DB_HOST运行数据库引擎的服务器的主机名
DB_PORT运行数据库服务的端口
DB_NAME要使用的数据库名称

更多的环境变量请看官方文档:https://shlink.io/documentation/environment-variables/

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

老苏安装的 stable版对应的版本是 3.5.1

# 新建文件夹 shlink 和 子目录
mkdir -p /volume2/docker/shlink/data

# 进入 shlink 目录
cd /volume2/docker/shlink

# 运行服务端容器
docker run -d \
   --restart unless-stopped \
   --name shlink-server \
   -p 8019:8080 \
   -e DEFAULT_DOMAIN=st.laosu.ml:444 \
   -e IS_HTTPS_ENABLED=true \
   -e GEOLITE_LICENSE_KEY=<你的 GeoLite2 许可证密钥> \
   -e DB_DRIVER=mysql \
   -e DB_HOST=192.168.0.197 \
   -e DB_PORT=3307 \
   -e DB_USER=shlink \
   -e DB_PASSWORD=123456 \
   -e DB_NAME=shlink \
   shlinkio/shlink:stable

# 运行客户端容器
docker run -d \
   --restart unless-stopped \
   --name shlink-web-client \
   -p 8020:80 \
   shlinkio/shlink-web-client

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  server:
    image: shlinkio/shlink:stable
    container_name: shlink-server
    restart: unless-stopped
    ports:
      - 8019:8080
    volumes:
      - ./data:/data
    environment:  
      - DEFAULT_DOMAIN=st.laosu.ml:444
      - IS_HTTPS_ENABLED=true
      - GEOLITE_LICENSE_KEY=<你的 GeoLite2 许可证密钥>
      - DB_DRIVER=mysql
      - DB_HOST=192.168.0.197
      - DB_PORT=3307
      - DB_USER=shlink
      - DB_PASSWORD=123456
      - DB_NAME=shlink
  
  client:
    image: shlinkio/shlink-web-client
    container_name: shlink-web-client
    restart: unless-stopped
    ports:
      - 8020:80

然后执行下面的命令

# 新建文件夹 shlink 和 子目录
mkdir -p /volume2/docker/shlink/data

# 进入 shlink 目录
cd /volume2/docker/shlink

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

一开始会下载 GeoLite2 数据库

在这里插入图片描述

在浏览器中输入 http://群晖IP:8019 访问服务端,但实际上只能看到 404 错误

在这里插入图片描述

接下来要使用以下命令生成新的 API 密钥

docker exec -it shlink-server shlink api-key:generate

在这里插入图片描述

也可以从 终端机 进入

在这里插入图片描述

输入 shlink api-key:generate

每次执行都会生成不同的 API key,所以截图中的 API key 都是不一样的

在这里插入图片描述

在浏览器中输入 http://群晖IP:8020 就能看到客户端的主界面

在这里插入图片描述

+ Add a server,因为前、后端在同一个局域网,所以写 IP 就可以了

在这里插入图片描述

添加成功后的主界面

在这里插入图片描述

创建一个短链接

在这里插入图片描述

生成的短链接类似于 --> https://st.laosu.ml:444/ivyCe

在这里插入图片描述

参考文档

shlinkio/shlink: The definitive self-hosted URL shortener
地址:https://github.com/shlinkio/shlink

Shlink — The URL shortener — Documentation
地址:https://shlink.io/documentation/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值