Mục lục bài viết

Docker

Cài đặt Nginx Proxy Manager bằng Docker

phongdh
phongdh
Chia sẻ:
Zalo
Cài đặt Nginx Proxy Manager bằng Docker

Nginx Proxy Manager (NPM) là một giải pháp cực kỳ mạnh mẽ và trực quan để quản lý Reverse Proxy. Với giao diện Web UI thân thiện, nó cho phép bạn dễ dàng trỏ tên miền về các dịch vụ đang chạy trên máy chủ (như n8n, WordPress, Nextcloud,…) và tự động cấp phát chứng chỉ SSL miễn phí từ Let’s Encrypt chỉ với vài cú click chuột.

Điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo bạn đã có:

  1. Một máy chủ/VPS đang chạy hệ điều hành Linux (khuyến nghị Ubuntu 20.04 hoặc 22.04).
  2. Đã cài đặt sẵn DockerDocker Compose.
  3. Đã mở các port mạng sau trên tường lửa (Firewall) của máy chủ:
    • Port 80: Dành cho lưu lượng HTTP và để Let’s Encrypt xác thực chứng chỉ.
    • Port 443: Dành cho lưu lượng HTTPS bảo mật.
    • Port 81: Dành cho giao diện quản trị Web UI của Nginx Proxy Manager.

Bước 1: Chuẩn bị thư mục cài đặt

Kết nối vào máy chủ của bạn qua SSH. Tốt nhất là chúng ta nên tạo một thư mục riêng để chứa các cấu hình và dữ liệu của NPM để dễ quản lý và backup sau này.

Chạy các lệnh sau trên terminal:

# Tạo thư mục chứa dữ liệu
mkdir -p /opt/nginx-proxy-manager

# Di chuyển vào thư mục vừa tạo
cd /opt/nginx-proxy-manager

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

Trong thư mục vừa tạo, hãy tạo một file có tên là docker-compose.yml.

vi docker-compose.yml

Sau đó, copy và dán nội dung cấu hình sau vào file:

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # Port HTTP và HTTPS dùng để hứng traffic từ bên ngoài (Bắt buộc)
      - '80:80'
      - '443:443'
      # Port dành cho giao diện quản trị Admin Web UI
      - '81:81'
    volumes:
      # Lưu trữ dữ liệu cấu hình (Cơ sở dữ liệu SQLite, cài đặt,...)
      - ./data:/data
      # Lưu trữ chứng chỉ SSL Let's Encrypt
      - ./letsencrypt:/etc/letsencrypt

Lưu file lại (Nếu dùng nano, nhấn Ctrl+X, sau đó gõ Y và nhấn Enter).

Lưu ý: Cấu hình này sử dụng cơ sở dữ liệu SQLite mặc định (được lưu trong thư mục ./data), rất phù hợp và nhẹ nhàng cho hầu hết các nhu cầu cá nhân hoặc doanh nghiệp nhỏ.

Bước 3: Khởi chạy Nginx Proxy Manager

Khi file cấu hình đã sẵn sàng, bạn chỉ cần chạy một lệnh duy nhất để Docker tải image và khởi động NPM ở chế độ nền (background):

docker compose up -d

Hãy chờ vài chục giây để Docker tải image và khởi tạo cơ sở dữ liệu cho lần chạy đầu tiên.

Bước 4: Đăng nhập lần đầu và Đổi mật khẩu

Sau khi container đã chạy thành công, hãy mở trình duyệt web trên máy tính của bạn và truy cập vào giao diện quản trị bằng địa chỉ IP của máy chủ kèm theo cổng 81:

nginx

Lúc này, màn hình chào mừng (“Welcome! Get started by creating your admin account.”) sẽ hiện ra yêu cầu bạn khởi tạo tài khoản quản trị ban đầu. Hãy điền các thông tin sau:

  1. Full Name: Nhập tên của bạn.
  2. Email address: Nhập địa chỉ Email thật của bạn (đây sẽ là tài khoản dùng để đăng nhập từ nay về sau).
  3. New Password: Đặt mật khẩu quản trị bảo mật của bạn.

