| Title: What if Internet stops? How to rebuild an offline federated | |
| infrastructure using OpenBSD | |
| Author: Solène | |
| Date: 21 October 2021 | |
| Tags: openbsd distributed opensource nocloud | |
| Description: | |
| # Introduction | |
| What if we lose Internet tomorrow and we stop building computers? What | |
| would you want on your computer in the eventuality we would still have | |
| *some* power available to run it? | |
| I find it to be an interesting exercise in the continuity of my old | |
| laptop challenge. | |
| # Bootstrapping | |
| My biggest point would be that my computer could be used to replicate | |
| itself to other computer owners, give them the data so they can spread | |
| it again. Data copied over and over will be a lot more resilient than | |
| a single copy with a few local backups (local as in same city at best | |
| because there is no Internet). | |
| Because most people's computers relying on the Internet to have data | |
| turned into useless bricks, I think everyone would be glad to be part | |
| of an useful infrastructure that can replicate and extend. | |
| # Essentials | |
| I think I would have to argue this is very useful to have computers and | |
| knowledge they can carry if we are short on electricity for running | |
| computers. We would want science knowledge (medicine, chemistry, | |
| physics, mathematics) but also history and other topics in the long | |
| run. We would also require maps of the local region/country to make | |
| long term plans and help decisions and planning to build | |
| infrastructures (pipes, roads, lines). We would require software to | |
| display but also edit these data. | |
| Here is a list of sources I would keep synced on my computer. | |
| * wikipedia dumps (by topics so it's lighter to distribute) | |
| * openstreetmap local maps | |
| * OpenBSD source code | |
| * OpenBSD ports distfiles | |
| * kiwix and openstreetmap android APK files | |
| The wikipedia dumps in zim format are very practical to run an offline | |
| wikipedia, we would require some OpenBSD programs to make it work but | |
| we would like more people to have them, Android tablets and phones are | |
| everywhere, small and doesn't draw much battery, I'd distribute the | |
| wikipedia dumps along with a kiwix APK file to view them without | |
| requiring a computer. Keeping the sources of the Android programs | |
| would be a wise decision too. | |
| As for maps, we can download areas on openstreetmap and rework them | |
| with Qgis on OpenBSD and redistribute maps and a compatible viewer for | |
| Android devices with the OSMand~ free software app. | |
| It would be important to keep the data set rather small, I think under | |
| 100 GB because it would be complicated to have a 500GB requirement for | |
| setting up a new machine that can re-propagate the data set. | |
| If I would ever need to do that, the first time would be to make | |
| serious backups of the data set using multiples copies on hard drives | |
| that I would I hand to different people. Once the propagation process | |
| is done, it matters less because I could still gather the data | |
| somewhere. | |
| Kiwix compatible data sets (including Wikipedia) | |
| Android Kiwix app on F-droid | |
| Android OSMand~ app for OSM maps on F-droid | |
| # Why OpenBSD? | |
| I'd choose OpenBSD because it's a system I know well, but also because | |
| it's easy to hack on it to make changes on the kernel. If we ever need | |
| to connect a computer to an industrial machine, I'd rather try to port | |
| if on OpenBSD. | |
| This is also true for the ports library, with all the distfiles it's | |
| possible to rebuild packages for multiple architectures, allowing to | |
| use older computers that are not amd64, but also easily patching | |
| distfiles to fix issues or add new features. Carrying packages without | |
| their sources would be a huge mistake, you will have a set of binary | |
| blobs that can't evolve. | |
| OpenBSD is also easy to install and it works fine most of the time. | |
| I'd imagine automatic installation process from USB or even from PXE, | |
| and then share all the data so other people can propagate installation | |
| and data again. | |
| This would also work with another system of course, the point is to | |
| keep the sources of the system and of its package to be able to rebuild | |
| the system for older supported architecture but also be able to enhance | |
| and work on the sources for bug fixing and new features. | |
| # Distributing | |
| I think a very nice solution would be to use Git, there are plugins to | |
| handle binary data so the repository doesn't grow over time. Git is | |
| decentralized, you can get updates from someone who receives an update | |
| from someone else and git can also report if someone messed with the | |
| history. | |
| We could imagine some well known places running a local server with a | |
| WiFi hotspot that can receive updates from someone allowed to (using | |
| ssh+git) push updates to a git repository. There could be repositories | |
| for various topics like: news, system update, culture (music, videos, | |
| readings), maybe some kind of social network like twtxt. Anyone could | |
| come and sync their local git repository to get the news and updates, | |
| and be able to spread it again. | |
| twtxt project github page | |
| # Conclusion | |
| This is often a topic I have in mind when I think at why we are using | |
| computers and what makes them useful. In this theoretic future which | |
| is not "post-apocalyptic" but just something went wrong and we have a | |
| LOT of computers that become useless. I just want to prove that | |
| computers can still be useful without the Internet but you just need to | |
| understand their genuine purpose. | |
| I'd be interested into what others would do, please let me know if you | |
| want to write on that topic :) |