Cách lưu trữ trang web của riêng bạn với Docker và Nginx Proxy Manager

Tác giả Starlink, T.Tư 20, 2025, 02:35:14 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cảnh báo: Có thể gây ra những thôi thúc không thể kiểm soát được là tự lưu trữ mọi thứ.

    Một dịch vụ như Cloudflare DDNS sẽ tự động cập nhật IP tên miền của bạn bằng IP nhà riêng của bạn.
    Nginx Proxy Manager định tuyến lưu lượng truy cập và cung cấp chứng chỉ SSL thông qua Let's Encrypt và triển khai trong Docker.
    Ghost là một nền tảng blog thân thiện với người dùng, hỗ trợ markdown và plugin, dễ triển khai bằng Docker.

Bạn có muốn chạy trang web của riêng mình nhưng lại ghét ý tưởng phải trả phí lưu trữ không? Đó chính là điều tôi mới tìm thấy gần đây, vì vậy, đây là cách tôi tạo một trang web nhanh chóng bằng Docker, Nginx Proxy Manager và Ghost.


1. Bạn cần gì để vận hành một trang web cá nhân?

Để chạy một trang web cá nhân cần một số điều kiện tiên quyết. Khi bạn bắt đầu chạy, bạn phải có tên miền, máy chủ để lưu trữ trang web (thậm chí có thể là máy tính xách tay cũ, NUC hoặc Raspberry Pi), Docker và một vài container được triển khai.

Đầu tiên là máy chủ để lưu trữ trang web của bạn. Nó không cần phải cực kỳ mạnh mẽ, và thậm chí có thể là một máy tính bạn có trong nhà. Một chiếc Raspberry Pi, NUC, máy tính để bàn cũ hoặc thậm chí là một chiếc máy tính xách tay cũ có thể hoạt động tốt cho dịch vụ này. Bạn chỉ cần thứ gì đó được sản xuất trong khoảng 15 năm trở lại đây vẫn có thể chạy hệ điều hành hiện đại (lý tưởng nhất là Linux, nhưng Windows hoặc macOS cũng có thể hoạt động).

Tiếp theo là tên miền. Bạn có thể mua tên miền của mình ở bất kỳ đâu, nhưng tôi khuyên bạn nên tìm tên miền hỗ trợ DDNS gốc, như Cloudflare. Trong khi bạn nhận được IP cố định khi sử dụng máy chủ riêng ảo (VPS) hoặc nền tảng lưu trữ khác, khi lưu trữ trang web tại nhà, có khả năng IP của bạn sẽ thay đổi theo thời gian. Đó là lúc DDNS (DNS động) xuất hiện. Về cơ bản, khi IP tại nhà của bạn thay đổi, DDNS sẽ cập nhật bản ghi A của tên miền của bạn để trỏ đến IP mới của bạn.

Ngoài tên miền và thiết lập DDNS, bạn cũng sẽ cần Docker cho phương pháp lưu trữ mà tôi sẽ giới thiệu ở đây. Docker có khả năng chạy rất nhiều, nhưng đối với trang web của bạn, chúng ta sẽ cần một vùng chứa DDNS, Nginx Reverse Proxy và tất nhiên là cả trang web của bạn nữa.

Để cấu hình Cloudflare DDNS Docker container, bạn sẽ cần một khóa API cho Cloudflare có thể thay đổi các bản ghi DNS cho tên miền cụ thể mà bạn sẽ sử dụng, chính tên miền đó và bất kỳ tên miền phụ nào bạn muốn cập nhật. Tất cả những điều này sẽ được thiết lập bởi các cờ môi trường trong Docker, giúp bạn dễ dàng thay đổi hoặc thêm các tên miền phụ và tên miền mới trong tương lai.


Để nhanh chóng bắt đầu, bạn có thể truy cập trang web như What's My IP Address để tìm IP công khai của mình. Hãy tiếp tục và nhập IP đó vào bản ghi A của tên miền bạn muốn sử dụng cho trang web của mình. DDNS của bạn sẽ cập nhật thông tin đó nếu tên miền thay đổi, nhưng việc nhập thủ công ngay bây giờ sẽ chỉ giúp mọi thứ nhanh hơn về sau.

2. Nginx Proxy Manager xử lý nhu cầu Proxy ngược của bạn

Docker container đầu tiên khởi động sau DDNS của bạn sẽ là Nginx Proxy Manager. Với Nginx Proxy Manager, bạn sẽ có thể định tuyến lưu lượng truy cập đến Docker container của trang web.

Nginx Proxy Manager là một proxy ngược. Nó lấy lưu lượng truy cập đến trên các cổng :80 và :443 (các kết nối không an toàn và SSL) và chuyển tiếp chúng đến một nơi khác trên mạng của bạn. Bạn sẽ cần cấu hình tường lửa của mạng để chuyển tiếp các cổng 443 và 80 bên ngoài đến bất kỳ cổng nào được ánh xạ đến để cài đặt Nginx Proxy Manager của bạn.


Sau khi bạn đã có Nginx Proxy Manager Docker container và chạy với các cổng được chuyển tiếp, đã đến lúc thiết lập định tuyến. Bắt đầu bằng cách điều hướng đến hosts sau đó nhấp vào add new host. Bạn sẽ thấy một cửa sổ bật lên và đó là nơi bạn sẽ nhập thông tin cho trang web của mình. Chỉ cần nhập tên miền, IP máy chủ và cổng mà bạn sẽ chạy trang web. Cổng có thể là bất kỳ cổng nào bạn muốn và thường được xác định bởi phần mềm bạn chạy.


