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

Mini Webserver - Biến máy tính cá nhân thành Home Server
Photo by Christina @ wocintechchat.com / Unsplash

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

  1. 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
  2. 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ủ
  3. 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
  4. 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.

Tìm hiểu về công nghệ ảo hoá - [Phần 1] Ảo hoá phần cứng: Hyper-V vs KVM vs VMware vSphere vs Xen
Trong thời gian vọc vạch nghiên cứu về Hyper-V, mình bắt đầu tìm hiểu sâu hơn về các công nghệ ảo hoá khác đang được sử dụng trên thế giới. Bài viết này mình sẽ tổng hợp lại những kiến thức đã góp…

Tìm hiểu thêm về các phương án ảo hoá phần cứng

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á

Hướng dẫn cài đặt Proxmox
Biến máy tính cũ thành máy chủ chạy đủ thứ, dễ dàng cài đặt nhiều hệ điều hành lên trên cùng 1 phần cứng, chạy độc lập hoàn toàn

Vấn đề chắc chắn phát sinh khi bạn hosting webserver tại nhà

Reverse proxy - Truy cập từ domain vào nhiều server trên 1 public IP
Truy cập từ domain vào cùng 1 port 80 trên 2 server khác nhau trong cùng 1 public IP tại nhà
Không thể truy cập vào home server thông qua public IP khi đang truy cập Wi-Fi ở nhà
Phiền phức khi tự host webserver tại nhà