Pārlūkot izejas kodu

Updating mesh documentation

Bob Mottram 9 gadus atpakaļ
vecāks
revīzija
879148c8e6
5 mainītis faili ar 685 papildinājumiem un 36 dzēšanām
  1. 3
    2
      doc/EN/installation.org
  2. 125
    7
      doc/EN/mesh.org
  3. 30
    20
      website/EN/installation.html
  4. 525
    0
      website/EN/mesh.html
  5. 2
    7
      website/EN/variants.html

+ 3
- 2
doc/EN/installation.org Parādīt failu

@@ -7,7 +7,7 @@
7 7
 #+BEGIN_CENTER
8 8
 [[./images/logo.png]]
9 9
 #+END_CENTER
10
-| [[file:index.html][Home]] | [[Preparation for the Beaglebone Black]] | [[Checklist]] | [[Interactive Setup]] | [[Non-Interactive Setup]] | [[Post-Setup]] | [[Keydrives]] | [[On Client Machines]] |
10
+| [[file:index.html][Home]] | [[Preparation for the Beaglebone Black]] | [[Checklist]] | [[./mesh.html][Mesh network]] | [[Interactive Setup]] | [[Non-Interactive Setup]] | [[Post-Setup]] | [[Keydrives]] | [[On Client Machines]] |
11 11
 
12 12
 
13 13
 * Preparation for the Beaglebone Black
@@ -56,7 +56,8 @@ Before running the freedombone command you will need a few things.
56 56
   * It is possible to forward ports from the internet router to the system
57 57
   * If you want to set up a social network or microblog then you will need SSL certificates corresponding to those domains
58 58
   * Have ssh access to the system
59
-
59
+* Mesh network
60
+If you are installing one of the mesh network variants then see [[./mesh.html][these instructions]] for details.
60 61
 * Interactive Setup
61 62
 The interactive server configuration setup is recommended for most users. On the system where freedombone is to be installed create a configuration file.
62 63
 

+ 125
- 7
doc/EN/mesh.org Parādīt failu

@@ -8,7 +8,7 @@
8 8
 [[./images/logo.png]]
9 9
 #+END_CENTER
10 10
 
11
-| [[What is a mesh network?]] | [[The Freedombone Mesh]] | [[Installation]] |
11
+| [[What is a mesh network?]] | [[The Freedombone Mesh]] | [[Installation]] | [[Wifi adaptors]] | [[Using the mesh]] |
12 12
 
13 13
 * What is a mesh network?
14 14
 The internet as it currently exists is mostly organised according to a client/server model. Servers run the web services and store the data and clients are the laptops, desktops and other devices accessing the servers. In a mesh network there isn't any clear division between clients and servers. The computers on a mesh network are known as "peers" and they can perform the functions of both clients and servers. Commonly this is also known as a "peer to peer" network.
@@ -25,17 +25,135 @@ Example use cases would be:
25 25
  * Camp sites
26 26
  * War zones
27 27
  * Scientific expeditions to remote areas
28
- * Onboard ships
29
- * Underground (mines/caves)
30
- * Protests
28
+ * Onboard smaller ships without satellite internet, captain/crew communications
29
+ * Underground (mines or caves)
30
+ * Protests / Occupations of buildings
31
+ * Eventually in space for manned missions to other planets, moons or asteroids
31 32
 
32 33
 * The Freedombone Mesh
33
-The Freedombone mesh is offline - in the sense of not being part of the larger internet - and consists of a set of computers with the system installed communicating wirelessly using ordinary wifi. Peers can enter or leave the network and it will adjust automatically. All communications between peers is end-to-end encrypted, so although it's easy to join the network it's not easy to passively evesdrop.
34
+The Freedombone mesh is offline - in the sense of not being part of the larger internet - and consists of a set of computers with the software installed communicating wirelessly using ordinary wifi. Peers can enter or leave the network and it will adjust automatically. All communications between peers is end-to-end encrypted, so although it's easy to join the network it's not easy to passively evesdrop.
34 35
 * Installation
35 36
 ** Two types of system
36 37
 Installation is split into two categories, /routers/ and /user devices/.
37 38
 
38
-A router is a computer which is dedicated to moving network traffic and building out the mesh infrastructure. It's not primarily intended to have a user interface. Hardware such as the Beaglebone Black is ideal for this, because it's small, inexpensive and doesn't consume much electrical power and so can be fitted in any location where an electricity supply is available. Small computers can also be battery operated or solar powered so that the mesh need not be statically sited. They could be included in a backpack for camping, fitted within moving vehicles, or on protest placards to help provide a local and transient communications system.
39
+A router is a computer which is dedicated to moving network traffic and building out the mesh infrastructure. It's not primarily intended to have a user interface. Hardware such as the Beaglebone Black is ideal for this, because it's small, inexpensive and doesn't consume much electrical power and so can be fitted in any location where an electricity supply is available.
39 40
 
40
-User devices are the computers with which you would typically access the internet - laptops, desktop machines, netbooks or any other device which can run a Debian-based distro with a working wifi connection.
41
+Small computers acting as mesh routers can also be battery operated or solar powered so that the network need not be statically sited. They could be included in a backpack for camping, fitted within moving vehicles, strapped to protest placards or attached to large tethered helium balloons (like weather balloons) to help provide a local and transient communications system.
42
+
43
+/User devices/ are the computers with which you would typically access the internet - laptops, desktop machines, netbooks or any other device which can run a Debian-based distro (eg. Ubuntu) with a working wifi connection.
41 44
 ** Installing on routers
