#+TITLE: #+AUTHOR: Bob Mottram #+EMAIL: bob@robotics.uk.to #+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber #+DESCRIPTION: Turn the Beaglebone Black into a personal communications server #+OPTIONS: ^:nil toc:nil #+HTML_HEAD: #+BEGIN_CENTER [[file:images/logo.png]] #+END_CENTER #+BEGIN_CENTER This site can also be accessed via a Tor browser at 4fvfozz6g3zmvf76.onion #+END_CENTER Mesh networks are useful as a quick way to make a fully decentralised communications system which is not connected to the internet. Think festivals, hacker conferences, onboard ships at sea, disaster/war zones, small business internal office communications, protests, remote areas of the world, scientific expeditions and off-world space colonies. All the cool stuff. The down side is that you can't access any internet content. The upside is that you can securely communicate with anyone on the local mesh. No ISPs. No payments or subscriptions beyond the cost of obtaining the hardware. Systems need to be within wifi range of each other for the mesh to be created. It can be an ultra-convenient way to do purely local communications. First you will need to create an image. #+begin_src bash sudo su apt-get -y install build-essential git python-docutils mktorrent \ vmdebootstrap xz-utils dosfstools btrfs-tools extlinux python-distro-info \ mbr qemu-user-static binfmt-support u-boot-tools qemu git clone https://github.com/bashrc/freedombone cd freedombone git checkout stockholm make install freedombone-image -t i386 -v meshclient #+end_src If you don't have Atheros or free software compatible wifi adapter then you can include proprietary wifi drivers which will work with most laptops. This is *NOT RECOMMENDED* because proprietary drivers are unsupportable and may contain either malware or be exploitable in a way which can't be fixed. However, if you're in an emergency and don't have any Atheros or free software wifi USB dongles then you can use the following command to make the image: #+begin_src bash freedombone-image -t i386 -v meshclient --insecure yes #+end_src This takes a while. Maybe an hour or so, depending on the speed of your system and the internets. The good news though is that once created you can use the resulting image any number of times, and you don't need to trust some pre-built image. List what drives are on your system with: #+begin_src bash ls /dev/sd* #+end_src Now plug in the USB thumb drive, and do the same again. Notice which drive letter gets added. You can now copy the image to the USB thumb drive, replacing *sdX* with the identifier of the USB thumb drive. Don't include any numbers (so for example use *sdc* instead of *sdc1*). #+begin_src bash dd bs=1M if=myimagefile.img of=/dev/sdX conv=fdatasync #+end_src And wait. Again it will take a while to copy over. When that's done plug it into the laptop or netbook which you want to use on the mesh, power on and set the BIOS to boot from the USB stick. On first boot you'll be asked to set a username, and then you can open the chat client and select the *users* icon to show the Tox IDs for other users on the mesh. When folks join they will be announced. Rinse, repeat, for any number of laptops that you want to get onto the mesh or to build out coverage within an area. There are no servers. Just peer-to-peer communications routed through the network which are end-to-end secure after a friend request is accepted. By default the chat client doesn't log anything. No logs, no masters. You can also use single board computers (SBCs) such as the BeagleBone Black to make mesh routers which can be bolted to walls or the sides of buildings and consume minimal electrical power, so could be solar or battery powered for short term events such as festivals. To do that use the following command to make the image: #+begin_src bash freedombone-image -t beaglebone -v mesh #+end_src The resulting image can be copied to a microSD card, inserted into a Beaglebone Black and booted. Don't forget to plug in an Atheros USB wifi dongle.