Shlink là dịch vụ rút ngắn liên kết tự host mạnh mẽ dành cho Linux. Nó cung cấp một framework đơn giản nhưng hiệu quả, nơi bạn có thể sử dụng tên miền của riêng mình làm root cho các liên kết rút gọn của mình. Bài viết này sẽ hướng dẫn bạn cách cài đặt phiên bản Shlink của riêng bạn trên Ubuntu Linux bằng Docker và Nginx.
Tải Docker cho Shlink
Bài viết này giả định rằng bạn đang cài đặt Shlink trên VPS Ubuntu 22.04 và hiện bạn đang sở hữu một tên miền.
Bước đầu tiên trong việc triển khai Shlink trên Linux là tải bản sao Docker. Để thực hiện việc này, hãy lấy signing key của dự án Docker từ trang web của họ:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Tạo file kho lưu trữ cho các file nhị phân Docker của bạn:
sudo nano /etc/apt/sources.list.d/docker.list
Dán dòng code sau vào file kho lưu trữ mới của bạn:
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable
Load lại danh sách kho lưu trữ hệ thống của bạn bằng cách thực thi lệnh apt update:
sudo apt update && sudo apt upgrade
Cài đặt dependency cho Shlink
Khi kho Docker được thiết lập và chạy, giờ đây bạn có thể sử dụng apt để lấy các dependency cho Shlink:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx
Đảm bảo rằng gói snap “lõi” có sẵn trong hệ thống của bạn:
sudo snap install core
Tìm nạp và cài đặt gói snap “certbot” từ Electronic Frontier Foundation:
sudo snap install certbot --classic
Lấy khóa cấp phép Geolite2
Một tính năng nổi bật khác của Shlink là nó có thể theo dõi vị trí chung của người dùng đã nhấp vào liên kết của bạn. Để sử dụng tính năng này, hãy mở trang Geolite2 Licensing Sign Up.
Điền vào biểu mẫu thông tin chi tiết của bạn, sau đó nhấn Continue.
Mở hộp thư đến email, sau đó tìm email xác nhận từ MaxMind.
Nhấp vào liên kết từ email, sau đó cung cấp mật khẩu cho tài khoản MaxMind mới của bạn.
Đăng nhập vào tài khoản MaxMind của bạn, sau đó nhấp vào Manage License Keys trên bảng điều khiển.
Nhấp vào Generate new license key, sau đó nhấn vào Confirm để tạo key Geolite2 của bạn.
Sao chép code cấp phép Geolite2 vào một file văn bản trên máy của bạn rồi lưu nó.
Tải và cài đặt Shlink
Để cài đặt Shlink, trước tiên bạn cần tạo mạng Docker ảo. Mạng này sẽ đóng vai trò là mạng riêng của ứng dụng, nơi ứng dụng có thể giao tiếp với các container khác mà bạn sẽ triển khai:
sudo docker network create -d bridge \
--subnet=10.0.0.0/24 \
--gateway=10.0.0.1 \
shlink-network
Triển khai cơ sở dữ liệu PostgreSQL và liên kết nó với mạng Docker ảo mới của bạn:
sudo docker run -d \
--name shlink-db \
-e POSTGRES_PASSWORD=!REPLACE_ME! \
-e POSTGRES_USER=postgres \
-e POSTGRES_DB=shlink \
-p 127.0.0.1:5432:5432 \
--restart always \
--network="shlink-network" \
postgres:12.1
Thay đổi giá trị của biến môi trường “POSTGRES_PASSWORD” bằng một chuỗi văn bản ngẫu nhiên.
Lưu ý: Bạn có thể tạo chuỗi văn bản ngẫu nhiên này bằng cách sử dụng “/dev/urandom”:
cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1
Dán lệnh sau vào phiên terminal mới:
sudo docker run -d \
--name shlink-stable \
-p 8081:8080 \
-e DEFAULT_DOMAIN=YOUR-ROOT.DOMAIN \
-e IS_HTTPS_ENABLED=true \
-e GEOLITE_LICENSE_KEY=!REPLACE_ME! \
-e DB_DRIVER=postgres \
-e DB_USER=postgres \
-e DB_PASSWORD=!REPLACE_ME! \
-e DB_HOST=shlink-db \
--network="shlink-network" \
shlinkio/shlink:stable
Thay thế giá trị của biến DEFAULT_DOMAIN bằng tên miền của bạn.
Lưu ý: Đảm bảo rằng domain của bạn có bản ghi A trỏ đến địa chỉ IP của máy.
Thay đổi giá trị của biến “GEOLITE_LICENSE_KEY” bằng key cấp phép cá nhân của bạn.
Thay thế biến “DB_PASSWORD” bằng mật khẩu cơ sở dữ liệu PostgreSQL của bạn.
Nhấn Enter để bắt đầu phiên bản Shlink của bạn.
Cài đặt và liên kết giao diện Shlink của bạn
Tìm nạp key API từ container Shlink của bạn, sau đó sao chép nó vào clipboard:
sudo docker exec -it shlink-stable shlink api-key:generate
Dán lệnh sau vào phiên terminal mới:
sudo docker run -d \
--name shlink-client \
-p 8080:8080 \
-e SHLINK_SERVER_URL=https://YOUR-ROOT.DOMAIN \
-e SHLINK_SERVER_API_KEY=!REPLACE-ME! \
--network="shlink-network" shlinkio/shlink-web-client
Thay thế “SHLINK_SERVER_URL” bằng giá trị từ biến “DEFAULT_DOMAIN” trên container backend.
Dán key API của bạn làm giá trị cho “SHLINK_SERVER_API_KEY”.
Nhấn Enter để bắt đầu giao diện frontend Shlink của bạn.
Xác nhận rằng cơ sở dữ liệu, backend Shlink và giao diện người dùng Shlink của bạn đang hoạt động bình thường bằng cách liệt kê tất cả các container hiện đang hoạt động trong hệ thống:
sudo docker container list
Tạo SSL Reverse Proxy bằng Nginx
Tại thời điểm này, bạn đã có bộ phần mềm Shlink đang hoạt động trên máy chủ của mình. Tuy nhiên, để truy cập nó, bạn vẫn cần tạo SSL web proxy để ủy quyền hai container của bạn trên các domain khác nhau.
Để bắt đầu, hãy tạo bản ghi A mới cho giao diện frontend Shlink của bạn. Trong trường hợp này, ví dụ sẽ đặt bản ghi A cho giao diện người dùng của mình là “admin”.
Tạo file cấu hình trang web cho phiên bản Shlink bằng trình soạn thảo văn bản yêu thích của bạn:
sudo nano /etc/nginx/sites-available/shlink
Dán block code sau vào file cấu hình của bạn:
server {
server_name YOUR-ROOT.DOMAIN;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
server {
server_name SUBDOMAIN.YOUR-ROOT.DOMAIN;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
Thay thế biến “YOUR-ROOT.DOMAIN” bằng root domain của bạn và thay thế “SUBDOMAIN.YOUR-ROOT.DOMAIN” bằng subdomain cho giao diện frontend của bạn.
Lưu file cấu hình của bạn, sau đó kích hoạt ứng dụng web của bạn trong Nginx:
sudo ln -s /etc/nginx/sites-available/shlink /etc/nginx/sites-enabled/
Load lại daemon Nginx của bạn để áp dụng cài đặt mới của bạn:
sudo systemctl reload nginx
Đăng ký máy chủ của bạn với Electronic Frontier Foundation:
sudo certbot register --agree-tos -m YOUR@EMAIL.ADDRESS
Yêu cầu chứng chỉ SSL multi-domain mới cho phiên bản Shlink của bạn:
sudo certbot --nginx -d YOUR-ROOT.DOMAIN -d SUBDOMAIN.YOUR-ROOT.DOMAIN
Xác nhận rằng máy chủ Shlink đang hoạt động bình thường bằng cách điều hướng tới bảng điều khiển dành cho quản trị viên phiên bản của bạn. Trong trường hợp này, đó là “https://admin.helloserver.top”.
Tạo liên kết đầu tiên bằng Shlink
Để sử dụng phiên bản mới của bạn, hãy nhấp vào mục menu Shlink trên landing page.
Dán URL dài của bạn vào hộp văn bản URL to be shortened trong danh mục Create a short URL.
Cung cấp một số siêu dữ liệu cho liên kết ngắn của bạn, sau đó nhấp vào Save để tạo liên kết của bạn.
Mở URL ngắn mới của bạn trên tab trình duyệt mới, sau đó nhấp vào nút Visits trên bảng điều khiển Shlink của bạn để kiểm tra xem nó có hoạt động bình thường hay không.
Cài đặt và triển khai dịch vụ rút ngắn liên kết riêng chỉ là bước đầu tiên để lấy lại quyền riêng tư trực tuyến của bạn. Tìm hiểu cách Linux có thể giúp bạn lấy lại quyền riêng tư hơn nữa bằng cách host trang web ẩn danh của riêng bạn trong Ubuntu bằng Tor.