瀏覽代碼

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

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

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

@@ -23,7 +23,7 @@ If you have a single board ARM computer which isn't one of the supported ones th
23 23
 Download the Armbian image for your board. It must be version 9 (Stretch), otherwise it won't work. Extract the image from its archive, then copy it to a microSD card:
24 24
 
25 25
 #+begin_src bash
26
-sudo dd bs=1M if=[Armbian .img file] of=/dev/sdX conv=fdatasync
26
+sudo dd bs=32M if=[Armbian .img file] of=/dev/sdX conv=fdatasync
27 27
 #+end_src
28 28
 
29 29
 Where */dev/sdX* is the path for the microSD drive on your system.

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

@@ -19,6 +19,7 @@
19 19
 #+ATTR_HTML: :border -1
20 20
 | [[What applications are supported?]]                                                          |
21 21
 | [[I don't have a static IP address. Can I still install this system?]]                        |
22
+| [[What are the best microSD cards to use?]]                                                   |
22 23
 | [[Why Freedombone and not FreedomBox?]]                                                       |
23 24
 | [[Why not support building images for Raspberry Pi?]]                                         |
24 25
 | [[Why use Tor? I've heard it's used by bad people]]                                           |
@@ -59,6 +60,8 @@
59 60
 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.
60 61
 
61 62
 The lack of a static IP address can be worked around by using a dynamic DNS service. Freedombone uses [[https://troglobit.com/inadyn.html][inadyn]] , which supports a variety of dynamic DNS providers.
63
+* What are the best microSD cards to use?
64
+There can be big differences in the performance of microSD cards, and the cheaper ones are almost invariably terrible and/or unusable. Sandisk and Samsung currently appear to be the better brands. You can find some performance benchmarks [[http://www.pidramble.com/wiki/benchmarks/microsd-cards][here]]. However, benchmarks like this only give a very rough idea of performance and they can vary significantly between individual cards even within the same brand.
62 65
 * Why Freedombone and not FreedomBox?
63 66
 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:
64 67
 

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

@@ -69,8 +69,8 @@ Now plug in the USB thumb drive, and do the same again. Notice which drive lette
69 69
 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*).
70 70
 
71 71
 #+begin_src bash
72
-dd if=/dev/zero of=/dev/sdX bs=1M count=8
73
-dd bs=1M if=myimagefile.img of=/dev/sdX conv=fdatasync
72
+dd if=/dev/zero of=/dev/sdX bs=32M count=8
73
+dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync
74 74
 #+end_src
75 75
 
76 76
 And wait. Again it will take a while to copy over. When that's done plug it into the laptop or netbook which you want to use as a server, power on and set the BIOS to boot from the USB stick.

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

@@ -129,7 +129,7 @@ unxz filename.img.xz
129 129
 Then copy it to a microSD card. Depending on your system you may need an adaptor to be able to do that.
130 130
 
131 131
 #+BEGIN_SRC bash
132
-sudo dd bs=1M if=filename.img of=/dev/sdX conv=fdatasync
132
+sudo dd bs=32M if=filename.img of=/dev/sdX conv=fdatasync
133 133
 #+END_SRC
134 134
 
135 135
 Where *sdX* is the microSD drive. You can check which drive is the microSD drive using:

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

@@ -19,7 +19,6 @@ The mesh system has the following capabilities:
19 19
  - Private and public sharing of files
20 20
  - Blogging
21 21
  - Collaborative editing of documents and presentations
22
- - Creating and broadcasting audio media/podcasts
23 22
  - Social network stream. Follow/unfollow other peers
24 23
  - No network administration required
25 24
  - No servers

+ 7
- 7
doc/EN/mesh_images.org 查看文件

@@ -41,8 +41,8 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-i386.img.xz
41 41
 wget https://freedombone.net/downloads/v31/freedombone-meshclient-i386.img.xz.sig
42 42
 gpg --verify freedombone-meshclient-i386.img.xz.sig
43 43
 unxz freedombone-meshclient-i386.img.xz
44
-sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
45
-sudo dd bs=1M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync
44
+sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8
45
+sudo dd bs=32M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync
46 46
 #+end_src
47 47
 
48 48
 To get a number of systems onto the mesh repeat the /dd/ command to create however many bootable USB drives you need.
@@ -55,8 +55,8 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-insecure-i386.
55 55
 wget https://freedombone.net/downloads/v31/freedombone-meshclient-insecure-i386.img.xz.sig
56 56
 gpg --verify freedombone-meshclient-insecure-i386.img.xz.sig
57 57
 unxz freedombone-meshclient-insecure-i386.img.xz
58
-sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
59
-sudo dd bs=1M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync
58
+sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8
59
+sudo dd bs=32M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync
60 60
 #+end_src
61 61
 
62 62
 ** Router images
@@ -75,7 +75,7 @@ gpg --verify freedombone-mesh_beaglebone-armhf.img.xz.sig
75 75
 sha256sum freedombone-mesh_beaglebone-armhf.img.xz
76 76
 ad8f22c0d46c98a80aa47b5809402971cf5cf26ebf587c59a667307b2386c3d2
77 77
 unxz freedombone-mesh_beaglebone-armhf.img.xz
78
-sudo dd bs=1M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync
78
+sudo dd bs=32M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync
79 79
 #+end_src
80 80
 
81 81
 If you have a few Beaglebone Blacks to use as routers then repeat the /dd/ command to create however many microSD cards you need.
@@ -119,8 +119,8 @@ Now plug in the USB thumb drive, and do the same again. Notice which drive lette
119 119
 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*).
120 120
 
121 121
 #+begin_src bash
122
-sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
123
-sudo dd bs=1M if=myimagefile.img of=/dev/sdX conv=fdatasync
122
+sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8
123
+sudo dd bs=32M if=myimagefile.img of=/dev/sdX conv=fdatasync
124 124
 #+end_src
125 125
 
126 126
 And wait. Again it will take a while to copy over. When that's done plug it into the laptop or netbook which you want to use on the mesh, power on and set the BIOS to boot from the USB stick.

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

@@ -31,7 +31,7 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden
31 31
 
32 32
 #+BEGIN_SRC bash
33 33
 unxz downloadedimagefile.img.xz
34
-dd bs=1M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync
34
+dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync
35 35
 #+END_SRC
36 36
 
37 37
 And wait. It will take a while to copy over. When that's done you might want to increase the partition size on the drive, using a tool such as [[http://gparted.org][Gparted]]. Whether you need to do that will depend upon how many apps you intend to install and how much data they will store.

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

@@ -39,7 +39,7 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden
39 39
 
40 40
 #+BEGIN_SRC bash
41 41
 unxz downloadedimagefile.img.xz
42
-dd bs=1M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync
42
+dd bs=32M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync
43 43
 #+END_SRC
44 44
 
45 45
 And wait. It will take a while to copy over. When that's done you might want to increase the partition size on the drive, using a tool such as [[http://gparted.org][Gparted]]. Whether you need to do that will depend upon how many apps you intend to install and how much data they will store.

+ 2
- 2
doc/EN/socialinstance.org 查看文件

@@ -31,8 +31,8 @@ wget https://freedombone.net/downloads/v31/freedombone-pleroma-amd64.img.xz
31 31
 wget https://freedombone.net/downloads/v31/freedombone-pleroma-amd64.img.xz.sig
32 32
 gpg --verify freedombone-pleroma-amd64.img.xz.sig
33 33
 unxz freedombone-pleroma-amd64.img.xz
34
-sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
35
-sudo dd bs=1M if=freedombone-pleroma-amd64.img of=/dev/sdX conv=fdatasync
34
+sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8
35
+sudo dd bs=32M if=freedombone-pleroma-amd64.img of=/dev/sdX conv=fdatasync
36 36
 #+end_src
37 37
 
38 38
 Also note that if the laptop has a removable SSD drive it's possible to copy the image directly to that if you have enough equipment.

+ 24
- 4
src/freedombone-controlpanel 查看文件

@@ -1803,6 +1803,24 @@ function wifi_enable {
1803 1803
     "${PROJECT_NAME}-wifi" --disable $disable_wifi
1804 1804
 }
1805 1805
 
1806
+function performance_benchmarks {
1807
+    clear
1808
+
1809
+    if [ ! -f /sbin/hdparm ]; then
1810
+        apt-get -yq install hdparm
1811
+        clear
1812
+    fi
1813
+
1814
+    test_drive=/dev/sda1
1815
+    if [ -f /dev/mmcblk0 ]; then
1816
+        test_drive=/dev/mmcblk0
1817
+    fi
1818
+    echo ''
1819
+    echo $"Testing read speed of drive $test_drive"
1820
+    hdparm -tT $test_drive
1821
+    any_key
1822
+}
1823
+
1806 1824
 function add_clacks {
1807 1825
     clacks=
1808 1826
 
@@ -1929,8 +1947,9 @@ function menu_top_level {
1929 1947
            12 $"Wifi menu"
1930 1948
            13 $"Add Clacks"
1931 1949
            14 $"Check for updates"
1932
-           15 $"Power off the system"
1933
-           16 $"Restart the system")
1950
+           15 $"Performance Benchmarks"
1951
+           16 $"Power off the system"
1952
+           17 $"Restart the system")
1934 1953
 
1935 1954
         # shellcheck disable=SC2068
1936 1955
         selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"Administrator Control Panel" --menu $"Choose an operation, or ESC to exit:" 24 60 24 "${W[@]}" 3>&2 2>&1 1>&3)
@@ -1959,8 +1978,9 @@ function menu_top_level {
1959 1978
             12) menu_wifi;;
1960 1979
             13) add_clacks;;
1961 1980
             14) check_for_updates;;
1962
-            15) shut_down_system;;
1963
-            16) restart_system;;
1981
+            15) performance_benchmarks;;
1982
+            16) shut_down_system;;
1983
+            17) restart_system;;
1964 1984
         esac
1965 1985
     done
1966 1986
 }

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

@@ -698,8 +698,8 @@ if [[ $IMAGE_TYPE != "qemu"* ]]; then
698 698
     fi
699 699
     echo ''
700 700
     echo "    unxz -k ${PROJECT_NAME}*.img.xz"
701
-    echo '    sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8'
702
-    echo "    sudo dd bs=1M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync"
701
+    echo '    sudo dd if=/dev/zero of=/dev/sdX bs=32M count=8'
702
+    echo "    sudo dd bs=32M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync"
703 703
     echo ''
704 704
 fi
705 705
 

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

