| Title: OpenBSD 6.9 packages using IPFS | |
| Author: Solène | |
| Date: 01 May 2021 | |
| Tags: openbsd ipfs | |
| Description: | |
| # Update 15/07/2021 | |
| I disable the IPFS service because it's nearly not used and draw too | |
| much CPU on my server. It was a nice experiment, thank you very much | |
| for the support and suggestions. | |
| # Introduction | |
| OpenBSD 6.9 has been released and I decided to extend my IPFS | |
| experiment to latest release. This mean you can fetch packages and | |
| base sets for 6.9 amd64 now over IPFS. | |
| If you don't know what IPFS is, I recommend you to read my previous | |
| articles about IPFS. | |
| Note that it also works for -current / amd64, the server automatically | |
| checks for new updates of 6.9 and -current every 8 hours. | |
| # Benefits | |
| The benefits is to play with IPFS to understand how it works with a | |
| real world use case. Instead of using mirrors to distributes packages, | |
| my server is providing the packages and everyone downloading it can | |
| also participate into providing data to other IPFS client, this can be | |
| seen as a dynamic Bittorrent CDN (Content Delivery Network), instead of | |
| making a torrent per file, it's automatic. You certainly wouldn't | |
| download each packages as separate torrents files, nor you would | |
| download all the packages in a single torrent. | |
| This could reduce the need for mirrors and potentially make faster | |
| packages access to people who are far from a mirrors if many people | |
| close to that person use IPFS and downloaded the data. This is a great | |
| technology that can only be beneficial once it reach a critical mass of | |
| adopters. | |
| # Installing IPFS on OpenBSD | |
| To make it brief, there are instructions in the provided pkg-readme but | |
| I will give a few advice (that I may add to the pkg-readme later). | |
| ```OpenBSD installation instructions | |
| pkg_add go-ipfs | |
| su -l -s /bin/sh _go-ipfs -c "IPFS_PATH=/var/go-ipfs /usr/local/bin/ipfs init" | |
| rcctl enable go_ipfs | |
| # recommended settings | |
| rcctl set go_ipfs flags --routing=dhtclient --enable-namesys-pubsub | |
| cat <<EOF >> /etc/login.conf | |
| go_ipfs:\ | |
| :openfiles=2048:\ | |
| :tc=daemon: | |
| EOF | |
| rcctl start go_ipfs | |
| ``` | |
| Put this in /etc/installurl: | |
| ```local link to ipfs gateway | |
| http://k51qzi5uqu5dmebzq75vx3z23lsixir3cxi26ckl409ylblbjigjb1oluj3f2z.ipns.loca… | |
| ``` | |
| # Conclusion | |
| Now, pkg_add will automatically download the packages from IPFS, if | |
| more people use it, it will be faster and more resilient than if only | |
| my server is distributing the packages. | |
| Have fun and enjoy 6.9 ! | |
| If you are worried about security, packages distributed are the same | |
| than the one on the mirrors, pkg_add automatically checks the signature | |
| in the files against the signify keys available in /etc/signify/ so if | |
| pkg_add works, the packages are legitimates. |