Pi Zero 2W Ultimate mini Server
สิ่งที่ต้องมี
- Raspberry Pi Zero 2 W Single Board Computer หรือ Pi3+ ขึ้นไป (ถ้าจะซื้อใหม่ก็ควรสักแค่นี้แล้ว)
- Micro SD Card ยี่ห้อไรก็ได้ แต่เอาใหม่ ๆ หน่อยพวก U1, A1 หรือ Class 10 รุ่นใหม่ ๆ ไม่งั้นจะเขียนช้า เปิดช้า รอนานแค่นั้น
- adapter ไฟ สาย ไว้เสียบให้ไฟมันเข้า Pi (ในตัวอย่างนี้คือสาย micro usb)
เตรียม SD Card
โหลด Raspberry Pi Imager เพื่อใช้ในการติดตั้ง Raspberry Pi OS
เปิดโปรแกรมขึ้นมาและเลือกอุปกรณ์ให้ตรงกับที่เราใช้, OS เลือก Legacy 32bit ส่วน Storage ก็เลือก SD Card ที่เสียบเข้าไป และกด Next
หลังจากนั้นให้กด Edit Settings ดูที่หน้า General ตั้งค่าต่าง ๆ ให้เรียบร้อย และไปที่ tab Services ให้เปิด Enable SSH และทำการ Save ออกมา
กด Yes เพื่อยืนยัน Custom Settings ของเรา หลังจากนั้น Yes อีกครั้ง เพื่อ format SD Card และติดตั้ง OS
หลังจากเสร็จแล้วก็นำ SD Card ไปเสียบ Pi เพื่อเปิดใช้งาน
เปิดใช้งาน Pi Zero 2W
หลังจากเสียบปลั๊ก เครื่องจะทำงานและเชื่อมต่อ Wifi ตามที่เราตั้งไว้ ซึ่งตรงนี้ใช้เวลานานอยู่ ให้ทำการเข้าไปเช็คใน router ว่า Pi ได้ ip อะไร และจดไว้ (แนะนำให้ทำการ Fix ip ไว้) หรือจะใช้วิธีอื่น ๆ ก็ได้ตามถนัด ขั้นตอนนี้อาจใช้เวลา 3-5 นาที กว่าที่ pi จะ boot ขึ้นมาให้เห็น
พอได้ ip แล้วให้เปิด Windows Power Shell ขึ้นมาเพื่อทำการเชื่อต่อ SSH โดยใช้คำสั่ง
ssh pizero@192.168.1.111
โดย pizero จะเป็น username ที่ตั้งไว้ตอนทำ SD Card ส่วน 192.168.1.111 ให้ใช้ ip ที่ได้มา เมื่อ enter ไปโปรแกรมจะขึ้นให้ใส่ Password
หลังจากนั้นให้อัพเดท pizero ก่อนโดยใช้คำสั่งด้านล่าง
ซึ่งนานอยู่ (ยิ่ง sd card ธรรมดา ๆ เขียนช้า ๆ ยิ่งนาน)
sudo apt update && sudo apt upgrade
การ copy คำสั่งต่าง ๆ สามารถกดคลิ๊กขวาเพื่อวางใน terminal ได้
หลังจากนั้นตอบ y เพื่อยืนยันอัพเดท
Install Pi-hole
Update Pi Zero (ถ้ายังไมไ่ด้ทำขั้นตอนที่แล้ว)
sudo apt update && sudo apt upgrade
https://docs.pi-hole.net/main/basic-install/
เริ่มติดตั้ง pihole โดยพิมพ์
curl -sSL https://install.pi-hole.net | bash
รอจนเสร็จจะขึ้นหน้าจอติดตั้ง
pihole จะแนะนำให้ไป fix ip ไว้ก่อน (ทำใน DHCP) ให้กด Continue
หน้าจอ Static IP จะถามเพื่อยืนยันว่าจะใช้ ip นี้จริง ๆ ในการรัน pihole หรือไม่โดย
ถ้า fix ip ไว้แล้วให้ตอบ yes ได้เลย หรือ skip ไปก่อน หากยังไม่ได้ fix
ตัวอย่างคือเรายังไม่ได้ fix ip ไว้ และไม่ต้องการใช้ ip นี้ จึงต้องกด skip และ Continue
หน้าจอต่อไปจะเป็นการตั้งค่า Upsteam DNS ตรงนี้ผมเลือกเป็น Cloudflare (DNSSEC)
หน้าจอต่อไป
- Blocklists ให้กด Yes
- Admin Web Interface ให้กด Yes
- Web Server ให้กด Yes
- Enable Logging ให้กด Yes
- Privacy mode for FTL ให้กด Continue
หลังจากนั้นรอติดตั้งจนเสร็จ ก็จะได้หน้าจอประมาณนี้ รวมถึง password ใช้เข้า admin
หลังจากติดตั้งเรียบร้อยแล้วแนะนำให้ติดตั้ง cloudflared ด้วย เพื่อทำ DoH เพิ่มความปลอดภัย
Install Cloudflared
การติดตั้ง clouflared สามารถใช้ตามโพยในลิ้งได้เลย แค่เลือกลงแบบ pi 32bit ตามในลิ้ง ภาษาไทยด้านล่างก็แค่ copy มาเฉย ๆ ให้เหลือส่วนที่ต้องใช้จริง ๆ แค่นั้น
https://docs.pi-hole.net/guides/dns/cloudflared/
ที่หน้าจอ terminal ให้พิมพ์
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm
sudo mv -f ./cloudflared-linux-arm /usr/local/bin/cloudflared
sudo chmod +x /usr/local/bin/cloudflared
cloudflared -v
หลังจากเสร็จแล้ว cloudflared จะแสดงเลขเวอร์ชั่นในบรรทัดสุดท้าย
ตั้งค่า cloudflared ให้ boot ตอน startup
sudo useradd -s /usr/sbin/nologin -r -M cloudflared
หลังจากนั้นเข้าไปสร้าง config ไฟล์โดยพิมพ์
sudo nano /etc/default/cloudflared
เสร็จแล้วจะขึ้นหน้าจอเปล่า ๆ มาดังภาพ
ให้ทำการ copy ข้อความด้านล่างไปใส่ เพื่อกำหนด upstream ให้ชี้ไปที่ DNS ของ cloudflare
# Commandline args for cloudflared, using Cloudflare DNS
CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query
การ copy คำสั่งต่าง ๆ สามารถกดคลิ๊กขวาเพื่อวางใน terminal ได้
หลังจากนั้นให้ทำการเซฟโดยกด Ctrl + X
กด Y เพื่อยืนยัน และกดปุ่ม Enter มันก็จะกลับออกมาจากไฟล์ config
อัพเดท permission ของไฟล์ที่เพิ่งสร้างโดยใช้คำสั่งด้านล่าง
sudo chown cloudflared:cloudflared /etc/default/cloudflared
sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared
หลังจากนั้นสร้างไฟล์ systemd โดยใช้คำสั่งด้านล่าง
sudo nano /etc/systemd/system/cloudflared.service
หลังจากนั้นให้ทำการ copy ข้อความด้านล่างไปใส่ และเซฟออกมาเหมือนตอนสร้างไฟล์ config ด้านบน
[Unit]
Description=cloudflared DNS over HTTPS proxy
After=syslog.target network-online.target
[Service]
Type=simple
User=cloudflared
EnvironmentFile=/etc/default/cloudflared
ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
ตั้งให้ทำงานตอน boot โดยพิมพ์
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
sudo systemctl status cloudflared
เมื่อกด enter จากคำสั่งด้านบนแล้วอาจเห็นเหมือนมันค้าง มีจอคล้าย ๆ ตัวอย่าง ตามด้วย (END)
ตรงนี้ไม่ต้องตกให้กดปุ่ม Q มันจะออกมาเอง
เป็นอันเสร็จขั้นตอนติดตั้ง
คำสั่งทดสอบว่า cloudflared ทำงานได้
ให้ทดลอง query url โดยการพิมพ์ลงไป ตัวอย่างด้านล่างคือให้ไปที่ google
dig @127.0.0.1 -p 5053 google.com
หากใช้งานได้ก็จะขึ้นคล้าย ๆ ด้านล่าง
หากต้องการเช็คว่า cloudflared ยังทำงานอยู่หรือไม่ให้ใช้
sudo systemctl status cloudflared
หากทำงานก็จะขึ้น active สีเขียว (อย่าลืมกด Q ออกมาด้วย)
การอัพเดท Cloudflared
ให้สร้างไฟล์อัพเดทโดยใช้คำสั่ง
sudo nano /etc/cron.weekly/cloudflared-updater
หลังจากนั้นให้ทำการ copy ข้อความด้านล่างไปใส่ และกดเซฟออกมา (Ctrl + X, Y และ Enter เหมือนเดิม)
#!/bin/bash
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm
sudo systemctl stop cloudflared
sudo mv -f ./cloudflared-linux-arm /usr/local/bin/cloudflared
sudo chmod +x /usr/local/bin/cloudflared
sudo systemctl start cloudflared
หลังจากนั้นตั้ง permission โดยใช้คำสั่ง
sudo chmod +x /etc/cron.weekly/cloudflared-updater
sudo chown root:root /etc/cron.weekly/cloudflared-updater
โดยหลังจากนี้ cloudflared จะทำกรอัพเดทอัตโนมัติอาทิตย์ละครั้ง
จุดนี้ถือว่าจบส่วนของ cloudflared