@@ -1719,7 +1719,7 @@ image_setup_utils() {
1719 1719
     chroot "$rootdir" apt-get -yq dist-upgrade
1720 1720
     chroot "$rootdir" apt-get -yq install ca-certificates
1721 1721
     chroot "$rootdir" apt-get -yq install apt-utils
1722
-    chroot "$rootdir" apt-get -yq install shellcheck
1722
+    chroot "$rootdir" apt-get -yq install shellcheck hdparm
1723 1723
 
1724 1724
     if [[ "$ARCHITECTURE" == 'amd64' ]]; then
1725 1725
         chroot "$rootdir" apt-get -yq install linux-image-amd64

+ 24
- 49
src/freedombone-logging 查看文件

@@ -90,56 +90,31 @@ function turn_logging_off {
90 90
     done
91 91
 }
92 92
 
93
-function turn_off_rsys_logging {
94
-    if ! grep -q '/var/log/auth.log' /etc/rsyslog.conf; then
95
-        if ! grep -q '/var/log/kern.log' /etc/rsyslog.conf; then
96
-            return
97
-        fi
98
-    fi
99
-    sed -i 's|mail,news.none.*|mail,news.none      /dev/null|g' /etc/rsyslog.conf
100
-    sed -i 's|auth,authpriv.\*.*|auth,authpriv.\*         /dev/null|g' /etc/rsyslog.conf
101
-    sed -i 's|mail.info.*|mail.info            /dev/null|g' /etc/rsyslog.conf
102
-    sed -i 's|mail.warn.*|mail.warn            /dev/null|g' /etc/rsyslog.conf
103
-    sed -i 's|mail.err.*|mail.err            /dev/null|g' /etc/rsyslog.conf
104
-    sed -i 's|daemon.\*.*|daemon.\*              /dev/null|g' /etc/rsyslog.conf
105
-    sed -i 's|mail.\*.*|mail.\*              /dev/null|g' /etc/rsyslog.conf
106
-    sed -i 's|user.\*.*|user.\*              /dev/null|g' /etc/rsyslog.conf
107
-    sed -i 's|kern.\*.*|kern.\*              /dev/null|g' /etc/rsyslog.conf
108
-    sed -i 's|news.none;mail.none.*|news.none;mail.none /dev/null|g' /etc/rsyslog.conf
109
-    sed -i 's|\*.\*;auth,authpriv.none.*|\*.\*;auth,authpriv.none      /dev/null|g' /etc/rsyslog.conf
110
-    sed -i 's|#cron.\*|cron.\*|g' /etc/rsyslog.conf
111
-    sed -i 's|cron.\*.*|cron.\*             /dev/null|g' /etc/rsyslog.conf
112
-    $REMOVE_FILES_COMMAND /var/log/wtmp*
113
-    $REMOVE_FILES_COMMAND /var/log/debug*
114
-    $REMOVE_FILES_COMMAND /var/log/cron.*
115
-    $REMOVE_FILES_COMMAND /var/log/auth.*
116
-    $REMOVE_FILES_COMMAND /var/log/mail.*
117
-    $REMOVE_FILES_COMMAND /var/log/daemon.*
118
-    $REMOVE_FILES_COMMAND /var/log/user.*
119
-    $REMOVE_FILES_COMMAND /var/log/messages*
120
-    $REMOVE_FILES_COMMAND /var/log/syslog*
121
-    $REMOVE_FILES_COMMAND /var/log/alternatives*
122
-    $REMOVE_FILES_COMMAND /var/log/faillog
123
-    $REMOVE_FILES_COMMAND /var/log/kern.log*
124
-}
125
-
126 93
 function turn_on_rsys_logging {
127
-    if grep -q '/var/log/auth.log' /etc/rsyslog.conf; then
128
-        return
129
-    fi
130
-    sed -i 's|mail,news.none.*|mail,news.none      -/var/log/messages|g' /etc/rsyslog.conf
131
-    sed -i 's|auth,authpriv.\*.*|auth,authpriv.\*         /var/log/auth.log|g' /etc/rsyslog.conf
132
-    sed -i 's|mail.info.*|mail.info            -/var/log/mail.info|g' /etc/rsyslog.conf
133
-    sed -i 's|mail.warn.*|mail.warn            -/var/log/mail.warn|g' /etc/rsyslog.conf
134
-    sed -i 's|mail.err.*|mail.err            /var/log/mail.err|g' /etc/rsyslog.conf
135
-    sed -i 's|daemon.\*.*|daemon.\*              -/var/log/daemon.log|g' /etc/rsyslog.conf
136
-    sed -i 's|mail.\*.*|mail.\*              -/var/log/mail.log|g' /etc/rsyslog.conf
137
-    sed -i 's|user.\*.*|user.\*              -/var/log/user.log|g' /etc/rsyslog.conf
138
-    sed -i 's|kern.\*.*|kern.\*              -/var/log/kern.log|g' /etc/rsyslog.conf
139
-    sed -i 's|news.none;mail.none.*|news.none;mail.none -/var/log/debug|g' /etc/rsyslog.conf
140
-    sed -i 's|\*.\*;auth,authpriv.none.*|\*.\*;auth,authpriv.none      -/var/log/syslog|g' /etc/rsyslog.conf
141
-    sed -i 's|#cron.\*|cron.\*|g' /etc/rsyslog.conf
142
-    sed -i 's|cron.\*.*|cron.\*             /var/log/cron.log|g' /etc/rsyslog.conf
94
+    save_rsys_header
95
+
96
+    { echo 'auth,authpriv.*         /var/log/auth.log';
97
+      echo '*.*;auth,authpriv.none -/var/log/syslog';
98
+      echo 'cron.*                  /var/log/cron.log';
99
+      echo 'daemon.*               -/var/log/daemon.log';
100
+      echo 'kern.*                 -/var/log/kern.log';
101
+      echo 'lpr.*                  -/var/log/lpr.log';
102
+      echo 'mail.*                 -/var/log/mail.log';
103
+      echo 'user.*                 -/var/log/user.log';
104
+      echo '';
105
+      echo 'mail.info              -/var/log/mail.info';
106
+      echo 'mail.warn              -/var/log/mail.warn';
107
+      echo 'mail.err                /var/log/mail.err';
108
+      echo '';
109
+      echo "*.=debug;\\";
110
+      echo "        auth,authpriv.none;\\";
111
+      echo '        news.none;mail.none -/var/log/debug';
112
+      echo "*.=info;*.=notice;*.=warn;\\";
113
+      echo "        auth,authpriv.none;\\";
114
+      echo "        cron,daemon.none;\\";
115
+      echo '        mail,news.none      -/var/log/messages';
116
+      echo '';
117
+      echo '*.emerg                         :omusrmsg:*'; } >> /etc/rsyslog.conf
143 118
 }
144 119
 
145 120
 if [ ! "$1" ]; then

+ 91
- 23
src/freedombone-utils-setup 查看文件

@@ -223,30 +223,53 @@ function install_backports_kernel {
223 223
     fi
224 224
 }
225 225
 
226
+function save_rsys_header {
227
+    { echo "";
228
+      echo "#################";
229
+      echo "#### MODULES ####";
230
+      echo "#################";
231
+      echo '';
232
+      echo 'module(load="imuxsock")';
233
+      echo 'module(load="imklog")';
234
+      echo '';
235
+      echo '###########################';
236
+      echo '#### GLOBAL DIRECTIVES ####';
237
+      echo '###########################';
238
+      echo '';
239
+      echo "\$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat";
240
+      echo '';
241
+      echo "\$FileOwner root";
242
+      echo "\$FileGroup adm";
243
+      echo "\$FileCreateMode 0640";
244
+      echo "\$DirCreateMode 0755";
245
+      echo "\$Umask 0022";
246
+      echo '';
247
+      echo "\$WorkDirectory /var/spool/rsyslog";
248
+      echo '';
249
+      echo "\$IncludeConfig /etc/rsyslog.d/*.conf";
250
+      echo '';
251
+      echo '###############';
252
+      echo '#### RULES ####';
253
+      echo '###############';
254
+      echo ''; } > /etc/rsyslog.conf
255
+}
256
+
226 257
 function turn_off_rsys_logging {
227
-    if grep -q '/dev/null' /etc/rsyslog.conf; then
228
-        return
229
-    fi
230
-    sed -i 's|mail,news.none.*|mail,news.none      /dev/null|g' /etc/rsyslog.conf
231
-    sed -i 's|auth,authpriv.\*.*|auth,authpriv.\*         /dev/null|g' /etc/rsyslog.conf
232
-    sed -i 's|mail.info.*|mail.info            /dev/null|g' /etc/rsyslog.conf
233
-    sed -i 's|mail.warn.*|mail.warn            /dev/null|g' /etc/rsyslog.conf
234
-    sed -i 's|mail.err.*|mail.err            /dev/null|g' /etc/rsyslog.conf
235
-    sed -i 's|daemon.\*.*|daemon.\*              /dev/null|g' /etc/rsyslog.conf
236
-    sed -i 's|mail.\*.*|mail.\*              /dev/null|g' /etc/rsyslog.conf
237
-    sed -i 's|user.\*.*|user.\*              /dev/null|g' /etc/rsyslog.conf
238
-    sed -i 's|news.none;mail.none.*|news.none;mail.none /dev/null|g' /etc/rsyslog.conf
239
-    sed -i 's|\*.\*;auth,authpriv.none.*|\*.\*;auth,authpriv.none      /dev/null|g' /etc/rsyslog.conf
240
-    sed -i 's|#cron.\*|cron.\*|g' /etc/rsyslog.conf
241
-    sed -i 's|cron.\*.*|cron.\*             /dev/null|g' /etc/rsyslog.conf
242
-    shred -zu /var/log/wtmp*
243
-    shred -zu /var/log/debug*
244
-    shred -zu /var/log/cron.*
245
-    shred -zu /var/log/auth.*
246
-    shred -zu /var/log/mail.*
247
-    shred -zu /var/log/daemon.*
248
-    shred -zu /var/log/user.*
249
-    shred -zu /var/log/messages*
258
+    save_rsys_header
259
+    echo '*.*     ~' >> /etc/rsyslog.conf
260
+
261
+    rm -rf /var/log/wtmp*
262
+    rm -rf /var/log/debug*
263
+    rm -rf /var/log/cron.*
264
+    rm -rf /var/log/auth.*
265
+    rm -rf /var/log/mail.*
266
+    rm -rf /var/log/daemon.*
267
+    rm -rf /var/log/user.*
268
+    rm -rf /var/log/messages*
269
+    rm -rf /var/log/syslog*
270
+    rm -rf /var/log/alternatives*
271
+    rm -rf /var/log/faillog
272
+    rm -rf /var/log/kern.log*
250 273
 }
251 274
 
252 275
 function initial_setup {
@@ -794,6 +817,48 @@ function install_shellcheck {
794 817
     apt-get -yq install shellcheck
795 818
 }
796 819
 
820
+function microsd_card_optimisations {
821
+    # These values can improve performance on microSD cards
822
+
823
+    apt-get -yq install hdparm
824
+
825
+    printf '#!/bin/bash\n' > /usr/bin/enable_optimisations
826
+
827
+    if [ -f /sys/devices/virtual/bdi/179:0/read_ahead_kb ]; then
828
+        echo -n '4096' > /sys/devices/virtual/bdi/179:0/read_ahead_kb
829
+        echo "echo -n '4096' > /sys/devices/virtual/bdi/179:0/read_ahead_kb" >> /usr/bin/enable_optimisations
830
+    fi
831
+
832
+    if [ -f /proc/sys/vm/dirty_expire_centisecs ]; then
833
+        echo -n '100' > /proc/sys/vm/dirty_expire_centisecs
834
+        echo "echo -n '100' > /proc/sys/vm/dirty_expire_centisecs" >> /usr/bin/enable_optimisations
835
+    fi
836
+
837
+    if [ -f /proc/sys/vm/dirty_writeback_centisecs ]; then
838
+        echo -n '100' > /proc/sys/vm/dirty_writeback_centisecs
839
+        echo "echo -n '100' > /proc/sys/vm/dirty_writeback_centisecs" >> /usr/bin/enable_optimisations
840
+    fi
841
+
842
+    chmod +x /usr/bin/enable_optimisations
843
+
844
+    { echo '[Unit]';
845
+      echo "Description=${PROJECT_NAME} optimisations";
846
+      echo 'After=syslog.target';
847
+      echo 'After=network.target';
848
+      echo 'After=remote-fs.target';
849
+      echo '';
850
+      echo '[Service]';
851
+      echo 'Type=simple';
852
+      echo 'User=root';
853
+      echo 'Group=root';
854
+      echo 'WorkingDirectory=/root';
855
+      echo 'ExecStart=/usr/bin/enable_optimisations';
856
+      echo '';
857
+      echo '[Install]';
858
+      echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/optimisations.service
859
+      systemctl enable optimisations
860
+}
861
+
797 862
 function setup_utils {
798 863
     read_config_param "PROJECT_REPO"
799 864
     write_config_param "PROJECT_REPO" "$PROJECT_REPO"
@@ -816,6 +881,9 @@ function setup_utils {
816 881
     function_check separate_tmp_filesystem
817 882
     separate_tmp_filesystem 150
818 883
 
884
+    function_check microsd_card_optimisations
885
+    microsd_card_optimisations
886
+
819 887
     function_check proc_filesystem_settings
820 888
     proc_filesystem_settings
821 889
 

+ 122
- 45
website/EN/armbian.html 查看文件

@@ -3,26 +3,33 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<title></title>
7
-<!-- 2018-04-12 Thu 14:28 -->
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="Installing Freedombone on Armbian"
6
+<!-- 2018-04-21 Sat 14:58 -->
7
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
+<meta name="viewport" content="width=device-width, initial-scale=1" />
9
+<title>&lrm;</title>
10
+<meta name="generator" content="Org mode" />
11
+<meta name="author" content="Bob Mottram" />
12
+<meta name="description" content="Installing Freedombone on Armbian"
12 13
  />
13
-<meta  name="keywords" content="freedombone, debian, armbian, sbc" />
14
+<meta name="keywords" content="freedombone, debian, armbian, sbc" />
14 15
 <style type="text/css">
15 16
  <!--/*--><![CDATA[/*><!--*/
16
-  .title  { text-align: center; }
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; }
17 23
   .todo   { font-family: monospace; color: red; }
18
-  .done   { color: green; }
24
+  .done   { font-family: monospace; color: green; }
25
+  .priority { font-family: monospace; color: orange; }
19 26
   .tag    { background-color: #eee; font-family: monospace;
20 27
             padding: 2px; font-size: 80%; font-weight: normal; }
21 28
   .timestamp { color: #bebebe; }
22 29
   .timestamp-kwd { color: #5f9ea0; }
23
-  .right  { margin-left: auto; margin-right: 0px;  text-align: right; }
24
-  .left   { margin-left: 0px;  margin-right: auto; text-align: left; }
25
-  .center { margin-left: auto; margin-right: auto; text-align: center; }
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; }
26 33
   .underline { text-decoration: underline; }
27 34
   #postamble p, #preamble p { font-size: 90%; margin: .2em; }
28 35
   p.verse { margin-left: 3%; }
@@ -49,27 +56,111 @@
49 56
     border: 1px solid black;
50 57
   }
51 58
   pre.src:hover:before { display: inline;}
52
-  pre.src-sh:before    { content: 'sh'; }
53
-  pre.src-bash:before  { content: 'sh'; }
59
+  /* Languages per Org manual */
60
+  pre.src-asymptote:before { content: 'Asymptote'; }
61
+  pre.src-awk:before { content: 'Awk'; }
62
+  pre.src-C:before { content: 'C'; }
63
+  /* pre.src-C++ doesn't work in CSS */
64
+  pre.src-clojure:before { content: 'Clojure'; }
65
+  pre.src-css:before { content: 'CSS'; }
66
+  pre.src-D:before { content: 'D'; }
67
+  pre.src-ditaa:before { content: 'ditaa'; }
68
+  pre.src-dot:before { content: 'Graphviz'; }
69
+  pre.src-calc:before { content: 'Emacs Calc'; }
54 70
   pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
55
-  pre.src-R:before     { content: 'R'; }
56
-  pre.src-perl:before  { content: 'Perl'; }
57
-  pre.src-java:before  { content: 'Java'; }
58
-  pre.src-sql:before   { content: 'SQL'; }
71
+  pre.src-fortran:before { content: 'Fortran'; }
72
+  pre.src-gnuplot:before { content: 'gnuplot'; }
73
+  pre.src-haskell:before { content: 'Haskell'; }
74
+  pre.src-hledger:before { content: 'hledger'; }
75
+  pre.src-java:before { content: 'Java'; }
76
+  pre.src-js:before { content: 'Javascript'; }
77
+  pre.src-latex:before { content: 'LaTeX'; }
78
+  pre.src-ledger:before { content: 'Ledger'; }
79
+  pre.src-lisp:before { content: 'Lisp'; }
80
+  pre.src-lilypond:before { content: 'Lilypond'; }
81
+  pre.src-lua:before { content: 'Lua'; }
82
+  pre.src-matlab:before { content: 'MATLAB'; }
83
+  pre.src-mscgen:before { content: 'Mscgen'; }
84
+  pre.src-ocaml:before { content: 'Objective Caml'; }
85
+  pre.src-octave:before { content: 'Octave'; }
86
+  pre.src-org:before { content: 'Org mode'; }
87
+  pre.src-oz:before { content: 'OZ'; }
88
+  pre.src-plantuml:before { content: 'Plantuml'; }
89
+  pre.src-processing:before { content: 'Processing.js'; }
90
+  pre.src-python:before { content: 'Python'; }
91
+  pre.src-R:before { content: 'R'; }
92
+  pre.src-ruby:before { content: 'Ruby'; }
93
+  pre.src-sass:before { content: 'Sass'; }
94
+  pre.src-scheme:before { content: 'Scheme'; }
95
+  pre.src-screen:before { content: 'Gnu Screen'; }
96
+  pre.src-sed:before { content: 'Sed'; }
97
+  pre.src-sh:before { content: 'shell'; }
98
+  pre.src-sql:before { content: 'SQL'; }
99
+  pre.src-sqlite:before { content: 'SQLite'; }
100
+  /* additional languages in org.el's org-babel-load-languages alist */
101
+  pre.src-forth:before { content: 'Forth'; }
102
+  pre.src-io:before { content: 'IO'; }
103
+  pre.src-J:before { content: 'J'; }
104
+  pre.src-makefile:before { content: 'Makefile'; }
105
+  pre.src-maxima:before { content: 'Maxima'; }
106
+  pre.src-perl:before { content: 'Perl'; }
107
+  pre.src-picolisp:before { content: 'Pico Lisp'; }
108
+  pre.src-scala:before { content: 'Scala'; }
109
+  pre.src-shell:before { content: 'Shell Script'; }
110
+  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
111
+  /* additional language identifiers per "defun org-babel-execute"
112
+       in ob-*.el */
113
+  pre.src-cpp:before  { content: 'C++'; }
114
+  pre.src-abc:before  { content: 'ABC'; }
115
+  pre.src-coq:before  { content: 'Coq'; }
116
+  pre.src-groovy:before  { content: 'Groovy'; }
117
+  /* additional language identifiers from org-babel-shell-names in
118
+     ob-shell.el: ob-shell is the only babel language using a lambda to put
119
+     the execution function name together. */
120
+  pre.src-bash:before  { content: 'bash'; }
121
+  pre.src-csh:before  { content: 'csh'; }
122
+  pre.src-ash:before  { content: 'ash'; }
123
+  pre.src-dash:before  { content: 'dash'; }
124
+  pre.src-ksh:before  { content: 'ksh'; }
125
+  pre.src-mksh:before  { content: 'mksh'; }
126
+  pre.src-posh:before  { content: 'posh'; }
127
+  /* Additional Emacs modes also supported by the LaTeX listings package */
128
+  pre.src-ada:before { content: 'Ada'; }
129
+  pre.src-asm:before { content: 'Assembler'; }
130
+  pre.src-caml:before { content: 'Caml'; }
131
+  pre.src-delphi:before { content: 'Delphi'; }
132
+  pre.src-html:before { content: 'HTML'; }
133
+  pre.src-idl:before { content: 'IDL'; }
134
+  pre.src-mercury:before { content: 'Mercury'; }
135
+  pre.src-metapost:before { content: 'MetaPost'; }
136
+  pre.src-modula-2:before { content: 'Modula-2'; }
137
+  pre.src-pascal:before { content: 'Pascal'; }
138
+  pre.src-ps:before { content: 'PostScript'; }
139
+  pre.src-prolog:before { content: 'Prolog'; }
140
+  pre.src-simula:before { content: 'Simula'; }
141
+  pre.src-tcl:before { content: 'tcl'; }
142
+  pre.src-tex:before { content: 'TeX'; }
143
+  pre.src-plain-tex:before { content: 'Plain TeX'; }
144
+  pre.src-verilog:before { content: 'Verilog'; }
145
+  pre.src-vhdl:before { content: 'VHDL'; }
146
+  pre.src-xml:before { content: 'XML'; }
147
+  pre.src-nxml:before { content: 'XML'; }
148
+  /* add a generic configuration mode; LaTeX export needs an additional
149
+     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
150
+  pre.src-conf:before { content: 'Configuration File'; }
59 151
 
60 152
   table { border-collapse:collapse; }
61 153
   caption.t-above { caption-side: top; }
62 154
   caption.t-bottom { caption-side: bottom; }
63 155
   td, th { vertical-align:top;  }
64
-  th.right  { text-align: center;  }
65
-  th.left   { text-align: center;   }
66
-  th.center { text-align: center; }
67
-  td.right  { text-align: right;  }
68
-  td.left   { text-align: left;   }
69
-  td.center { text-align: center; }
156
+  th.org-right  { text-align: center;  }
157
+  th.org-left   { text-align: center;   }
158
+  th.org-center { text-align: center; }
159
+  td.org-right  { text-align: right;  }
160
+  td.org-left   { text-align: left;   }
161
+  td.org-center { text-align: center; }
70 162
   dt { font-weight: bold; }
71
-  .footpara:nth-child(2) { display: inline; }
72
-  .footpara { display: block; }
163
+  .footpara { display: inline; }
73 164
   .footdef  { margin-bottom: 1em; }
74 165
   .figure { padding: 1em; }
75 166
   .figure p { text-align: center; }
@@ -89,6 +180,7 @@
89 180
     { font-size: 10px; font-weight: bold; white-space: nowrap; }
90 181
   .org-info-js_search-highlight
91 182
     { background-color: #ffff00; color: #000000; font-weight: bold; }
183
+  .org-svg { width: 90%; }
92 184
   /*]]>*/-->
93 185
 </style>
94 186
 <link rel="stylesheet" type="text/css" href="freedombone.css" />
@@ -97,7 +189,7 @@
97 189
 @licstart  The following is the entire license notice for the
98 190
 JavaScript code in this tag.
99 191
 
100
-Copyright (C) 2012-2013 Free Software Foundation, Inc.
192
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
101 193
 
102 194
 The JavaScript code in this tag is free software: you can
103 195
 redistribute it and/or modify it under the terms of the GNU
@@ -144,7 +236,6 @@ for the JavaScript code in this tag.
144 236
 <a name="top" id="top"></a>
145 237
 </div>
146 238
 <div id="content">
147
-<h1 class="title"></h1>
148 239
 
149 240
 <div class="figure">
150 241
 <p><img src="images/logo.png" alt="logo.png" width="80%" height="10%" align="center" />
@@ -152,12 +243,7 @@ for the JavaScript code in this tag.
152 243
 </div>
153 244
 
154 245
 
155
-<div class="export">
156
-<p>
157
-&lt;center&gt;&lt;h1&gt;Installing on Armbian&lt;/h1&gt;&lt;/center&gt;
158
-</p>
159
-
160
-</div>
246
+<center><h1>Installing on Armbian</h1></center>
161 247
 
162 248
 <blockquote>
163 249
 <p>
@@ -174,8 +260,7 @@ Download the Armbian image for your board. It must be version 9 (Stretch), other
174 260
 </p>
175 261
 
176 262
 <div class="org-src-container">
177
-
178
-<pre class="src src-bash">sudo dd bs=1M if=[Armbian .img file] of=/dev/sdX conv=fdatasync
263
+<pre class="src src-bash">sudo dd <span class="org-variable-name">bs</span>=32M <span class="org-variable-name">if</span>=[Armbian .img file] <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
179 264
 </pre>
180 265
 </div>
181 266
 
@@ -200,7 +285,6 @@ Once you know the local IP address of your ARM board then you can log into it wi
200 285
 </p>
201 286
 
202 287
 <div class="org-src-container">
203
-
204 288
 <pre class="src src-bash">ssh root@[local IP address]
205 289
 </pre>
206 290
 </div>
@@ -220,7 +304,6 @@ When the user account is created type <b>exit</b> to leave the ssh session then
220 304
 </p>
221 305
 
222 306
 <div class="org-src-container">
223
-
224 307
 <pre class="src src-bash">ssh myusername@[local IP address]
225 308
 </pre>
226 309
 </div>
@@ -230,7 +313,6 @@ Become the root user:
230 313
 </p>
231 314
 
232 315
 <div class="org-src-container">
233
-
234 316
 <pre class="src src-bash">sudo su
235 317
 </pre>
236 318
 </div>
@@ -240,10 +322,9 @@ Then clone the Freedombone repository and checkout the stretch development branc
240 322
 </p>
241 323
 
242 324
 <div class="org-src-container">
243
-
244 325
 <pre class="src src-bash">apt-get -y install git dialog build-essential
245 326
 git clone https://github.com/bashrc/freedombone
246
-cd freedombone
327
+<span class="org-builtin">cd</span> freedombone
247 328
 git checkout stretch
248 329
 </pre>
249 330
 </div>
@@ -253,7 +334,6 @@ Install the Freedombone commands:
253 334
 </p>
254 335
 
255 336
 <div class="org-src-container">
256
-
257 337
 <pre class="src src-bash">make install
258 338
 </pre>
259 339
 </div>
@@ -263,7 +343,6 @@ And now you can begin installing the Freedombone system. There are two ways of d
263 343
 </p>
264 344
 
265 345
 <div class="org-src-container">
266
-
267 346
 <pre class="src src-bash">freedombone menuconfig
268 347
 </pre>
269 348
 </div>
@@ -273,7 +352,6 @@ Alternatively, if you don't own a domain name, don't have administrator access t
273 352
 </p>
274 353
 
275 354
 <div class="org-src-container">
276
-
277 355
 <pre class="src src-bash">freedombone menuconfig-onion
278 356
 </pre>
279 357
 </div>
@@ -283,7 +361,6 @@ You will then be taken through a few questions and the system will install. Afte
283 361
 </p>
284 362
 
285 363
 <div class="org-src-container">
286
-
287 364
 <pre class="src src-bash">ssh myusername@freedombone.local -p 2222
288 365
 </pre>
289 366
 </div>

+ 152
- 140
website/EN/faq.html 查看文件

@@ -3,7 +3,7 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<!-- 2018-04-14 Sat 15:14 -->
6
+<!-- 2018-04-21 Sat 17:21 -->
7 7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8 8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
9 9
 <title>&lrm;</title>
@@ -262,151 +262,155 @@ for the JavaScript code in this tag.
262 262
 </colgroup>
263 263
 <tbody>
264 264
 <tr>
265
-<td class="org-left"><a href="#org2ecea54">What applications are supported?</a></td>
265
+<td class="org-left"><a href="#org9ac9dc9">What applications are supported?</a></td>
266 266
 </tr>
267 267
 
268 268
 <tr>
269
-<td class="org-left"><a href="#orgaa0a705">I don't have a static IP address. Can I still install this system?</a></td>
269
+<td class="org-left"><a href="#org57cb5f7">I don't have a static IP address. Can I still install this system?</a></td>
270 270
 </tr>
271 271
 
272 272
 <tr>
273
-<td class="org-left"><a href="#org340be8a">Why Freedombone and not FreedomBox?</a></td>
273
+<td class="org-left"><a href="#org2ec231a">What are the best microSD cards to use?</a></td>
274 274
 </tr>
275 275
 
276 276
 <tr>
277
-<td class="org-left"><a href="#orgccf5702">Why not support building images for Raspberry Pi?</a></td>
277
+<td class="org-left"><a href="#orgf562031">Why Freedombone and not FreedomBox?</a></td>
278 278
 </tr>
279 279
 
280 280
 <tr>
281
-<td class="org-left"><a href="#org2af436d">Why use Tor? I've heard it's used by bad people</a></td>
281
+<td class="org-left"><a href="#orgba4b2dc">Why not support building images for Raspberry Pi?</a></td>
282 282
 </tr>
283 283
 
284 284
 <tr>
285
-<td class="org-left"><a href="#org3981923">How is Tor integrated with Freedombone?</a></td>
285
+<td class="org-left"><a href="#org8b22f5c">Why use Tor? I've heard it's used by bad people</a></td>
286 286
 </tr>
287 287
 
288 288
 <tr>
289
-<td class="org-left"><a href="#orgb732986">Can I add a clearnet domain to an onion build?</a></td>
289
+<td class="org-left"><a href="#orgbaa6623">How is Tor integrated with Freedombone?</a></td>
290 290
 </tr>
291 291
 
292 292
 <tr>
293
-<td class="org-left"><a href="#orgb1382c0">Why use Github?</a></td>
293
+<td class="org-left"><a href="#orgbd702fd">Can I add a clearnet domain to an onion build?</a></td>
294 294
 </tr>
295 295
 
296 296
 <tr>
297
-<td class="org-left"><a href="#org8d5c33e">After using nmap or other scanning tool I can no longer log in</a></td>
297
+<td class="org-left"><a href="#org4d09a2a">Why use Github?</a></td>
298 298
 </tr>
299 299
 
300 300
 <tr>
301
-<td class="org-left"><a href="#orgcaa8f8c">Should I upload my GPG keys to keybase.io?</a></td>
301
+<td class="org-left"><a href="#org82e9020">After using nmap or other scanning tool I can no longer log in</a></td>
302 302
 </tr>
303 303
 
304 304
 <tr>
305
-<td class="org-left"><a href="#org787d325">Keys and emails should not be stored on servers. Why do you do that?</a></td>
305
+<td class="org-left"><a href="#org6838add">Should I upload my GPG keys to keybase.io?</a></td>
306 306
 </tr>
307 307
 
308 308
 <tr>
309
-<td class="org-left"><a href="#org45d4472">Why can't I access my .onion site with a Tor browser?</a></td>
309
+<td class="org-left"><a href="#orgefe80fb">Keys and emails should not be stored on servers. Why do you do that?</a></td>
310 310
 </tr>
311 311
 
312 312
 <tr>
313
-<td class="org-left"><a href="#org000c926">What is the best hardware to run this system on?</a></td>
313
+<td class="org-left"><a href="#org7659367">Why can't I access my .onion site with a Tor browser?</a></td>
314 314
 </tr>
315 315
 
316 316
 <tr>
317
-<td class="org-left"><a href="#org36ddec5">Can I add more users to the system?</a></td>
317
+<td class="org-left"><a href="#org2bbb18a">What is the best hardware to run this system on?</a></td>
318 318
 </tr>
319 319
 
320 320
 <tr>
321
-<td class="org-left"><a href="#orgdd36f96">Why not use Signal for mobile chat?</a></td>
321
+<td class="org-left"><a href="#org15ecda8">Can I add more users to the system?</a></td>
322 322
 </tr>
323 323
 
324 324
 <tr>
325
-<td class="org-left"><a href="#org79827b5">What is the most secure chat app to use on mobile?</a></td>
325
+<td class="org-left"><a href="#orgc47b161">Why not use Signal for mobile chat?</a></td>
326 326
 </tr>
327 327
 
328 328
 <tr>
329
-<td class="org-left"><a href="#org5e417ee">How do I remove a user from the system?</a></td>
329
+<td class="org-left"><a href="#orgc0e8c86">What is the most secure chat app to use on mobile?</a></td>
330 330
 </tr>
331 331
 
332 332
 <tr>
333
-<td class="org-left"><a href="#org24c86ab">Why is logging for web sites turned off by default?</a></td>
333
+<td class="org-left"><a href="#org444799d">How do I remove a user from the system?</a></td>
334 334
 </tr>
335 335
 
336 336
 <tr>
337
-<td class="org-left"><a href="#orgd972cda">How do I reset the tripwire?</a></td>
337
+<td class="org-left"><a href="#orgc9b4ece">Why is logging for web sites turned off by default?</a></td>
338 338
 </tr>
339 339
 
340 340
 <tr>
341
-<td class="org-left"><a href="#org4d6c566">Is metadata protected?</a></td>
341
+<td class="org-left"><a href="#orge930cc5">How do I reset the tripwire?</a></td>
342 342
 </tr>
343 343
 
344 344
 <tr>
345
-<td class="org-left"><a href="#orga67d74a">How do I create email processing rules?</a></td>
345
+<td class="org-left"><a href="#org0947e5a">Is metadata protected?</a></td>
346 346
 </tr>
347 347
 
348 348
 <tr>
349
-<td class="org-left"><a href="#org69c34a0">Why isn't dynamic DNS working?</a></td>
349
+<td class="org-left"><a href="#orgb32e5cb">How do I create email processing rules?</a></td>
350 350
 </tr>
351 351
 
352 352
 <tr>
353
-<td class="org-left"><a href="#orgd5c5acc">How do I change my encryption settings?</a></td>
353
+<td class="org-left"><a href="#orgcc703f1">Why isn't dynamic DNS working?</a></td>
354 354
 </tr>
355 355
 
356 356
 <tr>
357
-<td class="org-left"><a href="#orgfc6fd46">How do I get a domain name?</a></td>
357
+<td class="org-left"><a href="#orgdb2c631">How do I change my encryption settings?</a></td>
358 358
 </tr>
359 359
 
360 360
 <tr>
361
-<td class="org-left"><a href="#org90eafd9">How do I get a "real" SSL/TLS/HTTPS certificate?</a></td>
361
+<td class="org-left"><a href="#org748c030">How do I get a domain name?</a></td>
362 362
 </tr>
363 363
 
364 364
 <tr>
365
-<td class="org-left"><a href="#orgc91fc72">How do I renew a Let's Encrypt certificate?</a></td>
365
+<td class="org-left"><a href="#org20d848a">How do I get a "real" SSL/TLS/HTTPS certificate?</a></td>
366 366
 </tr>
367 367
 
368 368
 <tr>
369
-<td class="org-left"><a href="#org73b061c">I tried to renew a Let's Encrypt certificate and it failed. What should I do?</a></td>
369
+<td class="org-left"><a href="#org364e5b4">How do I renew a Let's Encrypt certificate?</a></td>
370 370
 </tr>
371 371
 
372 372
 <tr>
373
-<td class="org-left"><a href="#org6a6cce4">Why not use the services of $company instead? They took the Seppuku pledge</a></td>
373
+<td class="org-left"><a href="#org92cc380">I tried to renew a Let's Encrypt certificate and it failed. What should I do?</a></td>
374 374
 </tr>
375 375
 
376 376
 <tr>
377
-<td class="org-left"><a href="#orgc36400d">Why does my email keep getting rejected as spam by Gmail/etc?</a></td>
377
+<td class="org-left"><a href="#org7fdf511">Why not use the services of $company instead? They took the Seppuku pledge</a></td>
378 378
 </tr>
379 379
 
380 380
 <tr>
381
-<td class="org-left"><a href="#org73e8a5c">Tor is censored/blocked in my area. What can I do?</a></td>
381
+<td class="org-left"><a href="#org2ac01d7">Why does my email keep getting rejected as spam by Gmail/etc?</a></td>
382 382
 </tr>
383 383
 
384 384
 <tr>
385
-<td class="org-left"><a href="#org1332523">I want to block a particular domain from getting its content into my social network sites</a></td>
385
+<td class="org-left"><a href="#orga441aa1">Tor is censored/blocked in my area. What can I do?</a></td>
386 386
 </tr>
387 387
 
388 388
 <tr>
389
-<td class="org-left"><a href="#org7e84bef">The mesh system doesn't boot from USB drive</a></td>
389
+<td class="org-left"><a href="#orgaf2f408">I want to block a particular domain from getting its content into my social network sites</a></td>
390 390
 </tr>
391 391
 
392 392
 <tr>
393
-<td class="org-left"><a href="#orgdae680c">Mesh system doesn't connect to the network</a></td>
393
+<td class="org-left"><a href="#orgf5fd6ee">The mesh system doesn't boot from USB drive</a></td>
394
+</tr>
395
+
396
+<tr>
397
+<td class="org-left"><a href="#org4b55e47">Mesh system doesn't connect to the network</a></td>
394 398
 </tr>
395 399
 </tbody>
396 400
 </table>
397 401
 </div>
398 402
 
399
-<div id="outline-container-org2ecea54" class="outline-2">
400
-<h2 id="org2ecea54">What applications are supported?</h2>
401
-<div class="outline-text-2" id="text-org2ecea54">
403
+<div id="outline-container-org9ac9dc9" class="outline-2">
404
+<h2 id="org9ac9dc9">What applications are supported?</h2>
405
+<div class="outline-text-2" id="text-org9ac9dc9">
402 406
 <p>
403 407
 <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.
404 408
 </p>
405 409
 </div>
406 410
 </div>
407
-<div id="outline-container-orgaa0a705" class="outline-2">
408
-<h2 id="orgaa0a705">I don't have a static IP address. Can I still install this system?</h2>
409
-<div class="outline-text-2" id="text-orgaa0a705">
411
+<div id="outline-container-org57cb5f7" class="outline-2">
412
+<h2 id="org57cb5f7">I don't have a static IP address. Can I still install this system?</h2>
413
+<div class="outline-text-2" id="text-org57cb5f7">
410 414
 <p>
411 415
 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.
412 416
 </p>
@@ -416,17 +420,25 @@ The lack of a static IP address can be worked around by using a dynamic DNS serv
416 420
 </p>
417 421
 </div>
418 422
 </div>
419
-<div id="outline-container-org340be8a" class="outline-2">
420
-<h2 id="org340be8a">Why Freedombone and not FreedomBox?</h2>
421
-<div class="outline-text-2" id="text-org340be8a">
423
+<div id="outline-container-org2ec231a" class="outline-2">
424
+<h2 id="org2ec231a">What are the best microSD cards to use?</h2>
425
+<div class="outline-text-2" id="text-org2ec231a">
426
+<p>
427
+There can be big differences in the performance of microSD cards, and the cheaper ones are almost invariably terrible and/or unusable. Sandisk and Samsung currently appear to be the better brands. You can find some performance benchmarks <a href="http://www.pidramble.com/wiki/benchmarks/microsd-cards">here</a>. However, benchmarks like this only give a very rough idea of performance and they can vary significantly between individual cards even within the same brand.
428
+</p>
429
+</div>
430
+</div>
431
+<div id="outline-container-orgf562031" class="outline-2">
432
+<h2 id="orgf562031">Why Freedombone and not FreedomBox?</h2>
433
+<div class="outline-text-2" id="text-orgf562031">
422 434
 <p>
423 435
 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:
424 436
 </p>
425 437
 </div>
426 438
 
427
-<div id="outline-container-org918eba1" class="outline-3">
428
-<h3 id="org918eba1">Similarities</h3>
429
-<div class="outline-text-3" id="text-org918eba1">
439
+<div id="outline-container-org973e1fe" class="outline-3">
440
+<h3 id="org973e1fe">Similarities</h3>
441
+<div class="outline-text-3" id="text-org973e1fe">
430 442
 <ul class="org-ul">
431 443
 <li>Uses freedom-maker and vmdebootstrap to build debian images</li>
432 444
 <li>Supports the use of Tor onion addresses to access websites</li>
@@ -440,9 +452,9 @@ When the project began in late 2013 the FreedomBox project seemed to be going no
440 452
 </ul>
441 453
 </div>
442 454
 </div>
443
-<div id="outline-container-orgf04a715" class="outline-3">
444
-<h3 id="orgf04a715">Differences</h3>
445
-<div class="outline-text-3" id="text-orgf04a715">
455
+<div id="outline-container-org54e398b" class="outline-3">
456
+<h3 id="org54e398b">Differences</h3>
457
+<div class="outline-text-3" id="text-org54e398b">
446 458
 <ul class="org-ul">
447 459
 <li>FreedomBox is a Debian pure blend. Freedombone is not</li>
448 460
 <li>Freedombone only supports Free Software. FreedomBox includes some closed binary boot blobs for certain ARM boards</li>
@@ -457,9 +469,9 @@ When the project began in late 2013 the FreedomBox project seemed to be going no
457 469
 </div>
458 470
 </div>
459 471
 </div>
460
-<div id="outline-container-orgccf5702" class="outline-2">
461
-<h2 id="orgccf5702">Why not support building images for Raspberry Pi?</h2>
462
-<div class="outline-text-2" id="text-orgccf5702">
472
+<div id="outline-container-orgba4b2dc" class="outline-2">
473
+<h2 id="orgba4b2dc">Why not support building images for Raspberry Pi?</h2>
474
+<div class="outline-text-2" id="text-orgba4b2dc">
463 475
 <p>
464 476
 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.
465 477
 </p>
@@ -469,9 +481,9 @@ So although the Raspberry Pi is cheap and hugely popular it's not supported by t
469 481
 </p>
470 482
 </div>
471 483
 </div>
472
-<div id="outline-container-org2af436d" class="outline-2">
473
-<h2 id="org2af436d">Why use Tor? I've heard it's used by bad people</h2>
474
-<div class="outline-text-2" id="text-org2af436d">
484
+<div id="outline-container-org8b22f5c" class="outline-2">
485
+<h2 id="org8b22f5c">Why use Tor? I've heard it's used by bad people</h2>
486
+<div class="outline-text-2" id="text-org8b22f5c">
475 487
 <p>
476 488
 Years ago Tor was usually depicted in the mainstream media as something scary inhabited by cyberterrorists and other bad cybers, but today to a large extent Tor is accepted as just another way of routing data in a network. Depending upon where you live there may still be some amount of fearmongering about Tor, but it now seems clear that the trajectory is towards general acceptance.
477 489
 </p>
@@ -492,9 +504,9 @@ On the negative side it's a complex system which is not fully decentralized.
492 504
 </p>
493 505
 </div>
494 506
 </div>
495
-<div id="outline-container-org3981923" class="outline-2">
496
-<h2 id="org3981923">How is Tor integrated with Freedombone?</h2>
497
-<div class="outline-text-2" id="text-org3981923">
507
+<div id="outline-container-orgbaa6623" class="outline-2">
508
+<h2 id="orgbaa6623">How is Tor integrated with Freedombone?</h2>
509
+<div class="outline-text-2" id="text-orgbaa6623">
498 510
 <p>
499 511
 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.
500 512
 </p>
@@ -512,17 +524,17 @@ Even if you're running the "onion only" build, this only means that sites are ac
512 524
 </p>
513 525
 </div>
514 526
 </div>
515
-<div id="outline-container-orgb732986" class="outline-2">
516
-<h2 id="orgb732986">Can I add a clearnet domain to an onion build?</h2>
517
-<div class="outline-text-2" id="text-orgb732986">
527
+<div id="outline-container-orgbd702fd" class="outline-2">
528
+<h2 id="orgbd702fd">Can I add a clearnet domain to an onion build?</h2>
529
+<div class="outline-text-2" id="text-orgbd702fd">
518 530
 <p>
519 531
 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.
520 532
 </p>
521 533
 </div>
522 534
 </div>
523
-<div id="outline-container-orgb1382c0" class="outline-2">
524
-<h2 id="orgb1382c0">Why use Github?</h2>
525
-<div class="outline-text-2" id="text-orgb1382c0">
535
+<div id="outline-container-org4d09a2a" class="outline-2">
536
+<h2 id="org4d09a2a">Why use Github?</h2>
537
+<div class="outline-text-2" id="text-org4d09a2a">
526 538
 <p>
527 539
 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.
528 540
 </p>
@@ -540,17 +552,17 @@ Currently many of the repositories used for applications which are not yet packa
540 552
 </p>
541 553
 </div>
542 554
 </div>
543
-<div id="outline-container-org8d5c33e" class="outline-2">
544
-<h2 id="org8d5c33e">After using nmap or other scanning tool I can no longer log in</h2>
545
-<div class="outline-text-2" id="text-org8d5c33e">
555
+<div id="outline-container-org82e9020" class="outline-2">
556
+<h2 id="org82e9020">After using nmap or other scanning tool I can no longer log in</h2>
557
+<div class="outline-text-2" id="text-org82e9020">
546 558
 <p>
547 559
 This system tries to block port scanners. Any other system trying to scan for open ports will have their IP address added to a temporary block list for 24 hours.
548 560
 </p>
549 561
 </div>
550 562
 </div>
551
-<div id="outline-container-orgcaa8f8c" class="outline-2">
552
-<h2 id="orgcaa8f8c">Should I upload my GPG keys to keybase.io?</h2>
553
-<div class="outline-text-2" id="text-orgcaa8f8c">
563
+<div id="outline-container-org6838add" class="outline-2">
564
+<h2 id="org6838add">Should I upload my GPG keys to keybase.io?</h2>
565
+<div class="outline-text-2" id="text-org6838add">
554 566
 <p>
555 567
 It's not recommended unless there exists some compelling reason for you to be on there. That site asks users to upload the <b>private keys</b>, and even if the keys are client side encrypted with a passphrase there's always the chance that there will be a data leak in future and letter agencies will then have a full time opportunity to crack the passphrases.
556 568
 </p>
@@ -560,9 +572,9 @@ Saying something resembling <i>"only noobs will use crackable private key passph
560 572
 </p>
561 573
 </div>
562 574
 </div>
563
-<div id="outline-container-org787d325" class="outline-2">
564
-<h2 id="org787d325">Keys and emails should not be stored on servers. Why do you do that?</h2>
565
-<div class="outline-text-2" id="text-org787d325">
575
+<div id="outline-container-orgefe80fb" class="outline-2">
576
+<h2 id="orgefe80fb">Keys and emails should not be stored on servers. Why do you do that?</h2>
577
+<div class="outline-text-2" id="text-orgefe80fb">
566 578
 <p>
567 579
 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:
568 580
 </p>
@@ -620,9 +632,9 @@ In the home environment a box with a good firewall and no GUI components install
620 632
 </div>
621 633
 </div>
622 634
 
623
-<div id="outline-container-org45d4472" class="outline-2">
624
-<h2 id="org45d4472">Why can't I access my .onion site with a Tor browser?</h2>
625
-<div class="outline-text-2" id="text-org45d4472">
635
+<div id="outline-container-org7659367" class="outline-2">
636
+<h2 id="org7659367">Why can't I access my .onion site with a Tor browser?</h2>
637
+<div class="outline-text-2" id="text-org7659367">
626 638
 <p>
627 639
 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.
628 640
 </p>
@@ -632,9 +644,9 @@ Another factor to be aware of is that it can take a while for the onion address
632 644
 </p>
633 645
 </div>
634 646
 </div>
635
-<div id="outline-container-org000c926" class="outline-2">
636
-<h2 id="org000c926">What is the best hardware to run this system on?</h2>
637
-<div class="outline-text-2" id="text-org000c926">
647
+<div id="outline-container-org2bbb18a" class="outline-2">
648
+<h2 id="org2bbb18a">What is the best hardware to run this system on?</h2>
649
+<div class="outline-text-2" id="text-org2bbb18a">
638 650
 <p>
639 651
 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.
640 652
 </p>
@@ -644,9 +656,9 @@ It was originally designed to run on the Beaglebone Black, but that should be re
644 656
 </p>
645 657
 </div>
646 658
 </div>
647
-<div id="outline-container-org36ddec5" class="outline-2">
648
-<h2 id="org36ddec5">Can I add more users to the system?</h2>
649
-<div class="outline-text-2" id="text-org36ddec5">
659
+<div id="outline-container-org15ecda8" class="outline-2">
660
+<h2 id="org15ecda8">Can I add more users to the system?</h2>
661
+<div class="outline-text-2" id="text-org15ecda8">
650 662
 <p>
651 663
 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).
652 664
 </p>
@@ -669,9 +681,9 @@ Another point is that Freedombone installations are not intended to support many
669 681
 </p>
670 682
 </div>
671 683
 </div>
672
-<div id="outline-container-orgdd36f96" class="outline-2">
673
-<h2 id="orgdd36f96">Why not use Signal for mobile chat?</h2>
674
-<div class="outline-text-2" id="text-orgdd36f96">
684
+<div id="outline-container-orgc47b161" class="outline-2">
685
+<h2 id="orgc47b161">Why not use Signal for mobile chat?</h2>
686
+<div class="outline-text-2" id="text-orgc47b161">
675 687
 <p>
676 688
 Celebrities recommend Signal. It's Free Software so it must be good, right?
677 689
 </p>
@@ -694,9 +706,9 @@ To give credit where it's due Signal is good, but it could be a lot better. The
694 706
 </p>
695 707
 </div>
696 708
 </div>
697
-<div id="outline-container-org79827b5" class="outline-2">
698
-<h2 id="org79827b5">What is the most secure chat app to use on mobile?</h2>
699
-<div class="outline-text-2" id="text-org79827b5">
709
+<div id="outline-container-orgc0e8c86" class="outline-2">
710
+<h2 id="orgc0e8c86">What is the most secure chat app to use on mobile?</h2>
711
+<div class="outline-text-2" id="text-orgc0e8c86">
700 712
 <p>
701 713
 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.
702 714
 </p>
@@ -706,13 +718,13 @@ The current safest way to chat is to use <a href="https://conversations.im">Conv
706 718
 </p>
707 719
 
708 720
 <p>
709
-There are many <a href="#orgdd36f96">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.
721
+There are many <a href="#orgc47b161">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.
710 722
 </p>
711 723
 </div>
712 724
 </div>
713
-<div id="outline-container-org5e417ee" class="outline-2">
714
-<h2 id="org5e417ee">How do I remove a user from the system?</h2>
715
-<div class="outline-text-2" id="text-org5e417ee">
725
+<div id="outline-container-org444799d" class="outline-2">
726
+<h2 id="org444799d">How do I remove a user from the system?</h2>
727
+<div class="outline-text-2" id="text-org444799d">
716 728
 <p>
717 729
 To remove a user:
718 730
 </p>
@@ -727,9 +739,9 @@ Select <i>Administrator controls</i> then <i>Manage Users</i> and then <i>Delete
727 739
 </p>
728 740
 </div>
729 741
 </div>
730
-<div id="outline-container-org24c86ab" class="outline-2">
731
-<h2 id="org24c86ab">Why is logging for web sites turned off by default?</h2>
732
-<div class="outline-text-2" id="text-org24c86ab">
742
+<div id="outline-container-orgc9b4ece" class="outline-2">
743
+<h2 id="orgc9b4ece">Why is logging for web sites turned off by default?</h2>
744
+<div class="outline-text-2" id="text-orgc9b4ece">
733 745
 <p>
734 746
 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.
735 747
 </p>
@@ -743,9 +755,9 @@ On the Freedombone system web logs containing IP addresses are turned off by def
743 755
 </p>
744 756
 </div>
745 757
 </div>
746
-<div id="outline-container-orgd972cda" class="outline-2">
747
-<h2 id="orgd972cda">How do I reset the tripwire?</h2>
748
-<div class="outline-text-2" id="text-orgd972cda">
758
+<div id="outline-container-orge930cc5" class="outline-2">
759
+<h2 id="orge930cc5">How do I reset the tripwire?</h2>
760
+<div class="outline-text-2" id="text-orge930cc5">
749 761
 <p>
750 762
 The tripwire will be automatically reset once per week. If you want to reset it earlier then do the following:
751 763
 </p>
@@ -760,9 +772,9 @@ Select <i>Administrator controls</i> then "reset tripwire" using cursors and spa
760 772
 </p>
761 773
 </div>
762 774
 </div>
763
-<div id="outline-container-org4d6c566" class="outline-2">
764
-<h2 id="org4d6c566">Is metadata protected?</h2>
765
-<div class="outline-text-2" id="text-org4d6c566">
775
+<div id="outline-container-org0947e5a" class="outline-2">
776
+<h2 id="org0947e5a">Is metadata protected?</h2>
777
+<div class="outline-text-2" id="text-org0947e5a">
766 778
 <blockquote>
767 779
 <p>
768 780
 "<i>We kill people based on metadata</i>"
@@ -778,9 +790,9 @@ Even when using Freedombone metadata analysis by third parties is still possible
778 790
 </p>
779 791
 </div>
780 792
 </div>
781
-<div id="outline-container-orga67d74a" class="outline-2">
782
-<h2 id="orga67d74a">How do I create email processing rules?</h2>
783
-<div class="outline-text-2" id="text-orga67d74a">
793
+<div id="outline-container-orgb32e5cb" class="outline-2">
794
+<h2 id="orgb32e5cb">How do I create email processing rules?</h2>
795
+<div class="outline-text-2" id="text-orgb32e5cb">
784 796
 <div class="org-src-container">
785 797
 <pre class="src src-bash">ssh username@domainname -p 2222
786 798
 </pre>
@@ -836,9 +848,9 @@ Spamassassin is also available and within Mutt you can use the S (shift+s) key t
836 848
 </p>
837 849
 </div>
838 850
 </div>
839
-<div id="outline-container-org69c34a0" class="outline-2">
840
-<h2 id="org69c34a0">Why isn't dynamic DNS working?</h2>
841
-<div class="outline-text-2" id="text-org69c34a0">
851
+<div id="outline-container-orgcc703f1" class="outline-2">
852
+<h2 id="orgcc703f1">Why isn't dynamic DNS working?</h2>
853
+<div class="outline-text-2" id="text-orgcc703f1">
842 854
 <p>
843 855
 If you run the command:
844 856
 </p>
@@ -861,9 +873,9 @@ https://www.privateinternetaccess.com/pages/whats-my-ip/
861 873
 </div>
862 874
 </div>
863 875
 
864
-<div id="outline-container-orgd5c5acc" class="outline-2">
865
-<h2 id="orgd5c5acc">How do I change my encryption settings?</h2>
866
-<div class="outline-text-2" id="text-orgd5c5acc">
876
+<div id="outline-container-orgdb2c631" class="outline-2">
877
+<h2 id="orgdb2c631">How do I change my encryption settings?</h2>
878
+<div class="outline-text-2" id="text-orgdb2c631">
867 879
 <p>
868 880
 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:
869 881
 </p>
@@ -878,9 +890,9 @@ Select <i>Administrator controls</i> then select <i>Security Settings</i>. You w
878 890
 </p>
879 891
 </div>
880 892
 </div>
881
-<div id="outline-container-orgfc6fd46" class="outline-2">
882
-<h2 id="orgfc6fd46">How do I get a domain name?</h2>
883
-<div class="outline-text-2" id="text-orgfc6fd46">
893
+<div id="outline-container-org748c030" class="outline-2">
894
+<h2 id="org748c030">How do I get a domain name?</h2>
895
+<div class="outline-text-2" id="text-org748c030">
884 896
 <p>
885 897
 Suppose that you have bought a domain name (rather than using a free subdomain on freedns) and you want to use that instead.
886 898
 </p>
@@ -944,9 +956,9 @@ You should now be able to send an email from <i>postmaster@mynewdomainname</i> a
944 956
 </div>
945 957
 </div>
946 958
 
947
-<div id="outline-container-org90eafd9" class="outline-2">
948
-<h2 id="org90eafd9">How do I get a "real" SSL/TLS/HTTPS certificate?</h2>
949
-<div class="outline-text-2" id="text-org90eafd9">
959
+<div id="outline-container-org20d848a" class="outline-2">
960
+<h2 id="org20d848a">How do I get a "real" SSL/TLS/HTTPS certificate?</h2>
961
+<div class="outline-text-2" id="text-org20d848a">
950 962
 <p>
951 963
 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:
952 964
 </p>
@@ -965,9 +977,9 @@ One thing to be aware of is that Let's Encrypt doesn't support many dynamic DNS
965 977
 </p>
966 978
 </div>
967 979
 </div>
968
-<div id="outline-container-orgc91fc72" class="outline-2">
969
-<h2 id="orgc91fc72">How do I renew a Let's Encrypt certificate?</h2>
970
-<div class="outline-text-2" id="text-orgc91fc72">
980
+<div id="outline-container-org364e5b4" class="outline-2">
981
+<h2 id="org364e5b4">How do I renew a Let's Encrypt certificate?</h2>
982
+<div class="outline-text-2" id="text-org364e5b4">
971 983
 <p>
972 984
 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.
973 985
 </p>
@@ -986,9 +998,9 @@ Select <i>Administrator controls</i> then <b>Security settings</b> then <b>Renew
986 998
 </p>
987 999
 </div>
988 1000
 </div>
989
-<div id="outline-container-org73b061c" class="outline-2">
990
-<h2 id="org73b061c">I tried to renew a Let's Encrypt certificate and it failed. What should I do?</h2>
991
-<div class="outline-text-2" id="text-org73b061c">
1001
+<div id="outline-container-org92cc380" class="outline-2">
1002
+<h2 id="org92cc380">I tried to renew a Let's Encrypt certificate and it failed. What should I do?</h2>
1003
+<div class="outline-text-2" id="text-org92cc380">
992 1004
 <p>
993 1005
 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:
994 1006
 </p>
@@ -1003,17 +1015,17 @@ Select <i>Administrator controls</i> then <b>Security settings</b> then <b>Creat
1003 1015
 </p>
1004 1016
 </div>
1005 1017
 </div>
1006
-<div id="outline-container-org6a6cce4" class="outline-2">
1007
-<h2 id="org6a6cce4">Why not use the services of $company instead? They took the Seppuku pledge</h2>
1008
-<div class="outline-text-2" id="text-org6a6cce4">
1018
+<div id="outline-container-org7fdf511" class="outline-2">
1019
+<h2 id="org7fdf511">Why not use the services of $company instead? They took the Seppuku pledge</h2>
1020
+<div class="outline-text-2" id="text-org7fdf511">
1009 1021
 <p>
1010 1022
 <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.
1011 1023
 </p>
1012 1024
 </div>
1013 1025
 </div>
1014
-<div id="outline-container-orgc36400d" class="outline-2">
1015
-<h2 id="orgc36400d">Why does my email keep getting rejected as spam by Gmail/etc?</h2>
1016
-<div class="outline-text-2" id="text-orgc36400d">
1026
+<div id="outline-container-org2ac01d7" class="outline-2">
1027
+<h2 id="org2ac01d7">Why does my email keep getting rejected as spam by Gmail/etc?</h2>
1028
+<div class="outline-text-2" id="text-org2ac01d7">
1017 1029
 <p>
1018 1030
 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.
1019 1031
 </p>
@@ -1044,9 +1056,9 @@ So the situation with email presently is pretty bad, and there's a clear selecti
1044 1056
 </p>
1045 1057
 </div>
1046 1058
 </div>
1047
-<div id="outline-container-org73e8a5c" class="outline-2">
1048
-<h2 id="org73e8a5c">Tor is censored/blocked in my area. What can I do?</h2>
1049
-<div class="outline-text-2" id="text-org73e8a5c">
1059
+<div id="outline-container-orga441aa1" class="outline-2">
1060
+<h2 id="orga441aa1">Tor is censored/blocked in my area. What can I do?</h2>
1061
+<div class="outline-text-2" id="text-orga441aa1">
1050 1062
 <p>
1051 1063
 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.
1052 1064
 </p>
@@ -1071,9 +1083,9 @@ You can also set your system to act as a Tor bridge, although this is not recomm
1071 1083
 </div>
1072 1084
 </div>
1073 1085
 
1074
-<div id="outline-container-org1332523" class="outline-2">
1075
-<h2 id="org1332523">I want to block a particular domain from getting its content into my social network sites</h2>
1076
-<div class="outline-text-2" id="text-org1332523">
1086
+<div id="outline-container-orgaf2f408" class="outline-2">
1087
+<h2 id="orgaf2f408">I want to block a particular domain from getting its content into my social network sites</h2>
1088
+<div class="outline-text-2" id="text-orgaf2f408">
1077 1089
 <p>
1078 1090
 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.
1079 1091
 </p>
@@ -1088,9 +1100,9 @@ Select <i>Administrator controls</i> then <i>Domain blocking</i>.
1088 1100
 </div>
1089 1101
 </div>
1090 1102
 
1091
-<div id="outline-container-org7e84bef" class="outline-2">
1092
-<h2 id="org7e84bef">The mesh system doesn't boot from USB drive</h2>
1093
-<div class="outline-text-2" id="text-org7e84bef">
1103
+<div id="outline-container-orgf5fd6ee" class="outline-2">
1104
+<h2 id="orgf5fd6ee">The mesh system doesn't boot from USB drive</h2>
1105
+<div class="outline-text-2" id="text-orgf5fd6ee">
1094 1106
 <p>
1095 1107
 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.
1096 1108
 </p>
@@ -1101,9 +1113,9 @@ After the system has booted successfully the problem should resolve itself on su
1101 1113
 </div>
1102 1114
 </div>
1103 1115
 
1104
-<div id="outline-container-orgdae680c" class="outline-2">
1105
-<h2 id="orgdae680c">Mesh system doesn't connect to the network</h2>
1106
-<div class="outline-text-2" id="text-orgdae680c">
1116
+<div id="outline-container-org4b55e47" class="outline-2">
1117
+<h2 id="org4b55e47">Mesh system doesn't connect to the network</h2>
1118
+<div class="outline-text-2" id="text-org4b55e47">
1107 1119
 <p>
1108 1120
 Sometimes after boot the mesh system won't connect to other peers on the network. If this happens select the <b>network restart</b> icon and enter the password, which by default is just "freedombone". Wait for a few minutes to see if it connects.
1109 1121
 </p>

+ 126
- 45
website/EN/homeserver.html 查看文件

@@ -3,26 +3,33 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<title></title>
7
-<!-- 2018-04-12 Thu 18:24 -->
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="Freedombone home server setup"
6
+<!-- 2018-04-21 Sat 14:58 -->
7
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
+<meta name="viewport" content="width=device-width, initial-scale=1" />
9
+<title>&lrm;</title>
10
+<meta name="generator" content="Org mode" />
11
+<meta name="author" content="Bob Mottram" />
12
+<meta name="description" content="Freedombone home server setup"
12 13
  />
13
-<meta  name="keywords" content="freedombone, home server" />
14
+<meta name="keywords" content="freedombone, home server" />
14 15
 <style type="text/css">
15 16
  <!--/*--><![CDATA[/*><!--*/
16
-  .title  { text-align: center; }
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; }
17 23
   .todo   { font-family: monospace; color: red; }
18
-  .done   { color: green; }
24
+  .done   { font-family: monospace; color: green; }
25
+  .priority { font-family: monospace; color: orange; }
19 26
   .tag    { background-color: #eee; font-family: monospace;
20 27
             padding: 2px; font-size: 80%; font-weight: normal; }
21 28
   .timestamp { color: #bebebe; }
22 29
   .timestamp-kwd { color: #5f9ea0; }
23
-  .right  { margin-left: auto; margin-right: 0px;  text-align: right; }
24
-  .left   { margin-left: 0px;  margin-right: auto; text-align: left; }
25
-  .center { margin-left: auto; margin-right: auto; text-align: center; }
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; }
26 33
   .underline { text-decoration: underline; }
27 34
   #postamble p, #preamble p { font-size: 90%; margin: .2em; }
28 35
   p.verse { margin-left: 3%; }
@@ -49,27 +56,111 @@
49 56
     border: 1px solid black;
50 57
   }
51 58
   pre.src:hover:before { display: inline;}
52
-  pre.src-sh:before    { content: 'sh'; }
53
-  pre.src-bash:before  { content: 'sh'; }
59
+  /* Languages per Org manual */
60
+  pre.src-asymptote:before { content: 'Asymptote'; }
61
+  pre.src-awk:before { content: 'Awk'; }
62
+  pre.src-C:before { content: 'C'; }
63
+  /* pre.src-C++ doesn't work in CSS */
64
+  pre.src-clojure:before { content: 'Clojure'; }
65
+  pre.src-css:before { content: 'CSS'; }
66
+  pre.src-D:before { content: 'D'; }
67
+  pre.src-ditaa:before { content: 'ditaa'; }
68
+  pre.src-dot:before { content: 'Graphviz'; }
69
+  pre.src-calc:before { content: 'Emacs Calc'; }
54 70
   pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
55
-  pre.src-R:before     { content: 'R'; }
56
-  pre.src-perl:before  { content: 'Perl'; }
57
-  pre.src-java:before  { content: 'Java'; }
58
-  pre.src-sql:before   { content: 'SQL'; }
71
+  pre.src-fortran:before { content: 'Fortran'; }
72
+  pre.src-gnuplot:before { content: 'gnuplot'; }
73
+  pre.src-haskell:before { content: 'Haskell'; }
74
+  pre.src-hledger:before { content: 'hledger'; }
75
+  pre.src-java:before { content: 'Java'; }
76
+  pre.src-js:before { content: 'Javascript'; }
77
+  pre.src-latex:before { content: 'LaTeX'; }
78
+  pre.src-ledger:before { content: 'Ledger'; }
79
+  pre.src-lisp:before { content: 'Lisp'; }
80
+  pre.src-lilypond:before { content: 'Lilypond'; }
81
+  pre.src-lua:before { content: 'Lua'; }
82
+  pre.src-matlab:before { content: 'MATLAB'; }
83
+  pre.src-mscgen:before { content: 'Mscgen'; }
84
+  pre.src-ocaml:before { content: 'Objective Caml'; }
85
+  pre.src-octave:before { content: 'Octave'; }
86
+  pre.src-org:before { content: 'Org mode'; }
87
+  pre.src-oz:before { content: 'OZ'; }
88
+  pre.src-plantuml:before { content: 'Plantuml'; }
89
+  pre.src-processing:before { content: 'Processing.js'; }
90
+  pre.src-python:before { content: 'Python'; }
91
+  pre.src-R:before { content: 'R'; }
92
+  pre.src-ruby:before { content: 'Ruby'; }
93
+  pre.src-sass:before { content: 'Sass'; }
94
+  pre.src-scheme:before { content: 'Scheme'; }
95
+  pre.src-screen:before { content: 'Gnu Screen'; }
96
+  pre.src-sed:before { content: 'Sed'; }
97
+  pre.src-sh:before { content: 'shell'; }
98
+  pre.src-sql:before { content: 'SQL'; }
99
+  pre.src-sqlite:before { content: 'SQLite'; }
100
+  /* additional languages in org.el's org-babel-load-languages alist */
101
+  pre.src-forth:before { content: 'Forth'; }
102
+  pre.src-io:before { content: 'IO'; }
103
+  pre.src-J:before { content: 'J'; }
104
+  pre.src-makefile:before { content: 'Makefile'; }
105
+  pre.src-maxima:before { content: 'Maxima'; }
106
+  pre.src-perl:before { content: 'Perl'; }
107
+  pre.src-picolisp:before { content: 'Pico Lisp'; }
108
+  pre.src-scala:before { content: 'Scala'; }
109
+  pre.src-shell:before { content: 'Shell Script'; }
110
+  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
111
+  /* additional language identifiers per "defun org-babel-execute"
112
+       in ob-*.el */
113
+  pre.src-cpp:before  { content: 'C++'; }
114
+  pre.src-abc:before  { content: 'ABC'; }
115
+  pre.src-coq:before  { content: 'Coq'; }
116
+  pre.src-groovy:before  { content: 'Groovy'; }
117
+  /* additional language identifiers from org-babel-shell-names in
118
+     ob-shell.el: ob-shell is the only babel language using a lambda to put
119
+     the execution function name together. */
120
+  pre.src-bash:before  { content: 'bash'; }
121
+  pre.src-csh:before  { content: 'csh'; }
122
+  pre.src-ash:before  { content: 'ash'; }
123
+  pre.src-dash:before  { content: 'dash'; }
124
+  pre.src-ksh:before  { content: 'ksh'; }
125
+  pre.src-mksh:before  { content: 'mksh'; }
126
+  pre.src-posh:before  { content: 'posh'; }
127
+  /* Additional Emacs modes also supported by the LaTeX listings package */
128
+  pre.src-ada:before { content: 'Ada'; }
129
+  pre.src-asm:before { content: 'Assembler'; }
130
+  pre.src-caml:before { content: 'Caml'; }
131
+  pre.src-delphi:before { content: 'Delphi'; }
132
+  pre.src-html:before { content: 'HTML'; }
133
+  pre.src-idl:before { content: 'IDL'; }
134
+  pre.src-mercury:before { content: 'Mercury'; }
135
+  pre.src-metapost:before { content: 'MetaPost'; }
136
+  pre.src-modula-2:before { content: 'Modula-2'; }
137
+  pre.src-pascal:before { content: 'Pascal'; }
138
+  pre.src-ps:before { content: 'PostScript'; }
139
+  pre.src-prolog:before { content: 'Prolog'; }
140
+  pre.src-simula:before { content: 'Simula'; }
141
+  pre.src-tcl:before { content: 'tcl'; }
142
+  pre.src-tex:before { content: 'TeX'; }
143
+  pre.src-plain-tex:before { content: 'Plain TeX'; }
144
+  pre.src-verilog:before { content: 'Verilog'; }
145
+  pre.src-vhdl:before { content: 'VHDL'; }
146
+  pre.src-xml:before { content: 'XML'; }
147
+  pre.src-nxml:before { content: 'XML'; }
148
+  /* add a generic configuration mode; LaTeX export needs an additional
149
+     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
150
+  pre.src-conf:before { content: 'Configuration File'; }
59 151
 
60 152
   table { border-collapse:collapse; }
61 153
   caption.t-above { caption-side: top; }
62 154
   caption.t-bottom { caption-side: bottom; }
63 155
   td, th { vertical-align:top;  }
64
-  th.right  { text-align: center;  }
65
-  th.left   { text-align: center;   }
66
-  th.center { text-align: center; }
67
-  td.right  { text-align: right;  }
68
-  td.left   { text-align: left;   }
69
-  td.center { text-align: center; }
156
+  th.org-right  { text-align: center;  }
157
+  th.org-left   { text-align: center;   }
158
+  th.org-center { text-align: center; }
159
+  td.org-right  { text-align: right;  }
160
+  td.org-left   { text-align: left;   }
161
+  td.org-center { text-align: center; }
70 162
   dt { font-weight: bold; }
71
-  .footpara:nth-child(2) { display: inline; }
72
-  .footpara { display: block; }
163
+  .footpara { display: inline; }
73 164
   .footdef  { margin-bottom: 1em; }
74 165
   .figure { padding: 1em; }
75 166
   .figure p { text-align: center; }
@@ -89,6 +180,7 @@
89 180
     { font-size: 10px; font-weight: bold; white-space: nowrap; }
90 181
   .org-info-js_search-highlight
91 182
     { background-color: #ffff00; color: #000000; font-weight: bold; }
183
+  .org-svg { width: 90%; }
92 184
   /*]]>*/-->
93 185
 </style>
94 186
 <link rel="stylesheet" type="text/css" href="freedombone.css" />
@@ -97,7 +189,7 @@
97 189
 @licstart  The following is the entire license notice for the
98 190
 JavaScript code in this tag.
99 191
 
100
-Copyright (C) 2012-2013 Free Software Foundation, Inc.
192
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
101 193
 
102 194
 The JavaScript code in this tag is free software: you can
103 195
 redistribute it and/or modify it under the terms of the GNU
@@ -144,7 +236,6 @@ for the JavaScript code in this tag.
144 236
 <a name="top" id="top"></a>
145 237
 </div>
146 238
 <div id="content">
147
-<h1 class="title"></h1>
148 239
 
149 240
 <div class="figure">
150 241
 <p><img src="images/logo.png" alt="logo.png" width="80%" height="10%" align="center" />
@@ -152,9 +243,9 @@ for the JavaScript code in this tag.
152 243
 </div>
153 244
 
154 245
 
155
-<div id="outline-container-sec-1" class="outline-2">
156
-<h2 id="sec-1">Home Server</h2>
157
-<div class="outline-text-2" id="text-1">
246
+<div id="outline-container-org920b3b6" class="outline-2">
247
+<h2 id="org920b3b6">Home Server</h2>
248
+<div class="outline-text-2" id="text-org920b3b6">
158 249
 <p>
159 250
 The quickest way to get started is as follows. You will need to be running a Debian based system (version 8 or later), have an old but still working laptop or netbook which you can use as a server, and 8GB or larger USB thumb drive and an ethernet cable to connect the laptop to your internet router.
160 251
 </p>
@@ -164,10 +255,9 @@ First install freedombone onto your local system (not the target hardware that y
164 255
 </p>
165 256
 
166 257
 <div class="org-src-container">
167
-
168 258
 <pre class="src src-bash">sudo apt-get install git dialog build-essential
169 259
 git clone https://github.com/bashrc/freedombone
170
-cd freedombone
260
+<span class="org-builtin">cd</span> freedombone
171 261
 git checkout stretch
172 262
 sudo make install
173 263
 freedombone-image --setup debian
@@ -180,10 +270,9 @@ Or on Arch/Parabola:
180 270
 </p>
181 271
 
182 272
 <div class="org-src-container">
183
-
184 273
 <pre class="src src-bash">sudo pacman -S git dialog
185 274
 git clone https://github.com/bashrc/freedombone
186
-cd freedombone
275
+<span class="org-builtin">cd</span> freedombone
187 276
 git checkout stretch
188 277
 sudo make install
189 278
 freedombone-image --setup parabola
@@ -196,7 +285,6 @@ Now prepare your local system to talk to the freedombone by running the followin
196 285
 </p>
197 286
 
198 287
 <div class="org-src-container">
199
-
200 288
 <pre class="src src-bash">freedombone-client
201 289
 </pre>
202 290
 </div>
@@ -234,7 +322,6 @@ List what drives are on your system with:
234 322
 </p>
235 323
 
236 324
 <div class="org-src-container">
237
-
238 325
 <pre class="src src-bash">ls /dev/sd*
239 326
 </pre>
240 327
 </div>
@@ -248,9 +335,8 @@ You can now copy the image to the USB thumb drive, replacing <b>sdX</b> with the
248 335
 </p>
249 336
 
250 337
 <div class="org-src-container">
251
-
252
-<pre class="src src-bash">dd if=/dev/zero of=/dev/sdX bs=1M count=8
253
-dd bs=1M if=myimagefile.img of=/dev/sdX conv=fdatasync
338
+<pre 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>=32M <span class="org-variable-name">count</span>=8
339
+dd <span class="org-variable-name">bs</span>=32M <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
254 340
 </pre>
255 341
 </div>
256 342
 
@@ -263,7 +349,6 @@ As the system boots for the first time the login is:
263 349
 </p>
264 350
 
265 351
 <div class="org-src-container">
266
-
267 352
 <pre class="src src-bash">username: fbone
268 353
 password: freedombone
269 354
 </pre>
@@ -274,7 +359,6 @@ If you're installing from a microSD card on a single board computer without a sc
274 359
 </p>
275 360
 
276 361
 <div class="org-src-container">
277
-
278 362
 <pre class="src src-bash">ssh fbone@freedombone.local -p 2222
279 363
 </pre>
280 364
 </div>
@@ -296,7 +380,6 @@ When it's installed on your local system open a terminal and verify the ssh serv
296 380
 </p>
297 381
 
298 382
 <div class="org-src-container">
299
-
300 383
 <pre class="src src-bash">freedombone-client --verify
301 384
 </pre>
302 385
 </div>
@@ -316,7 +399,6 @@ Open another terminal window then run:
316 399
 </p>
317 400
 
318 401
 <div class="org-src-container">
319
-
320 402
 <pre class="src src-bash">freedombone-client
321 403
 ssh myusername@freedombone.local -p 2222
322 404
 </pre>
@@ -377,7 +459,6 @@ Of course, this is just one way in which you can install the Freedombone system.
377 459
 </p>
378 460
 
379 461
 <div class="org-src-container">
380
-
381 462
 <pre class="src src-bash">man freedombone-image
382 463
 </pre>
383 464
 </div>

+ 240
- 185
website/EN/installation.html 查看文件

@@ -3,26 +3,33 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<title></title>
7
-<!-- 2018-04-12 Thu 13:09 -->
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="Freedombone installation"
6
+<!-- 2018-04-21 Sat 14:58 -->
7
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
+<meta name="viewport" content="width=device-width, initial-scale=1" />
9
+<title>&lrm;</title>
10
+<meta name="generator" content="Org mode" />
11
+<meta name="author" content="Bob Mottram" />
12
+<meta name="description" content="Freedombone installation"
12 13
  />
13
-<meta  name="keywords" content="freedombone, installation" />
14
+<meta name="keywords" content="freedombone, installation" />
14 15
 <style type="text/css">
15 16
  <!--/*--><![CDATA[/*><!--*/
16
-  .title  { text-align: center; }
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; }
17 23
   .todo   { font-family: monospace; color: red; }
18
-  .done   { color: green; }
24
+  .done   { font-family: monospace; color: green; }
25
+  .priority { font-family: monospace; color: orange; }
19 26
   .tag    { background-color: #eee; font-family: monospace;
20 27
             padding: 2px; font-size: 80%; font-weight: normal; }
21 28
   .timestamp { color: #bebebe; }
22 29
   .timestamp-kwd { color: #5f9ea0; }
23
-  .right  { margin-left: auto; margin-right: 0px;  text-align: right; }
24
-  .left   { margin-left: 0px;  margin-right: auto; text-align: left; }
25
-  .center { margin-left: auto; margin-right: auto; text-align: center; }
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; }
26 33
   .underline { text-decoration: underline; }
27 34
   #postamble p, #preamble p { font-size: 90%; margin: .2em; }
28 35
   p.verse { margin-left: 3%; }
@@ -49,27 +56,111 @@
49 56
     border: 1px solid black;
50 57
   }
51 58
   pre.src:hover:before { display: inline;}
52
-  pre.src-sh:before    { content: 'sh'; }
53
-  pre.src-bash:before  { content: 'sh'; }
59
+  /* Languages per Org manual */
60
+  pre.src-asymptote:before { content: 'Asymptote'; }
61
+  pre.src-awk:before { content: 'Awk'; }
62
+  pre.src-C:before { content: 'C'; }
63
+  /* pre.src-C++ doesn't work in CSS */
64
+  pre.src-clojure:before { content: 'Clojure'; }
65
+  pre.src-css:before { content: 'CSS'; }
66
+  pre.src-D:before { content: 'D'; }
67
+  pre.src-ditaa:before { content: 'ditaa'; }
68
+  pre.src-dot:before { content: 'Graphviz'; }
69
+  pre.src-calc:before { content: 'Emacs Calc'; }
54 70
   pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
55
-  pre.src-R:before     { content: 'R'; }
56
-  pre.src-perl:before  { content: 'Perl'; }
57
-  pre.src-java:before  { content: 'Java'; }
58
-  pre.src-sql:before   { content: 'SQL'; }
71
+  pre.src-fortran:before { content: 'Fortran'; }
72
+  pre.src-gnuplot:before { content: 'gnuplot'; }
73
+  pre.src-haskell:before { content: 'Haskell'; }
74
+  pre.src-hledger:before { content: 'hledger'; }
75
+  pre.src-java:before { content: 'Java'; }
76
+  pre.src-js:before { content: 'Javascript'; }
77
+  pre.src-latex:before { content: 'LaTeX'; }
78
+  pre.src-ledger:before { content: 'Ledger'; }
79
+  pre.src-lisp:before { content: 'Lisp'; }
80
+  pre.src-lilypond:before { content: 'Lilypond'; }
81
+  pre.src-lua:before { content: 'Lua'; }
82
+  pre.src-matlab:before { content: 'MATLAB'; }
83
+  pre.src-mscgen:before { content: 'Mscgen'; }
84
+  pre.src-ocaml:before { content: 'Objective Caml'; }
85
+  pre.src-octave:before { content: 'Octave'; }
86
+  pre.src-org:before { content: 'Org mode'; }
87
+  pre.src-oz:before { content: 'OZ'; }
88
+  pre.src-plantuml:before { content: 'Plantuml'; }
89
+  pre.src-processing:before { content: 'Processing.js'; }
90
+  pre.src-python:before { content: 'Python'; }
91
+  pre.src-R:before { content: 'R'; }
92
+  pre.src-ruby:before { content: 'Ruby'; }
93
+  pre.src-sass:before { content: 'Sass'; }
94
+  pre.src-scheme:before { content: 'Scheme'; }
95
+  pre.src-screen:before { content: 'Gnu Screen'; }
96
+  pre.src-sed:before { content: 'Sed'; }
97
+  pre.src-sh:before { content: 'shell'; }
98
+  pre.src-sql:before { content: 'SQL'; }
99
+  pre.src-sqlite:before { content: 'SQLite'; }
100
+  /* additional languages in org.el's org-babel-load-languages alist */
101
+  pre.src-forth:before { content: 'Forth'; }
102
+  pre.src-io:before { content: 'IO'; }
103
+  pre.src-J:before { content: 'J'; }
104
+  pre.src-makefile:before { content: 'Makefile'; }
105
+  pre.src-maxima:before { content: 'Maxima'; }
106
+  pre.src-perl:before { content: 'Perl'; }
107
+  pre.src-picolisp:before { content: 'Pico Lisp'; }
108
+  pre.src-scala:before { content: 'Scala'; }
109
+  pre.src-shell:before { content: 'Shell Script'; }
110
+  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
111
+  /* additional language identifiers per "defun org-babel-execute"
112
+       in ob-*.el */
113
+  pre.src-cpp:before  { content: 'C++'; }
114
+  pre.src-abc:before  { content: 'ABC'; }
115
+  pre.src-coq:before  { content: 'Coq'; }
116
+  pre.src-groovy:before  { content: 'Groovy'; }
117
+  /* additional language identifiers from org-babel-shell-names in
118
+     ob-shell.el: ob-shell is the only babel language using a lambda to put
119
+     the execution function name together. */
120
+  pre.src-bash:before  { content: 'bash'; }
121
+  pre.src-csh:before  { content: 'csh'; }
122
+  pre.src-ash:before  { content: 'ash'; }
123
+  pre.src-dash:before  { content: 'dash'; }
124
+  pre.src-ksh:before  { content: 'ksh'; }
125
+  pre.src-mksh:before  { content: 'mksh'; }
126
+  pre.src-posh:before  { content: 'posh'; }
127
+  /* Additional Emacs modes also supported by the LaTeX listings package */
128
+  pre.src-ada:before { content: 'Ada'; }
129
+  pre.src-asm:before { content: 'Assembler'; }
130
+  pre.src-caml:before { content: 'Caml'; }
131
+  pre.src-delphi:before { content: 'Delphi'; }
132
+  pre.src-html:before { content: 'HTML'; }
133
+  pre.src-idl:before { content: 'IDL'; }
134
+  pre.src-mercury:before { content: 'Mercury'; }
135
+  pre.src-metapost:before { content: 'MetaPost'; }
136
+  pre.src-modula-2:before { content: 'Modula-2'; }
137
+  pre.src-pascal:before { content: 'Pascal'; }
138
+  pre.src-ps:before { content: 'PostScript'; }
139
+  pre.src-prolog:before { content: 'Prolog'; }
140
+  pre.src-simula:before { content: 'Simula'; }
141
+  pre.src-tcl:before { content: 'tcl'; }
142
+  pre.src-tex:before { content: 'TeX'; }
143
+  pre.src-plain-tex:before { content: 'Plain TeX'; }
144
+  pre.src-verilog:before { content: 'Verilog'; }
145
+  pre.src-vhdl:before { content: 'VHDL'; }
146
+  pre.src-xml:before { content: 'XML'; }
147
+  pre.src-nxml:before { content: 'XML'; }
148
+  /* add a generic configuration mode; LaTeX export needs an additional
149
+     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
150
+  pre.src-conf:before { content: 'Configuration File'; }
59 151
 
60 152
   table { border-collapse:collapse; }
61 153
   caption.t-above { caption-side: top; }
62 154
   caption.t-bottom { caption-side: bottom; }
63 155
   td, th { vertical-align:top;  }
64
-  th.right  { text-align: center;  }
65
-  th.left   { text-align: center;   }
66
-  th.center { text-align: center; }
67
-  td.right  { text-align: right;  }
68
-  td.left   { text-align: left;   }
69
-  td.center { text-align: center; }
156
+  th.org-right  { text-align: center;  }
157
+  th.org-left   { text-align: center;   }
158
+  th.org-center { text-align: center; }
159
+  td.org-right  { text-align: right;  }
160
+  td.org-left   { text-align: left;   }
161
+  td.org-center { text-align: center; }
70 162
   dt { font-weight: bold; }
71
-  .footpara:nth-child(2) { display: inline; }
72
-  .footpara { display: block; }
163
+  .footpara { display: inline; }
73 164
   .footdef  { margin-bottom: 1em; }
74 165
   .figure { padding: 1em; }
75 166
   .figure p { text-align: center; }
@@ -89,6 +180,7 @@
89 180
     { font-size: 10px; font-weight: bold; white-space: nowrap; }
90 181
   .org-info-js_search-highlight
91 182
     { background-color: #ffff00; color: #000000; font-weight: bold; }
183
+  .org-svg { width: 90%; }
92 184
   /*]]>*/-->
93 185
 </style>
94 186
 <link rel="stylesheet" type="text/css" href="freedombone.css" />
@@ -97,7 +189,7 @@
97 189
 @licstart  The following is the entire license notice for the
98 190
 JavaScript code in this tag.
99 191
 
100
-Copyright (C) 2012-2013 Free Software Foundation, Inc.
192
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
101 193
 
102 194
 The JavaScript code in this tag is free software: you can
103 195
 redistribute it and/or modify it under the terms of the GNU
@@ -144,66 +236,65 @@ for the JavaScript code in this tag.
144 236
 <a name="top" id="top"></a>
145 237
 </div>
146 238
 <div id="content">
147
-<h1 class="title"></h1>
148 239
 
149 240
 <div class="figure">
150 241
 <p><img src="images/logo.png" alt="logo.png" width="80%" height="10%" align="center" />
151 242
 </p>
152 243
 </div>
153 244
 
154
-<div id="outline-container-sec-1" class="outline-2">
155
-<h2 id="sec-1">Installation</h2>
156
-<div class="outline-text-2" id="text-1">
245
+<div id="outline-container-orgaaffe7e" class="outline-2">
246
+<h2 id="orgaaffe7e">Installation</h2>
247
+<div class="outline-text-2" id="text-orgaaffe7e">
157 248
 <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
158 249
 
159 250
 
160 251
 <colgroup>
161
-<col  class="left" />
252
+<col  class="org-left" />
162 253
 </colgroup>
163 254
 <tbody>
164 255
 <tr>
165
-<td class="left"><a href="#sec-2">Building an image for a Single Board Computer or Virtual Machine</a></td>
256
+<td class="org-left"><a href="#org85992f0">Building an image for a Single Board Computer or Virtual Machine</a></td>
166 257
 </tr>
167 258
 
168 259
 <tr>
169
-<td class="left"><a href="#sec-3">Checklist</a></td>
260
+<td class="org-left"><a href="#orga435974">Checklist</a></td>
170 261
 </tr>
171 262
 
172 263
 <tr>
173
-<td class="left"><a href="./mesh.html">Mesh network</a></td>
264
+<td class="org-left"><a href="./mesh.html">Mesh network</a></td>
174 265
 </tr>
175 266
 
176 267
 <tr>
177
-<td class="left"><a href="#sec-1">Installation</a></td>
268
+<td class="org-left"><a href="#orgaaffe7e">Installation</a></td>
178 269
 </tr>
179 270
 
180 271
 <tr>
181
-<td class="left"><a href="#sec-5">Social Key Management - the 'Unforgettable Key'</a></td>
272
+<td class="org-left"><a href="#orgdbb804d">Social Key Management - the 'Unforgettable Key'</a></td>
182 273
 </tr>
183 274
 
184 275
 <tr>
185
-<td class="left"><a href="#sec-6">Final Setup</a></td>
276
+<td class="org-left"><a href="#orgc7f7e79">Final Setup</a></td>
186 277
 </tr>
187 278
 
188 279
 <tr>
189
-<td class="left"><a href="#sec-7">Keydrives</a></td>
280
+<td class="org-left"><a href="#org5c56524">Keydrives</a></td>
190 281
 </tr>
191 282
 
192 283
 <tr>
193
-<td class="left"><a href="#sec-8">On Client Machines</a></td>
284
+<td class="org-left"><a href="#org27e42b6">On Client Machines</a></td>
194 285
 </tr>
195 286
 
196 287
 <tr>
197
-<td class="left"><a href="#sec-9">Administering the system</a></td>
288
+<td class="org-left"><a href="#org24fb926">Administering the system</a></td>
198 289
 </tr>
199 290
 </tbody>
200 291
 </table>
201 292
 </div>
202 293
 </div>
203 294
 
204
-<div id="outline-container-sec-2" class="outline-2">
205
-<h2 id="sec-2">Building an image for a Single Board Computer or Virtual Machine</h2>
206
-<div class="outline-text-2" id="text-2">
295
+<div id="outline-container-org85992f0" class="outline-2">
296
+<h2 id="org85992f0">Building an image for a Single Board Computer or Virtual Machine</h2>
297
+<div class="outline-text-2" id="text-org85992f0">
207 298
 <p>
208 299
 You don't have to trust images downloaded from random internet locations signed with untrusted keys. You can build one from scratch yourself, and this is the recommended procedure for maximum security. For guidance on how to build images see the manpage for the <b>freedombone-image</b> command.
209 300
 </p>
@@ -213,10 +304,9 @@ Install the freedombone commands onto your laptop/desktop:
213 304
 </p>
214 305
 
215 306
 <div class="org-src-container">
216
-
217 307
 <pre class="src src-bash">sudo apt-get install git build-essential dialog
218 308
 git clone https://github.com/bashrc/freedombone
219
-cd freedombone
309
+<span class="org-builtin">cd</span> freedombone
220 310
 git checkout stretch
221 311
 sudo make install
222 312
 </pre>
@@ -227,7 +317,6 @@ Then install packages needed for building images:
227 317
 </p>
228 318
 
229 319
 <div class="org-src-container">
230
-
231 320
 <pre class="src src-bash">freedombone-image --setup debian
232 321
 </pre>
233 322
 </div>
@@ -237,7 +326,6 @@ or on an Arch/Parabola system:
237 326
 </p>
238 327
 
239 328
 <div class="org-src-container">
240
-
241 329
 <pre class="src src-bash">freedombone-image --setup parabola
242 330
 </pre>
243 331
 </div>
@@ -247,7 +335,6 @@ A typical use case to build an 8GB image for a Beaglebone Black is as follows. Y
247 335
 </p>
248 336
 
249 337
 <div class="org-src-container">
250
-
251 338
 <pre class="src src-bash">freedombone-image -t beaglebone -s 8G
252 339
 </pre>
253 340
 </div>
@@ -257,7 +344,6 @@ If you prefer an advanced installation with all of the options available then us
257 344
 </p>
258 345
 
259 346
 <div class="org-src-container">
260
-
261 347
 <pre class="src src-bash">freedombone-image -t beaglebone -s 8G --minimal no
262 348
 </pre>
263 349
 </div>
@@ -267,7 +353,6 @@ To build a 64bit Qemu image:
267 353
 </p>
268 354
 
269 355
 <div class="org-src-container">
270
-
271 356
 <pre class="src src-bash">freedombone-image -t qemu-x86_64 -s 8G
272 357
 </pre>
273 358
 </div>
@@ -281,56 +366,49 @@ If the image build fails with an error such as "<i>Error reading from server. Re
281 366
 </p>
282 367
 
283 368
 <div class="org-src-container">
284
-
285 369
 <pre class="src src-bash">freedombone-image -t beaglebone -s 8G -m http://ftp.de.debian.org/debian
286 370
 </pre>
287 371
 </div>
288 372
 </div>
289 373
 </div>
290 374
 
291
-<div id="outline-container-sec-3" class="outline-2">
292
-<h2 id="sec-3">Checklist</h2>
293
-<div class="outline-text-2" id="text-3">
375
+<div id="outline-container-orga435974" class="outline-2">
376
+<h2 id="orga435974">Checklist</h2>
377
+<div class="outline-text-2" id="text-orga435974">
294 378
 <p>
295 379
 Before installing Freedombone you will need a few things.
296 380
 </p>
297 381
 
298 382
 <ul class="org-ul">
299
-<li>Have some domains, or subdomains, registered with a dynamic DNS service. For the full install you may need two "official" purchased domains or be using a subdomain provider which is supported by Let's Encrypt.
300
-</li>
301
-<li>System with a new installation of Debian Stretch or a downloaded/prepared disk image
302
-</li>
303
-<li>Ethernet connection between the system and your internet router
304
-</li>
305
-<li>That it is possible to forward ports from the internet router to the system, typically via firewall settings
306
-</li>
307
-<li>Have ssh access to the system, typically via fbone@freedombone.local on port 2222
308
-</li>
383
+<li>Have some domains, or subdomains, registered with a dynamic DNS service. For the full install you may need two "official" purchased domains or be using a subdomain provider which is supported by Let's Encrypt.</li>
384
+<li>System with a new installation of Debian Stretch or a downloaded/prepared disk image</li>
385
+<li>Ethernet connection between the system and your internet router</li>
386
+<li>That it is possible to forward ports from the internet router to the system, typically via firewall settings</li>
387
+<li>Have ssh access to the system, typically via fbone@freedombone.local on port 2222</li>
309 388
 </ul>
310 389
 </div>
311 390
 </div>
312
-<div id="outline-container-sec-4" class="outline-2">
313
-<h2 id="sec-4">Installation</h2>
314
-<div class="outline-text-2" id="text-4">
391
+<div id="outline-container-org81afcd3" class="outline-2">
392
+<h2 id="org81afcd3">Installation</h2>
393
+<div class="outline-text-2" id="text-org81afcd3">
315 394
 <p>
316 395
 There are three install options: Laptop/Desktop/Netbook, SBC and Virtual Machine.
317 396
 </p>
318 397
 </div>
319 398
 
320
-<div id="outline-container-sec-4-1" class="outline-3">
321
-<h3 id="sec-4-1">On a Laptop, Netbook or Desktop machine</h3>
322
-<div class="outline-text-3" id="text-4-1">
399
+<div id="outline-container-org8cf2237" class="outline-3">
400
+<h3 id="org8cf2237">On a Laptop, Netbook or Desktop machine</h3>
401
+<div class="outline-text-3" id="text-org8cf2237">
323 402
 <p>
324 403
 If you have an existing system, such as an old laptop or netbook which you can leave running as a server, then install a new version of Debian Stretch onto it. During the Debian install you won't need the print server or the desktop environment, and unchecking those will reduce the attack surface. Once Debian enter the following commands:
325 404
 </p>
326 405
 
327 406
 <div class="org-src-container">
328
-
329 407
 <pre class="src src-bash">su
330 408
 apt-get update
331 409
 apt-get -y install git dialog build-essential
332 410
 git clone https://github.com/bashrc/freedombone
333
-cd freedombone
411
+<span class="org-builtin">cd</span> freedombone
334 412
 git checkout stretch
335 413
 make install
336 414
 freedombone menuconfig
@@ -339,28 +417,21 @@ freedombone menuconfig
339 417
 </div>
340 418
 </div>
341 419
 
342
-<div id="outline-container-sec-4-2" class="outline-3">
343
-<h3 id="sec-4-2">On a single board computer (SBC)</h3>
344
-<div class="outline-text-3" id="text-4-2">
420
+<div id="outline-container-orge5e5408" class="outline-3">
421
+<h3 id="orge5e5408">On a single board computer (SBC)</h3>
422
+<div class="outline-text-3" id="text-orge5e5408">
345 423
 <p>
346 424
 Currently the following boards are supported:
347 425
 </p>
348 426
 
349 427
 <ul class="org-ul">
350
-<li><a href="https://beagleboard.org/BLACK">Beaglebone Black</a>
351
-</li>
352
-<li><a href="https://linux-sunxi.org/Cubietech_Cubieboard2">Cubieboard 2</a>
353
-</li>
354
-<li><a href="https://linux-sunxi.org/Cubietruck">Cubietruck (Cubieboard 3)</a>
355
-</li>
356
-<li><a href="https://www.sparkfun.com/products/retired/12856">PCDuino3</a>
357
-</li>
358
-<li><a href="https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-LIME/open-source-hardware">olinuxino Lime</a>
359
-</li>
360
-<li><a href="https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-LIME2/open-source-hardware">olinuxino Lime2</a>
361
-</li>
362
-<li><a href="https://www.olimex.com/Products/OlinuXino/A20/A20-OlinuXino-MICRO/open-source-hardware">olinuxino Micro</a>
363
-</li>
428
+<li><a href="https://beagleboard.org/BLACK">Beaglebone Black</a></li>
429
+<li><a href="https://linux-sunxi.org/Cubietech_Cubieboard2">Cubieboard 2</a></li>
430
+<li><a href="https://linux-sunxi.org/Cubietruck">Cubietruck (Cubieboard 3)</a></li>
431
+<li><a href="https://www.sparkfun.com/products/retired/12856">PCDuino3</a></li>
432
+<li><a href="https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-LIME/open-source-hardware">olinuxino Lime</a></li>
433
+<li><a href="https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-LIME2/open-source-hardware">olinuxino Lime2</a></li>
434
+<li><a href="https://www.olimex.com/Products/OlinuXino/A20/A20-OlinuXino-MICRO/open-source-hardware">olinuxino Micro</a></li>
364 435
 </ul>
365 436
 
366 437
 <p>
@@ -368,7 +439,6 @@ If there is no existing image available then you can build one from scratch. See
368 439
 </p>
369 440
 
370 441
 <div class="org-src-container">
371
-
372 442
 <pre class="src src-bash">gpg --verify filename.img.asc
373 443
 </pre>
374 444
 </div>
@@ -378,7 +448,6 @@ And the hash with:
378 448
 </p>
379 449
 
380 450
 <div class="org-src-container">
381
-
382 451
 <pre class="src src-bash">sha256sum filename.img
383 452
 </pre>
384 453
 </div>
@@ -388,7 +457,6 @@ If the image is compressed then decompress it with:
388 457
 </p>
389 458
 
390 459
 <div class="org-src-container">
391
-
392 460
 <pre class="src src-bash">unxz filename.img.xz
393 461
 </pre>
394 462
 </div>
@@ -398,8 +466,7 @@ Then copy it to a microSD card. Depending on your system you may need an adaptor
398 466
 </p>
399 467
 
400 468
 <div class="org-src-container">
401
-
402
-<pre class="src src-bash">sudo dd bs=1M if=filename.img of=/dev/sdX conv=fdatasync
469
+<pre class="src src-bash">sudo dd <span class="org-variable-name">bs</span>=32M <span class="org-variable-name">if</span>=filename.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
403 470
 </pre>
404 471
 </div>
405 472
 
@@ -408,7 +475,6 @@ Where <b>sdX</b> is the microSD drive. You can check which drive is the microSD
408 475
 </p>
409 476
 
410 477
 <div class="org-src-container">
411
-
412 478
 <pre class="src src-bash">ls /dev/sd*
413 479
 </pre>
414 480
 </div>
@@ -422,7 +488,6 @@ With the board connected and running you can ssh into the system with:
422 488
 </p>
423 489
 
424 490
 <div class="org-src-container">
425
-
426 491
 <pre class="src src-bash">ssh fbone@freedombone.local -p 2222
427 492
 </pre>
428 493
 </div>
@@ -433,15 +498,14 @@ Using the password 'freedombone'. Take a note of the new login password and then
433 498
 </div>
434 499
 </div>
435 500
 
436
-<div id="outline-container-sec-4-3" class="outline-3">
437
-<h3 id="sec-4-3">As a Virtual Machine</h3>
438
-<div class="outline-text-3" id="text-4-3">
501
+<div id="outline-container-org9ae9946" class="outline-3">
502
+<h3 id="org9ae9946">As a Virtual Machine</h3>
503
+<div class="outline-text-3" id="text-org9ae9946">
439 504
 <p>
440 505
 Qemu is currently supported, since it's s fully free software system. You can run a 64 bit Qemu image with:
441 506
 </p>
442 507
 
443 508
 <div class="org-src-container">
444
-
445 509
 <pre class="src src-bash">qemu-system-x86_64 -m 1G filename.img
446 510
 </pre>
447 511
 </div>
@@ -453,42 +517,42 @@ The default login will be username 'fbone' and password 'freedombone'. Take a no
453 517
 </div>
454 518
 </div>
455 519
 
456
-<div id="outline-container-sec-5" class="outline-2">
457
-<h2 id="sec-5">Social Key Management - the 'Unforgettable Key'</h2>
458
-<div class="outline-text-2" id="text-5">
520
+<div id="outline-container-orgdbb804d" class="outline-2">
521
+<h2 id="orgdbb804d">Social Key Management - the 'Unforgettable Key'</h2>
522
+<div class="outline-text-2" id="text-orgdbb804d">
459 523
 <p>
460 524
 During the install procedure you will be asked 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
461 525
 </p>
462 526
 </div>
463 527
 
464
-<div id="outline-container-sec-5-1" class="outline-3">
465
-<h3 id="sec-5-1">You have the gnupg keyring on an encrypted USB drive</h3>
466
-<div class="outline-text-3" id="text-5-1">
528
+<div id="outline-container-orgea070ec" class="outline-3">
529
+<h3 id="orgea070ec">You have the gnupg keyring on an encrypted USB drive</h3>
530
+<div class="outline-text-3" id="text-orgea070ec">
467 531
 <p>
468 532
 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.
469 533
 </p>
470 534
 </div>
471 535
 </div>
472
-<div id="outline-container-sec-5-2" class="outline-3">
473
-<h3 id="sec-5-2">You have a number of key fragments on USB drives retrieved from friends</h3>
474
-<div class="outline-text-3" id="text-5-2">
536
+<div id="outline-container-org08d572c" class="outline-3">
537
+<h3 id="org08d572c">You have a number of key fragments on USB drives retrieved from friends</h3>
538
+<div class="outline-text-3" id="text-org08d572c">
475 539
 <p>
476
-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="#sec-7">Keydrives</a>.
540
+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="#org5c56524">Keydrives</a>.
477 541
 </p>
478 542
 </div>
479 543
 </div>
480
-<div id="outline-container-sec-5-3" class="outline-3">
481
-<h3 id="sec-5-3">You can specify some ssh login details for friends servers containing key fragments</h3>
482
-<div class="outline-text-3" id="text-5-3">
544
+<div id="outline-container-orgf13618c" class="outline-3">
545
+<h3 id="orgf13618c">You can specify some ssh login details for friends servers containing key fragments</h3>
546
+<div class="outline-text-3" id="text-orgf13618c">
483 547
 <p>
484 548
 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.
485 549
 </p>
486 550
 </div>
487 551
 </div>
488 552
 </div>
489
-<div id="outline-container-sec-6" class="outline-2">
490
-<h2 id="sec-6">Final Setup</h2>
491
-<div class="outline-text-2" id="text-6">
553
+<div id="outline-container-orgc7f7e79" class="outline-2">
554
+<h2 id="orgc7f7e79">Final Setup</h2>
555
+<div class="outline-text-2" id="text-orgc7f7e79">
492 556
 <p>
493 557
 Any manual post-installation setup instructions or passwords can be found in /home/username/README.
494 558
 </p>
@@ -501,127 +565,126 @@ On your internet router, typically under firewall settings, open the following p
501 565
 
502 566
 
503 567
 <colgroup>
504
-<col  class="left" />
568
+<col  class="org-left" />
505 569
 
506
-<col  class="right" />
570
+<col  class="org-right" />
507 571
 </colgroup>
508 572
 <thead>
509 573
 <tr>
510
-<th scope="col" class="left">Service</th>
511
-<th scope="col" class="right">Ports</th>
574
+<th scope="col" class="org-left">Service</th>
575
+<th scope="col" class="org-right">Ports</th>
512 576
 </tr>
513 577
 </thead>
514 578
 <tbody>
515 579
 <tr>
516
-<td class="left">HTTP</td>
517
-<td class="right">80</td>
580
+<td class="org-left">HTTP</td>
581
+<td class="org-right">80</td>
518 582
 </tr>
519 583
 
520 584
 <tr>
521
-<td class="left">HTTPS</td>
522
-<td class="right">443</td>
585
+<td class="org-left">HTTPS</td>
586
+<td class="org-right">443</td>
523 587
 </tr>
524 588
 
525 589
 <tr>
526
-<td class="left">SSH</td>
527
-<td class="right">2222</td>
590
+<td class="org-left">SSH</td>
591
+<td class="org-right">2222</td>
528 592
 </tr>
529 593
 
530 594
 <tr>
531
-<td class="left">DLNA</td>
532
-<td class="right">1900</td>
595
+<td class="org-left">DLNA</td>
596
+<td class="org-right">1900</td>
533 597
 </tr>
534 598
 
535 599
 <tr>
536
-<td class="left">DLNA</td>
537
-<td class="right">8200</td>
600
+<td class="org-left">DLNA</td>
601
+<td class="org-right">8200</td>
538 602
 </tr>
539 603
 
540 604
 <tr>
541
-<td class="left">XMPP</td>
542
-<td class="right">5222..5223</td>
605
+<td class="org-left">XMPP</td>
606
+<td class="org-right">5222..5223</td>
543 607
 </tr>
544 608
 
545 609
 <tr>
546
-<td class="left">XMPP</td>
547
-<td class="right">5269</td>
610
+<td class="org-left">XMPP</td>
611
+<td class="org-right">5269</td>
548 612
 </tr>
549 613
 
550 614
 <tr>
551
-<td class="left">XMPP</td>
552
-<td class="right">5280..5281</td>
615
+<td class="org-left">XMPP</td>
616
+<td class="org-right">5280..5281</td>
553 617
 </tr>
554 618
 
555 619
 <tr>
556
-<td class="left">IRC</td>
557
-<td class="right">6697</td>
620
+<td class="org-left">IRC</td>
621
+<td class="org-right">6697</td>
558 622
 </tr>
559 623
 
560 624
 <tr>
561
-<td class="left">Git</td>
562
-<td class="right">9418</td>
625
+<td class="org-left">Git</td>
626
+<td class="org-right">9418</td>
563 627
 </tr>
564 628
 
565 629
 <tr>
566
-<td class="left">Email</td>
567
-<td class="right">25</td>
630
+<td class="org-left">Email</td>
631
+<td class="org-right">25</td>
568 632
 </tr>
569 633
 
570 634
 <tr>
571
-<td class="left">Email</td>
572
-<td class="right">587</td>
635
+<td class="org-left">Email</td>
636
+<td class="org-right">587</td>
573 637
 </tr>
574 638
 
575 639
 <tr>
576
-<td class="left">Email</td>
577
-<td class="right">465</td>
640
+<td class="org-left">Email</td>
641
+<td class="org-right">465</td>
578 642
 </tr>
579 643
 
580 644
 <tr>
581
-<td class="left">Email</td>
582
-<td class="right">993</td>
645
+<td class="org-left">Email</td>
646
+<td class="org-right">993</td>
583 647
 </tr>
584 648
 
585 649
 <tr>
586
-<td class="left">VoIP</td>
587
-<td class="right">64738</td>
650
+<td class="org-left">VoIP</td>
651
+<td class="org-right">64738</td>
588 652
 </tr>
589 653
 
590 654
 <tr>
591
-<td class="left">VoIP</td>
592
-<td class="right">5060</td>
655
+<td class="org-left">VoIP</td>
656
+<td class="org-right">5060</td>
593 657
 </tr>
594 658
 
595 659
 <tr>
596
-<td class="left">Tox</td>
597
-<td class="right">33445</td>
660
+<td class="org-left">Tox</td>
661
+<td class="org-right">33445</td>
598 662
 </tr>
599 663
 
600 664
 <tr>
601
-<td class="left">Syncthing</td>
602
-<td class="right">22000</td>
665
+<td class="org-left">Syncthing</td>
666
+<td class="org-right">22000</td>
603 667
 </tr>
604 668
 </tbody>
605 669
 </table>
606 670
 </div>
607 671
 </div>
608 672
 
609
-<div id="outline-container-sec-7" class="outline-2">
610
-<h2 id="sec-7">Keydrives</h2>
611
-<div class="outline-text-2" id="text-7">
673
+<div id="outline-container-org5c56524" class="outline-2">
674
+<h2 id="org5c56524">Keydrives</h2>
675
+<div class="outline-text-2" id="text-org5c56524">
612 676
 <p>
613 677
 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:
614 678
 </p>
615 679
 </div>
616
-<div id="outline-container-sec-7-1" class="outline-3">
617
-<h3 id="sec-7-1">Master Keydrive</h3>
618
-<div class="outline-text-3" id="text-7-1">
680
+<div id="outline-container-orga8df9a9" class="outline-3">
681
+<h3 id="orga8df9a9">Master Keydrive</h3>
682
+<div class="outline-text-3" id="text-orga8df9a9">
619 683
 <p>
620 684
 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:
621 685
 </p>
622 686
 
623 687
 <div class="org-src-container">
624
-
625 688
 <pre class="src src-bash">ssh myusername@mydomainname -p 2222
626 689
 </pre>
627 690
 </div>
@@ -631,15 +694,14 @@ Select <i>Administrator controls</i> then <i>Backup and Restore</i> then <i>Back
631 694
 </p>
632 695
 </div>
633 696
 </div>
634
-<div id="outline-container-sec-7-2" class="outline-3">
635
-<h3 id="sec-7-2">Fragment keydrives</h3>
636
-<div class="outline-text-3" id="text-7-2">
697
+<div id="outline-container-orgfbd6e5b" class="outline-3">
698
+<h3 id="orgfbd6e5b">Fragment keydrives</h3>
699
+<div class="outline-text-3" id="text-orgfbd6e5b">
637 700
 <p>
638 701
 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:
639 702
 </p>
640 703
 
641 704
 <div class="org-src-container">
642
-
643 705
 <pre class="src src-bash">ssh myusername@mydomainname -p 2222
644 706
 </pre>
645 707
 </div>
@@ -654,19 +716,18 @@ Fragments are randomly assigned and so you will need at least three or four keyd
654 716
 </div>
655 717
 </div>
656 718
 </div>
657
-<div id="outline-container-sec-8" class="outline-2">
658
-<h2 id="sec-8">On Client Machines</h2>
659
-<div class="outline-text-2" id="text-8">
719
+<div id="outline-container-org27e42b6" class="outline-2">
720
+<h2 id="org27e42b6">On Client Machines</h2>
721
+<div class="outline-text-2" id="text-org27e42b6">
660 722
 <p>
661 723
 You can configure laptops or desktop machines which connect to the Freedombone server in the following way. This alters encryption settings to improve overall security.
662 724
 </p>
663 725
 
664 726
 <div class="org-src-container">
665
-
666 727
 <pre class="src src-bash">sudo apt-get update
667 728
 sudo apt-get install git dialog haveged build-essential
668 729
 git clone https://github.com/bashrc/freedombone
669
-cd freedombone
730
+<span class="org-builtin">cd</span> freedombone
670 731
 git checkout stretch
671 732
 sudo make install
672 733
 freedombone-client
@@ -675,15 +736,14 @@ freedombone-client
675 736
 </div>
676 737
 </div>
677 738
 
678
-<div id="outline-container-sec-9" class="outline-2">
679
-<h2 id="sec-9">Administering the system</h2>
680
-<div class="outline-text-2" id="text-9">
739
+<div id="outline-container-org24fb926" class="outline-2">
740
+<h2 id="org24fb926">Administering the system</h2>
741
+<div class="outline-text-2" id="text-org24fb926">
681 742
 <p>
682 743
 To administer the system after installation log in via ssh, become the root user and then launch the control panel.
683 744
 </p>
684 745
 
685 746
 <div class="org-src-container">
686
-
687 747
 <pre class="src src-bash">ssh myusername@freedombone.local -p 2222
688 748
 </pre>
689 749
 </div>
@@ -692,14 +752,9 @@ To administer the system after installation log in via ssh, become the root user
692 752
 Select <i>Administrator controls</i> then from there you will be able to perform various tasks, such as backups, adding and removing users and so on. You can also do this via commands, which are typically installed as /usr/local/bin/freedombone* and the corresponding manpages.
693 753
 </p>
694 754
 
695
-<div class="export">
696
-<p>
697
-&lt;center&gt;
698
-Return to the &lt;a href="index.html"&gt;home page&lt;/a&gt;
699
-&lt;/center&gt;
700
-</p>
701
-
702
-</div>
755
+<center>
756
+Return to the <a href="index.html">home page</a>
757
+</center>
703 758
 </div>
704 759
 </div>
705 760
 </div>

+ 136
- 61
website/EN/mesh_capabilities.html 查看文件

@@ -3,26 +3,33 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<title></title>
7
-<!-- 2018-04-12 Thu 18:24 -->
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="Freedombone mesh network capabilities"
6
+<!-- 2018-04-22 Sun 10:31 -->
7
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
+<meta name="viewport" content="width=device-width, initial-scale=1" />
9
+<title>&lrm;</title>
10
+<meta name="generator" content="Org mode" />
11
+<meta name="author" content="Bob Mottram" />
12
+<meta name="description" content="Freedombone mesh network capabilities"
12 13
  />
13
-<meta  name="keywords" content="freedombone, mesh" />
14
+<meta name="keywords" content="freedombone, mesh" />
14 15
 <style type="text/css">
15 16
  <!--/*--><![CDATA[/*><!--*/
16
-  .title  { text-align: center; }
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; }
17 23
   .todo   { font-family: monospace; color: red; }
18
-  .done   { color: green; }
24
+  .done   { font-family: monospace; color: green; }
25
+  .priority { font-family: monospace; color: orange; }
19 26
   .tag    { background-color: #eee; font-family: monospace;
20 27
             padding: 2px; font-size: 80%; font-weight: normal; }
21 28
   .timestamp { color: #bebebe; }
22 29
   .timestamp-kwd { color: #5f9ea0; }
23
-  .right  { margin-left: auto; margin-right: 0px;  text-align: right; }
24
-  .left   { margin-left: 0px;  margin-right: auto; text-align: left; }
25
-  .center { margin-left: auto; margin-right: auto; text-align: center; }
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; }
26 33
   .underline { text-decoration: underline; }
27 34
   #postamble p, #preamble p { font-size: 90%; margin: .2em; }
28 35
   p.verse { margin-left: 3%; }
@@ -49,27 +56,111 @@
49 56
     border: 1px solid black;
50 57
   }
51 58
   pre.src:hover:before { display: inline;}
52
-  pre.src-sh:before    { content: 'sh'; }
53
-  pre.src-bash:before  { content: 'sh'; }
59
+  /* Languages per Org manual */
60
+  pre.src-asymptote:before { content: 'Asymptote'; }
61
+  pre.src-awk:before { content: 'Awk'; }
62
+  pre.src-C:before { content: 'C'; }
63
+  /* pre.src-C++ doesn't work in CSS */
64
+  pre.src-clojure:before { content: 'Clojure'; }
65
+  pre.src-css:before { content: 'CSS'; }
66
+  pre.src-D:before { content: 'D'; }
67
+  pre.src-ditaa:before { content: 'ditaa'; }
68
+  pre.src-dot:before { content: 'Graphviz'; }
69
+  pre.src-calc:before { content: 'Emacs Calc'; }
54 70
   pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
55
-  pre.src-R:before     { content: 'R'; }
56
-  pre.src-perl:before  { content: 'Perl'; }
57
-  pre.src-java:before  { content: 'Java'; }
58
-  pre.src-sql:before   { content: 'SQL'; }
71
+  pre.src-fortran:before { content: 'Fortran'; }
72
+  pre.src-gnuplot:before { content: 'gnuplot'; }
73
+  pre.src-haskell:before { content: 'Haskell'; }
74
+  pre.src-hledger:before { content: 'hledger'; }
75
+  pre.src-java:before { content: 'Java'; }
76
+  pre.src-js:before { content: 'Javascript'; }
77
+  pre.src-latex:before { content: 'LaTeX'; }
78
+  pre.src-ledger:before { content: 'Ledger'; }
79
+  pre.src-lisp:before { content: 'Lisp'; }
80
+  pre.src-lilypond:before { content: 'Lilypond'; }
81
+  pre.src-lua:before { content: 'Lua'; }
82
+  pre.src-matlab:before { content: 'MATLAB'; }
83
+  pre.src-mscgen:before { content: 'Mscgen'; }
84
+  pre.src-ocaml:before { content: 'Objective Caml'; }
85
+  pre.src-octave:before { content: 'Octave'; }
86
+  pre.src-org:before { content: 'Org mode'; }
87
+  pre.src-oz:before { content: 'OZ'; }
88
+  pre.src-plantuml:before { content: 'Plantuml'; }
89
+  pre.src-processing:before { content: 'Processing.js'; }
90
+  pre.src-python:before { content: 'Python'; }
91
+  pre.src-R:before { content: 'R'; }
92
+  pre.src-ruby:before { content: 'Ruby'; }
93
+  pre.src-sass:before { content: 'Sass'; }
94
+  pre.src-scheme:before { content: 'Scheme'; }
95
+  pre.src-screen:before { content: 'Gnu Screen'; }
96
+  pre.src-sed:before { content: 'Sed'; }
97
+  pre.src-sh:before { content: 'shell'; }
98
+  pre.src-sql:before { content: 'SQL'; }
99
+  pre.src-sqlite:before { content: 'SQLite'; }
100
+  /* additional languages in org.el's org-babel-load-languages alist */
101
+  pre.src-forth:before { content: 'Forth'; }
102
+  pre.src-io:before { content: 'IO'; }
103
+  pre.src-J:before { content: 'J'; }
104
+  pre.src-makefile:before { content: 'Makefile'; }
105
+  pre.src-maxima:before { content: 'Maxima'; }
106
+  pre.src-perl:before { content: 'Perl'; }
107
+  pre.src-picolisp:before { content: 'Pico Lisp'; }
108
+  pre.src-scala:before { content: 'Scala'; }
109
+  pre.src-shell:before { content: 'Shell Script'; }
110
+  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
111
+  /* additional language identifiers per "defun org-babel-execute"
112
+       in ob-*.el */
113
+  pre.src-cpp:before  { content: 'C++'; }
114
+  pre.src-abc:before  { content: 'ABC'; }
115
+  pre.src-coq:before  { content: 'Coq'; }
116
+  pre.src-groovy:before  { content: 'Groovy'; }
117
+  /* additional language identifiers from org-babel-shell-names in
118
+     ob-shell.el: ob-shell is the only babel language using a lambda to put
119
+     the execution function name together. */
120
+  pre.src-bash:before  { content: 'bash'; }
121
+  pre.src-csh:before  { content: 'csh'; }
122
+  pre.src-ash:before  { content: 'ash'; }
123
+  pre.src-dash:before  { content: 'dash'; }
124
+  pre.src-ksh:before  { content: 'ksh'; }
125
+  pre.src-mksh:before  { content: 'mksh'; }
126
+  pre.src-posh:before  { content: 'posh'; }
127
+  /* Additional Emacs modes also supported by the LaTeX listings package */
128
+  pre.src-ada:before { content: 'Ada'; }
129
+  pre.src-asm:before { content: 'Assembler'; }
130
+  pre.src-caml:before { content: 'Caml'; }
131
+  pre.src-delphi:before { content: 'Delphi'; }
132
+  pre.src-html:before { content: 'HTML'; }
133
+  pre.src-idl:before { content: 'IDL'; }
134
+  pre.src-mercury:before { content: 'Mercury'; }
135
+  pre.src-metapost:before { content: 'MetaPost'; }
136
+  pre.src-modula-2:before { content: 'Modula-2'; }
137
+  pre.src-pascal:before { content: 'Pascal'; }
138
+  pre.src-ps:before { content: 'PostScript'; }
139
+  pre.src-prolog:before { content: 'Prolog'; }
140
+  pre.src-simula:before { content: 'Simula'; }
141
+  pre.src-tcl:before { content: 'tcl'; }
142
+  pre.src-tex:before { content: 'TeX'; }
143
+  pre.src-plain-tex:before { content: 'Plain TeX'; }
144
+  pre.src-verilog:before { content: 'Verilog'; }
145
+  pre.src-vhdl:before { content: 'VHDL'; }
146
+  pre.src-xml:before { content: 'XML'; }
147
+  pre.src-nxml:before { content: 'XML'; }
148
+  /* add a generic configuration mode; LaTeX export needs an additional
149
+     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
150
+  pre.src-conf:before { content: 'Configuration File'; }
59 151
 
60 152
   table { border-collapse:collapse; }
61 153
   caption.t-above { caption-side: top; }
62 154
   caption.t-bottom { caption-side: bottom; }
63 155
   td, th { vertical-align:top;  }
64
-  th.right  { text-align: center;  }
65
-  th.left   { text-align: center;   }
66
-  th.center { text-align: center; }
67
-  td.right  { text-align: right;  }
68
-  td.left   { text-align: left;   }
69
-  td.center { text-align: center; }
156
+  th.org-right  { text-align: center;  }
157
+  th.org-left   { text-align: center;   }
158
+  th.org-center { text-align: center; }
159
+  td.org-right  { text-align: right;  }
160
+  td.org-left   { text-align: left;   }
161
+  td.org-center { text-align: center; }
70 162
   dt { font-weight: bold; }
71
-  .footpara:nth-child(2) { display: inline; }
72
-  .footpara { display: block; }
163
+  .footpara { display: inline; }
73 164
   .footdef  { margin-bottom: 1em; }
74 165
   .figure { padding: 1em; }
75 166
   .figure p { text-align: center; }
@@ -89,6 +180,7 @@
89 180
     { font-size: 10px; font-weight: bold; white-space: nowrap; }
90 181
   .org-info-js_search-highlight
91 182
     { background-color: #ffff00; color: #000000; font-weight: bold; }
183
+  .org-svg { width: 90%; }
92 184
   /*]]>*/-->
93 185
 </style>
94 186
 <link rel="stylesheet" type="text/css" href="freedombone.css" />
@@ -97,7 +189,7 @@
97 189
 @licstart  The following is the entire license notice for the
98 190
 JavaScript code in this tag.
99 191
 
100
-Copyright (C) 2012-2013 Free Software Foundation, Inc.
192
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
101 193
 
102 194
 The JavaScript code in this tag is free software: you can
103 195
 redistribute it and/or modify it under the terms of the GNU
@@ -144,51 +236,34 @@ for the JavaScript code in this tag.
144 236
 <a name="top" id="top"></a>
145 237
 </div>
146 238
 <div id="content">
147
-<h1 class="title"></h1>
148 239
 
149 240
 <div class="figure">
150 241
 <p><img src="images/logo.png" alt="logo.png" width="80%" height="10%" align="center" />
151 242
 </p>
152 243
 </div>
153 244
 
154
-<div id="outline-container-sec-1" class="outline-2">
155
-<h2 id="sec-1">Mesh Network: Capabilities</h2>
156
-<div class="outline-text-2" id="text-1">
245
+<div id="outline-container-org19c4251" class="outline-2">
246
+<h2 id="org19c4251">Mesh Network: Capabilities</h2>
247
+<div class="outline-text-2" id="text-org19c4251">
157 248
 <p>
158 249
 The mesh system has the following capabilities:
159 250
 </p>
160 251
 
161 252
 <ul class="org-ul">
162
-<li>Discovery of other users on the network
163
-</li>
164
-<li>Text based chat, one-to-one and in groups
165
-</li>
166
-<li>Voice chat (VoIP) and video calls
167
-</li>
168
-<li>Private and public sharing of files
169
-</li>
170
-<li>Blogging
171
-</li>
172
-<li>Collaborative editing of documents and presentations
173
-</li>
174
-<li>Creating and broadcasting audio media/podcasts
175
-</li>
176
-<li>Social network stream. Follow/unfollow other peers
177
-</li>
178
-<li>No network administration required
179
-</li>
180
-<li>No servers
181
-</li>
182
-<li>Internet connection is optional
183
-</li>
184
-<li>Works from bootable USB drives or microSD drives
185
-</li>
186
-<li>Data is mesh routed between systems
187
-</li>
188
-<li>Private communications is end-to-end secured and forward secret
189
-</li>
190
-<li>Publicly shared data is <i>content addressable</i>
191
-</li>
253
+<li>Discovery of other users on the network</li>
254
+<li>Text based chat, one-to-one and in groups</li>
255
+<li>Voice chat (VoIP) and video calls</li>
256
+<li>Private and public sharing of files</li>
257
+<li>Blogging</li>
258
+<li>Collaborative editing of documents and presentations</li>
259
+<li>Social network stream. Follow/unfollow other peers</li>
260
+<li>No network administration required</li>
261
+<li>No servers</li>
262
+<li>Internet connection is optional</li>
263
+<li>Works from bootable USB drives or microSD drives</li>
264
+<li>Data is mesh routed between systems</li>
265
+<li>Private communications is end-to-end secured and forward secret</li>
266
+<li>Publicly shared data is <i>content addressable</i></li>
192 267
 </ul>
193 268
 
194 269
 <p>

+ 28
- 28
website/EN/mesh_images.html 查看文件

@@ -3,7 +3,7 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<!-- 2018-04-15 Sun 18:25 -->
6
+<!-- 2018-04-21 Sat 14:59 -->
7 7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8 8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
9 9
 <title>&lrm;</title>
@@ -242,17 +242,17 @@ for the JavaScript code in this tag.
242 242
 </p>
243 243
 </div>
244 244
 
245
-<div id="outline-container-orgd03cecc" class="outline-2">
246
-<h2 id="orgd03cecc">Mesh Network: Images</h2>
245
+<div id="outline-container-org86cebe1" class="outline-2">
246
+<h2 id="org86cebe1">Mesh Network: Images</h2>
247 247
 </div>
248 248
 
249
-<div id="outline-container-org2613bbd" class="outline-2">
250
-<h2 id="org2613bbd">Pre-built Disk Images</h2>
251
-<div class="outline-text-2" id="text-org2613bbd">
249
+<div id="outline-container-org144a10d" class="outline-2">
250
+<h2 id="org144a10d">Pre-built Disk Images</h2>
251
+<div class="outline-text-2" id="text-org144a10d">
252 252
 </div>
253
-<div id="outline-container-org3cdda6d" class="outline-3">
254
-<h3 id="org3cdda6d">Writing many images quickly</h3>
255
-<div class="outline-text-3" id="text-org3cdda6d">
253
+<div id="outline-container-org4231464" class="outline-3">
254
+<h3 id="org4231464">Writing many images quickly</h3>
255
+<div class="outline-text-3" id="text-org4231464">
256 256
 <p>
257 257
 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>.
258 258
 </p>
@@ -280,9 +280,9 @@ The MultiWriter tool is also available within mesh client images, so that you ca
280 280
 </p>
281 281
 </div>
282 282
 </div>
283
-<div id="outline-container-org41f717a" class="outline-3">
284
-<h3 id="org41f717a">Client images</h3>
285
-<div class="outline-text-3" id="text-org41f717a">
283
+<div id="outline-container-org47d0e94" class="outline-3">
284
+<h3 id="org47d0e94">Client images</h3>
285
+<div class="outline-text-3" id="text-org47d0e94">
286 286
 
287 287
 <div class="figure">
288 288
 <p><img src="images/mesh_netbook.jpg" alt="mesh_netbook.jpg" width="100%" align="center" />
@@ -299,8 +299,8 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-i386.img.xz
299 299
 wget https://freedombone.net/downloads/v31/freedombone-meshclient-i386.img.xz.sig
300 300
 gpg --verify freedombone-meshclient-i386.img.xz.sig
301 301
 unxz freedombone-meshclient-i386.img.xz
302
-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
303
-sudo dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=freedombone-meshclient-i386.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
302
+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>=32M <span class="org-variable-name">count</span>=8
303
+sudo dd <span class="org-variable-name">bs</span>=32M <span class="org-variable-name">if</span>=freedombone-meshclient-i386.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
304 304
 </pre>
305 305
 </div>
306 306
 
@@ -318,23 +318,23 @@ wget https://freedombone.net/downloads/v31/freedombone-meshclient-insecure-i386.
318 318
 wget https://freedombone.net/downloads/v31/freedombone-meshclient-insecure-i386.img.xz.sig
319 319
 gpg --verify freedombone-meshclient-insecure-i386.img.xz.sig
320 320
 unxz freedombone-meshclient-insecure-i386.img.xz
321
-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
322
-sudo dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=freedombone-meshclient-insecure-i386.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
321
+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>=32M <span class="org-variable-name">count</span>=8
322
+sudo dd <span class="org-variable-name">bs</span>=32M <span class="org-variable-name">if</span>=freedombone-meshclient-insecure-i386.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
323 323
 </pre>
324 324
 </div>
325 325
 </div>
326 326
 </div>
327 327
 
328
-<div id="outline-container-orgbe3f97e" class="outline-3">
329
-<h3 id="orgbe3f97e">Router images</h3>
330
-<div class="outline-text-3" id="text-orgbe3f97e">
328
+<div id="outline-container-orge2c765f" class="outline-3">
329
+<h3 id="orge2c765f">Router images</h3>
330
+<div class="outline-text-3" id="text-orge2c765f">
331 331
 <p>
332 332
 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.
333 333
 </p>
334 334
 </div>
335
-<div id="outline-container-org1859392" class="outline-4">
336
-<h4 id="org1859392">Beaglebone Black</h4>
337
-<div class="outline-text-4" id="text-org1859392">
335
+<div id="outline-container-org0194fde" class="outline-4">
336
+<h4 id="org0194fde">Beaglebone Black</h4>
337
+<div class="outline-text-4" id="text-org0194fde">
338 338
 
339 339
 <div class="figure">
340 340
 <p><img src="images/mesh_router.jpg" alt="mesh_router.jpg" width="50%" align="center" />
@@ -353,7 +353,7 @@ gpg --verify freedombone-mesh_beaglebone-armhf.img.xz.sig
353 353
 sha256sum freedombone-mesh_beaglebone-armhf.img.xz
354 354
 ad8f22c0d46c98a80aa47b5809402971cf5cf26ebf587c59a667307b2386c3d2
355 355
 unxz freedombone-mesh_beaglebone-armhf.img.xz
356
-sudo dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=freedombone-mesh_beaglebone-armhf.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
356
+sudo dd <span class="org-variable-name">bs</span>=32M <span class="org-variable-name">if</span>=freedombone-mesh_beaglebone-armhf.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
357 357
 </pre>
358 358
 </div>
359 359
 
@@ -369,9 +369,9 @@ There is still a software freedom issue with the Beaglebone Black, but it doesn'
369 369
 </div>
370 370
 </div>
371 371
 
372
-<div id="outline-container-orgf16e84d" class="outline-2">
373
-<h2 id="orgf16e84d">Building Disk Images</h2>
374
-<div class="outline-text-2" id="text-orgf16e84d">
372
+<div id="outline-container-orgfcd1440" class="outline-2">
373
+<h2 id="orgfcd1440">Building Disk Images</h2>
374
+<div class="outline-text-2" id="text-orgfcd1440">
375 375
 <p>
376 376
 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.
377 377
 </p>
@@ -425,8 +425,8 @@ You can now copy the image to the USB thumb drive, replacing <b>sdX</b> with the
425 425
 </p>
426 426
 
427 427
 <div class="org-src-container">
428
-<pre 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
429
-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
428
+<pre 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>=32M <span class="org-variable-name">count</span>=8
429
+sudo dd <span class="org-variable-name">bs</span>=32M <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
430 430
 </pre>
431 431
 </div>
432 432
 

+ 136
- 55
website/EN/release3.html 查看文件

@@ -3,26 +3,33 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<title></title>
7
-<!-- 2018-04-12 Thu 13:25 -->
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="Version 3"
6
+<!-- 2018-04-21 Sat 14:59 -->
7
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
+<meta name="viewport" content="width=device-width, initial-scale=1" />
9
+<title>&lrm;</title>
10
+<meta name="generator" content="Org mode" />
11
+<meta name="author" content="Bob Mottram" />
12
+<meta name="description" content="Version 3"
12 13
  />
13
-<meta  name="keywords" content="freedombone" />
14
+<meta name="keywords" content="freedombone" />
14 15
 <style type="text/css">
15 16
  <!--/*--><![CDATA[/*><!--*/
16
-  .title  { text-align: center; }
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; }
17 23
   .todo   { font-family: monospace; color: red; }