Sau đó bấm Save để lưu lại. Hệ thống sẽ đưa bạn trực tiếp vào giao diện chính của Nginx Proxy Manager!

(Lưu ý phụ: Nếu bạn cài các phiên bản NPM cũ hơn và thấy màn hình yêu cầu Sign In ngay thay vì tạo tài khoản, hãy dùng email mặc định [email protected] và mật khẩu changeme, sau đó hệ thống sẽ bắt bạn cập nhật thông tin).

Bước 5: Hướng dẫn cơ bản thêm một Domain mới (Proxy Host)

Để đưa một ứng dụng (ví dụ: đang chạy ở cổng 5678) ra internet với tên miền riêng và có SSL, bạn làm như sau:

Trên giao diện chính, vào menu Hosts -> chọn Proxy Hosts.

Bấm nút Add Proxy Host màu xanh ở góc phải.

Ở tab Details:

  • Domain Names: Nhập tên miền (VD: app.tenmiencuaban.com) -> Nhấn Enter.
  • Scheme: Thường giữ là http.
  • Forward Hostname / IP: Nhập IP nội bộ của máy chủ (VD: 192.168.1.100 hoặc IP của Docker container).
  • Forward Port: Nhập cổng của ứng dụng (VD: 5678).
  • Tích chọn Block Common ExploitsWebsockets Support.

Chuyển sang tab SSL:

  • Menu thả xuống chọn Request a new SSL Certificate.
  • Tích chọn Force SSLHTTP/2 Support.

Bấm Save và đợi khoảng 15-30 giây để hệ thống tự động sinh chứng chỉ.

Tổng kết và Lời khuyên

Chúc mừng! Bạn đã cài đặt thành công Nginx Proxy Manager và biết cách đưa các ứng dụng web của mình ra internet một cách an toàn. Để duy trì hệ thống hoạt động ổn định và bảo mật, dưới đây là một số lời khuyên dành cho bạn:

  • Sao lưu (Backup) thường xuyên: Vì toàn bộ dữ liệu cấu hình và chứng chỉ SSL được lưu trong 2 thư mục ./data./letsencrypt, bạn chỉ cần sao lưu định kỳ thư mục gốc /opt/nginx-proxy-manager. Nếu máy chủ gặp sự cố, bạn chỉ cần copy thư mục này sang máy mới và chạy lại docker compose up -d là mọi thứ sẽ phục hồi nguyên trạng.
  • Bảo mật cổng 81: Cổng 81 là giao diện quản trị rất quan trọng. Bạn nên hạn chế truy cập công khai vào cổng này (ví dụ: chỉ cho phép IP nhà bạn truy cập qua Firewall, hoặc sử dụng VPN/Tailscale để kết nối vào máy chủ thay vì mở Public IP).
  • Cập nhật hệ thống định kỳ: Khi có phiên bản NPM mới, bạn chỉ cần di chuyển vào thư mục cài đặt, chạy lệnh docker compose pull để tải bản cập nhật và docker compose up -d để khởi động lại container bằng phiên bản mới.

Chúc bạn có những trải nghiệm tuyệt vời và dễ dàng hơn trong việc quản lý hạ tầng dịch vụ web của mình!

Chia sẻ:
Zalo
phongdh

phongdh

Content Creator

Chào mọi người, mình là Phong - hiện đang công tác tại Phòng Kỹ thuật AZDIGI. Trong quá trình làm việc mình có cơ hội được tiếp xúc với khá nhiều các vấn đề liên quan đến Website/Email/Hosting/VPS/Server, do đó mình viết lại các hướng dẫn này nhằm chia sẻ kiến thức, cũng như tạo một môi trường để chúng ta giao lưu và học hỏi lẫn nhau.

Kết nối:

Bài viết liên quan

Những bài viết bạn có thể quan tâm

Thảo luận

0 bình luận cho bài viết này

* Địa chỉ email của bạn sẽ được bảo mật và không hiển thị công khai.

Chưa có bình luận nào

Hãy là người đầu tiên chia sẻ góc nhìn của bạn về bài viết này nhé!

Zalo

Nhập từ khóa để tìm kiếm...

0 kết quả

CHUYÊN MỤC LIÊN QUAN