Tự chế máy chủ NAS từ linh kiện cũ: Hành trình rời bỏ đám mây của một kỹ sư
Từ một chiếc Zotac MAGNUS EN1070K cũ và linh kiện trong ngăn kéo, tác giả đã dựng nên một máy chủ gia đình 29 TB chạy ZFS, màn hình cảm ứng ESP32-S3 và giao diện web tự viết. Bài viết là câu chuyện thực tế về chi phí, nhiệt độ, sự thất vọng với TrueNAS và lý do ngày càng nhiều người muốn tự sở hữu dữ liệu của mình.

Tự chế máy chủ NAS từ linh kiện cũ: Hành trình rời bỏ đám mây của một kỹ sư
Google đã thúc ép tôi làm việc này, cùng với mọi nhà cung cấp dịch vụ đám mây ngày càng "xấu tính" khác. Suốt gần một năm, chiếc điện thoại của tôi liên tục cảnh báo rằng tài khoản sắp đầy. Tôi chuyển ảnh sang một máy chủ Nextcloud tự dựng, giải phóng dung lượng, thì ngay lập tức cảnh báo lại đổi thành nhắc nhở rằng tính năng sao lưu ảnh đang tắt. Gmail cũng vậy, kèm theo những nút "Nâng cấp" được đặt khéo léo khắp nơi.
Tôi không muốn phải thuê chỗ lưu ảnh của chính mình đến hết đời, và càng không muốn Google nhìn vào chúng. Tôi muốn một nơi để cất giữ tệp của gia đình, một hệ thống sao lưu tự động cho hàng năm trời ảnh chụp đang nằm rải rác trên điện thoại và những chiếc PC đã cũ, cùng một cỗ máy có thể tải ISO Linux suốt ngày đêm mà không ai để ý. Tôi tưởng mình cần một chiếc NAS, nên tôi đã tự dựng một chiếc.
Máy chủ NAS hoàn thiện
Một người bạn cũ
Nói thật lòng, việc mua máy tính trong vài năm trở lại đây ngày càng điên rồ, đặc biệt là GPU. May mắn thay, mọi chiếc máy tính tôi từng mua đều có GPU (bạn không bao giờ biết khi nào mình cần đến phép nhân ma trận tốc độ cao), và hóa ra tôi có đúng chiếc máy phù hợp cho công việc này.
Đó là Zotac MAGNUS EN1070K, một chiếc hộp nhỏ gọn với chip i5 và card GTX 1070 đời cũ. Nó từng làm trung tâm media phòng khách kiêm máy chơi game trong vài năm. Tôi cũng dùng đúng mẫu này trong các nguyên mẫu robot và nó hoạt động rất tốt. Máy chạy ý tịch rất thấp, chuyển mã video bằng GPU, và chạy được một mô hình AI nhỏ tại chỗ mà không phàn nàn gì.
Vấn đề là Zotac thiết kế nó chỉ chứa được một ổ 2.5 inch. Thế nên tôi thiết kế một phần mở rộng cho thân máy trên Onshape, in bằng ABS gia cường sợi thủy tinh rồi bắt vít vào. Bên trong là một khay hot-swap 5 khoang của ICY Dock, một giá in cho ổ thứ sáu, một bộ nguồn Pico PSU lấy điện từ cục adapter 19.5 V nâng cấp của Zotac qua bộ chuyển đổi DC-DC (sáu ổ quay cùng lúc sẽ hút khoảng 125 W trong chốc lát), và quạt Noctua để đẩy khí. Sáu cổng SATA đến từ một bộ adapter ASM1166 cắm vào khe M.2 — đó là lý do ổ SSD khởi động 1 TB giờ nằm trong khoang 2.5 inch.
Bên trong máy chủ NAS
Phần nâng cấp còn lại lấy từ ngăn kéo đồ linh kiện vụn. Hai thanh DDR4 từ một chiếc laptop cũ đưa bộ nhớ lên mức tối đa của nền tảng là 32 GB, một ổ SSD sẵn có để khởi động, và một card WiFi từ dự án trước thay cho card gốc. Những thứ duy nhất tôi phải bỏ tiền mua là khay ổ, adapter và — điều khiến tôi đau lòng — là mấy ổ cứng.
Con đường khó
Đã là năm 2026, vậy mà tôi vẫn phải mua sáu ổ cứng cơ. Tôi không hề muốn; tôi tưởng chúng ta đã vượt qua thời lưu trữ quay bằng cơ khí. SSD ở dung lượng này, nếu tìm được, sẽ ngốn của bạn vài quả thận. Với một chiếc NAS, giá trên mỗi TB rất quan trọng; tôi cố gắng giữ nó thấp nhất có thể trong thực tế. Đừng hiểu nhầm, ổ cứng cơ cũng không hề rẻ.
Các trung tâm dữ liệu AI đang mua sạch mọi ổ cứng, mọi chip nhớ và mọi GPU mà các nhà máy có thể sản xuất: sản lượng ổ cứng của Western Digital đã cháy hàng cho cả năm 2026, giá hợp đồng DRAM và NAND gần như tăng gấp đôi chỉ trong một quý, còn phần còn lại của chúng ta nhận được những gì thừa lại với bất kỳ mức giá nào. Thị trường ổ NAS cũ trên eBay khá sôi động, và tôi săn được một bộ 8 TB WD Red Plus đồng bộ với giá hợp lý.
Chúng nằm trong một pool RAIDZ2 duy nhất: 43,7 TB thô, 29 TB dùng được, bất kỳ hai ổ nào chết cũng không mang dữ liệu đi theo. Tôi đã kiểm chứng bằng cách rút một ổ ra khỏi pool đang chạy. Đọc ghi vẫn tiếp tục, Samba vẫn phục vụ, một cảnh báo bay vào hộp thư vài giây sau đó, và khi tôi cắm ổ trở lại, nó tự động resilver. Thật khó diễn tả cảm giác sung sướng ấy khi mọi thứ không hề bốc cháy.
Rút khay ổ ra khỏi máy
Vì là tôi, nên pool được mã hóa và tự mở khóa lúc khởi động từ một máy chủ khóa đặt ở nơi khác trong nhà. Kẻ nào ăn trộm chiếc máy này sẽ chỉ nhận được một cục chặn giấy khá nặng: riêng thân máy đã nặng 8,5 kg, còn tính cả cục adapter 300 W thay cho bản gốc thì vượt quá 10 kg.
Chỉ có quạt
Đến lúc nói về chủ đề nóng: tản nhiệt đang tệ. Vỏ thép thông thường dẫn nhiệt ra khỏi ổ cứng, còn vỏ in của tôi lại giữ nhiệt bên trong. Năm trong sáu khoang nằm ở 45 °C khi không tải, cao hơn mức lý tưởng mười độ, và bảng điều khiển cảnh báo tôi về điều đó mỗi ngày. Tôi đã sửa lại vỏ vài lần và thêm quạt, tình hình có khá hơn chút nhưng vẫn còn nóng. Một phát hiện thú vị là quạt Noctua đúng là êm và được chế tác tốt thật.
May mắn là mùa đông đang đến, nên tôi có thời gian để mày mò thêm.
Phần nhìn cho đẹp
Lẽ ra tôi có thể dừng ở đây, cài một hệ điều hành rồi đi tiếp. Nhưng tôi muốn nhiều hơn thế. Cụ thể là muốn thử nghiệm những giao diện thú vị. Vì chiếc máy này không nhằm cắm vào màn hình lớn, tôi nghĩ đây là cơ hội tốt để làm điều gì đó hoàn toàn khác biệt: gắn một màn hình tí hon.
Tôi khá tự hào về màn hình cảm ứng 1.47 inch gắn ở mặt trước. Nó được điều khiển bởi một chip ESP32-S3 mà tôi hàn vào các chân của một cổng USB trên Zotac (dòng EN1070K không có header USB nội bộ). Chiếc NAS truyền trạng thái của nó qua cổng serial, và firmware viết bằng C với LVGL hiển thị bảy màn hình để bạn vuốt qua: tình trạng pool, nhiệt độ ổ cứng, trạng thái ứng dụng, thông lượng mạng, vân vân. Nó tự ngủ sau một lúc và thức dậy khi có chạm. Đi ngang qua máy, tôi có thể liếc một cái là biết mọi thứ đang ra sao mà không cần cầm thêm thiết bị nào. Hơn nữa, trông nó rất bắt mắt.
Màn hình cuối cùng là menu nguồn, để tôi có thể tắt hoặc khởi động lại máy từ mặt trước. Nó đi kèm màn đếm ngược đầy vẻ đe dọa, phòng khi tôi đổi ý vào giây phút cuối.
Sự thật về TrueNAS
Trước khi bắt tay vào việc, tôi đã xem rất nhiều YouTuber khuyên dùng TrueNAS cho các bản dựng của họ và ca ngợi vô số tính năng của nó. Ngây thơ tin lời họ, tôi tưởng mình sẽ dùng được bản phân phối NAS trông có vẻ hoàn hảo ấy. Thật đáng thất vọng.
Chiếc NAS nằm xa router và không có kết nối dây, nên nó chạy qua WiFi (tôi biết, thật xấu hổ!). Điều này khiến tôi khó chịu ít hơn tôi tưởng: card WiFi 6E đàm phán được tốc độ cao hơn cả hai cổng gigabit của máy, và tôi đo được 893 Mbit/s internet thực tế qua nó.
Nhưng điều mà tôi không ngờ là nó lại loại bỏ TrueNAS. Hệ điều hành này hoàn toàn không hỗ trợ không dây, cả trong giao diện lẫn console. Bản phát hành mới nhất cũng bỏ driver NVIDIA độc quyền để chuyển sang kernel module mở, vốn không hỗ trợ GPU Pascal, nên chiếc 1070 cũng thành đồ vô dụng. Ngoài hai rào cản cứng đó, tôi còn thất vọng vì nó cho bạn làm quá ít: nó là một thiết bị đóng, và nó muốn bạn tránh xa hệ thống gốc. Ngay cả daemon hiển thị của tôi, vốn giao tiếp qua /dev/ttyACM0, cũng sẽ rất khó chạy.
Thế là chiếc NAS chạy Kubuntu 24.04 với ZFS, mọi thứ khác nằm trong Docker Compose sau Caddy, cùng một bảng điều khiển do tôi tự viết: một trang duy nhất, màu hổ phách trên nền đen để ăn khớp với chính chiếc máy. Nó hiển thị đầy đủ trạng thái phần cứng và các dịch vụ, là cổng vào cho mọi tính năng của NAS. Dữ liệu JSON nuôi bảng điều khiển cũng chính là dữ liệu được tuần tự hóa và gửi tới ESP32 (giữ hai giao diện khớp nhau nhờ một nguồn sự thật duy nhất). Ngoài ra còn có một API Actions để kích hoạt những việc như sao lưu hay đo tốc độ mạng. Cuối cùng, nó vượt xa chức năng của bất kỳ bảng điều khiển NAS nào mà tôi từng biết.
Bảng điều khiển tự viết
Mỗi ứng dụng có tên miền riêng với TLS, và toàn bộ hệ thống là một git repo với các make target để lint và test compose file, systemd unit, mã Python, mã C và tài liệu. Tôi đang dần biến nó thành một hệ điều hành của riêng mình, và sẽ chia sẻ khi nó đủ chỉn chu.
Thứ mà ta gọi là NAS
Cái tên có nghĩa gì? NAS là một cái tên đã lỗi thời. Đúng, nó là lưu trữ gắn vào mạng, nhưng chiếc máy này còn phục vụ media, lập chỉ mục ảnh, chạy trình quản lý mật khẩu, lưu trữ kho git của cả nhà, giữ các bản sao lưu và tải ISO về. Nó là chiếc máy tính của gia đình, giống như một ngôi nhà có lò sưởi và bình nước nóng. Đây chính là điều tôi thực sự muốn; đáng tiếc là nó chưa có một cái tên ngắn gọn, bắt tai.
Tôi đã rời xa đám mây từ một thời gian, và đây là bước tiến lớn nhất của tôi. Mọi thứ tôi đặt lên chiếc máy này là của tôi, nằm ở nơi tôi nhìn thấy được, và không phụ thuộc vào một gói thuê bao, một lần cập nhật điều khoản dịch vụ, hay một công ty quyết định rằng ảnh của tôi thuộc về tập dữ liệu huấn luyện của họ. Những cảnh báo đầy dung lượng cũng đã im bặt.
Tôi kỳ vọng máy tính gia đình sẽ trở thành chuẩn mực: chúng trao cho chúng ta quyền sở hữu dữ liệu của chính mình, sự trường tồn và độc lập — và hầu hết chúng ta đều đã có sẵn phần cứng, chỉ nằm ngủ quên trong ngăn kéo.
Đối với người dùng Việt Nam, bài học ở đây khá thiết thực: chi phí lưu trữ đám mây tính theo năm có thể đội lên đáng kể khi nhu cầu ảnh và video tăng, trong khi các dịch vụ nước ngoài ngày càng siết dung lượng miễn phí. Nếu bạn còn một chiếc PC cũ có GPU rời nằm không, việc tận dụng nó làm máy chủ gia đình — chạy ZFS hoặc thậm chí TrueNAS nếu có kết nối dây — là phương án vừa tiết kiệm vừa giữ quyền kiểm soát dữ liệu cá nhân.