瀏覽代碼

Merge branch 'stretch' of https://github.com/bashrc/freedombone

Bob Mottram 7 年之前
父節點
當前提交
4b5dd72c22

+ 3
- 0
doc/EN/faq.org 查看文件

24
 | [[Why not support building images for Raspberry Pi?]]                                         |
24
 | [[Why not support building images for Raspberry Pi?]]                                         |
25
 | [[Why use Tor? I've heard it's used by bad people]]                                           |
25
 | [[Why use Tor? I've heard it's used by bad people]]                                           |
26
 | [[How is Tor integrated with Freedombone?]]                                                   |
26
 | [[How is Tor integrated with Freedombone?]]                                                   |
27
+| [[Can I add a clearnet domain to an onion build?]]                                            |
27
 | [[Why use Github?]]                                                                           |
28
 | [[Why use Github?]]                                                                           |
28
 | [[Keys and emails should not be stored on servers. Why do you do that?]]                      |
29
 | [[Keys and emails should not be stored on servers. Why do you do that?]]                      |
29
 | [[./mirrors.html][I have a question about mirrors or upstream repositories]]                                  |
30
 | [[./mirrors.html][I have a question about mirrors or upstream repositories]]                                  |
100
 When you install an app you will be able to access it from its onion address.
101
 When you install an app you will be able to access it from its onion address.
101
 
102
 
102
 Even if you're running the "onion only" build, this only means that sites are accessible via onion addresses. It doesn't mean that everything gets routed through Tor. If full anonymity is your aim then it's probably a good idea to just stick strictly to using TAILS.
103
 Even if you're running the "onion only" build, this only means that sites are accessible via onion addresses. It doesn't mean that everything gets routed through Tor. If full anonymity is your aim then it's probably a good idea to just stick strictly to using TAILS.
104
+* Can I add a clearnet domain to an onion build?
105
+You could if you manually edited the relevant nginx configuration files and installed some dynamic DNS system yourself. If you already have sysadmin knowledge then that's probably not too hard. But the builds created with the *onion-addresses-only* option aren't really intended to support access via clearnet domains.
103
 * Why use Github?
106
 * Why use Github?
104
 Github is paradoxically a centralized, closed and proprietary system which happens to mostly host free and open source projects. Up until now it has been relatively benign, but at some point in the name of "growth" it will likely start becoming more evil, or just become like SourceForge - which was also once much loved by FOSS developers, but turned into a den of malvertizing.
107
 Github is paradoxically a centralized, closed and proprietary system which happens to mostly host free and open source projects. Up until now it has been relatively benign, but at some point in the name of "growth" it will likely start becoming more evil, or just become like SourceForge - which was also once much loved by FOSS developers, but turned into a den of malvertizing.
105
 
108
 

+ 1
- 0
doc/EN/homeserver.org 查看文件

74
 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*).
74
 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*).
75
 
75
 
76
 #+begin_src bash
76
 #+begin_src bash
77
+dd if=/dev/zero of=/dev/sdX bs=1M count=8
77
 dd bs=1M if=myimagefile.img of=/dev/sdX conv=fdatasync
78
 dd bs=1M if=myimagefile.img of=/dev/sdX conv=fdatasync
78
 #+end_src
79
 #+end_src
79
 
80
 

+ 3
- 0
doc/EN/mesh.org 查看文件

73
 sha256sum freedombone-meshclient-3_all-i386.img.xz
73
 sha256sum freedombone-meshclient-3_all-i386.img.xz
74
 74f9eaad479f84d3bf9cb002067074d35a97028145e781c5746c74577f777ee5
74
 74f9eaad479f84d3bf9cb002067074d35a97028145e781c5746c74577f777ee5
75
 unxz freedombone-meshclient-3_all-i386.img.xz
75
 unxz freedombone-meshclient-3_all-i386.img.xz
76
+sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
76
 sudo dd bs=1M if=freedombone-meshclient-3_all-i386.img of=/dev/sdX conv=fdatasync
77
 sudo dd bs=1M if=freedombone-meshclient-3_all-i386.img of=/dev/sdX conv=fdatasync
77
 #+end_src
78
 #+end_src
78
 
79
 
88
 sha256sum freedombone-meshclient-insecure-3_all-i386.img.xz
89
 sha256sum freedombone-meshclient-insecure-3_all-i386.img.xz
89
 f1c5df24a4bfca47bd5c41dfd2568925e63a1abf83aecf0250480b4b8edc071d
90
 f1c5df24a4bfca47bd5c41dfd2568925e63a1abf83aecf0250480b4b8edc071d
90
 unxz freedombone-meshclient-insecure-3_all-i386.img.xz
91
 unxz freedombone-meshclient-insecure-3_all-i386.img.xz
92
+sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
91
 sudo dd bs=1M if=freedombone-meshclient-insecure-3_all-i386.img of=/dev/sdX conv=fdatasync
93
 sudo dd bs=1M if=freedombone-meshclient-insecure-3_all-i386.img of=/dev/sdX conv=fdatasync
92
 #+end_src
94
 #+end_src
93
 
95
 
154
 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*).
156
 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*).
155
 
157
 
156
 #+begin_src bash
158
 #+begin_src bash
159
+sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
157
 sudo dd bs=1M if=myimagefile.img of=/dev/sdX conv=fdatasync
160
 sudo dd bs=1M if=myimagefile.img of=/dev/sdX conv=fdatasync
158
 #+end_src
161
 #+end_src
159
 
162
 

+ 1
- 1
src/freedombone-app-ipfs 查看文件

34
 SHOW_ON_ABOUT=0
34
 SHOW_ON_ABOUT=0
35
 
35
 
36
 IPFS_GO_REPO_BASE="github.com/ipfs/go-ipfs"
36
 IPFS_GO_REPO_BASE="github.com/ipfs/go-ipfs"
37
-IPFS_GO_REPO='https://github.com/ipfs/go-ipfs'
37
+IPFS_GO_REPO="https://$IPFS_GO_REPO_BASE"
38
 IPFS_COMMIT='6fdfaaf6e4783ae1be7b348e7a6bc0640982c7df'
38
 IPFS_COMMIT='6fdfaaf6e4783ae1be7b348e7a6bc0640982c7df'
39
 IPFS_PORT=4001
39
 IPFS_PORT=4001
40
 IPFS_NODE_VERSION='6.2.2'
40
 IPFS_NODE_VERSION='6.2.2'

+ 2
- 1
src/freedombone-image 查看文件

544
     fi
544
     fi
545
 
545
 
546
     if [ ! $IMAGE_SIZE_SPECIFIED ]; then
546
     if [ ! $IMAGE_SIZE_SPECIFIED ]; then
547
-        IMAGE_SIZE=7.8G
547
+        IMAGE_SIZE=7.5G
548
     fi
548
     fi
549
 fi
549
 fi
550
 
550
 
700
     fi
700
     fi
701
     echo ''
701
     echo ''
702
     echo "    unxz -k ${PROJECT_NAME}*.img.xz"
702
     echo "    unxz -k ${PROJECT_NAME}*.img.xz"
703
+    echo '    sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8'
703
     echo "    sudo dd bs=1M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync"
704
     echo "    sudo dd bs=1M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync"
704
     echo ''
705
     echo ''
705
 fi
706
 fi

+ 31
- 1
src/freedombone-image-customise 查看文件

561
 
561
 
562
 INSTALLING_MESH=
562
 INSTALLING_MESH=
563
 
563
 
564
+PATCHWORK_REPO="https://github.com/ssbc/patchwork"
565
+PATCHWORK_COMMIT='60111a9e3385d65be0d17aa0d15fd20e5fb311ce'
566
+
567
+install_patchwork() {
568
+    get_npm_arch
569
+
570
+    git clone $PATCHWORK_REPO $rootdir/etc/patchwork
571
+    cd $rootdir/etc/patchwork
572
+    git checkout $PATCHWORK_COMMIT -b $PATCHWORK_COMMIT
573
+
574
+    cat <<EOF > $rootdir/usr/bin/install_patchwork
575
+#!/bin/bash
576
+cd /etc/patchwork
577
+npm install --arch=$NPM_ARCH --build-from-source
578
+npm install --arch=$NPM_ARCH --save-dev electron-rebuild
579
+./node_modules/.bin/electron-rebuild
580
+npm install --arch=$NPM_ARCH git-ssb
581
+EOF
582
+    chroot "$rootdir" /bin/chmod +x /usr/bin/install_patchwork
583
+    chroot "$rootdir" /usr/bin/install_patchwork
584
+    if [ ! -f /usr/bin/patchwork ]; then
585
+        if [ ! -f /usr/local/bin/patchwork ]; then
586
+            echo $'Unable to install SSB Patchwork peer'
587
+            exit 783524
588
+        fi
589
+    fi
590
+    rm $rootdir/usr/bin/install_patchwork
591
+}
592
+
564
 initialise_mesh() {
593
 initialise_mesh() {
565
     if [[ $VARIANT != "mesh"* ]]; then
594
     if [[ $VARIANT != "mesh"* ]]; then
566
         return
595
         return
597
     install_tomb
626
     install_tomb
598
     #install_tahoelafs
627
     #install_tahoelafs
599
     #install_librevault
628
     #install_librevault
629
+    install_patchwork
600
     install_ipfs
630
     install_ipfs
601
     install_tox
631
     install_tox
602
     install_web_server
632
     install_web_server
1463
 create_generic_image
1493
 create_generic_image
1464
 atheros_wifi
1494
 atheros_wifi
1465
 continue_installation
1495
 continue_installation
1496
+image_install_nodejs
1466
 initialise_mesh
1497
 initialise_mesh
1467
 configure_wifi
1498
 configure_wifi
1468
 configure_user_interface
1499
 configure_user_interface
1469
 image_setup_utils
1500
 image_setup_utils
1470
 image_install_inadyn
1501
 image_install_inadyn
1471
-image_install_nodejs
1472
 image_preinstall_repos
1502
 image_preinstall_repos
1473
 
1503
 
1474
 # remove downloaded packages
1504
 # remove downloaded packages

+ 6
- 0
src/freedombone-mesh-batman 查看文件

155
     iptables -D INPUT -p tcp --dport $LIBREVAULT_PORT -j ACCEPT
155
     iptables -D INPUT -p tcp --dport $LIBREVAULT_PORT -j ACCEPT
156
     iptables -D INPUT -p udp --dport $LIBREVAULT_PORT -j ACCEPT
156
     iptables -D INPUT -p udp --dport $LIBREVAULT_PORT -j ACCEPT
157
     iptables -D INPUT -p tcp --dport $TAHOELAFS_PORT -j ACCEPT
157
     iptables -D INPUT -p tcp --dport $TAHOELAFS_PORT -j ACCEPT
158
+    # SSB/Patchwork
159
+    iptables -D INPUT -p udp --dport 8008 -j ACCEPT
160
+    iptables -D INPUT -p tcp --dport 8008 -j ACCEPT
158
 
161
 
159
     systemctl restart network-manager
162
     systemctl restart network-manager
160
 }
163
 }
