Bạn đang ấp ủ ý định sở hữu một trang web cá nhân, nhưng lại e ngại chi phí duy trì hàng tháng cho các dịch vụ hosting? Trong bối cảnh công nghệ phát triển không ngừng, việc tự mình vận hành một website ngay tại chính ngôi nhà của bạn giờ đây đã trở nên khả thi và dễ dàng hơn bao giờ hết. Với sự kết hợp mạnh mẽ từ Docker, Nginx Proxy Manager và Ghost, bạn hoàn toàn có thể xây dựng một nền tảng trực tuyến chuyên nghiệp mà không cần bỏ ra một đồng phí hosting nào. Bài viết này sẽ hướng dẫn bạn từng bước chi tiết để biến ý tưởng đó thành hiện thực, giúp bạn kiểm soát hoàn toàn trang web của mình từ A đến Z, đồng thời tối ưu hóa chi phí.
Những Yếu Tố Cần Thiết Để Chạy Website Cá Nhân Tại Gia
Để khởi chạy 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. Đến khi website của bạn chính thức đi vào hoạt động, bạn nên có sẵn 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 và một vài container được triển khai.
Đầu tiên và quan trọng nhất 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ẽ; một chiếc máy tính mà bạn đang có sẵn tại nhà cũng có thể hoạt động tốt. Raspberry Pi, Intel NUC, một máy tính để bàn cũ, hay thậm chí là một chiếc laptop đời cũ cũng có thể được tận dụng. 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, 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).
Tiếp theo là 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 chú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, như Cloudflare. Trong khi các dịch vụ VPS (máy chủ ảo riêng) hoặc các nền tảng hosting khác cung cấp IP cố định, việc tự host website tại nhà rất có thể khiến địa chỉ IP của bạn 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 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 truy cập được.
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 hosting mà chúng tôi đề xuất ở đây. Docker có khả năng chạy rất nhiều dịch vụ, nhưng đối với website của bạn, chúng ta sẽ cần một container DDNS, Nginx Reverse Proxy, và tất nhiên, chính website của bạn.
Để cấu hình container Cloudflare DDNS Docker, bạn sẽ cần khóa API (API key) của 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 duy trì cập nhật. Tất cả những thông tin này sẽ được thiết lập bằng cá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 và tên miền phụ mới trong tương lai trở nên dễ dàng.
Cấu hình container Cloudflare DDNS Docker trên giao diện web Portainer
Để nhanh chóng khởi động, bạn có thể truy cập một trang web như What’s My IP Address để tìm địa chỉ IP công khai của mình. Hãy nhập địa chỉ IP đó vào bản ghi A của tên miền mà bạn muốn sử dụng cho website. DDNS của bạn sẽ tiếp tục cập nhật nó nếu tên miền 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 Toàn Diện
Container Docker đầu tiên mà bạn nên khởi động sau khi thiết lập DDNS chính là Nginx Proxy Manager. Với Nginx Proxy Manager, bạn sẽ có khả năng đị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 (máy chủ proxy ngược). Nó tiếp nhận lưu lượng truy cập đến trên các cổng :80 và :443 (lần lượt là kết nối không bảo mật và kết nối SSL) và chuyển tiếp chúng đến một địa chỉ 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 của mạng để 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.
Các bước khởi động ban đầu của Nginx Proxy Manager
Sau khi container Docker Nginx Proxy Manager của bạn đã hoạt động và 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 mục “Hosts” (Máy chủ) rồi nhấp vào “Add New Host” (Thêm máy chủ mới). Một cửa sổ bật lên sẽ xuất hiện, và đó là nơi bạn 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 kỳ cổng nào 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 một host mới trong giao diện Nginx Proxy Manager
Ví dụ, bạn có thể cấu hình để blog.domain.com
chuyển tiếp đế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 Ghost ở cuối. Bất cứ khi nào ai đó truy cập blog.domain.com
, lưu lượng đó sẽ được định tuyến đến địa chỉ IP công khai của bạn, sau đó Nginx Proxy Manager sẽ chuyển tiếp nó đến container phù hợp.
Nginx Proxy Manager không chỉ xử lý việc định tuyến mà còn tự động quản lý các 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, bổ sung một lớp bảo mật cần thiết cho phiên duyệt web. Toàn bộ quy trình SSL, từ đầu đến cuối, diễn ra liền mạch trong Nginx Proxy Manager.
Khi bạn đã có thể thiết lập một reverse proxy, việc thiết lập bao nhiêu tùy thích cũng 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, 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.
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.
Bạn có thể đã mong đợi tôi 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 mà 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, đơn giản hơn WordPress rất nhiều.
Ghost được định hướng là 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 viết được soạn thảo bằng Markdown (cách viết yêu thích của tôi), và có một số plugin hỗ trợ cho các dịch vụ lớn hiện có, 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 và xuất bản Ghost
Để 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 ở ô trống đầu tiên, giữ nguyên lược đồ là HTTP, sau đó nhập địa chỉ IP của máy chủ Docker và cuối cùng là cổng 2368.
Tôi thường chọn các tùy chọn như “cache assets” (bộ nhớ đệm tài sản), “block common exploits” (chặn các khai thác phổ biến) và “websockets support” (hỗ trợ websockets). Bỏ qua tab “Custom Locations” và chuyển sang tab “SSL”. Tại đây, chọn “Request New SSL Certificate” (Yêu cầu chứng chỉ SSL mới) và đồng ý với các điều khoản, sau đó nhập địa chỉ email của bạn. Nhấp vào “Save” (Lưu), và reverse proxy của bạn đã được thiết lập.
Tùy chọn cấu hình cho thiết lập Nginx Proxy Manager dành 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 web cho Docker, nhưng vì tất cả đều được thực hiện thông qua Docker Compose, các tệp thiết lập là giống hệt nhau.
Nếu bạn muốn sử dụng cùng tệp Docker Compose mà tôi dùng cho blog Ghost của mình, hãy xem kho lưu trữ GitHub homelab của tôi. Đảm bảo thay đổi tên miền thành 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 và có thể truy cập được tại tên miền mới của bạn!
Website Của Bạn Đã Trực Tuyến! Bước 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ể truy cập 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.
Giờ đây, website của bạn đã hoạt động trực tuyến, vậy bước tiếp theo là gì? Chắc chắn rồi, bạn sẽ muốn bắt đầu cấu hình blog Ghost. Có rất 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 về cách thực hiện điều đó. Tôi thậm chí còn chưa tìm hiểu đầy đủ 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ên internet 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ó, hoặc chỉ đơn giản là để nguyên trong quá trình xây dựng. Hãy 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 tự host website cá nhân của bạn trên phần cứng tại nhà, hoàn toàn miễn phí phí hosting!
Có thể việc bắt đầu một blog đầy đủ chức năng không phải là điều bạn đang tìm kiếm. Nếu vậy, microblogging (blog siêu nhỏ) có thể chính 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 hoặc reverse proxy, và thường là miễn phí!