In an attempt to fight off my sleep deprivation I'll write this post about a
little something called dat. I recently bought a vps for $3.50pm and figured
I'd have a go at some things I've been wanting to do but never had a dedicated
server for.
Hopefully this post acts as a guide to anyone else wanting to serve their site
with dat.
So, what is dat? It's described as: "a new p2p hypermedia protocol". It's like
http, but instead of being centralised it's a peer-to-peer distributed web.
Nice. So basically if my server dies someone out there in the vast expanse of
the internet will have a copy of my trashfire site and other people can grab it
from them instead of my choking server.
My dat site is located at: dat://caร.si (yes your really can
use the eszett...), which is just the cutest looking domain I've seen...
Installing dat
I'm using Debian 9 so your installation process may vary slightly... First, some updates, install node package manager and install dat, easy as.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nodejs
sudo npm install npm
sudo install -g dat
Test it works via dat -v.
Serving files over dat
Create a new folder, add some content and share it.
mkdir my_folder
cd my_folder
touch index.html
nano index.html
#add some html stuff
dat share
And you should get:
$ dat share
Created new dat
dat://5a4575c632d1a573...
You can think of the dat://5a4575c632d1a573... as your address, paste that
into Beaker Browser and you should see the content
of your html file:

Hey, neato.
That's all well and good, but no-one can remember a 64 character address, this is where domains come in.
Setting up a domain name
I want to access my dat site via dat://cass.si. This can easily be achieved by
creating a TXT record in your DNS. Note: this method does not work with http
mirroring, you have to use a .well-known file for that,
more info...
Simply create a TXT record and set the target to datkey=<your_dat_address>,
so for my site it looks like the following:

It might take a bit for the DNS to propogate but all things going to plan...

Yay.
Making it permanent
Now then, since dat is peer-to-peer there needs to be at least one person on
the network at all times hosting the files, this is where hypercore comes in.
hypercore is a program written by the people that made dat for use in
hosting multiple dats. To install it:
sudo npm install -g hypercored
Now we need to add our dat address to it so it knows what to watch,
hypercored does this with use of a feeds file:
echo 'dat://<your_dat_address' >> feeds
You can use your domain too, so I did: echo 'dat://cass.si' >> feeds and it
works fine.
Finally, start up hypercored.
$ hypercored
Watching ~/dat/feeds for a list of active feeds
Archiver key is 42471e32d36be3cb617ec1df382372532aac1d1ce683982962fb3594c5f9532a
Swarm listening on port 58184
Now it should watch your dats for any changes and update them accordingly. And there you have it.