Bỏ qua đến nội dung
Hành trình phát triển home server để tự học về công nghệ

Hành trình phát triển home server để tự học về công nghệ

Hành trình phát triển home server tại nhà như một cách tự học công nghệ: bắt đầu từ Raspberry Pi/NUC chạy Homebridge, rồi chuyển sang tủ rack có UPS, PC chạy 24/7 và cuối cùng là dựng hẳn hệ thống server chuyên dụng.

Có những dự án bắt đầu rất nhỏ, mình chưa bao giờ nghĩ mình sẽ tiến đến các mốc xa hơn về công nghệ để học và thực hành nhiều kiến thức mới về network như vậy.

Ngày đầu mình chỉ cần một thiết bị nhỏ để làm cầu nối cho nhà thông minh. Trong nhà có đủ loại thiết bị IoT giá rẻ: công tắc, cảm biến, hồng ngoại, vài món dùng app riêng của từng hãng. Mỗi hãng một app, mỗi app một cách điều khiển, còn Apple HomeKit thì chỉ nhận những thiết bị hỗ trợ chính thức. Cách rẻ và thực tế nhất lúc đó là dựng một bridge trung gian.

Và thế là mình bắt đầu với những máy nhỏ: Raspberry Pi, NUC, mini-PC. Chỉ cần cắm điện, nối mạng, cài Homebridge, thêm plugin tương ứng, rồi đẩy dần các thiết bị không hỗ trợ HomeKit lên app Nhà của Apple.

Raspberry Pi là kiểu thiết bị nhỏ gọn phù hợp cho giai đoạn đầu học homelab và Homebridge

Giai đoạn NUC và Raspberry Pi

Homebridge là kiểu phần mềm rất đúng tinh thần "đủ dùng là được". Nó không cần một server mạnh. Một Raspberry Pi, NUC hoặc mini-PC nhỏ cũng có thể chạy ổn nếu chỉ làm nhiệm vụ bridge thiết bị.

Lúc đó mục tiêu của mình rất rõ:

  • Đưa thiết bị IoT giá rẻ lên HomeKit mà không phải thay toàn bộ hệ sinh thái.
  • Gom nhiều hãng khác nhau vào một giao diện điều khiển quen thuộc.
  • Giữ hệ thống đủ nhẹ để chạy liên tục mà không tốn điện.
  • Có chỗ để thử plugin mới vào cuối tuần, sai thì xoá, đúng thì giữ.

Những buổi cuối tuần đầu tiên thường chỉ xoay quanh chuyện rất nhỏ: hôm nay thử đưa một công tắc lên HomeKit, tuần sau thử thêm cảm biến, rồi lại thử điều khiển điều hoà bằng Broadlink, TV bằng plugin riêng, hoặc vài món Xiaomi/Tuya/eWeLink. Nếu cần một điểm bắt đầu cụ thể, mình đã viết riêng bài cài đặt Homebridge để đưa thiết bị không hỗ trợ lên Apple Home.

Mỗi món thành công lại mở ra thêm một câu hỏi mới: nếu bridge được thiết bị này, vậy camera thì sao? Nếu Homebridge chạy được, vậy Home Assistant thì sao? Nếu đã có Docker, tại sao không chạy thêm vài dịch vụ khác?

Mini-PC bắt đầu không còn đủ

Vấn đề của homelab là nó hiếm khi dừng ở nhu cầu ban đầu.

Một máy nhỏ chạy Homebridge thì ổn. Nhưng khi bắt đầu thêm Home Assistant, MQTT, Zigbee2MQTT, Scrypted, database, reverse proxy, vài container phụ trợ và dashboard giám sát, mọi thứ bắt đầu khác. CPU vẫn có thể chịu được, nhưng RAM và I/O trở thành giới hạn rõ rõ ràng.

Lúc đó mình cũng bắt đầu dùng server ở nhà cho việc coding. Không chỉ là smart home nữa, mà còn là nơi chạy dev environment, thử container, test database, build thử app, chạy tool nội bộ, và đôi khi thử những open source project mới tìm được trong tuần.

Mini-PC vẫn hay vì gọn và tiết kiệm điện, nhưng nó không còn cho mình cảm giác thoải mái khi thử nghiệm. Mỗi lần muốn chạy thêm gì đó lại phải tính RAM còn bao nhiêu, disk I/O có nghẽn không, container nào đang ăn tài nguyên, service nào nên tắt bớt.

Bắt đầu làm tủ rack, đặt UPS và dùng PC làm home server

