4.0 KiB
IPFS: The Interplanetary File System
What is IPFS
Ipfs is software that connects every computer thats a node in the system to the same, indestructable network of files. Its comparable to a bittorrent swarm and evokes the spirit of the original version of the web.
What can I do with it?
Ipfs is designed to make anything you post on it, near impossible to get rid of as as the network is up. This means you can make files that are impossible censor and cant 404 just because the server hosting it craps out. Its even possible to make an indestructible, completely decentralized static website!
Basics of IPFS
You can install it with your native package manager or snap if your distro supports it
sudo apt install snapd
snap install ipfs
ln -s /snap/ipfs/current/bin/ipfs /usr/local/bin
Setup is just as easy!
ipfs init
ipfs less /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme
ipfs daemon
ipfs swarm peers
Cool stuff to do after set up
Adding a file to ipfs
If having you're own immortal file sounds awesome, you'll be happy to know doing the same is easy!
Simply type: ipfs add the_meaning_of_life.txt
and you're done!
The command will return a hash that looks something like this:
QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy
You'll need that has to get your file from ipfs, just like a website url gets you the site. The hash changes when the file changes, so as long as the file is the same the has will also be.
More can be found here
Making an Indestructible Website
If you've every wanted a website but
- Couldn't afford hosting
- Needed to post things you're government wouldn't approve or
- thought it was too complicated
Ipfs has you covered!
Start by making a directory containing your html files, lets say
zerzangang
is your folder name. Make sure the daemon is running:
ipfs daemon
Then you can add the directory to ipfs
ipfs add -r zerzangang
You'll get something like this spat out at you
added QmcMN2wqoun88SVF5own7D5LUpnHwDA6ALZnVdFXhnYhAs zerzangang/pics/zerzan_sexy.jpg added QmS8tC5NJqajBB5qFhcA1auav14iHMnoMZJWfmr4k3EY6w zerzangang/pics added QmYh6HbZhHABQXrkQZ4aRRSoSa6bb9vaKoHeumWex6HRsT zerzangang/index.html added QmYeAiiK1UfB8MGLRefok1N7vBTyX8hGPuMXZ4Xq1DPyt7 zerzangang/
Something to note is how every file and subdirectory is given its own
crypto hash. For now, all you need to know is that the last line is what
functions as your "site url". And you're done! All you have to do is
type http://localhost:8080/ipfs/$SITE_CID
where $SITE_CID
is your
hash of your site's directory.
And you're done!
IPNS: The Problem Solver
You might remember me saying that the entire hash changes when you change the file. So one downside is that if you edit your website and republish it on ipfs, your site's hash, which is part of its url, will change completely. This is obviously a pain in the ass. But dont worry IPNS has you covered! IPNS allows you to register one hash that stays the same despite the file changes. Lets set it up with your site now!
Start by running:
ipfs name publish $SITE_CID
The command will return
Published to $PEER_ID: /ipfs/$SITE_CID
PEER_ID
will be the new site hash and you can verify everything went
write by typing ipfs name resolove PEER_ID
. You can now visit your
site on https://ipfs.io/ipns/PEER_ID
. The next time you you want to
update the site, simply run:
ipfs add -r zerzangang/
ipfs name publish NEW_SITE_HASH
Now when someone wants to visit your site the address stays the same!