Quay lại danh sách
Tin tức công nghệ

Hướng dẫn triển khai Shlink trên VPS: Tự xây dựng hệ thống rút gọn link chuyên nghiệp với Custom Domain

30 tháng 5, 2026

Giới thiệu về Shlink: Giải pháp rút gọn link tự lưu trữ (Self-hosted) hàng đầu

Trong kỷ nguyên số, các liên kết (URL) không chỉ đơn thuần là đường dẫn điều hướng, mà còn là một phần quan trọng trong chiến lược định vị thương hiệu và đo lường hiệu quả marketing. Hầu hết các doanh nghiệp hiện nay đều quen thuộc với các dịch vụ rút gọn link bên thứ ba như Bitly, TinyURL hay Rebrandly. Tuy nhiên, việc phụ thuộc vào các nền tảng này thường đi kèm với nhiều hạn chế: chi phí đăng ký gói doanh nghiệp đắt đỏ, giới hạn số lượng link tạo ra, và đặc biệt là nguy cơ rò rỉ dữ liệu khách hàng.

Để giải quyết triệt để bài toán này, xu hướng dịch chuyển sang các giải pháp self-hosted (tự lưu trữ) đang trở nên mạnh mẽ hơn bao giờ hết. Và Shlink chính là cái tên nổi bật nhất. Shlink là một phần mềm mã nguồn mở, cho phép bạn tự xây dựng một hệ thống rút gọn link mạnh mẽ trên máy chủ ảo (VPS) của riêng mình, sử dụng tên miền tùy chỉnh (Custom Domain) để tăng tính chuyên nghiệp và độ tin cậy.

Bài viết này sẽ hướng dẫn bạn từng bước chi tiết để triển khai thành công Shlink trên VPS, giúp bạn làm chủ hoàn toàn hạ tầng tracking liên kết của doanh nghiệp.

---

Tại sao doanh nghiệp nên chọn Shlink thay vì các dịch vụ trả phí?

Trước khi đi vào phần kỹ thuật, hãy cùng điểm qua những lợi ích vượt trội mà Shlink mang lại cho doanh nghiệp:

  • Sở hữu dữ liệu tuyệt đối: Mọi thông tin về lượt click, IP người dùng, vị trí địa lý, thiết bị và trình duyệt đều được lưu trữ trên VPS của bạn. Không một bên thứ ba nào có thể tiếp cận nguồn dữ liệu quý giá này.
  • Không giới hạn tính năng: Tạo vô số liên kết, không giới hạn số lượng click tracking, và tạo hàng loạt short-link mà không tốn thêm bất kỳ chi phí bản quyền nào.
  • Tích hợp Custom Domain dễ dàng: Sử dụng chính tên miền thương hiệu của bạn (ví dụ: go.yourbrand.com), giúp tăng tỷ lệ nhấp chuột (CTR) lên đến 34% so với các liên kết chung chung vô danh.
  • API mạnh mẽ và linh hoạt: Shlink cung cấp hệ thống REST API toàn diện, cho phép dễ dàng tích hợp vào quy trình tự động hóa (CRM, ERP, Chatbot) của doanh nghiệp.
  • Hỗ trợ Multi-domain: Bạn có thể quản lý nhiều tên miền rút gọn khác nhau trên cùng một thực thể Shlink duy nhất.
---

Các điều kiện cần chuẩn bị trước khi cài đặt

Để quá trình triển khai diễn ra mượt mà, bạn cần chuẩn bị sẵn các thành phần cơ bản sau:

  1. Một máy chủ ảo (VPS): Cấu hình tối thiểu chỉ cần 1 vCPU, 1GB RAM và cài đặt hệ điều hành Ubuntu Server (khuyến nghị phiên bản 22.04 LTS hoặc 24.04 LTS). Các nhà cung cấp phổ biến bao gồm DigitalOcean, Vultr, Linode hoặc các nhà cung cấp nội địa.
  2. Một tên miền (Custom Domain): Tên miền ngắn gọn phù hợp cho việc rút gọn link (ví dụ: brand.link hoặc subdomain l.company.com).
  3. Quyền truy cập SSH: Quyền root hoặc người dùng có đặc quyền sudo trên VPS.
  4. Docker và Docker Compose: Công cụ giúp đóng gói và triển khai Shlink một cách nhanh chóng, ổn định nhất.