45
+Whatever system you're going to use as a mesh router should have a new Debian Jessie install on it. It's advisable that this be a new install so that there is no existing software on the system which could confuse the mesh install process. Connect your system to your internet router with an ethernet cable, then ssh into it and type:
46
+
47
+#+BEGIN_SRC bash
48
+su
49
+apt-get update
50
+apt-get install git build-essential dialog
51
+git clone https://github.com/bashrc/freedombone
52
+cd freedombone
53
+make install
54
+#+END_SRC
55
+
56
+At this point if you are using a system or dongle with an Atheros AR9271 wifi chipset then you may want to install some pre-compiled firmware (you can compile it from source, but it takes a long time - especially on the Beaglebone Black). If you need to do that then see the wifi adaptor notes below.
57
+
58
+Then to begin the install:
59
+
60
+#+BEGIN_SRC bash
61
+freedombone menuconfig
62
+#+END_SRC
63
+
64
+Select the "/mesh (router)/" install variant, give an ESSID or just hit enter for the default. If discression is important then use an ESSID similar to those already in the area. The ESSID must be the same on every mesh peer. Assign this mesh peer a name. In order to avoid confusions it's important that the name should be unique on the network and contain no spaces. So maybe a word followed by some numbers, or the name of the place where the router will be installed.
65
+
66
+If you're installing on a Beaglebone Black then after a while the system will reboot and you will need to ssh in again and run:
67
+
68
+#+BEGIN_SRC bash
69
+cd freedombone
70
+freedombone -c freedombone.cfg
71
+#+END_SRC
72
+
73
+The reboot is needed in order to enable zram and the hardware random number generator.
74
+** Installing on user devices
75
+Typically on a laptop with a Debian-based distro installed, open a terminal and type:
76
+
77
+#+BEGIN_SRC bash
78
+sudo apt-get update
79
+sudo apt-get install git build-essential dialog
80
+git clone https://github.com/bashrc/freedombone
81
+cd freedombone
82
+sudo make install
83
+freedombone menuconfig
84
+#+END_SRC
85
+
86
+Select the "/mesh (user device)/" variant and set the same ESSID as you did for the routers, or just hit enter for the default.
87
+
88
+An important point is that on older Debian-based systems, such as Ubuntu 14.04 or Trisquel 7, you may need to install a more recent version of /batctl/. An example is as follows.
89
+
90
+#+BEGIN_SRC bash
91
+sudo apt-get remove --purge batctl
92
+wget http://mirrors.kernel.org/ubuntu/pool/universe/b/batctl/batctl_2014.1.0-2_amd64.deb
93
+sudo dpkg -i batctl_2014.1.0-2_amd64.deb
94
+#+END_SRC
95
+* Wifi adaptors
96
+There are a small number of wifi adaptors which are compatible with a fully free software stack.
97
+** Atheros AR9271
98
+To install the firmware for this:
99
+
100
+#+BEGIN_SRC bash
101
+cd freedombone/drivers
102
+sha256sum ath9k_htc_driver_bbb.tar.gz
103
+7eb9324681f03c7630ed01e490ea447dfbd96c9b5389e45b64e4646d1be16ff1
104
+tar -xvzf ath9k_htc_driver_bbb.tar.gz
105
+mv *.fw /lib/firmware
106
+cd ..
107
+#+END_SRC
108
+* Using the mesh
109
+** Switching from internet to mesh mode
110
+To join the mesh network open a terminal and type:
111
+
112
+#+BEGIN_SRC bash
113
+meshweb
114
+#+END_SRC
115
+
116
+If you want to have your system as a permanent mesh peer then you could add that command to your startup applications so that it activates whenever the computer starts up.
117
+
118
+A web page should appear in your browser, which then allows you to access communication services on the mesh. These pages should update automatically, so that if peers enter or leave the network the lists will change accordingly.
119
+** Chat
120
+If you have a Tox client installed on your system then you can use that to communicate with other mesh peers. A limitation is that if peers change you may need to quit the application and restart it in order to receive the updated list of DHTnodes. The [[https://github.com/Tox/toxic][Toxic]] client is installed by default, but you may also want to install [[https://github.com/tux3/qTox][qTox]] or [[http://utox.org][uTox]] for a more conventional-looking user experience.
121
+
122
+You can obtain Tox IDs for users on the network via the initial web page.
123
+
124
+To launch the [[https://github.com/Tox/toxic][Toxic client]] in a terminal type:
125
+
126
+#+BEGIN_SRC bash
127
+toxic
128
+#+END_SRC
129
+
130
+The first time you will be asked whether you wish to encrypt the data file used for your settings. Select "no" for this, otherwise the system will not be able to obtain your public key and broadcast it to other peers in the network. Even if you select "yes" the system will still be usable, but it will not be so easy for other peers on the network to find you unless you have previously exchanged your Tox ID via some out-of-band method.
131
+
132
+Then to add a new friend:
133
+
134
+#+BEGIN_SRC bash
135
+/nick mynickname
136
+/add <friend Tox ID>
137
+#+END_SRC
138
+
139
+Your friend will need to approve the request, and then you can chat via text or voice using /CTRL-o/ and /CTRL-p/ to switch between screens and cursor keys plus Enter to select users.
140
+
141
+A note for the security-conscious is that broadcasting Tox IDs via the network (using Avahi) is convenient but not highly secure. An adversary could maybe join the network and create decoy peers to try to disrupt the communications and have messages going to the wrong places. For the best security exchange Tox IDs in advance by some method other than looking them up from the initial mesh web page.
142
+** Blogging
143
+The Freedombone mesh uses a fully decentralized blogging system called [[https://github.com/HelloZeroNet/ZeroBlog][ZeroBlog]]. It behaves rather like other peer-to-peer file sharing systems in that if you are reading the blog of another user you are also simultaneously seeding it to other peers (acting as both a client and a server). This allows the system to scale well, while also being robust to any peer failing or leaving the network.
144
+
145
+All blogs on the mesh are public, so any user joining the mesh can read any other blog. Network traffic is encrypted between peers, so passive snooping will be hard, and also the integrity of data is checked via certificates so that you can be reasonably confident that nefarious content has not been added or removed from the data stream while in transit through the network.
146
+
147
+This type of content creation and delivery provides a good template for what the conventional internet should ultimately be like if it is to be robust, trustworthy and resistant to censorship or damage.
148
+
149
+To add a new blog entry click the /new post/ button, edit the title and content (clicking /save/ at the bottom of the screen after each). Then when you are done click on the /publish/ button at the bottom of the screen. And that's all there is to it.
150
+** Other services
151
+It is hoped that a decentralized forum will be added, but this is not yet complete. In the mean time a substitute is to use the Tox group chat feature.
152
+** Turing off the mesh
153
+If you wish to return to the internet then open a terminal and type:
154
+
155
+#+BEGIN_SRC bash
156
+sudo batman stop
157
+#+END_SRC
158
+
159
+After a few seconds your usual internet wifi connection should be re-established.

+ 30
- 20
website/EN/installation.html Parādīt failu

@@ -4,7 +4,7 @@
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6 6
 <title></title>
7
-<!-- 2015-07-11 Sat 12:37 -->
7
+<!-- 2015-09-05 Sat 14:16 -->
8 8
 <meta  http-equiv="Content-Type" content="text/html;charset=utf-8" />
9 9
 <meta  name="generator" content="Org-mode" />
10 10
 <meta  name="author" content="Bob Mottram" />
@@ -180,12 +180,15 @@ for the JavaScript code in this tag.
180 180
 <col  class="org-left" />
181 181
 
182 182
 <col  class="org-left" />
183
+
184
+<col  class="org-left" />
183 185
 </colgroup>
184 186
 <tbody>
185 187
 <tr>
186 188
 <td class="org-left"><a href="index.html">Home</a></td>
187 189
 <td class="org-left"><a href="#orgheadline1">Preparation for the Beaglebone Black</a></td>
188 190
 <td class="org-left"><a href="#orgheadline2">Checklist</a></td>
191
+<td class="org-left"><a href="./mesh.html">Mesh network</a></td>
189 192
 <td class="org-left"><a href="#orgheadline3">Interactive Setup</a></td>
190 193
 <td class="org-left"><a href="#orgheadline4">Non-Interactive Setup</a></td>
191 194
 <td class="org-left"><a href="#orgheadline5">Post-Setup</a></td>
@@ -274,7 +277,14 @@ Before running the freedombone command you will need a few things.
274 277
 </ul>
275 278
 </div>
276 279
 </div>
277
-
280
+<div id="outline-container-orgheadline8" class="outline-2">
281
+<h2 id="orgheadline8">Mesh network</h2>
282
+<div class="outline-text-2" id="text-orgheadline8">
283
+<p>
284
+If you are installing one of the mesh network variants then see <a href="./mesh.html">these instructions</a> for details.
285
+</p>
286
+</div>
287
+</div>
278 288
 <div id="outline-container-orgheadline3" class="outline-2">
279 289
 <h2 id="orgheadline3">Interactive Setup</h2>
280 290
 <div class="outline-text-2" id="text-orgheadline3">
@@ -395,33 +405,33 @@ Also see the manpage for additional options which can be used instead of a confi
395 405
 </div>
396 406
 </div>
397 407
 
398
-<div id="outline-container-orgheadline8" class="outline-2">
399
-<h2 id="orgheadline8">Social Key Management</h2>
400
-<div class="outline-text-2" id="text-orgheadline8">
408
+<div id="outline-container-orgheadline9" class="outline-2">
409
+<h2 id="orgheadline9">Social Key Management</h2>
410
+<div class="outline-text-2" id="text-orgheadline9">
401 411
 <p>
402 412
 If you are using the interactive installer then you will be aked if you wish to import GPG keys. If you don't already possess GPG keys then just select "Ok" and they will be generated during the install. If you do already have GPG keys then there are a few possibilities
403 413
 </p>
404 414
 </div>
405 415
 
406
-<div id="outline-container-orgheadline9" class="outline-3">
407
-<h3 id="orgheadline9">You have the gnupg keyring on an encrypted USB drive</h3>
408
-<div class="outline-text-3" id="text-orgheadline9">
416
+<div id="outline-container-orgheadline10" class="outline-3">
417
+<h3 id="orgheadline10">You have the gnupg keyring on an encrypted USB drive</h3>
418
+<div class="outline-text-3" id="text-orgheadline10">
409 419
 <p>
410 420
 If you previously made a master keydrive containing the full keyring (the .gnupg directory). This is the most straightforward case, but not as secure as splitting the key into fragments.
411 421
 </p>
412 422
 </div>
413 423
 </div>
414
-<div id="outline-container-orgheadline10" class="outline-3">
415
-<h3 id="orgheadline10">You have a number of key fragments on USB drives retrieved from friends</h3>
416
-<div class="outline-text-3" id="text-orgheadline10">
424
+<div id="outline-container-orgheadline11" class="outline-3">
425
+<h3 id="orgheadline11">You have a number of key fragments on USB drives retrieved from friends</h3>
426
+<div class="outline-text-3" id="text-orgheadline11">
417 427
 <p>
418 428
 If you previously made some USB drives containing key fragments then retrieve them from your friends and plug them in one after the other. After the last drive has been read then remove it and just select "Ok". The system will then try to reconstruct the key. For this to work you will need to have previously made three or more <a href="#orgheadline6">Keydrives</a>.
419 429
 </p>
420 430
 </div>
421 431
 </div>
422
-<div id="outline-container-orgheadline11" class="outline-3">
423
-<h3 id="orgheadline11">You can specify some ssh login details for friends servers containing key fragments</h3>
424
-<div class="outline-text-3" id="text-orgheadline11">
432
+<div id="outline-container-orgheadline12" class="outline-3">
433
+<h3 id="orgheadline12">You can specify some ssh login details for friends servers containing key fragments</h3>
434
+<div class="outline-text-3" id="text-orgheadline12">
425 435
 <p>
426 436
 Enter three or more sets of login details and the installer will try to retrieve key fragments and then assemble them into the full key. This only works if you previously were using remote backups and had social key management enabled.
427 437
 </p>
@@ -564,9 +574,9 @@ On your internet router, typically under firewall settings, open the following p
564 574
 After installing for the first time it's a good idea to create some keydrives. These will store your gpg key so that if all else fails you will still be able to restore from backup. There are two ways to do this:
565 575
 </p>
566 576
 </div>
567
-<div id="outline-container-orgheadline12" class="outline-3">
568
-<h3 id="orgheadline12">Master Keydrive</h3>
569
-<div class="outline-text-3" id="text-orgheadline12">
577
+<div id="outline-container-orgheadline13" class="outline-3">
578
+<h3 id="orgheadline13">Master Keydrive</h3>
579
+<div class="outline-text-3" id="text-orgheadline13">
570 580
 <p>
571 581
 This is the traditional security model in which you carry your full keyring on an encrypted USB drive. To make a master keydrive first format a USB drive as a LUKS encrypted drive. In Ubuntu this can be <a href="https://help.ubuntu.com/community/EncryptedFilesystemsOnRemovableStorage">done from the <i>Disk Utility</i> application</a>. Then plug it into the Freedombone system, then from your local machine run:
572 582
 </p>
@@ -586,9 +596,9 @@ If you are on a Beaglebone Black then use <i>sda</i> rather than <i>sdb</i> for
586 596
 </p>
587 597
 </div>
588 598
 </div>
589
-<div id="outline-container-orgheadline13" class="outline-3">
590
-<h3 id="orgheadline13">Fragment keydrives</h3>
591
-<div class="outline-text-3" id="text-orgheadline13">
599
+<div id="outline-container-orgheadline14" class="outline-3">
600
+<h3 id="orgheadline14">Fragment keydrives</h3>
601
+<div class="outline-text-3" id="text-orgheadline14">
592 602
 <p>
593 603
 This breaks your GPG key into a number of fragments and randomly selects one to add to the USB drive. First format a USB drive as a LUKS encrypted drive. In Ubuntu this <a href="https://help.ubuntu.com/community/EncryptedFilesystemsOnRemovableStorage">can be done from the <i>Disk Utility</i> application</a>. Plug it into the Freedombone system then from your local machine run the following commands:
594 604
 </p>

+ 525
- 0
website/EN/mesh.html Parādīt failu

@@ -0,0 +1,525 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5
+<head>
6
+<title></title>
7
+<!-- 2015-09-05 Sat 14:12 -->
8
+<meta  http-equiv="Content-Type" content="text/html;charset=utf-8" />
9
+<meta  name="generator" content="Org-mode" />
10
+<meta  name="author" content="Bob Mottram" />
11
+<meta  name="description" content="Turn the Beaglebone Black into a personal communications server"
12
+ />
13
+<meta  name="keywords" content="freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber" />
14
+<meta  name="viewport" content="width=device-width, initial-scale=1" />
15
+<style type="text/css">
16
+ <!--/*--><![CDATA[/*><!--*/
17
+  .title  { text-align: center;
18
+             margin-bottom: .2em; }
19
+  .subtitle { text-align: center;
20
+              font-size: medium;
21
+              font-weight: bold;
22
+              margin-top:0; }
23
+  .todo   { font-family: monospace; color: red; }
24
+  .done   { font-family: monospace; color: green; }
25
+  .priority { font-family: monospace; color: orange; }
26
+  .tag    { background-color: #eee; font-family: monospace;
27
+            padding: 2px; font-size: 80%; font-weight: normal; }
28
+  .timestamp { color: #bebebe; }
29
+  .timestamp-kwd { color: #5f9ea0; }
30
+  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
31
+  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
32
+  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
33
+  .underline { text-decoration: underline; }
34
+  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
35
+  p.verse { margin-left: 3%; }
36
+  pre {
37
+    border: 1px solid #ccc;
38
+    box-shadow: 3px 3px 3px #eee;
39
+    padding: 8pt;
40
+    font-family: monospace;
41
+    overflow: auto;
42
+    margin: 1.2em;
43
+  }
44
+  pre.src {
45
+    position: relative;
46
+    overflow: visible;
47
+    padding-top: 1.2em;
48
+  }
49
+  pre.src:before {
50
+    display: none;
51
+    position: absolute;
52
+    background-color: white;
53
+    top: -10px;
54
+    right: 10px;
55
+    padding: 3px;
56
+    border: 1px solid black;
57
+  }
58
+  pre.src:hover:before { display: inline;}
59
+  pre.src-sh:before    { content: 'sh'; }
60
+  pre.src-bash:before  { content: 'sh'; }
61
+  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
62
+  pre.src-R:before     { content: 'R'; }
63
+  pre.src-perl:before  { content: 'Perl'; }
64
+  pre.src-java:before  { content: 'Java'; }
65
+  pre.src-sql:before   { content: 'SQL'; }
66
+
67
+  table { border-collapse:collapse; }
68
+  caption.t-above { caption-side: top; }
69
+  caption.t-bottom { caption-side: bottom; }
70
+  td, th { vertical-align:top;  }
71
+  th.org-right  { text-align: center;  }
72
+  th.org-left   { text-align: center;   }
73
+  th.org-center { text-align: center; }
74
+  td.org-right  { text-align: right;  }
75
+  td.org-left   { text-align: left;   }
76
+  td.org-center { text-align: center; }
77
+  dt { font-weight: bold; }
78
+  .footpara:nth-child(2) { display: inline; }
79
+  .footpara { display: block; }
80
+  .footdef  { margin-bottom: 1em; }
81
+  .figure { padding: 1em; }
82
+  .figure p { text-align: center; }
83
+  .inlinetask {
84
+    padding: 10px;
85
+    border: 2px solid gray;
86
+    margin: 10px;
87
+    background: #ffffcc;
88
+  }
89
+  #org-div-home-and-up
90
+   { text-align: right; font-size: 70%; white-space: nowrap; }
91
+  textarea { overflow-x: auto; }
92
+  .linenr { font-size: smaller }
93
+  .code-highlighted { background-color: #ffff00; }
94
+  .org-info-js_info-navigation { border-style: none; }
95
+  #org-info-js_console-label
96
+    { font-size: 10px; font-weight: bold; white-space: nowrap; }
97
+  .org-info-js_search-highlight
98
+    { background-color: #ffff00; color: #000000; font-weight: bold; }
99
+  /*]]>*/-->
100
+</style>
101
+<link rel="stylesheet" type="text/css"
102
+href="http://sachachua.com/blog/wp-content/themes/sacha-v3/foundation/css/foundation.min.css"></link>
103
+<link rel="stylesheet" type="text/css" href="http://sachachua.com/org-export.css"></link>
104
+<link rel="stylesheet" type="text/css" href="http://sachachua.com/blog/wp-content/themes/sacha-v3/style.css"></link>
105
+<script type="text/javascript">
106
+/*
107
+@licstart  The following is the entire license notice for the
108
+JavaScript code in this tag.
109
+
110
+Copyright (C) 2012-2013 Free Software Foundation, Inc.
111
+
112
+The JavaScript code in this tag is free software: you can
113
+redistribute it and/or modify it under the terms of the GNU
114
+General Public License (GNU GPL) as published by the Free Software
115
+Foundation, either version 3 of the License, or (at your option)
116
+any later version.  The code is distributed WITHOUT ANY WARRANTY;
117
+without even the implied warranty of MERCHANTABILITY or FITNESS
118
+FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
119
+
120
+As additional permission under GNU GPL version 3 section 7, you
121
+may distribute non-source (e.g., minimized or compacted) forms of
122
+that code without the copy of the GNU GPL normally required by
123
+section 4, provided you include this license notice and a URL
124
+through which recipients can access the Corresponding Source.
125
+
126
+
127
+@licend  The above is the entire license notice
128
+for the JavaScript code in this tag.
129
+*/
130
+<!--/*--><![CDATA[/*><!--*/
131
+ function CodeHighlightOn(elem, id)
132
+ {
133
+   var target = document.getElementById(id);
134
+   if(null != target) {
135
+     elem.cacheClassElem = elem.className;
136
+     elem.cacheClassTarget = target.className;
137
+     target.className = "code-highlighted";
138
+     elem.className   = "code-highlighted";
139
+   }
140
+ }
141
+ function CodeHighlightOff(elem, id)
142
+ {
143
+   var target = document.getElementById(id);
144
+   if(elem.cacheClassElem)
145
+     elem.className = elem.cacheClassElem;
146
+   if(elem.cacheClassTarget)
147
+     target.className = elem.cacheClassTarget;
148
+ }
149
+/*]]>*///-->
150
+</script>
151
+</head>
152
+<body>
153
+<div id="preamble" class="status">
154
+<a name="top" id="top"></a>
155
+</div>
156
+<div id="content">
157
+<div class="center">
158
+
159
+<div class="figure">
160
+<p><img src="./images/logo.png" alt="logo.png" />
161
+</p>
162
+</div>
163
+</div>
164
+
165
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
166
+
167
+
168
+<colgroup>
169
+<col  class="org-left" />
170
+
171
+<col  class="org-left" />
172
+
173
+<col  class="org-left" />
174
+
175
+<col  class="org-left" />
176
+
177
+<col  class="org-left" />
178
+</colgroup>
179
+<tbody>
180
+<tr>
181
+<td class="org-left"><a href="#orgheadline1">What is a mesh network?</a></td>
182
+<td class="org-left"><a href="#orgheadline2">The Freedombone Mesh</a></td>
183
+<td class="org-left"><a href="#orgheadline3">Installation</a></td>
184
+<td class="org-left"><a href="#orgheadline4">Wifi adaptors</a></td>
185
+<td class="org-left"><a href="#orgheadline5">Using the mesh</a></td>
186
+</tr>
187
+</tbody>
188
+</table>
189
+
190
+<div id="outline-container-orgheadline1" class="outline-2">
191
+<h2 id="orgheadline1">What is a mesh network?</h2>
192
+<div class="outline-text-2" id="text-orgheadline1">
193
+<p>
194
+The internet as it currently exists is mostly organised according to a client/server model. Servers run the web services and store the data and clients are the laptops, desktops and other devices accessing the servers. In a mesh network there isn't any clear division between clients and servers. The computers on a mesh network are known as "peers" and they can perform the functions of both clients and servers. Commonly this is also known as a "peer to peer" network.
195
+</p>
196
+
197
+<p>
198
+The client/server and mesh network models have advantages and disadvantages. If the server in a client/server system fails then you can have catastrophic service outages which affect many users. If a peer in a mesh network fails then the other peers may be mostly unaffected and communications can continue. The disadvantage of mesh networks is that each peer relays data for other peers and so the bandwidth usage by each peer may be higher than for a client in a client/server system. However, with modern hardware that's not much of an issue.
199
+</p>
200
+
201
+<p>
202
+Mesh networks are useful for building local and highly resillient communications infrastructure which can be put together rapidly, in situations where the ordinary internet is either unavailable or untrustworthy.
203
+</p>
204
+
205
+<p>
206
+Example use cases would be:
207
+</p>
208
+
209
+<ul class="org-ul">
210
+<li>Conferences / Exhibitions</li>
211
+<li>Local community networks, not run by telcos or ISPs</li>
212
+<li>Emergency services / Disaster relief</li>
213
+<li>Camp sites</li>
214
+<li>War zones</li>
215
+<li>Scientific expeditions to remote areas</li>
216
+<li>Onboard smaller ships without satellite internet, captain/crew communications</li>
217
+<li>Underground (mines or caves)</li>
218
+<li>Protests / Occupations of buildings</li>
219
+<li>Eventually in space for manned missions to other planets, moons or asteroids</li>
220
+</ul>
221
+</div>
222
+</div>
223
+
224
+<div id="outline-container-orgheadline2" class="outline-2">
225
+<h2 id="orgheadline2">The Freedombone Mesh</h2>
226
+<div class="outline-text-2" id="text-orgheadline2">
227
+<p>
228
+The Freedombone mesh is offline - in the sense of not being part of the larger internet - and consists of a set of computers with the software installed communicating wirelessly using ordinary wifi. Peers can enter or leave the network and it will adjust automatically. All communications between peers is end-to-end encrypted, so although it's easy to join the network it's not easy to passively evesdrop.
229
+</p>
230
+</div>
231
+</div>
232
+<div id="outline-container-orgheadline3" class="outline-2">
233
+<h2 id="orgheadline3">Installation</h2>
234
+<div class="outline-text-2" id="text-orgheadline3">
235
+</div><div id="outline-container-orgheadline6" class="outline-3">
236
+<h3 id="orgheadline6">Two types of system</h3>
237
+<div class="outline-text-3" id="text-orgheadline6">
238
+<p>
239
+Installation is split into two categories, <i>routers</i> and <i>user devices</i>.
240
+</p>
241
+
242
+<p>
243
+A router is a computer which is dedicated to moving network traffic and building out the mesh infrastructure. It's not primarily intended to have a user interface. Hardware such as the Beaglebone Black is ideal for this, because it's small, inexpensive and doesn't consume much electrical power and so can be fitted in any location where an electricity supply is available.
244
+</p>
245
+
246
+<p>
247
+Small computers acting as mesh routers can also be battery operated or solar powered so that the network need not be statically sited. They could be included in a backpack for camping, fitted within moving vehicles, strapped to protest placards or attached to large tethered helium balloons (like weather balloons) to help provide a local and transient communications system.
248
+</p>
249
+
250
+<p>
251
+<i>User devices</i> are the computers with which you would typically access the internet - laptops, desktop machines, netbooks or any other device which can run a Debian-based distro (eg. Ubuntu) with a working wifi connection.
252
+</p>
253
+</div>
254
+</div>
255
+<div id="outline-container-orgheadline7" class="outline-3">
256
+<h3 id="orgheadline7">Installing on routers</h3>
257
+<div class="outline-text-3" id="text-orgheadline7">
258
+<p>
259
+Whatever system you're going to use as a mesh router should have a new Debian Jessie install on it. It's advisable that this be a new install so that there is no existing software on the system which could confuse the mesh install process. Connect your system to your internet router with an ethernet cable, then ssh into it and type:
260
+</p>
261
+
262
+<div class="org-src-container">
263
+
264
+<pre class="src src-bash">su
265
+apt-get update
266
+apt-get install git build-essential dialog
267
+git clone https://github.com/bashrc/freedombone
268
+<span class="org-builtin">cd</span> freedombone
269
+make install
270
+</pre>
271
+</div>
272
+
273
+<p>
274
+At this point if you are using a system or dongle with an Atheros AR9271 wifi chipset then you may want to install some pre-compiled firmware (you can compile it from source, but it takes a long time - especially on the Beaglebone Black). If you need to do that then see the wifi adaptor notes below.
275
+</p>
276
+
277
+<p>
278
+Then to begin the install:
279
+</p>
280
+
281
+<div class="org-src-container">
282
+
283
+<pre class="src src-bash">freedombone menuconfig
284
+</pre>
285
+</div>
286
+
287
+<p>
288
+Select the "<i>mesh (router)</i>" install variant, give an ESSID or just hit enter for the default. If discression is important then use an ESSID similar to those already in the area. The ESSID must be the same on every mesh peer. Assign this mesh peer a name. In order to avoid confusions it's important that the name should be unique on the network and contain no spaces. So maybe a word followed by some numbers, or the name of the place where the router will be installed.
289
+</p>
290
+
291
+<p>
292
+If you're installing on a Beaglebone Black then after a while the system will reboot and you will need to ssh in again and run:
293
+</p>
294
+
295
+<div class="org-src-container">
296
+
297
+<pre class="src src-bash"><span class="org-builtin">cd</span> freedombone
298
+freedombone -c freedombone.cfg
299
+</pre>
300
+</div>
301
+
302
+<p>
303
+The reboot is needed in order to enable zram and the hardware random number generator.
304
+</p>
305
+</div>
306
+</div>
307
+<div id="outline-container-orgheadline8" class="outline-3">
308
+<h3 id="orgheadline8">Installing on user devices</h3>
309
+<div class="outline-text-3" id="text-orgheadline8">
310
+<p>
311
+Typically on a laptop with a Debian-based distro installed, open a terminal and type:
312
+</p>
313
+
314
+<div class="org-src-container">
315
+
316
+<pre class="src src-bash">sudo apt-get update
317
+sudo apt-get install git build-essential dialog
318
+git clone https://github.com/bashrc/freedombone
319
+<span class="org-builtin">cd</span> freedombone
320
+sudo make install
321
+freedombone menuconfig
322
+</pre>
323
+</div>
324
+
325
+<p>
326
+Select the "<i>mesh (user device)</i>" variant and set the same ESSID as you did for the routers, or just hit enter for the default.
327
+</p>
328
+
329
+<p>
330
+An important point is that on older Debian-based systems, such as Ubuntu 14.04 or Trisquel 7, you may need to install a more recent version of <i>batctl</i>. An example is as follows.
331
+</p>
332
+
333
+<div class="org-src-container">
334
+
335
+<pre class="src src-bash">sudo apt-get remove --purge batctl
336
+wget http://mirrors.kernel.org/ubuntu/pool/universe/b/batctl/batctl_2014.1.0-2_amd64.deb
337
+sudo dpkg -i batctl_2014.1.0-2_amd64.deb
338
+</pre>
339
+</div>
340
+</div>
341
+</div>
342
+</div>
343
+<div id="outline-container-orgheadline4" class="outline-2">
344
+<h2 id="orgheadline4">Wifi adaptors</h2>
345
+<div class="outline-text-2" id="text-orgheadline4">
346
+<p>
347
+There are a small number of wifi adaptors which are compatible with a fully free software stack.
348
+</p>
349
+</div>
350
+<div id="outline-container-orgheadline9" class="outline-3">
351
+<h3 id="orgheadline9">Atheros AR9271</h3>
352
+<div class="outline-text-3" id="text-orgheadline9">
353
+<p>
354
+To install the firmware for this:
355
+</p>
356
+
357
+<div class="org-src-container">
358
+
359
+<pre class="src src-bash"><span class="org-builtin">cd</span> freedombone/drivers
360
+sha256sum ath9k_htc_driver_bbb.tar.gz
361
+7eb9324681f03c7630ed01e490ea447dfbd96c9b5389e45b64e4646d1be16ff1
362
+tar -xvzf ath9k_htc_driver_bbb.tar.gz
363
+mv *.fw /lib/firmware
364
+<span class="org-builtin">cd</span> ..
365
+</pre>
366
+</div>
367
+</div>
368
+</div>
369
+</div>
370
+<div id="outline-container-orgheadline5" class="outline-2">
371
+<h2 id="orgheadline5">Using the mesh</h2>
372
+<div class="outline-text-2" id="text-orgheadline5">
373
+</div><div id="outline-container-orgheadline10" class="outline-3">
374
+<h3 id="orgheadline10">Switching from internet to mesh mode</h3>
375
+<div class="outline-text-3" id="text-orgheadline10">
376
+<p>
377
+To join the mesh network open a terminal and type:
378
+</p>
379
+
380
+<div class="org-src-container">
381
+
382
+<pre class="src src-bash">meshweb
383
+</pre>
384
+</div>
385
+
386
+<p>
387
+If you want to have your system as a permanent mesh peer then you could add that command to your startup applications so that it activates whenever the computer starts up.
388
+</p>
389
+
390
+<p>
391
+A web page should appear in your browser, which then allows you to access communication services on the mesh. These pages should update automatically, so that if peers enter or leave the network the lists will change accordingly.
392
+</p>
393
+</div>
394
+</div>
395
+<div id="outline-container-orgheadline11" class="outline-3">
396
+<h3 id="orgheadline11">Chat</h3>
397
+<div class="outline-text-3" id="text-orgheadline11">
398
+<p>
399
+If you have a Tox client installed on your system then you can use that to communicate with other mesh peers. A limitation is that if peers change you may need to quit the application and restart it in order to receive the updated list of DHTnodes. The <a href="https://github.com/Tox/toxic">Toxic</a> client is installed by default, but you may also want to install <a href="https://github.com/tux3/qTox">qTox</a> or <a href="http://utox.org/">uTox</a> for a more conventional-looking user experience.
400
+</p>
401
+
402
+<p>
403
+You can obtain Tox IDs for users on the network via the initial web page.
404
+</p>
405
+
406
+<p>
407
+To launch the <a href="https://github.com/Tox/toxic">Toxic client</a> in a terminal type:
408
+</p>
409
+
410
+<div class="org-src-container">
411
+
412
+<pre class="src src-bash">toxic
413
+</pre>
414
+</div>
415
+
416
+<p>
417
+The first time you will be asked whether you wish to encrypt the data file used for your settings. Select "no" for this, otherwise the system will not be able to obtain your public key and broadcast it to other peers in the network. Even if you select "yes" the system will still be usable, but it will not be so easy for other peers on the network to find you unless you have previously exchanged your Tox ID via some out-of-band method.
418
+</p>
419
+
420
+<p>
421
+Then to add a new friend:
422
+</p>
423
+
424
+<div class="org-src-container">
425
+
426
+<pre class="src src-bash">/nick mynickname
427
+/add &lt;friend Tox ID&gt;
428
+</pre>
429
+</div>
430
+
431
+<p>
432
+Your friend will need to approve the request, and then you can chat via text or voice using <i>CTRL-o</i> and <i>CTRL-p</i> to switch between screens and cursor keys plus Enter to select users.
433
+</p>
434
+
435
+<p>
436
+A note for the security-conscious is that broadcasting Tox IDs via the network (using Avahi) is convenient but not highly secure. An adversary could maybe join the network and create decoy peers to try to disrupt the communications and have messages going to the wrong places. For the best security exchange Tox IDs in advance by some method other than looking them up from the initial mesh web page.
437
+</p>
438
+</div>
439
+</div>
440
+<div id="outline-container-orgheadline12" class="outline-3">
441
+<h3 id="orgheadline12">Blogging</h3>
442
+<div class="outline-text-3" id="text-orgheadline12">
443
+<p>
444
+The Freedombone mesh uses a fully decentralized blogging system called <a href="https://github.com/HelloZeroNet/ZeroBlog">ZeroBlog</a>. It behaves rather like other peer-to-peer file sharing systems in that if you are reading the blog of another user you are also simultaneously seeding it to other peers (acting as both a client and a server). This allows the system to scale well, while also being robust to any peer failing or leaving the network.
445
+</p>
446
+
447
+<p>
448
+All blogs on the mesh are public, so any user joining the mesh can read any other blog. Network traffic is encrypted between peers, so passive snooping will be hard, and also the integrity of data is checked via certificates so that you can be reasonably confident that nefarious content has not been added or removed from the data stream while in transit through the network.
449
+</p>
450
+
451
+<p>
452
+This type of content creation and delivery provides a good template for what the conventional internet should ultimately be like if it is to be robust, trustworthy and resistant to censorship or damage.
453
+</p>
454
+
455
+<p>
456
+To add a new blog entry click the <i>new post</i> button, edit the title and content (clicking <i>save</i> at the bottom of the screen after each). Then when you are done click on the <i>publish</i> button at the bottom of the screen. And that's all there is to it.
457
+</p>
458
+</div>
459
+</div>
460
+<div id="outline-container-orgheadline13" class="outline-3">
461
+<h3 id="orgheadline13">Other services</h3>
462
+<div class="outline-text-3" id="text-orgheadline13">
463
+<p>
464
+It is hoped that a decentralized forum will be added, but this is not yet complete. In the mean time a substitute is to use the Tox group chat feature.
465
+</p>
466
+</div>
467
+</div>
468
+<div id="outline-container-orgheadline14" class="outline-3">
469
+<h3 id="orgheadline14">Turing off the mesh</h3>
470
+<div class="outline-text-3" id="text-orgheadline14">
471
+<p>
472
+If you wish to return to the internet then open a terminal and type:
473
+</p>
474
+
475
+<div class="org-src-container">
476
+
477
+<pre class="src src-bash">sudo batman stop
478
+</pre>
479
+</div>
480
+
481
+<p>
482
+After a few seconds your usual internet wifi connection should be re-established.
483
+</p>
484
+</div>
485
+</div>
486
+</div>
487
+</div>
488
+<div id="postamble" class="status">
489
+
490
+<style type="text/css">
491
+.back-to-top {
492
+    position: fixed;
493
+    bottom: 2em;
494
+    right: 0px;
495
+    text-decoration: none;
496
+    color: #000000;
497
+    background-color: rgba(235, 235, 235, 0.80);
498
+    font-size: 12px;
499
+    padding: 1em;
500
+    display: none;
501
+}
502
+
503
+.back-to-top:hover {
504
+    background-color: rgba(135, 135, 135, 0.50);
505
+}
506
+</style>
507
+
508
+<div class="back-to-top">
509
+<a href="#top">Back to top</a> | <a href="mailto:bob@robotics.uk.to">E-mail me</a>
510
+</div>
511
+
512
+<script type="text/javascript">
513
+    var offset = 220;
514
+    var duration = 500;
515
+    jQuery(window).scroll(function() {
516
+        if (jQuery(this).scrollTop() > offset) {
517
+            jQuery('.back-to-top').fadeIn(duration);
518
+        } else {
519
+            jQuery('.back-to-top').fadeOut(duration);
520
+        }
521
+    });
522
+</script>
523
+</div>
524
+</body>
525
+</html>

+ 2
- 7
website/EN/variants.html Parādīt failu

@@ -4,7 +4,7 @@
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6 6
 <title></title>
7
-<!-- 2015-07-19 Sun 18:49 -->
7
+<!-- 2015-09-04 Fri 22:29 -->
8 8
 <meta  http-equiv="Content-Type" content="text/html;charset=utf-8" />
9 9
 <meta  name="generator" content="Org-mode" />
10 10
 <meta  name="author" content="Bob Mottram" />
@@ -225,12 +225,7 @@ Freedombone may be installed either in its entirety or as different variants wit
225 225
 
226 226
 <tr>
227 227
 <td class="org-left"><b>Mesh</b></td>
228
-<td class="org-left">Mesh network bridge to the internet</td>
229
-</tr>
230
-
231
-<tr>
232
-<td class="org-left"><b>Nonmailbox</b></td>
233
-<td class="org-left">Installs eveything except for the email server</td>
228
+<td class="org-left">A wireless mesh network which is like the internet, but not the internet</td>
234 229
 </tr>
235 230
 </tbody>
236 231
 </table>