27 điểm bởi davespark 2025-11-27 | 4 bình luận | Chia sẻ qua WhatsApp

Hướng dẫn này trình bày quy trình biến một điện thoại Android không còn sử dụng thành máy chủ gia đình quy mô nhỏ bằng cách cài postmarketOS, dựa trên trường hợp lưu trữ trang web bằng Fairphone 2 từ năm 2015. Mục tiêu là giảm rác thải điện tử và khuyến khích tái sử dụng. Kết quả là bạn có thể có được một máy chủ gia đình nhỏ đủ để chạy các dịch vụ cơ bản.

Những gì cần chuẩn bị
  • Điện thoại Android không còn sử dụng
  • Bộ sạc và nguồn điện
  • Kết nối WiFi
  • Máy tính chạy Linux (native hoặc máy ảo)
Bước 1: Cài đặt postmarketOS

Trước tiên, hãy cài postmarketOS lên điện thoại. Kiểm tra xem thiết bị của bạn có được hỗ trợ đầy đủ hay không trên trang thiết bị, và hãy luôn mở trang đó trong suốt quá trình cài đặt.

Sau khi cài pmbootstrap, hãy tạo image và flash nó.

Tạo image:

  • Cập nhật port và khởi tạo thông tin thiết bị:
    $ pmbootstrap pull  
    $ pmbootstrap init  
    
    • Với codename của thiết bị, nhập giá trị được liệt kê trên trang thiết bị.
    • Với giao diện người dùng, chọn console (tùy chọn tối thiểu) hoặc fbkeyboard (có bàn phím trên màn hình).
  • Tạo image:
    $ pmbootstrap install  
    

Flash image:

  • Xem trên trang thiết bị cách khởi động vào chế độ flash (thường là bật nguồn khi đang giữ nút "volume down").
  • Kết nối điện thoại với máy tính và khởi động vào chế độ flash.
  • Làm theo hướng dẫn trong mục 'Installation' của trang thiết bị.
  • Flash root filesystem:
    $ pmbootstrap flasher flash_rootfs  
    
  • Khởi động lại thiết bị và xác nhận postmarketOS khởi chạy đúng cách.
Bước 2: Thiết lập máy chủ

Đăng nhập vào điện thoại đã cài postmarketOS. Tên người dùng/mật khẩu mặc định là user / 147147.

  • Đăng nhập qua SSH khi điện thoại đang kết nối với máy tính:
    $ ssh user@172.16.42.1  
    
  • Kết nối với mạng WiFi:
    $ nmcli device wifi connect your_wifi_network --ask  
    

Lúc này, máy chủ điện thoại cục bộ đã sẵn sàng. Lệnh để kiểm tra địa chỉ IP cục bộ của điện thoại:

$ ip -4 addr show wlan0 | grep inet | awk '{print $2}' | cut -d'/' -f1  

(thường có dạng 192.168.1.x). Cắm điện thoại ở vị trí an toàn và truy cập qua WiFi:

ssh user@192.168.1.x  
Bước 3: Phục vụ trang web

Thiết lập máy chủ web để lưu trữ một trang web đơn giản.

  • Tạo thư mục /var/www/html/:
    sudo mkdir -p /var/www/html/  
    
  • Tạo tệp HTML Hello World đơn giản:
    $ sudo sh -c 'echo "<h1>hello world</h1>" > /var/www/html/index.html'  
    
  • Thêm quy tắc nftables cho phép các gói đi vào cổng 80 (trong tệp /etc/nftables.d/99_http.nft):
    inet filter input tcp dport 80 ct state new accept  
    
  • Khởi động lại nftables:
    $ sudo systemctl restart nftables  
    
  • Chạy máy chủ web:
    $ httpd -h /var/www/html/  
    
  • Kiểm tra: từ máy tính, dùng curl để xác nhận:
    $ curl 192.168.1.x  
    
    (sẽ in ra văn bản <h1>hello world</h1>). Bạn cũng có thể nhập địa chỉ IP trong trình duyệt web trên thiết bị kết nối cùng mạng WiFi để kiểm tra. (Máy chủ HTTP sẽ không tự khởi động lại sau khi reboot.)
Bổ sung: Truy cập từ xa

Vì lý do bảo mật, đừng mở cổng SSH 22 ra Internet; thay vào đó hãy thiết lập truy cập VPN trên router (đa số hỗ trợ qua giao diện web). Sau khi kết nối VPN, hãy truy cập bằng SSH từ mạng cục bộ. Nếu bạn mở cổng 22 ra Internet, hãy tắt đăng nhập bằng mật khẩu và thiết lập SSH key.

Bổ sung: Bảo trì

Cập nhật gói:

$ sudo apk update  
$ sudo apk upgrade  
Bước tiếp theo

Trong phần nâng cao (vẫn đang được xây dựng), bạn sẽ học cách thiết lập domain và HTTPS, cũng như cách giữ cho máy chủ HTTP tiếp tục chạy sau khi reboot.

Hướng dẫn này được Louis Merlin thực hiện theo giấy phép CC BY-NC-SA 4.0.

4 bình luận

 
lemonapple 2025-11-29

Tôi khá thích mấy thứ như thế này.
Nếu muốn bắt đầu nhẹ nhàng thì dùng termux cũng ổn. Dùng để chạy Grafana trên một chiếc tablet không còn dùng tới thì vẫn khả thi.

Tuy nhiên, Android OS phản ứng khá thù địch với việc hoạt động như một máy chủ.
Theo chiếc Note10 mà tôi đã khôi phục cài đặt gốc vào năm 2024,
nếu tiến trình con vượt quá 6 cái thì sẽ bị kill.
Ngay cả khi ở trạng thái idle quá lâu cũng sẽ bị kill.
Dù đã tắt toàn bộ các tối ưu hóa liên quan đến pin thì vẫn vậy.

Tôi chỉ thử chạy tối đa được 72 giờ mà không đụng vào màn hình cảm ứng, sau đó thì bỏ cuộc.

 
geeep 2025-12-01

Bạn đã thử tắt phantom process killer chưa?

 
qpolsa95 2025-11-28

Không biết pin có ổn không nhỉ

 
cdwdong2 2025-11-28

Chắc sẽ bị phồng pin nhỉ