开源URL短链接服务Shlink
最近一直有人在问,docker
查询注册表失败的问题,目前老苏验证可用的方法有 2
个:
- 方法一(可用):
- 看过老苏以前文章的读者都知道,在遇到发布到
ghcr.io
的镜像时,老苏都会推荐用dockerproxy
,其实发布到hub.docker.com
的镜像也是一样可用的
- 打开 https://dockerproxy.com,在第一步中输入镜像的
用户名/镜像名称:tag
,点获取命令
- 用
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
客户端,通过使用Shlink
的REST API
,提供了一个漂亮的web UI
来处理多个Shlink
实例。
前期准备
获取 API key
Shlink
使用 MaxMind
的 GeoLite2
数据库来定位对您的短 URL
的访问。
Shlink
需要一个 GeoLite2
许可证密钥,用来定期下载新版本的数据库,确保数据始终是最新的。
这些许可证是免费的,只需要在 https://www.maxmind.com/en/geolite2/signup 注册用户,然后生成一个 license key
就可以
保存这个
License Key
值很重要,因为也是只显示一次的
建数据库
老苏用了群晖自带的 MariaDB 10
数据库。
在 phpMyAdmin
中创建名为 shlink
的空数据库。
为便于说明,假设数据库密码为
123456
反向代理
短链接应该是放在公网用的,用局域网 IP
方式显然是不合理的
域名 | 局域网地址 | 说明 |
---|---|---|
st.laosu.ml |
192.168.0.197:8019 |
服务端 |
stc.laosu.ml |
192.168.0.197:8020 |
客户端 |
老苏的域名没有备案,在实际访问时是要带端口的,例如服务端是
https://st.laosu.ml:444
虽然老苏已经尽量缩短 url
,但是实际上还是有点长,毕竟是二级域名,有条件的话,最好用短的一级域名 😂
SSL
还是没问题就全选
客户端也是一样的
环境变量
老苏用到了下面👇这些环境变量
可变 | 值 |
---|---|
DEFAULT_DOMAIN |
用于此 Shlink 实例的自定义域名 |
IS_HTTPS_ENABLED |
是否启用 https 协议 |
GEOLITE_LICENSE_KEY |
您的 GeoLite2 许可证密钥 |
DB_DRIVER |
使用值 mysql 、 maria 、 postgres 或 mssql 来防止使用 SQLite 数据库 |
DB_USER |
数据库服务器的用户名 |
DB_PASSWORD |
数据库服务器的口令 |
DB_HOST |
运行数据库引擎的服务器的主机名 |
DB_PORT |
运行数据库服务的端口 |
DB_NAME |
要使用的数据库名称 |
更多的环境变量请看官方文档:https://shlink.io/documentation/environment-variables/
命令行安装
如果你熟悉命令行,可能用 docker cli
更快捷
老苏安装的
stable
版对应的版本是3.5.1
1 | # 新建文件夹 shlink 和 子目录 |
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
1 | version: '3' |
然后执行下面的命令
1 | # 新建文件夹 shlink 和 子目录 |
运行
一开始会下载 GeoLite2
数据库
在浏览器中输入 http://群晖IP:8019
访问服务端,但实际上只能看到 404
错误
接下来要使用以下命令生成新的 API
密钥
1 | 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/shlinkShlink — The URL shortener — Documentation
地址:https://shlink.io/documentation/