Gokrazy is easily the most pleasant way I've found to deploy code to a raspberry pi. The worst part about setting up a raspberry pi is having to get out a keyboard and monitor (or serial cable) to manually configure a the rpi before you can start using it. Gokrazy builds fully configured system images, so the rpi comes up properly without having to shell into it first. Gokrazy also lets you push updated images over the network.

The other issue I often had with raspberry pi systems was the high probability that an `apt-get upgrade` would trigger a filesystem error on mediocre sdcards. Gokrazy also helps with this 1) by having a read-only file system by default, 2) by using a/b partitions for updates, and 3) having very small image sizes.

It has honestly rejuvenated my enthusiasm for running code on raspberries pi.

I never had any serious issue with SD cards since the Pi 2B (and I've kept Pis running for years).

Anyway, for those wanting to deploy more generic apps, that is why I initially wrote https://github.com/piku/piku - you still have to flash the OS (and rpi-imager does that with sane defaults these days), but once you're done you have Heroku-like deployments for any language runtime you install on the Pi.

I also have https://github.com/rcarmo/ground-init, a cloud-init like shim that simplifies setting up machines (I'm a big fan of cloud-init, but since Raspbian doesn't support it and Ubuntu on ARM requires some fiddling to make it work I decided it wasn't too hard to roll my own).

(I probably should look into glueing that into rpi-imager, but there is are only so many hours in the day...)