Sẵn đang có con MiniPC ghẻ thừa nên quyết định nghịch thử một cái Home Server đơn giản sau khi đã thử qua linh tinh vài thứ từ NixOS, Ubuntu (22.04 - 24.04). Nghe nhiều về mấy món Plex, Immich, Vaultwarden các kiểu nhưng phần vì … lười, phần vì không ưa Docker =))) nên chưa bao giờ thử.

Gần đây lại vô tình xem qua UmbrelOS, có thiện cảm khá tốt với UI/UX của UmbrelOS, thứ mà trước giờ Linux tệ. Nên quyết định nghịch thử xem có ngon không?

  • Umbrel-Home là một cái miniPC chạy chíp Intel N150, 16GB RAM cài sẵn umbrelOS, mua về gắn cáp vô là dùng được
  • umbrelOS là OS based Debian (bản 1.5 base Debian Trixie), cài OS xong có webUI để thao tác
  • Umbrel App Store là tổng hợp nhiều app chạy thông qua Docker, có mã nguồn đặt tại GitHub

Cảm nhận đầu tiên là giao diện cực kỳ thân thiện, đơn giản, trông rất phù hợp cho màn hình cảm ứng hoặc sử dụng trên TV

1. Cài thử

Để cài umbrelOS rất đơn giản, đơn giản hơn rất nhiều so với cài các Linux distribution khác. Có một hướng dẫn trên Wiki, chỉ tóm gọn ở 2 bước:

  • Có USB đã flash bản ISO
  • Vào giao diện cài đặt và chọn đĩa cần cài

XONG, không phân vùng, không chọn ngôn ngữ, không chọn keyboard, không cấu hình network, không khởi tạo user. Cài xong, bấm phím bất kỳ để shutdown và rút USB, khởi động lên là xong.

Vấn đề là trong wiki cài đặt, yêu cầu phải gắn cable và kết nối vào router. Sau đó khi khởi động thiết bị lên, sẽ truy cập qua http://umbrel.local bằng thiết bị bất kỳ trong cùng một hệ thống mạng. Tuy nhiên giờ này ai mà dùng cable nữa và do không có giao diện GUI, nên cài xong không có cách nào để truy cập được giao diện web.

Giải quyết như thế nào:

  • Đăng nhập vào TTY bằng user/password mặc định là umbrel/umbrel
  • Thiết lập kết nối wireless thông qua cli

Nhưng ko có gói wireless-tools, dẫn tới không có iw command, cũng không có bất cứ một dhclient nào, dẫn tới việc thiết lập mạng rất phiền phức thông qua wpa_supplicant. Docs của UmbrelOS cũng không nhắc hay hướng dẫn gì về việc thiết lập kết nối wireless dễ dàng, vật lộn với wpa_supplicant, ip addr a, ip r mãi không được. Cài đặt thêm các gói cũng không được (có mạng méo đâu) ngoại trừ build lại ra file ISO, build thì phải update lại package cần cài thêm vào đây.

Trong lúc nghiên cứu cách build lại ISO, phát hiện ra có gói network-manager nhưng các bạn UmbrelOS lại ko nhắc gì trong các issue về kết nối wireless. Nhờ gói này, ta có thể dùng nmcli để kết nối wireless dễ dàng

> nmcli device wifi list
> nmcli device wifi connect _SSID_or_BSSID_ password _password_

Không muốn cli thì dùng nmtui cũng tương tự. Đơn giản chỉ có vậy mà đéo chỉ, đkm cay vl.

2. Xài thử

Sau khi có kết nối mạng, chỉ cần truy cập vào umbrelos.local hoặc IP của máy là xong. Giao diện hết sức thân thiện và dễ dùng:

  • Có App Store nhìn khá giống App Store của MacOS, nhưng bản chất install là tải về và chạy docker container. Khi mở ứng dụng sẽ mở thông qua port export của container, ví dụ qbittorrent sẽ mở qua http://umbrel.local:8094 hoặc Immich mở qua http://umbrel.local:2283
  • Có một giao diện hỗ trợ debug, troubleshoot, có thể xem log qua giao diện này, ví dụ như tải app lâu quá không xong thì có thể xem trong màn hình này
  • Có thể truy cập Terminal trên web
  • Đủ app để làm home server, như kéo torrent, xem phim, lưu ảnh, chặn quảng cáo bằng adguard-home

Ngon lành nhất là nhờ Tailscale, có thể gán máy này vào Tailscale, sau đó truy cập từ xa thông qua IP của tailnet mà không cần setup gì phức tạp.

3. App

App chạy trong Docker container và được isolated nhờ công nghệ container. Nên ứng dụng nào chạy container được, sẽ phân phối và chạy được trên UmbrelOS. Trong README có hướng dẫn cách đóng gói app cho umbrelOS, cơ bản là cần:

  • Docker image
  • Tệp docker-compose.yml để start/stop container, mount volume ..
  • Tệp umbrel-app.yml một dạng manifest của Umbrel Với app có UI, truy cập UI thông qua port được expose, với app không có UI, giao diện đơn giản chỉ in ra thông tin là app đang chạy, QR code, hướng dẫn setup…

Nói túm lại:

  • Giao diện đẹp, dễ dùng, phù hợp với các màn hình chạm
  • App OSS, build được, chạy được trong container là chạy được trên UmbrelOS
  • Hướng tới user có sao xài vậy, customize nên hạn chế, nhưng vẫn được né.

Còn tui thì … chắc thôi không xài =))) thử phát cho biết với thiên hạ