Selaa lähdekoodia

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

Bob Mottram 7 vuotta sitten
vanhempi
commit
28711ca1e5

+ 92
- 0
doc/EN/armbian.org Näytä tiedosto

@@ -0,0 +1,92 @@
1
+#+TITLE:
2
+#+AUTHOR: Bob Mottram
3
+#+EMAIL: bob@freedombone.net
4
+#+KEYWORDS: freedombox, debian, armbian
5
+#+DESCRIPTION: Installing Freedombone on Armbian
6
+#+OPTIONS: ^:nil toc:nil
7
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
+
9
+#+BEGIN_CENTER
10
+[[file:images/logo.png]]
11
+#+END_CENTER
12
+
13
+
14
+#+begin_export html
15
+<center><h1>Installing on Armbian</h1></center>
16
+#+end_export
17
+
18
+If you have a single board ARM computer which isn't one of the supported ones then you can probably still install Freedombone onto it if it has a [[https://www.armbian.com/download/][Debian Stretch Armbian image]] available for it.
19
+
20
+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:
21
+
22
+#+begin_src bash
23
+sudo dd if=[Armbian .img file] of=/dev/sdX
24
+#+end_src
25
+
26
+Where */dev/sdX* is the path for the microSD drive on your system.
27
+
28
+When that's done use a tool such as *Gparted* to resize the partition on the microSD card to fill up any remaining available space.
29
+
30
+Insert the microSD drive into your ARM board, connect it to your internet router with an ethernet cable and plug in the power.
31
+
32
+The board should then show up somewhere on your local network. You can log into your internet router to see what devices are connected and obtain the local IP address for the board that way, or use a network scanning tool.
33
+
34
+Once you know the local IP address of your ARM board then you can log into it with:
35
+
36
+#+begin_src bash
37
+ssh root@[local IP address]
38
+#+end_src
39
+
40
+Using the default Armbian password of *1234*. You should see the Armbian welcome message and will be asked to change the password, then create a new user account.
41
+
42
+#+BEGIN_CENTER
43
+[[file:images/armbian_setup.jpg]]
44
+#+END_CENTER
45
+
46
+When the user account is created type *exit* to leave the ssh session then log back in with your new user account.
47
+
48
+#+begin_src bash
49
+ssh myusername@[local IP address]
50
+#+end_src
51
+
52
+Become the root user:
53
+
54
+#+begin_src bash
55
+sudo su
56
+#+end_src
57
+
58
+Then clone the Freedombone repository and checkout the stretch development branch.
59
+
60
+#+begin_src bash
61
+git clone https://github.com/bashrc/freedombone
62
+cd freedombone
63
+git checkout stretch
64
+#+end_src
65
+
66
+Install the Freedombone commands:
67
+
68
+#+begin_src bash
69
+make install
70
+#+end_src
71
+
72
+And now you can begin installing the Freedombone system. There are two ways of doing this. If you already own a domain name which you want to use then run:
73
+
74
+#+begin_src bash
75
+freedombone menuconfig
76
+#+end_src
77
+
78
+Alternatively, if you don't own a domain name, don't have administrator access to your internet router or if you want to be able to access your sites only via onion addresses then run:
79
+
80
+#+begin_src bash
81
+freedombone menuconfig-onion
82
+#+end_src
83
+
84
+You will then be taken through a few questions and the system will install. Afterwards you'll be able to log into your system with:
85
+
86
+#+begin_src bash
87
+ssh myusername@freedombone.local -p 2222
88
+#+end_src
89
+
90
+Then select *Administrator options*. If you chose the first install option using a domain name then go to *Show Firewall* and make sure that the ports shown are forwarded from your internet router to your ARM board.
91
+
92
+You can then [[./apps.html][add or remove apps]] as needed.

+ 2
- 0
doc/EN/index.org Näytä tiedosto

@@ -31,6 +31,8 @@ And here's how [[./beaglebone.html][on a Beaglebone Black]].
31 31
 
32 32
 Or you can install [[./debianinstall.html][onto an existing Debian system]].
33 33
 
