I was hoping for a transportation metaphor, as per my last post, but when given lemons, invoke the Sand People!
A couple of days ago Tim Owens tweeted about a new platform he was exploring called Sandstorm.
Who wants to play with @SandstormIO with me. Got it up and running on a server.
— Tim Owens (@timmmmyboy) January 16, 2015
Tim moves pretty fast, so it usually takes me some time to catch up on stuff like this. But when he quickly demoed what it does, I was really interested because it gets at how the web is changing in terms of hosting, micro-services, and infrastructure more generally.
Sandstorm is an open source hosting platform for personal instances of web apps. Users can upload and install arbitrary software. In addition to improving privacy and control, this is the only way to make Open Source web apps viable.
Effectively, Sandstorm is an open source platform that enables you to host open source applications that aren’t predetermined by more mainstream, highly controlled hosting software like CPanel. Through software like CPanel few indieweb apps can get distribution, effectively cutting them off from a user base. Sandstorm provides open source software that allows you to run docker containers with various applications—which are not limited to the LAMP environment===as well as enabling you to upload and run your own applications.
So, with Sandstorm you can basically provide an indie web distribution hub, kinda like the Merge or Dischord Records model for distributing alternative music. This approach provides the ability to start building a decentralized web hosting infrastructure. This is exciting for us, because this is exactly what we’ve been dreaming of at Reclaim Hosting for the last couple of months. In fact, we brought the great Kin Lane in to help us architect this approach. And what’s cool is that Sandstorm.io is just another indicator that this is a viable approach right now (or even the only viable approach), and we would be well served to follow our nose. So now what we’re really wondering is how much of this vision does the open source version of Sandstorm already take care of? And how much would we have to do to fit it into our model?
So, given Tim got the open source version open and running on a Reclaim Hosting server, I decided to start exploring a bit. And I was pretty impressed. You login (you have the option of using your Google or Github credentials) and immediately see a list of selected applications you can install, such as WordPress, Ghost, EtherPad, EtherCalc, MediaWiki, and several more.
You click the “Install” button and you get a confirmation…
Once you do, your done. The micro-application is installed on its own container-based micro-server using Docker, or so I believe. And while you get an ugly URL out of the gate, you can map a domain on top of it.
I mapped a ghost installation on ghost.jimgroom.net and it worked almost instantaneously.
And as you’ll notice in the following screenshot, I have Etherpad, Ghost, and WordPress installed, and I was struck by how easy it was compare to the visual confusion and clutter of CPanel. This is the dashboard for a hosting account with three applications. Pretty sparse, and less is more. Right now I am mapping subdomains manually, but that is something we could automate pretty easily at Reclaim Hosting. Ad after that, voila! We can have a whole series of indie web apps for people to choose from, and enable them to install and manage their own applications using docker-deployed micro-instances. (I wonder if I said that right?)
So, everything I was speculating about in the last part of my presentation at University of Oklahoma is, in many ways, made concrete in a platform like Sandstorm. If you are interested in checking it out, go to http://sandstorm.reclaimhosting.com/ I think you should be able to login in, if you can’t let us know and we’ll get you access. You can alos demo this right on Sandstorm’s site as well.
Hi Jim,
This looks pretty amazing. I would love to play. I can log in, but I don’t see any list of apps?
Looking into this with Tim right now, will let you know asap.
It’s a minor point but technically Sandstorm is going a level deeper than Docker, they’re using the same underlying technology that Docker is built on, linux kernel sandboxing https://blog.sandstorm.io/news/2014-08-19-why-not-run-docker-apps.html. But they’re not Docker containers in the technical sense. Absolutely the same idea though. Think of Docker and Sandstorm as two different ways at utilizing the same component technology to do something.
Tim,
So does this bring up the issue of standards. I know for shipping containers agreeing upon a particular size for universal access was crucial for it to get off the ground. Is that what we are looking at now?
To some extent standards are important, but I don’t think it necessarily has to be one size fits all as long as these standards are open and are made interoperable (that second part is pretty key). I don’t have to have Word anymore to open a Word document, so I think that’s what we’re looking at. Containerization starts to remove the need for one format to rule them all in part because if I didn’t have a Sandstorm environment to run the backup, I could just spin one up in a container. But ideally you’d have formats that could play in many different ecosystems (though I don’t know if that’s a larger technical challenge, presuming Sandstorm chose carefully why they couldn’t just use Docker in the first place).
Oh I should add, for now I have to invite users so send me a DM or email me and I’ll invite you to play in the Sand(storm)box!
Jim, Tim,
Many thanks for setting me up so quickly. Just starting to scratch around a wee bit, pretty straightforward so far!
Hi Jim,
Nice post!
One slight correction: We (Sandstorm) actually don’t use Docker, but we use the same underlying Linux kernel features that Docker uses. It turns out all the interesting stuff happens in the kernel so it’s actually easier for us to use directly than to use Docker. A blog post on that: https://blog.sandstorm.io/news/2014-08-19-why-not-run-docker-apps.html
Sorry that the splash page for non-invited users refers to our own mailing list. We should probably make that configurable. 🙂
If anyone has questions, feel free to e-mail me (kenton at sandstorm.io) or hop on IRC (#sandstorm on freenode) or post to sandstorm-dev. 🙂
Kenton,
Thanks for the clarification, I’m still wrapping my head around containerization as metaphor is it relates to all of this. But I really love the way you have decoupled the hosting experience from the commodity LAMP? CPanel environment, and give these indieweb applications the possibility to get discovered. The idea of add and running your own apps through this hosting is yet another benefit of such an approach. So very cool.
Thanks for commenting here, and looking forward to playing more with Sandstorm. Fine work.
Have you seen cloudron.io ? They have a similar approach to installing apps. AFAICT, sandstorm apps cannot be public, I cannot have foobar.domain.com but cloudron.io lets me hosts app in arbitrary subdomains easily.