27 คะแนน โดย davespark 2025-11-27 | 4 ความคิดเห็น | แชร์ทาง WhatsApp

คู่มือนี้อธิบายขั้นตอนการแปลงโทรศัพท์ Android ที่ไม่ได้ใช้งานให้เป็นโฮมเซิร์ฟเวอร์ขนาดเล็กด้วย postmarketOS โดยอ้างอิงจากกรณีศึกษาที่ใช้ Fairphone 2 ปี 2015 ในการโฮสต์เว็บเพจ เป้าหมายคือการลดขยะอิเล็กทรอนิกส์และส่งเสริมการนำกลับมาใช้ใหม่ ผลลัพธ์คือคุณจะได้โฮมเซิร์ฟเวอร์ขนาดเล็กที่สามารถรันบริการพื้นฐานได้

สิ่งที่ต้องเตรียม
  • โทรศัพท์ Android ที่ไม่ได้ใช้งาน
  • ที่ชาร์จและแหล่งจ่ายไฟ
  • การเชื่อมต่อ WiFi
  • คอมพิวเตอร์ที่รัน Linux (แบบเนทีฟหรือใน virtual machine)
ขั้นตอนที่ 1: ติดตั้ง postmarketOS

เริ่มจากติดตั้ง postmarketOS ลงบนโทรศัพท์ ตรวจสอบก่อนว่าอุปกรณ์ของคุณรองรับได้ดีจาก หน้ารายการอุปกรณ์ และเปิดหน้านั้นทิ้งไว้ตลอดการติดตั้ง

หลังจากติดตั้ง pmbootstrap แล้ว ให้สร้างอิมเมจและแฟลชลงอุปกรณ์

การสร้างอิมเมจ:

  • อัปเดตพอร์ตและเริ่มต้นข้อมูลอุปกรณ์:
    $ pmbootstrap pull  
    $ pmbootstrap init  
    
    • ให้กรอก device codename ตามที่ระบุไว้ในหน้าอุปกรณ์
    • สำหรับ user interface ให้เลือก console (ตัวเลือกขั้นต่ำ) หรือ fbkeyboard (มีคีย์บอร์ดบนหน้าจอ)
  • สร้างอิมเมจ:
    $ pmbootstrap install  
    

การแฟลชอิมเมจ:

  • ตรวจสอบจากหน้าอุปกรณ์ว่าต้องบูตเข้าโหมดแฟลชอย่างไร (โดยทั่วไปคือเปิดเครื่องพร้อมกดปุ่ม "volume down" ค้างไว้)
  • เชื่อมต่อโทรศัพท์กับคอมพิวเตอร์แล้วบูตเข้าโหมดแฟลช
  • ทำตามคำแนะนำในส่วน 'Installation' ของหน้าอุปกรณ์
  • แฟลช root file system:
    $ pmbootstrap flasher flash_rootfs  
    
  • รีบูตอุปกรณ์และตรวจสอบว่า postmarketOS เริ่มทำงานได้ถูกต้อง
ขั้นตอนที่ 2: ตั้งค่าเซิร์ฟเวอร์

ล็อกอินเข้าโทรศัพท์ที่ติดตั้ง postmarketOS แล้ว ชื่อผู้ใช้/รหัสผ่านเริ่มต้นคือ user / 147147

  • ล็อกอินผ่าน SSH ขณะเชื่อมต่อโทรศัพท์กับคอมพิวเตอร์อยู่:
    $ ssh user@172.16.42.1  
    
  • เชื่อมต่อกับเครือข่าย WiFi:
    $ nmcli device wifi connect your_wifi_network --ask  
    

ตอนนี้เซิร์ฟเวอร์บนโทรศัพท์ในเครือข่ายภายในก็พร้อมแล้ว คำสั่งสำหรับตรวจสอบ IP ภายในของโทรศัพท์คือ:

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

(โดยทั่วไปจะอยู่ในรูปแบบ 192.168.1.x) เชื่อมต่อโทรศัพท์ไว้ในที่ปลอดภัยและเข้าถึงผ่าน WiFi:

ssh user@192.168.1.x  
ขั้นตอนที่ 3: ให้บริการเว็บเพจ