Bước chuyển lớn đầu tiên là tận dụng một chiếc PC cũ làm server chạy 24/7. Trước đó PC chỉ thỉnh thoảng mới bật lên để làm việc nặng. Nhưng khi nhu cầu coding và self-hosting tăng dần, việc để nó nằm không lại khá phí. Nếu máy đã có sẵn CPU mạnh hơn, RAM nhiều hơn, ổ cứng dễ nâng cấp hơn, tại sao không biến nó thành máy chủ chính trong nhà?

Từ đây homelab không còn là "cắm một con Raspberry Pi chạy Homebridge" nữa. Nó bắt đầu có cấu trúc rõ hơn:

  • Máy chủ chính chạy 24/7.
  • Docker/Portainer để quản lý dịch vụ.
  • Reverse proxy để đưa nhiều service ra cùng một public IP/domain.
  • Backup cấu hình và dữ liệu quan trọng.
  • Giám sát tài nguyên để biết container nào đang làm máy nóng hoặc ăn RAM.
  • Tách dịch vụ theo vai trò thay vì cài lẫn lộn vào một hệ điều hành.

PC cũ tạo ra một cảm giác rất khác. Mình không còn phải quá dè chừng khi dựng thêm một service mới để thử. Có thể tạo môi trường test, chạy database riêng, deploy một app nhỏ, rồi xoá đi nếu thấy không phù hợp.

Đây cũng là giai đoạn mình học được nhiều nhất về vận hành thực tế: một service chạy được khác với một service chạy ổn định. Muốn chạy 24/7 thì phải nghĩ tới log, backup, update, restart policy, network, storage, nhiệt độ, điện, và cả chuyện khi mình đi vắng thì hệ thống có tự đứng dậy được không.

Khi bắt đầu public service ra ngoài, mình cũng phải học thêm phần network một cách nghiêm túc hơn. Ví dụ, để nhiều service cùng đi qua một public IP, mình dùng reverse proxy; phần này có thể đọc thêm trong bài Reverse proxy - Truy cập từ domain vào nhiều server trên 1 public IP. Còn nếu ở trong nhà mà không truy cập được server bằng domain public, vấn đề thường nằm ở Hairpin NAT; mình đã ghi lại trong bài Không thể truy cập vào home server thông qua public IP khi đang truy cập Wi-Fi ở nhà.

Vì sao lại cần mạnh hơn nữa?

Khi bắt đầu dùng homelab cho coding, nhu cầu tăng rất nhanh.

Một vài container smart home không tốn nhiều tài nguyên. Nhưng nếu thêm database, CI nhỏ, môi trường dev, media server, monitoring, vài VM để test hệ điều hành, hoặc các tool open source mới, phần cứng bắt đầu không còn quá dư.

PC không được thiết kế để chạy 24/7 quá lâu, mình thường xuyên gặp sự cố với phần cứng. Và chi phí thay thế các linh kiện này bắt đầu trở nên quá đắt đỏ đối với nhu cầu học tập của mình.

Không phải lúc nào hệ thống cũng dùng hết tài nguyên. Nhưng điểm hay của server riêng là mình có thể thử nghiệm mà không phải hỏi "có nên thuê thêm VPS không?". Cuối tuần muốn thử một stack mới thì clone repo, dựng container, cấp domain nội bộ, test vài ngày, rồi quyết định giữ hay xoá.

Sau một thời gian, mình bắt đầu nhìn sang các dàn server cũ. Chúng không mới, không tiết kiệm điện như mini-PC, nhưng đổi lại có nhiều RAM, nhiều khe ổ cứng, nhiều cổng mạng, và được thiết kế để chạy liên tục.

Săn server cũ DDR3 giá rẻ để tăng độ ổn định

Mình chọn thử vài server cũ dùng RAM DDR3 vì chi phí nâng cấp rẻ hơn nhiều so với các nền tảng mới. Quan trọng hơn, dòng máy này được sinh ra để chạy liên tục: nguồn, quạt, khe RAM, khay ổ cứng, card mạng và khả năng thay thế linh kiện đều hợp với kiểu học vận hành lâu dài.

Việc chuyển sang server cũ không phải vì lúc nào cũng cần dùng hết tài nguyên. Nó giống như mở rộng không gian để học. Khi có nhiều RAM và khả năng tách môi trường tốt hơn, mình có thể chia máy ảo rõ ràng hơn:

  • Một VM cho Home Assistant và các thành phần smart home quan trọng.
  • Một VM/container group cho web service, reverse proxy, database.
  • Một môi trường riêng cho coding và test app.
  • Một khu vực thử nghiệm để phá thoải mái, hỏng thì restore snapshot.
  • Một phần tài nguyên dành cho media, backup hoặc các service phụ trợ.

