Skip to main content

Pi Zero 2W Ultimate mini Server

ดู navigation ด้านซ้าย เพื่อนำทางง่าย ๆ

สิ่งที่ต้องมี


  • 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

image.png

หลังจากนั้นให้กด Edit Settings ดูที่หน้า General ตั้งค่าต่าง ๆ ให้เรียบร้อย และไปที่ tab Services ให้เปิด Enable SSH และทำการ Save ออกมา

image.png

กด Yes เพื่อยืนยัน Custom Settings ของเรา หลังจากนั้น Yes อีกครั้ง เพื่อ format SD Card และติดตั้ง OS 

image.png

หลังจากเสร็จแล้วก็นำ 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 ได้

image.png

หลังจากนั้นตอบ 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

image.png

รอจนเสร็จจะขึ้นหน้าจอติดตั้ง

image.png

pihole จะแนะนำให้ไป fix ip ไว้ก่อน (ทำใน DHCP) ให้กด Continue

image.png

หน้าจอ Static IP จะถามเพื่อยืนยันว่าจะใช้ ip นี้จริง ๆ ในการรัน pihole หรือไม่โดย

ถ้า fix ip ไว้แล้วให้ตอบ yes ได้เลย หรือ skip ไปก่อน หากยังไม่ได้ fix

ตัวอย่างคือเรายังไม่ได้ fix ip ไว้ และไม่ต้องการใช้ ip นี้ จึงต้องกด skip และ Continue

image.png

หน้าจอต่อไปจะเป็นการตั้งค่า Upsteam DNS ตรงนี้ผมเลือกเป็น Cloudflare (DNSSEC)

image.png

หน้าจอต่อไป

  • Blocklists ให้กด Yes
  • Admin Web Interface ให้กด Yes
  • Web Server ให้กด Yes
  • Enable Logging ให้กด Yes
  • Privacy mode for FTL ให้กด Continue

หลังจากนั้นรอติดตั้งจนเสร็จ ก็จะได้หน้าจอประมาณนี้ รวมถึง password ใช้เข้า admin

image.png

หลังจากติดตั้งเรียบร้อยแล้วแนะนำให้ติดตั้ง 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 จะแสดงเลขเวอร์ชั่นในบรรทัดสุดท้าย

image.png

ตั้งค่า cloudflared ให้ boot ตอน startup

sudo useradd -s /usr/sbin/nologin -r -M cloudflared

หลังจากนั้นเข้าไปสร้าง config ไฟล์โดยพิมพ์

sudo nano /etc/default/cloudflared

เสร็จแล้วจะขึ้นหน้าจอเปล่า ๆ มาดังภาพ

image.png

ให้ทำการ 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

image.png

อัพเดท 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)

image.png

ตรงนี้ไม่ต้องตกให้กดปุ่ม Q มันจะออกมาเอง

เป็นอันเสร็จขั้นตอนติดตั้ง

คำสั่งทดสอบว่า cloudflared ทำงานได้


ให้ทดลอง query url โดยการพิมพ์ลงไป ตัวอย่างด้านล่างคือให้ไปที่ google

dig @127.0.0.1 -p 5053 google.com

หากใช้งานได้ก็จะขึ้นคล้าย ๆ ด้านล่าง

image.png

หากต้องการเช็คว่า 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 

ตั้งค่า Pi-hole ให้ใช้งาน Cloudflared


เข้าไปที่ web interface ของ Pi-hole โดยใช้ browser เข้าไป ตัวอย่างนี้คือ url http://192.168.1.127/admin/login.php

โดยเมื่อเข้ามาแล้วให้ไปที่ Settings > DNS ดูในส่วนของ Upstream DNS Servers ให้ใส่ url ของ Cloudflared ที่เราเพิ่งสร้างไว้ตามรูปเลย

image.png

หลังจากนั้นให้กด save ที่ขวาล่างออกมาเป็นอันเสร็จสิ้น

ทดสอบว่าใช้งานได้หรือไม่โดยการไปที่ url https://one.one.one.one/help/

หากใช้งานได้ ตรงส่วนของ DoH จะขึ้น Yes 

image.png

Install Docker

ลงเหมือน Docker ปกติ ดูได้ใน

Install Docker