Try GNU/Hurd in the browser

by Marius Bakke — to. 14 september 2023

Did you ever wish you could provision a GNU/Hurd machine whenever you wanted? Right from your browser? No?

Anyway, today is your lucky day:

Log in as root with an empty password.

When you visit that URL, a virtual GNU/Hurd machine is provisioned and a VNC connection established. Once you close the browser the virtual machine gets destroyed.

Pretty cool, no?

Note: Currently the platform can only host about 200 concurrent users. Networking will be supported "soon" (it's already there but you have to manually select an address in the 10.125.122/23 space because there is no DHCP or cloud-init yet).

That's ridiculous.

Why, maybe so. But also a lot of fun. GNU/Hurd! In the browser! What a time to be alive.

What is the purpose of this?

Glad you asked! I built this mostly as a proof-of-concept to see what it would take to make a "Guix native" hosting service. I already learned a lot and have a solid "use case" for building out the back-end.

I plan to expand on this, and eventually let people upload their own system configurations and reconfigure from their browser.

Along with APIs for guix deploy and custom provisioning code (OpenTF, etc).

Obviously GNU/Linux will be supported here, too.

You're crazy!

I'm inclined to agree. We all have our quirks. Mine is apparently building overly complex platforms for serving a completely nonexisting market.

Where is the source code?

Currently the entire service is just a stateless FastAPI in front of a two-node Ganeti cluster sprinkled with htmx and NoVNC on the front-end.

Instances are provisioned "from scratch" using ganeti-instance-guix.

The thing is only 380 lines of custom (FastAPI) code at the moment, including the HTML! I plan to share it once it is more generally useful.

I'm not entirely sure Ganeti is the best choice of backend here. It's in "community maintenance mode" after being sunset from its mothership. Would be nice with something more lightweight and easier to hack, yet offering similar consistency guarantees. Suggestions welcome!

If you have any questions, want to get involved, or have other opinions about this contact me and we'll talk. :-)

Meanwhile, enjoy GNU/Hurd!