18
-  .done   { color: green; }
24
+  .done   { font-family: monospace; color: green; }
25
+  .priority { font-family: monospace; color: orange; }
19 26
   .tag    { background-color: #eee; font-family: monospace;
20 27
             padding: 2px; font-size: 80%; font-weight: normal; }
21 28
   .timestamp { color: #bebebe; }
22 29
   .timestamp-kwd { color: #5f9ea0; }
23
-  .right  { margin-left: auto; margin-right: 0px;  text-align: right; }
24
-  .left   { margin-left: 0px;  margin-right: auto; text-align: left; }
25
-  .center { margin-left: auto; margin-right: auto; text-align: center; }
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; }
26 33
   .underline { text-decoration: underline; }
27 34
   #postamble p, #preamble p { font-size: 90%; margin: .2em; }
28 35
   p.verse { margin-left: 3%; }
@@ -49,27 +56,111 @@
49 56
     border: 1px solid black;
50 57
   }
51 58
   pre.src:hover:before { display: inline;}
52
-  pre.src-sh:before    { content: 'sh'; }
53
-  pre.src-bash:before  { content: 'sh'; }
59
+  /* Languages per Org manual */
60
+  pre.src-asymptote:before { content: 'Asymptote'; }
61
+  pre.src-awk:before { content: 'Awk'; }
62
+  pre.src-C:before { content: 'C'; }
63
+  /* pre.src-C++ doesn't work in CSS */
64
+  pre.src-clojure:before { content: 'Clojure'; }
65
+  pre.src-css:before { content: 'CSS'; }
66
+  pre.src-D:before { content: 'D'; }
67
+  pre.src-ditaa:before { content: 'ditaa'; }
68
+  pre.src-dot:before { content: 'Graphviz'; }
69
+  pre.src-calc:before { content: 'Emacs Calc'; }
54 70
   pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