307
     iptables -A INPUT -p tcp --dport $LIBREVAULT_PORT -j ACCEPT
310
     iptables -A INPUT -p tcp --dport $LIBREVAULT_PORT -j ACCEPT
308
     iptables -A INPUT -p udp --dport $LIBREVAULT_PORT -j ACCEPT
311
     iptables -A INPUT -p udp --dport $LIBREVAULT_PORT -j ACCEPT
309
     iptables -A INPUT -p tcp --dport $TAHOELAFS_PORT -j ACCEPT
312
     iptables -A INPUT -p tcp --dport $TAHOELAFS_PORT -j ACCEPT
313
+    # SSB/Patchwork
314
+    iptables -A INPUT -p udp --dport 8008 -j ACCEPT
315
+    iptables -A INPUT -p tcp --dport 8008 -j ACCEPT
310
 
316
 
311
     systemctl restart avahi-daemon
317
     systemctl restart avahi-daemon
312
 
318
 

+ 45
- 28
src/freedombone-utils-nodejs 查看文件

35
 
35
 
36
 # change these versions at your peril. Things will often crash if you don't
36
 # change these versions at your peril. Things will often crash if you don't
37
 # have specifically the correct versions
37
 # have specifically the correct versions
38
-NODEJS_VERSION='6.10.1'
38
+NODEJS_VERSION='6.11.3'
39
 NODEJS_N_VERSION='2.1.7'
39
 NODEJS_N_VERSION='2.1.7'
40
 NPM_VERSION='4.0.5'
40
 NPM_VERSION='4.0.5'
41
 
41
 
43
 # so that it can be removed if tere are no apps which need it
43
 # so that it can be removed if tere are no apps which need it
44
 NODEJS_INSTALLED_APPS_FILE=$HOME/.nodejs-apps
44
 NODEJS_INSTALLED_APPS_FILE=$HOME/.nodejs-apps
45
 
45
 
46
+function get_npm_arch {
47
+    N_ARCH='x86'
48
+    NPM_ARCH='ia32'
49
+    if [[ $ARCHITECTURE == 'arm'* ]]; then
50
+        NPM_ARCH='armv7l'
51
+        N_ARCH='arm'
52
+    fi
53
+    if [[ $ARCHITECTURE == 'x86_64' || $ARCHITECTURE == 'amd64' ]]; then
54
+        NPM_ARCH='x64'
55
+        N_ARCH='x64'
56
+    fi
57
+}
58
+
46
 function mesh_install_nodejs {
59
 function mesh_install_nodejs {
47
-    # Note: this has to be jessie for now
48
-    wget -qO- https://deb.nodesource.com/gpgkey/nodesource.gpg.key > ${rootdir}/root/node.gpg.key
49
-    chroot "${rootdir}" apt-key add /root/node.gpg.key
50
-    echo "deb https://deb.nodesource.com/node_6.x jessie main" > ${rootdir}/etc/apt/sources.list.d/nodesource.list
51
-    echo "deb-src https://deb.nodesource.com/node_6.x jessie main" >> ${rootdir}/etc/apt/sources.list.d/nodesource.list
52
-    chroot "${rootdir}" apt-get update
53
-    chroot "${rootdir}" apt-get -yq install nodejs curl
60
+    chroot "$rootdir" apt-get -yq install g++ m4 libtool automake nodejs curl
61
+    chroot "$rootdir" apt-get -yq install libxext-dev libxtst-dev libxkbfile-dev
54
 
62
 
55
     if [ ! -f ${rootdir}/usr/bin/nodejs ]; then
63
     if [ ! -f ${rootdir}/usr/bin/nodejs ]; then
56
         echo $'nodejs was not installed'
64
         echo $'nodejs was not installed'
57
         exit 63962
65
         exit 63962
58
     fi
66
     fi
59
 
67
 
60
-    # TODO this doesn't work
61
-#    cat <<EOF > ${rootdir}/root/install-nodejs.sh
62
-##!/bin/bash
63
-#npm install -g npm@${NPM_VERSION} --save
64
-#npm install -g n@${NODEJS_N_VERSION} --save
65
-#n ${NODEJS_VERSION}
66
-#npm install -g pug@2.0.0-beta6 --save
67
-#npm install -g graceful-fs@4.1.10 --save
68
-#npm install -g minimatch@3.0.3 --save
69
-#npm install -g npm@${NPM_VERSION} --save
70
-#cp /usr/local/bin/node /usr/bin/nodejs
71
-#cp /usr/local/bin/npm /usr/bin/npm
72
-#EOF
73
-#    chroot "${rootdir}" chmod +x /root/install-nodejs.sh
74
-#    chroot "${rootdir}" /root/install-nodejs.sh
75
-#    if [ ! "$?" = "0" ]; then
76
-#        chroot "${rootdir}" rm -f /root/install-nodejs.sh
77
-#        exit 7632572
78
-#    fi
79
-#    chroot "${rootdir}" rm -f /root/install-nodejs.sh
68
+    if [ -f $rootdir/usr/bin/nodejs ]; then
69
+        cp $rootdir/usr/bin/nodejs $rootdir/usr/bin/node
70
+    fi
71
+
72
+    if [ ! -f $rootdir/usr/bin/node ]; then
73
+        echo $'/usr/bin/node not found'
74
+        exit 7235728
75
+    fi
76
+
77
+    wget https://www.npmjs.com/install.sh -O $rootdir/root/npm_install.sh
78
+    if [ ! -f $rootdir/root/npm_install.sh ]; then
79
+        echo $'Unable to download npm installer'
80
+        exit 8793636
81
+    fi
82
+    chroot "$rootdir" chmod +x /root/npm_install.sh
83
+    sed -i "s|t=\"\${npm_install}\"|t=\"$NPM_VERSION\"|g" $rootdir/root/npm_install.sh
84
+    chroot "$rootdir" /root/npm_install.sh
85
+
86
+    if [ ! -f $rootdir/usr/bin/npm ]; then
87
+        echo $'npm was not installed'
88
+        exit 5290462
89
+    fi
90
+    cp $rootdir/usr/bin/npm $rootdir/root/npm
91
+
92
+    # update from the old debian nodejs version
93
+    get_npm_arch
94
+    chroot "$rootdir" npm install --arch=$NPM_ARCH -g n@${NODEJS_N_VERSION} --save
95
+    chroot "$rootdir" n --arch $N_ARCH ${NODEJS_VERSION}
96
+    cp $rootdir/root/npm $rootdir/usr/bin/npm
80
 }
97
 }
81
 
98
 
