This is a part of the Beaker p2p browser project [1]. This server lets you host websites over the Dat protocol with DNS shortnames, as well as HTTPS as a fallback for (let's say) "legacy" browsers.
EDIT: direct link to the repo https://github.com/beakerbrowser/dathttpd. We also have Prometheus/Grafana integration which is pretty handy; it's currently the easiest way to watch the health of a swarm.
Yes - In Beaker we have plans for a userland namespace, which will be under the "app://" scheme. And we may someday move from DNS-over-HTTPS to something like DNSSEC, but that's not planned yet.
I'd love to see a kind of reverse-DNS-style tagging system, so that when my browser comes across a dat:// link it can automatically show me that this content is commonly tagged as "book, Fahrenheit 451" or such.
Beaker browser is amazing. You seem put most of your efforts on DAT support, do you plan an IPFS support?
The historical IPFS implementation is Go but it seems that the JavaScript implementation is gaining traction and, IMO, will become the main reference implementation.
Very sensible design decisions and it's hard not to get excited about Rob Pike's involvement. I think Dat confers significant advantage by being hostless, but with Google's name behind it, you never know where Upspin could go. We have plans for secure key-distribution via Dat that's similar to Key Transparency, but it'll take us a couple months to a year to implement it. I feel bad for the Keybase team right now, that's for sure.
I've tried all three. Quick and dirty differences: ZeroNet is for sharing websites by public key -- meaning the data the public key points to is mutable by the whoever possesses the private key. Dat is for storing generic content (which may or not be a website) by public key. IPFS is for storing generic content by hash -- meaning that the data the address points to is immutable. You should also be aware of IPNS, a public key system from the makers of IPFS, thought I'm more of a fan of Dat than anything else.
The "Configure the variables in this post" is an incredible touch that makes reading the examples so much more instantly relatable and recognizable. I will definitely be stealing this pattern for my own purposes!
This is perhaps slightly off-topic, but a concern I've had with systems like IPFS and Dat is that they seem to harm privacy, because objects are not encrypted, and consequently also would among other things not be censorship-resistant, and be more likely to cause legal issues for an owner of a node which ends up holding illegal content involuntarily. Has there been any work in this regard?
I've discussed this at some point in the IPFS IRC channel.
Their line of reasoning was that you could just as easily host encrypted blobs on IPFS and be done with it.
That somewhat appeals to me, encryption of content seems orthogonal to hosting it. It feels like the Unix dogma 'do one thing and do it well'.
You could do it yourself, but in 2017, I'm not sure optional DIY privacy and censorship-resistance is acceptable. It ought to be done transparently and automatically by the implementation.
Encryption isn't slow, it wouldn't hurt performance or anything like that. Plus, if everything's encrypted, it doesn't attract attention to the people who appear to have something to hide.
The model I have in mind would be what mega.co.nz does: store opaque ciphertexts, and distribute links containing the keys to said ciphertexts. So instead of a link to someproto://hash/ you'd link to someproto:://hash/decryptionkey/. And your IPS/Dat/whatever client would handle decryption for you.
Happy to answer questions.
1. https://beakerbrowser.com/
EDIT: direct link to the repo https://github.com/beakerbrowser/dathttpd. We also have Prometheus/Grafana integration which is pretty handy; it's currently the easiest way to watch the health of a swarm.