Cách host máy chủ bit.ly của riêng bạn với Shlink trong Linux

Cách host máy chủ bit.ly của riêng bạn với Shlink trong Linux

Shlink là dịch vụ rút ngắn liên kết tự lưu trữ mạnh mẽ dành cho Linux. Nó cung cấp một khuôn khổ đơ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 gốc 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 xuống 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 xuống bản sao Docker. Để thực hiện việc này, hãy lấy khóa ký 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 một tệp kho lưu trữ cho các tệp nhị phân Docker của bạn:

sudo nano /etc/apt/sources.list.d/docker.list

Dán dòng mã sau vào tệp 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

Tải lại danh sách kho lưu trữ hệ thống của bạn bằng cách thực hiện lệnh apt update:

sudo apt update && sudo apt upgrade

Cài đặt phụ thuộc cho Shlink

Sau khi kho lưu trữ Docker hoạt động, giờ đây bạn có thể sử dụng apt để nhận các phần phụ thuộc 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

Nhận mã bản quyền 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 Đăng ký cấp phép Geolite2.

Trang đăng ký giấy phép GeoLite.
Trang đăng ký giấy phép GeoLite.

Điền thông tin chi tiết của bạn vào biểu mẫu rồi nhấn tiếp tục.

Mở hộp thư đến email của bạn, 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.

Link tạo mật khẩu cho MaxMind.
Link tạo mật khẩu cho MaxMind.

Đăng nhập vào tài khoản MaxMind của bạn, sau đó nhấp vào Quản lý khóa cấp phép trên bảng điều khiển.

Menu Quản lý Khóa cấp phép ở thanh bên trái của bảng điều khiển.
Menu Quản lý Khóa cấp phép ở thanh bên trái của bảng điều khiển.

Nhấp chuột Tạo khóa cấp phép mớisau đó nhấn Xác nhận để tạo khóa Geolite2 của bạn.

Nút xác nhận trên lời nhắc đăng ký mã bản quyền.
Nút xác nhận trên lời nhắc đăng ký mã bản quyền.

Sao chép mã giấy phép Geolite2 vào tệp văn bản trên máy tính của bạn và lưu nó.

Tải xuống 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 vùng chứa 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.

Terminal hiển thị mật khẩu DB PostgreSQL ngẫu nhiên.
Terminal hiển thị mật khẩu DB PostgreSQL ngẫu nhiên.

Ghi chú: 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 cuối 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 TÊN MIỀN MẶC ĐỊNH với tên miền của bạn.

Terminal hiển thị giá trị miền mặc định cho máy chủ demo.
Terminal hiển thị giá trị miền mặc định cho máy chủ demo.

Ghi chú: Đảm bảo miền 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” với mã cấp phép cá nhân của bạn.

Terminal hiển thị giấy phép Geolite cho máy chủ demo Shlink.
Terminal hiển thị giấy phép Geolite cho máy chủ demo Shlink.

Thay thế biến “DB_PASSWORD” bằng mật khẩu cơ sở dữ liệu PostgreSQL của bạn.

Terminal hiển thị mật khẩu PostegreSQL DB cho máy chủ demo.
Terminal hiển thị mật khẩu PostegreSQL DB cho máy chủ demo.

Nhấn Đi vào để 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

Lấy khóa API từ vùng chứa Shlink của bạn, sau đó sao chép nó vào bảng nhớ tạm:

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

Dán lệnh sau vào phiên cuối 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ị biến “TÊN MIỀN MẶC ĐỊNH” trên vùng chứa phụ trợ.

Terminal hiển thị URL hoàn chỉnh cho phiên bản phụ trợ Shlink.
Terminal hiển thị URL hoàn chỉnh cho phiên bản phụ trợ Shlink.

Dán khóa API của bạn làm giá trị cho “SHLINK_SERVER_API_KEY”.

Terminal hiển thị khóa API phụ trợ Shlink.
Terminal hiển thị khóa API phụ trợ Shlink.

Nhấn Đi vào để bắt đầu giao diện lối vào Shlink của bạn.

Xác nhận rằng cơ sở dữ liệu, chương trình phụ trợ 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 vùng chứa hiện đang hoạt động trong hệ thống:

sudo docker container list
Terminal hiển thị 3 container đang xây dựng một ứng dụng web Shlink hoàn chỉnh.
Terminal hiển thị 3 container đang xây dựng một ứng dụng web Shlink hoàn chỉnh.

Tạo Proxy ngược SSL bằng Nginx

Tại thời điểm này, bạn nên có bộ phần mềm Shlink 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 proxy web SSL để ủy quyền hai vùng chứa của mình trên các miền khác nhau.

Để bắt đầu, hãy tạo bản ghi A mới cho giao diện người dùng 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 nó thành “quản trị viên”.

2 bản ghi DNS cho máy chủ demo Shlink.
2 bản ghi DNS cho máy chủ demo Shlink.

Tạo tệp 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 khối mã sau vào tệp 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 “ROOT.DOMAIN CỦA BẠN” bằng tên miền gốc của bạn và thay thế “SUBDOMAIN.YOUR-ROOT.DOMAIN” với tên miền phụ cho giao diện lối vào của bạn.

Lưu tệp 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/

Tải lại trình nền 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 đa miền 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”.

Trang đích mặc định cho phiên bản Shlink.
Trang đích mặc định cho phiên bản Shlink.

Tạo liên kết đầu tiên của bạ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 trang đích.

Menu Shlink trên trang đích của phiên bản.
Menu Shlink trên trang đích của phiên bản.

Dán URL dài của bạn vào hộp văn bản URL cần rút ngắn trong danh mục Tạo một URL ngắn.

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 Cứu để tạo liên kết của bạn.

Form tạo link rút gọn trong Shlink.
Form tạo link rút gọn trong Shlink.

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 Lượt truy cập 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 không.

Phân tích cơ bản về liên kết mẫu trên Shlink.
Phân tích cơ bản về liên kết mẫu trên Shlink.

Cài đặt và triển khai dịch vụ rút ngắn liên kết riêng tư 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 nhiều quyền riêng tư hơn bằng cách lưu trữ trang web ẩn danh của riêng bạn trong Ubuntu bằng Tor.

  • FPT Telecom làm việc cả ngày lễ, thứ 7 và chủ nhật, quý khách có nhu cầu đăng ký hoặc tham khảo các gói cước hay liên hệ thông tin đăng ký dịch vụ quý khách hàng vui lòng liên hệ qua web hoặc các thông tin bên dưới để nhân viên hỗ trợ 24/7.
    • FPT Telecom – Công Ty Cổ Phần Viễn Thông FPT
    • Mobile : 098.1489.411 
    • Website: https://fpt8.com

    Cảm ơn quý khách đã tin tưởng và sử dụng dịch vụ mà FPT Telecom cung cấp, chúng tôi sẽ luôn cập nhật các chương trình ưu đãi khuyến mãi lắp mạng FPT  tại Website: https://fpt8.com

Đánh giá 5 Sao