Lúc này homelab trở thành một phòng thí nghiệm nhỏ trong nhà. Không chỉ để tiết kiệm tiền thuê server, mà để hiểu cách hệ thống thật vận hành: mạng, storage, ảo hoá, backup, downtime, phân quyền, bảo mật, tự động hoá, giám sát.

Điều thú vị là càng nâng cấp phần cứng, mình càng thấy giá trị của những bài học từ Raspberry Pi ngày đầu. Nếu không từng vật lộn với một thiết bị nhỏ, rất khó hiểu vì sao cần giữ hệ thống gọn, vì sao backup quan trọng, vì sao không nên cài mọi thứ vào một chỗ, và vì sao một service "chạy được" chưa chắc đã "đáng để chạy 24/7".

Một vấn đề nữa với thiết bị server là tiếng ồn và sử dụng nhiều năng lượng. Nó tiêu thụ cỡ bạn bật 4 cái bóng đèn liên tục vậy. Mình có đầu tư hệ thống năng lượng mặt trời tích điện vào pin lưu trữ rồi nên gần như mình vận hành home server miễn phí.

Mạng trong nhà cũng phải lớn lên cùng server

Khi server ở nhà bắt đầu chạy nhiều việc hơn, mạng trong nhà cũng không thể giữ nguyên kiểu "router nhà mạng làm tất cả". Smart home, camera, NAS, máy chủ, laptop, điện thoại và các thiết bị IoT cùng hoạt động cả ngày sẽ làm lộ ra rất nhiều vấn đề nhỏ.

Mình đã tách dần vai trò: router riêng, switch riêng, AP riêng, dây LAN cho các điểm quan trọng, rồi cấu hình lại cách các thiết bị đi qua mạng. Phần này liên quan trực tiếp tới bài Vấn đề đối với Wi-Fi khi sử dụng smarthome, vì home server ổn định đến đâu cũng sẽ vô nghĩa nếu mạng nội bộ chập chờn.

Ba năm cuối tuần với homelab

Nhìn lại khoảng 3 năm, phần đáng giá nhất không hẳn là dàn máy chủ mạnh hơn. Thứ đáng giá hơn là thói quen dành cuối tuần để khám phá.

Có cuối tuần chỉ để đọc tài liệu. Có cuối tuần chỉ để sửa một lỗi mạng rất nhỏ. Có cuối tuần dựng một service mới rồi xoá ngay vì thấy không hợp. Có cuối tuần ngồi đo điện, chỉnh quạt, sắp xếp lại dây mạng, đổi ổ cứng, viết lại backup script, hoặc tìm cách để một món IoT giá rẻ hoạt động ổn hơn trong HomeKit.

Mỗi cuối tuần là một khoảng thời gian cho việc khám phá khoa học, thử nghiệm cái mới, và biến những thứ đọc được thành hệ thống thật đang chạy trong nhà.

Homelab vì vậy không chỉ là "máy chủ tại nhà". Nó là một cách vừa học vừa thực hành công nghệ. Bạn bắt đầu từ một nhu cầu nhỏ, tự giải quyết nó, rồi để những câu hỏi mới kéo mình đi xa hơn.

Từ Raspberry Pi, NUC, mini-PC chạy Homebridge cho vài thiết bị IoT giá rẻ, tới PC cũ chạy 24/7 cho coding, rồi đến các server cũ DDR3 trong tủ rack, hành trình này không đi theo một bản thiết kế hoàn hảo từ đầu. Nó lớn lên theo nhu cầu, theo sự tò mò, và theo những ngày cuối tuần mình muốn thử thêm một điều mới.

Đọc tiếp

Bạn thấy bài viết hữu ích?

Đăng ký để nhận thông báo khi có bài viết mới.

Kiểm tra hộp thư để xác nhận email!
Bạn đã đăng ký thành công vào Geek Playground
Tuyệt vời! Tiếp theo, hoàn tất thanh toán để có quyền truy cập đầy đủ vào Geek Playground
Chào mừng trở lại! Bạn đã đăng nhập thành công.
Thành công! Tài khoản của bạn đã được kích hoạt đầy đủ, bạn hiện có quyền truy cập vào tất cả nội dung.
Thành công! Thông tin thanh toán của bạn đã được cập nhật.
Cập nhật thông tin thanh toán không thành công.