Shlink 短链接服务搭建教程
Shlink 是一款功能强大的开源短链接服务,可以将长网址转换为短链接,并提供详细的访问统计数据。相比 bit.ly 等商业服务,自建 Shlink 可以使用自己的域名,没有链接数量限制,且所有数据掌握在自己手中。本文将介绍如何在搬瓦工 VPS 上通过 Docker 部署 Shlink 以及其 Web 管理界面。
一、Shlink 功能特点
- 自定义短码:可以使用自定义的短码,如
s.example.com/my-link。 - 访问统计:详细记录每个短链接的访问次数、来源、设备类型、地理位置等。
- REST API:完整的 API 接口,可以通过程序自动创建和管理短链接。
- 多域名支持:一个 Shlink 实例可以管理多个短链接域名。
- 二维码生成:自动为每个短链接生成二维码。
- 过期设置:可以设置短链接的过期时间或最大访问次数。
- Web 管理界面:通过 Shlink Web Client 进行可视化管理。
二、环境准备
- 搬瓦工 VPS 一台,512MB 内存即可(使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
- 已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
- 一个短域名(推荐使用短域名来生成短链接)。
2.1 创建项目目录
mkdir -p /opt/shlink
cd /opt/shlink
三、Docker Compose 部署
cat > /opt/shlink/docker-compose.yml <<'EOF'
version: '3.8'
services:
shlink:
image: shlinkio/shlink:stable
restart: always
ports:
- "8080:8080"
environment:
DEFAULT_DOMAIN: s.yourdomain.com
IS_HTTPS_ENABLED: "true"
GEOLITE_LICENSE_KEY: your_geolite_key
DB_DRIVER: postgres
DB_HOST: postgres
DB_NAME: shlink
DB_USER: shlink
DB_PASSWORD: shlink_db_password
depends_on:
- postgres
postgres:
image: postgres:15-alpine
restart: always
environment:
POSTGRES_DB: shlink
POSTGRES_USER: shlink
POSTGRES_PASSWORD: shlink_db_password
volumes:
- pg_data:/var/lib/postgresql/data
shlink-web:
image: shlinkio/shlink-web-client:stable
restart: always
ports:
- "8081:8080"
volumes:
pg_data:
EOF
四、获取 GeoLite2 License Key
Shlink 使用 GeoLite2 数据库进行地理位置统计。获取步骤:
- 访问 MaxMind 注册免费账号。
- 登录后在「My License Key」中生成 License Key。
- 将 Key 填入
GEOLITE_LICENSE_KEY环境变量。
五、启动服务
cd /opt/shlink
docker compose up -d
生成 API Key 供 Web 管理界面使用:
docker compose exec shlink shlink api-key:generate
记录输出的 API Key。
六、配置 Web 管理界面
- 访问
http://VPS_IP:8081打开 Shlink Web Client。 - 添加新服务器,填入 Shlink API 地址
https://s.yourdomain.com和刚才生成的 API Key。 - 连接成功后即可在 Web 界面中创建和管理短链接。
七、配置 Nginx 反向代理
# Shlink 短链接服务
cat > /etc/nginx/sites-available/shlink <<'EOF'
server {
listen 80;
server_name s.yourdomain.com;
location / {
proxy_pass http://127.0.0.1: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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
ln -sf /etc/nginx/sites-available/shlink /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d s.yourdomain.com
八、API 使用示例
# 创建短链接
curl -X POST https://s.yourdomain.com/rest/v3/short-urls \
-H "X-Api-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{"longUrl": "https://example.com/very/long/url", "customSlug": "mylink"}'
# 获取短链接统计
curl https://s.yourdomain.com/rest/v3/short-urls/mylink/visits \
-H "X-Api-Key: your_api_key"
九、数据备份
docker compose exec postgres pg_dump -U shlink shlink > /opt/shlink/backup_$(date +%Y%m%d).sql
十、常见问题
短链接跳转返回 404
确认 DEFAULT_DOMAIN 设置正确,且域名已正确解析到 VPS IP。
地理位置统计为空
检查 GeoLite2 License Key 是否正确填写。首次启动后需要等待 GeoLite2 数据库下载完成。
总结
Shlink 是一个功能完善的自托管短链接服务,适合个人和企业使用。如果你需要更简单的方案,可以参考 YOURLS 短网址服务。选购搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。