Lựa chọn Raspberry Pi để làm HomeLab server
Có rất nhiều lựa chọn để làm server HomeLab tại nhà, từ một chiếc máy tính cũ, cho tới cả một hệ server chuyên nghiệp. Sau đây là những lý do cũng như yêu cầu, và cả những điều hối tiếc khi lựa chọn Raspberry Pi làm server HomeLab.Đây chủ yếu là bài viết chia sẻ suy nghĩ và kinh nghiệm, không phải là một bài hướng dẫn cài đặt, triển khai. Nếu bạn cần một bài hướng dẫn chi tiết, hãy thử ghé qua bài viết Hosting Raspberry Pi với Ubuntu Server của mình. Tại đó, mình đã viết chi tiết và cô đọng nhất các bước để setup và chạy 1 chú Raspberry Pi làm server chạy ở nhà.
Lý do sở hữu 1 con server tại gia!
Câu chuyện là, mình xưa (hồi trẻ trâu) luôn có ước mơ trở thành 1 DevOps. Với một niềm đam mê mãnh liệt, mình đã có 1 thời gian tìm hiểu về setup 1 con server như nào, từ quá trình setup SSH cho 1 con server cho tới việc config nginx, cài đặt các service, và cả việc deploy 1 ứng dụng lên server. Tuy nhiên, muốn học mấy thứ đó thì phải có thực hành, và phải có 1 con server nào đó để mình nghịch.
Hồi đầu mình cũng tận dụng mọi gói Trial ở các dịch vụ VPS như DigitalOcean, Linode, AWS, … để học và thực hành. Nhưng bản chất của “đam mê” là nó dựa nhiều vào cảm hứng nhất thời. Cứ mỗi lần mình thuê VPS, thực hành deploy các thứ cũng okela, nhưng rồi chỉ được 1-2 tuần là bỏ. Quá trình này lặp lại nhiều lần, cho tới khi mình hết các gói free trial và lúc đấy bắt đầu phải đi “trả tiền”. Đương nhiên 5$ cho 1 tháng cũng không đắt, nhưng mà nó là nhiều so với một đam mê nhất thời. Do đó mình đã nghĩ, tại sao không có 1 con “VPS” ngay tại nhà mà mình sở hữu? Một con mà mình không phải lo về việc “hết trial”, one time payment!
Tại sao lại là Raspberry Pi?
Với kiến thức trước đó về server, và mình cũng theo dõi một số YouTuber về HomeLab, server tại gia trong mắt mình là mấy con server-rack to, nhiều ổ cứng, nhiều RAM, nhiều CPU, … hoặc chí ít, sẽ là 1 cái case máy tính mới hay cũ nhưng sẽ khá là cồng kềnh.
Tất nhiên đú đởn thế thì mình không có điều kiện về tài chính, và đây cũng chỉ là sở thích “nhất thời” nên mình không muốn đầu tư quá nhiều. Có những lựa chọn sử dụng máy cũ, phần cứng cũ lắp ráp lại với nhau . Nhưng mình không có máy cũ nào ở nhà để tận dụng; rồi tại Việt Nam, việc tìm những linh kiện phần cứng cũ để mua khá là…khó khăn, chưa kể giá cả (rất ngạc nhiên là) cũng không rẻ như những video tutorial bên nước ngoài.
Và rồi các video Raspberry Pi xuất hiện. Đội lốt trong mấy cái video “Budget Homelab”, hay là “Homelab for beginners”, với một thằng nghèo như mình thì mình thấy đây tự nhiên lại là một option khá là hấp dẫn và phù hợp:
- Rất tài chính
- Rất nhỏ gọn
- Rất tiết kiệm điện
- Khá là dễ setup
Khi cân nhắc giữa việc thuê VPS có cấu hình tương đương 1 con Raspberry Pi cấu hình base, chi phí trong 1 năm thuê sẽ đủ để hoàn lại chi phí mua 1 con Pi, chưa kể, con Pi nó nằm ngay dưới chân mình, mình có thể nghịch bất cứ lúc nào mình muốn, và mình không cần phải lo lắng về việc “hết trial” hay phải cúng 5$ cho 1 con VPS (cấu hình yếu nhất) nữa. Và trong 1 hôm cao hứng, mình đã rước về 1 em Raspberry Pi 4 model B 8GB RAM (yep, max cấu hình! - 2tr700 🤣).
Những thứ “Cần” khi muốn 1 con Raspberry Pi làm server
Sau khi sở hữu 1 con Raspberry Pi thì mình đã phát hiện ra mình cần phải chuẩn bị vài thứ để có thể sử dụng nó một cách hiệu quả nhất.
1. Micro SD Card
Đừng tiếc tiền cho SD Card. Hãy chọn 1 cái SD card thật nhanh và dung lượng cao. Tất nhiên mình không khuyên bạn phải bỏ ra tiền triệu để mua những con SD card xịn xò vài TB hay tốc độ vài trăm MB/s. Dù gì, Raspberry Pi cũng không hỗ trợ tốc độ truy xuất hơn 100MB/s đâu 😂. Ngay cả Raspberry 5 với cải thiện rất nhiều thì cũng chỉ support UHS-1 micro SD thôi (READ 100MB/s) . Túm váy lại, hãy ưu tiên chọn SD card với tiêu chí:
- Dung lượng cao (ít nhất 128GB để thoải mái cài)
- Tốc độ cao (~100MB/s)
2. Dây LAN
Dù Pi support cả LAN và Wifi, nhưng các bạn nên ưu tiên chọn LAN hơn. Tốc độ wifi của Pi không được tốt lắm, và nếu sử dụng Pi làm server thì rõ ràng việc có 1 kết nối nhanh và ổn định hơn là cần thiết.
Với tốc độ support tối đa là 934Mbps , một cái dây mạng CAT6 là sự lựa chọn hợp lý và đủ để sử dụng. CAT5e thì chậm quá, 100Mbps thôi, chỉ phù hợp với những cái như camera IP, hay các thiết bị IoT thôi.
Ngoài ra, việc sử dụng LAN cũng giúp bạn dễ dàng truy cập vào Pi hơn, khi một số modem/router sẽ có dải mạng riêng cho Wireless (hoặc phải bridge qua 1 wireless router). Việc cùng dải mạng sẽ đơn giản hoá việc setup và truy cập vào Pi hơn rất nhiều. Mình thì không chuyên về setup network các kiểu nên cũng chịu khoản SSH qua dải mạng (liệu cái đấy có khả thi không? 🤨)
3. Một cái case có quạt tản nhiệt (xịn)
Mình đã từng nghĩ là với 1 con máy tính nhỏ và yếu như Raspberry Pi thì sẽ không có chuyện nó bị overheat hay thậm chí vấn đề nhiệt độ lại là vấn đề. Tuy nhiên khi mình bắt đầu setup một số server nặng và chạy liên tục thì con Pi của mình thường xuyên ở mức nhiệt 70-75 độ C dù trong phòng điều hoà. Tất nhiên tại nhiệt độ đó, Pi vẫn hoạt động bình thường, nhưng với những mục đích sử dụng nặng hơn việc host mấy trang web vớ vẩn thì bắt buộc chúng ta phải nghĩ tới việc tản nhiệt.
Hồi mình mới mua thì mình đã chọn combo bao gồm Pi và 1 case tản nhiệt khá lởm. Lởm không phải vì nó không tản nhiệt hiệu quả, mà vì nó kêu…to quá. White noise từ quạt tản nhiệt của nó khiến cho mình nghe rõ ràng khi vào ban đêm lúc đi ngủ. Và vì một phần mình không biết cách chỉnh tốc quạt, nên dù nhiệt độ được cải thiện rõ rệt (từ 75 độ C xuống ~50 độ C), nhưng mình đã phải tháo quạt ra vì tiếng ồn của nó.
Vì vậy, trừ khi bạn có thể vứt con Pi ở 1 chỗ nào đó mà không bao giờ phải lo lắng về âm thanh quạt phát ra, hãy cố gắng chọn:
- Một cái case thoáng khí và chỗ đặt có lưu thông khí tốt (để có tản nhiệt bị động)
- Một cái quạt tản nhiệt êm (cái này chắc phải đi thử nghiệm, hoặc vung tiền cho những hãng xịn như Noctua chẳng hạn)
- Hoặc chí ít là biết cách chỉnh tốc độ quạt (mình không biết 😅)
4. Một modem/router hỗ trợ DDNS và Port Forwarding
Nếu bạn muốn sử dụng Pi làm server và muốn truy cập ngoài mạng nội bộ, thì việc có một modem/router hỗ trợ Dynamic DNS (DDNS) và Port Forwarding là bắt buộc. Đã có rất nhiều hướng dẫn để bật DDNS và Port Forwarding trên modem của các nhà mạng. Mỗi loại sẽ có 1 kiểu mô tả tính năng khác nhau. Ví dụ một số khái niệm “tương đương” nhau mà có thể sợt trên mạng không ra:
- Virtual Server (trong DMZ) <-> Port Forwarding
- DMZ - Phiên bản expose toàn bộ port của một IP nội bộ ra ngoài
Chi tiết về cách setup như nào cho cụ thể 1 số modem/router mình sẽ đề cập tại bài viết Hosting Raspberry Pi với Ubuntu Server của mình. Tất nhiên mình không thể cover hết được tất cả các loại modem/router vì chưa có điều kiện trải nghiệm hết các nhà mạng/gói mạng, nhưng tại Việt Nam thì hầu hết các nhà mạng đều hỗ trợ DDNS và Port Forwarding trong modem của họ.
5. Dịch vụ DDNS, hoặc…
Với mạng cho hộ gia đình tại Việt Nam, xin cái IP tĩnh để hosting khó như lên trời. Vì nhiều lý do, trong đó chủ yếu là bảo mật, nên các nhà mạng sẽ thường từ chối yêu cầu; nhưng nếu cố chấp thì bạn có thể nâng cấp gói mạng lên mạng doanh nghiệp. Nghe đồn với gói hạt rẻ nhất thì được 1 IP tĩnh, nhưng mình nghĩ là với giá phải trả thì không đáng. Vì thế, giải pháp sử dụng 1 dịch vụ DDNS với gói trả tiền cả năm chỉ bằng 2 tháng mạng doanh nghiệp rõ ràng là lựa chọn hợp lý hơn.
Giải pháp DDNS mình chọn đến từ No-IP , một cái tên rất nổi tiếng. Với gói free, bạn sẽ được hầu hết các tính năng cần thiết, nhưng điểm trừ là phải renew mỗi 30 ngày. Để học và thử nghiệm, đây là 1 lựa chọn không tồi. Còn khi bạn đã nghiêm túc hơn, và muốn bớt phiền phức, (các) gói trả phí sẽ hợp lý hơn.
Dưới đây mình chỉ giới thiệu qua về 2 gói mà mình đã sử dụng:
- Enhanced Dynamic DNS - $19.99/năm (có thể giảm thêm nữa nếu kiếm được code)
- Cơ bản nhất, cung cấp 1 hostname (là cái tên miền trỏ vào IP con router nhà bạn) mà không phải renew mỗi 30 ngày.
Nhược điểm là cái hostname đó sẽ không phải là tên miền của bạn, mà là tên miền của No-IP, ví dụ
yourname.ddns.net
. Giải pháp này phù hợp nếu bạn thực sự không quan tâm quá nhiều tới domain, và chỉ cần 1 cái hostname để truy cập remote vào Pi.
- Cơ bản nhất, cung cấp 1 hostname (là cái tên miền trỏ vào IP con router nhà bạn) mà không phải renew mỗi 30 ngày.
Nhược điểm là cái hostname đó sẽ không phải là tên miền của bạn, mà là tên miền của No-IP, ví dụ
- Plus Managed DNS - $34.99/năm (có thể giảm thêm nữa nếu kiếm được code)
- Thay vì được cung cấp hostname như gói trên, bạn có lợi thế được xài 1 domain của riêng mình, ví dụ
yourname.com
, và đi kèm nhiều tính năng lặt vặt khác (wildcard subdomain, email forwarding, …). Giải pháp này toàn diện hơn nhưng đồng thời đắt hơn, phức tạp hơn để setup (mình đang xài gói này, chi tiết setup thằng này mình sẽ viết ở một bài nào đó sắp tới).
- Thay vì được cung cấp hostname như gói trên, bạn có lợi thế được xài 1 domain của riêng mình, ví dụ
6. Một sự kiên trì và chịu khó đọc tài liệu tiếng Anh
Mình biết là có rất nhiều tài liệu hướng dẫn biến Raspberry Pi thành 1 con HomeLab server, nhưng những hướng dẫn đó không thể cover hết được mọi trường hợp. Với rất nhiều edge case, bạn sẽ phải tự tìm hiểu các tài liệu tiếng Anh và thậm chí phải thử nghiệm rất nhiều, tốn rất nhiêu thời gian để workaround cho vấn đề của bạn. Chỉ đơn giản với việc setup static IP cho Pi, mình, dù đã từng cài 3 lần trước đó, vẫn phải mất 2-3 lần cài lại toàn bộ OS vì config sai dẫn đến không thể SSH vào được 😂.
Ví dụ dưới đây là 2 link tài liệu mình tham khảo chủ yếu, tất nhiên là phải ứng biến rất nhiều rồi:
- Hướng dẫn cài đặt Ubuntu Server cho Raspberry Pi chính chủ từ Ubuntu
- Bảo vệ remote access cho server (bằng guide hướng dẫn cho Minecraft server 🤣)
Những điều mà mình hối tiếc…
1. Cấu hình vẫn…yếu
Dù là bản max cấu hinh với một cái giá không rẻ (nhắc lại là…2tr700), mình vẫn đánh giá đây là một con máy khá yếu. Đương nhiên với nhu cầu hosting vài website cơ bản, hay một vài services khác như Pi-hole chẳng hạn, thì Pi vẫn có thể đáp ứng được (với CPU utilization hơi cao chút thôi 😉).
Nhưng nếu nhu cầu của bạn là hosting một con server để…chơi game như Minecraft chẳng hạn, hay làm 1 con NAS lởm thôi, thì Pi sẽ không đủ sức. Với Minecraft, bạn có thể cài được nhưng chỉ Vanilla, ít mods nhất có thể, và chỉ chứa được vài người trước khi cả RAM và CPU usage của Pi vọt lên 99%. Với NAS, tốc độ truy xuất của Pi qua USB 3.0 không thể so sánh được với 1 con NAS build từ con case cũ với SATA port (100mb/s vs tối thiểu 500mb/s). Chưa kể, Pi chỉ có 2 port USB, trong khi đó một cái main desktop vớ vẩn đã có 4 port SATA và một đống port USB khác nếu bạn thực sự vã tới vậy.
Đương nhiên việc bỏ ra 2tr700 để có được cấu hình trên vẫn khá là tài chính nếu bạn chỉ có được tầm đó. Với một con case dựng riêng thì bét cũng phải 4-5tr, chưa kể tiền điện khi so với 1 con chip ARM trên Pi chắc chắn sẽ chênh lệch rất nhiều. Tuy vậy, nếu dựng một con case cũ/lởm riêng mà không phải 1 con Pi, bạn sẽ có thêm 1 lợi thế nữa.
2. Khả năng nâng cấp
Mạch Pi không hề hỗ trợ khả năng nâng cấp đâu. Bạn sẽ mãi mãi mắc kẹt với con CPU ARM siêu tích kiệm điện nhưng rất yếu này, với 1 lượng RAM khiêm tốn, và không thể xài thẻ SD nhanh hơn được. Và nếu bạn có ý tưởng chạy Pi swarm (nhiều Raspberry Pi được kết nối cùng nhau thành 1 cụm tính toán) thì hãy bỏ ý tưởng đó đi. Chi phí và thời gian bạn bỏ ra để nghiên cứu và setup Pi swarm là không đáng và quá phức tạp.
Trong khi đó với một cái case cũ, bạn dễ dàng nâng cấp từ CPU, RAM, ổ cứng, tới cả việc thêm các con card màn hình chẳng hạn nếu bạn thật sự nghiêm túc. Thậm chí, với một con laptop cũ thôi thì bạn vẫn có khả năng nâng cấp RAM, hoặc chí ít là SSD/HDD với tốc độ truy suất gấp 5-10 lần so với thẻ SD hay USB port của Pi.
3. ARM CPU
CPU của Raspberry Pi là 1 con ARM Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) … gì đó, chung quy là nền tảng ARM. So với x86 của Intel hay AMD, ARM rõ ràng tích kiệm điện nè, hiệu năng trên giá thành rất ổn nè. Nhưng duy có 1 thứ mà ARM (hiện tại) không thể so bì với x86 là khả năng tương thích.
Việc cài đặt ARM support packages trên Linux tương đối dễ dàng, cho tới khi bạn gặp những package, phần mềm mà nó hơi
dị ứng với các nền tảng lạ. Ví dụ, để cài đặt docker của package reactive-resume
trên
phần mềm quản lý Coolify
self-hosted, mình…vẫn chưa cài được vì nó yêu cầu một số package mà ARM không hỗ trợ.
Vì vậy khi chọn một con máy ARM, hãy sẵn sàng cho việc bỏ nhiều thời gian nghiên cứu workaround cho các vấn đề về tương thích, hoặc chấp nhận việc không thể cài được phần mềm mà bạn muốn.
4. Còn nhiều lựa chọn khác ngoài Raspberry Pi
Raspberry Pi chỉ là cái tên phổ biến nhất trong cái danh mục máy tính siêu nhỏ này thôi, đó là điều mình học được ngay sau khi xuống tiền với nó (rất đen 🥲). Có rất nhiều lựa chọn khác, từ những con máy cũng xài ARM như Turing RK1 hay thậm chí x86 như GMKtec N100 Mini PC , thậm chí các dòng Intel NUC cũng đều là những lựa chọn hợp lý.
Tuy giá thành mỗi loại có chênh lệch về Price/Performance, nhưng phần lớn, Raspberry Pi đều không phải là lựa chọn tốt nhất trong các tiêu chí. Lợi thế của Raspberry bây giờ chỉ là cái tên phổ biến nhất, và khá nhiều guides và tutorials có thể áp dụng được. Nếu bạn muốn có một con máy mạnh hơn, hoặc dễ dàng nâng cấp, hoặc là xài x86 với sự tương thích tốt hơn rất nhiều, thì hãy cân nhắc kỹ trước khi xuống tiền với Raspberry Pi.
Ở Việt Nam, cộng đồng HomeLab không phát triển như nước ngoài, và đó cũng chính là lý do Raspberry Pi gâ như là sự lựa chọn duy nhất, khi mà NUC đến từ Intel, AMD vẫn còn quá đắt và target đối tượng khác (dân văn phòng chủ yếu). Nhưng nếu bạn chịu khó chờ đợi một chút, order từ AliExpress hoặc TaoBao sẽ cho bạn nhiều sự lựa chọn hơn rất nhiều.
Kết luận
Ngay từ đầu việc chọn gì để làm HomeLab ở Việt Nam không có quá nhiều lựa chọn vừa rẻ vừa hợp lý. Với mình, việc chọn Raspberry Pi tại thời điểm đó vẫn là lựa chọn tốt nhất của mình. Nó duy trì được niềm đam mê về server, rất tài chính, và việc mua nó chỉ tốn 5 phút chạy sang bên kia đường khiến mình càng nghĩ là đó là lựa chọn hợp lý nhất (ít thời gian để suy nghĩ lại 🤣). Cũng vì sở hữu nó, mình mới biết được những ưu/nhược điểm như trong bài viết này nữa, chứ đào đâu ra thời gian nghiên cứu thứ sở thích thoáng chốc này.
Nếu bạn là một người hứng thú nhất thời như mình, mình vẫn nghĩ Raspberry Pi là một sự lựa chọn tốt. Tất nhiên không phải bản max cấu hình như mình, vì kể cả có 8GB RAM thì CPU vẫn quá yếu để làm gì đó có ý nghĩa hơn. Một bản 4GB RAM sẽ là lựa chọn hợp lý hơn cả về hiệu năng và tài chính. Với số lúa nhiều hơn chút, và cần thêm sức mạnh, Asus cũng cung cấp 1 vài con NUC trong tầm giá 5-6tr nếu mình không nhầm, hoặc bạn có thể chờ đợi thêm một chút để order từ nước ngoài như mình đề cập.
Còn nếu bạn là một người thật sự nghiêm túc và muốn đi đường dài, mình khuyên chân thành nên dựng hẳn 1 con case với cấu hình vừa phải và từ đó phát triển dần dần. Với ưu thế về việc mở rộng, chi phí ban đầu hơi cao chút nhưng chắc chắn sẽ đáng hơn so với việc mua Raspberry Pi và chết cứng với cấu hình yếu ớt của nó.
Hi vọng bài viết này sẽ giúp bạn có cái nhìn rõ hơn về việc sở hữu một con Raspberry Pi làm server tại nhà, từ việc lưu ý gì, cần có gì, và cả những điều hối tiếc của mình khi chọn nó. Hi vọng mình có thời gian, sớm phát triển phần bình luận để mọi người có thể bash bài viết này 🤣
Btw có thể bạn đã biết, trang web này (và các sản phẩm khác của MonthlyParty) đều đang được host trên 1 con Raspberry Pi 4 8GB RAM dưới chân mình đấy 😉