The Mirage OS is an open-source library operating system that compiles modular code written in the OCaml functional language into a variety of hardware backends, most notably specialized unikernels that run directly on the Xen hypervisor, but also JavaScript or Unix binaries. Mirage is particularly useful for building safe, reliable OS components such as storage or networked daemons.
Since the release of Mirage 2.0 this summer, we’ve been using it to self-host our personal Internet presences. Instead of having to manage complex deployments such as a LAMP stack (with the associated security headaches), Mirage offers the opportunity to “compile your own cloud” from a set of protocol libraries. This is an educational experience that you miss out on if using a hosted PaaS, and you also gain the freedom of running your own infrastructure and federating via open protocols such as XMPP.
In this talk, I’ll walk you through how my our homepage infrastructure works, and how to replicate it yourself to regain control of your Internet presence. The DNS and HTTP servers run as separate unikernels on the cloud, and are coordinated via the Irmin storage stack which uses Git as its communications protocol. The deployment simply uses the Travis continuous integration tool to commit the entire kernel to Git (e.g.), so you can get started very quickly using Linux, FreeBSD, OpenBSD or MacOS X.
Dr. Anil Madhavapeddy is a Senior Research Fellow at Wolfson College and is based in the Cambridge University Computer Laboratory, investigating programming models for cloud computing. Anil was on the original team at Cambridge that developed the Xen hypervisor, and subsequently served as the senior architect and product director for XenSource/Citrix before returning to academia.
Anil has a diverse background in industry at Network Appliance, Citrix, NASA, and Internet Vision. He is an active member of the open source development community with the OpenBSD operating system and more, and the co-chair of this year’s Commercial Uses of Functional Programming conference.
Github: avsm
Twitter: @avsm