article_image

我之前推荐一个基于 NotepadTab + Obsidian 实现匿名分享文章的方法:《一个简单安全的记事本工具 NotepadTab,却意外解决了匿名分享文章的痛点?附 Obsidian 用法》

文中提到,这个方案最终生成的链接会非常长,显得不够美观。

在生活中我们也会碰到类似的问题,比如一个特别长的链接在生成二维码的时候,二维码会变得非常复杂,难以扫描。如果将其通过短链接工具缩短一下,就变得更容易扫描了。

不过现在由于短链跳转内容不可控,短链接平台都开始收紧策略了。可以考虑给自己搭建一个缩短链接的服务,给自己使用。

我选择的是 Shlink 方案,因为它同时支持了 API 和不错的网页 UI,可以满足大多数需求。

前提条件

你需要准备两样东西——

  • 一个较短的域名
  • 一台服务器,配置不限

这两个东西比你想象的要便宜,域名的价格在 50 元/年以内,冷门后缀更是便宜到只要个位数。服务器可以看看国内的各种云,它们常年推出活动,往往 99 元/年以内就能租下一台服务器。更不要说服务器还可以部署一些其他非常有用的服务,比如部署 RustDesk 可以一并解决远程桌面的问题。

相关阅读:《低价服务器可以用来做什么?搭一个实用的免费远程桌面中转服务:RustDesk》

开始部署

现在我们开始部署 Shlink。

1. 配置 DNS 解析

既然是短链接服务,我们就需要两个域名,一个用于提供出去最终访问,一个用于提供 shlink 的管理后台。

你可以在云服务商后台,这样配置两条 A 记录——

s.yourdomain.com -> 服务器 IP

shlink.yourdomain.com -> 服务器 IP

你配置其他的也可以,这里只是示例。

接下来通过 SSH 连接到服务器

ssh username@服务器IP

运行以下命令启动 Shlink 容器:

docker run -d \
 --name shlink \
 -p 8080:8080 \
 -e DEFAULT_DOMAIN=yourdomain.com \
 -e IS_HTTPS_ENABLED=true \
 shlinkio/shlink

参数说明:

  • --name shlink:为容器指定名称。
  • -p 8080:8080:将容器的 8080 端口映射到主机的 8080 端口。
  • -e DEFAULT_DOMAIN=yourdomain.com:设置您的默认域名。
  • -e IS_HTTPS_ENABLED=true:启用 HTTPS,没有证书可以设置为 false。

在终端继续执行以下命令,生成 API 密钥:

docker exec -it shlink shlink api-key:generate

找个安全的地方记录下生成的 API 密钥,后续配置 Web 客户端时需要使用。

接下来继续通过 Docker 部署 Shlink web 客户端。其中的参数需要记得修改。

bash docker run -d \ --name shlink-web-client \ -p 8081:8080 \ -e SHLINK_SERVER_URL=http://yourdomain.com:8080 \ -e SHLINK_SERVER_API_KEY=your_api_key \ shlinkio/shlink-web-client

参数说明:

首次访问 Web 客户端时,需手动输入 Shlink 服务器的 URL 和 API 密钥。

4. 配置 Nginx 反向代理:

为通过域名访问 Shlink 服务和 Web 客户端,建议配置 Nginx 反向代理。可以参考这个 Nginx 配置示例:

```nginx server { listen 80; server_name s.yourdomain.com;

   location / {
       proxy_pass http://localhost:8080;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }

}

server { listen 80; server_name shlink.yourdomain.com;

   location / {
       proxy_pass http://localhost:8081;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }

} ```

如果你用了 1Panel 之类的平台,也可以借助图形界面配置这两个反向代理。

通过以上步骤,应该可以成功部署并访问 Shlink 服务及其 Web 管理界面了。

5. 高阶操作:通过 API 触发

通过向 Shlink 的 REST API 发送 HTTP POST 请求,同样可以创建短链接。以下是使用 curl 命令的示例:

bash curl -X POST http://yourd

机器阅读:已开放本文前 70% 的正文,剩余内容会员可见。 标准阅读页 · Markdown


author_avatar

#UNTAG Developer