Cấu hình Dynamic DNS, SSL và Reverse Proxy với Lucky trên máy chủ đám mây

Giới thiệu

Bài viết này hướng dẫn chi tiết cách thiết lập một hệ thống Dynamic DNS (DDNS), chứng chỉ SSL và Reverse Proxy sử dụng công cụ Lucky trên một máy chủ đám mây. Mục tiêu là giúp bạn truy cập các dịch vụ web của mình thông qua một tên miền tùy chỉnh, ngay cả khi địa chỉ IP máy chủ của bạn thay đổi.

Quy trình thiết lập tổng quan

  1. Chuẩn bị tên miền và máy chủ đám mây.
  2. Cấu hình cơ bản cho máy chủ đám mây, bao gồm tường lửa và môi trường Docker.
  3. Triển khai Lucky và cấu hình các dịch vụ DDNS, SSL, Reverse Proxy.

Các bước thực hiện chi tiết

1. Chuẩn bị cơ bản

1.1. Mua tên miền

Bạn cần một tên miền để truy cập dịch vụ của mình. Các nhà cung cấp tên miền phổ biến bao gồm Alibaba Cloud (阿里云), Tencent Cloud (腾讯云) hoặc các nhà đăng ký quốc tế khác. Hãy chọn một tên miền phù hợp với mục đích sử dụng của bạn.

1.2. Thuê máy chủ đám mây

Để triển khai Lucky và các dịch vụ khác, bạn cần một máy chủ đám mây. Các nhà cung cấp dịch vụ đám mây lớn như Alibaba Cloud, Tencent Cloud cung cấp nhiều gói dịch vụ với cấu hình đa dạng. Khi lựa chọn, hãy cân nhắc về hiệu năng (CPU, RAM) và băng thông mạng. Lưu ý rằng các máy chủ đặt tại Trung Quốc đại lục thường yêu cầu giấy phép ICP (Internet Content Provider) để liên kết tên miền.

2. Thiết lập máy chủ đám mây

2.1. Mở cổng trên tường lửa của máy chủ

Trước khi cài đặt bất cứ dịch vụ nào, bạn cần đảm bảo các cổng cần thiết được mở trên tường lửa của máy chủ đám mây. Điều này thường được thực hiện thông qua bảng điều khiển quản lý của nhà cung cấp dịch vụ đám mây (ví dụ: trong phần "Nhóm bảo mật" hoặc "Quy tắc tường lửa"). Hãy mở các cổng sau:

  • 16601: Cổng mặc định của Lucky.
  • 5001 (hoặc cổng tùy chọn khác): Cổng truy cập bảng điều khiển 1Panel (nếu sử dụng).
  • 80 (HTTP) và 443 (HTTPS): Các cổng chuẩn cho dịch vụ web.

2.2. Kết nối tới máy chủ qua SSH

Sử dụng một công cụ SSH như Xshell, PuTTY hoặc Terminal tích hợp trên hệ điều hành của bạn để kết nối đến máy chủ đám mây. Bạn sẽ cần địa chỉ IP công cộng của máy chủ và thông tin đăng nhập (tên người dùng, mật khẩu hoặc khóa SSH).

2.3. Cài đặt môi trường Docker sử dụng 1Panel (Tùy chọn)

Bạn có thể cài đặt Docker trực tiếp hoặc sử dụng một bảng điều khiển quản lý như 1Panel để đơn giản hóa việc quản lý các container Docker.

Cách cài đặt 1Panel:

Chạy lệnh phù hợp với hệ điều hành Linux của bạn:

# Đối với CentOS/RHEL
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh

# Đối với Ubuntu
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

# Đối với Debian
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

Trong quá trình cài đặt, bạn sẽ được yêu cầu thiết lập cổng truy cập 1Panel, tên người dùng và mật khẩu. Sau khi hoàn tất, bạn có thể truy cập 1Panel qua trình duyệt bằng địa chỉ:

http://<ĐỊA_CHỈ_IP_MÁY_CHỦ>:<CỔNG_1PANEL>/<ĐƯỜNG_DẪN_AN_TOÀN>

