2 điểm bởi GN⁺ 2025-09-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Blog này đang chạy trên một Google Pixel 5 đã được tái sử dụng
  • Sử dụng các công cụ như Termux để xây dựng môi trường máy chủ trên thiết bị di động và vận hành blog
  • Kết hợp tấm pin mặt trời 100W và trạm điện Jackery 160W để chạy blog hoàn toàn trong môi trường off-grid
  • Blog được xây dựng trên Hugo, hỗ trợ dễ dàng việc cài gói, tự động hóa vận hành, sao lưu/quản lý tệp bằng ssh, rsync, cron, v.v.
  • Đạt được khả năng vận hành ổn định, nhanh như một máy chủ Linux thông thường ngay cả trên điện thoại Android, đồng thời tiêu thụ điện năng hiệu quả

Giới thiệu và động lực

  • Blog này được vận hành chỉ bằng Google Pixel 5năng lượng tái tạo (điện mặt trời)
  • Tác giả lấy cảm hứng từ nhiều người dùng Mastodon tự host website bằng các phần cứng độc đáo như ESP32, thiết bị Android, router, v.v.
  • Với mối quan tâm về mức tiêu thụ điện năng thấp, tác giả trực tiếp bắt tay vào thử nghiệm tái sử dụng phần cứng cũ cho một mục đích mới

Phần cứng và môi trường mạng

  • Trong số nhiều thiết bị đang cất giữ, tác giả chọn Google Pixel 5 vì hỗ trợ Ethernet có dây gắn trực tiếp (USB-OTG và dock) và vẫn có thể nhận các bản cập nhật bảo mật mới
  • Do bị khóa Verizon nên không thể cài custom ROM, nhưng vẫn tận dụng nguyên trạng môi trường Android
  • Tác giả đặc biệt coi trọng việc phải dùng mạng Ethernet có dây vật lý, thay vì kết nối không dây (Wi‑Fi)

Blog off-grid chạy bằng điện mặt trời

  • Cấp điện bằng tấm pin mặt trời mono tinh thể 100W của Harbor Freight Toolstrạm điện Jackery 160W
  • Qua thiết lập này, tác giả tích lũy thêm kinh nghiệm về permacomputing (điện toán bền vững lâu dài) và các thử nghiệm với năng lượng tái tạo
  • Xác nhận khả năng vận hành một website độc lập off-grid chỉ với các linh kiện đã qua sử dụng

Xây dựng website: Termux và Hugo

  • Ban đầu có cân nhắc xây dựng một môi trường Linux thông thường, nhưng cuối cùng sử dụng Termux, trình giả lập terminal trên Android, cùng hệ thống gói riêng của nó
  • Các gói thiết yếu như ssh, git, hugo đã có sẵn từ lâu trong kho của Termux
  • Cài trực tiếp Hugo trong Termux rồi di chuyển blog nền tảng Hugo hiện có sang đó

Trải nghiệm vận hành

  • Website hoạt động nhanh và đáng tin cậy hơn cả mong đợi
  • Ban đầu có gặp một vài vấn đề nhỏ như khác biệt phiên bản Hugo và quản lý pin năng lượng mặt trời
  • Môi trường được hoàn thiện đến mức người truy cập khó nhận ra nó đang chạy trên một chiếc điện thoại Android

Thiết lập và quản lý đơn giản

  • Có thể nhanh chóng dựng máy chủ chỉ với việc cài git, screen, trình soạn thảo văn bản và hugo
  • Tải tệp lên và đăng bài mới bằng gói dufs (máy chủ tệp tĩnh chạy trên trình duyệt) hoặc scp
  • dufs cũng có thể được cài đặt dễ dàng từ kho Termux

Danh sách các gói tiện ích cơ bản

  • rsync, openssh, git, wget, curl, fish shell, cronie, termux-services, iperf3, speedtest-go, screen, helix, hugo

Tự động hóa dịch vụ và truy cập SSH

  • Trong Termux, sshd/cronie được khởi chạy theo đơn vị dịch vụ (sv-enable)
  • Cần lưu ý việc đăng ký khóa công khai SSH, cổng cố định (8022), tên người dùng được tạo tự động, v.v. theo tài liệu chính thức

Tự động hóa vận hành blog dựa trên Hugo

  • Lệnh chạy hugo serve được quản lý bằng bí danh của fish shell
  • Một script tự động (~/scripts/blog_reload.sh) được tạo để xử lý việc đóng phiên screen cũ, xóa cache, tạo phiên mới, v.v.
  • Đăng ký tác vụ cron qua cronie (*/5 * * * * ...) để định kỳ khởi động lại và reload blog