---

Quy trình từng bước triển khai Shlink trên VPS với Docker

Lưu ý trước khi bắt đầu: Hãy chắc chắn rằng bạn đã trỏ bản ghi A của tên miền (hoặc subdomain) về địa chỉ IP public của VPS trong bảng quản lý DNS của mình.

Bước 1: Cập nhật hệ thống và cài đặt Docker

Đầu tiên, hãy kết nối vào VPS qua SSH và cập nhật các gói phần mềm hệ thống lên phiên bản mới nhất nhằm đảm bảo tính bảo mật:

sudo apt update && sudo apt upgrade -y

Tiếp theo, tiến hành cài đặt Docker và Docker Compose bằng câu lệnh tiêu chuẩn:

sudo apt install docker.io docker-compose -y
sudo systemctl start docker
sudo systemctl enable docker

Bước 2: Cấu hình file Docker Compose cho Shlink

Shlink hoạt động hiệu quả nhất khi kết hợp với một cơ sở dữ liệu (như MariaDB hoặc PostgreSQL) và một Web Server/Reverse Proxy (như Nginx) để xử lý chứng chỉ SSL Let's Encrypt. Trong hướng dẫn này, chúng ta sẽ sử dụng cơ sở dữ liệu MariaDB để lưu trữ.

Tạo một thư mục riêng cho Shlink và truy cập vào đó:

mkdir ~/shlink && cd ~/shlink

Tạo file cấu hình docker-compose.yml bằng trình soạn thảo nano:

nano docker-compose.yml

Sao chép và dán đoạn cấu hình mẫu dưới đây vào file. Hãy lưu ý thay đổi các thông tin bảo mật như mật khẩu cơ sở dữ liệu và tên miền của bạn:

version: '3.8'

services:
  shlink-db:
    image: mariadb:10.11
    container_name: shlink-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: YourSecureRootPassword
      MYSQL_DATABASE: shlink
      MYSQL_USER: shlink_user
      MYSQL_PASSWORD: YourSecureDBPassword
    volumes:
      - shlink_db_data:/var/lib/mysql

  shlink-server:
    image: shlinkio/shlink:stable
    container_name: shlink-server
    restart: always
    depends_on:
      - shlink-db
    ports:
        - "8080:8080"
    environment:
      - DB_DRIVER=postgres
      - DB_USER=shlink_user
      - DB_PASSWORD=YourSecureDBPassword
      - DB_NAME=shlink
      - DB_HOST=shlink-db
      - DEFAULT_DOMAIN=go.yourbrand.com
      - IS_HTTPS_ENABLED=true
      - GEOLITE2_LICENSE_KEY=Your_MaxMind_License_Key

volumes:
  shlink_db_data:

Mẹo nhỏ: Tham số GEOLITE2_LICENSE_KEY cho phép Shlink tự động phân tích vị trí địa lý của người click link. Bạn có thể đăng ký một tài khoản miễn phí trên MaxMind để lấy key này.

Bước 3: Khởi chạy các Container

Sau khi lưu file cấu hình, khởi chạy hệ thống bằng lệnh sau:

sudo docker-compose up -d

Kiểm tra trạng thái hoạt động của các container để đảm bảo không có lỗi xảy ra:

sudo docker ps
---

Cấu hình Nginx Reverse Proxy và SSL Let's Encrypt

Hiện tại Shlink đang chạy nội bộ ở cổng 8080. Để người dùng bên ngoài có thể truy cập an toàn qua giao thức HTTPS (cổng 443), chúng ta cần thiết lập Nginx làm Reverse Proxy.

Bước 1: Cài đặt Nginx và Certbot

