Thuta Learning

Raspberry Pi ကို Home Server အဖြစ် စတင်တည်ဆောက်နည်း

Raspberry Pi board အသစ်တစ်ခုကို headless Linux server အဖြစ် OS flash လုပ်ခြင်းမှ SSH ဖြင့် remote ချိတ်ဆက်ခြင်း၊ static IP သတ်မှတ်ခြင်း၊ firewall ဖွင့်ခြင်းအထိ 24/7 run နိုင်တဲ့ home server အခြေခံအဆင့်ကို တည်ဆောက်ပါမယ်။

Raspberry Pi ကို Home Server အဖြစ် စတင်တည်ဆောက်နည်း cover illustration

Problem

Raspberry Pi board အသစ်တစ်ခုက file server, ad-blocker, media server, home automation hub စတဲ့ service များ run ဖို့ ကောင်းကောင်း အလုပ်ဖြစ်နိုင်ပေမယ့်၊ monitor/keyboard မချိတ်ဘဲ remote administer လုပ်နိုင်တဲ့၊ IP address မပြောင်းလဲတဲ့၊ လုံခြုံစွာ configure ထားတဲ့ base setup မရှိရင် service တစ်ခုစီ ထပ်ထည့်တိုင်း အခက်အခဲ ကြုံနေရပါလိမ့်မယ်။

Requirements

  • Raspberry Pi board (Raspberry Pi 4 သို့မဟုတ် 5 အကြံပြု) နှင့် power supply
  • MicroSD card (16GB+) သို့မဟုတ် USB SSD
  • Raspberry Pi Imager software install ထားသော computer တစ်ခု
  • Router settings ထဲ ဝင်ရောက်နိုင်ခြင်း (static IP/DHCP reservation သတ်မှတ်ဖို့)

Raspberry Pi OS ကို Headless Setup ဖြင့် Flash လုပ်ပါ

Home server အဖြစ်သုံးမယ့် Pi မှာ monitor/keyboard ချိတ်ဆက်စရာ မလိုအပ်ပါ — Raspberry Pi Imager ရဲ့ advanced options (gear icon) ထဲမှာ SSH ကို ကြိုတင်ဖွင့်ထားနိုင်ပြီး hostname, username/password, Wi-Fi (deploy လုပ်မယ့် environment အရ) ကို flash လုပ်ချိန်မှာပဲ configure လုပ်ထားနိုင်ပါတယ် — ဒါက 'headless setup' လို့ခေါ်ပြီး monitor တစ်ခါမှ မချိတ်ဘဲ Pi ကို run နိုင်စေတယ်။

Router ပေါ်မှာ Static IP (DHCP Reservation) သတ်မှတ်ပါ

Router ရဲ့ default DHCP setting က device တစ်ခုစီကို IP address အသစ်တစ်ခု အခါအားလျော်စွာ ပြန်ချပေးနိုင်ပါတယ် — Pi ရဲ့ IP address ပြောင်းသွားရင် server ကို ချိတ်ဆက်ဖို့ IP ကို ပြန်ရှာနေရမှာမို့ home server အတွက် အဆင်မပြေပါဘူး။ Router settings ထဲက DHCP reservation (client list ထဲက Pi ရဲ့ MAC address ကို IP address ပုံသေတစ်ခုနှင့် ချိတ်ချ) လုပ်ထားရင် Pi ဟာ restart လုပ်တိုင်း IP address တူညီနေမှာဖြစ်ပါတယ်။

Terminal
$ ssh pi@raspberrypi-server.local

mDNS name ရှိပါတယ်

IP address ကို ရှာမတွေ့သေးရင် `raspberrypi-server.local` (hostname.local) ကို ယာယီသုံးနိုင်ပါတယ် — Avahi/mDNS ကနေ resolve လုပ်ပေးတာဖြစ်ပြီး router ပေါ် DHCP reservation ထားပြီးတဲ့အထိသာ backup နည်းလမ်းအဖြစ် ကိုင်ပါ။

System ကို Update ပြီး Basic Security Setup လုပ်ပါ

