Így lesz egy 1 dolláros mikrokontrollerből webkiszolgáló: mélyütés az embedded hostingba
Webkiszolgáló egy 1 dolláros 8-bites mikrokontrolleren: Miért ne?
A "lehetséges, de totálisan ostoba" projektek között külön helye van azoknak, amik semmire sem jók gyakorlatban – viszont mindent elárulnak az internet működéséről. Egy fejlesztő most megmutatta, hogyan futtatható igazi weboldal olyan mikrokontrolleren, ami annyiba kerül, mint egy csoki.
A hardver: Alázatos kezdetek
A főszereplő az AVR64DD32, egy friss 8-bites chip, ára kb. 1 dollár. Lássuk a specifikációkat:
- CPU: 8-bites AVR mag, max. 24 MHz
- RAM: 8 kB
- Flash: 64 kB
- Tápfeszültség: 1,8-5,5 V
- Ár: Egy dollár. Ennyi.
Ma már bőséges ez egy 8-bites darabhoz. Olcsóbb és erősebb, mint az Arduino Atmega328-ja, jobb perifériákkal és egyszerűbb programozással. De kell neki netkapcsolat.
A hálózati gond: Ethernet kizárva
Elsőre az Ethernet tűnik logikusnak. Ismert, dokumentált, működik. Csakhogy fizikailag lehetetlen: a 10BASE-T 10 Mbps-en pörög, Manchester-kódolással 20 Mbps effektíven. A mikrokontroller GPIO-i max. 12 MHz-et bírnak. Kész, ennyi.
Külső Ethernet-chippet venni? Drága, bonyolult, várni kell rá. Nem erre megy a mutatvány.
A okos megoldás: SLIP protokol
Jön a SLIP – Serial Line Internet Protocol. A modem-korszakból származik (RFC 1055), hihetetlenül egyszerű. Csomagokat keretezi, speciális karaktereket escapingel:
0xC0a keretvége0xC0-t0xDB 0xDC-re cserél0xDB-t0xDB 0xDD-re
Ennyi. Nincs extra hardver. Egy sima USB-serial adapter 115200 baudon, és a Linux hálózati interfészként látja:
stty -F /dev/ttyUSB0 115200 raw cs8
slattach -m -F -L -p slip /dev/ttyUSB0
90-es évek modem-protokollja, de Linux ma is kezeli. Plusz: a chip az adapter tápjáról él. Egy kábel, kész.
A protokollréteg: Nulla-ról építkezünk
Izgalmas rész: hálózat 8 kB RAM-on.
IP: Könnyű menet
IP header 40 byte sablon: címek, metaadatok. Fragmentáció? Régi cucc, ma kikapcsolják, IPv6-ban nincs is. Megoldás: bejövő csomag címeit megfordítjuk, TTL-t reset, visszaküld. A chip nem ért hozzá, csak tükröz.
TCP: Pokoli meló
TCP más tészta. Állapotkövetés, újraküldés, edge case-ek (rengeteg), timeoutok. Napok debug, tele hibával – de egy sima oldalt kiszolgál.
HTTP: Rövidítés
Pragmatikusan: hardcoded válasz. Mindig ugyanaz a statikus tartalom. Egy URL-lel tökéletes. Ilyen korlátok szülnek zseniális trükköket – nem kell keretrendszer mindenre.
A kapcsolat: Online kell vinni
Okos rész: a mikrokontroller soros kábellel dev-gépen, az meg VPS-en Helsinkiben publikus IPv4-gyel.
Probléma: nincs saját publikus IP-je. IPv4 drága, szűkös. Soros neten át? Nem reális.
VPN-trükk
Megoldás: WireGuard, Linux modern VPN-je. NAT mögül is működik.
Beállítás:
- Dev-gép WireGuard-rel VPS-re
- VPS
/mcu/*kéréseket proxizza tunnelön a chipek - Látogatók a VPS publikus címén
- VPS továbbít helyben
Ugyanaz a proxy, mint Twitch-nél – csak 1 dolláros chiphez és soros kábelhez. A chip sosem látja közvetlen a netet. Tökéletes.
Mire tanít ez?
Szándékosan ostoba projekt, épp ezért értékes. Lehámozza a rétegeket, alapokról épít.
Kiderül:
- Hálózat moduláris. Soros helyett Ethernet, TCP helyett UDP – alapok ugyanazok.
- Korlátok kreativitást szülnek. 8 kB RAM minimalizmust kényszerít, ami jobban működik.
- Régi protokollok élnek. SLIP '88-ból, Linux kezeli. Hosszú élet titka.
- Internet egyszerű. Rétegek nélkül csak bájtok címeztetése.
A lényeg
NameOcean-nél odavagyunk a web tech demisztifikálásáért. Cloud-on építesz vagy mikrokontrolleren kísérletezel, az alapok – DNS, TCP, HTTP – tesznek jó szakemberré.
Ez nem helyettesít cloud hostingot (fogadjunk). De megmutatja, miért király a modern hosting. Néha a legjobb, ha nulláról újraépíted egy dolláros chippel.
Most mentsük meg valakit, mielőtt okosórára pakolja a blogját.
Többet a hálózatról? Nézd meg DNS-guide-jainkat, TCP/IP alapokat, miért kulcs a domain a hosting mellett. Igazi webtárhely kell? AI-s megoldásaink sansz nélkül, forrasztás nélkül.