6.3 Inštalácia IoT servera na Raspberry Pi
Ako IoT server môže poslúžiť aj jednoduchý SBC - prehľadu rôznych SBC sme sa venovali hneď v úvode prvej časti tohoto kurzu, v kapitole 1.1 Smart technológie a Home Assistant. Najpopulárnejším a najznámejším SBC je Raspberry Pi, ktorý v tejto kapitole budeme pokladať za referenčný.
Možnosti inštalácie Raspberry Pi
Inštalácia OS spočíva v nahratí predinštalovaného obrazu na pamäťovú kartu cez inštalátor Raspberry Pi Imager - ten umožňuje zvoliť si operačný systém a vykonať základnú konfiguráciu (meno servera, používateľský účet a prístupové údaje do Wi-Fi siete).
![]() |
| Screenshot: výber OS |
![]() |
![]() |
| Screenshot: nastavenia OS | Screenshot: povolenie SSH prístupu |
Zvolené údaje sa zapíšu do boot partície pamäťovej karty v podobe textových konfiguračných súborov. Vďaka tomu sa môžeme hneď pripojiť po sieti cez SSH a nepotrebujeme monitor, ani klávesnicu. Obvykle je dostupné lokálne mDNS meno v tvare {názov servera}.local a nie je treba zisťovať ani IP adresu.
Čo sa týka OS pre IoT server, na výber máme:
- „oficiálny“ Raspberry Pi OS Lite - nájdeme v sekcii „Raspberry Pi OS (other)“;
- štandardný Ubuntu Server LTS - nájdeme v sekcii „Other general-purpose OS“;
- okresaný Ubuntu Core - nájdeme v sekcii „Other general-purpose OS“;
- iné všeobecné OS dostupné v inštalátore, napríklad Alpine Linux, Ultramarine Linux Base;
- špeciálne OS pre konkrétny účel - nájdeme v sekcii „Other specific-purpose OS“, napríklad nám známy Home Assistant Operating System (HA OS);
- ďalšie všeobecné OS, ktoré nie sú v ponuke inštalátora, napríklad DietPi.
Prehľad a charakteristika rôznych OS Linux
Raspberry Pi OS Lite je založený na Debiane, takže používa balíky APT a je možné postupovať v inštalácii rovnako, ako na bežnom PC s Ubuntu Server. Obsahuje niektoré bežné nástroje, ako napríklad ping, ale aj niektoré iné balíky, ktoré možno nepotrebujeme - napríklad git. Neobsahuje Snap, no je možné ho doinštalovať. Pokiaľ nechceme predinštalovaný obraz sťahovať cez Imager, nájdeme ho na oficiálnom webe: Raspberry Pi OS downloads
Ubuntu Server LTS pre ARM je z hľadiska funkcií takmer totožný s bežným Ubuntu Server pre PC (teda má k dispozícii APT i Snap), akurát neumožňuje „minimalistickú“ inštaláciu. Sú v ňom teda už obsiahnuté základné nástroje a veľa rôznych balíkov - napríklad aj git. Predinštalovaný obraz si môžeme nahrať cez Ubuntu Server for ARM - odkaz „Alternative and previous releases“ a následne „Preinstalled server image“.
Ubuntu Core je minimalistická forma Ubuntu servera, ktorá pre inštaláciu aplikácií podporuje len Snap. K inštalácii je potrebný monitor, klávesnica a účet na Ubuntu One. Prihlasovanie sa deje prostredníctvom SSH kľúča, nie menom a heslom. Návod na inštaláciu je v dokumentácii: Ubuntu Core documentation
DietPi je úsporná distribúcia, pritom proces inštalácie na Raspberry Pi je komfortný - na pamäťovú kartu sa nahráva inštalačný balík (nie je v oficiálnom inštalátore, treba nahrať z DietPi.com), pri prvom spustení sa vykoná inštalácia. Automaticky sa zapne SSH, takže po ethernetovej sieti je možné prejsť inštalačným sprievodcom a vykonať rôzne nastavenia (vrátane možnosti pretaktovania CPU, GPU, či úpravy správania dynamickej frekvencie, zapnutie Wi-Fi a Bluetooth a podobne), prípadne doinštalovať aj rôzne grafické prostredia, serverové systémy (napríklad Home Assistant Core), či automaticky spúšťané komplexné balíky (napríklad pre nasadenie vo forme multimediálneho prehrávača Kodi) - viď prehľad na stránke DietPi software options. Ak však nedoinštalujeme nič, minimalistická podoba je v porovnaní s predošlými spomínanými OS úspornejšia na operačnú pamäť aj disk, neobsahuje ani základné nástroje. Je azda najúspornejšia z tradičných distribúcií pre Raspberry Pi. Mnoho konfiguračných položiek je však možné zvoliť ešte pred inštaláciou - úpravou inštalačných parametrov v súbore dietpi.txt.
Alpine Linux je veľmi úsporná distribúcia, odlišná od „tradičných“, je obľúbená pre integrované kontajnery. Proces inštalácie na Raspberry Pi je však pomerne zdĺhavý - na pamäťovú kartu sa nenahráva „hotový“ predinštalovaný obraz OS, ale len sa na ňu nahrá jediný súbor - inštalačný balík v podobe archívu .tar.gz. Je potrebné pripojiť monitor a klávesnicu a zodpovedať mnoho inštalačných otázok, ktorých súčasťou je aj pripájanie do siete. Potom je už možné pripojiť sa cez SSH. Tento OS nepodporuje balíky APT, namiesto nich má APK a nepodporuje ani Snap. Inštalácia balíkov cez APK je však podobná - akurát sa namiesto apt install píše apk add. Väčšina balíkov má rovnaký názov, no treba dať pozor pri inštalácii Docker, k tej je treba povoliť komunitný repozitár (odkomentovať posledný riadok v /etc/apk/repositories) a nastaviť na automatické spúšťanie - podobne i Mosquitto a iné služby z APK zdroja:
apk add mosquitto docker
rc-update add mosquitto boot
rc-update add docker boot
service mosquitto start
service docker start
Ultramarine Linux Base sa tiež líši - v základe má totiž Fedora Linux a súčasťou je aj pomerne veľa softvéru. Proces inštalácie na Raspberry Pi je veľmi zdĺhavý - na pamäťovú kartu sa nenahráva „hotový“ predinštalovaný obraz OS, ale len inštalačný balík. Je potrebné pripojiť monitor a klávesnicu a zodpovedať mnoho inštalačných otázok. Inštalátor nerieši pripojenie do siete Wi-Fi, automaticky však funguje pripojenie cez ethernet, dokonca aj SSH. Tento OS nepodporuje balíky APT, namiesto nich má DNF a Snap je možné doinštalovať. Inštalácia balíkov cez DNF je podobná APT - akurát sa namiesto apt install píše dnf install.
Home Assistant Operating System (HA OS) sme už veľakrát spomínali a pracovali s ním v prvej časti tohoto kurzu. Nie je to všeobecný OS, ale komplexný balík automatizácie domácnosti, spravovaný cez webové rozhranie, cez ktoré je možné doinštalovať rôzne ďalšie služby. V základe má síce Alpine Linux, ale priama interakcia s ním je značne obmedzená, takže tento OS je vhodný skôr pre laikov, ktorí chcú mať všetko nachystané alebo mať možnosť doinštalovať na pár kliknutí.
Praktické porovnanie náročnosti
Porovnanie pamäťovej a diskovej náročnosti jednotlivých OS (na ARM 64-bit) po inštalácii APT balíkov iputils-ping, iputils-tracepath, traceroute, mc, snapd a docker.io + Snap balíkov btop a mosquitto + Docker kontajnerov Caddy a 3× Node-RED, k decembru 2024:
| operačný systém | využitie operačnej pamäte | využitie disku | poznámka |
| Alpine Linux | 290 MiB | 1,4 GiB | bez Snap, inštalácie cez APK |
| DietPi | 300 MiB | 4,2 GiB | testované 5/2025 |
| Raspberry Pi OS Lite | 370 MiB | 6,3 GiB | referenčný OS |
| Ubuntu Server LTS | 570 MiB | 8,1 GiB | |
| Ultramarine Linux Base | 710 MiB | 10,1 GiB | Fedora, DNF |
Ako môžeme vidieť, náročnosť sa podstatne líši a na starších SBC so skromnejšími prostriedkami je treba naozaj zvážiť výber OS.
Inštalácia prebehla nasledovne (APT):
sudo -i
hostnamectl set-hostname raspi
apt update
apt upgrade
apt install iputils-ping iputils-tracepath traceroute mc snapd
apt install docker.io
apt autoremove
snap install btop mosquitto
docker run --detach --name nodered-1 --volume nodered-1:/data --publish 81:1880 --env TZ=Europe/Bratislava --restart unless-stopped nodered/node-red
docker run --detach --name nodered-2 --volume nodered-2:/data --publish 82:1880 --env TZ=Europe/Bratislava --restart unless-stopped nodered/node-red
docker run --detach --name nodered-3 --volume nodered-3:/data --publish 83:1880 --env TZ=Europe/Bratislava --restart unless-stopped nodered/node-red
docker run --detach --name caddy --volume caddy:/etc/caddy --publish 80:80 --publish 443:443/tcp --publish 443:443/udp --env TZ=Europe/Bratislava --restart unless-stopped caddy
Verzia pre Fedora DNF:
sudo -i
hostnamectl set-hostname raspi
dnf update
dnf install mc snapd
dnf install docker
dnf autoremove
service docker start
snap install btop mosquitto
snap start mosquitto
docker run --detach --name nodered-1 --volume nodered-1:/data --publish 81:1880 --env TZ=Europe/Bratislava --restart unless-stopped nodered/node-red
docker run --detach --name nodered-2 --volume nodered-2:/data --publish 82:1880 --env TZ=Europe/Bratislava --restart unless-stopped nodered/node-red
docker run --detach --name nodered-3 --volume nodered-3:/data --publish 83:1880 --env TZ=Europe/Bratislava --restart unless-stopped nodered/node-red
docker run --detach --name caddy --volume caddy:/etc/caddy --publish 80:80 --publish 443:443/tcp --publish 443:443/udp --env TZ=Europe/Bratislava --restart unless-stopped caddy
Problém pamäťovej karty
Už v predošlej časti tohoto kurzu sme konštatovali, že pamäťová karta je najčastejším dôvodom zlyhania systému a že ani s rýchlosťou to nie je najlepšie. Pre IoT (kde sú časté zápisy do databázy) by malo byť lepšie nasadiť karty s označením „High Endurance“, ktoré sa výrobca snaží optimalizovať pre nepretržitú prevádzku. Oveľa rýchlejšie sú však pamäte eMMC a ešte oveľa rýchlejšie sú NVMe disky, ktoré aj viac vydržia.
Pri inštalácii ktoréhokoľvek OS na flash pamäť (či sa jedná o pamäťovú kartu, eMMC alebo NVMe) je vhodné zvážiť výber súborového systému - venovali sme sa tomu už v predošlej kapitole. Pri príprave Raspberry Pi však zatiaľ nie je obvyklé, aby inštalátor dával na výber súborový systém pre samotný OS, nanajvýš je možné vytvoriť ďalší diskový oddiel. Je možné, že sa to postupne zmení.
Pokročilí nadšenci môžu prípadne vyskúšať:
a) súborový systém zmeniť dodatočne v inom počítači s Linuxom, napr.: http://whitehorseplanet.org/gate/topics/documentation/public/howto_ext4_to_f2fs_root_partition_raspi.html;
b) vopred prekonvertovať inštalačný obraz: https://github.com/stunnel/raspios-f2fs.
Protokoly do operačnej pamäte
Súborový systém Btrfs s aktívnou kompresiou a vypnutým CoW pre databázy je rozumný kompromis, no pre maximálnu životnosť je veľmi vhodná kombinácia s nástrojom log2ram. Ten presunie systémové protokoly (priečinok /var/log) do operačnej pamäte, čím sa eliminuje veľká časť zápisov. Raz za deň (alebo pri vypínaní systému) ich uloží na disk.
Tento nástroj nie je štandardnou súčasťou repozitárov, ale nainštalovať ho môžeme:
echo "deb [signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian/ stable main" | tee /etc/apt/sources.list.d/azlux.list
wget -O /usr/share/keyrings/azlux-archive-keyring.gpg https://azlux.fr/repo.gpg
apt update
apt install log2ram
# veľkosť žurnálu obmedzíme, aby nezaplnil celý priestor, napr. na 50 MB
sed -i "s/#SystemMaxUse=.*/SystemMaxUse=50M/" /etc/systemd/journald.conf
# a vymažeme staršie logy
journalctl --vacuum-size=50M
Po inštalácii je vhodné skontrolovať a prípadne zväčšiť pridelenú pamäť - v súbore /etc/log2ram.conf (parameter SIZE=128M), aby bol dostatočný priestor nielen pre žurnál, ale aj všetky ostatné protokoly.
Následne je potrebný reštart a po ňom môžeme overiť funkčnosť:
# stav služby
systemctl status log2ram
# zobrazí pripojený disk a využitie miesta
df -hT | grep log2ram
Súborový systém F2FS
Pokiaľ nie sú pre nás podstatné unikátne výhody Btrfs (snapshoty a kontrolné súčty súborov), z hľadiska životnosti pamäťovej karty je ešte lepším súborovým systémom F2FS (Flash-Friendly File System). Bol vyvinutý spoločnosťou Samsung špeciálne pre jednoduché flash pamäte (SD karty, eMMC). Používa takzvaný log-štruktúrovaný zápis údajov. Namiesto toho, aby prepisoval bloky roztrúsene po disku, snaží sa nové zápisy zhromažďovať a zapisovať ich sekvenčne za sebou. Tento postup dramaticky predlžuje životnosť SD kariet, pretože minimalizuje počet čistiacich cyklov, ktoré karta musí robiť.
Displej
V prípade, že je k Raspberry Pi pripojený a nainštalovaný malý displej, môže byť potrebné upraviť veľkosť fontu - ak má displej len malé rozlíšenie (napríklad 480×320 px), treba font zmenšiť a ak má displej malé rozmery a veľké rozlíšenie, tak zväčšiť. K tomuto poslúži príkaz:
dpkg-reconfigure console-setup
Zvolíme kódovanie UTF-8, vhodnú znakovú sadu (Latin2), najmenší font je Terminus veľkosti 6×12. Tiež môže byť potrebné nastaviť vypínanie obrazovky cez príkaz setterm, napríklad:
setterm --blank 5 --powerdown 6
V prípade GPIO displeja však vypínanie podsvietenia nebude fungovať týmto spôsobom.


