Servers Without Servers

A Site With No Home

Hackathon-goers will know the dilemma. You finally finish your Arduino-controlled, Slack-integrated, drone-powered Frankenstein of awesomeness, and now you need a website to show it off. You whip up a page and take a moment to appreciate how good it looks on your local machine.

But no one else can see it, because you haven’t hosted it anywhere.

You can’t afford hosting for a day, and you don’t have your own webserver already. There’s some free hosting options, but you only have 10 minutes before your team is on stage and there’s no time to set it all up! If you’ve encountered this issue enough times, you’ve probably discovered Github Pages, which lets you host a static site for free from a Github repo. This is an incredible service and would have been worthy of it’s own article a few years ago.

If you’re fine with being limited to static pages, you have a Github account, and don’t mind being subject to Github’s Terms Of Service… this article is not for you.

If you wish you could do more… enter peer-to-peer web hosting.

Sharing The Load

P2P web hosting is the idea that clients can serve a website to each other, instead of having a dedicated server to do all the work. It’s a simple idea, but the potential is huge:

  • Hosting becomes free and available to anyone with an ordinary computer.
  • Websites never go down.
  • Computing power and storage space is based on demand rather than pricing.
  • Users can store and control their own data.
  • It’s arguably closer to the original goal of the Internet.

This is idea has excited researchers since the beginning of the millennia with the advent of Freenet, a platform that promised all of the above with the added “bonus” of complete anonymity. Freenet was well-implemented and well-intentioned, but anonymity came at a cost. The cryptographic techniques required sent latency through the roof and the public hesitated at it’s real potential to harbour cybercrime. To make things worse, you couldn’t access regular websites from Freenet, and Freenet sites were likewise hidden from ordinary browsers. So instead of becoming the new standard, Freenet became part of “the Darknet”.

P2P web hosting didn’t stop with Freenet though. There have been several attempts over the years with solutions like Osiris, Maelstrom and most recently ZeroNet, with varying degrees of success. Unfortunately, they are all standalone programs which require the user to download and connect to a network that is separate from the greater web. In my opinion, having separate networks is against the Internet’s fundamental goal of connecting everyone. These issues, and a lack of public awareness, prevented these technologies from becoming mainstream.

The Web of Tomorrow… Today

New web technologies are changing things. Fast. With the introduction of P2P technologies like WebRTC baked into popular browsers that the entire planet uses, a truly global P2P web is on the tip of our fingers… you might even say it’s already here.

WebTorrent proved that P2P filesharing on a huge scale is possible in the browser. FreedomJS unleased a framework for production quality P2P apps that refuse to even consider a server. Talky.io is a video chat website that can often be better quality than Skype or Facetime. Developers are crafting P2P games, databases, social networks, even neural nets, all in the browser alongside the everyday web. You may use a P2P service daily and not even realize it!

Back To The Hackathon

The implications of this new Web are far-reaching, but I haven’t forgotten our time-strapped hackathoner. To solve this issue of fast-as-possible deployment, I applied these new web technologies and created HyperHost, a free service that tries to make hosting as easy and fast as possible.

Just go to https://rationalcoding.github.io/HyperHost/ and drag n’ drop the root folder of your website. It will be instantly hosted and available in any modern desktop browser as long as you keep that window open. That’s it. Need a backend? Check out the docs to see how you can setup a Node-like server right in your browser.

Why Isn’t This Everywhere?

WebRTC is wonderful and there’s nothing wrong with it. The issue is that browser support for these mind-blowing features is limited. The only way to speed up the process is to develop with WebRTC so that browsers are pressured to adopt the new standards.

Let’s free the web. Use WebRTC.