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 数据库进行地理位置统计。获取步骤:

  1. 访问 MaxMind 注册免费账号。
  2. 登录后在「My License Key」中生成 License Key。
  3. 将 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 管理界面

  1. 访问 http://VPS_IP:8081 打开 Shlink Web Client。
  2. 添加新服务器,填入 Shlink API 地址 https://s.yourdomain.com 和刚才生成的 API Key。
  3. 连接成功后即可在 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% 折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。