55
-  pre.src-R:before     { content: 'R'; }
56
-  pre.src-perl:before  { content: 'Perl'; }
57
-  pre.src-java:before  { content: 'Java'; }
58
-  pre.src-sql:before   { content: 'SQL'; }
71
+  pre.src-fortran:before { content: 'Fortran'; }
72
+  pre.src-gnuplot:before { content: 'gnuplot'; }
73
+  pre.src-haskell:before { content: 'Haskell'; }
74
+  pre.src-hledger:before { content: 'hledger'; }
75
+  pre.src-java:before { content: 'Java'; }
76
+  pre.src-js:before { content: 'Javascript'; }
77
+  pre.src-latex:before { content: 'LaTeX'; }
78
+  pre.src-ledger:before { content: 'Ledger'; }
79
+  pre.src-lisp:before { content: 'Lisp'; }
80
+  pre.src-lilypond:before { content: 'Lilypond'; }
81
+  pre.src-lua:before { content: 'Lua'; }
82
+  pre.src-matlab:before { content: 'MATLAB'; }
83
+  pre.src-mscgen:before { content: 'Mscgen'; }
84
+  pre.src-ocaml:before { content: 'Objective Caml'; }
85
+  pre.src-octave:before { content: 'Octave'; }
86
+  pre.src-org:before { content: 'Org mode'; }
87
+  pre.src-oz:before { content: 'OZ'; }
88
+  pre.src-plantuml:before { content: 'Plantuml'; }
89
+  pre.src-processing:before { content: 'Processing.js'; }
90
+  pre.src-python:before { content: 'Python'; }
91
+  pre.src-R:before { content: 'R'; }
92
+  pre.src-ruby:before { content: 'Ruby'; }
93
+  pre.src-sass:before { content: 'Sass'; }
94
+  pre.src-scheme:before { content: 'Scheme'; }
95
+  pre.src-screen:before { content: 'Gnu Screen'; }
96
+  pre.src-sed:before { content: 'Sed'; }
97
+  pre.src-sh:before { content: 'shell'; }
98
+  pre.src-sql:before { content: 'SQL'; }
99
+  pre.src-sqlite:before { content: 'SQLite'; }
100
+  /* additional languages in org.el's org-babel-load-languages alist */
101
+  pre.src-forth:before { content: 'Forth'; }
102
+  pre.src-io:before { content: 'IO'; }
103
+  pre.src-J:before { content: 'J'; }
104
+  pre.src-makefile:before { content: 'Makefile'; }
105
+  pre.src-maxima:before { content: 'Maxima'; }
106
+  pre.src-perl:before { content: 'Perl'; }
107
+  pre.src-picolisp:before { content: 'Pico Lisp'; }
108
+  pre.src-scala:before { content: 'Scala'; }
109
+  pre.src-shell:before { content: 'Shell Script'; }
110
+  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
111
+  /* additional language identifiers per "defun org-babel-execute"
112
+       in ob-*.el */
113
+  pre.src-cpp:before  { content: 'C++'; }
114
+  pre.src-abc:before  { content: 'ABC'; }
115
+  pre.src-coq:before  { content: 'Coq'; }
116
+  pre.src-groovy:before  { content: 'Groovy'; }
117
+  /* additional language identifiers from org-babel-shell-names in
118
+     ob-shell.el: ob-shell is the only babel language using a lambda to put
119
+     the execution function name together. */
120
+  pre.src-bash:before  { content: 'bash'; }
121
+  pre.src-csh:before  { content: 'csh'; }
122
+  pre.src-ash:before  { content: 'ash'; }
123
+  pre.src-dash:before  { content: 'dash'; }
124
+  pre.src-ksh:before  { content: 'ksh'; }
125
+  pre.src-mksh:before  { content: 'mksh'; }
126
+  pre.src-posh:before  { content: 'posh'; }
127
+  /* Additional Emacs modes also supported by the LaTeX listings package */
128
+  pre.src-ada:before { content: 'Ada'; }
129
+  pre.src-asm:before { content: 'Assembler'; }
130
+  pre.src-caml:before { content: 'Caml'; }
131
+  pre.src-delphi:before { content: 'Delphi'; }
132
+  pre.src-html:before { content: 'HTML'; }
133
+  pre.src-idl:before { content: 'IDL'; }
134
+  pre.src-mercury:before { content: 'Mercury'; }
135
+  pre.src-metapost:before { content: 'MetaPost'; }
136
+  pre.src-modula-2:before { content: 'Modula-2'; }
137
+  pre.src-pascal:before { content: 'Pascal'; }
138
+  pre.src-ps:before { content: 'PostScript'; }
139
+  pre.src-prolog:before { content: 'Prolog'; }
140
+  pre.src-simula:before { content: 'Simula'; }
141
+  pre.src-tcl:before { content: 'tcl'; }
142
+  pre.src-tex:before { content: 'TeX'; }
143
+  pre.src-plain-tex:before { content: 'Plain TeX'; }
144
+  pre.src-verilog:before { content: 'Verilog'; }
145
+  pre.src-vhdl:before { content: 'VHDL'; }
146
+  pre.src-xml:before { content: 'XML'; }
147
+  pre.src-nxml:before { content: 'XML'; }
148
+  /* add a generic configuration mode; LaTeX export needs an additional
149
+     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
150
+  pre.src-conf:before { content: 'Configuration File'; }
59 151
 
60 152
   table { border-collapse:collapse; }
61 153
   caption.t-above { caption-side: top; }
62 154
   caption.t-bottom { caption-side: bottom; }
63 155
   td, th { vertical-align:top;  }
64
-  th.right  { text-align: center;  }
65
-  th.left   { text-align: center;   }
66
-  th.center { text-align: center; }
67
-  td.right  { text-align: right;  }
68
-  td.left   { text-align: left;   }
69
-  td.center { text-align: center; }
156
+  th.org-right  { text-align: center;  }
157
+  th.org-left   { text-align: center;   }
158
+  th.org-center { text-align: center; }
159
+  td.org-right  { text-align: right;  }
160
+  td.org-left   { text-align: left;   }
161
+  td.org-center { text-align: center; }
70 162
   dt { font-weight: bold; }
71
-  .footpara:nth-child(2) { display: inline; }
72
-  .footpara { display: block; }
163
+  .footpara { display: inline; }
73 164
   .footdef  { margin-bottom: 1em; }
74 165
   .figure { padding: 1em; }
75 166
   .figure p { text-align: center; }
@@ -89,6 +180,7 @@
89 180
     { font-size: 10px; font-weight: bold; white-space: nowrap; }
90 181
   .org-info-js_search-highlight
91 182
     { background-color: #ffff00; color: #000000; font-weight: bold; }
183
+  .org-svg { width: 90%; }
92 184
   /*]]>*/-->
