6 ms·
Serving a website on a Raspberry Pi Zero running in RAM
- backtogeek 5mo agoBrilliant write up, just 1 correction, the TierHive VPS should only be $1.20 per year not $4 :)
- MitPitt 5mo agoA raspberry zero is more powerful than an enterprise server from the 1990s. A minimalist static website is not impressive. You can fit way more in there.
- alfanick 5mo agoHey, it loads! Unlike ~10% of pages on first page of HN, hugged to death.
- raddan 5mo agoAlso I love the dithered B&W images. The entire aesthetic of the site is great.
- vablings 5mo agoThe website running on the vape was far more interesting than this. I do wonder if anyone has tried to use the microphone in these devices to listen to audio. Backdoored vape
- 1e1a 5mo agoOne could record from the microphone and then transmit via RF side channel.
- raddan 5mo agoI hosted my personal email domain on a Zero for almost 10 years. It had about the same capability as the very expensive (and large) Win NT4 machine we used for our 80-person organization when I started my career in tech. I eventually replaced the Zero with a Raspberry Pi 4, primarily because the Zero’s IO ports are annoying (eg, USB is not hot-pluggable!) An RPi 4 is extreme overkill for personal email but it still idles under 1W and when it fails I can replace the entire machine for next to nothing. The point of failure for all of these machines has been the SD card. They seem to last 4 years almost to the day. I suppose if I set up a RAMdisk they might last longer, but honestly, for the price of an SD card it’s not really worth my time.
- colechristensen 5mo ago>The point of failure for all of these machines has been the SD card. They seem to last 4 years almost to the day. I suppose if I set up a RAMdisk they might last longer, but honestly, for the price of an SD card it’s not really worth my time. There are "Industrial" SD cards which should last considerably longer, you can look up a few people have done their own testing. They can be slower but that shouldn't be a blocker for an email server on a pi.
- yjftsjthsd-h 5mo agoYou can also boot (full size, not-zero) pis off USB disks. Or just netboot.
- ianburrell 5mo agoThey make high endurance microSD cards that can handle a lot more writes before failing. OTOH, I corrupted a card by turning off the Pi in middle of writing.
- tracker1 5mo agoI remember in the mid-late 90's how poorly the Exchange server ran that there was a nix server for inbound email just to throttle the ingress. When it was upgraded to a 4-socket server, there was concern when the *nix guys just let everything that was being held during the upgrade through, and it just chugged along. But the moment of panic was palpable. The Unix guys really didn't like that business internals and apps were running from Windows services, so thought it would be funny to try to knock over the new mail server. Today, you can run mailcow/mailu with all the options on a relatively modest vps. I'm on a cable provider that locks down residential customers and charges over 2x as much for business, so it's cheaper to use VPSes. On RPi, I've mostly opted to use SSD + USB Adapters as they've been significantly more reliable that SD. There's lots of cases that make this configuration a breeze. That said, I've mostly been running Mini PCs since COVID when the RPi got to be more expensive all-in and slower.
- girishso 5mo agoInteresting, what tools did you use for email hosting? I’m scared of self hosting a mailbox.
- Terr_ 5mo agoIndeed, you can even permanently run one using a balcony solar panel: https://solar.lowtechmagazine.com/about/the-solar-website/ https://solar.lowtechmagazine.com/about/the-solar-website/
- static_motion 5mo agoMy thoughts exactly. People regularly run Pi-Hole on these things, which not only is "serving a website" (the dashboard) but is also being a DNS server.
- stkdump 5mo agoI am serving a small web interface to control my shutters on an esp32. I even did the experiment to not parse the request and just always respond with the same response, so a webserver for a single page can be trivial (you would have embed images and all other resources into the html then). But of course I am parsing the request, because I need separate routes for the page and for the actions. Since this is on my home lan it doesn't even need ssl. I guess as long as the traffic is low, an esp32 might be able to do ssl. For me that isn't relevant because it isn't on the internet and when I want to connect to it from outside my home lan, I just use wireguard.
- wolvoleo 5mo agoUmm some people run a website on a conmodore 64. That's impressive. A Raspberry Pi Zero can just run apache.
- sphars 5mo agoThe OP link is not to Pi zero website, here's the actual website that's being hosted on the Raspberry Pi: https://zero.btxx.org/ https://zero.btxx.org/
- c0nsumer 5mo agoThis feels a little weird because while they are running the website itself (HTTP) off the Pi, they are handing off all TLS to a cloud provider. So while the content is in RAM on the Pi, a lot of the heavier lifting (TLS termination) is done elsewhere, which saves a ton of CPU load on the Pi.
- ironhaven 5mo agoSometimes these demos enable caching on the reverse proxy. So then for these tiny demo html pages you request, you may not even reach the fun tiny computer it is supposed to demonstrate.
- spijdar 5mo agoYeah, I've seen this in more than a few places. There was a blog "running on a Wii" that, IIRC, was doing the same thing. On the one hand I get it, TLS is pretty heavy, and it makes sense to take advantage of a VPS or Cloudflare or however you want to do it. But once you are spinning up a VPS, the question is ... why the Pi? The VPS in the article has less RAM, but more storage. If you're already doing TLS termination on the VPS (the most RAM intensive part), you might as well just do the whole shebang there. I know this is all for fun, I'm just wondering -- is the Pi Zero really too slow to handle TLS, especially with an optimized TLS library? In this setup, the Pi is already being directly exposed to the Internet anyway, there's no VPN being used. That ARM11 isn't "fast", but surely a 1 GHz ARM11 can handle an optimized TLS library serving some subset of TLS1.2.
- indigodaddy 5mo agoThe TLS termination isn't actually on the VPS. The article details that Tierhive has an haproxy edge service (handling the TLS), that then has the vps as the backend, but that vps is just doing tcp proxying with socat to the ddns exposed home server fqdn. Feels like a lot of unnecessary loops. Kinda fun I guess but, just, why
- Antirust3743 5mo agoYes it is, "we plan to use our external VPS for handling the TLS termination". Edit: Ah I see you are just pointing out termination is on haproxy service not VPS. Thought you were implying it was terminating on pi, my apologies.
- jcalvinowens 5mo agoI have a self hosting Pi Zero W running Gentoo. It started as a joke, but I kept it because it's actually occasionally useful for testing new kernel releases. I found a fun bug with it a couple years ago: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=89a906dfa8c3b21b3e5360f73c49234ac1eb885b https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... It is still able to build software faster than it is released. It takes roughly a month to recompile the entire system :D
- colechristensen 5mo agoI self host some CI runners and do kernel work on a Pi writing some software defined radio things. For the radio stuff I can just take the Pi, frontend, and a battery pack outside to test. When I finally move to a place with proper fiber internet I'm going to be hosting several side projects on a handful of Pis.
- jcgrillo 5mo agoAfter seeing what new R-Pi stuff is selling for I went rummaging in the parts drawer and found the following: - R-Pi Zero W - Sixfab UPS hat - Sixfab Cellular IoT App Shield - R-Pi model 1B With all this I should be able to make a multiply redundant always-on bastion host. It's awesome that alpine supports the armhf stuff, many OSes have dropped 32bit support entirely.
- giobox 5mo agoIn the good old days a decade or so ago where the full fat Pi board was always 35 dollars and the zero was just 5, they were so cheap as to be practically disposable. I have an insane number of Pi 3/4 and Zero/ZeroW boards in projects and drawers around the house, but this has massively tapered off as prices have gone up. At one point I had an 8 pi 3 cluster to learn kubernetes/container orchestration techniques on - completely unnecessary, but building the little rack was 85% of the fun. That cluster ran my home stack for years (DNS, home automation, network admin UI etc). I've since got a lot more interested in the microcontroller community - so many Pi projects should really be microcontroller projects - the esp32 especially scratches the itch for cheap things to hack on, and you can get them for like 6-7 bucks each with wifi.
- jcgrillo 5mo agoYeah I've been using an ESP32-C6 for the latest wifi connected project I'm working on. The RP2040 and RP2350 look interesting too, I have a couple of them but haven't really done much with them.
- vinc 5mo agoI assembled a solar server with those parts laying around last year: - Victron Monocrystalline Panel 90W 12V - Victron Gel Battery 12V 60Ah - Victron MPPT Charge Controller 75V 15A - Raspberry Pi Zero W - Witty Pi 5 - Sixfab 4G/LTE Base HAT - Quectel EC25 Mini PCle 4G/LTE Module Almost 100% uptime except for a few days after a bad winter storm, pretty neat!
- _stiofan 5mo agoThe pi zero's are great. I have a bunch of them. I used to use them as a tiny server for live webcams streaming to YouTube for customers, but YouTube now have a minimum sub count before you can go live, which sucks. These boards are pretty powerful.
- bsoles 5mo agoI have never been able to stream video from a raspberry pi zero's official camera. What tools/software were you using?
- Multiplayer 5mo agoI'm using an 8MP camera from freenove on a pi zero 2 - it's great.
- _stiofan 5mo agoOh, it’s been a few years, if I remember right it was an iso, I burnt to the SD and simply changed the details in a config.txt, I would have to dig out my old laptop to get the details.
- fdjafhdasfjhds 5mo agoRAM? In this economy?!
- ironhaven 5mo agoIt’s ddr2 so it is not really affected by the ram crunch
- Venn1 5mo agoThey are powerful little devices. I used a Pi Zero 2 with an ethernet adapter to host an x86 TrackMania² server using BOX64 and it never had a problem. Only swapped it out recently because I needed the Zero 2 for another project.
- seemaze 5mo agoI've been using Raspberry Pi Zeros for cheap little linux appliances since they were released. Boot them up with the latest Alpine Linux and run the whole thing from ram. You can also remove a card from a running machine with no ill affect, and they easily survive power cuts. I've never had a card fail.
- vednig 5mo agowe're running a complete production grade cloud storage service with Raspberry Pi Zeros at https://getcloud.doshare.me https://getcloud.doshare.me that's how powerful Rpi hardware we've tested it for upto 10k concurrent requests with storage ofcourse, but still too far powerful
- azornathogron 5mo agoWhat makes it "production grade"? How are you defining that?
- orliesaurus 5mo agoSo what benchmarks did you run or what's the advantage? Might as well just run the site on the VPS at this point since you're paying for it?
- sam_lowry_ 5mo agotell OP about tftp
- starik36 5mo agoI have several of these running all sorts of quickie utilities. The key for making things faster (at least for my tasks) was to write everything I need in c#. For whatever reason, the speed seems far faster than Python for me.
- doginasuit 5mo agoFor optimal moral support, have one of the spare Pis holding a sign, maybe "Pi is our guy"
- slow_typist 5mo agoInstead of having an open port in my router and sending data in plain text, I would use an ssh tunnel or a vpn. Or probably put the entire web site on the VPS.
- basilikum 5mo agoThe Pi Zero has 512MB RAM and a one GIGA Hertz CPU. It's a fucking super computer. Maybe not today, but not that long ago and back then people were running much more intensive things on them than hosting a website. It should be perfectly capable of handling TLS. AES might be a bit haeavy without hardware acceleration, but you can also do only ChaCha20 as the single supported server cipher. It would be easy to DDOS, but you should be able to mostly address that with firewall rules rate limiting connection attempts upstream. I don't mean to shit on this, exploration is nice and putting perfectly fitting hardware to use instead of throwing abundant unnecessary hardware on every simple problem — just to bring it to crawl with loads of shitty bloates software — is good, but it's not particularly impressive.
- dividuum 5mo agoI guess "Diskless" was defined by the same people that invented the term "Serverless"? That Pi is still using an SD card to boot from. A Pi with Ethernet can truly boot diskless via TFTP. And later Pi4 and Pi5 can even boot directly from the internet by getting their initial "boot.img" FAT partition via HTTP from anywhere. That would be diskless.
- vednig 5mo agoexcept in RAM based OS the page size and computation resources reduce significantly as OS is using the same memory to run instead of reading from disk and eating up critical memory area for applications, only thing in between a full crash and OS is the swap storage, macOS and Windows would never be even able to achieve this it is possible only due to Linux/BSD and it's level of optimization. a better way would be to boot via nvme SSD, ethernet boot has a dependency of network, what if you need to debug when network is down or debug the errors/bugs network itself ?
- throawayonthe 5mo agowhat makes that truly diskless? that's still getting the bytes from a disk somewhere i think if the disk is not necessary for the whole runtime after boot, that's fair to call diskless
- FlyingSnake 5mo agoPiZero is a pretty solid machine. I run my micro-homelab on a Pi Zero from 2018. It’s behind Cloudflare tunnels. It runs the apps i need on a DietPi OS within 180MB and it’s uptime is ~8 months.
- mattrighetti 5mo agoFirst time I hear about DietPi OS, does it offer a headless distro?
- undersuit 5mo agoYes, you can setup the entire OS through dietpi terminal utilities over ssh.
- grahammccain 5mo agoI’ve wanted to get into raspberry pi builds for a long time. Off to order one now and try this.
- mxkuzn 5mo agoNice writeup. darkhttpd + tmpfs is a clean minimal stack — the diskless approach is also a quiet win for SD-card longevity, which usually the first thing to die in long-running Pi setups.
- corvad 5mo agoI mean yeah, but the Pi Zero can also do TLS and much more complex tasks so I really don't understand why this is such a big "feat." It's a linux pc just running a webserver. Am I missing something here?
- 129x_space 5mo ago[dead]
- tonymet 5mo agothe zero is the coolest PI imo . You can run nearly any network service on it. Great for adguard or pihole. Smokeping. Lots of fun stuff. Supports usb Ethernet too
- tomaspiaggio12 5mo agomaybe i'm being stupid, but what's the complexity behind this? why is this exciting? is it because it's running on memory or because it's running on the pi? i find this trivial unless you're a new engineer. for the ones that say that the pi can't handle tls that's just stupid. that's trivial as well. for the ones saying that you need a vps how cloud native are you people? you can just expose a port on your router (if you're brave enough) and have any dynamic dns service point to the correct ip address.
- dhdbdb 5mo agoCame here to say the same. The Zero is a very capable machine Running a mainstream website on a RPi Pico W is more advanced, but still not really challenging as long as the content is static
- ritcgab 5mo agoPeople run websites on a VPS with 32MB RAM decades ago and it was fine. What is new about this?
- fukinstupid 5mo ago[dead]
- fukinstupid 5mo ago[dead]
- coolThingsFirst 5mo agoIn which country does OP live where their ISP permits them to host a website?
- throawayonthe 5mo agoi'm almost certain you could do tls termination at reasonable scale on the rpi0 no problem
- ProllyInfamous 5mo agoOne of the things that initiated my MacPro5,1->M2Pro migration (~2023Jan) was the simple fact that the latter's SSD was faster than the former's RAM. And then that Its newer RAM is even several <more> orders of magnitude faster[-than-new.SSD] ---- I now run a fulltime MacPro6,1 – with dozens of gigabytes of RAMdisk – as an integrated swapdisk on my localnetwork. [RAM_is_cool.bmp]