Fresh OS image တစ်ခုမှာ security patch အသစ်ဆုံးတွေ ပါချင်မှ ပါလို့ update အရင်ဆွဲပါ။ Default `pi` user ကို password authentication ကနေ SSH key authentication ဆီ ကူးပြောင်းလိုက်ရင် brute-force attack ကို သိသိသာသာ လျှော့ချနိုင်ပါတယ် — internet ထဲ Pi ရဲ့ SSH port ကို ဖွင့်ထားမယ်ဆိုရင် ဒါက အရေးအကြီးဆုံး step တစ်ခုပါ။

Terminal
$ sudo apt update && sudo apt full-upgrade -y
$ ssh-copy-id pi@raspberrypi-server.local

Firewall ဖွင့်ပြီး လိုအပ်တဲ့ Port သာ ခွင့်ပြုပါ

Home server ကို service အသစ် (file server, media server, ad-blocker) ထပ်ထည့်တိုင်း port အသစ် ဖွင့်လာမှာမို့ default-deny firewall တစ်ခု (`ufw`) ကို အစောကတည်းက setup ထားခြင်းက practical ဖြစ်ပါတယ် — လိုအပ်တဲ့ port ကိုသာ တစ်ခုချင်း explicit ခွင့်ပြုပြီး ကျန်တာအားလုံး default အနေနဲ့ block ထားတာက attack surface ကို ကန့်သတ်ထားနိုင်ပါတယ်။

Terminal
$ sudo ufw allow 22/tcp   # SSH
$ sudo ufw enable
$ sudo ufw status

Expected result

Monitor/keyboard ကို လုံးဝ မချိတ်ဆက်ဘဲ SSH ကနေတိုက်ရိုက် remote administer လုပ်နိုင်တဲ့၊ router restart/power outage ဖြစ်ရင်တောင် IP address မပြောင်းလဲတဲ့၊ default-deny firewall နှင့် SSH key authentication ဖြင့် အခြေခံလုံခြုံစွာ ကာကွယ်ထားတဲ့ headless Raspberry Pi home server တစ်ခု 24/7 run နေတာကို ရရှိမည်ဖြစ်ပြီး၊ ဒီအပေါ်မှာ file server, ad-blocker, media server စတဲ့ service များ ဆက်လက် ထပ်ဆင့်တည်ဆောက်နိုင်မည်။

Troubleshooting

  • `ssh pi@raspberrypi-server.local` က 'Connection refused' ပြရင် headless setup လုပ်ချိန် SSH ကို enable မထားခြင်း ဖြစ်နိုင်ပါတယ် — SD card ကို computer ပေါ် ပြန်တင်ပြီး boot partition ထဲမှာ `ssh` ဆိုတဲ့ file အလွတ်တစ်ခု manual ဖန်တီးထားခြင်းဖြင့်လည်း enable လုပ်နိုင်ပါတယ်။
  • `.local` hostname ကို resolve မလုပ်နိုင်ရင် router/network တစ်ချို့မှာ mDNS ကို block ထားနိုင်ပါတယ် — router admin panel ထဲက connected devices list ကနေ IP address ကို တိုက်ရိုက် ရှာပြီး IP address ဖြင့် ချိတ်ဆက်ပါ။
  • Update ပြီးနောက် Pi ဟာ boot ပြန်မတက်တော့ရင် power supply က amperage လုံလောက်မှု (Pi 4/5 အတွက် 3A+ အကြံပြု) မရှိတာကြောင့် ဖြစ်နိုင်ပါတယ် — official power adapter ကို သုံးကြည့်ပါ။
  • ufw enable လုပ်ပြီးနောက် SSH session ချက်ချင်း ပြတ်တောက်သွားရင် port 22 ကို allow မလုပ်ခင် enable လုပ်မိတာ ဖြစ်နိုင်ပါတယ် — physical access ရှိမှသာ ပြင်နိုင်တော့မှာမို့ `ufw allow 22/tcp` ကို `ufw enable` မလုပ်ခင် အမြဲ အရင်လုပ်ပါ။

Related tutorials