93 185
 </style>
94 186
 <link rel="stylesheet" type="text/css" href="freedombone.css" />
@@ -97,7 +189,7 @@
97 189
 @licstart  The following is the entire license notice for the
98 190
 JavaScript code in this tag.
99 191
 
100
-Copyright (C) 2012-2013 Free Software Foundation, Inc.
192
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
101 193
 
102 194
 The JavaScript code in this tag is free software: you can
103 195
 redistribute it and/or modify it under the terms of the GNU
@@ -144,16 +236,15 @@ for the JavaScript code in this tag.
144 236
 <a name="top" id="top"></a>
145 237
 </div>
146 238
 <div id="content">
147
-<h1 class="title"></h1>
148 239
 
149 240
 <div class="figure">
150 241
 <p><img src="images/release3.jpg" alt="release3.jpg" width="100%" align="center" />
151 242
 </p>
152 243
 </div>
153 244
 
154
-<div id="outline-container-sec-1" class="outline-2">
155
-<h2 id="sec-1">Building an internet run by the users, for the users</h2>
156
-<div class="outline-text-2" id="text-1">
245
+<div id="outline-container-org9121f8f" class="outline-2">
246
+<h2 id="org9121f8f">Building an internet run by the users, for the users</h2>
247
+<div class="outline-text-2" id="text-org9121f8f">
157 248
 <p>
