Kodėl verta susikurti namų serverį su Raspberry Pi?
Žinot, kai prieš kelerius metus pirmą kartą išgirdau apie Raspberry Pi, pagalvojau – nu vėl kažkoks žaisliukas kompiuterininkams. Bet kai draugas parsivedė namo tą mažą žalią plokštę ir parodė, ką ji gali, tiesiog nesupratau, kaip anksčiau be jos gyvenau. Dabar mano Raspberry Pi sukasi jau trečius metus be sustojimo, tvarko visokius namų reikalus – nuo failų saugojimo iki automatizacijos sistemų.
Pagrindinis privalumas čia yra kaina ir energijos suvartojimas. Kol normalus kompiuteris ar serveris per mėnesį suėstų elektros už 20-30 eurų, Raspberry Pi apsieina vos keliais eurais. O funkcionalumo? Daugiau nei užtenka daugumai namų poreikių. Galima sukurti savo debesį failams, media serverį, VPN, automatizacijos centrą – ką tik širdis geidžia.
Bet štai kas svarbu – saugumas. Kai serveris veikia namuose ir galbūt prieinamas iš interneto, reikia pasirūpinti, kad niekas nepageidaujamas neužsuktų į svečius. Ir čia prasideda tikrasis iššūkis, ypač jei technologijose neesi aukščiausios kvalifikacijos specialistas.
Kas tau reikės pradėti šį nuotykį
Pirmas dalykas – pats Raspberry Pi. Aš rekomenduoju bent Raspberry Pi 4 su 4GB RAM, jei planuoji rimtesnius projektus. Taip, veiks ir su 2GB, bet patikėk manimi – geriau iškart paimti normalų variantą. Kainuoja apie 50-70 eurų, priklausomai nuo to, kur perki.
Dar reikės microSD kortelės – bent 32GB, geriau 64GB. Čia nesitaupyk – paimk kokią nors geresnę klasę (A2 ar bent A1), nes pigios kortelės būna lėtos kaip vėžlys ir greitai sugenda. Patikrinau ant savo kailės, kai pirmoji kortelė po pusės metų tiesiog numirė su visais duomenimis.
Maitinimo blokas – oficialus Raspberry Pi maitinimas yra geriausias pasirinkimas. Kiti dažnai neduoda stabilios įtampos, o tai gali sukelti keisčiausių problemų. Dėžutė su vėdinimu ar net mažu ventiliatoriumi taip pat pravers, nes Pi gali įkaisti, ypač vasarą.
Jei planuoji laikyti daug duomenų, išorinis kietasis diskas ar SSD bus būtinas. microSD kortelė tinka sistemai, bet ne dideliems failų kiekiams. Aš naudoju 1TB SSD per USB 3.0 – veikia puikiai.
Pirmieji žingsniai: operacinės sistemos diegimas
Raspberry Pi OS (anksčiau vadinosi Raspbian) yra standartinis pasirinkimas, ir aš tau rekomenduoju pradėti nuo jo. Yra Lite versija be grafinės sąsajos – būtent ją ir reikia serveriui. Kam grafinė sąsaja, jei serveris veiks be monitoriaus kampe prie rauterio?
Parsisiųsk Raspberry Pi Imager programą į savo kompiuterį. Ji yra oficiali ir labai supaprastina procesą. Įdėk microSD kortelę į kompiuterį, paleisk Imager, pasirink Raspberry Pi OS Lite ir įrašyk į kortelę. Bet palūkėk – prieš spausdamas „Write”, paspausk ant krumpliaračio ir nustatyk kai kuriuos dalykus iš anksto.
Čia galėsi įjungti SSH (būtinai tai padaryk!), nustatyti vartotojo vardą ir slaptažodį, sukonfigūruoti WiFi, jei planuoji jungti belaidžiu būdu. Tai sutaupys laiko vėliau. SSH slaptažodis turi būti stiprus – ne „raspberry123” ar panašūs variantai. Naudok bent 16 simbolių su raidėmis, skaičiais ir specialiais simboliais.
Kai viskas įrašyta, ištrauk kortelę, įdėk į Raspberry Pi, prijunk internetą (geriau laidą, stabiliau) ir maitinimą. Po minutės ar dviejų Pi turėtų būti pasiekiamas tinkle.
Prisijungimas ir bazinė konfigūracija
Dabar reikia sužinoti, kokį IP adresą gavo tavo Pi. Galima pažiūrėti rauterio administravimo sąsajoje arba naudoti programas kaip „Advanced IP Scanner” Windows’e ar „nmap” Linux’e. Kai randi adresą (kažkas panašaus į 192.168.1.150), galima jungtis per SSH.
Windows’e dabar SSH klientas yra integruotas į komandinę eilutę, arba galima naudoti PuTTY. Linux’e ar Mac’e tiesiog atidarai terminalą ir rašai:
ssh tavo_vartotojas@192.168.1.150
Įvesk slaptažodį, ir štai – esi viduje. Pirmas dalykas, kurį darau visada – atnaujinu sistemą:
sudo apt update && sudo apt upgrade -y
Tai gali užtrukti, ypač jei tai naujas įdiegimas. Eik kavos ar arbatos, palauks.
Kai sistema atsinaujino, reikia pakeisti keletą bazinių nustatymų. Paleisk konfigūracijos įrankį:
sudo raspi-config
Čia rekomenduoju pakeisti hostname (kad lengviau būtų identifikuoti tinkle), nustatyti laiko juostą, išplėsti failų sistemą, kad naudotų visą kortelės vietą. Taip pat galima pakeisti GPU atminties kiekį – serveriui užtenka 16MB, nes grafinės sąsajos nebus.
Saugumo pagrindai – čia prasideda rimti dalykai
Gerai, dabar prie svarbiausios dalies. Daugelis žmonių šitą dalį praleidžia ir vėliau stebiasi, kodėl jų serveris tapo botnet’o dalimi ar kažkas pavogė duomenis. Nesijuokiu – tai nutinka dažniau nei galvoji.
Pirmas dalykas – ugniasienė. Raspberry Pi OS ateina su iptables, bet aš rekomenduoju naudoti UFW (Uncomplicated Firewall), nes jis daug paprastesnis:
sudo apt install ufw
Prieš įjungdamas ugniasienę, būtinai leisk SSH, kitaip pats save užrakinsi:
sudo ufw allow ssh
sudo ufw enable
Dabar ugniasienė blokuoja viską, išskyrus SSH. Kai vėliau įdiegsi kitas paslaugas (pvz., web serverį), reikės atidaryti atitinkamus portus.
Kitas svarbus dalykas – SSH apsauga. Slaptažodžiai yra gerai, bet SSH raktai yra geriau. Sugeneruok SSH raktų porą savo kompiuteryje (ne Pi!):
ssh-keygen -t ed25519
Nukopijuok viešąjį raktą į Pi:
ssh-copy-id tavo_vartotojas@192.168.1.150
Dabar gali prisijungti be slaptažodžio. Kai įsitikinai, kad veikia, galima išjungti slaptažodžių autentifikaciją SSH. Redaguok SSH konfigūraciją:
sudo nano /etc/ssh/sshd_config
Rask ir pakeisk šias eilutes:
PasswordAuthentication no
PermitRootLogin no
Port 2222
Taip, pakeičiau ir portą iš standartinio 22 į 2222. Tai ne tikra apsauga, bet sumažina automatinių atakų kiekį. Botai dažniausiai skenuoja standartinį portą.
Nepamirsk perkrauti SSH:
sudo systemctl restart ssh
Ir atnaujink ugniasienės taisyklę:
sudo ufw delete allow ssh
sudo ufw allow 2222/tcp
Fail2ban – tavo asmens sargybinis
Fail2ban yra programa, kuri stebi logus ir automatiškai blokuoja IP adresus, kurie bando brutaliai įsilaužti. Tai būtina turėti, jei tavo serveris prieinamas iš interneto.
Įdiegimas paprastas:
sudo apt install fail2ban
Sukurk konfigūracijos failą:
sudo nano /etc/fail2ban/jail.local
Įrašyk šį minimumą:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
[sshd]
enabled = true
port = 2222
Tai reiškia: jei kas nors per 10 minučių (600 sekundžių) tris kartus nesėkmingai bandys prisijungti, bus užblokuotas vienai valandai (3600 sekundžių). Gali koreguoti šiuos parametrus pagal savo poreikius.
Paleisk fail2ban:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Patikrinti, ar veikia, gali komanda:
sudo fail2ban-client status sshd
Po kelių dienų ten pamatysi užblokuotų IP adresų – bus įdomu pamatyti, kiek botų bando įsilaužti.
Duomenų saugojimas ir atsarginės kopijos
Gerai, serveris saugus, bet kas su duomenimis? microSD kortelės nėra patikimiausias saugojimo būdas – jos genda, ir tai tik laiko klausimas. Todėl išorinis diskas yra būtinas.
Prijunk SSD ar HDD prie USB 3.0 porto (mėlynas). Surask, kaip sistema jį mato:
lsblk
Greičiausiai bus /dev/sda1 ar panašiai. Reikia jį sumontuoti. Pirma sukurk montavimo tašką:
sudo mkdir /mnt/storage
Dabar reikia sužinoti disko UUID (unikalų identifikatorių):
sudo blkid
Nukopijuok UUID ir redaguok fstab failą:
sudo nano /etc/fstab
Pridėk eilutę (pakeisk UUID į savo):
UUID=tavo-uuid-čia /mnt/storage ext4 defaults,nofail 0 2
„nofail” parametras svarbus – jei diskas neprijungtas, sistema vis tiek pakils, o ne sustings.
Dabar sumontuok:
sudo mount -a
Jei klaidos nėra – puiku, diskas sumontuotas ir bus automatiškai montuojamas kiekvieno paleidimo metu.
Atsarginės kopijos – tai tema, kurią visi ignoruoja, kol nepraeina. Aš naudoju rsync atsarginėms kopijoms į kitą vietą (gal kitą kompiuterį ar NAS). Paprastas skriptas gali atrodyti taip:
#!/bin/bash
rsync -avz --delete /mnt/storage/ user@backup-server:/backup/pi/
Pridėk šį skriptą į cron, kad vykdytų automatiškai, pvz., kas naktį:
crontab -e
Pridėk eilutę:
0 2 * * * /home/tavo_vartotojas/backup.sh
Tai paleis atsarginę kopiją kiekvieną naktį 2 val.
Papildomos apsaugos priemonės ir stebėjimas
Kai baziniai dalykai sutvarkyti, galima pagalvoti apie papildomą apsaugą. Unattended-upgrades paketas automatiškai įdiegs saugumo atnaujinimus:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Pasirink „Yes” ir sistema automatiškai atsinaujins saugumo pataisas.
Logwatch yra puiki programa, kuri analizuoja sistemos logus ir siunčia tau santrauką el. paštu. Įdiegus ir sukonfigūravus, kasdien gausi ataskaitą apie tai, kas vyko serveryje:
sudo apt install logwatch
Konfigūracija yra paprasta – redaguok /etc/logwatch/conf/logwatch.conf ir nurodyk savo el. paštą.
Dar vienas dalykas, kurį rekomenduoju – rkhunter (Rootkit Hunter). Tai programa, kuri ieško rootkit’ų ir kitų įtartinų dalykų:
sudo apt install rkhunter
sudo rkhunter --update
sudo rkhunter --propupd
Paleisk pirmą skenavimą:
sudo rkhunter --check
Pridėk į cron, kad tikrintų reguliariai. Jei ras ką nors įtartino, gausi pranešimą.
Jei serveris prieinamas iš interneto, labai rekomenduoju naudoti VPN vietoj tiesioginio portų atvėrimo. WireGuard yra šiuolaikiškas ir greitas VPN sprendimas, kuris puikiai veikia Raspberry Pi:
sudo apt install wireguard
Konfigūracija šiek tiek sudėtingesnė, bet yra daug gerų vadovų internete. Esmė ta, kad vietoj SSH porto atvėrimo visam pasauliui, atidari tik WireGuard portą, o prie visko kito jungiesi per VPN. Tai žymiai saugiau.
Kai viskas veikia – kaip išlaikyti ir tobulinti
Taigi, serveris sukurtas, saugumas sutvarkytas, viskas veikia. Bet tai ne pabaiga – tai tik pradžia. Serveris reikalauja priežiūros, nors ir minimalios.
Kas savaitę ar bent kartą per mėnesį prisijunk ir patikrink, ar nėra atnaujinimų:
sudo apt update && sudo apt upgrade
Pažiūrėk fail2ban statistiką, patikrink diskų vietą (df -h), pažiūrėk į sistemos logus (journalctl -xe). Tai užtrunka vos kelias minutes, bet gali išgelbėti nuo problemų.
Stebėk temperatūrą, ypač vasarą. Raspberry Pi gali įkaisti, o tai trumpina komponentų gyvavimą:
vcgencmd measure_temp
Jei temperatūra viršija 70°C reguliariai, reikia geresnio vėdinimo ar radiatorių.
Periodiškai darykite pilnas atsargines kopijas visos microSD kortelės. Galite išjungti Pi, ištraukti kortelę ir nukopijuoti jos atvaizdą į kompiuterį naudojant Win32DiskImager ar dd komandą Linux’e. Jei kortelė sugenda, galėsite greitai atkurti viską naujoje.
Dokumentuok viską, ką darai. Aš turiu paprastą tekstinį failą, kur užsirašau visus konfigūracijos pakeitimus, įdiegtas programas, portų nukreipimus. Po pusės metų tikrai nebeatsimeni, kodėl kažką padarei tam tikru būdu.
Nebijokit eksperimentuoti. Raspberry Pi grožis yra tas, kad jei ką nors sugadinai, gali tiesiog įrašyti naują sistemą į kortelę ir pradėti iš naujo. Tai puiki mokymosi aplinka. Aš savo pirmą Pi tikriausiai perkroviau šimtą kartų, kol išmokau, kaip viskas veikia.
Ir dar vienas patarimas – būk dalimi bendruomenės. Raspberry Pi turi milžinišką bendruomenę, pilną žmonių, kurie nori padėti. Forume raspberrypi.org gali rasti atsakymus į beveik bet kokį klausimą. Nebijok klausti, bet pirma paieškokite – greičiausiai kažkas jau yra užklausęs tą patį.
Serveris namuose – tai ne tik praktiškas įrankis, bet ir nuolatinis mokymosi procesas. Technologijos keičiasi, atsiranda naujų grėsmių, naujų sprendimų. Kas veikė puikiai prieš metus, gali būti pasenęs dabar. Sekite naujienas, skaitykite apie naujus saugumo pažeidžiamumus, atnaujinkite savo žinias.
Ir svarbiausia – mėgaukitės procesu. Taip, kartais bus frustruojančių momentų, kai kažkas neveikia ir nežinai kodėl. Bet kai pagaliau išsprendžiate problemą ir viskas veikia – tas jausmas yra vertas viso to. O ir žinojimas, kad tavo duomenys yra tavų rankose, ne kažkokiame debesyje, kurio net nežinai kur fiziškai yra – tai irgi brangu.