Bạn có từng mong muốn vận hành website riêng của mình nhưng lại e ngại chi phí hosting? Đây chính là tình huống mà tôi đã trải qua gần đây. Vậy nên, trong bài viết này, tôi sẽ chia sẻ cách tôi tự triển khai một website nhanh chóng sử dụng Docker, Nginx Proxy Manager và nền tảng blog Ghost, tất cả đều hoàn toàn miễn phí chi phí thuê hosting. Giải pháp này không chỉ giúp bạn tiết kiệm đáng kể mà còn mang lại sự tự chủ và linh hoạt tuyệt vời trong việc quản lý nội dung của mình.
Những Yếu Tố Cần Thiết Để Chạy Website Cá Nhân Tại Nhà
Để có thể tự vận hành một website cá nhân tại nhà, bạn sẽ cần chuẩn bị một vài yếu tố cơ bản. Trước khi website của bạn đi vào hoạt động, hãy đảm bảo bạn đã có một tên miền, một máy chủ để lưu trữ website (có thể là một chiếc laptop cũ, NUC, hoặc thậm chí là Raspberry Pi), Docker đã được cài đặt, và một vài container đã được triển khai sẵn sàng.
Đầu tiên là máy chủ để chứa website của bạn. Thiết bị này không cần phải quá mạnh mẽ; thậm chí, một máy tính bạn đang có sẵn trong nhà cũng có thể hoạt động tốt. Một chiếc Raspberry Pi, NUC, máy tính để bàn cũ, hay thậm chí một chiếc laptop cũ đều có thể là lựa chọn tuyệt vời cho dịch vụ này. Bạn chỉ cần một thiết bị được sản xuất trong khoảng 15 năm trở lại đây và vẫn có khả năng chạy một 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).
Server homelab với các ổ cứng, minh họa cho việc tự host website cá nhân
Tiếp theo là một tên miền. Bạn có thể mua tên miền từ bất kỳ nhà cung cấp nào, nhưng tôi khuyên bạn nên tìm một nhà cung cấp hỗ trợ DDNS (Dynamic DNS) tích hợp sẵn, ví dụ như Cloudflare. Mặc dù bạn sẽ có một địa chỉ IP cố định khi sử dụng máy chủ riêng ảo (VPS) hoặc các nền tảng hosting khác, nhưng khi tự host website tại nhà, rất có thể địa chỉ IP công cộng của bạn sẽ thay đổi theo thời gian. Đây chính là lúc DDNS phát huy tác dụng. Về cơ bản, khi địa chỉ IP tại nhà của bạn thay đổi, DDNS sẽ tự động cập nhật bản ghi A của tên miền để trỏ đến địa chỉ IP mới của bạn, đảm bảo website luôn hoạt động ổn định.
Ngoài tên miền và thiết lập DDNS, bạn cũng cần có Docker cho phương pháp hosting mà tôi sẽ giới thiệu ở đây. Docker có khả năng chạy rất nhiều ứng dụng, nhưng đối với website của bạn, chúng ta sẽ cần một container DDNS, Nginx Reverse Proxy và dĩ nhiên là chính website của bạn.
Logo Docker trên bàn phím laptop, biểu tượng cho giải pháp tự host website bằng Docker
Để cấu hình container Cloudflare DDNS trong Docker, bạn sẽ cần một khóa API (API key) cho Cloudflare có quyền thay đổi các bản ghi DNS cho tên miền cụ thể mà bạn sẽ sử dụng, bản thân tên miền đó và bất kỳ tên miền phụ nào bạn muốn giữ được cập nhật. Tất cả những thông tin này sẽ được thiết lập bằng các biến môi trường (environmental flags) trong Docker, giúp việc thay đổi hoặc thêm các tên miền phụ và tên miền mới trong tương lai trở nên dễ dàng.
Giao diện Portainer cấu hình container Cloudflare DDNS cho IP động
Để nhanh chóng bắt đầu, bạn có thể truy cập một trang web như What’s My IP Address để tìm địa chỉ IP công cộng của mình. Hãy nhập địa chỉ IP đó vào bản ghi A của tên miền bạn muốn sử dụng cho website. DDNS của bạn sẽ giữ cho nó được cập nhật nếu địa chỉ IP thay đổi, nhưng việc nhập thủ công ngay bây giờ sẽ giúp mọi thứ nhanh chóng hơn sau này.
Nginx Proxy Manager: Giải Pháp Reverse Proxy Đa Năng
Container Docker đầu tiên bạn nên triển khai sau DDNS sẽ là Nginx Proxy Manager. Với Nginx Proxy Manager, bạn có thể định tuyến lưu lượng truy cập đến container Docker chứa website của mình một cách hiệu quả.
Nginx Proxy Manager hoạt động như một reverse proxy. Nó nhận lưu lượng truy cập đến trên các cổng :80 (không bảo mật) và :443 (kết nối SSL) và chuyển tiếp chúng đến một vị trí khác trong mạng nội bộ của bạn. Bạn sẽ cần cấu hình tường lửa mạng của mình để chuyển tiếp các cổng 443 và 80 bên ngoài đến các cổng tương ứng được ánh xạ cho cài đặt Nginx Proxy Manager của bạn.
Hệ thống máy chủ kết nối toàn cầu, minh họa hoạt động của reverse proxy
Các bước khởi động Nginx Proxy Manager để quản lý reverse proxy
Khi bạn đã có container Docker của Nginx Proxy Manager chạy và các cổng được chuyển tiếp đúng cách, đã đến lúc thiết lập định tuyến. Bắt đầu bằng cách điều hướng đến “Hosts” và sau đó nhấp vào “Add New Host”. Một cửa sổ bật lên sẽ xuất hiện, và đó là nơi bạn sẽ nhập thông tin cho website của mình. Chỉ cần nhập tên miền, địa chỉ IP của máy chủ và cổng mà bạn sẽ chạy trang web. Cổng này có thể là bất cứ thứ gì bạn muốn và thường được quy định bởi phần mềm bạn đang chạy.
Thiết lập host mới trong giao diện Nginx Proxy Manager
Ví dụ, bạn có thể định tuyến blog.domain.com
đến 192.168.1.6:2368
, đây sẽ là địa chỉ IP của máy chủ của bạn với cổng của Ghost ở cuối. Bất cứ khi nào ai đó truy cập blog.domain.com
, nó sẽ được định tuyến đến địa chỉ IP công cộng của bạn và sau đó Nginx Proxy Manager sẽ chuyển tiếp nó đến container phù hợp.
Nginx Proxy Manager không chỉ xử lý định tuyến mà còn đảm nhiệm việc cung cấp chứng chỉ SSL thông qua Let’s Encrypt. Các chứng chỉ SSL miễn phí này mang lại sự an tâm cho những người duyệt blog của bạn, thêm một lớp bảo mật bổ sung cho phiên duyệt web. Toàn bộ quá trình SSL, từ đầu đến cuối, cũng diễn ra liền mạch trong Nginx Proxy Manager.
Một khi bạn đã thiết lập được một reverse proxy, việc thiết lập nhiều hơn nữa trở nên khá đơn giản. Cá nhân tôi đang có hơn 30 reverse proxy trên mạng của mình, phục vụ cho các dịch vụ như Calibre Web, Audiobookshelf, Tautulli, các máy chủ Minecraft, máy chủ Satisfactory, máy chủ Ark Survival: Evolved và nhiều hơn thế nữa.
Ghost: Nền Tảng Blog Đơn Giản, Mạnh Mẽ và Dễ Sử Dụng
Giờ đây, khi gần như mọi thứ đã được thiết lập, đã đến lúc cài đặt Ghost.
Có thể bạn đã mong đợi tôi sẽ sử dụng WordPress, vì nó đang chạy phần lớn internet. Mặc dù WordPress rất tuyệt vời và tôi đã sử dụng nó hơn 15 năm, nhưng Ghost mới là nền tảng tôi đang sử dụng cho 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, đơn giản hơn WordPress rất nhiều.
Ghost được thiết kế để trở thành một nền tảng blog có thể tích hợp cả thành phần bản tin (newsletter). 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 hỗ trợ các dịch vụ lớn như Instagram, Discord, MailChimp, YouTube, Patreon và nhiều dịch vụ khác.
Giao diện quản trị của nền tảng blog Ghost CMS
Để khởi chạy Ghost, bạn sẽ cần thực hiện một vài bước. Chúng ta sẽ bắt đầu trong Nginx Proxy Manager. Hãy tạo một proxy host mới với tên miền của bạn vào ô đầu tiên, để scheme là HTTP, nhập địa chỉ IP của máy chủ Docker của bạn tiếp theo, và sau đó là cổng 2368.
Tôi thường tích chọn các tùy chọn “Cache Assets”, “Block Common Exploits” và “Websockets Support”. Bỏ qua tab “Custom Locations” và chuyển sang tab “SSL”. Tại đây, chọn “Request New SSL Certificate” và đồng ý với các điều khoản, sau đó nhập email của bạn. Nhấp vào “Save”, và reverse proxy của bạn đã được thiết lập.
Cài đặt cấu hình Nginx Proxy Manager cho blog Ghost
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 giao diện người dùng web cho Docker, nhưng vì mọi thứ đều được thực hiện thông qua Docker Compose, các tệp cài đặt đều giống nhau.
Nếu bạn muốn sử dụng cùng tệp Docker Compose mà tôi sử dụng cho blog Ghost của mình, hãy truy cập kho lưu trữ GitHub homelab của tôi. Hãy nhớ thay đổi tên miền bằng tên miền của riêng bạn và thay đổi mật khẩu MySQL thành một mật khẩu an toàn hơn.
Khi bạn triển khai tệp Docker Compose, blog Ghost của bạn sẽ hoạt động tại tên miền mới!
Website Của Bạn Đã Trực Tuyến! Tiếp Theo Là Gì?
Nếu mọi thứ đã được thực hiện đúng cách và bạn đã cấu hình cài đặt chuyển tiếp cổng (port forwarding) trên bộ định tuyến của mình một cách chính xác, 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 từ bên ngoài.
Vậy là website của bạn đã trực tuyến, bước tiếp theo là gì? Chà, bạn sẽ muốn bắt đầu bằng cách cấu hình blog Ghost. Có rất nhiều video YouTube và các bài viết khác hướng dẫn bạn từng bước cách thực hiện việc đó. Cá nhân tôi cũng chưa khám phá hết tất cả các tùy chọn cấu hình.
Tại thời điểm này, website của bạn đã hoạt động trực tuyến và bất kỳ ai cũng có thể truy cập. Bạn có thể muốn đặt một trang chào mừng (landing page) trong khi bạn đang xây dựng nội dung, hoặc chỉ đơn giản là để nó ở trạng thái “đang xây dựng”. Hãy bắt đầu xuất bản các bài blog, gửi bản tin qua email, và tận hưởng việc tự host website cá nhân của riêng bạn trên phần cứng tại nhà, hoàn toàn miễn phí chi phí hosting!
Việc bắt đầu một blog đầy đủ có thể không phải là điều bạn đang tìm kiếm. Nếu đó là trường hợp của bạn, thì microblogging có thể chính xác là thứ bạn cần. 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 mạng xã hội, nghĩa là không cần cấu hình cơ sở dữ liệu, thiết lập DDNS hay reverse proxy, và thường là miễn phí!