Sao lưu và quản lý dữ liệu

  • Có thể truy cập từ xa qua ssh trong Termux rồi sao lưu toàn bộ thư mục bằng rsync
  • Bao gồm cả tự động hóa liên kết cron tới desktop và NAS
  • Cũng có thể sao lưu bổ sung bằng một instance git riêng, hoặc tự do dùng các forge khác như Github

Kết luận và chia sẻ

  • Chứng minh khả năng vận hành một blog giá rẻ, hiệu quả và thân thiện với môi trường bằng cách kết hợp thiết bị di động với năng lượng tái tạo
  • Mọi câu hỏi và phản hồi liên quan đều được chào đón qua Mastodon hoặc email

1 bình luận

 
GN⁺ 2025-09-04
Ý kiến Hacker News
  • Tôi thích ý tưởng tận dụng điện thoại cũ cho các mục đích hạ tầng nhẹ, nhờ mức tiêu thụ điện thấp và UPS tích hợp sẵn (dù tất nhiên cũng có nhược điểm, nhưng phần nào có thể khắc phục). Tôi cũng có vài thiết bị Android cũ nên muốn thử làm một thí nghiệm thú vị như thế này. Dù hạ tầng homelab đang chạy sẵn của tôi có thể dễ dàng bổ sung chức năng bằng VM hoặc container mà gần như không tăng thêm điện năng tiêu thụ, tôi vẫn thấy kiểu thử nghiệm này rất hay và cũng muốn tự làm. Một điều tôi thắc mắc là tại sao lại không dùng WiFi. Thiết bị dock -> Ethernet có vẻ như là phần cứng bổ sung không cần thiết chỉ làm tăng điện năng tiêu thụ. Tôi không nghĩ điện thoại cũ cần băng thông lớn đến vậy, nên khá tò mò vì sao tác giả lại cố tình chọn Ethernet. Nhân tiện, có lẽ tôi cũng nên thêm Pixel 5 vào danh sách homelab của mình. Bố cục trang web và thông tin trên đó cũng rất đẹp
    • Tôi cũng đang dùng một chiếc Pixel 3 gắn nam châm bên trái bàn phím. Tôi mở một trang web hiển thị lưới nút bấm, rồi khi nhấn nút thì nó sẽ làm đủ thứ như chèn dấu thời gian tại vị trí con trỏ, bật/tắt màn hình, chạy ứng dụng cụ thể, v.v. Ban đầu tôi định mua Elgato Stream Deck, nhưng vì có điện thoại dư nên dùng như vậy luôn
    • Tôi muốn thấy một bộ kit “server hóa” cho thiết bị di động cũ. Kiểu như bộ kit biến Game Boy Advance thành máy console ngày xưa[https://fingercramp.com/portfolio/…], nhưng theo hướng tách bo mạch chính của điện thoại ra rồi mở rộng với lưu trữ ngoài, nguồn cấp điện tốt hơn, giao diện mạng vật lý, v.v.
    • Tôi là tác giả blog, cảm ơn bạn. Tôi đồng ý rằng việc thêm VM hay container vào homelab đang chạy sẵn sẽ không làm tăng điện năng tiêu thụ. Tôi bắt đầu dự án này chủ yếu cho vui, và vì muốn thử cấp nguồn bằng điện mặt trời. Ban đầu tôi định tắt homelab vào ban đêm và chỉ để điện thoại tiếp tục chạy bằng pin, nhưng giờ homelab đã trở thành hạ tầng thiết yếu nên phải bật liên tục. Lý do tôi cần Ethernet là để có băng thông ổn định. Mạng WiFi của tôi không hoạt động tốt lắm
    • WiFi có độ trễ cao và không ổn định. 1% số request chậm nhất từ server có thể mất thêm gần 1 giây. Nếu chạy blog trên điện thoại thì tôi nghĩ nó nên phản hồi thật nhanh. Điện thoại Android cũ có thể không hỗ trợ các chuẩn WiFi mới, và cũng có thể khó gánh nổi lưu lượng nếu bài lên trang chủ HN
    • Trên smartphone, WiFi có hiệu năng rất thất thường và độ trễ cao với các kết nối đến bất ngờ từ bên ngoài do các cơ chế tiết kiệm pin. Tôi không rõ có thể tắt bằng tham số kernel hay không, nhưng dù có thể thì chắc vẫn phải root
  • Hiệu suất điện năng của smartphone thật sự rất thú vị. Điện thoại ngày nay giống như các server ARM tối ưu cho pin. Pixel 5 ngay cả khi full load cũng dưới 5W, trong khi server x86 điển hình tiêu thụ 50~100W. Chỉ riêng một blog cá nhân thôi cũng có thể tiết kiệm 400~800kWh mỗi năm. Tác động môi trường của việc tái sử dụng đồ điện tử lớn hơn người ta tưởng, chứ không chỉ là tái chế
    • Với site tĩnh thì triển khai lên S3 hoặc Github Pages hiệu quả hơn nhiều. Khi không có request thì mức tiêu thụ tài nguyên là 0. Dùng server x86 tại nhà để chạy một site tĩnh là cực kỳ kém hiệu quả
    • x86 cũng có thể thiết lập điện năng thấp. Hệ thống n100 có thể idle dưới 10W và ngay cả khi tải tối đa cũng chỉ khoảng 20-30W
    • Chuyện CPU x86 tiêu thụ 50~100W cho các tác vụ mà một chiếc điện thoại năm 2020 làm được là câu chuyện của khoảng 10 năm trước. Đốt 75W chỉ để host vài file tĩnh giờ không còn phổ biến nữa. Dù sao thì dùng smartphone cũ còn dư trong nhà thay cho một chiếc Pi siêu tiết kiệm điện vẫn là ý tưởng hay
    • Mức tiết kiệm 400~800kWh mỗi năm tương đương tối đa 105,60 USD theo giá điện trung bình ở Mỹ (13,2 cent mỗi kWh), tức khoảng 8,8 USD mỗi tháng. Còn chưa đến 1% chuẩn nghèo cho hộ một người (15.650 USD năm 2025). Hiệu quả năng lượng thì tốt, nhưng ở tầm vĩ mô không tạo khác biệt lớn
  • Nói chính xác hơn thì đây là Google Pixel 5 được tái sử dụng. Nó không bị tháo rời hoàn toàn rồi sản xuất lại. Thứ tự Reduce, Reuse, Recycle cũng phản ánh mức độ tác động môi trường, nên tái sử dụng là một bước nâng cấp
    • Dù vậy nếu xét tổng thể là dùng lại thì gọi là “tái chế” cũng không hẳn sai. [https://en.wiktionary.org/wiki/recycle/…]
    • recycle cũng là cách diễn đạt đúng về mặt ngữ pháp. Nó không khác nhiều về nghĩa so với reuse
  • So với các thử nghiệm tái sử dụng RPi hay các bo mạch khác, việc tận dụng Pixel 5 cũng khá hợp lý. Thậm chí có thể còn mạnh hơn, và màn hình mới là phần ngốn điện lớn. Tôi tò mò về cách tối ưu điện năng vì có vẻ sẽ có vấn đề nhiệt khi tải cao. Hugo mà blog này dùng là một static site generator viết bằng Go, có vẻ phù hợp để phục vụ nội dung. Nhân tiện, dạo này tôi bắt đầu thích SSG, và đang tính làm một trình biên tập blog Markdown bằng Tauri/Rust + React/MUI, tích hợp git rồi triển khai qua Cloudflare, nhưng vẫn chưa bắt tay vào làm. Trước đây MS từng có một trình biên tập blog GUI, giờ không còn nữa nên cũng thấy tiếc
  • Điều tôi lo nhất là làm sao tránh được vấn đề “spicy pillow” (pin phồng và cháy). Nếu có thể chạy chỉ bằng USB mà không cần pin thì sẽ rất tuyệt
    • Giờ có những điện thoại hỗ trợ giới hạn sạc đến 80%. Nếu không có, cũng có thể dùng ổ cắm thông minh với hẹn giờ, hoặc IFTTT để tự động điều khiển nguồn theo mức pin. Ví dụ đặt bật khi dưới 40% và tắt khi trên 60%
    • Điều khó chịu nhất là ngay cả khi tháo cell pin ra và cấp điện trực tiếp vào BMS, Android vẫn có thể tự tắt sau một thời gian vì cho rằng “pin đã cạn”. Muốn chặn điều này thì phải root, rất phiền. Nếu có thể cấp điện trực tiếp từ ổ cắm thì vấn đề này cũng biến mất
    • Tôi có vài thiết bị Android cũ cắm vào bộ sạc USB nhiều cổng, rồi cả bộ đó nối với công tắc thông minh để chỉ sạc vài tiếng mỗi đêm. Sau khi thay ROM và root, tôi dùng app ACCA để giới hạn sạc ở 80%. Một chiếc Samsung Note 5 ra mắt năm 2015 của tôi đã bị phồng khoảng nửa năm trước, nhưng Samsung S9 và Nokia 6.1 thì đã chạy LineageOS ổn định suốt 6 năm nay
    • Có thể tham khảo cách như thế này [https://www.instructables.com/Power-an-Android-Phone-Without-Battery/], và cũng có thể mua pin giả theo từng mẫu máy trên mạng
    • Hoặc cứ bỏ nó vào hộp chống cháy, hỏng thì thay cái mới cũng là một cách
  • Tôi tưởng tượng ở đâu đó sẽ có một lãnh đạo Google tự hỏi: “Vì sao chúng ta lại cho phép người ta tái sử dụng thiết bị Google theo cách này, có cách nào gắn quảng cáo vào đây không?”
  • Tôi đang gửi bình luận này từ một chiếc Pixel 5 vẫn còn hoạt động rất tốt. Đây là chiếc điện thoại tốt nhất tôi từng dùng. Kích thước vừa phải, cảm biến vân tay ở mặt lưng, mọi thứ đều ổn. Những điện thoại ra sau đó đều không làm tôi hài lòng
    • Tôi cũng đang dùng Pixel 5 tân trang mua khoảng 250 USD. Đây cũng là chiếc điện thoại tốt nhất tôi từng có. Thiết kế năm 2020 đơn giản và thực dụng (ví dụ không có mấy tính năng phô trương như cảm biến vân tay dưới màn hình), nên dùng lâu vẫn thấy hài lòng. Tôi vẫn kỳ vọng nó tiếp tục cho thời lượng 2~3 ngày mỗi lần sạc và chất lượng ảnh ở mức “đủ ổn”
    • Pixel 5 của tôi chắc cần thay pin rồi. Giờ pin tụt nhanh đến mức tôi phải sạc hai ba lần mỗi ngày
    • Tôi cũng vậy. Tôi định dùng iPhone SE2 cho đến lúc nó chết hẳn (cùng thời, cùng kích cỡ, cùng trọng lượng, Touch ID, v.v.)
  • Tôi tò mò không biết trong kiểu thiết lập này thì xử lý DNS thế nào. ISP thường không thích người dùng chạy server trên đường truyền gia đình thì phải
    • NAT mới là vấn đề thực sự. Tôi đang theo dõi issue về tailscale [https://github.com/tailscale/tailscale/issues/11563]. Ngoài ra cũng có thể liên hệ trực tiếp ISP (hoặc chuyển sang đối thủ) và trả thêm một khoản nhỏ, ví dụ +5 euro/tháng, để lấy IP tĩnh. Ví dụ như vậy thì còn có thể chơi Factorio multiplayer với bạn bè
    • Phần lớn ISP trên thực tế cấp IP ‘động’, nhưng gần như không đổi. Trường hợp của tôi thì một năm đổi ngẫu nhiên một lần, lúc đó chỉ cần cập nhật DNS thủ công. Cũng có thể tự động hóa, nhưng vì hiếm khi xảy ra nên tôi cứ làm tay. Có lẽ chỉ khi lưu lượng chiều upload bị bão hòa liên tục thì ISP mới để ý, và nên nhớ những nhà như Comcast/XFinity có bất đối xứng upload/download khá lớn
    • Có khá nhiều giải pháp dynamic DNS. TP-link và một số hãng khác cho phép cấu hình rất tiện ngay trong ứng dụng
    • Tôi dùng internet 2,5 gigabit mà vẫn không có IP tĩnh. Thay vào đó router của tôi chạy script cập nhật cấu hình DNS mỗi khi IP thay đổi. Nếu nhà cung cấp DNS cho phép chỉnh ttl thì hoàn toàn có thể tự động hóa
  • Liên kết liên quan: [https://fairphone.com/en/2024/…]
  • Ừm, đây là blog của tôi. Tôi chỉ là một người bình thường viết linh tinh thôi, giờ thấy như bị văng ra khỏi cái giếng vậy. Hôm nay tôi cũng mới tạo tài khoản HN lần đầu. Trả lời các câu hỏi thì 1) Tôi vẫn đang chạy blog trên Pixel. Không có lý do gì để đổi cả 2) Tôi đưa nó lên internet gia đình đơn giản vì ban đầu nghĩ sẽ chẳng có mấy lưu lượng 3) Tôi chỉ là kiểu người tối nào trong tuần cũng thử nghiệm đủ thứ ở nhà, không làm trong ngành. Thực ra tôi là chủ một công ty thầu xây dựng
    • Cách bạn suy nghĩ rất giống một kỹ sư nên tôi nghĩ bạn sẽ hợp ở đây. Tôi cũng xem vài bài khác trên blog của bạn, có nhiều bài thú vị và bố cục rất dễ đọc, tôi sẽ còn quay lại. Bài “Tôi muốn ở một mình” cũng từng được HN đón nhận khá tốt
    • Tôi đọc rất thích. Có một điều tò mò muốn hỏi: tại sao bạn không build file bằng hugo rồi dùng một web server như nginx, mà lại chỉ chạy bằng hugo serve?