158 249
 The internet may still be mostly in the clutches of a few giant megacorporations and dubious governments with sketchy agendas, but it doesn't have to remain that way. With the third version of the Freedombone system there is now more scope than before to take back your privacy, have ownership of personal data and run your own online communities without undesirable intermediaries.
159 250
 </p>
@@ -163,27 +254,20 @@ Freedombone version 3 is based on Debian 9 (Stretch). It was released in July 20
163 254
 </p>
164 255
 
165 256
 <ul class="org-ul">
166
-<li>Faster initial setup
167
-</li>
168
-<li>More <a href="./apps.html">installable apps</a>, including CryptPad, Koel, NextCloud, PostActiv, Friendica and Matrix/RiotWeb
169
-</li>
170
-<li>Automated <a href="https://github.com/hardenedlinux/STIG-4-Debian">security tests</a>
171
-</li>
172
-<li>Improved XMPP configuration for support of the <a href="https://conversations.im">Conversations</a> app features
173
-</li>
174
-<li>Improved blocking controls for a better federated network experience
175
-</li>
176
-<li>Uses <a href="https://en.wikipedia.org/wiki/EdDSA">elliptic curve</a> based GPG keys for better performance on low power single board computers
177
-</li>
178
-<li>Pre-downloaded repos distributed within images for faster and more autonomous app installs
179
-</li>
257
+<li>Faster initial setup</li>
258
+<li>More <a href="./apps.html">installable apps</a>, including CryptPad, Koel, NextCloud, PostActiv, Friendica and Matrix/RiotWeb</li>
259
+<li>Automated <a href="https://github.com/hardenedlinux/STIG-4-Debian">security tests</a></li>
260
+<li>Improved XMPP configuration for support of the <a href="https://conversations.im">Conversations</a> app features</li>
261
+<li>Improved blocking controls for a better federated network experience</li>
262
+<li>Uses <a href="https://en.wikipedia.org/wiki/EdDSA">elliptic curve</a> based GPG keys for better performance on low power single board computers</li>
263
+<li>Pre-downloaded repos distributed within images for faster and more autonomous app installs</li>
180 264
 </ul>