sudo apt install nginx certbot python3-certbot-nginx -y

Bước 2: Tạo file cấu hình Nginx

Tạo một file cấu hình mới cho tên miền của bạn:

sudo nano /etc/nginx/sites-available/shlink

Thêm vào nội dung cấu hình sau:

server {
    listen 80;
    server_name go.yourbrand.com;

    location / {
        proxy_pass [http://127.0.0.1:8080](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;
    }
}

Kích hoạt cấu hình và khởi động lại Nginx:

sudo ln -s /etc/nginx/sites-available/shlink /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Bước 3: Cài đặt chứng chỉ SSL miễn phí

Chạy Certbot để tự động cấu hình chứng chỉ SSL mã hóa HTTPS từ Let's Encrypt:

sudo certbot --nginx -d go.yourbrand.com

Làm theo các hướng dẫn trên màn hình để hoàn tất. Certbot sẽ tự động sửa đổi cấu hình Nginx để chuyển hướng toàn bộ lưu lượng truy cập từ HTTP sang HTTPS một cách an toàn.

---

Quản lý hệ thống: Giao diện đồ họa Shlink Web Client

Mặc định, Shlink hoạt động như một REST API backend. Để quản lý, tạo link và xem báo cáo một cách trực quan, bạn có hai lựa chọn: sử dụng giao diện dòng lệnh (CLI) hoặc kết nối với Shlink Web Client.

Cách tạo API Key

Trước tiên, bạn cần tạo một API Key từ container Shlink Server bằng lệnh:

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

Hệ thống sẽ trả về một chuỗi ký tự ngẫu nhiên. Hãy lưu lại chuỗi này.

Kết nối với giao diện Web công khai

Bạn không cần phải tự cài đặt giao diện web. Đội ngũ phát triển Shlink đã cung cấp sẵn một công cụ client chạy trên trình duyệt tại địa chỉ: app.shlink.io.

Khi truy cập vào trang web trên, hãy bấm vào nút "Add a server" và điền các thông tin sau:

  • Name: Đặt tên tùy ý cho dự án (ví dụ: Công ty A).
  • URL: Điền tên miền đầy đủ của bạn (ví dụ: [https://go.yourbrand.com](https://go.yourbrand.com)).
  • API Key: Dán chuỗi ký tự bạn vừa khởi tạo ở bước trên vào đây.

Sau khi kết nối thành công, bạn sẽ được chuyển hướng đến một trang dashboard quản trị vô cùng hiện đại. Tại đây, bạn có thể bắt đầu tạo các liên kết ngắn, thiết lập thời gian hết hạn cho link, cấu hình số lần click tối đa, và quan sát biểu đồ thống kê chi tiết theo thời gian thực.

---

Kết luận và các khuyến nghị bảo mật

Triển khai Shlink trên VPS với Custom Domain là một bước đi chiến lược giúp doanh nghiệp tối ưu hóa chi phí vận hành, nâng cao giá trị nhận diện thương hiệu và bảo vệ dữ liệu khách hàng tuyệt đối. Việc sở hữu một nền tảng tracking riêng biệt mở ra không gian tùy biến không giới hạn cho các chiến dịch marketing của bạn.

Để hệ thống hoạt động ổn định lâu dài, hãy lưu ý một số khuyến nghị sau:

  • Luôn thiết lập cơ chế sao lưu tự động (Backup) định kỳ cho thư mục cơ sở dữ liệu Database của Shlink.
  • Thường xuyên cập nhật phiên bản Docker Image của Shlink lên bản stable mới nhất để nhận các bản vá bảo mật.
  • Giới hạn quyền truy cập cổng SSH của VPS bằng cách sử dụng SSH Key thay vì mật khẩu thông thường.

Chúc các bạn triển khai thành công hệ thống rút gọn link chuyên nghiệp cho riêng mình!

Hướng dẫn triển khai Shlink trên VPS: Tự xây dựng hệ thống rút gọn link chuyên nghiệp với Custom Domain | DPTCloud