<p>IPFS is a p2p protocol that makes it easy to share many sorts of data. The hydrus client can communicate with an IPFS daemon to send and receive files.</p>
<p>You can read more about IPFS from <ahref="http://ipfs.io">their homepage</a>, or <ahref="https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0">this guide</a> that explains its various rules in more detail.</p>
<p>For our purposes, we only need to know about these concepts:</p>
<ul>
<li><b>IPFS daemon</b> -- A running instance of the IPFS executable that can talk to the larger network.</li>
<li><b>IPFS multihash</b> -- An IPFS-specific identifier for a file or group of files.</li>
<p><i>Note there is now a nicer desktop package <ahref="https://docs.ipfs.io/install/ipfs-desktop/">here</a>. I haven't used it, but it may be a nicer intro to the program.</i></p>
<p>Get the prebuilt executable <ahref="https://docs.ipfs.io/install/command-line/">here</a>. Inside should be a very simple 'ipfs' executable that does everything. Extract it somewhere and open up a terminal in the same folder, and then type:</p>
<p>The IPFS exe should now be running in that terminal, ready to respond to requests:</p>
<p><imgsrc="ipfs_terminal.png"/></p>
<p>You can kill it with Ctrl+C and restart it with the 'ipfs daemon' call again (you only have to run 'ipfs init' once).</p>
<p>When it is running, opening <ahref="http://127.0.0.1:8080/ipfs/QmfM2r8seH2GiRaC4esTjeraXEachRt8ZsSeGaWTPLyMoG">this page</a> should download and display an example 'Hello World!' file from <spanclass="dealwithit">~~~across the internet~~~</span>.</p>
<p>Your daemon listens for other instances of ipfs using port 4001, so if you know how to open that port in your firewall and router, make sure you do.</p>
<p>IPFS daemons are treated as services inside hydrus, so go to <i>services->manage services->remote->ipfs daemons</i> and add in your information. Hydrus uses the API port, default 5001, so you will probably want to use credentials of '127.0.0.1:5001'. You can click 'test credentials' to make sure everything is working.</p>
<p><imgsrc="ipfs_services.png"/></p>
<p>Thereafter, you will get the option to 'pin' and 'unpin' from a thumbnail's right-click menu, like so:</p>
<p><imgsrc="ipfs_pin.png"/></p>
<p>This works like hydrus's repository uploads--it won't happen immediately, but instead will be queued up at the pending menu. Commit all your pins when you are ready:</p>
<p><imgsrc="ipfs_commit.png"/></p>
<p>Notice how the IPFS icon appears on your pending and pinned files. You can search for these files using 'system:file service'.</p>
<p>Unpin works the same as pin, just like a hydrus repository petition.</p>
<p>Right-clicking any pinned file will give you a new 'share' action:</p>
<p>Which will put it straight in your clipboard. In this case, it is <ahref="http://127.0.0.1:8080/ipfs/QmP6BNvWfkNf74bY3q1ohtDZ9gAmss4LAjuFhqpDPQNm1S">QmP6BNvWfkNf74bY3q1ohtDZ9gAmss4LAjuFhqpDPQNm1S</a>.</p>
<p>If you have many files to share, IPFS also supports directories, and now hydrus does as well. IPFS directories use the same sorts of multihash as files, and you can download them into the hydrus client using the same <i>pages->new download popup->an ipfs multihash</i> menu entry. The client will detect the multihash represents a directory and give you a simple selection dialog:</p>
<p><imgsrc="ipfs_dir_download.png"/></p>
<p>You may recognise those hash filenames--this example was created by hydrus, which can create ipfs directories from any selection of files from the same right-click menu:</p>
<p><imgsrc="ipfs_dir_upload.png"/></p>
<p>Hydrus will pin all the files and then wrap them in a directory, showing its progress in a popup. Your current directory shares are summarised on the respective <i>services->review services</i> panel:</p>