ตั้งค่าเว็บเซิร์ฟเวอร์เพื่อโฮสต์เว็บเพจอย่างง่าย

  • สร้างไดเรกทอรี /var/www/html/:
    sudo mkdir -p /var/www/html/  
    
  • เขียนไฟล์ HTML แบบ Hello World อย่างง่าย:
    $ sudo sh -c 'echo "<h1>hello world</h1>" > /var/www/html/index.html'  
    
  • เพิ่มกฎ nftables เพื่ออนุญาตแพ็กเก็ตขาเข้าที่พอร์ต 80 (ในไฟล์ /etc/nftables.d/99_http.nft):
    inet filter input tcp dport 80 ct state new accept  
    
  • รีสตาร์ต nftables:
    $ sudo systemctl restart nftables  
    
  • รันเว็บเซิร์ฟเวอร์:
    $ httpd -h /var/www/html/  
    
  • ทดสอบ: ตรวจสอบจากคอมพิวเตอร์ด้วย curl:
    $ curl 192.168.1.x  
    
    (จะได้ข้อความ <h1>hello world</h1> แสดงออกมา) จากนั้นลองพิมพ์ IP ดังกล่าวในเว็บเบราว์เซอร์ของอุปกรณ์ที่เชื่อมต่อกับเครือข่าย WiFi เดียวกันเพื่อตรวจสอบ (เมื่อรีบูตแล้ว HTTP server จะไม่เริ่มทำงานอัตโนมัติ)
เพิ่มเติม: การเข้าถึงจากระยะไกล

เพื่อความปลอดภัย อย่าเปิดพอร์ต SSH 22 ออกสู่อินเทอร์เน็ต แต่ให้ตั้งค่า VPN access บนเราเตอร์แทน (ส่วนใหญ่รองรับผ่านเว็บอินเทอร์เฟซ) หลังเชื่อมต่อ VPN แล้วจึงเข้าถึงด้วย SSH ผ่านเครือข่ายภายใน หากจำเป็นต้องเปิดพอร์ต 22 สู่อินเทอร์เน็ต ให้ปิดการล็อกอินด้วยรหัสผ่านและตั้งค่า SSH keys

เพิ่มเติม: การบำรุงรักษา

อัปเดตแพ็กเกจ:

$ sudo apk update  
$ sudo apk upgrade  
ขั้นตอนถัดไป

เรียนรู้การตั้งค่าโดเมนและ HTTPS รวมถึงวิธีทำให้ HTTP server รันต่อเนื่องหลังรีบูตได้จากส่วนขั้นสูง (ยังอยู่ระหว่างจัดทำ)

คู่มือนี้จัดทำโดย Louis Merlin ภายใต้สัญญาอนุญาต CC BY-NC-SA 4.0

4 ความคิดเห็น

 
lemonapple 2025-11-29

ผมชอบอะไรแบบนี้นะ
ถ้าจะเริ่มแบบเบา ๆ แค่ termux ก็พอใช้ได้เหมือนกัน เอาไปเปิด Grafana บนแท็บเล็ตที่ไม่ได้ใช้แล้วในระดับนั้นยังใช้งานได้อยู่

แต่ Android OS ค่อนข้างเป็นปฏิปักษ์กับการทำงานเป็นเซิร์ฟเวอร์
อิงจาก Note10 ที่รีเซ็ตเป็นค่าโรงงานในปี 24
ถ้ามี child process เกิน 6 ตัวจะโดน kill
ถึงจะอยู่ในสถานะ idle นาน ๆ ก็ยังโดน kill
ปิดการเพิ่มประสิทธิภาพที่เกี่ยวกับแบตเตอรี่ทั้งหมดแล้วก็ยังเป็นเหมือนเดิม

ผมลองปล่อยไว้โดยไม่แตะหน้าจอได้นานสุดแค่ 72 ชั่วโมง หลังจากนั้นก็ยอมแพ้ครับ

 
geeep 2025-12-01

เคยลองปิด phantom process killer ไหม?

 
qpolsa95 2025-11-28

แบตเตอรี่น่าจะยังไหวอยู่ไหม

 
cdwdong2 2025-11-28

คงมีอาการแบตบวมใช่ไหม