Bạn muốn tự mình xây dựng một trang web mà không cần trả tiền cho các dịch vụ lưu trữ bên ngoài? Tin tốt là việc host một website trên Raspberry Pi thực sự dễ dàng và bạn có thể hoàn thành việc này ngay cuối tuần này. tinhoccongnghe.net sẽ hướng dẫn bạn từng bước để biến chiếc Raspberry Pi nhỏ gọn thành một máy chủ web mạnh mẽ, tiết kiệm và hoàn toàn do bạn kiểm soát. Đây là giải pháp lý tưởng cho những dự án cá nhân, blog nhỏ hoặc các trang web cộng đồng mà bạn không muốn tốn kém chi phí hosting hàng tháng.
Raspberry Pi Nào Phù Hợp Để Host Website Của Bạn?
Mặc dù nhiều người nghĩ rằng cần một Raspberry Pi 5 mới nhất để chạy một website, nhưng thực tế bạn hoàn toàn có thể sử dụng các hệ thống cũ hơn rất nhiều. Đối với tinhoccongnghe.net, chúng tôi đã từng triển khai một Pi 3B trong hệ thống mạng để làm web host. Mặc dù không phải là nhanh nhất, nhưng nó đã xử lý dễ dàng việc chạy một blog Ghost.
Tuy nhiên, một chiếc Raspberry Pi 4 có thể sẽ là lựa chọn tốt hơn vì nó có hiệu năng cao hơn một chút để khởi động mọi thứ nhanh chóng hơn. Thực chất, bất kỳ thế hệ Raspberry Pi nào (ngoại trừ dòng Zero) đều hoàn hảo để host một website nhỏ.
Nếu bạn muốn nâng cấp lên một website lớn hơn hoặc cần khả năng phục vụ hàng ngàn người dùng truy cập đồng thời, lúc đó bạn sẽ cần nhiều sức mạnh xử lý hơn. Nhưng đối với một dự án nhỏ mới bắt đầu, hầu hết các phiên bản Pi đều đủ đáp ứng.
Docker – Nền Tảng Quan Trọng Cho Website Của Bạn
Docker sẽ là công cụ xử lý toàn bộ website và tất cả các dịch vụ trên Raspberry Pi của bạn. May mắn thay, việc cài đặt Docker khá dễ dàng.
Chúng tôi giả định bạn đang bắt đầu với một chiếc Raspberry Pi mới cài đặt Raspberry Pi OS, vì đây là hệ điều hành được khuyến nghị cho các tác vụ máy chủ web trên Pi của bạn. Để bắt đầu, bạn sẽ cài đặt Docker trên Raspberry Pi. Quy trình này khá đơn giản, bạn chỉ cần làm theo hướng dẫn cài đặt Docker cho Debian, và bạn sẽ sẵn sàng trong thời gian ngắn.
Biểu tượng Docker trên bàn phím máy tính xách tay, thể hiện sự tích hợp công nghệ
Sau đó, chúng tôi khuyên bạn nên triển khai Portainer. Đây là một giao diện quản lý Docker trực quan, giúp việc quản lý các host Docker trở nên dễ dàng hơn nhiều. Tuy nhiên, bạn có thể bỏ qua bước này nếu muốn gắn bó với việc sử dụng Docker Compose truyền thống qua dòng lệnh.
Để thực sự triển khai website của bạn, bạn có thể tham khảo một file Docker Compose tiện dụng được xây dựng sẵn. File Compose này sẽ triển khai Nginx Proxy Manager, ddclient, Ghost và một cơ sở dữ liệu MySQL cho Ghost sử dụng, tự động cấu hình mọi thứ ngoại trừ các khóa API hoặc mật khẩu của riêng bạn. Có một vài điều quan trọng cần được sửa đổi trong file Docker Compose để nó hoạt động, chúng tôi sẽ giải thích chi tiết khi đi sâu vào bài viết.
Chọn Lựa Tên Miền Phù Hợp Cho Website Của Bạn
Trước khi thực sự triển khai website hoặc file Docker Compose, bạn sẽ cần chọn một tên miền, nếu bạn chưa có. Có rất nhiều nhà đăng ký tên miền ngoài kia. tinhoccongnghe.net hiện tại chủ yếu sử dụng Cloudflare. Chúng tôi đã từng dùng Google Domains và thử cả Namecheap khi Google Domains ngừng hoạt động. Tuy nhiên, Cloudflare nổi bật vì nhiều lý do, một trong số đó là dịch vụ DNS động miễn phí mà họ cung cấp.
Vì vậy, hãy truy cập Cloudflare và đăng ký tên miền mà bạn đã ấp ủ. Hoặc, nếu bạn đã có một tên miền, thì mọi thứ càng dễ dàng hơn!
Thiết Lập Dynamic DNS (DDNS) Cho Tên Miền Mới Của Bạn
Bất kỳ tên miền nào bạn có cũng sẽ cần hỗ trợ Dynamic DNS (DDNS). Chức năng của DDNS là tự động cập nhật địa chỉ IP của tên miền nếu địa chỉ IP nhà bạn thay đổi.
Giao diện cài đặt Dynamic DNS (DDNS) trên router hoặc dịch vụ tên miền
Tùy thuộc vào nhà cung cấp dịch vụ internet của bạn, địa chỉ IP của bạn có thể không thay đổi trong nhiều năm hoặc có thể thay đổi hàng ngày. Bất kể ISP của bạn là ai, bạn sẽ muốn triển khai một thiết lập Dynamic DNS. Cách hoạt động của nó là một chương trình chạy trên máy tính hoặc máy chủ trong nhà bạn và kết nối với API của nhà đăng ký tên miền, đẩy địa chỉ IP của nhà bạn dưới dạng bản ghi DNS cho tên miền của bạn bất cứ khi nào nó thay đổi.
Cloudflare hỗ trợ điều này nguyên bản thông qua API chỉnh sửa dựa trên vùng của họ. Vì lý do này, chúng tôi đã bao gồm container Docker ddclient trong file Docker Compose để website của bạn hoạt động. Tuy nhiên, container ddclient cũng hoạt động với một số nhà cung cấp tên miền khác, vì vậy nếu bạn không sử dụng Cloudflare, hãy kiểm tra xem nhà cung cấp của bạn có được liệt kê không.
Cấu hình ddclient khá dễ dàng. Bạn sẽ bắt đầu bằng cách chọn tên miền trong Cloudflare, sau đó nhấp vào “Get your API tokens” ở góc dưới bên phải màn hình. Trên trang xuất hiện, tạo một API token mới có khả năng chỉnh sửa DNS vùng cho tên miền bạn muốn cập nhật. Điều này sẽ cung cấp cho bạn khóa API, sau đó bạn sẽ nhập vào file ddclient.conf. tinhoccongnghe.net có cung cấp một file mẫu để bạn sử dụng trên GitHub của chúng tôi.
Bên trong file ddclient.conf, bạn cũng sẽ thêm tên miền của mình và bất kỳ mục nào bạn muốn nó cập nhật. Theo mặc định, nó chỉ cập nhật mục @ của tên miền của bạn, là root (ví dụ: tenmiencuaban.com). Tuy nhiên, bạn cũng có thể thêm bất kỳ subdomain nào khác mà bạn muốn sử dụng, chẳng hạn như www, blog, store hoặc bất cứ thứ gì khác.
Nginx Proxy Manager – Cổng Vào Và Chứng Chỉ SSL Bảo Mật
Nginx Proxy Manager là cách bạn sẽ xử lý việc định tuyến lưu lượng truy cập web đến container Docker của Ghost. Sau khi Nginx Proxy Manager được triển khai, bạn chỉ cần thêm một proxy host mới với tên miền bạn muốn, địa chỉ IP của Raspberry Pi của bạn và cổng mà Ghost chạy trên đó. Cổng 2368 là mặc định.
Đảm bảo bạn nhấp sang tab SSL và tạo một chứng chỉ SSL mới cho website của bạn. Điều này là rất quan trọng để cung cấp trải nghiệm duyệt web an toàn và bảo mật cho khách truy cập của bạn.
Ghost – Nền Tảng Website Thân Thiện Cho Người Mới Bắt Đầu
Mặc dù có nhiều nền tảng blog và website ngoài kia, tinhoccongnghe.net đặc biệt khuyên bạn nên bắt đầu với Ghost. Nó nhẹ, dễ triển khai và đơn giản để sử dụng. Chúng tôi đã xây dựng nhiều website trong những năm qua, và Ghost hiện là lựa chọn cá nhân của chúng tôi.
Ghost sử dụng ngôn ngữ Markdown để viết cả trang và bài viết, và đây là một lý do chúng tôi thực sự thích sử dụng nó. Bạn không bắt buộc phải dùng Markdown, vì vẫn có thể định dạng bài viết trực tiếp. Tuy nhiên, việc gõ ## nếu bạn muốn một tiêu đề H2 sẽ nhanh hơn rất nhiều.
Giao diện quản trị của nền tảng blog và xuất bản Ghost, với trình chỉnh sửa nội dung
Ghost cũng cực kỳ nhẹ và nhanh. Không có quá nhiều plugin làm nặng website của bạn như các nền tảng khác, và nó thực sự được thiết kế để làm một việc và làm tốt: trở thành một website. Nó không có phần thương mại điện tử, và bạn không thể biến Ghost thành một diễn đàn.
Tuy nhiên, có một điều Ghost làm khác biệt khiến nó thực sự nổi bật: tính năng thành viên (memberships). Ghost được thiết kế để trở thành một blog hoặc website, nhưng cũng là một trang thành viên. Bạn có thể thiết lập nó với Stripe và cung cấp các cấp độ thành viên khác nhau để phát triển lượng người đăng ký của bạn. Hãy nghĩ về nó như Substack hoặc Patreon, nhưng được host trên máy chủ của riêng bạn.
Riêng điều này là một trong những lý do chúng tôi yêu thích Ghost. Tùy chọn đăng ký có sẵn nếu bạn muốn, nhưng không bắt buộc nếu bạn không cần. Đối với tinhoccongnghe.net, chúng tôi đang xây dựng hai website sẽ tận dụng phần đăng ký thành viên của Ghost, và chúng tôi nghĩ đó là một điểm mạnh lớn cho nền tảng này.
Trước khi bạn hoàn tất stack và triển khai máy chủ của mình, bạn cần thực hiện một vài điều chỉnh cuối cùng cho file Compose. Để bắt đầu, hãy cập nhật biến môi trường URL của container ghost-server thành URL của website của bạn. Bạn cũng sẽ muốn tạo một mật khẩu cơ sở dữ liệu thực sự an toàn và nhập nó vào cả container ghost-server và ghost-db.
Khi bạn đã sửa xong file ddclient.conf và cập nhật file Docker Compose với thông tin website Ghost và cơ sở dữ liệu của bạn, bạn đã sẵn sàng để triển khai!
Chúng tôi muốn lưu ý rằng phần này có thể mất một chút thời gian. Chúng tôi đã triển khai trang Ghost của mình trên Raspberry Pi 3 B, và mất khoảng 15 đến 20 phút trước khi nó hoạt động hoàn chỉnh. Đặc biệt, cơ sở dữ liệu MySQL mất một lúc để khởi động hoàn toàn và sẵn sàng. Vì vậy, hãy kiên nhẫn một chút sau khi bạn triển khai, và sử dụng thời gian đó để hoàn thiện một số cài đặt trong mạng của bạn.
Đảm Bảo Port Forwarding Được Cấu Hình Trên Router Của Bạn
Để truy cập website của bạn từ bên ngoài mạng cục bộ, bạn sẽ cần mở một vài cổng trên router của mình. Để truy cập website tự host mới của bạn, chúng ta sẽ tập trung vào hai cổng: 80 và 443. Cách bạn mở các cổng này khác nhau tùy thuộc vào từng router, và, tùy thuộc vào ISP của bạn, có thể không thực hiện được.
Hình ảnh một chiếc router Wi-Fi đang hoạt động, tượng trưng cho cấu hình mạng
Tuy nhiên, khi bạn truy cập vào khu vực cài đặt chuyển tiếp cổng (port forwarding) của router, đây là những gì bạn cần làm:
Thiết lập cổng ngoài 80 để chuyển tiếp đến cổng nội bộ 8080, và cổng ngoài 443 để chuyển tiếp đến cổng nội bộ 4443. Đây là hai cổng được sử dụng bởi Nginx Proxy Manager, và đây là cách bạn thực sự có thể truy cập website của mình từ bên ngoài mạng cục bộ.
Vậy là xong! Nếu bạn đã làm theo hướng dẫn này, website của bạn bây giờ đã hoạt động! Tại thời điểm này, bạn sẽ muốn tùy chỉnh giao diện Ghost, xây dựng các trang của mình và đưa ra các cấp độ đăng ký nếu bạn quan tâm đến việc đó.
Để đảm bảo website của bạn luôn hoạt động ổn định, hãy tham khảo thêm các container Docker khác mà tinhoccongnghe.net gợi ý, như Uptime-Kuma, một dịch vụ giám sát thời gian hoạt động của website miễn phí và hiệu quả.