181 265
 </div>
182 266
 </div>
183 267
 
184
-<div id="outline-container-sec-2" class="outline-2">
185
-<h2 id="sec-2">Installation</h2>
186
-<div class="outline-text-2" id="text-2">
268
+<div id="outline-container-org68d06a3" class="outline-2">
269
+<h2 id="org68d06a3">Installation</h2>
270
+<div class="outline-text-2" id="text-org68d06a3">
187 271
 <p>
188 272
 The simplest way to install is from a pre-made disk image. Images can be <a href="https://freedombone.net/downloads/v3">downloaded here</a>. You will need to have previously obtained a domain name and have a dynamic DNS account somewhere.
189 273
 </p>
@@ -193,9 +277,8 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden
193 277
 </p>
194 278
 
195 279
 <div class="org-src-container">
196
-
197 280
 <pre class="src src-bash">unxz downloadedimagefile.img.xz
198
-dd bs=1M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync
281
+dd <span class="org-variable-name">bs</span>=32M <span class="org-variable-name">if</span>=downloadedimagefile.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
199 282
 </pre>
200 283
 </div>
201 284
 
@@ -212,7 +295,6 @@ As the system boots for the first time the login is:
212 295
 </p>
213 296
 
214 297
 <div class="org-src-container">
215
-
216 298
 <pre class="src src-bash">username: fbone