Ví dụ: http://192.0.2.1:5001/random_path

3. Triển khai và cấu hình Lucky

3.1. Triển khai Lucky trong Docker

Nếu bạn đã cài 1Panel, hãy sử dụng nó để triển khai Lucky. Nếu không, bạn có thể sử dụng lệnh Docker CLI trực tiếp.

Triển khai bằng 1Panel:

  1. Truy cập bảng điều khiển 1Panel và điều hướng đến mục "Container" (hoặc "Thùng chứa").
  2. Nhấp vào "Tạo Container" (hoặc "Tạo thùng chứa mới").
  3. Cấu hình các thông số sau:
    • Tên Container: Đặt tên tùy ý, ví dụ lucky-server.
    • Image: Chọn "Nhập thủ công" và nhập gdy666/lucky:latest.
    • Cổng: Ánh xạ cổng 16601 từ container ra cổng 16601 của máy chủ (ví dụ: 16601:16601).
    • Mạng: Chọn chế độ host để Lucky có thể truy cập trực tiếp địa chỉ IP công cộng của máy chủ.
    • Chính sách khởi động lại: Chọn "Luôn luôn khởi động lại".
  4. Xác nhận để tạo container.

3.2. Lấy AccessKey từ nhà cung cấp tên miền

Để Lucky có thể tự động cập nhật bản ghi DNS (DDNS), nó cần quyền truy cập API của nhà cung cấp tên miền. Bạn cần tạo một cặp AccessKey ID và AccessKey Secret.

Ví dụ với Alibaba Cloud:

  1. Đăng nhập vào tài khoản Alibaba Cloud của bạn.
  2. Tìm đến mục "AccessKey Management" (Quản lý AccessKey) hoặc "RAM AccessKeys".
  3. Tạo một AccessKey mới. Lưu lại AccessKey ID và AccessKey Secret. Đây là thông tin nhạy cảm, hãy bảo mật cẩn thận.

3.3. Cấu hình bản ghi DNS cho tên miền

Trong bảng điều khiển quản lý tên miền của nhà cung cấp dịch vụ, bạn cần tạo các bản ghi A trỏ về địa chỉ IP công cộng của máy chủ đám mây. Để Lucky có thể quản lý DDNS hiệu quả, bạn nên tạo một bản ghi đại diện (wildcard).

  • Bản ghi @: Trỏ tên miền gốc (ví dụ: yourdomain.com) về IP máy chủ.
  • Bản ghi www: Trỏ www.yourdomain.com về IP máy chủ.
  • Bản ghi * (wildcard): Trỏ tất cả các tên miền con (ví dụ: sub.yourdomain.com) về IP máy chủ.

Hãy đảm bảo Tất cả các bản ghi A này đều trỏ đến địa chỉ IP công cộng của máy chủ đám mây.

3.4. Thiết lập Dynamic DNS (DDNS) trong Lucky

  1. Truy cập giao diện web của Lucky bằng địa chỉ http://<ĐỊA_CHỈ_IP_MÁY_CHỦ>:16601.

    Thông tin đăng nhập mặc định ban đầu thường là: Tên người dùng 666, Mật khẩu 666. Hãy đổi mật khẩu ngay sau khi đăng nhập thành công.

  2. Điều hướng đến mục "Dynamic DNS" (hoặc "DDNS") và chọn "Thêm nhiệm vụ".
  3. Cấu hình nhiệm vụ DDNS:
    • Tên nhiệm vụ: Đặt tên tùy ý (ví dụ: ddns_cho_domain_cua_ban).
    • Chế độ hoạt động: Chọn "Chế độ đơn giản".
    • Nhà cung cấp dịch vụ: Chọn nhà cung cấp tên miền của bạn (ví dụ: "Alibaba Cloud").
    • AccessKey ID, AccessKey Secret: Nhập thông tin AccessKey bạn đã lấy ở bước 3.2.
    • Loại: Chọn "IPV4".
    • Phương thức lấy IP công cộng: Chọn "Thông qua API".
    • Danh sách tên miền: Nhập tên miền đại diện của bạn, ví dụ: *.yourdomain.com.
  4. Lưu cấu hình và kiểm tra trạng thái. Nếu hiển thị "Địa chỉ IP công cộng của máy chủ và bản ghi DNS khớp nhau", điều đó có nghĩa là DDNS đã hoạt động thành công.

