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 :) |