217 299
 password: freedombone
218 300
 </pre>
@@ -223,7 +305,6 @@ If you're installing from a microSD card on a single board computer without a sc
223 305
 </p>
224 306
 
225 307
 <div class="org-src-container">
226
-
227 308
 <pre class="src src-bash">ssh fbone@freedombone.local -p 2222
228 309
 </pre>
229 310
 </div>
@@ -242,9 +323,9 @@ More detailed installation instructions are linked from <a href="./index.html">t
242 323
 </div>
243 324
 </div>
244 325
 
245
-<div id="outline-container-sec-3" class="outline-2">
246
-<h2 id="sec-3">Upgrading from a previous install</h2>
247
-<div class="outline-text-2" id="text-3">
326
+<div id="outline-container-org976059e" class="outline-2">
327
+<h2 id="org976059e">Upgrading from a previous install</h2>
328
+<div class="outline-text-2" id="text-org976059e">
248 329
 <p>
249 330
 To upgrade from the Debian Jessie version first create a master keydrive. Go to the <b>Administrator control panel</b> and select <b>Backup and restore</b> then <b>Backup GPG key to USB (master keydrive)</b>. Insert a LUKS encrypted USB drive. When that is done Create a full backup by selecting <b>Backup data to USB drive</b> and using another LUKS encrypted USB drive.
250 331
 </p>

+ 11
- 11
website/EN/release31.html 查看文件

@@ -3,7 +3,7 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<!-- 2018-04-15 Sun 19:01 -->
6
+<!-- 2018-04-21 Sat 15:00 -->
7 7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8 8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
9 9
 <title>&lrm;</title>
@@ -242,9 +242,9 @@ for the JavaScript code in this tag.
242 242
 </p>
243 243
 </div>
244 244
 
245
-<div id="outline-container-org996a8d0" class="outline-2">
246
-<h2 id="org996a8d0"><b>Version 3.1, 2018-04-15</b></h2>
247
-<div class="outline-text-2" id="text-org996a8d0">
245
+<div id="outline-container-org562f1b2" class="outline-2">
246
+<h2 id="org562f1b2"><b>Version 3.1, 2018-04-15</b></h2>
247
+<div class="outline-text-2" id="text-org562f1b2">
248 248
 <p>
249 249
 Newer and shinier than before, <a href="./index.html">Freedombone</a> 3.1 rests upon the solid foundation of Debian stable and delivers major new self-hosted apps, improved mesh networking and a new logo. It supports version 3 onion addresses and the ability to use <a href="./usage_email.html">email with onion and I2P addresses</a>. New apps are:
250 250
 </p>
@@ -281,9 +281,9 @@ The future is decentralized.
281 281
 </div>
282 282
 </div>
283 283
 
284
-<div id="outline-container-org811872a" class="outline-2">
285
-<h2 id="org811872a">Installation</h2>
286
-<div class="outline-text-2" id="text-org811872a">
284
+<div id="outline-container-org0f2b77a" class="outline-2">
285
+<h2 id="org0f2b77a">Installation</h2>
286
+<div class="outline-text-2" id="text-org0f2b77a">
287 287
 <p>
288 288
 The simplest way to install is from a pre-made disk image. Images can be <a href="https://freedombone.net/downloads/v31">downloaded here</a>. You will need to have previously obtained a domain name and have a dynamic DNS account somewhere. Or if you don't need clearnet domains and will be using Tor compatible browsers then you can use the "onion only" images where apps will be accessible via an onion address.
289 289
 </p>
@@ -294,7 +294,7 @@ Copy the image to a microSD card or USB thumb drive, replacing sdX with the iden
294 294
 
295 295
 <div class="org-src-container">
296 296
 <pre class="src src-bash">unxz downloadedimagefile.img.xz
297
-dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=downloadedimagefile.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
297
+dd <span class="org-variable-name">bs</span>=32M <span class="org-variable-name">if</span>=downloadedimagefile.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
298 298
 </pre>
299 299
 </div>
300 300
 
@@ -339,9 +339,9 @@ More detailed installation instructions are linked from <a href="./installmethod
339 339
 </div>
340 340
 </div>
341 341
 
342
-<div id="outline-container-orgba24030" class="outline-2">
343
-<h2 id="orgba24030">Upgrading from a previous install</h2>
344
-<div class="outline-text-2" id="text-orgba24030">
342
+<div id="outline-container-orgf8d3f00" class="outline-2">
343
+<h2 id="orgf8d3f00">Upgrading from a previous install</h2>
344
+<div class="outline-text-2" id="text-orgf8d3f00">
345 345
 <p>
346 346
 To upgrade from version 3 just go to the <b>administrator control panel</b> and select <b>check for updates</b>.
347 347
 </p>

+ 27
- 27
website/EN/socialinstance.html 查看文件

@@ -3,7 +3,7 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<!-- 2018-04-15 Sun 18:26 -->
6
+<!-- 2018-04-21 Sat 15:00 -->
7 7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8 8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
9 9
 <title>&lrm;</title>
@@ -242,9 +242,9 @@ for the JavaScript code in this tag.
242 242
 </p>
243 243
 </div>
244 244
 
245
-<div id="outline-container-org3a57e54" class="outline-2">
246
-<h2 id="org3a57e54">Social Instance</h2>
247
-<div class="outline-text-2" id="text-org3a57e54">
245
+<div id="outline-container-org7227583" class="outline-2">
246
+<h2 id="org7227583">Social Instance</h2>
247
+<div class="outline-text-2" id="text-org7227583">
248 248
 <p>
249 249
 A social instance image allows you to easily set up a fediverse server, which federates using the OStatus or ActivityPub protocol. You will need:
250 250
 </p>
@@ -263,9 +263,9 @@ The installation process is the same as usual, with the only difference being th
263 263
 </div>
264 264
 </div>
265 265
 
266
-<div id="outline-container-orgb2f2066" class="outline-2">
267
-<h2 id="orgb2f2066">Copy the image to the USB drive</h2>
268
-<div class="outline-text-2" id="text-orgb2f2066">
266
+<div id="outline-container-org1d12ef2" class="outline-2">
267
+<h2 id="org1d12ef2">Copy the image to the USB drive</h2>
268
+<div class="outline-text-2" id="text-org1d12ef2">
269 269
 <p>
270 270
 Substitute <b>sdX</b> with the device name for your USB drive.
271 271
 </p>
@@ -276,8 +276,8 @@ wget https://freedombone.net/downloads/v31/freedombone-pleroma-amd64.img.xz
276 276
 wget https://freedombone.net/downloads/v31/freedombone-pleroma-amd64.img.xz.sig
277 277
 gpg --verify freedombone-pleroma-amd64.img.xz.sig
278 278
 unxz freedombone-pleroma-amd64.img.xz
279
-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
280
-sudo dd <span class="org-variable-name">bs</span>=1M <span class="org-variable-name">if</span>=freedombone-pleroma-amd64.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
279
+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>=32M <span class="org-variable-name">count</span>=8
280
+sudo dd <span class="org-variable-name">bs</span>=32M <span class="org-variable-name">if</span>=freedombone-pleroma-amd64.img <span class="org-variable-name">of</span>=/dev/sdX <span class="org-variable-name">conv</span>=fdatasync
281 281
 </pre>
282 282
 </div>
283 283
 
@@ -287,9 +287,9 @@ Also note that if the laptop has a removable SSD drive it's possible to copy the
287 287
 </div>
288 288
 </div>
289 289
 
290
-<div id="outline-container-orgb12b5ef" class="outline-2">
291
-<h2 id="orgb12b5ef">Connect the laptop to your internet router</h2>
292
-<div class="outline-text-2" id="text-orgb12b5ef">
290
+<div id="outline-container-org1acc3f8" class="outline-2">
291
+<h2 id="org1acc3f8">Connect the laptop to your internet router</h2>
292
+<div class="outline-text-2" id="text-org1acc3f8">
293 293
 <p>
294 294
 Plug the USB drive into the laptop and connect it to your internet router with the ethernet cable.
295 295
 </p>
@@ -302,9 +302,9 @@ Plug the USB drive into the laptop and connect it to your internet router with t
302 302
 </div>
303 303
 </div>
304 304
 
305
-<div id="outline-container-org32addf2" class="outline-2">
306
-<h2 id="org32addf2">Boot the laptop from the USB drive</h2>
307
-<div class="outline-text-2" id="text-org32addf2">
305
+<div id="outline-container-orgc06c32b" class="outline-2">
306
+<h2 id="orgc06c32b">Boot the laptop from the USB drive</h2>
307
+<div class="outline-text-2" id="text-orgc06c32b">
308 308
 <p>
309 309
 You may need to alter the BIOS settings to get this to work reliably.
310 310
 </p>
@@ -317,9 +317,9 @@ You may need to alter the BIOS settings to get this to work reliably.
317 317
 </div>
318 318
 </div>
319 319
 
320
-<div id="outline-container-org6417b90" class="outline-2">
321
-<h2 id="org6417b90">Forward ports 80 (HTTP) and 443 (HTTPS) from your internet router to the laptop</h2>
322
-<div class="outline-text-2" id="text-org6417b90">
320
+<div id="outline-container-orgbe57b0d" class="outline-2">
321
+<h2 id="orgbe57b0d">Forward ports 80 (HTTP) and 443 (HTTPS) from your internet router to the laptop</h2>
322
+<div class="outline-text-2" id="text-orgbe57b0d">
323 323
 <p>
324 324
 Log into your internet router using a non-Tor browser (usually it's on an address like 192.168.1.1 or 192.168.1.254). Often port forwarding settings are together with firewall settings.
325 325
 </p>
@@ -332,9 +332,9 @@ Log into your internet router using a non-Tor browser (usually it's on an addres
332 332
 </div>
333 333
 </div>
334 334
 
335
-<div id="outline-container-orga1248fc" class="outline-2">
336
-<h2 id="orga1248fc">From another machine ssh into the laptop</h2>
337
-<div class="outline-text-2" id="text-orga1248fc">
335
+<div id="outline-container-org61c8baa" class="outline-2">
336
+<h2 id="org61c8baa">From another machine ssh into the laptop</h2>
337
+<div class="outline-text-2" id="text-org61c8baa">
338 338
 <div class="org-src-container">
339 339
 <pre class="src src-bash">ssh fbone@freedombone.local -p 2222
340 340
 </pre>
@@ -346,18 +346,18 @@ Or alternatively you can log in directly on the laptop. The initial username is
346 346
 </div>
347 347
 </div>
348 348
 
349
-<div id="outline-container-orge7dea9e" class="outline-2">
350
-<h2 id="orge7dea9e">Follow the setup procedure</h2>
351
-<div class="outline-text-2" id="text-orge7dea9e">
349
+<div id="outline-container-orgaaaf930" class="outline-2">
350
+<h2 id="orgaaaf930">Follow the setup procedure</h2>
351
+<div class="outline-text-2" id="text-orgaaaf930">
352 352
 <p>
353 353
 Enter your user details, domain name and dynamic DNS settings.
354 354
 </p>
355 355
 </div>
356 356
 </div>
357 357
 
358
-<div id="outline-container-orgde5ef18" class="outline-2">
359
-<h2 id="orgde5ef18">When installation is complete</h2>
360
-<div class="outline-text-2" id="text-orgde5ef18">
358
+<div id="outline-container-orgbd9fe95" class="outline-2">
359
+<h2 id="orgbd9fe95">When installation is complete</h2>
360
+<div class="outline-text-2" id="text-orgbd9fe95">
361 361
 <p>
362 362
 Navigate to your domain and register a new user.
363 363
 </p>