3.5. Yêu cầu Chứng chỉ SSL

Để đảm bảo kết nối an toàn (HTTPS), bạn cần một chứng chỉ SSL. Lucky hỗ trợ yêu cầu chứng chỉ qua ACME (ví dụ: Let's Encrypt).

  1. Trong giao diện Lucky, điều hướng đến mục "Quản lý bảo mật" (Security Management).
  2. Chọn "Thêm chứng chỉ" (Add Certificate) và chọn loại "ACME".
  3. Cấu hình thông tin yêu cầu:
    • Nhà cung cấp ACME: Chọn Let's Encrypt.
    • Tên miền: Nhập tên miền đại diện của bạn, ví dụ: *.yourdomain.com.
    • Email: Nhập địa chỉ email của bạn để nhận thông báo.
    • Các tùy chọn khác có thể giữ mặc định hoặc cấu hình theo nhu cầu.
  4. Nhấp "Thêm". Sau vài phút, Lucky sẽ tự động yêu cầu và cài đặt chứng chỉ SSL. Kiểm tra trạng thái để đảm bảo chứng chỉ được cấp phát thành công.

3.6. Thiết lập Dịch vụ Web (Reverse Proxy)

Lucky có thể hoạt động như một Reverse Proxy, chuyển hướng lưu lượng truy cập từ tên miền của bạn đến các dịch vụ chạy trên máy chủ (ví dụ: các container Docker).

  1. Trong giao diện Lucky, điều hướng đến mục "Dịch vụ Web" (Web Services).
  2. Chọn "Thêm quy tắc Dịch vụ Web" (Add Web Service Rule).
  3. Thiết lập chuyển hướng HTTP sang HTTPS:
    • Tạo một quy tắc chính cho tên miền của bạn (ví dụ: yourdomain.com).
    • Chọn tùy chọn "Chuyển hướng HTTP sang HTTPS". Sau này, khi người dùng truy cập bằng http://yourdomain.com, họ sẽ tự động được chuyển hướng sang https://yourdomain.com.
    • Thêm quy tắc này.
  4. Thêm quy tắc con (Reverse Proxy) cho dịch vụ cụ thể:
    • Chọn quy tắc chính bạn vừa tạo (ví dụ: cho yourdomain.com).
    • Nhấp vào "Thêm quy tắc con" (Add Sub-rule).
    • Máy chủ (Host): Nhập tên miền con mà bạn muốn sử dụng để truy cập dịch vụ, ví dụ: myservice.yourdomain.com.
    • Chứng chỉ SSL: Chọn chứng chỉ SSL wildcard bạn đã yêu cầu ở bước trước.
    • Địa chỉ đích: Nhập địa chỉ nội bộ của dịch vụ mà bạn muốn proxy đến. Ví dụ, nếu bạn có một ứng dụng đang chạy trên Docker container trên cùng máy chủ và lắng nghe ở cổng 8080, bạn sẽ nhập http://localhost:8080.
    • Các tùy chọn khác có thể giữ mặc định.
    • Lưu quy tắc.

4. Kiểm tra truy cập

Sau khi hoàn tất các bước cấu hình, hãy mở trình duyệt và truy cập vào tên miền của dịch vụ mà bạn đã cấu hình (ví dụ: https://myservice.yourdomain.com). Nếu mọi thứ được thiết lập đúng, bạn sẽ thấy dịch vụ của mình hoạt động và kết nối được bảo mật bằng SSL.

Thẻ: Lucky Dynamic DNS DDNS SSL Certificate reverse proxy

Đăng vào ngày 19 tháng 7 lúc 19:30