82
 function remove_nodejs {
99
 function remove_nodejs {

+ 136
- 124
website/EN/faq.html 查看文件

3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
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">
4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5
 <head>
5
 <head>
6
-<!-- 2017-09-12 Tue 11:53 -->
6
+<!-- 2017-09-15 Fri 10:29 -->
7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
9
 <title></title>
9
 <title></title>
257
 </colgroup>
257
 </colgroup>
258
 <tbody>
258
 <tbody>
259
 <tr>
259
 <tr>
260
-<td class="org-left"><a href="#orge4d28e6">What applications are supported?</a></td>
260
+<td class="org-left"><a href="#orgbbb3441">What applications are supported?</a></td>
261
 </tr>
261
 </tr>
262
 
262
 
263
 <tr>
263
 <tr>
264
-<td class="org-left"><a href="#org059603a">I don't have a static IP address. Can I still install this system?</a></td>
264
+<td class="org-left"><a href="#orgd634a7c">I don't have a static IP address. Can I still install this system?</a></td>
265
 </tr>
265
 </tr>
266
 
266
 
267
 <tr>
267
 <tr>
268
-<td class="org-left"><a href="#orgce17fc3">Why Freedombone and not FreedomBox?</a></td>
268
+<td class="org-left"><a href="#org88331dc">Why Freedombone and not FreedomBox?</a></td>
269
 </tr>
269
 </tr>
270
 
270
 
271
 <tr>
271
 <tr>
272
-<td class="org-left"><a href="#org9455df3">Why not support building images for Raspberry Pi?</a></td>
272
+<td class="org-left"><a href="#orgc55c3a9">Why not support building images for Raspberry Pi?</a></td>
273
 </tr>
273
 </tr>
274
 
274
 
275
 <tr>
275
 <tr>
276
-<td class="org-left"><a href="#org78b57eb">Why use Tor? I've heard it's used by bad people</a></td>
276
+<td class="org-left"><a href="#orga017b02">Why use Tor? I've heard it's used by bad people</a></td>
277
 </tr>
277
 </tr>
278
 
278
 
279
 <tr>
279
 <tr>
280
-<td class="org-left"><a href="#org4b81ba4">How is Tor integrated with Freedombone?</a></td>
280
+<td class="org-left"><a href="#org249c744">How is Tor integrated with Freedombone?</a></td>
281
 </tr>
281
 </tr>
282
 
282
 
283
 <tr>
283
 <tr>
284
-<td class="org-left"><a href="#orgb1114e4">Why use Github?</a></td>
284
+<td class="org-left"><a href="#org7cecca6">Can I add a clearnet domain to an onion build?</a></td>
285
 </tr>
285
 </tr>
286
 
286
 
287
 <tr>
287
 <tr>
288
-<td class="org-left"><a href="#orgbc22fb9">Keys and emails should not be stored on servers. Why do you do that?</a></td>
288
+<td class="org-left"><a href="#org851c64e">Why use Github?</a></td>
289
+</tr>
290
+
291
+<tr>
292
+<td class="org-left"><a href="#orgf317597">Keys and emails should not be stored on servers. Why do you do that?</a></td>
289
 </tr>
293
 </tr>
290
 
294
 
291
 <tr>
295
 <tr>
293
 </tr>
297
 </tr>
294
 
298
 
295
 <tr>
299
 <tr>
296
-<td class="org-left"><a href="#org3de928d">Why can't I access my .onion site with a Tor browser?</a></td>
300
+<td class="org-left"><a href="#org01f5e64">Why can't I access my .onion site with a Tor browser?</a></td>
297
 </tr>
301
 </tr>
298
 
302
 
299
 <tr>
303
 <tr>
300
-<td class="org-left"><a href="#org90bb4b5">What is the best hardware to run this system on?</a></td>
304
+<td class="org-left"><a href="#org38cbf46">What is the best hardware to run this system on?</a></td>
301
 </tr>
305
 </tr>
302
 
306
 
303
 <tr>
307
 <tr>
304
-<td class="org-left"><a href="#orgd28e6f4">Can I add more users to the system?</a></td>
308
+<td class="org-left"><a href="#orgcce0278">Can I add more users to the system?</a></td>
305
 </tr>
309
 </tr>
306
 
310
 
307
 <tr>
311
 <tr>
308
-<td class="org-left"><a href="#org4f21c19">Why not use Signal for mobile chat?</a></td>
312
+<td class="org-left"><a href="#org101140b">Why not use Signal for mobile chat?</a></td>
309
 </tr>
313
 </tr>
310
 
314
 
311
 <tr>
315
 <tr>
312
-<td class="org-left"><a href="#orgfe6470e">What is the most secure chat app to use on mobile?</a></td>
316
+<td class="org-left"><a href="#org8b50dde">What is the most secure chat app to use on mobile?</a></td>
313
 </tr>
317
 </tr>
314
 
318
 
315
 <tr>
319
 <tr>
316
-<td class="org-left"><a href="#org6813023">How do I remove a user from the system?</a></td>
320
+<td class="org-left"><a href="#org20eaffc">How do I remove a user from the system?</a></td>
317
 </tr>
321
 </tr>
318
 
322
 
319
 <tr>
323
 <tr>
320
-<td class="org-left"><a href="#org9ba4b0e">Why is logging for web sites turned off by default?</a></td>
324
+<td class="org-left"><a href="#org209f0d6">Why is logging for web sites turned off by default?</a></td>
321
 </tr>
325
 </tr>
322
 
326
 
323
 <tr>
327
 <tr>
324
-<td class="org-left"><a href="#orge39d7dd">How do I reset the tripwire?</a></td>
328
+<td class="org-left"><a href="#orga16e12a">How do I reset the tripwire?</a></td>
325
 </tr>
329
 </tr>
326
 
330
 
327
 <tr>
331
 <tr>
328
-<td class="org-left"><a href="#orgad498c1">Is metadata protected?</a></td>
332
+<td class="org-left"><a href="#orgf085eb1">Is metadata protected?</a></td>
329
 </tr>
333
 </tr>
330
 
334
 
331
 <tr>
335
 <tr>
332
-<td class="org-left"><a href="#orgaf26822">How do I create email processing rules?</a></td>
336
+<td class="org-left"><a href="#org20694ec">How do I create email processing rules?</a></td>
333
 </tr>
337
 </tr>
334
 
338
 
335
 <tr>
339
 <tr>
336
-<td class="org-left"><a href="#org584e155">Why isn't dynamic DNS working?</a></td>
340
+<td class="org-left"><a href="#orgf194d33">Why isn't dynamic DNS working?</a></td>
337
 </tr>
341
 </tr>
338
 
342
 
339
 <tr>
343
 <tr>
340
-<td class="org-left"><a href="#orgca8c34e">How do I change my encryption settings?</a></td>
344
+<td class="org-left"><a href="#org04c8e6a">How do I change my encryption settings?</a></td>
341
 </tr>
345
 </tr>
342
 
346
 
343
 <tr>
347
 <tr>
344
-<td class="org-left"><a href="#org9742108">How do I get a domain name?</a></td>
348
+<td class="org-left"><a href="#org4756925">How do I get a domain name?</a></td>
345
 </tr>
349
 </tr>
346
 
350
 
347
 <tr>
351
 <tr>
348
-<td class="org-left"><a href="#org3ba4e5b">How do I get a "real" SSL/TLS/HTTPS certificate?</a></td>
352
+<td class="org-left"><a href="#org0580486">How do I get a "real" SSL/TLS/HTTPS certificate?</a></td>
349
 </tr>
353
 </tr>
350
 
354
 
351
 <tr>
355
 <tr>
352
-<td class="org-left"><a href="#orgf99af92">How do I renew a Let's Encrypt certificate?</a></td>
356
+<td class="org-left"><a href="#org689608f">How do I renew a Let's Encrypt certificate?</a></td>
353
 </tr>
357
 </tr>
354
 
358
 
355
 <tr>
359
 <tr>
356
-<td class="org-left"><a href="#org64e189a">I tried to renew a Let's Encrypt certificate and it failed. What should I do?</a></td>
360
+<td class="org-left"><a href="#org00c9fac">I tried to renew a Let's Encrypt certificate and it failed. What should I do?</a></td>
357
 </tr>
361
 </tr>
358
 
362
 
359
 <tr>
363
 <tr>
360
-<td class="org-left"><a href="#org896c14a">Why not use the services of $company instead? They took the Seppuku pledge</a></td>
364
+<td class="org-left"><a href="#org7f1159a">Why not use the services of $company instead? They took the Seppuku pledge</a></td>
361
 </tr>
365
 </tr>
362
 
366
 
363
 <tr>
367
 <tr>
364
-<td class="org-left"><a href="#org1f1886b">Why does my email keep getting rejected as spam by Gmail/etc?</a></td>
368
+<td class="org-left"><a href="#org5459287">Why does my email keep getting rejected as spam by Gmail/etc?</a></td>
365
 </tr>
369
 </tr>
366
 
370
 
367
 <tr>
371
 <tr>
368
-<td class="org-left"><a href="#org51d8596">Tor is censored/blocked in my area. What can I do?</a></td>
372
+<td class="org-left"><a href="#org108fab6">Tor is censored/blocked in my area. What can I do?</a></td>
369
 </tr>
373
 </tr>
370
 
374
 
371
 <tr>
375
 <tr>
372
-<td class="org-left"><a href="#orgaeba5cb">I want to block a particular domain from getting its content into my social network sites</a></td>
376
+<td class="org-left"><a href="#orgaeeac02">I want to block a particular domain from getting its content into my social network sites</a></td>
373
 </tr>
377
 </tr>
374
 
378
 
375
 <tr>
379
 <tr>
376
-<td class="org-left"><a href="#org021f197">The mesh system doesn't boot from USB drive</a></td>
380
+<td class="org-left"><a href="#orgfefb387">The mesh system doesn't boot from USB drive</a></td>
377
 </tr>
381
 </tr>
378
 </tbody>
382
 </tbody>
379
 </table>
383
 </table>
380
 </div>
384
 </div>
381
 
385
 
382
-<div id="outline-container-orge4d28e6" class="outline-2">
383
-<h2 id="orge4d28e6">What applications are supported?</h2>
384
-<div class="outline-text-2" id="text-orge4d28e6">
386
+<div id="outline-container-orgbbb3441" class="outline-2">
387
+<h2 id="orgbbb3441">What applications are supported?</h2>
388
+<div class="outline-text-2" id="text-orgbbb3441">
385
 <p>
389
 <p>
386
 <a href="./apps.html">See here</a> for the complete list of apps. In addition to those as part of the base install you get an email server.
390
 <a href="./apps.html">See here</a> for the complete list of apps. In addition to those as part of the base install you get an email server.
387
 </p>
391
 </p>
388
 </div>
392
 </div>
389
 </div>
393
 </div>
390
-<div id="outline-container-org059603a" class="outline-2">
391
-<h2 id="org059603a">I don't have a static IP address. Can I still install this system?</h2>
392
-<div class="outline-text-2" id="text-org059603a">
394
+<div id="outline-container-orgd634a7c" class="outline-2">
395
+<h2 id="orgd634a7c">I don't have a static IP address. Can I still install this system?</h2>
396
+<div class="outline-text-2" id="text-orgd634a7c">
393
 <p>
397
 <p>
394
 Yes. The minimum requirements are to have some hardware that you can install Debian onto and also that you have administrator access to your internet router so that you can forward ports to the system which has Freedombone installed.
398
 Yes. The minimum requirements are to have some hardware that you can install Debian onto and also that you have administrator access to your internet router so that you can forward ports to the system which has Freedombone installed.
395
 </p>
399
 </p>
399
 </p>
403
 </p>
400
 </div>
404
 </div>
401
 </div>
405
 </div>
402
-<div id="outline-container-orgce17fc3" class="outline-2">
403
-<h2 id="orgce17fc3">Why Freedombone and not FreedomBox?</h2>
404
-<div class="outline-text-2" id="text-orgce17fc3">
406
+<div id="outline-container-org88331dc" class="outline-2">
407
+<h2 id="org88331dc">Why Freedombone and not FreedomBox?</h2>
408
+<div class="outline-text-2" id="text-org88331dc">
405
 <p>
409
 <p>
406
 When the project began in late 2013 the FreedomBox project seemed to be going nowhere, and was only designed to work with the DreamPlug hardware. There was some new hardware out - the Beaglebone Black - which could run Debian and was also a free hardware design so seemed more appropriate. Hence the name "Freedombone", being like FreedomBox but on a Beaglebone. There are some similarities and differences between the two projects:
410
 When the project began in late 2013 the FreedomBox project seemed to be going nowhere, and was only designed to work with the DreamPlug hardware. There was some new hardware out - the Beaglebone Black - which could run Debian and was also a free hardware design so seemed more appropriate. Hence the name "Freedombone", being like FreedomBox but on a Beaglebone. There are some similarities and differences between the two projects:
407
 </p>
411
 </p>
408
 </div>
412
 </div>
409
 
413
 
410
-<div id="outline-container-org7307d12" class="outline-3">
411
-<h3 id="org7307d12">Similarities</h3>
412
-<div class="outline-text-3" id="text-org7307d12">
414
+<div id="outline-container-org2f730a6" class="outline-3">
415
+<h3 id="org2f730a6">Similarities</h3>
416
+<div class="outline-text-3" id="text-org2f730a6">
413
 <ul class="org-ul">
417
 <ul class="org-ul">
414
 <li>Uses freedom-maker and vmdebootstrap to build debian images</li>
418
 <li>Uses freedom-maker and vmdebootstrap to build debian images</li>
415
 <li>Supports the use of Tor onion addresses to access websites</li>
419
 <li>Supports the use of Tor onion addresses to access websites</li>
423
 </ul>
427
 </ul>
424
 </div>
428
 </div>
425
 </div>
429
 </div>
426
-<div id="outline-container-org1b7f29b" class="outline-3">
427
-<h3 id="org1b7f29b">Differences</h3>
428
-<div class="outline-text-3" id="text-org1b7f29b">
430
+<div id="outline-container-org54e066a" class="outline-3">
431
+<h3 id="org54e066a">Differences</h3>
432
+<div class="outline-text-3" id="text-org54e066a">
429
 <ul class="org-ul">
433
 <ul class="org-ul">
430
 <li>FreedomBox is a Debian pure blend. Freedombone is not</li>
434
 <li>FreedomBox is a Debian pure blend. Freedombone is not</li>
431
 <li>Freedombone only supports Free Software. FreedomBox includes some closed binary boot blobs for certain ARM boards</li>
435
 <li>Freedombone only supports Free Software. FreedomBox includes some closed binary boot blobs for certain ARM boards</li>
440
 </div>
444
 </div>
441
 </div>
445
 </div>
442
 </div>
446
 </div>
443
-<div id="outline-container-org9455df3" class="outline-2">
444
-<h2 id="org9455df3">Why not support building images for Raspberry Pi?</h2>
445
-<div class="outline-text-2" id="text-org9455df3">
447
+<div id="outline-container-orgc55c3a9" class="outline-2">
448
+<h2 id="orgc55c3a9">Why not support building images for Raspberry Pi?</h2>
449
+<div class="outline-text-2" id="text-orgc55c3a9">
446
 <p>
450
 <p>
447
 The FreedomBox project supports Raspberry Pi builds, and the image build system for Freedombone is based on the same system. However, although the Raspberry Pi can run a version of Debian it requires a closed proprietary blob in order to boot the hardware. Who knows what that blob might contain or what exploits it could facilitate. From an adversarial point of view if you were trying to deliver "bulk equipment interference" then it doesn't get any better than piggybacking on something which has control of the boot process, and hence all subsequently run processes.
451
 The FreedomBox project supports Raspberry Pi builds, and the image build system for Freedombone is based on the same system. However, although the Raspberry Pi can run a version of Debian it requires a closed proprietary blob in order to boot the hardware. Who knows what that blob might contain or what exploits it could facilitate. From an adversarial point of view if you were trying to deliver "bulk equipment interference" then it doesn't get any better than piggybacking on something which has control of the boot process, and hence all subsequently run processes.
448
 </p>
452
 </p>
452
 </p>
456
 </p>
453
 </div>
457
 </div>
454
 </div>
458
 </div>
455
-<div id="outline-container-org78b57eb" class="outline-2">
456
-<h2 id="org78b57eb">Why use Tor? I've heard it's used by bad people</h2>
457
-<div class="outline-text-2" id="text-org78b57eb">
459
+<div id="outline-container-orga017b02" class="outline-2">
460
+<h2 id="orga017b02">Why use Tor? I've heard it's used by bad people</h2>
461
+<div class="outline-text-2" id="text-orga017b02">
458
 <p>
462
 <p>
459
 Before you run screaming for the hills based upon whatever scare story you may have just read in the mainstream media there are a few things worthy of consideration. Tor is installed by default on Freedombone, <i>but not as a relay or exit node</i>. It's only used to provide onion addresses so that this gives you or the viewers of your sites some choice about how they access the information. It also allows you to subscribe to and read RSS feeds privately.
463
 Before you run screaming for the hills based upon whatever scare story you may have just read in the mainstream media there are a few things worthy of consideration. Tor is installed by default on Freedombone, <i>but not as a relay or exit node</i>. It's only used to provide onion addresses so that this gives you or the viewers of your sites some choice about how they access the information. It also allows you to subscribe to and read RSS feeds privately.
460
 </p>
464
 </p>
472
 </p>
476
 </p>
473
 </div>
477
 </div>
474
 </div>
478
 </div>
475
-<div id="outline-container-org4b81ba4" class="outline-2">
476
-<h2 id="org4b81ba4">How is Tor integrated with Freedombone?</h2>
477
-<div class="outline-text-2" id="text-org4b81ba4">
479
+<div id="outline-container-org249c744" class="outline-2">
480
+<h2 id="org249c744">How is Tor integrated with Freedombone?</h2>
481
+<div class="outline-text-2" id="text-org249c744">
478
 <p>
482
 <p>
479
 Within this project Tor is used more to provide <i>accessibility</i> than the <i>anonymity</i> factor for which Tor is better known. The onion address system provides a way of being able to access sites even if you don't own a conventional domain name or don't have administrator access to your local internet router to be able to do port forwarding.
483
 Within this project Tor is used more to provide <i>accessibility</i> than the <i>anonymity</i> factor for which Tor is better known. The onion address system provides a way of being able to access sites even if you don't own a conventional domain name or don't have administrator access to your local internet router to be able to do port forwarding.
480
 </p>
484
 </p>
492
 </p>
496
 </p>
493
 </div>
497
 </div>
494
 </div>
498
 </div>
495
-<div id="outline-container-orgb1114e4" class="outline-2">
496
-<h2 id="orgb1114e4">Why use Github?</h2>
497
-<div class="outline-text-2" id="text-orgb1114e4">
499
+<div id="outline-container-org7cecca6" class="outline-2">
500
+<h2 id="org7cecca6">Can I add a clearnet domain to an onion build?</h2>
501
+<div class="outline-text-2" id="text-org7cecca6">
502
+<p>
503
+You could if you manually edited the relevant nginx configuration files and installed some dynamic DNS system yourself. If you already have sysadmin knowledge then that's probably not too hard. But the builds created with the <b>onion-addresses-only</b> option aren't really intended to support access via clearnet domains.
504
+</p>
505
+</div>
506
+</div>
507
+<div id="outline-container-org851c64e" class="outline-2">
508
+<h2 id="org851c64e">Why use Github?</h2>
509
+<div class="outline-text-2" id="text-org851c64e">
498
 <p>
510
 <p>
499
 Github is paradoxically a centralized, closed and proprietary system which happens to mostly host free and open source projects. Up until now it has been relatively benign, but at some point in the name of "growth" it will likely start becoming more evil, or just become like SourceForge - which was also once much loved by FOSS developers, but turned into a den of malvertizing.
511
 Github is paradoxically a centralized, closed and proprietary system which happens to mostly host free and open source projects. Up until now it has been relatively benign, but at some point in the name of "growth" it will likely start becoming more evil, or just become like SourceForge - which was also once much loved by FOSS developers, but turned into a den of malvertizing.
500
 </p>
512
 </p>
512
 </p>
524
 </p>
513
 </div>
525
 </div>
514
 </div>
526
 </div>
515
-<div id="outline-container-orgbc22fb9" class="outline-2">
516
-<h2 id="orgbc22fb9">Keys and emails should not be stored on servers. Why do you do that?</h2>
517
-<div class="outline-text-2" id="text-orgbc22fb9">
527
+<div id="outline-container-orgf317597" class="outline-2">
528
+<h2 id="orgf317597">Keys and emails should not be stored on servers. Why do you do that?</h2>
529
+<div class="outline-text-2" id="text-orgf317597">
518
 <p>
530
 <p>
519
 Ordinarily this is good advice. However, the threat model for a device in your home is different from the one for a generic server in a massive warehouse. Compare and contrast:
531
 Ordinarily this is good advice. However, the threat model for a device in your home is different from the one for a generic server in a massive warehouse. Compare and contrast:
520
 </p>
532
 </p>
572
 </div>
584
 </div>
573
 </div>
585
 </div>
574
 
586
 
575
-<div id="outline-container-org3de928d" class="outline-2">
576
-<h2 id="org3de928d">Why can't I access my .onion site with a Tor browser?</h2>
577
-<div class="outline-text-2" id="text-org3de928d">
587
+<div id="outline-container-org01f5e64" class="outline-2">
588
+<h2 id="org01f5e64">Why can't I access my .onion site with a Tor browser?</h2>
589
+<div class="outline-text-2" id="text-org01f5e64">
578
 <p>
590
 <p>
579
 Probably you need to add the site to the NoScript whitelist. Typically click/press on the noscript icon (or select from the menu on mobile) then select <i>whitelist</i> and add the site URL. You may also need to disable HTTPS Everywhere when using onion addresses, which don't use https.
591
 Probably you need to add the site to the NoScript whitelist. Typically click/press on the noscript icon (or select from the menu on mobile) then select <i>whitelist</i> and add the site URL. You may also need to disable HTTPS Everywhere when using onion addresses, which don't use https.
580
 </p>
592
 </p>
584
 </p>
596
 </p>
585
 </div>
597
 </div>
586
 </div>
598
 </div>
587
-<div id="outline-container-org90bb4b5" class="outline-2">
588
-<h2 id="org90bb4b5">What is the best hardware to run this system on?</h2>
589
-<div class="outline-text-2" id="text-org90bb4b5">
599
+<div id="outline-container-org38cbf46" class="outline-2">
600
+<h2 id="org38cbf46">What is the best hardware to run this system on?</h2>
601
+<div class="outline-text-2" id="text-org38cbf46">
590
 <p>
602
 <p>
591
 It was originally designed to run on the Beaglebone Black, but that should be regarded as the most minimal system, because it's single core and has by today's standards a small amount of memory. Obviously the more powerful the hardware is the faster things like web pages (blog, social networking, etc) will be served but the more electricity such a system will require if you're running it 24/7. A good compromise between performance and energy consumption is something like an old netbook. The battery of an old netbook or laptop even gives you <a href="https://en.wikipedia.org/wiki/Uninterruptible_power_supply">UPS capability</a> to keep the system going during brief power outages or cable re-arrangements, and that means using full disk encryption on the server also becomes more practical.
603
 It was originally designed to run on the Beaglebone Black, but that should be regarded as the most minimal system, because it's single core and has by today's standards a small amount of memory. Obviously the more powerful the hardware is the faster things like web pages (blog, social networking, etc) will be served but the more electricity such a system will require if you're running it 24/7. A good compromise between performance and energy consumption is something like an old netbook. The battery of an old netbook or laptop even gives you <a href="https://en.wikipedia.org/wiki/Uninterruptible_power_supply">UPS capability</a> to keep the system going during brief power outages or cable re-arrangements, and that means using full disk encryption on the server also becomes more practical.
592
 </p>
604
 </p>
596
 </p>
608
 </p>
597
 </div>
609
 </div>
598
 </div>
610
 </div>
599
-<div id="outline-container-orgd28e6f4" class="outline-2">
600
-<h2 id="orgd28e6f4">Can I add more users to the system?</h2>
601
-<div class="outline-text-2" id="text-orgd28e6f4">
611
+<div id="outline-container-orgcce0278" class="outline-2">
612
+<h2 id="orgcce0278">Can I add more users to the system?</h2>
613
+<div class="outline-text-2" id="text-orgcce0278">
602
 <p>
614
 <p>
603
 Yes. Freedombone can support a small number of users, for a "<i>friends and family</i>" type of home installation. This gives them access to an email account, XMPP, SIP phone and the blog (depending on whether the variant which you installed includes those).
615
 Yes. Freedombone can support a small number of users, for a "<i>friends and family</i>" type of home installation. This gives them access to an email account, XMPP, SIP phone and the blog (depending on whether the variant which you installed includes those).
604
 </p>
616
 </p>
621
 </p>
633
 </p>
622
 </div>
634
 </div>
623
 </div>
635
 </div>
624
-<div id="outline-container-org4f21c19" class="outline-2">
625
-<h2 id="org4f21c19">Why not use Signal for mobile chat?</h2>
626
-<div class="outline-text-2" id="text-org4f21c19">
636
+<div id="outline-container-org101140b" class="outline-2">
637
+<h2 id="org101140b">Why not use Signal for mobile chat?</h2>
638
+<div class="outline-text-2" id="text-org101140b">
627
 <p>
639
 <p>
628
 Celebrities recommend Signal. It's Free Software so it must be good, right?
640
 Celebrities recommend Signal. It's Free Software so it must be good, right?
629
 </p>
641
 </p>
646
 </p>
658
 </p>
647
 </div>
659
 </div>
648
 </div>
660
 </div>
649
-<div id="outline-container-orgfe6470e" class="outline-2">
650
-<h2 id="orgfe6470e">What is the most secure chat app to use on mobile?</h2>
651
-<div class="outline-text-2" id="text-orgfe6470e">
661
+<div id="outline-container-org8b50dde" class="outline-2">
662
+<h2 id="org8b50dde">What is the most secure chat app to use on mobile?</h2>
663
+<div class="outline-text-2" id="text-org8b50dde">
652
 <p>
664
 <p>
653
 On mobile there are various options. The apps which are likely to be most secure are ones which have end-to-end encryption enabled by default and which can also be onion routed via Orbot. End-to-end encryption secures the content of the message and onion routing obscures the metadata, making it hard for a passive adversary to know who is communicating with who.
665
 On mobile there are various options. The apps which are likely to be most secure are ones which have end-to-end encryption enabled by default and which can also be onion routed via Orbot. End-to-end encryption secures the content of the message and onion routing obscures the metadata, making it hard for a passive adversary to know who is communicating with who.
654
 </p>
666
 </p>
658
 </p>
670
 </p>
659
 
671
 
660
 <p>
672
 <p>
661
-There are many <a href="#org4f21c19">other fashionable chat apps</a> with end-to-end security, but often they are closed source, have a single central server or can't be onion routed. It's also important to remember that closed source chat apps should be assumed to be untrustworthy, since their security cannot be independently verified.
673
+There are many <a href="#org101140b">other fashionable chat apps</a> with end-to-end security, but often they are closed source, have a single central server or can't be onion routed. It's also important to remember that closed source chat apps should be assumed to be untrustworthy, since their security cannot be independently verified.
662
 </p>
674
 </p>
663
 </div>
675
 </div>
664
 </div>
676
 </div>
665
-<div id="outline-container-org6813023" class="outline-2">
666
-<h2 id="org6813023">How do I remove a user from the system?</h2>
667
-<div class="outline-text-2" id="text-org6813023">
677
+<div id="outline-container-org20eaffc" class="outline-2">
678
+<h2 id="org20eaffc">How do I remove a user from the system?</h2>
679
+<div class="outline-text-2" id="text-org20eaffc">
668
 <p>
680
 <p>
669
 To remove a user:
681
 To remove a user:
670
 </p>
682
 </p>
679
 </p>
691
 </p>
680
 </div>
692
 </div>
681
 </div>
693
 </div>
682
-<div id="outline-container-org9ba4b0e" class="outline-2">
683
-<h2 id="org9ba4b0e">Why is logging for web sites turned off by default?</h2>
684
-<div class="outline-text-2" id="text-org9ba4b0e">
694
+<div id="outline-container-org209f0d6" class="outline-2">
695
+<h2 id="org209f0d6">Why is logging for web sites turned off by default?</h2>
696
+<div class="outline-text-2" id="text-org209f0d6">
685
 <p>
697
 <p>
686
 If you're making profits out of the logs by running large server warehouses and then data mining what users click on - as is the business model of well known internet companies - then logging everything makes total sense. However, if you're running a home server then logging really only makes sense if you're trying to diagnose some specific problem with the system, and outside of that context logging everything becomes more of a liability than an asset.
698
 If you're making profits out of the logs by running large server warehouses and then data mining what users click on - as is the business model of well known internet companies - then logging everything makes total sense. However, if you're running a home server then logging really only makes sense if you're trying to diagnose some specific problem with the system, and outside of that context logging everything becomes more of a liability than an asset.
687
 </p>
699
 </p>
695
 </p>
707
 </p>
696
 </div>
708
 </div>
697
 </div>
709
 </div>
698
-<div id="outline-container-orge39d7dd" class="outline-2">
699
-<h2 id="orge39d7dd">How do I reset the tripwire?</h2>
700
-<div class="outline-text-2" id="text-orge39d7dd">
710
+<div id="outline-container-orga16e12a" class="outline-2">
711
+<h2 id="orga16e12a">How do I reset the tripwire?</h2>
712
+<div class="outline-text-2" id="text-orga16e12a">
701
 <p>
713
 <p>
702
 The tripwire will be automatically reset once per week. If you want to reset it earlier then do the following:
714
 The tripwire will be automatically reset once per week. If you want to reset it earlier then do the following:
703
 </p>
715
 </p>
712
 </p>
724
 </p>
713
 </div>
725
 </div>
714
 </div>
726
 </div>
715
-<div id="outline-container-orgad498c1" class="outline-2">
716
-<h2 id="orgad498c1">Is metadata protected?</h2>
717
-<div class="outline-text-2" id="text-orgad498c1">
727
+<div id="outline-container-orgf085eb1" class="outline-2">
728
+<h2 id="orgf085eb1">Is metadata protected?</h2>
729
+<div class="outline-text-2" id="text-orgf085eb1">
718
 <blockquote>
730
 <blockquote>
719
 <p>
731
 <p>
720
 "<i>We kill people based on metadata</i>"
732
 "<i>We kill people based on metadata</i>"
730
 </p>
742
 </p>
731
 </div>
743
 </div>
732
 </div>
744
 </div>
733
-<div id="outline-container-orgaf26822" class="outline-2">
734
-<h2 id="orgaf26822">How do I create email processing rules?</h2>
735
-<div class="outline-text-2" id="text-orgaf26822">
745
+<div id="outline-container-org20694ec" class="outline-2">
746
+<h2 id="org20694ec">How do I create email processing rules?</h2>
747
+<div class="outline-text-2" id="text-org20694ec">
736
 <div class="org-src-container">
748
 <div class="org-src-container">
737
 <pre><code class="src src-bash">ssh username@domainname -p 2222
749
 <pre><code class="src src-bash">ssh username@domainname -p 2222
738
 </code></pre>
750
 </code></pre>
788
 </p>
800
 </p>
789
 </div>
801
 </div>
790
 </div>
802
 </div>
791
-<div id="outline-container-org584e155" class="outline-2">
792
-<h2 id="org584e155">Why isn't dynamic DNS working?</h2>
793
-<div class="outline-text-2" id="text-org584e155">
803
+<div id="outline-container-orgf194d33" class="outline-2">
804
+<h2 id="orgf194d33">Why isn't dynamic DNS working?</h2>
805
+<div class="outline-text-2" id="text-orgf194d33">
794
 <p>
806
 <p>
795
 If you run the command:
807
 If you run the command:
796
 </p>
808
 </p>
813
 </div>
825
 </div>
814
 </div>
826
 </div>
815
 
827
 
816
-<div id="outline-container-orgca8c34e" class="outline-2">
817
-<h2 id="orgca8c34e">How do I change my encryption settings?</h2>
818
-<div class="outline-text-2" id="text-orgca8c34e">
828
+<div id="outline-container-org04c8e6a" class="outline-2">
829
+<h2 id="org04c8e6a">How do I change my encryption settings?</h2>
830
+<div class="outline-text-2" id="text-org04c8e6a">
819
 <p>
831
 <p>
820
 Suppose that some new encryption vulnerability has been announced and that you need to change your encryption settings. Maybe an algorithm thought to be secure is now no longer so and you need to remove it. You can change your settings by doing the following:
832
 Suppose that some new encryption vulnerability has been announced and that you need to change your encryption settings. Maybe an algorithm thought to be secure is now no longer so and you need to remove it. You can change your settings by doing the following:
821
 </p>
833
 </p>
830
 </p>
842
 </p>
831
 </div>
843
 </div>
832
 </div>
844
 </div>
833
-<div id="outline-container-org9742108" class="outline-2">
834
-<h2 id="org9742108">How do I get a domain name?</h2>
835
-<div class="outline-text-2" id="text-org9742108">
845
+<div id="outline-container-org4756925" class="outline-2">
846
+<h2 id="org4756925">How do I get a domain name?</h2>
847
+<div class="outline-text-2" id="text-org4756925">
836
 <p>
848
 <p>
837
 Suppose that you have bought a domain name (rather than using a free subdomain on freedns) and you want to use that instead.
849
 Suppose that you have bought a domain name (rather than using a free subdomain on freedns) and you want to use that instead.
838
 </p>
850
 </p>
896
 </div>
908
 </div>
897
 </div>
909
 </div>
898
 
910
 
899
-<div id="outline-container-org3ba4e5b" class="outline-2">
900
-<h2 id="org3ba4e5b">How do I get a "real" SSL/TLS/HTTPS certificate?</h2>
901
-<div class="outline-text-2" id="text-org3ba4e5b">
911
+<div id="outline-container-org0580486" class="outline-2">
912
+<h2 id="org0580486">How do I get a "real" SSL/TLS/HTTPS certificate?</h2>
913
+<div class="outline-text-2" id="text-org0580486">
902
 <p>
914
 <p>
903
 If you did the full install or selected the social variant then the system will have tried to obtain a Let's Encrypt certificate automatically during the install process. If this failed for any reason, or if you have created a new site which you need a certificate for then do the following:
915
 If you did the full install or selected the social variant then the system will have tried to obtain a Let's Encrypt certificate automatically during the install process. If this failed for any reason, or if you have created a new site which you need a certificate for then do the following:
904
 </p>
916
 </p>
917
 </p>
929
 </p>
918
 </div>
930
 </div>
919
 </div>
931
 </div>
920
-<div id="outline-container-orgf99af92" class="outline-2">
921
-<h2 id="orgf99af92">How do I renew a Let's Encrypt certificate?</h2>
922
-<div class="outline-text-2" id="text-orgf99af92">
932
+<div id="outline-container-org689608f" class="outline-2">
933
+<h2 id="org689608f">How do I renew a Let's Encrypt certificate?</h2>
934
+<div class="outline-text-2" id="text-org689608f">
923
 <p>
935
 <p>
924
 Normally certificates will be automatically renewed once per month, so you don't need to be concerned about it. If anything goes wrong with the automatic renewal then you should receive a warning email.
936
 Normally certificates will be automatically renewed once per month, so you don't need to be concerned about it. If anything goes wrong with the automatic renewal then you should receive a warning email.
925
 </p>
937
 </p>
938
 </p>
950
 </p>
939
 </div>
951
 </div>
940
 </div>
952
 </div>
941
-<div id="outline-container-org64e189a" class="outline-2">
942
-<h2 id="org64e189a">I tried to renew a Let's Encrypt certificate and it failed. What should I do?</h2>
943
-<div class="outline-text-2" id="text-org64e189a">
953
+<div id="outline-container-org00c9fac" class="outline-2">
954
+<h2 id="org00c9fac">I tried to renew a Let's Encrypt certificate and it failed. What should I do?</h2>
955
+<div class="outline-text-2" id="text-org00c9fac">
944
 <p>
956
 <p>
945
 Most likely it's because Let's Encrypt doesn't support your particular domain or subdomain. Currently free subdomains tend not to work. You'll need to buy a domain name, link it to your dynamic DNS account and then do:
957
 Most likely it's because Let's Encrypt doesn't support your particular domain or subdomain. Currently free subdomains tend not to work. You'll need to buy a domain name, link it to your dynamic DNS account and then do:
946
 </p>
958
 </p>
955
 </p>
967
 </p>
956
 </div>
968
 </div>
957
 </div>
969
 </div>
958
-<div id="outline-container-org896c14a" class="outline-2">
959
-<h2 id="org896c14a">Why not use the services of $company instead? They took the Seppuku pledge</h2>
960
-<div class="outline-text-2" id="text-org896c14a">
970
+<div id="outline-container-org7f1159a" class="outline-2">
971
+<h2 id="org7f1159a">Why not use the services of $company instead? They took the Seppuku pledge</h2>
972
+<div class="outline-text-2" id="text-org7f1159a">
961
 <p>
973
 <p>
962
 <a href="https://cryptostorm.org/viewtopic.php?f=63&amp;t=2954&amp;sid=7de2d1e699cfde2f574e6a7f6ea5a173">That pledge</a> is utterly worthless. Years ago people trusted Google in the same sort of way, because they promised not be be evil and because a lot of the engineers working for them seemed like honest types who were "<i>on our side</i>". Post-<a href="https://en.wikipedia.org/wiki/Nymwars">nymwars</a> and post-<a href="https://en.wikipedia.org/wiki/PRISM_(surveillance_program)">PRISM</a> we know exactly how much Google cared about the privacy and security of its users. But Google is only one particular example. In general don't trust pledges made by companies, even if the people running them seem really sincere.
974
 <a href="https://cryptostorm.org/viewtopic.php?f=63&amp;t=2954&amp;sid=7de2d1e699cfde2f574e6a7f6ea5a173">That pledge</a> is utterly worthless. Years ago people trusted Google in the same sort of way, because they promised not be be evil and because a lot of the engineers working for them seemed like honest types who were "<i>on our side</i>". Post-<a href="https://en.wikipedia.org/wiki/Nymwars">nymwars</a> and post-<a href="https://en.wikipedia.org/wiki/PRISM_(surveillance_program)">PRISM</a> we know exactly how much Google cared about the privacy and security of its users. But Google is only one particular example. In general don't trust pledges made by companies, even if the people running them seem really sincere.
963
 </p>
975
 </p>
964
 </div>
976
 </div>
965
 </div>
977
 </div>
966
-<div id="outline-container-org1f1886b" class="outline-2">
967
-<h2 id="org1f1886b">Why does my email keep getting rejected as spam by Gmail/etc?</h2>
968
-<div class="outline-text-2" id="text-org1f1886b">
978
+<div id="outline-container-org5459287" class="outline-2">
979
+<h2 id="org5459287">Why does my email keep getting rejected as spam by Gmail/etc?</h2>
980
+<div class="outline-text-2" id="text-org5459287">
969
 <p>
981
 <p>
970
 Welcome to the world of email. Email is really the archetypal decentralized service, developed during the early days of the internet. In principle anyone can run an email server, and that's exactly what you're doing with Freedombone. Email is very useful, but it has a big problem, and that's that the protocols are totally insecure. That made it easy for spammers to do their thing, and in response highly elaborate spam filtering and blocking systems were developed. Chances are that your emails are being blocked in this way. Sometimes the blocking is so indisciminate that entire countries are excluded. What can you do about it? Unless you control the block list at the receiving end you may not be able to do much unless you can find an email proxy server which is trusted by the receiving server.
982
 Welcome to the world of email. Email is really the archetypal decentralized service, developed during the early days of the internet. In principle anyone can run an email server, and that's exactly what you're doing with Freedombone. Email is very useful, but it has a big problem, and that's that the protocols are totally insecure. That made it easy for spammers to do their thing, and in response highly elaborate spam filtering and blocking systems were developed. Chances are that your emails are being blocked in this way. Sometimes the blocking is so indisciminate that entire countries are excluded. What can you do about it? Unless you control the block list at the receiving end you may not be able to do much unless you can find an email proxy server which is trusted by the receiving server.
971
 </p>
983
 </p>
996
 </p>
1008
 </p>
997
 </div>
1009
 </div>
998
 </div>
1010
 </div>
999
-<div id="outline-container-org51d8596" class="outline-2">
1000
-<h2 id="org51d8596">Tor is censored/blocked in my area. What can I do?</h2>
1001
-<div class="outline-text-2" id="text-org51d8596">
1011
+<div id="outline-container-org108fab6" class="outline-2">
1012
+<h2 id="org108fab6">Tor is censored/blocked in my area. What can I do?</h2>
1013
+<div class="outline-text-2" id="text-org108fab6">
1002
 <p>
1014
 <p>
1003
 If you can find some details for an obfs4 Tor bridge (its IP address, port number and key or nickname) then you can set up the system to use it to connect to the Tor network. Unlike relay nodes the IP addresses for bridges are not public information and so can't be easily known and added to block lists by authoritarian regimes or over-zealous ISPs.
1015
 If you can find some details for an obfs4 Tor bridge (its IP address, port number and key or nickname) then you can set up the system to use it to connect to the Tor network. Unlike relay nodes the IP addresses for bridges are not public information and so can't be easily known and added to block lists by authoritarian regimes or over-zealous ISPs.
1004
 </p>
1016
 </p>
1029
 </div>
1041
 </div>
1030
 </div>
1042
 </div>
1031
 
1043
 
1032
-<div id="outline-container-orgaeba5cb" class="outline-2">
1033
-<h2 id="orgaeba5cb">I want to block a particular domain from getting its content into my social network sites</h2>
1034
-<div class="outline-text-2" id="text-orgaeba5cb">
1044
+<div id="outline-container-orgaeeac02" class="outline-2">
1045
+<h2 id="orgaeeac02">I want to block a particular domain from getting its content into my social network sites</h2>
1046
+<div class="outline-text-2" id="text-orgaeeac02">
1035
 <p>
1047
 <p>
1036
 If you're being pestered by some domain which contains bad/illegal/harrassing content or irritating users you can block domains at the firewall level. Go to the administrator control panel and select <i>domain blocking</i>. You can then block, unblock and view the list of blocked domains.
1048
 If you're being pestered by some domain which contains bad/illegal/harrassing content or irritating users you can block domains at the firewall level. Go to the administrator control panel and select <i>domain blocking</i>. You can then block, unblock and view the list of blocked domains.
1037
 </p>
1049
 </p>
1046
 </div>
1058
 </div>
1047
 </div>
1059
 </div>
1048
 
1060
 
1049
-<div id="outline-container-org021f197" class="outline-2">
1050
-<h2 id="org021f197">The mesh system doesn't boot from USB drive</h2>
1051
-<div class="outline-text-2" id="text-org021f197">
1061
+<div id="outline-container-orgfefb387" class="outline-2">
1062
+<h2 id="orgfefb387">The mesh system doesn't boot from USB drive</h2>
1063
+<div class="outline-text-2" id="text-orgfefb387">
1052
 <p>
1064
 <p>
1053
 If the system doesn't boot and reports an error which includes <b>/dev/mapper/loop0p1</b> then reboot with <b>Ctrl-Alt-Del</b> and when you see the grub menu press <b>e</b> and manually change <b>/dev/mapper/loop0p1</b> to <b>/dev/sdb1</b>, then press <b>Ctrl-x</b>. If that doesn't work then reboot and try <b>/dev/sdc1</b> instead.
1065
 If the system doesn't boot and reports an error which includes <b>/dev/mapper/loop0p1</b> then reboot with <b>Ctrl-Alt-Del</b> and when you see the grub menu press <b>e</b> and manually change <b>/dev/mapper/loop0p1</b> to <b>/dev/sdb1</b>, then press <b>Ctrl-x</b>. If that doesn't work then reboot and try <b>/dev/sdc1</b> instead.
1054
 </p>
1066
 </p>

+ 3
- 2
website/EN/homeserver.html 查看文件

3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
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">
4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5
 <head>
5
 <head>
6
-<!-- 2017-09-12 Tue 10:06 -->
6
+<!-- 2017-09-15 Fri 22:17 -->
7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
9
 <title></title>
9
 <title></title>
340
 </p>
340
 </p>
341
 
341
 
342
 <div class="org-src-container">
342
 <div class="org-src-container">
343
-<pre><code class="src src-bash">dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=myimagefile.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
343
+<pre><code class="src src-bash">dd <span class="org-variable-name">if</span>=/dev/zero <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">count</span>=8
344
+dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=myimagefile.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
344
 </code></pre>
345
 </code></pre>
345
 </div>
346
 </div>
346
 
347
 

+ 54
- 51
website/EN/mesh.html 查看文件

3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
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">
4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5
 <head>
5
 <head>
6
-<!-- 2017-07-04 Tue 10:14 -->
6
+<!-- 2017-09-15 Fri 22:19 -->
7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
9
 <title></title>
9
 <title></title>
274
 </colgroup>
274
 </colgroup>
275
 <tbody>
275
 <tbody>
276
 <tr>
276
 <tr>
277
-<td class="org-left"><a href="#org43720c8">What the system can do</a></td>
277
+<td class="org-left"><a href="#orgc6406cc">What the system can do</a></td>
278
 <td class="org-left">-</td>
278
 <td class="org-left">-</td>
279
-<td class="org-left"><a href="#orgf236d1b">Disk Images</a></td>
279
+<td class="org-left"><a href="#orgf24c15c">Disk Images</a></td>
280
 <td class="org-left">-</td>
280
 <td class="org-left">-</td>
281
-<td class="org-left"><a href="#org3279497">Building Disk Images</a></td>
281
+<td class="org-left"><a href="#org08c02eb">Building Disk Images</a></td>
282
 <td class="org-left">-</td>
282
 <td class="org-left">-</td>
283
-<td class="org-left"><a href="#org52b6ecb">How to use it</a></td>
283
+<td class="org-left"><a href="#orgfce6a77">How to use it</a></td>
284
 </tr>
284
 </tr>
285
 </tbody>
285
 </tbody>
286
 </table>
286
 </table>
293
 Mesh networks are useful as a quick way to make a fully decentralised communications system which is not connected to or reliant upon the internet. Think festivals, hacker conferences, onboard ships at sea, disaster/war zones, small business internal office communications, protests, remote areas of the world, temporary "digital blackouts", scientific expeditions and off-world space colonies. 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.
293
 Mesh networks are useful as a quick way to make a fully decentralised communications system which is not connected to or reliant upon the internet. Think festivals, hacker conferences, onboard ships at sea, disaster/war zones, small business internal office communications, protests, remote areas of the world, temporary "digital blackouts", scientific expeditions and off-world space colonies. 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.
294
 </p>
294
 </p>
295
 
295
 
296
-<div id="outline-container-org43720c8" class="outline-2">
297
-<h2 id="org43720c8">What the system can do</h2>
298
-<div class="outline-text-2" id="text-org43720c8">
296
+<div id="outline-container-orgc6406cc" class="outline-2">
297
+<h2 id="orgc6406cc">What the system can do</h2>
298
+<div class="outline-text-2" id="text-orgc6406cc">
299
 <ul class="org-ul">
299
 <ul class="org-ul">
300
 <li>Discovery of other users on the network</li>
300
 <li>Discovery of other users on the network</li>
301
 <li>Text based chat, one-to-one and in groups</li>
301
 <li>Text based chat, one-to-one and in groups</li>
316
 </div>
316
 </div>
317
 </div>
317
 </div>
318
 
318
 
319
-<div id="outline-container-orgf236d1b" class="outline-2">
320
-<h2 id="orgf236d1b">Disk Images</h2>
321
-<div class="outline-text-2" id="text-orgf236d1b">
319
+<div id="outline-container-orgf24c15c" class="outline-2">
320
+<h2 id="orgf24c15c">Disk Images</h2>
321
+<div class="outline-text-2" id="text-orgf24c15c">
322
 </div>
322
 </div>
323
-<div id="outline-container-org84d3aa9" class="outline-3">
324
-<h3 id="org84d3aa9">Writing many images quickly</h3>
325
-<div class="outline-text-3" id="text-org84d3aa9">
323
+<div id="outline-container-org88842fc" class="outline-3">
324
+<h3 id="org88842fc">Writing many images quickly</h3>
325
+<div class="outline-text-3" id="text-org88842fc">
326
 <p>
326
 <p>
327
 There may be situations where you need to write the same disk image to multiple drives at the same time in order to maximize rate of deployment. In the instructions given below the <b>dd</b> command is used for writing to the target drive, but to write to multiple drives you can use a tool such as <a href="https://wiki.gnome.org/Apps/MultiWriter">GNOME MultiWriter</a>.
327
 There may be situations where you need to write the same disk image to multiple drives at the same time in order to maximize rate of deployment. In the instructions given below the <b>dd</b> command is used for writing to the target drive, but to write to multiple drives you can use a tool such as <a href="https://wiki.gnome.org/Apps/MultiWriter">GNOME MultiWriter</a>.
328
 </p>
328
 </p>
346
 </div>
346
 </div>
347
 </div>
347
 </div>
348
 </div>
348
 </div>
349
-<div id="outline-container-orga950e86" class="outline-3">
350
-<h3 id="orga950e86">Client images</h3>
351
-<div class="outline-text-3" id="text-orga950e86">
349
+<div id="outline-container-org4a8b638" class="outline-3">
350
+<h3 id="org4a8b638">Client images</h3>
351
+<div class="outline-text-3" id="text-org4a8b638">
352
 <div class="org-center">
352
 <div class="org-center">
353
 
353
 
354
 <div class="figure">
354
 <div class="figure">
369
 sha256sum freedombone-meshclient-3_all-i386.img.xz
369
 sha256sum freedombone-meshclient-3_all-i386.img.xz
370
 74f9eaad479f84d3bf9cb002067074d35a97028145e781c5746c74577f777ee5
370
 74f9eaad479f84d3bf9cb002067074d35a97028145e781c5746c74577f777ee5
371
 unxz freedombone-meshclient-3_all-i386.img.xz
371
 unxz freedombone-meshclient-3_all-i386.img.xz
372
+sudo dd <span class="org-variable-name">if</span>=/dev/zero <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">count</span>=8
372
 sudo dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=freedombone-meshclient-3_all-i386.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
373
 sudo dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=freedombone-meshclient-3_all-i386.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
373
 </code></pre>
374
 </code></pre>
374
 </div>
375
 </div>
389
 sha256sum freedombone-meshclient-insecure-3_all-i386.img.xz
390
 sha256sum freedombone-meshclient-insecure-3_all-i386.img.xz
390
 f1c5df24a4bfca47bd5c41dfd2568925e63a1abf83aecf0250480b4b8edc071d
391
 f1c5df24a4bfca47bd5c41dfd2568925e63a1abf83aecf0250480b4b8edc071d
391
 unxz freedombone-meshclient-insecure-3_all-i386.img.xz
392
 unxz freedombone-meshclient-insecure-3_all-i386.img.xz
393
+sudo dd <span class="org-variable-name">if</span>=/dev/zero <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">count</span>=8
392
 sudo dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=freedombone-meshclient-insecure-3_all-i386.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
394
 sudo dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=freedombone-meshclient-insecure-3_all-i386.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
393
 </code></pre>
395
 </code></pre>
394
 </div>
396
 </div>
395
 </div>
397
 </div>
396
 </div>
398
 </div>
397
 
399
 
398
-<div id="outline-container-org7a83803" class="outline-3">
399
-<h3 id="org7a83803">Router images</h3>
400
-<div class="outline-text-3" id="text-org7a83803">
400
+<div id="outline-container-org519744c" class="outline-3">
401
+<h3 id="org519744c">Router images</h3>
402
+<div class="outline-text-3" id="text-org519744c">
401
 <p>
403
 <p>
402
 Routers are intended to build network coverage for an area using small and low cost hardware. You can bolt them to walls or leave them on window ledges. They don't have any user interface and their only job is to haul network traffic across the mesh and to enable peers to find each other via running bootstrap nodes for Tox and IPFS. Copy the image to a microSD card and insert it into the router, plug in an Atheros wifi dongle and power on. That should be all you need to do.
404
 Routers are intended to build network coverage for an area using small and low cost hardware. You can bolt them to walls or leave them on window ledges. They don't have any user interface and their only job is to haul network traffic across the mesh and to enable peers to find each other via running bootstrap nodes for Tox and IPFS. Copy the image to a microSD card and insert it into the router, plug in an Atheros wifi dongle and power on. That should be all you need to do.
403
 </p>
405
 </p>
404
 </div>
406
 </div>
405
-<div id="outline-container-orgff96209" class="outline-4">
406
-<h4 id="orgff96209">Beaglebone Black</h4>
407
-<div class="outline-text-4" id="text-orgff96209">
407
+<div id="outline-container-org909807a" class="outline-4">
408
+<h4 id="org909807a">Beaglebone Black</h4>
409
+<div class="outline-text-4" id="text-org909807a">
408
 <div class="org-center">
410
 <div class="org-center">
409
 
411
 
410
 <div class="figure">
412
 <div class="figure">
441
 </div>
443
 </div>
442
 </div>
444
 </div>
443
 
445
 
444
-<div id="outline-container-org3279497" class="outline-2">
445
-<h2 id="org3279497">Building Disk Images</h2>
446
-<div class="outline-text-2" id="text-org3279497">
446
+<div id="outline-container-org08c02eb" class="outline-2">
447
+<h2 id="org08c02eb">Building Disk Images</h2>
448
+<div class="outline-text-2" id="text-org08c02eb">
447
 <p>
449
 <p>
448
 It's better not to trust images downloaded from random places on the interwebs. Chances are that unless you are in the web of trust of the above GPG signatures then they don't mean very much to you. If you actually want something trustworthy then build the images from scratch. It will take some time. Here's how to do it.
450
 It's better not to trust images downloaded from random places on the interwebs. Chances are that unless you are in the web of trust of the above GPG signatures then they don't mean very much to you. If you actually want something trustworthy then build the images from scratch. It will take some time. Here's how to do it.
449
 </p>
451
 </p>
499
 </p>
501
 </p>
500
 
502
 
501
 <div class="org-src-container">
503
 <div class="org-src-container">
502
-<pre><code class="src src-bash">sudo dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=myimagefile.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
504
+<pre><code class="src src-bash">sudo dd <span class="org-variable-name">if</span>=/dev/zero <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">count</span>=8
505
+sudo dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=myimagefile.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
503
 </code></pre>
506
 </code></pre>
504
 </div>
507
 </div>
505
 
508
 
530
 </div>
533
 </div>
531
 </div>
534
 </div>
532
 
535
 
533
-<div id="outline-container-org8da4b39" class="outline-2">
534
-<h2 id="org8da4b39">Customisation</h2>
535
-<div class="outline-text-2" id="text-org8da4b39">
536
+<div id="outline-container-org0dec35a" class="outline-2">
537
+<h2 id="org0dec35a">Customisation</h2>
538
+<div class="outline-text-2" id="text-org0dec35a">
536
 <p>
539
 <p>
537
 If you want to make your own specially branded version, such as for a particular event, then to change the default desktop backgrounds edit the images within <b>img/backgrounds</b> and to change the available avatars and desktop icons edit the images within <b>img/avatars</b>. Re-create disk images using the instructions shown previously.
540
 If you want to make your own specially branded version, such as for a particular event, then to change the default desktop backgrounds edit the images within <b>img/backgrounds</b> and to change the available avatars and desktop icons edit the images within <b>img/avatars</b>. Re-create disk images using the instructions shown previously.
538
 </p>
541
 </p>
542
 </p>
545
 </p>
543
 </div>
546
 </div>
544
 </div>
547
 </div>
545
-<div id="outline-container-org52b6ecb" class="outline-2">
546
-<h2 id="org52b6ecb">How to use it</h2>
547
-<div class="outline-text-2" id="text-org52b6ecb">
548
+<div id="outline-container-orgfce6a77" class="outline-2">
549
+<h2 id="orgfce6a77">How to use it</h2>
550
+<div class="outline-text-2" id="text-orgfce6a77">
548
 <p>
551
 <p>
549
 When you first boot from the USB drive the system will create some encryption keys, assign a unique network address to the system and then reboot itself. When that's done you should see a prompt asking for a username. This username just makes it easy for others to initially find you on the mesh and will appear in the list of users.
552
 When you first boot from the USB drive the system will create some encryption keys, assign a unique network address to the system and then reboot itself. When that's done you should see a prompt asking for a username. This username just makes it easy for others to initially find you on the mesh and will appear in the list of users.
550
 </p>
553
 </p>
554
 </p>
557
 </p>
555
 </div>
558
 </div>
556
 
559
 
557
-<div id="outline-container-org218c967" class="outline-3">
558
-<h3 id="org218c967">Boot trouble</h3>
559
-<div class="outline-text-3" id="text-org218c967">
560
+<div id="outline-container-org2a6eb8c" class="outline-3">
561
+<h3 id="org2a6eb8c">Boot trouble</h3>
562
+<div class="outline-text-3" id="text-org2a6eb8c">
560
 <p>
563
 <p>
561
 If the system doesn't boot and reports an error which includes <b>/dev/mapper/loop0p1</b> then reboot with <b>Ctrl-Alt-Del</b> and when you see the grub menu press <b>e</b> and manually change <b>/dev/mapper/loop0p1</b> to <b>/dev/sdb1</b>, then press <b>Ctrl-x</b>. If that doesn't work then reboot and try <b>/dev/sdc1</b> instead.
564
 If the system doesn't boot and reports an error which includes <b>/dev/mapper/loop0p1</b> then reboot with <b>Ctrl-Alt-Del</b> and when you see the grub menu press <b>e</b> and manually change <b>/dev/mapper/loop0p1</b> to <b>/dev/sdb1</b>, then press <b>Ctrl-x</b>. If that doesn't work then reboot and try <b>/dev/sdc1</b> instead.
562
 </p>
565
 </p>
566
 </p>
569
 </p>
567
 </div>
570
 </div>
568
 </div>
571
 </div>
569
-<div id="outline-container-org6c9bd07" class="outline-3">
570
-<h3 id="org6c9bd07">Set the Date</h3>
571
-<div class="outline-text-3" id="text-org6c9bd07">
572
+<div id="outline-container-org92cd6d5" class="outline-3">
573
+<h3 id="org92cd6d5">Set the Date</h3>
574
+<div class="outline-text-3" id="text-org92cd6d5">
572
 <p>
575
 <p>
573
 On the ordinary internet the date and time of your system would be set automatically via NTP. But this is not the internet and so you will need to manually ensure that your date and time settings are correct. You might need to periodically do this if your clock drifts. It's not essential that the time on your system be highly accurate, but if it drifts too far or goes back to epoch then things could become a little confusing in regard to the order of blog posts.
576
 On the ordinary internet the date and time of your system would be set automatically via NTP. But this is not the internet and so you will need to manually ensure that your date and time settings are correct. You might need to periodically do this if your clock drifts. It's not essential that the time on your system be highly accurate, but if it drifts too far or goes back to epoch then things could become a little confusing in regard to the order of blog posts.
574
 </p>
577
 </p>
578
 </p>
581
 </p>
579
 </div>
582
 </div>
580
 </div>
583
 </div>
581
-<div id="outline-container-org351f6a2" class="outline-3">
582
-<h3 id="org351f6a2">Check network status</h3>
583
-<div class="outline-text-3" id="text-org351f6a2">
584
+<div id="outline-container-org2aa12f0" class="outline-3">
585
+<h3 id="org2aa12f0">Check network status</h3>
586
+<div class="outline-text-3" id="text-org2aa12f0">
584
 <p>
587
 <p>
585
 Unlike with ordinary wifi, on the mesh you don't get a signal strength icon and so it's not simple to see if you have a good connection.
588
 Unlike with ordinary wifi, on the mesh you don't get a signal strength icon and so it's not simple to see if you have a good connection.
586
 </p>
589
 </p>
604
 </div>
607
 </div>
605
 </div>
608
 </div>
606
 
609
 
607
-<div id="outline-container-org90f8f7b" class="outline-3">
608
-<h3 id="org90f8f7b">Chat System</h3>
609
-<div class="outline-text-3" id="text-org90f8f7b">
610
+<div id="outline-container-org2f1dfa6" class="outline-3">
611
+<h3 id="org2f1dfa6">Chat System</h3>
612
+<div class="outline-text-3" id="text-org2f1dfa6">
610
 <p>
613
 <p>
611
 Ensure that you're within wifi range of at least one other mesh peer (could be a router or client) and then you should see that the <i>Chat</i> and <i>Other Users</i> icons appear. Select the users icon and you should see a list of users on the mesh. Select the <i>Chat</i> icon and once you are connected you should see the status light turn green. If after a few minutes you don't get the green status light then try closing and re-opening the Tox chat application. Select the plus button to add a friend and then copy and paste in a Tox ID from the users list.
614
 Ensure that you're within wifi range of at least one other mesh peer (could be a router or client) and then you should see that the <i>Chat</i> and <i>Other Users</i> icons appear. Select the users icon and you should see a list of users on the mesh. Select the <i>Chat</i> icon and once you are connected you should see the status light turn green. If after a few minutes you don't get the green status light then try closing and re-opening the Tox chat application. Select the plus button to add a friend and then copy and paste in a Tox ID from the users list.
612
 </p>
615
 </p>
665
 </div>
668
 </div>
666
 </div>
669
 </div>
667
 
670
 
668
-<div id="outline-container-orgb0ff834" class="outline-3">
669
-<h3 id="orgb0ff834">Sharing Files</h3>
670
-<div class="outline-text-3" id="text-orgb0ff834">
671
+<div id="outline-container-org75993b2" class="outline-3">
672
+<h3 id="org75993b2">Sharing Files</h3>
673
+<div class="outline-text-3" id="text-org75993b2">
671
 <p>
674
 <p>
672
 You can make files publicly available on the network simply by dragging and dropping them into the <i>Public</i> folder on the desktop. To view the files belonging to another user select the desktop icon called <i>Visit a site</i> and enter the username or Tox ID of the other user.
675
 You can make files publicly available on the network simply by dragging and dropping them into the <i>Public</i> folder on the desktop. To view the files belonging to another user select the desktop icon called <i>Visit a site</i> and enter the username or Tox ID of the other user.
673
 </p>
676
 </p>
682
 </div>
685
 </div>
683
 </div>
686
 </div>
684
 
687
 
685
-<div id="outline-container-org9f54fb7" class="outline-3">
686
-<h3 id="org9f54fb7">Blogging</h3>
687
-<div class="outline-text-3" id="text-org9f54fb7">
688
+<div id="outline-container-org86cab79" class="outline-3">
689
+<h3 id="org86cab79">Blogging</h3>
690
+<div class="outline-text-3" id="text-org86cab79">
688
 <p>
691
 <p>
689
 To create a blog post select the <i>Blog</i> icon on the desktop and then use the up and down cursor keys, space bar and enter key to add a new entry. Edit the title of the entry and add your text. You can also include photos if you wish - just copy them to the <b>CreateBlog/content/images</b> directory and then link to them as shown.
692
 To create a blog post select the <i>Blog</i> icon on the desktop and then use the up and down cursor keys, space bar and enter key to add a new entry. Edit the title of the entry and add your text. You can also include photos if you wish - just copy them to the <b>CreateBlog/content/images</b> directory and then link to them as shown.
690
 </p>
693
 </p>