Mini Webserver - Biến máy tính cá nhân thành Home Server
Bạn đang dư một cái máy tính cũ không biết làm gì, hoặc cái PC hiện tại ít khi sử dụng quá, muốn chuyển đổi mục đích sử dụng nó sang hosting web chẳng hạn
Hiện nay để vận hành một website bạn có 2 phương án:
- Shared host: Giá rẻ, tuy nhiên chỉ xài được wordpress. Tốc độ tương đối chậm
- Thuê VPS: Mọi thứ tuyệt vời, không có gì phải lo...ngoại trừ chi phí đắt
Thông thường chi phí lớn nhất khi mình sử dụng VPS là chiếm dụng băng thông, ngoài cài web mình sẽ nghịch mấy cái VPN hay AI application nên phát sinh cũng là vấn đề đáng suy nghĩ. Nếu chủ động làm được ở nhà thì gần như mấy khoản này chả tốn thêm chi phí gì.
Mình đang vận hành vài web cá nhân để viết lách, nghiên cứu mấy thứ linh tinh liên quan tới SEO hay chạy AI model để thử nghiệm các open source application mới nhằm mục đích nghiên cứu học tập là chính. Chi phí để thuê hàng tháng cho VPS cũng không quá nhiều nhưng tính ra thì cũng phí vì gần như mình chả xài hết sức mạnh phần cứng tối thiểu. Nghĩ lại ở nhà cũng đang có dư cái PC, sẽ thế nào nếu biến nó thành một cái VPS luôn nhỉ?
Vì sao mình muốn xây dựng home server - Self hosting tại nhà
Hiện tại chủ yếu xài laptop nên gần như cả tháng bật PC lên xài được vài lần, mình đã tính toán thử chi phí để chạy PC 24/7 bằng việc gắn thiết bị vào đo lượng điện tiêu thụ cũng như giới hạn lại phần cứng để xem có thể tăng giảm mức tiêu thụ điện thực tế theo nhu cầu vận hành hay không. Thì nhận thấy rằng việc ảo hoá phần cứng và cấu hình để giới hạn mức dùng CPU, RAM, GPU sẽ giảm được khá nhiều W khi vận hành. Hơn nữa mình cũng đang lắp điện mặt trời cũng như trả tiền internet 2 line nên khá hoàn hảo để có thể biến nhà trở thành một máy chủ.
Okay, vậy bây giờ bắt tay vào để tự xây dựng 1 cloud server/web server tại nhà. Đâu là cách làm tối ưu nhất? Đây được coi như một bài thực hành để mình tìm hiểu về network và phần cứng máy tính.
Mục tiêu đề ra với dự án
- Làm thế nào để có thể tận dụng tối đa sức mạnh phần cứng của máy tính chạy server
- Cần kiểm soát các dịch vụ chạy trên server này một cách độc lập. Tránh 1 dịch vụ gây quá tải toàn bộ hệ thống máy chủ
- Làm thế nào để an toàn di chuyển dữ liệu, bảo trì các máy chủ với zero downtime
- Backup, restore server một cách dễ dàng. Khôi phục lại hệ điều hành nhanh chóng khi xảy ra lỗi trên toàn hệ thống
Với những mục tiêu trên ban đầu mình đã thử qua cài linux, cài fake synology... tuy nhiên vấn đề luôn là tài nguyên bị chiếm dụng không kiểm soát nên có những lúc không xài gì vẫn chạy hết công suất.
Đương nhiên vẫn có phương án giới hạn trên từng container, nhưng khó scale up khi cần
Phương án giới hạn dung lượng phần cứng trên Docker Compose
Thêm giới hạn sau vào stack khi deploy container để đặt giới hạn về phần cứng
service:
mem_limit: 512m
mem_reservation: 128M
cpus: 1
Phương án cuối cùng mình tìm thấy là lựa chọn một nền tảng ảo hoá để giả lập các hệ điều hành khác nhau lên trên một phần cứng. Dễ dàng thay thế và mở rộng phần cứng không gây downtime.
Giới thiệu về Proxmox
Proxmox là một nền tảng mã nguồn mở tích hợp các công cụ ảo hóa và quản lý container, được thiết kế để cung cấp một giải pháp toàn diện cho việc quản lý các môi trường IT phức tạp. Được phát triển bởi công ty Proxmox Server Solutions GmbH, Proxmox hỗ trợ ảo hóa KVM và LXC, cho phép người dùng chạy các máy ảo và container trên cùng một nền tảng. Với giao diện web trực quan và nhiều tính năng mạnh mẽ như clustering, high availability, và backup, Proxmox giúp tối ưu hóa tài nguyên và đơn giản hóa quy trình quản lý hệ thống. Công cụ này đặc biệt phù hợp cho các doanh nghiệp và tổ chức cần một giải pháp ảo hóa mạnh mẽ và linh hoạt, với chi phí thấp nhờ tính chất mã nguồn mở của nó.
Hướng dẫn thực hiện
Bắt đầu cài đặt hệ điều hành để thực hiện môi trường ảo hoá
Vấn đề chắc chắn phát sinh khi bạn hosting webserver tại nhà