Cách tái sử dụng điện thoại Android cũ làm máy chủ web
(far.computer)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ặcfbkeyboard(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:
(sẽ in ra văn bản$ curl 192.168.1.x<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
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.
Bạn đã thử tắt
phantom process killerchưa?Không biết pin có ổn không nhỉ
Chắc sẽ bị phồng pin nhỉ