Nginx Proxy Manager (NPM) là một hệ thống quản lý reverse proxy chạy trên Docker. NPM sử dụng Nginx và cung cấp cho người dùng trình quản lý thông qua giao diện web, giúp người dùng quản lý dễ dàng và hiệu quả hơn.
Trong bài viết này HOSTVN sẽ hướng dẫn các bạn cài đặt Nginx Proxy Manager và thiết lập bảo mật trang đăng nhập trên Ubuntu.
Mục lục
1. Nginx Proxy Manager là gì ?
Nginx Proxy Manager (NPM) là một hệ thống quản lý reverse proxy chạy trên Docker. NPM sử dụng Nginx làm proxy server. Ngoài việc cấu hình Proxy server nó còn cho phép bạn cấu hình redirect domain, kích hoạt và tự động gia hạn SSL Let’s Encrypt. NPM rất phù hợp nếu các bạn đang muốn tìm kiếm một giải pháp proxy server đứng trước server backend của mình.
2. Cài đặt Nginx Proxy Manager và thiết lập bảo mật trang đăng nhập
Yêu cầu
VPS sử dụng hệ điều hành Linux, trong bài viết này HOSTVN sẽ hướng dẫn các bạn cài đặt trên Ubuntu 20.04.
2.1. Bước 1: Cài đặt Docker
Do NPM chạy trên Docker nên việc đầu tiên các bạn cần làm là cài đặt Docker và Docker Compose trên VPS của mình. Để cài đặt Docker các bạn chỉ cần chạy lần lượt các lệnh sau
sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update -y sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release wget -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update -y sudo apt-get install docker-ce docker-ce-cli containerd.io -y
Sau khi quá trình cài đặt Docker hoàn tất các bạn tiến hành cài đặt Docker Compose bằng cách chạy các lệnh sau đây
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Như vậy các bạn đã hoàn tất việc cài đặt Docker và Docker Compose trên VPS của mình, hãy chuyển sang bước tiếp theo cài đặt NPM lên VPS
2.2. Bước 2: Cài đặt Nginx Proxy Manager
Để cài đặt Nginx Proxy Manager đầu tiên các bạn cần tạo file docker-compose.yml trong bài viết này HOSTVN sẽ sử dụng nano để tạo file. Nếu chưa biết cách sử dụng nano hãy tham khảo Hướng dẫn sử dụng Nano trên Linux
nano docker-compose.yml
Tiếp theo dán nội dung sau vào file
version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' ports: - '80:80' - '81:81' - '443:443' environment: DB_MYSQL_HOST: "db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: "SECURE_PASSWORD" DB_MYSQL_NAME: "npm" volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt db: image: 'jc21/mariadb-aria:latest' environment: MYSQL_ROOT_PASSWORD: 'SECURE_PASSWORD' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'SECURE_PASSWORD' volumes: - ./data/mysql:/var/lib/mysql
- Lưu ý: Hãy thay SECURE_PASSWORD bằng một mật khẩu mạnh bao gồm số, chữ thường, chữ in hoa và ký tự đặc biệt.
Tiếp theo bấm tổ hợp phím Ctrl + o để lưu file và Ctrl + x để thoát khỏi nano. Để cài đặt NPM các bạn chạy lệnh sau và chờ cho quá trình cài đặt hoàn tất
docker-compose up -d
2.3. Bước 3: Mở port trên Firewall
Nếu VPS của các bạn đang sử dụng Firewall các bạn cần mở port 81 để có thể truy cập vào trang admin. Trong bài viết này VPS Ubuntu sử dụng UFW firewall nên sẽ cần chạy lệnh sau để mở port
ufw allow 81/tcp
2.4. Bước 4: Bảo mật trang đăng nhập
Sau khi quá trình cài đặt NPM kết thúc các bạn có thể đăng nhập vào trang quản trị bằng link: ip-vps:81 với thông tin đăng nhập mặc định như sau (Các thông tin này sẽ có thể thay đổi sau khi đăng nhập thành công)
Email: admin@example.com Password: changeme
Tuy nhiên để bảo mật hơn trong bài viết này HOSTVN sẽ hướng dẫn các bạn thiết lập thêm một lớp đăng nhập thứ 2 cho trang Admin của NPM. Đầu tiên các bạn cần xác định Container ID của NPM bằng cách chạy lệnh sau
docker ps
Như trong ảnh chúng ta sẽ có Container ID là e034e50447fb (ID này là khác nhau với mỗi lần cài đặt nên các bạn cần thay nó bằng ID của các bạn). Sau khi đã xác định được Container ID tiến hành copy file cấu hình ra bên ngoài để chỉnh sửa bằng lệnh sau
docker cp e034e50447fb:/etc/nginx/conf.d/production.conf data
Mở file production.conf bằng nano
nano data/production.conf
và thêm vào 2 dòng sau
auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd;
Tiếp theo chúng ta sẽ cần tạo file .htpasswd chứa thông tin đăng nhập cho lớp đăng nhập thứ 2. Để tạo .htpasswd các bạn chạy 2 lệnh sau
sudo apt-get install apache2-utils htpasswd -b -c .htpasswd USER SECURE_PASSWORD
Thay USER và SECURE_PASSWORD bằng user và mật khẩu đăng nhập các bạn muốn sử dụng. Cuối cùng copy file production.conf và file .htpasswd vào trong Container
docker cp data/production.conf e034e50447fb:/etc/nginx/conf.d/ docker cp .htpasswd e034e50447fb:/etc/nginx/
Tiến hành reload lại nginx
docker exec e034e50447fb service nginx reload
Tiếp theo các bạn có thể truy cập thử để kiểm tra kết quả
3. Link tham khảo
4. Kết luận
Qua bài viết này HOSTVN đã hướng dẫn các bạn cách cài đặt Nginx Proxy Manager và thiết lập bảo mật trang đăng nhập. Nếu có bất kỳ ý kiến đóng góp nào các bạn có thể để lại bình luận ở bên dưới. Ngoài ra các bạn có thể xem thêm các bài viết khác về VPS tại đây.