Ví dụ, bạn có thể chuyển tiếp   Đăng nhập để xem liên kết đến 192.168.1.6:2368, đây sẽ là IP của máy chủ của bạn với cổng Ghost ở cuối. Bất cứ khi nào ai đó truy cập   Đăng nhập để xem liên kết, sau đó nó sẽ định tuyến đến IP công khai của bạn và sau đó Nginx Proxy Manager sẽ định tuyến đến vùng chứa thích hợp.

Nginx Proxy Manager không chỉ xử lý định tuyến mà còn xử lý chứng chỉ SSL thông qua Let's Encrypt. Các chứng chỉ SSL miễn phí này có thể giúp những người duyệt blog của bạn an tâm hơn, thêm một lớp bảo mật vào phiên duyệt. Toàn bộ quy trình SSL, từ đầu đến cuối, cũng liền mạch trong Nginx Proxy Manager.

Khi bạn có thể thiết lập một proxy ngược, thì việc thiết lập nhiều proxy ngược tùy thích khá đơn giản. Tôi có hơn 30 proxy ngược trên mạng của riêng mình, cho các dịch vụ như Calibre Web, audiobookshelf, Tautulli, máy chủ Minecraft, máy chủ Satisfactory, máy chủ Ark Survival: Evolved và nhiều dịch vụ khác nữa.

3. Ghost là một nền tảng viết blog đơn giản và dễ sử dụng

Bây giờ bạn đã thiết lập xong mọi thứ, đã đến lúc cài đặt Ghost.

Bạn có thể mong đợi tôi sử dụng WordPress, vì nó chạy phần lớn internet. Mặc dù WordPress rất tuyệt và tôi đã sử dụng nó trong hơn 15 năm, Ghost là thứ tôi đang chạy blog cá nhân của mình lần này. Nó nhẹ, dễ sử dụng và thành thật mà nói, chỉ đơn giản hơn WordPress.

Ghost hướng đến mục tiêu trở thành một blog cũng có thể có thành phần bản tin. Các bài đăng được viết bằng markdown (cách viết yêu thích của tôi) và có một số plugin cho một số dịch vụ lớn hơn ngoài kia, như Instagram, Discord, MailChimp, YouTube, Patreon và các dịch vụ khác.


Để khởi chạy Ghost, bạn cần thực hiện một số thao tác. Chúng ta sẽ bắt đầu trong Nginx Proxy Manager. Hãy tiếp tục và tạo một máy chủ proxy mới với tên miền của bạn ở ô trống đầu tiên, để lược đồ là HTTP, tiếp theo nhập IP của máy chủ Docker của bạn và sau đó là cổng 2368.

Tôi thường kiểm tra các nút chuyển đổi cho các tài sản bộ nhớ đệm, chặn các khai thác phổ biến và hỗ trợ websockets. Bỏ qua bên cạnh tab SSL, bỏ qua tab vị trí tùy chỉnh. Tại đây, chọn Yêu cầu chứng chỉ SSL mới và đồng ý với các điều khoản, sau đó nhập email của bạn. Nhấp vào lưu và proxy ngược của bạn được thiết lập.


Bây giờ, hãy quay lại máy chủ Docker của bạn. Cá nhân tôi sử dụng Portainer làm GUI web cho Docker, nhưng vì tất cả đều được thực hiện thông qua Docker Compose nên các tệp thiết lập đều giống hệt nhau.

Nếu bạn muốn sử dụng cùng một tệp Docker Compose mà tôi sử dụng cho blog Ghost của mình, hãy xem kho lưu trữ GitHub homelab của tôi. Hãy chắc chắn thay đổi tên miền bằng tên miền của riêng bạn và cũng thay đổi mật khẩu MySQL để an toàn hơn.

Sau khi triển khai tệp Docker Compose, blog Ghost của bạn sẽ có thể hoạt động trên tên miền mới!

4. Trang web của bạn đã hoạt động! Bây giờ thì sao?

Nếu mọi việc được thực hiện đúng và bạn đã cấu hình đúng cài đặt chuyển tiếp cổng trên bộ định tuyến, thì bạn sẽ có thể điều hướng đến tên miền mà bạn đã thiết lập và truy cập phiên bản Ghost bên ngoài.

Bây giờ trang web của bạn đã hoạt động, tiếp theo là gì? Vâng, bạn sẽ muốn bắt đầu bằng cách cấu hình blog Ghost. Có nhiều video trên YouTube và các bài viết khác hướng dẫn bạn từng bước những việc cần làm ở đó. Tôi thậm chí còn chưa hiểu hết tất cả các tùy chọn cấu hình.

Vào thời điểm này, trang web của bạn đã hoạt động trên internet và bất kỳ ai cũng có thể truy cập. Bạn có thể muốn đưa trang đích lên trong khi bạn đang làm việc trên đó hoặc chỉ cần để nguyên trong khi nó đang được xây dựng. Bắt đầu xuất bản các bài đăng trên blog, gửi bản tin email và tận hưởng việc lưu trữ trang web cá nhân của riêng bạn trên phần cứng tại nhà, miễn phí phí lưu trữ!

Bắt đầu một blog hoàn chỉnh có thể không phải là điều bạn đang tìm kiếm. Nếu đó là bạn, thì microblogging có thể chính là thứ bạn đang tìm kiếm. Nó hơi khác so với blog truyền thống và dễ thiết lập hơn nhiều vì thường được thực hiện trên phương tiện truyền thông xã hội, nghĩa là không cần cấu hình cơ sở dữ liệu, DDNS hoặc proxy ngược để thiết lập và thường miễn phí!