34
+If you have a single board ARM computer which isn't one of the officially supported ones, such as Raspberry Pi, then you may still be able to install [[./armbian.html][Freedombone with Armbian]].
35
+
34 36
 Want to make a community mesh network which doesn't depend upon the internet? The [[./mesh.html][Freedombone Mesh]] is a wireless solution for autonomous communication that can be rapidly deployed in temporary, emergency or post-disaster situations where internet access is unavailable or compromised.
35 37
 
36 38
 After installation it's possible that you might want some advice on how to run your system and set up apps to work nicely with it.

BIN
img/armbian_setup.jpg Näytä tiedosto


+ 1
- 1
src/freedombone-app-gnusocial Näytä tiedosto

@@ -903,7 +903,7 @@ function install_gnusocial {
903 903
 
904 904
     # Currently Pleroma won't install on ARM systems
905 905
     # because it uses node-sass which doesn't support ARM
906
-    if [[ "$(arch)" == "arm"* ]]; then
906
+    if [[ "$(arch)" == "arm"* || "$(arch)" == "aarch"* ]]; then
907 907
         echo -m $'WARNING: Pleroma currently does not support ARM '
908 908
         echo $'architecture, so it will not be installed'
909 909
     else

+ 3
- 1
src/freedombone-app-mediagoblin Näytä tiedosto

@@ -295,10 +295,12 @@ function install_mediagoblin {
295 295
     function_check install_nodejs
296 296
     install_nodejs mediagoblin
297 297
 
298
-    apt-get install -yq python python-dev python-lxml python-imaging python-virtualenv
298
+    apt-get install -yq python python-dev python-lxml python-imaging python-virtualenv python-setuptools
299 299
     apt-get install -yq automake perl sqlite python-paste python-pastedeploy python-pastescript
300 300
     apt-get install -yq python3 python3-dev libpython3-dev python3-lxml python3-pil
301 301
     groupadd mediagoblin
302
+    apt-get install -yq python-service-identity python-ndg-httpsclient
303
+
302 304
     useradd -c "GNU MediaGoblin system account" -d /var/lib/mediagoblin -m -r -g www-data mediagoblin
303 305
     usermod --append -G mediagoblin mediagoblin
304 306
     mkdir -p /var/lib/mediagoblin

+ 1
- 1
src/freedombone-app-postactiv Näytä tiedosto

@@ -921,7 +921,7 @@ function install_postactiv {
921 921
 
922 922
     # Currently Pleroma won't install on ARM systems
923 923
     # because it uses node-sass which doesn't support ARM
924
-    if [[ "$(arch)" == "arm"* ]]; then
924
+    if [[ "$(arch)" == "arm"* || "$(arch)" == "aarch"* ]]; then
925 925
         echo -m $'WARNING: Pleroma currently does not support ARM '
926 926
         echo $'architecture, so it will not be installed'
927 927
     else

+ 2
- 1
src/freedombone-app-searx Näytä tiedosto

@@ -828,7 +828,8 @@ function install_searx {
828 828
 
829 829
     apt-get -yq install python-pip libyaml-dev python-werkzeug python-babel python-lxml
830 830
     apt-get -yq install git build-essential libxslt-dev python-dev python-virtualenv zlib1g-dev uwsgi uwsgi-plugin-python imagemagick
831
-    apt-get -yq install apache2-utils
831
+    apt-get -yq install apache2-utils python-setuptools
832
+    apt-get -yq install python-service-identity python-ndg-httpsclient
832 833
 
833 834
     apt-get -yq remove --purge apache2-bin*
834 835
     if [ -d /etc/apache2 ]; then

+ 7
- 160
src/freedombone-utils-gnusocialtools Näytä tiedosto

@@ -29,15 +29,12 @@
29 29
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
30 30
 
31 31
 # Qvitter upstream: https://git.gnu.io/h2p/Qvitter"
32
-QVITTER_THEME_REPO="https://git.postactiv.com/bob/Qvitter"
33
-QVITTER_THEME_COMMIT='b5791cf935a6391c492cefa1ffa50cc3cea44c12'
32
+QVITTER_THEME_REPO="https://github.com/bashrc/Qvitter"
33
+QVITTER_THEME_COMMIT='c6f09bda4e45be4290cf7409fa5efb4420538032'
34 34
 
35 35
 PLEROMA_REPO="https://gitgud.io/lambadalambda/pleroma-fe"
36 36
 PLEROMA_COMMIT='cbe652f2d94d81fa54a37378b7ff014c4391ca5e'
37 37
 
38
-ARMADILLO_REPO="https://git.postactiv.com/maiya/Armadillo"
39
-ARMADILLO_COMMIT='ec3938a678f373156c4cbf37926c9a5ab68222c4'
40
-
41 38
 SHARINGS_REPO="http://git.lasindias.club/bashrc/Sharings"
42 39
 SHARINGS_COMMIT='d5c6c7f855d9afff9086c09ea706f38c859bc0d4'
43 40
 SHARINGS_THEME_REPO="http://git.lasindias.club/manuel/SharingsTheme"
@@ -163,62 +160,6 @@ function pleroma_set_background_image_from_url {
163 160
     echo "0"
164 161
 }
165 162
 
166
-function armadillo_set_background_image_from_url {
167
-    domain_name="$1"
168
-    url="$2"
169
-
170
-    if [ ${#domain_name} -eq 0 ]; then
171
-        echo "1"
172
-        return
173
-    fi
174
-
175
-    ext=
176
-    if [ ${#url} -gt 0 ]; then
177
-        if [[ "$url" == *".jpeg" || "$url" == *".jpg" ]]; then
178
-            ext="jpg"
179
-        fi
180
-        if [[ "$url" == *".png" ]]; then
181
-            ext="png"
182
-        fi
183
-        if [[ "$url" == *".gif" ]]; then
184
-            ext="gif"
185
-        fi
186
-    fi
187
-
188
-    if [ ${#ext} -gt 0 ]; then
189
-        cd /var/www/${domain_name}/htdocs
190
-
191
-        # remove any existing image
192
-        if [ -f bg_custom.${ext} ]; then
193
-            rm bg_custom.${ext}
194
-        fi
195
-
196
-        # get the new image
197
-        wget "$url" -O bg_custom.${ext}
198
-        if [ ! -f bg_custom.${ext} ]; then
199
-            echo "$url"
200
-            echo $'Custom background image for armadillo could not be downloaded'
201
-            echo "1"
202
-            return
203
-        fi
204
-
205
-        if [ -d /var/www/${domain_name}/htdocs/armadillo ]; then
206
-            cd /var/www/${domain_name}/htdocs/armadillo
207
-            cp ../bg_custom.${ext} media/img/bg_custom.${ext}
208
-            sed -i "s|\"background\":.*|\"background\": \"armadillo/media/img/background.jpeg\"," config.json
209
-        fi
210
-
211
-        qvitter_update_background ${domain_name} ${ext}
212
-
213
-        rm bg_custom.${ext}
214
-    else
215
-        echo "2"
216
-        return
217
-    fi
218
-
219
-    echo "0"
220
-}
221
-
222 163
 function install_qvitter {
223 164
     domain_name=$1
224 165
     app_name=$2
@@ -260,6 +201,11 @@ function install_qvitter {
260 201
         git_clone $QVITTER_THEME_REPO Qvitter
261 202
     fi
262 203
 
204
+    if [ ! -d /var/www/${domain_name}/htdocs/local/plugins/Qvitter ]; then
205
+        echo $'Qvitter repo was not installed'
206
+        exit 835638
207
+    fi
208
+
263 209
     cd /var/www/${domain_name}/htdocs/local/plugins/Qvitter
264 210
     git checkout $QVITTER_THEME_COMMIT -b $QVITTER_THEME_COMMIT
265 211
 
@@ -329,48 +275,6 @@ function install_gnusocial_default_background {
329 275
     fi
330 276
 }
331 277
 
332
-function install_armadillo_front_end {
333
-    app_name="$1"
334
-    armadillo_domain="$2"
335
-    background_url="$3"
336
-
337
-    if [ ! -d $INSTALL_DIR/armadillo ]; then
338
-        function_check git_clone
339
-        git_clone $ARMADILLO_REPO $INSTALL_DIR/armadillo
340
-        if [ ! -d $INSTALL_DIR/armadillo ]; then
341
-            echo $'Unable to clone armadillo repo'
342
-            exit 35722
343
-        fi
344
-    fi
345
-
346
-    cd $INSTALL_DIR/armadillo
347
-    git checkout $ARMADILLO_COMMIT -b $ARMADILLO_COMMIT
348
-    set_completion_param "${app_name} armadillo commit" "$ARMADILLO_COMMIT"
349
-
350
-    cp armadillo/config.json.example armadillo/config.json
351
-    if [[ $ONION_ONLY == 'no' ]]; then
352
-        sed -i "s|\"server\".*|\"server\": \"https://${armadillo_domain}\",|g" armadillo/config.json
353
-    else
354
-        sed -i "s|\"server\".*|\"server\": \"http://${armadillo_domain}\",|g" armadillo/config.json
355
-    fi
356
-    owner='<a href=\\"'"https://${armadillo_domain}/$MY_USERNAME"'\\">@'"$MY_USERNAME@${armadillo_domain}"'</a>'
357
-    sed -i "s|\"owner\".*|\"owner\": \"$owner\",|g" armadillo/config.json
358
-    cp -r $INSTALL_DIR/armadillo/armadillo /var/www/${armadillo_domain}/htdocs/
359
-    cp $INSTALL_DIR/armadillo/armadillo.html /var/www/${armadillo_domain}/htdocs/index.html
360
-    cp $INSTALL_DIR/armadillo/dash.html /var/www/${armadillo_domain}/htdocs/dash.html
361
-
362
-    armadillo_set_background_image_from_url "$armadillo_domain" "$background_url"
363
-
364
-    nginx_site=/etc/nginx/sites-available/${armadillo_domain}
365
-    sed -i 's|index index.php;|index index.html;|g' $nginx_site
366
-
367
-    if [ -f /var/www/${armadillo_domain}/htdocs/index.php ]; then
368
-        mv /var/www/${armadillo_domain}/htdocs/index.php /var/www/${armadillo_domain}/htdocs/index_qvitter.php
369
-    fi
370
-    sed -i 's|index.php|index_qvitter.php|g' $nginx_site
371
-
372
-    chown -R www-data:www-data /var/www/${armadillo_domain}/htdocs
373
-}
374 278
 
375 279
 function install_pleroma_front_end {
376 280
     app_name="$1"
@@ -489,27 +393,6 @@ function upgrade_pleroma {
489 393
     fi
490 394
 }
491 395
 
492
-function upgrade_armadillo {
493
-    domain_name="$1"
494
-    app_name="$2"
495
-    background_url="$3"
496
-
497
-    if [ -d $INSTALL_DIR/armadillo ]; then
498
-        set_repo_commit $INSTALL_DIR/armadillo "${app_name} armadillo commit" "$ARMADILLO_COMMIT" $ARMADILLO_REPO
499
-        cd $INSTALL_DIR/armadillo
500
-
501
-        if [ -f $INSTALL_DIR/armadillo/armadillo/config.json ]; then
502
-            rm $INSTALL_DIR/armadillo/armadillo/config.json
503
-        fi
504
-        cp -r $INSTALL_DIR/armadillo/armadillo /var/www/${armadillo_domain}/htdocs/
505
-        cp $INSTALL_DIR/armadillo/armadillo.html /var/www/${armadillo_domain}/htdocs/index.html
506
-        cp $INSTALL_DIR/armadillo/dash.html /var/www/${armadillo_domain}/htdocs/dash.html
507
-        chown -R www-data:www-data /var/www/${domain_name}/htdocs
508
-    else
509
-        install_armadillo_front_end "${app_name}" "${domain_name}" "${background_url}"
510
-    fi
511
-}
512
-
513 396
 function gnusocial_hourly_script {
514 397
     gnusocial_type=$1
515 398
     domain_name=$2
@@ -900,42 +783,6 @@ function gnusocial_use_pleroma {
900 783
     systemctl restart nginx
901 784
 }
902 785
 
903
-function gnusocial_use_armadillo {
904
-    database_name=$1
905
-
906
-    domain_name=$(get_completion_param "$database_name domain")
907
-
908
-    if [ ! -d /var/www/$domain_name/htdocs/armadillo ]; then
909
-        return
910
-    fi
911
-
912
-    if [ -f /var/www/$domain_name/htdocs/index.php ]; then
913
-        mv /var/www/$domain_name/htdocs/index.php /var/www/$domain_name/htdocs/index_qvitter.php
914
-    fi
915
-
916
-    if [ -f /etc/nginx/sites-available/$domain_name ]; then
917
-        sed -i 's|index.php|index_qvitter.php|g' /etc/nginx/sites-available/$domain_name
918
-        sed -i 's|index index_qvitter.php|index index.html|g' /etc/nginx/sites-available/$domain_name
919
-    fi
920
-
921
-    if grep -q "//addPlugin('Qvitter')" /var/www/$domain_name/htdocs/config.php; then
922
-        sed -i "s|//addPlugin('Qvitter')|addPlugin('Qvitter')|g" /var/www/$domain_name/htdocs/config.php
923
-    fi
924
-    if grep -q "// addPlugin('Qvitter')" /var/www/$domain_name/htdocs/config.php; then
925
-        sed -i "s|// addPlugin('Qvitter')|addPlugin('Qvitter')|g" /var/www/$domain_name/htdocs/config.php
926
-    fi
927
-
928
-    if [ -f $INSTALL_DIR/armadillo/armadillo/config.json ]; then
929
-        rm $INSTALL_DIR/armadillo/armadillo/config.json
930
-    fi
931
-    cp -r $INSTALL_DIR/armadillo/armadillo/* /var/www/${domain_name}/htdocs/armadillo
932
-    cp $INSTALL_DIR/armadillo/armadillo.html /var/www/${domain_name}/htdocs/index.html
933
-    cp $INSTALL_DIR/armadillo/dash.html /var/www/${domain_name}/htdocs/dash.html
934
-    chown -R www-data:www-data /var/www/${domain_name}/htdocs
935
-
936
-    systemctl restart nginx
937
-}
938
-
939 786
 function install_gnusocial_plugin_sharings {
940 787
     domain_name=$1
941 788
     social_app_name=$2

+ 10
- 6
src/freedombone-utils-nodejs Näytä tiedosto

@@ -61,8 +61,12 @@ function get_npm_arch {
61 61
 }
62 62
 
63 63
 function mesh_install_nodejs {
64
-    chroot "$rootdir" apt-get -yq install g++ m4 libtool automake nodejs curl
65
-    chroot "$rootdir" apt-get -yq install libxext-dev libxtst-dev libxkbfile-dev
64
+    mesh_install_nodejs_prefix=
65
+    if [ $rootdir ]; then
66
+        mesh_install_nodejs_prefix="chroot $rootdir"
67
+    fi
68
+    $mesh_install_nodejs_prefix apt-get -yq install g++ m4 libtool automake nodejs curl
69
+    $mesh_install_nodejs_prefix apt-get -yq install libxext-dev libxtst-dev libxkbfile-dev
66 70
 
67 71
     if [ ! -f ${rootdir}/usr/bin/nodejs ]; then
68 72
         echo $'nodejs was not installed'
@@ -83,9 +87,9 @@ function mesh_install_nodejs {
83 87
         echo $'Unable to download npm installer'
84 88
         exit 8793636
85 89
     fi
86
-    chroot "$rootdir" chmod +x /root/npm_install.sh
90
+    $mesh_install_nodejs_prefix chmod +x /root/npm_install.sh
87 91
     sed -i "s|t=\"\${npm_install}\"|t=\"$NPM_VERSION\"|g" $rootdir/root/npm_install.sh
88
-    chroot "$rootdir" /root/npm_install.sh
92
+    $mesh_install_nodejs_prefix /root/npm_install.sh
89 93
 
90 94
     if [ ! -f $rootdir/usr/bin/npm ]; then
91 95
         echo $'npm was not installed'
@@ -95,8 +99,8 @@ function mesh_install_nodejs {
95 99
 
96 100
     # update from the old debian nodejs version
97 101
     get_npm_arch
98
-    chroot "$rootdir" npm install --arch=$NPM_ARCH -g n@${NODEJS_N_VERSION} --save
99
-    chroot "$rootdir" n --arch $N_ARCH ${NODEJS_VERSION}
102
+    $mesh_install_nodejs_prefix npm install --arch=$NPM_ARCH -g n@${NODEJS_N_VERSION} --save
103
+    $mesh_install_nodejs_prefix n --arch $N_ARCH ${NODEJS_VERSION}
100 104
     cp $rootdir/root/npm $rootdir/usr/bin/npm
101 105
 }
102 106
 

+ 1
- 1
src/freedombone-utils-passwords Näytä tiedosto

@@ -51,7 +51,7 @@ function enforce_good_passwords {
51 51
 }
52 52
 
53 53
 function create_password {
54
-    openssl rand -base64 32 | tr -dc A-Za-z0-9 | head -c ${1} ; echo ''
54
+    openssl rand -base64 32 | tr -dc A-Za-z0-9 | head -c ${1} ; echo -n ''
55 55
 }
56 56
 
57 57
 # NOTE: deliberately no exit 0

+ 398
- 0
website/EN/armbian.html Näytä tiedosto

@@ -0,0 +1,398 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5
+<head>
6
+<!-- 2017-09-20 Wed 20:03 -->
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"
13
+ />
14
+<meta name="keywords" content="freedombox, debian, armbian" />
15
+<style type="text/css">
16
+ <!--/*--><![CDATA[/*><!--*/
17
+  .title  { text-align: center;
18
+             margin-bottom: .2em; }
19
+  .subtitle { text-align: center;
20
+              font-size: medium;
21
+              font-weight: bold;
22
+              margin-top:0; }
23
+  .todo   { font-family: monospace; color: red; }
24
+  .done   { font-family: monospace; color: green; }
25
+  .priority { font-family: monospace; color: orange; }
26
+  .tag    { background-color: #eee; font-family: monospace;
27
+            padding: 2px; font-size: 80%; font-weight: normal; }
28
+  .timestamp { color: #bebebe; }
29
+  .timestamp-kwd { color: #5f9ea0; }
30
+  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
31
+  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
32
+  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
33
+  .underline { text-decoration: underline; }
34
+  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
35
+  p.verse { margin-left: 3%; }
36
+  pre {
37
+    border: 1px solid #ccc;
38
+    box-shadow: 3px 3px 3px #eee;
39
+    padding: 8pt;
40
+    font-family: monospace;
41
+    overflow: auto;
42
+    margin: 1.2em;
43
+  }
44
+  pre.src {
45
+    position: relative;
46
+    overflow: visible;
47
+    padding-top: 1.2em;
48
+  }
49
+  pre.src:before {
50
+    display: none;
51
+    position: absolute;
52
+    background-color: white;
53
+    top: -10px;
54
+    right: 10px;
55
+    padding: 3px;
56
+    border: 1px solid black;
57
+  }
58
+  pre.src:hover:before { display: inline;}
59
+  /* 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'; }
70
+  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
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'; }
151
+
152
+  table { border-collapse:collapse; }
153
+  caption.t-above { caption-side: top; }
154
+  caption.t-bottom { caption-side: bottom; }
155
+  td, th { vertical-align:top;  }
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; }
162
+  dt { font-weight: bold; }
163
+  .footpara { display: inline; }
164
+  .footdef  { margin-bottom: 1em; }
165
+  .figure { padding: 1em; }
166
+  .figure p { text-align: center; }
167
+  .inlinetask {
168
+    padding: 10px;
169
+    border: 2px solid gray;
170
+    margin: 10px;
171
+    background: #ffffcc;
172
+  }
173
+  #org-div-home-and-up
174
+   { text-align: right; font-size: 70%; white-space: nowrap; }
175
+  textarea { overflow-x: auto; }
176
+  .linenr { font-size: smaller }
177
+  .code-highlighted { background-color: #ffff00; }
178
+  .org-info-js_info-navigation { border-style: none; }
179
+  #org-info-js_console-label
180
+    { font-size: 10px; font-weight: bold; white-space: nowrap; }
181
+  .org-info-js_search-highlight
182
+    { background-color: #ffff00; color: #000000; font-weight: bold; }
183
+  .org-svg { width: 90%; }
184
+  /*]]>*/-->
185
+</style>
186
+<link rel="stylesheet" type="text/css" href="freedombone.css" />
187
+<script type="text/javascript">
188
+/*
189
+@licstart  The following is the entire license notice for the
190
+JavaScript code in this tag.
191
+
192
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
193
+
194
+The JavaScript code in this tag is free software: you can
195
+redistribute it and/or modify it under the terms of the GNU
196
+General Public License (GNU GPL) as published by the Free Software
197
+Foundation, either version 3 of the License, or (at your option)
198
+any later version.  The code is distributed WITHOUT ANY WARRANTY;
199
+without even the implied warranty of MERCHANTABILITY or FITNESS
200
+FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
201
+
202
+As additional permission under GNU GPL version 3 section 7, you
203
+may distribute non-source (e.g., minimized or compacted) forms of
204
+that code without the copy of the GNU GPL normally required by
205
+section 4, provided you include this license notice and a URL
206
+through which recipients can access the Corresponding Source.
207
+
208
+
209
+@licend  The above is the entire license notice
210
+for the JavaScript code in this tag.
211
+*/
212
+<!--/*--><![CDATA[/*><!--*/
213
+ function CodeHighlightOn(elem, id)
214
+ {
215
+   var target = document.getElementById(id);
216
+   if(null != target) {
217
+     elem.cacheClassElem = elem.className;
218
+     elem.cacheClassTarget = target.className;
219
+     target.className = "code-highlighted";
220
+     elem.className   = "code-highlighted";
221
+   }
222
+ }
223
+ function CodeHighlightOff(elem, id)
224
+ {
225
+   var target = document.getElementById(id);
226
+   if(elem.cacheClassElem)
227
+     elem.className = elem.cacheClassElem;
228
+   if(elem.cacheClassTarget)
229
+     target.className = elem.cacheClassTarget;
230
+ }
231
+/*]]>*///-->
232
+</script>
233
+</head>
234
+<body>
235
+<div id="preamble" class="status">
236
+<a name="top" id="top"></a>
237
+</div>
238
+<div id="content">
239
+<div class="org-center">
240
+
241
+<div class="figure">
242
+<p><img src="images/logo.png" alt="logo.png" />
243
+</p>
244
+</div>
245
+</div>
246
+
247
+
248
+<center><h1>Installing on Armbian</h1></center>
249
+
250
+<p>
251
+If you have a single board ARM computer which isn't one of the supported ones then you can probably still install Freedombone onto it if it has a <a href="https://www.armbian.com/download/">Debian Stretch Armbian image</a> available for it.
252
+</p>
253
+
254
+<p>
255
+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:
256
+</p>
257
+
258
+<div class="org-src-container">
259
+<pre class="src src-bash">sudo dd <span class="org-variable-name">if</span>=[Armbian .img file] <span class="org-variable-name">of</span>=/dev/sdX
260
+</pre>
261
+</div>
262
+
263
+<p>
264
+Where <b>/dev/sdX</b> is the path for the microSD drive on your system.
265
+</p>
266
+
267
+<p>
268
+When that's done use a tool such as <b>Gparted</b> to resize the partition on the microSD card to fill up any remaining available space.
269
+</p>
270
+
271
+<p>
272
+Insert the microSD drive into your ARM board, connect it to your internet router with an ethernet cable and plug in the power.
273
+</p>
274
+
275
+<p>
276
+The board should then show up somewhere on your local network. You can log into your internet router to see what devices are connected and obtain the local IP address for the board that way, or use a network scanning tool.
277
+</p>
278
+
279
+<p>
280
+Once you know the local IP address of your ARM board then you can log into it with:
281
+</p>
282
+
283
+<div class="org-src-container">
284
+<pre class="src src-bash">ssh root@[local IP address]
285
+</pre>
286
+</div>
287
+
288
+<p>
289
+Using the default Armbian password of <b>1234</b>. You should see the Armbian welcome message and will be asked to change the password, then create a new user account.
290
+</p>
291
+
292
+<div class="org-center">
293
+
294
+<div class="figure">
295
+<p><img src="images/armbian_setup.jpg" alt="armbian_setup.jpg" />
296
+</p>
297
+</div>
298
+</div>
299
+
300
+<p>
301
+When the user account is created type <b>exit</b> to leave the ssh session then log back in with your new user account.
302
+</p>
303
+
304
+<div class="org-src-container">
305
+<pre class="src src-bash">ssh myusername@[local IP address]
306
+</pre>
307
+</div>
308
+
309
+<p>
310
+Become the root user:
311
+</p>
312
+
313
+<div class="org-src-container">
314
+<pre class="src src-bash">sudo su
315
+</pre>
316
+</div>
317
+
318
+<p>
319
+Then clone the Freedombone repository and checkout the stretch development branch.
320
+</p>
321
+
322
+<div class="org-src-container">
323
+<pre class="src src-bash">git clone https://github.com/bashrc/freedombone
324
+<span class="org-builtin">cd</span> freedombone
325
+git checkout stretch
326
+</pre>
327
+</div>
328
+
329
+<p>
330
+Install the Freedombone commands:
331
+</p>
332
+
333
+<div class="org-src-container">
334
+<pre class="src src-bash">make install
335
+</pre>
336
+</div>
337
+
338
+<p>
339
+And now you can begin installing the Freedombone system. There are two ways of doing this. If you already own a domain name which you want to use then run:
340
+</p>
341
+
342
+<div class="org-src-container">
343
+<pre class="src src-bash">freedombone menuconfig
344
+</pre>
345
+</div>
346
+
347
+<p>
348
+Alternatively, if you don't own a domain name, don't have administrator access to your internet router or if you want to be able to access your sites only via onion addresses then run:
349
+</p>
350
+
351
+<div class="org-src-container">
352
+<pre class="src src-bash">freedombone menuconfig-onion
353
+</pre>
354
+</div>
355
+
356
+<p>
357
+You will then be taken through a few questions and the system will install. Afterwards you'll be able to log into your system with:
358
+</p>
359
+
360
+<div class="org-src-container">
361
+<pre class="src src-bash">ssh myusername@freedombone.local -p 2222
362
+</pre>
363
+</div>
364
+
365
+<p>
366
+Then select <b>Administrator options</b>. If you chose the first install option using a domain name then go to <b>Show Firewall</b> and make sure that the ports shown are forwarded from your internet router to your ARM board.
367
+</p>
368
+
369
+<p>
370
+You can then <a href="./apps.html">add or remove apps</a> as needed.
371
+</p>
372
+</div>
373
+<div id="postamble" class="status">
374
+
375
+<style type="text/css">
376
+.back-to-top {
377
+    position: fixed;
378
+    bottom: 2em;
379
+    right: 0px;
380
+    text-decoration: none;
381
+    color: #000000;
382
+    background-color: rgba(235, 235, 235, 0.80);
383
+    font-size: 12px;
384
+    padding: 1em;
385
+    display: none;
386
+}
387
+
388
+.back-to-top:hover {
389
+    background-color: rgba(135, 135, 135, 0.50);
390
+}
391
+</style>
392
+
393
+<div class="back-to-top">
394
+<a href="#top">Back to top</a> | <a href="mailto:bob@freedombone.net">E-mail me</a>
395
+</div>
396
+</div>
397
+</body>
398
+</html>

+ 6
- 2
website/EN/index.html Näytä tiedosto

@@ -3,10 +3,10 @@
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
-<!-- 2017-07-20 Thu 14:24 -->
6
+<!-- 2017-09-20 Wed 19:14 -->
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
-<title></title>
9
+<title>&lrm;</title>
10 10
 <meta name="generator" content="Org mode" />
11 11
 <meta name="author" content="Bob Mottram" />
12 12
 <meta name="description" content="Turn the Beaglebone Black into a personal communications server"
@@ -276,6 +276,10 @@ Or you can install <a href="./debianinstall.html">onto an existing Debian system
276 276
 </p>
277 277
 
278 278
 <p>
279
+If you have a single board ARM computer which isn't one of the officially supported ones, such as Raspberry Pi, then you may still be able to install <a href="./armbian.html">Freedombone with Armbian</a>.
280
+</p>
281
+
282
+<p>
279 283
 Want to make a community mesh network which doesn't depend upon the internet? The <a href="./mesh.html">Freedombone Mesh</a> is a wireless solution for autonomous communication that can be rapidly deployed in temporary, emergency or post-disaster situations where internet access is unavailable or compromised.
280 284
 </p>
281 285