Browse Source

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

Bob Mottram 7 years ago
parent
commit
480fae38bc
100 changed files with 1238 additions and 1300 deletions
  1. 4
    11
      doc/EN/app_akaunting.org
  2. 2
    7
      doc/EN/app_bdsmail.org
  3. 2
    7
      doc/EN/app_bludit.org
  4. 3
    9
      doc/EN/app_cryptpad.org
  5. 2
    7
      doc/EN/app_dlna.org
  6. 2
    8
      doc/EN/app_dokuwiki.org
  7. 3
    9
      doc/EN/app_edith.org
  8. 2
    7
      doc/EN/app_emacs.org
  9. 2
    7
      doc/EN/app_etherpad.org
  10. 2
    7
      doc/EN/app_fedwiki.org
  11. 3
    9
      doc/EN/app_friendica.org
  12. 7
    18
      doc/EN/app_gnusocial.org
  13. 2
    7
      doc/EN/app_gogs.org
  14. 2
    7
      doc/EN/app_htmly.org
  15. 3
    9
      doc/EN/app_hubzilla.org
  16. 2
    7
      doc/EN/app_icecast.org
  17. 4
    7
      doc/EN/app_irc.org
  18. 2
    7
      doc/EN/app_kanboard.org
  19. 3
    9
      doc/EN/app_keyserver.org
  20. 5
    13
      doc/EN/app_koel.org
  21. 3
    9
      doc/EN/app_lychee.org
  22. 4
    11
      doc/EN/app_mailpile.org
  23. 3
    9
      doc/EN/app_matrix.org
  24. 3
    7
      doc/EN/app_mediagoblin.org
  25. 3
    9
      doc/EN/app_mumble.org
  26. 3
    9
      doc/EN/app_nextcloud.org
  27. 2
    4
      doc/EN/app_peertube.org
  28. 2
    7
      doc/EN/app_pihole.org
  29. 6
    14
      doc/EN/app_pleroma.org
  30. 6
    15
      doc/EN/app_postactiv.org
  31. 2
    7
      doc/EN/app_privatebin.org
  32. 2
    7
      doc/EN/app_profanity.org
  33. 3
    9
      doc/EN/app_riot.org
  34. 3
    9
      doc/EN/app_rss.org
  35. 3
    10
      doc/EN/app_searx.org
  36. 4
    11
      doc/EN/app_syncthing.org
  37. 3
    9
      doc/EN/app_tahoelafs.org
  38. 3
    9
      doc/EN/app_tox.org
  39. 3
    11
      doc/EN/app_turtl.org
  40. 2
    7
      doc/EN/app_vpn.org
  41. 2
    7
      doc/EN/app_xmpp.org
  42. 6
    5
      doc/EN/apps.org
  43. 3
    5
      doc/EN/armbian.org
  44. 4
    9
      doc/EN/backups.org
  45. 6
    15
      doc/EN/beaglebone.org
  46. 6
    11
      doc/EN/boards.org
  47. 4
    9
      doc/EN/code.org
  48. 5
    5
      doc/EN/codeofconduct.org
  49. 0
    123
      doc/EN/controlpanel.org
  50. 2
    7
      doc/EN/debianinstall.org
  51. 8
    7
      doc/EN/devguide.org
  52. 2
    5
      doc/EN/domains.org
  53. 14
    18
      doc/EN/faq.org
  54. 4
    10
      doc/EN/fediverse.org
  55. 12
    22
      doc/EN/homeserver.org
  56. 10
    32
      doc/EN/index.org
  57. 4
    9
      doc/EN/installation.org
  58. 31
    0
      doc/EN/installmethods.org
  59. 7
    12
      doc/EN/mesh.org
  60. 7
    7
      doc/EN/mesh_capabilities.org
  61. 8
    7
      doc/EN/mesh_custom.org
  62. 18
    25
      doc/EN/mesh_images.org
  63. 8
    7
      doc/EN/mesh_philosophic.org
  64. 31
    50
      doc/EN/mesh_usage.org
  65. 3
    8
      doc/EN/meshindex.org
  66. 0
    47
      doc/EN/mirrors.org
  67. 9
    10
      doc/EN/mobile.org
  68. 0
    49
      doc/EN/related.org
  69. 2
    7
      doc/EN/release3.org
  70. 70
    0
      doc/EN/release31.org
  71. 1
    2
      doc/EN/security.org
  72. 9
    19
      doc/EN/socialinstance.org
  73. 8
    16
      doc/EN/support.org
  74. 0
    96
      doc/EN/usage.org
  75. 14
    7
      doc/EN/usage_email.org
  76. 5
    2
      doc/EN/users.org
  77. 0
    50
      doc/EN/variants.org
  78. BIN
      img/backgrounds/freedombone_mesh_amnesic_background.png
  79. BIN
      img/backgrounds/freedombone_mesh_initial_background.png
  80. BIN
      img/controlpanel/control_panel.jpg
  81. BIN
      img/gfdl.png
  82. BIN
      img/logo.png
  83. BIN
      img/logo_prev.png
  84. BIN
      img/mesh_initial_login.jpg
  85. BIN
      img/onion.png
  86. BIN
      man/freedombone-template.1.gz
  87. 377
    0
      src/freedombone-app-datserver
  88. 1
    4
      src/freedombone-app-peertube
  89. 1
    1
      src/freedombone-app-pleroma
  90. 71
    36
      src/freedombone-app-scuttlebot
  91. 3
    0
      src/freedombone-base-tripwire
  92. 1
    1
      src/freedombone-client
  93. 2
    1
      src/freedombone-image-customise
  94. 5
    3
      src/freedombone-image-mesh
  95. 3
    1
      src/freedombone-mesh-batman
  96. 279
    175
      src/freedombone-template
  97. 30
    0
      src/freedombone-utils-firewall
  98. 2
    3
      src/freedombone-utils-network
  99. 20
    0
      src/freedombone-utils-nodejs
  100. 0
    0
      src/freedombone-utils-setup

+ 4
- 11
doc/EN/app_akaunting.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Akaunting</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Akaunting
18
 
13
 
19
 The Freedombone system isn't primarily aimed at companies or institutions, but if you're a one person company or freelancer then having the ability to run your own accounting system and keep the data private and also backed up is useful. Akaunting provides a nice web based system for small business accounts, and is also quite usable within a mobile web browser.
14
 The Freedombone system isn't primarily aimed at companies or institutions, but if you're a one person company or freelancer then having the ability to run your own accounting system and keep the data private and also backed up is useful. Akaunting provides a nice web based system for small business accounts, and is also quite usable within a mobile web browser.
20
 
15
 
33
 
28
 
34
 Now in a browser navigate to your subdomain. You will need to enter some details for the database. The password should be the mariadb one.
29
 Now in a browser navigate to your subdomain. You will need to enter some details for the database. The password should be the mariadb one.
35
 
30
 
36
-#+BEGIN_CENTER
31
+#+attr_html: :width 80% :align center
37
 [[file:images/akaunting_setup.jpg]]
32
 [[file:images/akaunting_setup.jpg]]
38
-#+END_CENTER
39
 
33
 
40
 After that you'll need to enter a company name and an email address. You can make the administrator password anything you prefer, and a suggestion can be found within the *Passwords* section of the *Administrator control panel* under *akaunting*.
34
 After that you'll need to enter a company name and an email address. You can make the administrator password anything you prefer, and a suggestion can be found within the *Passwords* section of the *Administrator control panel* under *akaunting*.
41
 
35
 
42
-#+BEGIN_CENTER
36
+#+attr_html: :width 80% :align center
43
 [[file:images/akaunting_setup_company.jpg]]
37
 [[file:images/akaunting_setup_company.jpg]]
44
-#+END_CENTER
45
 
38
 
46
 From then on the system should be usable. Accounts software can often be quite complex, and so you'll probably want to refer to the [[https://akaunting.com/docs][official documentation]] for details.
39
 From then on the system should be usable. Accounts software can often be quite complex, and so you'll probably want to refer to the [[https://akaunting.com/docs][official documentation]] for details.

+ 2
- 7
doc/EN/app_bdsmail.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>BDS Mail</h1>
16
-</center>
17
-#+END_EXPORT
12
+* BDS Mail
18
 
13
 
19
 BDS Mail (aka "Brain Dead Simple Mail") is an optional addition to the existing email server which comes installed as default. It creates an extra folder within the Mutt client which allows you to send and receive email using [[https://en.wikipedia.org/wiki/I2P][i2p]] as the transport layer. This solves the problem of being blocked by dubious systems and also the problem of user friendly email encryption. If you're behind a hostile firewall which you don't control and which blocks all ports, this system is still likely to work. You can use GPG as an additional encryption layer if you prefer, but it's not strictly necessary because you already have the i2p public key system to ensure end-to-end security.
14
 BDS Mail (aka "Brain Dead Simple Mail") is an optional addition to the existing email server which comes installed as default. It creates an extra folder within the Mutt client which allows you to send and receive email using [[https://en.wikipedia.org/wiki/I2P][i2p]] as the transport layer. This solves the problem of being blocked by dubious systems and also the problem of user friendly email encryption. If you're behind a hostile firewall which you don't control and which blocks all ports, this system is still likely to work. You can use GPG as an additional encryption layer if you prefer, but it's not strictly necessary because you already have the i2p public key system to ensure end-to-end security.
20
 
15
 

+ 2
- 7
doc/EN/app_bludit.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Bludit</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Bludit
18
 
13
 
19
 This is a databaseless blogging system which uses markdown files. It's not very complex and so there is not much to go wrong, and it should run well on any server hardware.
14
 This is a databaseless blogging system which uses markdown files. It's not very complex and so there is not much to go wrong, and it should run well on any server hardware.
20
 
15
 

+ 3
- 9
doc/EN/app_cryptpad.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>CryptPad</h1>
16
-</center>
17
-#+END_EXPORT
12
+* CryptPad
18
 
13
 
19
-#+BEGIN_CENTER
14
+#+attr_html: :width 80% :align center
20
 [[file:images/cryptpad.jpg]]
15
 [[file:images/cryptpad.jpg]]
21
-#+END_CENTER
22
 
16
 
23
 This is similar to [[./app_etherpad.html][EtherPad]] but with better security and more document types which can be collaboratively edited in real time. It includes not just text editing but also creating presentations, voting and editing source code.
17
 This is similar to [[./app_etherpad.html][EtherPad]] but with better security and more document types which can be collaboratively edited in real time. It includes not just text editing but also creating presentations, voting and editing source code.
24
 
18
 

+ 2
- 7
doc/EN/app_dlna.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>DLNA</h1>
16
-</center>
17
-#+END_EXPORT
12
+* DLNA
18
 
13
 
19
 An easy way to play music on any mobile device in your home is to use the DLNA service. Copy your music into a directory called "/Music/" on an unencrypted USB thumb drive and then insert it into a USB socket on the Freedombone system.
14
 An easy way to play music on any mobile device in your home is to use the DLNA service. Copy your music into a directory called "/Music/" on an unencrypted USB thumb drive and then insert it into a USB socket on the Freedombone system.
20
 
15
 

+ 2
- 8
doc/EN/app_dokuwiki.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Dokuwiki</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Dokuwiki
18
 
13
 
19
 Dokuwiki is a wiki which stores its content in text files. Having no database makes maintaining it simpler, and it's not tied to any particular domain name so you can easily copy the files to a different domain if you need to.
14
 Dokuwiki is a wiki which stores its content in text files. Having no database makes maintaining it simpler, and it's not tied to any particular domain name so you can easily copy the files to a different domain if you need to.
20
 
15
 
21
-
22
 * Installation
16
 * Installation
23
 Log into your system with:
17
 Log into your system with:
24
 
18
 

+ 3
- 9
doc/EN/app_edith.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Edith Notes</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Edith Notes
18
 
13
 
19
 Edith notes is the simplest and quickest kind of notes system. It has no complicated user interface. Just enter your domain and a title and a note will be created. Everything typed is saved automatically.
14
 Edith notes is the simplest and quickest kind of notes system. It has no complicated user interface. Just enter your domain and a title and a note will be created. Everything typed is saved automatically.
20
 
15
 
28
 
23
 
29
 Select *Administrator controls* then *App Settings* then *edith*. Enter a subdomain name, such as /notes.mydomain.com/, and optionally a freedns code. When the installation is complete you can then look up the password for the site within the *Passwords* section of the *Administrator control panel*, then  navigate to the subdomain. Log in, then enter something like /notes.mydomain.com/testnote/ and start typing.
24
 Select *Administrator controls* then *App Settings* then *edith*. Enter a subdomain name, such as /notes.mydomain.com/, and optionally a freedns code. When the installation is complete you can then look up the password for the site within the *Passwords* section of the *Administrator control panel*, then  navigate to the subdomain. Log in, then enter something like /notes.mydomain.com/testnote/ and start typing.
30
 
25
 
31
-#+BEGIN_CENTER
26
+#+attr_html: :width 80% :align center
32
 [[file:images/edith_notes.jpg]]
27
 [[file:images/edith_notes.jpg]]
33
-#+END_CENTER
34
 
28
 
35
 It is possible to turn off the login via *App Settings/edith* if you wish, but this will enable anyone on the internet to view or edit notes on your system, which could have obvious privacy or stability implications. From *App settings/edith* it's also possible to browse through your notes files.
29
 It is possible to turn off the login via *App Settings/edith* if you wish, but this will enable anyone on the internet to view or edit notes on your system, which could have obvious privacy or stability implications. From *App settings/edith* it's also possible to browse through your notes files.

+ 2
- 7
doc/EN/app_emacs.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Emacs</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Emacs
18
 
13
 
19
 Emacs is a text editor popular with software developers or anyone who needs to take notes at high speed or be able to customise their editing environment to a high degree. When installed on Freedombone it can be used together the Mutt email client to edit new emails or if you need to manually edit configuration files.
14
 Emacs is a text editor popular with software developers or anyone who needs to take notes at high speed or be able to customise their editing environment to a high degree. When installed on Freedombone it can be used together the Mutt email client to edit new emails or if you need to manually edit configuration files.
20
 
15
 

+ 2
- 7
doc/EN/app_etherpad.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Etherpad</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Etherpad
18
 
13
 
19
 This is a well known system for real time collaborative editing of documents. Just log in, choose a document title and then edit. Different users will appear in different colours, and can also chat in the sidebar. This is installed as a private system in which only users on your Freedombone server will be able to create and edit documents, so it's not open to any random users on the internet.
14
 This is a well known system for real time collaborative editing of documents. Just log in, choose a document title and then edit. Different users will appear in different colours, and can also chat in the sidebar. This is installed as a private system in which only users on your Freedombone server will be able to create and edit documents, so it's not open to any random users on the internet.
20
 
15
 

+ 2
- 7
doc/EN/app_fedwiki.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Federated Wiki</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Federated Wiki
18
 
13
 
19
 Federated wikis are a relatively new concept. There can be multiple copies of the same page on different servers and it's then easy to pick which version you prefer, or make something new. It's like wiki meets mashup meets federation, and so is different from many previous web paradigms and may take some recalibration of how you think the web should work.
14
 Federated wikis are a relatively new concept. There can be multiple copies of the same page on different servers and it's then easy to pick which version you prefer, or make something new. It's like wiki meets mashup meets federation, and so is different from many previous web paradigms and may take some recalibration of how you think the web should work.
20
 
15
 

+ 3
- 9
doc/EN/app_friendica.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Friendica</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Friendica
18
 
13
 
19
 Friendica is a federated social networking system. It can federate with other popular systems such as GNU Social and Diaspora. Currently Friendica only works on the clearnet and doesn't have an onion address.
14
 Friendica is a federated social networking system. It can federate with other popular systems such as GNU Social and Diaspora. Currently Friendica only works on the clearnet and doesn't have an onion address.
20
 
15
 
37
 
32
 
38
 On first visiting your Friendica site you'll see the login screen. The first thing you need to do is to select *register* to create a new Friendica administrator user. The first user on the system then becomes its administrator.
33
 On first visiting your Friendica site you'll see the login screen. The first thing you need to do is to select *register* to create a new Friendica administrator user. The first user on the system then becomes its administrator.
39
 
34
 
40
-#+BEGIN_CENTER
35
+#+attr_html: :width 80% :align center
41
 [[file:images/friendicaadmin.jpg]]
36
 [[file:images/friendicaadmin.jpg]]
42
-#+END_CENTER
43
 
37
 
44
 Friendica has numerous addons which you might want to explore. Select the small icon next to the search box and you will get to the administrator settings. Select *plugins* and you can then configure which ones you want. From the *site* settings you can also force all links to use SSL/TLS for added security.
38
 Friendica has numerous addons which you might want to explore. Select the small icon next to the search box and you will get to the administrator settings. Select *plugins* and you can then configure which ones you want. From the *site* settings you can also force all links to use SSL/TLS for added security.
45
 
39
 

+ 7
- 18
doc/EN/app_gnusocial.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>GNU Social</h1>
16
-</center>
17
-#+END_EXPORT
12
+* GNU Social
18
 
13
 
19
 GNU Social is typically referred to as a microblogging system, although with a maximum post length much longer than Twitter it's really a sort of federated community blog with a stream-based appearance which also supports markdown formatting.
14
 GNU Social is typically referred to as a microblogging system, although with a maximum post length much longer than Twitter it's really a sort of federated community blog with a stream-based appearance which also supports markdown formatting.
20
 
15
 
24
 
19
 
25
 Some general advice about life in the fediverse [[./fediverse.html][can be found here]].
20
 Some general advice about life in the fediverse [[./fediverse.html][can be found here]].
26
 
21
 
27
-
28
-#+BEGIN_CENTER
22
+#+attr_html: :width 100% :align center
29
 [[file:images/gnusocial_pleroma.jpg]]
23
 [[file:images/gnusocial_pleroma.jpg]]
30
-#+END_CENTER
31
 
24
 
32
 
25
 
33
 * Installation
26
 * Installation
52
 
45
 
53
 GNU Social has a clutter-free mobile user interface which can be accessed via a Tor compatible browser (make sure to add a NoScript exception). Unlike similar proprietary sites there are no bribed posts.
46
 GNU Social has a clutter-free mobile user interface which can be accessed via a Tor compatible browser (make sure to add a NoScript exception). Unlike similar proprietary sites there are no bribed posts.
54
 
47
 
55
-#+BEGIN_CENTER
48
+#+attr_html: :width 80% :align center
56
 [[file:images/gnusocial_mobile.jpg]]
49
 [[file:images/gnusocial_mobile.jpg]]
57
-#+END_CENTER
58
 
50
 
59
 * Switching user interfaces
51
 * Switching user interfaces
60
 A few web based user interfaces are available for GNU SOcial. They are selectable by going to the *Administrator control panel* and choosing *App settings* then *gnusocial*.
52
 A few web based user interfaces are available for GNU SOcial. They are selectable by going to the *Administrator control panel* and choosing *App settings* then *gnusocial*.
61
 
53
 
62
-#+BEGIN_CENTER
54
+#+attr_html: :width 80% :align center
63
 [[file:images/gnusocial_settings.jpg]]
55
 [[file:images/gnusocial_settings.jpg]]
64
-#+END_CENTER
65
 
56
 
66
  * *Qvitter*: Looks similar to Twitter during its golden era, before the ads and other antifeatures arrived
57
  * *Qvitter*: Looks similar to Twitter during its golden era, before the ads and other antifeatures arrived
67
  * *Pleroma*: A modern and lightweight user interface
58
  * *Pleroma*: A modern and lightweight user interface
69
 
60
 
70
 * Using with Emacs
61
 * Using with Emacs
71
 
62
 
72
-#+BEGIN_CENTER
63
+#+attr_html: :width 100% :align center
73
 [[file:images/gnu-social-mode.jpg]]
64
 [[file:images/gnu-social-mode.jpg]]
74
-#+END_CENTER
75
 
65
 
76
 If you are an Emacs user it's also possible to set up GNU Social mode as follows:
66
 If you are an Emacs user it's also possible to set up GNU Social mode as follows:
77
 
67
 
122
 | CTRL-c CTRL-d | Post direct Message   |
112
 | CTRL-c CTRL-d | Post direct Message   |
123
 
113
 
124
 * Blocking controls
114
 * Blocking controls
125
-#+BEGIN_CENTER
115
+#+attr_html: :width 80% :align center
126
 [[file:images/controlpanel/control_panel_blocking.jpg]]
116
 [[file:images/controlpanel/control_panel_blocking.jpg]]
127
-#+END_CENTER
128
 
117
 
129
 The biggest hazard with GNU Social is that it's part of a public federated communications system. This means that conversations and replies from other servers may end up in your "whole known network" stream. The internet being what it is, some of these could be undesirable. You can block individual users or entire domains by going to the *Administrator control panel* and selecting *Domain or User Blocking*, then adding or removing entries. This blocks domains at the firewall level and also at the level of database and file storage.
118
 The biggest hazard with GNU Social is that it's part of a public federated communications system. This means that conversations and replies from other servers may end up in your "whole known network" stream. The internet being what it is, some of these could be undesirable. You can block individual users or entire domains by going to the *Administrator control panel* and selecting *Domain or User Blocking*, then adding or removing entries. This blocks domains at the firewall level and also at the level of database and file storage.
130
 
119
 

+ 2
- 7
doc/EN/app_gogs.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Gogs</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Gogs
18
 
13
 
19
 Github is ok, but it's proprietary and funded by venture capital. If you been around on the internet for long enough then you know how this story eventually works itself out - i.e. badly for the users. It's really only a question of time. If you're a software developer or do things which involve the Git version control system then it's a good idea to become accustomed to hosting your own repositories, before the inevitable Github shitstorm occurs.
14
 Github is ok, but it's proprietary and funded by venture capital. If you been around on the internet for long enough then you know how this story eventually works itself out - i.e. badly for the users. It's really only a question of time. If you're a software developer or do things which involve the Git version control system then it's a good idea to become accustomed to hosting your own repositories, before the inevitable Github shitstorm occurs.
20
 
15
 

+ 2
- 7
doc/EN/app_htmly.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>HTMLy</h1>
16
-</center>
17
-#+END_EXPORT
12
+* HTMLy
18
 
13
 
19
 HTMLy is a databaseless blogging system.
14
 HTMLy is a databaseless blogging system.
20
 
15
 

+ 3
- 9
doc/EN/app_hubzilla.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Hubzilla</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Hubzilla
18
 
13
 
19
 Hubzilla is a web publishing and social network system which includes wiki, web pages, photo albums and file storage. It also has privacy controls which allow you to define who can see which content. It's possible to write posts and have them visible only to a group of friends (known as "/privacy groups/"), with the encryption being handled automatically. Currently Hubzilla only works on the clearnet and doesn't have an onion address.
14
 Hubzilla is a web publishing and social network system which includes wiki, web pages, photo albums and file storage. It also has privacy controls which allow you to define who can see which content. It's possible to write posts and have them visible only to a group of friends (known as "/privacy groups/"), with the encryption being handled automatically. Currently Hubzilla only works on the clearnet and doesn't have an onion address.
20
 
15
 
37
 
32
 
38
 On first visiting your Hubzilla site you'll see the login screen. The first thing you need to do is *register* a new user. The first user on the system then becomes its administrator.
33
 On first visiting your Hubzilla site you'll see the login screen. The first thing you need to do is *register* a new user. The first user on the system then becomes its administrator.
39
 
34
 
40
-#+BEGIN_CENTER
35
+#+attr_html: :width 80% :align center
41
 [[file:images/hubzilla_mobile.jpg]]
36
 [[file:images/hubzilla_mobile.jpg]]
42
-#+END_CENTER

+ 2
- 7
doc/EN/app_icecast.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Icecast</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Icecast
18
 
13
 
19
 Icecast enables you to run something like an internet radio station. So if you have multiple audio files and want to be able to stream those in sequence from a web site then this can be useful.
14
 Icecast enables you to run something like an internet radio station. So if you have multiple audio files and want to be able to stream those in sequence from a web site then this can be useful.
20
 
15
 

+ 4
- 7
doc/EN/app_irc.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>IRC</h1>
16
-</center>
17
-#+END_EXPORT
12
+* IRC
18
 
13
 
19
 IRC is useful for multi-user chat. The classic use case is for software development where many engineers might need to coordinate their activities, but it's also useful for meetings, parties and general socialising.
14
 IRC is useful for multi-user chat. The classic use case is for software development where many engineers might need to coordinate their activities, but it's also useful for meetings, parties and general socialising.
20
 
15
 
56
 
51
 
57
 If you are using the ordinary domain name (clearnet/ICANN) then make sure that *Use SSL* is checked.
52
 If you are using the ordinary domain name (clearnet/ICANN) then make sure that *Use SSL* is checked.
58
 
53
 
54
+#+attr_html: :width 80% :align center
59
 [[file:images/hexchat_setup_clearnet.jpg]]
55
 [[file:images/hexchat_setup_clearnet.jpg]]
60
 
56
 
61
 If you are using the onion address then *use SSL* should be unchecked and the transport encryption will be handled via the onion address itself.
57
 If you are using the onion address then *use SSL* should be unchecked and the transport encryption will be handled via the onion address itself.
62
 
58
 
59
+#+attr_html: :width 80% :align center
63
 [[file:images/hexchat_setup.jpg]]
60
 [[file:images/hexchat_setup.jpg]]
64
 
61
 
65
 Within the *Password* field enter the password which can be found from the IRC menu of the *control panel*.
62
 Within the *Password* field enter the password which can be found from the IRC menu of the *control panel*.

+ 2
- 7
doc/EN/app_kanboard.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>KanBoard</h1>
16
-</center>
17
-#+END_EXPORT
12
+* KanBoard
18
 
13
 
19
 Kanbans are one way of managing projects. They're traditionally used in businesses but can also be useful for personal TODO lists or within open source or DIY projects. If you have a list of things which need to be done and want to keep track of progress then this provides a way to do that.
14
 Kanbans are one way of managing projects. They're traditionally used in businesses but can also be useful for personal TODO lists or within open source or DIY projects. If you have a list of things which need to be done and want to keep track of progress then this provides a way to do that.
20
 
15
 

+ 3
- 9
doc/EN/app_keyserver.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>OpenPGP Key Server</h1>
16
-</center>
17
-#+END_EXPORT
12
+* OpenPGP Key Server
18
 
13
 
19
 The /web of trust/ is a nice idea, but how trustable is it? If you take a look at how many OpenPGP key servers are out there then there are a two or three main ones and not much else. Can you trust those servers? Who is maintaining them and how often? Is any censorship going on? How hard would it be for adversaries to get implants onto them? In terms of technology this infrastructure is quite old and it could have been neglected for a long time. Once vigilant maintainers might have turned lazy and gotten lax with server security, or been recruited over to the dark side.
14
 The /web of trust/ is a nice idea, but how trustable is it? If you take a look at how many OpenPGP key servers are out there then there are a two or three main ones and not much else. Can you trust those servers? Who is maintaining them and how often? Is any censorship going on? How hard would it be for adversaries to get implants onto them? In terms of technology this infrastructure is quite old and it could have been neglected for a long time. Once vigilant maintainers might have turned lazy and gotten lax with server security, or been recruited over to the dark side.
20
 
15
 
21
 For these kinds of reasons you might prefer to run your own web of trust infrastructure. In simple terms it's a database of GPG public keys which provides a way for users to /find out how to communicate with others securely via email/. You can meet in person and exchange public keys via sneakernet on USB drives, but most users of GPG don't do that. Instead they just download the public key for a given email address from one of the key servers.
16
 For these kinds of reasons you might prefer to run your own web of trust infrastructure. In simple terms it's a database of GPG public keys which provides a way for users to /find out how to communicate with others securely via email/. You can meet in person and exchange public keys via sneakernet on USB drives, but most users of GPG don't do that. Instead they just download the public key for a given email address from one of the key servers.
22
 
17
 
23
-#+BEGIN_CENTER
18
+#+attr_html: :width 80% :align center
24
 [[file:images/keyserver.jpg]]
19
 [[file:images/keyserver.jpg]]
25
-#+END_CENTER
26
 
20
 
27
 * Installation
21
 * Installation
28
 
22
 

+ 5
- 13
doc/EN/app_koel.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Koel</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Koel
18
 
13
 
19
 This enables you to store your music on the Freedombone server and then access it from any internet connected device. If you just want to make music accessible within your home network then [[./app_dlna.html][DLNA]] is usually sufficient, but if you want to be able to play your music from anywhere then [[https://koel.phanan.net][Koel]] is a better option.
14
 This enables you to store your music on the Freedombone server and then access it from any internet connected device. If you just want to make music accessible within your home network then [[./app_dlna.html][DLNA]] is usually sufficient, but if you want to be able to play your music from anywhere then [[https://koel.phanan.net][Koel]] is a better option.
20
 
15
 
21
-#+BEGIN_CENTER
16
+#+attr_html: :width 80% :align center
22
 [[file:images/koel.jpg]]
17
 [[file:images/koel.jpg]]
23
-#+END_CENTER
24
 
18
 
25
 * Installation
19
 * Installation
26
 Log into your system with:
20
 Log into your system with:
37
 
31
 
38
 Once logged in go to settings and set the media path to */music*.
32
 Once logged in go to settings and set the media path to */music*.
39
 
33
 
40
-#+BEGIN_CENTER
34
+#+attr_html: :width 80% :align center
41
 [[file:images/koelsettings.jpg]]
35
 [[file:images/koelsettings.jpg]]
42
-#+END_CENTER
43
 
36
 
44
 * Importing music
37
 * Importing music
45
 
38
 
46
 This app doesn't have any way to upload music and instead just expects that there will be a directory on the server containing music files. There are a couple of ways to get new music files onto the system: either by using ssh or by putting them onto a USB drive.
39
 This app doesn't have any way to upload music and instead just expects that there will be a directory on the server containing music files. There are a couple of ways to get new music files onto the system: either by using ssh or by putting them onto a USB drive.
47
 
40
 
48
-#+BEGIN_CENTER
41
+#+attr_html: :width 80% :align center
49
 [[file:images/controlpanel/control_panel_koel.jpg]]
42
 [[file:images/controlpanel/control_panel_koel.jpg]]
50
-#+END_CENTER
51
 
43
 
52
 ** Via ssh
44
 ** Via ssh
53
 
45
 

+ 3
- 9
doc/EN/app_lychee.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Lychee</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Lychee
18
 
13
 
19
 Lychee is a simple and lightweight photo album for the web. Whether you're an amateur or professional photographer, or want to publish random holiday pics or cat pictures. Lychee just does what it says it does without any fuss. There is also a photo album feature within [[./app_hubzilla.html][Hubzilla]] if you need more sophisticated social photo sharing with individualised permissions.
14
 Lychee is a simple and lightweight photo album for the web. Whether you're an amateur or professional photographer, or want to publish random holiday pics or cat pictures. Lychee just does what it says it does without any fuss. There is also a photo album feature within [[./app_hubzilla.html][Hubzilla]] if you need more sophisticated social photo sharing with individualised permissions.
20
 
15
 
36
 
31
 
37
 Within a browser navigate to your lychee domain name or onion address. It should look like this:
32
 Within a browser navigate to your lychee domain name or onion address. It should look like this:
38
 
33
 
39
-#+BEGIN_CENTER
34
+#+attr_html: :width 80% :align center
40
 [[file:images/lychee_setup.jpg]]
35
 [[file:images/lychee_setup.jpg]]
41
-#+END_CENTER
42
 
36
 
43
 Within the *Administrator control panel* select *App Settings* and then *lychee*. This will show the initial login settings which you need to set up the database. To copy the password hold down the shift key, select the password then right click and copy.
37
 Within the *Administrator control panel* select *App Settings* and then *lychee*. This will show the initial login settings which you need to set up the database. To copy the password hold down the shift key, select the password then right click and copy.
44
 
38
 

+ 4
- 11
doc/EN/app_mailpile.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Mailpile</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Mailpile
18
 
13
 
19
 Mailpile provides a nice looking webmail interface suitable for use on desktop or mobile clients. It has good support for email encryption and makes that quite an simple process. At present it's usable but still has a few bugs and limitations. If you need a fully functional email client with comprehensive encryption support then either use Mutt or Thunderbird/Icedove.
14
 Mailpile provides a nice looking webmail interface suitable for use on desktop or mobile clients. It has good support for email encryption and makes that quite an simple process. At present it's usable but still has a few bugs and limitations. If you need a fully functional email client with comprehensive encryption support then either use Mutt or Thunderbird/Icedove.
20
 
15
 
56
 
51
 
57
 Under *Sending Mail* select *local* or if you need to proxy outgoing email through your ISP's server select *SMTP/TLS* and enter the details, then click *Next*.
52
 Under *Sending Mail* select *local* or if you need to proxy outgoing email through your ISP's server select *SMTP/TLS* and enter the details, then click *Next*.
58
 
53
 
59
-#+BEGIN_CENTER
54
+#+attr_html: :width 80% :align center
60
 [[file:images/mailpile_setup.jpg]]
55
 [[file:images/mailpile_setup.jpg]]
61
-#+END_CENTER
62
 
56
 
63
 Under *Receiving files* select *IMAP*, the domain as *localhost*, port *143* and your username, then click *Next*. Astute readers may well be concerned that IMAP over port 143 is not encrypted, but since this is only via localhost communication between the Mail Transport Agent and Mailpile doesn't travel over the internet and port 143 is not opened on the firewall so it's not possible to accidentally connect an external mail client insecurely.
57
 Under *Receiving files* select *IMAP*, the domain as *localhost*, port *143* and your username, then click *Next*. Astute readers may well be concerned that IMAP over port 143 is not encrypted, but since this is only via localhost communication between the Mail Transport Agent and Mailpile doesn't travel over the internet and port 143 is not opened on the firewall so it's not possible to accidentally connect an external mail client insecurely.
64
 
58
 
65
-#+BEGIN_CENTER
59
+#+attr_html: :width 80% :align center
66
 [[file:images/mailpile_setup_keys.jpg]]
60
 [[file:images/mailpile_setup_keys.jpg]]
67
-#+END_CENTER
68
 
61
 
69
 Under *Security and Privacy* either select your existing encryption key or if you only get the option to create a new one then do so, then click *Add* or *Save*.
62
 Under *Security and Privacy* either select your existing encryption key or if you only get the option to create a new one then do so, then click *Add* or *Save*.
70
 
63
 

+ 3
- 9
doc/EN/app_matrix.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Matrix</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Matrix
18
 
13
 
19
-#+BEGIN_CENTER
14
+#+attr_html: :width 100% :align center
20
 [[file:images/matrix_riotweb.jpg]]
15
 [[file:images/matrix_riotweb.jpg]]
21
-#+END_CENTER
22
 
16
 
23
 Matrix is a federated communications system, typically for multi-user chat, with end-to-end content security features. You can consider it to be like a modernized version of IRC chat where the crypto and access controls have been built in by default. At present Matrix is really only a creature of the clearnet and so there isn't any way to protect the metadata. Despite the talk of security the lack of metadata defenses make this really only suitable for public communications, similar to microblogging or public IRC channels.
17
 Matrix is a federated communications system, typically for multi-user chat, with end-to-end content security features. You can consider it to be like a modernized version of IRC chat where the crypto and access controls have been built in by default. At present Matrix is really only a creature of the clearnet and so there isn't any way to protect the metadata. Despite the talk of security the lack of metadata defenses make this really only suitable for public communications, similar to microblogging or public IRC channels.
24
 
18
 

+ 3
- 7
doc/EN/app_mediagoblin.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Mediagoblin</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Mediagoblin
18
 
13
 
19
 With Mediagoblin you can host video and audio content in a similar manner to the proprietary systems such as YouTube and SoundCloud. This system supports free media formats such as /webm/, /ogv/ and /ogg/. Another similar system which might be better fitted for small servers is [[./app_peertube.html][PeerTube]], since it uses webtorrent to distribute video files. Webtorrent will only work with WebRTC enabled browsers though.
14
 With Mediagoblin you can host video and audio content in a similar manner to the proprietary systems such as YouTube and SoundCloud. This system supports free media formats such as /webm/, /ogv/ and /ogg/. Another similar system which might be better fitted for small servers is [[./app_peertube.html][PeerTube]], since it uses webtorrent to distribute video files. Webtorrent will only work with WebRTC enabled browsers though.
20
 
15
 
21
 When hosting media files you should take into consideration that since anyone on the internet can view your content then this could significantly increase your bandwidth usage and overall strain on the server. Also unless you are just hosting images then hardware such as the Beaglebone Black won't be powerful enough for a good user experience when either uploading or playing back videos. It's recommended that you use one of the more powerful quad (or more) core single board computers or an old laptop if you want to run Mediagoblin on it.
16
 When hosting media files you should take into consideration that since anyone on the internet can view your content then this could significantly increase your bandwidth usage and overall strain on the server. Also unless you are just hosting images then hardware such as the Beaglebone Black won't be powerful enough for a good user experience when either uploading or playing back videos. It's recommended that you use one of the more powerful quad (or more) core single board computers or an old laptop if you want to run Mediagoblin on it.
22
 
17
 
18
+#+attr_html: :width 50% :align center
23
 #+BEGIN_CENTER
19
 #+BEGIN_CENTER
24
 [[file:images/mediagoblin.jpg]]
20
 [[file:images/mediagoblin.jpg]]
25
 #+END_CENTER
21
 #+END_CENTER

+ 3
- 9
doc/EN/app_mumble.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Mumble</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Mumble
18
 
13
 
19
 Mumble is a well known VoIP system originally used for gaming, but which works just as well for any general conference calls or meetings.
14
 Mumble is a well known VoIP system originally used for gaming, but which works just as well for any general conference calls or meetings.
20
 
15
 
32
 
27
 
33
 From the menu select *Configure* then *Settings*. Select the *Advanced* checkbox then select *Network*. Select *Force TCP mode* and proxy type *Socks5*. Hostname should be set to *localhost* and port should be *9050*.
28
 From the menu select *Configure* then *Settings*. Select the *Advanced* checkbox then select *Network*. Select *Force TCP mode* and proxy type *Socks5*. Hostname should be set to *localhost* and port should be *9050*.
34
 
29
 
35
-#+BEGIN_CENTER
30
+#+attr_html: :width 80% :align center
36
 [[file:images/mumble_config.jpg]]
31
 [[file:images/mumble_config.jpg]]
37
-#+END_CENTER
38
 
32
 
39
 Select *Apply* and *Ok*, then on the menu *Server* and *Connect*.
33
 Select *Apply* and *Ok*, then on the menu *Server* and *Connect*.
40
 
34
 

+ 3
- 9
doc/EN/app_nextcloud.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>NextCloud</h1>
16
-</center>
17
-#+END_EXPORT
12
+* NextCloud
18
 
13
 
19
-#+BEGIN_CENTER
14
+#+attr_html: :width 100% :align center
20
 [[file:images/nextcloud.jpg]]
15
 [[file:images/nextcloud.jpg]]
21
-#+END_CENTER
22
 
16
 
23
 NextCloud is a system for file synchronisation and also has many other plugins for calendar, videoconferencing, collaborative document editing and federated file sharing. It's a lot more elaborate than Syncthing, but there may be situations where centralized control of your files on your server is better than a purely peer-to-peer approach (eg. if you need to remove a user's access to files).
17
 NextCloud is a system for file synchronisation and also has many other plugins for calendar, videoconferencing, collaborative document editing and federated file sharing. It's a lot more elaborate than Syncthing, but there may be situations where centralized control of your files on your server is better than a purely peer-to-peer approach (eg. if you need to remove a user's access to files).
24
 
18
 

+ 2
- 4
doc/EN/app_peertube.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_CENTER
12
+#+attr_html: :width 100% :align center
14
 [[file:images/peertube.jpg]]
13
 [[file:images/peertube.jpg]]
15
-#+END_CENTER
16
 
14
 
17
 This is a video hosting system similar to Mediagoblin but using webtorrent to help distribute the files to or between clients. This should be more practical for situations where a video becomes popular because the load is then spread across the network, with performance increasing with the number of nodes. However, the torrenting aspect of it only works with WebRTC enabled browsers and so this means it's unlikely to fully work with a Tor browser. Without WebRTC then from a user point of view it's effectively the same thing as Mediagoblin.
15
 This is a video hosting system similar to Mediagoblin but using webtorrent to help distribute the files to or between clients. This should be more practical for situations where a video becomes popular because the load is then spread across the network, with performance increasing with the number of nodes. However, the torrenting aspect of it only works with WebRTC enabled browsers and so this means it's unlikely to fully work with a Tor browser. Without WebRTC then from a user point of view it's effectively the same thing as Mediagoblin.
18
 
16
 

+ 2
- 7
doc/EN/app_pihole.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>PI-Hole: The Black Hole for Web Adverts</h1>
16
-</center>
17
-#+END_EXPORT
12
+* PI-Hole: The Black Hole for Web Adverts
18
 
13
 
19
 Idiots who have an inflated sense of self-entitlement will tell you that it's /your moral duty/ to view their mind-numbingly tedious corporate ads on their web site or YouTube channel, or else their kids will starve and the sky will fall because their revenue stream will dry up. But that's bullshit. There is nothing intrinsic or morally mandatory about adverts propping up the livelihoods of netizens, and indeed a web not primarily based on advertising money might have been a much better and more interesting place by now, with a lot less spying.
14
 Idiots who have an inflated sense of self-entitlement will tell you that it's /your moral duty/ to view their mind-numbingly tedious corporate ads on their web site or YouTube channel, or else their kids will starve and the sky will fall because their revenue stream will dry up. But that's bullshit. There is nothing intrinsic or morally mandatory about adverts propping up the livelihoods of netizens, and indeed a web not primarily based on advertising money might have been a much better and more interesting place by now, with a lot less spying.
20
 
15
 

+ 6
- 14
doc/EN/app_pleroma.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
-
13
-#+BEGIN_CENTER
14
-[[file:images/pleroma-logo.png]]
15
-#+END_CENTER
16
 
11
 
17
 #+BEGIN_QUOTE
12
 #+BEGIN_QUOTE
18
 "/The way to keep giant companies from sterilizing the Internet is to make their sites irrelevant. If all the cool stuff happens elsewhere, people will follow. We did this with AOL and Prodigy, and we can do it again./" -- Maciej Cegłowski
13
 "/The way to keep giant companies from sterilizing the Internet is to make their sites irrelevant. If all the cool stuff happens elsewhere, people will follow. We did this with AOL and Prodigy, and we can do it again./" -- Maciej Cegłowski
22
 
17
 
23
 Some general advice about life in the fediverse [[./fediverse.html][can be found here]].
18
 Some general advice about life in the fediverse [[./fediverse.html][can be found here]].
24
 
19
 
25
-#+BEGIN_CENTER
20
+#+attr_html: :width 100% :align center
26
 [[file:images/pleroma.jpg]]
21
 [[file:images/pleroma.jpg]]
27
-#+END_CENTER
28
 
22
 
29
 * Installation
23
 * Installation
30
 Log into your system with:
24
 Log into your system with:
45
 * Mastodon user interface
39
 * Mastodon user interface
46
 If you prefer a Tweetdeck-style user interface, similar to Mastodon, then once you have registered an account navigate to */yourpleromadomainname/web* and log in.
40
 If you prefer a Tweetdeck-style user interface, similar to Mastodon, then once you have registered an account navigate to */yourpleromadomainname/web* and log in.
47
 
41
 
48
-#+BEGIN_CENTER
42
+#+attr_html: :width 100% :align center
49
 [[file:images/pleromamastodon.jpg]]
43
 [[file:images/pleromamastodon.jpg]]
50
-#+END_CENTER
51
 
44
 
52
 * Mobile apps
45
 * Mobile apps
53
 It's also possible to use Mastodon apps together with Pleroma, such as Tusky, since it supports the Mastodon API. You may need to install *IcecatMobile* and set it as your default browser (under *Settings/Apps/Menu*) in order for the initial oauth registration process to work.
46
 It's also possible to use Mastodon apps together with Pleroma, such as Tusky, since it supports the Mastodon API. You may need to install *IcecatMobile* and set it as your default browser (under *Settings/Apps/Menu*) in order for the initial oauth registration process to work.
54
 
47
 
55
-#+BEGIN_CENTER
48
+#+attr_html: :width 50% :align center
56
 [[file:images/tusky.jpg]]
49
 [[file:images/tusky.jpg]]
57
-#+END_CENTER
50
+
58
 * Blocking controls
51
 * Blocking controls
59
-#+BEGIN_CENTER
52
+#+attr_html: :width 80% :align center
60
 [[file:images/controlpanel/control_panel_blocking.jpg]]
53
 [[file:images/controlpanel/control_panel_blocking.jpg]]
61
-#+END_CENTER
62
 
54
 
63
 The biggest hazard with Pleroma is that it's part of a public federated communications system. This means that conversations and replies from other servers may end up in your "whole known network" stream. The internet being what it is, some of these could be undesirable. You can block individual users or entire domains by going to the *Administrator control panel* and selecting *Domain or User Blocking*, then adding or removing entries. This blocks domains at the firewall level and also at the level of database and file storage.
55
 The biggest hazard with Pleroma is that it's part of a public federated communications system. This means that conversations and replies from other servers may end up in your "whole known network" stream. The internet being what it is, some of these could be undesirable. You can block individual users or entire domains by going to the *Administrator control panel* and selecting *Domain or User Blocking*, then adding or removing entries. This blocks domains at the firewall level and also at the level of database and file storage.
64
 
56
 

+ 6
- 15
doc/EN/app_postactiv.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>PostActiv</h1>
16
-</center>
17
-#+END_EXPORT
12
+* PostActiv
18
 
13
 
19
 PostActiv is a fork of [[./app_gnusocial.html][GNU Social]] which includes some extra fixes and optimisations to improve performance. It federates just like GNU Social does and so whether you choose GNU Social or PostActiv is really just down to personal prefernce.
14
 PostActiv is a fork of [[./app_gnusocial.html][GNU Social]] which includes some extra fixes and optimisations to improve performance. It federates just like GNU Social does and so whether you choose GNU Social or PostActiv is really just down to personal prefernce.
20
 
15
 
21
 Some general advice about life in the fediverse [[./fediverse.html][can be found here]].
16
 Some general advice about life in the fediverse [[./fediverse.html][can be found here]].
22
 
17
 
23
-#+BEGIN_CENTER
18
+#+attr_html: :width 100% :align center
24
 [[file:images/postactiv_pleroma.jpg]]
19
 [[file:images/postactiv_pleroma.jpg]]
25
-#+END_CENTER
26
 
20
 
27
 * Installation
21
 * Installation
28
 Log into your system with:
22
 Log into your system with:
47
 * Switching user interfaces
41
 * Switching user interfaces
48
 A few web based user interfaces are available for PostActiv. They are selectable by going to the *Administrator control panel* and choosing *App settings* then *postactiv*.
42
 A few web based user interfaces are available for PostActiv. They are selectable by going to the *Administrator control panel* and choosing *App settings* then *postactiv*.
49
 
43
 
50
-#+BEGIN_CENTER
44
+#+attr_html: :width 80% :align center
51
 [[file:images/postactiv_settings.jpg]]
45
 [[file:images/postactiv_settings.jpg]]
52
-#+END_CENTER
53
 
46
 
54
  * *Qvitter*: Looks similar to Twitter during its golden era, before the ads and other antifeatures arrived
47
  * *Qvitter*: Looks similar to Twitter during its golden era, before the ads and other antifeatures arrived
55
  * *Pleroma*: A modern and lightweight user interface
48
  * *Pleroma*: A modern and lightweight user interface
57
 
50
 
58
 * Using with Emacs
51
 * Using with Emacs
59
 
52
 
60
-#+BEGIN_CENTER
53
+#+attr_html: :width 100% :align center
61
 [[file:images/gnu-social-mode.jpg]]
54
 [[file:images/gnu-social-mode.jpg]]
62
-#+END_CENTER
63
 
55
 
64
 If you are an Emacs user it's also possible to set up GNU Social mode, which is compatible with PostActiv. You can do that as follows:
56
 If you are an Emacs user it's also possible to set up GNU Social mode, which is compatible with PostActiv. You can do that as follows:
65
 
57
 
110
 | CTRL-c CTRL-d | Post direct Message   |
102
 | CTRL-c CTRL-d | Post direct Message   |
111
 
103
 
112
 * Blocking controls
104
 * Blocking controls
113
-#+BEGIN_CENTER
105
+#+attr_html: :width 80% :align center
114
 [[file:images/controlpanel/control_panel_blocking.jpg]]
106
 [[file:images/controlpanel/control_panel_blocking.jpg]]
115
-#+END_CENTER
116
 
107
 
117
 The biggest hazard with PostActiv is that it's part of a public federated communications system. This means that conversations and replies from other servers may end up in your "/whole known network/" stream. The internet being what it is, some of these could be undesirable. You can block individual users or entire domains by going to the *Administrator control panel* and selecting *Domain or User Blocking*, then adding or removing entries. This blocks domains at the firewall level and also at the level of database and file storage.
108
 The biggest hazard with PostActiv is that it's part of a public federated communications system. This means that conversations and replies from other servers may end up in your "/whole known network/" stream. The internet being what it is, some of these could be undesirable. You can block individual users or entire domains by going to the *Administrator control panel* and selecting *Domain or User Blocking*, then adding or removing entries. This blocks domains at the firewall level and also at the level of database and file storage.
118
 
109
 

+ 2
- 7
doc/EN/app_privatebin.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>PrivateBin</h1>
16
-</center>
17
-#+END_EXPORT
12
+* PrivateBin
18
 
13
 
19
 This is an encrypted pastebin, such that the server has zero knowledge of the content. It's intended for small amounts of text less than 32K in length. It's not intended for transfering large files, or for storing pastes for more than a day.
14
 This is an encrypted pastebin, such that the server has zero knowledge of the content. It's intended for small amounts of text less than 32K in length. It's not intended for transfering large files, or for storing pastes for more than a day.
20
 
15
 

+ 2
- 7
doc/EN/app_profanity.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Profanity</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Profanity
18
 
13
 
19
 To install this app you will first need to install the [[./app_xmpp.html][XMPP server]].
14
 To install this app you will first need to install the [[./app_xmpp.html][XMPP server]].
20
 
15
 

+ 3
- 9
doc/EN/app_riot.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Riot Web</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Riot Web
18
 
13
 
19
-#+BEGIN_CENTER
14
+#+attr_html: :width 100% :align center
20
 [[file:images/riotweb.jpg]]
15
 [[file:images/riotweb.jpg]]
21
-#+END_CENTER
22
 
16
 
23
 Riot Web is a browser based user interface for the [[./app_matrix.html][Matrix]] federated communications system. It allows you to do encrypted one-to-one or group chat, and has some fancy WebRTC features for voice and video conversations. The WebRTC stuff won't work in a Tor browser though. This type of system is fine for general public communications and collaboration on open source projects or gaming groups. For things which require real privacy though stick to XMPP with OMEMO.
17
 Riot Web is a browser based user interface for the [[./app_matrix.html][Matrix]] federated communications system. It allows you to do encrypted one-to-one or group chat, and has some fancy WebRTC features for voice and video conversations. The WebRTC stuff won't work in a Tor browser though. This type of system is fine for general public communications and collaboration on open source projects or gaming groups. For things which require real privacy though stick to XMPP with OMEMO.
24
 
18
 

+ 3
- 9
doc/EN/app_rss.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>RSS Reader</h1>
16
-</center>
17
-#+END_EXPORT
12
+* RSS Reader
18
 
13
 
19
 The way that RSS reading is set up on Freedombone gives you strong reading privacy. Not only is there onion routing between you and the server but also between the server and the source of the RSS feed. The only down side is that many RSS feeds are still http only, and so could be vulnerable to injection attacks, but it's expected that more of this will go to https in the foreseeable future due to a combination of growing recognition of security issues and systems like Let's Encrypt which make obtaining certificates much easier.
14
 The way that RSS reading is set up on Freedombone gives you strong reading privacy. Not only is there onion routing between you and the server but also between the server and the source of the RSS feed. The only down side is that many RSS feeds are still http only, and so could be vulnerable to injection attacks, but it's expected that more of this will go to https in the foreseeable future due to a combination of growing recognition of security issues and systems like Let's Encrypt which make obtaining certificates much easier.
20
 
15
 
21
-#+BEGIN_CENTER
16
+#+attr_html: :width 80% :align center
22
 [[file:images/rss_reader_mobile.jpg]]
17
 [[file:images/rss_reader_mobile.jpg]]
23
-#+END_CENTER
24
 
18
 
25
 * Finding the onion address
19
 * Finding the onion address
26
 See the control panel for the RSS reader onion address.
20
 See the control panel for the RSS reader onion address.

+ 3
- 10
doc/EN/app_searx.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>SearX</h1>
16
-</center>
17
-#+END_EXPORT
12
+* SearX
18
 
13
 
19
 SearX is a metasearch engine. That means it returns results from other selected search engines. It's accessible via an onion address and provides a private search ability. Really the only advantage it gives you over searching directly from a Tor browser is the ability to customise your search experience.
14
 SearX is a metasearch engine. That means it returns results from other selected search engines. It's accessible via an onion address and provides a private search ability. Really the only advantage it gives you over searching directly from a Tor browser is the ability to customise your search experience.
20
 
15
 
21
 In terms of security both the connection between you and the server, and the outgoing connection from the server to other search engines are onion routed. This should give you a reasonable level of search privacy.
16
 In terms of security both the connection between you and the server, and the outgoing connection from the server to other search engines are onion routed. This should give you a reasonable level of search privacy.
22
 
17
 
23
-
24
-#+BEGIN_CENTER
18
+#+attr_html: :width 100% :align center
25
 [[file:images/searx.jpg]]
19
 [[file:images/searx.jpg]]
26
-#+END_CENTER
27
 
20
 
28
 * Installation
21
 * Installation
29
 
22
 

+ 4
- 11
doc/EN/app_syncthing.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Syncthing</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Syncthing
18
 
13
 
19
 Syncthing provides a similar capability to proprietary systems such as Dropbox, and also is well suited for use with low power single board computers. You can have one or more directories which are synchronized across your various laptops/desktops/devices, and this makes it hard for you to ever lose important files. The manner in which the synchronization is done is pretty secure, such that it would be difficult for passive adversaries (mass surveillance, "/men in the middle/", etc) to know what files you're sharing. Of course, you don't necessarily need to be running a server in order to use Syncthing, but if you do have a server which is always running then there's always at least one place to synchronize your files to or from.
14
 Syncthing provides a similar capability to proprietary systems such as Dropbox, and also is well suited for use with low power single board computers. You can have one or more directories which are synchronized across your various laptops/desktops/devices, and this makes it hard for you to ever lose important files. The manner in which the synchronization is done is pretty secure, such that it would be difficult for passive adversaries (mass surveillance, "/men in the middle/", etc) to know what files you're sharing. Of course, you don't necessarily need to be running a server in order to use Syncthing, but if you do have a server which is always running then there's always at least one place to synchronize your files to or from.
20
 
15
 
46
 
41
 
47
 Then select *File Synchronization*.
42
 Then select *File Synchronization*.
48
 
43
 
49
-#+BEGIN_CENTER
44
+#+attr_html: :width 80% :align center
50
 [[file:images/controlpanel/control_panel_file_sync.jpg]]
45
 [[file:images/controlpanel/control_panel_file_sync.jpg]]
51
-#+END_CENTER
52
 
46
 
53
 Select *Show device ID* and copy the long string of letters and numbers shown, using the shift key then select the text followed by right click then select copy.
47
 Select *Show device ID* and copy the long string of letters and numbers shown, using the shift key then select the text followed by right click then select copy.
54
 
48
 
55
 Open a non-Tor browser and enter  *http://127.0.0.1:8384* as the URL. You should now see the minimalistic user interface. Under *Remote Devices* select *Add Remote Device*. In the *Device ID* field paste the string you just copied (CTRL+v). The Device name can be anything. Under *Share Folders with Device* check *default* (or whatever folder you created on your local machine), then save.
49
 Open a non-Tor browser and enter  *http://127.0.0.1:8384* as the URL. You should now see the minimalistic user interface. Under *Remote Devices* select *Add Remote Device*. In the *Device ID* field paste the string you just copied (CTRL+v). The Device name can be anything. Under *Share Folders with Device* check *default* (or whatever folder you created on your local machine), then save.
56
 
50
 
57
-#+BEGIN_CENTER
51
+#+attr_html: :width 50% :align center
58
 [[file:images/syncthing_browser.jpg]]
52
 [[file:images/syncthing_browser.jpg]]
59
-#+END_CENTER
60
 
53
 
61
 From the top menu select *Actions* and then *Show ID*, then copy the ID string (usually select then CTRL+c). Go back to the terminal control panel menu and select *Add an ID* then paste what you just copied (CTRL+v). Optionally you can also provide a description so that you later can know what that string corresponds to.
54
 From the top menu select *Actions* and then *Show ID*, then copy the ID string (usually select then CTRL+c). Go back to the terminal control panel menu and select *Add an ID* then paste what you just copied (CTRL+v). Optionally you can also provide a description so that you later can know what that string corresponds to.
62
 
55
 

+ 3
- 9
doc/EN/app_tahoelafs.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Tahoe-LAFS</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Tahoe-LAFS
18
 
13
 
19
 This is a robust system for encrypted file storage on one or more servers. Files are accessed via a URL which contains the public key with which it was encrypted.
14
 This is a robust system for encrypted file storage on one or more servers. Files are accessed via a URL which contains the public key with which it was encrypted.
20
 
15
 
37
 * Adding more servers
32
 * Adding more servers
38
 You can add more servers to the system to increase its storage capacity. In a typical Tahoe-LAFS new data storage servers are automatically discovered via an introducer node, but that creates a single centralised point of failure. The installation on Freedombone has no introducer node and so details for the servers of your friends need to be entered manually.
33
 You can add more servers to the system to increase its storage capacity. In a typical Tahoe-LAFS new data storage servers are automatically discovered via an introducer node, but that creates a single centralised point of failure. The installation on Freedombone has no introducer node and so details for the servers of your friends need to be entered manually.
39
 
34
 
40
-#+BEGIN_CENTER
35
+#+attr_html: :width 50% :align center
41
 [[file:images/controlpanel/control_panel_tahoelafs.jpg]]
36
 [[file:images/controlpanel/control_panel_tahoelafs.jpg]]
42
-#+END_CENTER
43
 
37
 
44
 Other servers will typically be Freedombone systems with Tahoe-LAFS installed. Your Tahoe-LAFS server settings can be found on the *About* screen of the *Administrator control panel*. Use an end-to-end encrypted chat app to copy and paste those details and send them to other friends. To add the server details go to *App settings* on the *Administrator control panel* then select *tahoelafs* and *Add server*.
38
 Other servers will typically be Freedombone systems with Tahoe-LAFS installed. Your Tahoe-LAFS server settings can be found on the *About* screen of the *Administrator control panel*. Use an end-to-end encrypted chat app to copy and paste those details and send them to other friends. To add the server details go to *App settings* on the *Administrator control panel* then select *tahoelafs* and *Add server*.

+ 3
- 9
doc/EN/app_tox.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Tox</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Tox
18
 
13
 
19
 Tox is an encrypted peer-to-peer messaging system and so should work without Freedombone. It uses a system of nodes which act as a sort of directory service allowing users to find and connect to each other. The Tox node ID on the Freedombone can be found within *App Settings* under *tox* within the *Administrator control panel*. If you have other users connect to your node then you will be able to continue chatting even when no other nodes are available.
14
 Tox is an encrypted peer-to-peer messaging system and so should work without Freedombone. It uses a system of nodes which act as a sort of directory service allowing users to find and connect to each other. The Tox node ID on the Freedombone can be found within *App Settings* under *tox* within the *Administrator control panel*. If you have other users connect to your node then you will be able to continue chatting even when no other nodes are available.
20
 
15
 
27
 
22
 
28
 Then from the menu select *Run an app* followed by *tox*. Tox is encrypted by default and also routed through Tor, so it should be reasonably secure both in terms of message content and metadata.
23
 Then from the menu select *Run an app* followed by *tox*. Tox is encrypted by default and also routed through Tor, so it should be reasonably secure both in terms of message content and metadata.
29
 
24
 
30
-#+BEGIN_CENTER
25
+#+attr_html: :width 80% :align center
31
 [[file:images/toxic.jpg]]
26
 [[file:images/toxic.jpg]]
32
-#+END_CENTER

+ 3
- 11
doc/EN/app_turtl.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Turtl</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Turtl
18
 
13
 
19
 #+begin_quote
14
 #+begin_quote
20
 "/Now is a very important time in history. Every aspect of our lives is moving into the digital world faster than we realize. We use apps like Dropbox or Evernote because of their convenience, but in doing so we sacrifice our privacy. What data isn't sold to advertisers or stolen by hackers is carved up by government surveillance./"
15
 "/Now is a very important time in history. Every aspect of our lives is moving into the digital world faster than we realize. We use apps like Dropbox or Evernote because of their convenience, but in doing so we sacrifice our privacy. What data isn't sold to advertisers or stolen by hackers is carved up by government surveillance./"
24
 
19
 
25
 Since the data at rest is stored in PGP encrypted format this is a good system to use in cases where security really is a critical factor.
20
 Since the data at rest is stored in PGP encrypted format this is a good system to use in cases where security really is a critical factor.
26
 
21
 
27
-
28
-#+BEGIN_CENTER
22
+#+attr_html: :width 50% :align center
29
 [[file:images/turtl.jpg]]
23
 [[file:images/turtl.jpg]]
30
-#+END_CENTER
31
 
24
 
32
 * Installation
25
 * Installation
33
 Log into your system with:
26
 Log into your system with:
49
 
42
 
50
 You should then be able to log in and start using the app. You might also want to invite any other users of your Freedombone system to also sign up using the turtl domain name which you specified during installation.
43
 You should then be able to log in and start using the app. You might also want to invite any other users of your Freedombone system to also sign up using the turtl domain name which you specified during installation.
51
 
44
 
52
-
53
 * Locking it down
45
 * Locking it down
54
 Once you have created accounts it's a good idea to turn off new turtl signups. This will prevent millions of random users on the interwebs from creating accounts on your system and killing your server, or possibly other nefarious security scenarios. Go to the *administrator control panel* and select *App Settings* then *turtl*. You will then be able to disable new user registrations and also set the data storage limit for users. If you need additional users later you can always temporarily re-enable signups.
46
 Once you have created accounts it's a good idea to turn off new turtl signups. This will prevent millions of random users on the interwebs from creating accounts on your system and killing your server, or possibly other nefarious security scenarios. Go to the *administrator control panel* and select *App Settings* then *turtl*. You will then be able to disable new user registrations and also set the data storage limit for users. If you need additional users later you can always temporarily re-enable signups.

+ 2
- 7
doc/EN/app_vpn.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>OpenVPN</h1>
16
-</center>
17
-#+END_EXPORT
12
+* OpenVPN
18
 
13
 
19
 #+begin_quote
14
 #+begin_quote
20
 "/The Net interprets censorship as damage and routes around it./" -- John Gilmore
15
 "/The Net interprets censorship as damage and routes around it./" -- John Gilmore

+ 2
- 7
doc/EN/app_xmpp.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>XMPP/Jabber</h1>
16
-</center>
17
-#+END_EXPORT
12
+* XMPP/Jabber
18
 
13
 
19
 Most people know XMPP as "/Jabber/" and it's sometimes regarded and an old protocol once used by Google and Facebook but which is no longer relevant. However, it still works and if appropriately configured, as it is on Freedombone, can provide the best chat messaging security currently available.
14
 Most people know XMPP as "/Jabber/" and it's sometimes regarded and an old protocol once used by Google and Facebook but which is no longer relevant. However, it still works and if appropriately configured, as it is on Freedombone, can provide the best chat messaging security currently available.
20
 
15
 

+ 6
- 5
doc/EN/apps.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
 #+begin_quote
12
 #+begin_quote
14
 "/In times of aggressive corporatization, increasing enclosure of communication spaces, and blanket surveillance, emancipatory communication practices appear to be particularly well suited to offer concrete alternatives to activists and citizens alike/" -- Stefania Milan
13
 "/In times of aggressive corporatization, increasing enclosure of communication spaces, and blanket surveillance, emancipatory communication practices appear to be particularly well suited to offer concrete alternatives to activists and citizens alike/" -- Stefania Milan
16
 
15
 
17
 The base install of the system just contains an email server and Mutt client, but not much else. In addition from within the *Administrator control panel* under *Add/remove apps* the following are installable. This list only applies on the home server version, with the mesh network version having a different and smaller set of apps.
16
 The base install of the system just contains an email server and Mutt client, but not much else. In addition from within the *Administrator control panel* under *Add/remove apps* the following are installable. This list only applies on the home server version, with the mesh network version having a different and smaller set of apps.
18
 
17
 
19
-#+BEGIN_CENTER
18
+#+attr_html: :width 80% :align center
20
 [[file:images/controlpanel/control_panel_apps.jpg]]
19
 [[file:images/controlpanel/control_panel_apps.jpg]]
21
-#+END_CENTER
22
-
23
 
20
 
24
 * Akaunting
21
 * Akaunting
25
 A web based accounts system for small businesses or freelancers.
22
 A web based accounts system for small businesses or freelancers.
193
 Chat server which can be used together with client such as Gajim or Conversations to provide end-to-end content security and also onion routed metadata security. Includes advanced features such as /client state notification/ to save battery power on your mobile devices, support for seamless roaming between networks and /message carbons/ so that you can receive the same messages while being simultaneously logged in to your account on more than one device.
190
 Chat server which can be used together with client such as Gajim or Conversations to provide end-to-end content security and also onion routed metadata security. Includes advanced features such as /client state notification/ to save battery power on your mobile devices, support for seamless roaming between networks and /message carbons/ so that you can receive the same messages while being simultaneously logged in to your account on more than one device.
194
 
191
 
195
 [[./app_xmpp.html][How to use it]]
192
 [[./app_xmpp.html][How to use it]]
193
+
194
+
195
+#+attr_html: :width 10% :height 2% :align center
196
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 3
- 5
doc/EN/armbian.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, armbian
4
+#+KEYWORDS: freedombone, debian, armbian, sbc
5
 #+DESCRIPTION: Installing Freedombone on Armbian
5
 #+DESCRIPTION: Installing Freedombone on Armbian
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
 
12
 
14
 #+begin_export html
13
 #+begin_export html
43
 
42
 
44
 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.
43
 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.
45
 
44
 
46
-#+BEGIN_CENTER
45
+#+attr_html: :width 80% :align center
47
 [[file:images/armbian_setup.jpg]]
46
 [[file:images/armbian_setup.jpg]]
48
-#+END_CENTER
49
 
47
 
50
 When the user account is created type *exit* to leave the ssh session then log back in with your new user account.
48
 When the user account is created type *exit* to leave the ssh session then log back in with your new user account.
51
 
49
 

+ 4
- 9
doc/EN/backups.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, backup
5
+#+DESCRIPTION: How to make backups on Freedombone
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Backups</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Backups
18
 
13
 
19
 #+BEGIN_CENTER
14
 #+BEGIN_CENTER
20
 #+ATTR_HTML: :border -1
15
 #+ATTR_HTML: :border -1

+ 6
- 15
doc/EN/beaglebone.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Installing Freedombone on a Beaglebone Black</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Installing Freedombone on a Beaglebone Black
18
 
13
 
19
 The Beaglebone Black is small, cheap, a fully open hardware design, has a hardware random number generator and consumes very little electrical power, making it suitable for all kinds of uses. There is also a wireless version.
14
 The Beaglebone Black is small, cheap, a fully open hardware design, has a hardware random number generator and consumes very little electrical power, making it suitable for all kinds of uses. There is also a wireless version.
20
 
15
 
21
 You can easily use one to run your own internet services from home.
16
 You can easily use one to run your own internet services from home.
22
 
17
 
23
-#+BEGIN_CENTER
18
+#+attr_html: :width 50% :align center
24
 [[file:images/bbb_board.jpg]]
19
 [[file:images/bbb_board.jpg]]
25
-#+END_CENTER
26
 
20
 
27
 You will need:
21
 You will need:
28
 
22
 
57
 freedombone-image --setup parabola
51
 freedombone-image --setup parabola
58
 #+end_src
52
 #+end_src
59
 
53
 
60
-#+BEGIN_CENTER
54
+#+attr_html: :width 80% :align center
61
 [[file:images/microsd_reader.jpg]]
55
 [[file:images/microsd_reader.jpg]]
62
-#+END_CENTER
63
 
56
 
64
 If you own a domain name and have it linked to a dynamic DNS account (eg. [[https://freedns.afraid.org][freeDNS]]) and want to make a system accessible via an ordinary browser then run:
57
 If you own a domain name and have it linked to a dynamic DNS account (eg. [[https://freedns.afraid.org][freeDNS]]) and want to make a system accessible via an ordinary browser then run:
65
 
58
 
75
 
68
 
76
 Onion addresses have the advantage of being difficult to censor and you don't need to buy a domain or have a dynamic DNS account. An onion based system also means you don't need to think about NAT traversal type issues. This *does not* mean that everything gets routed through Tor, it just means that the sites for apps which you install will be available through Tor's address system.
69
 Onion addresses have the advantage of being difficult to censor and you don't need to buy a domain or have a dynamic DNS account. An onion based system also means you don't need to think about NAT traversal type issues. This *does not* mean that everything gets routed through Tor, it just means that the sites for apps which you install will be available through Tor's address system.
77
 
70
 
78
-#+BEGIN_CENTER
71
+#+attr_html: :width 80% :align center
79
 [[file:images/bbb_back.jpg]]
72
 [[file:images/bbb_back.jpg]]
80
-#+END_CENTER
81
 
73
 
82
 Now follow the [[./homeserver.html][instructions given here to copy the image to the microSD drive]] beginning with running the /freedombone-client/ command. Wherever it says "USB drive" substitute "microSD drive". When the microSD drive is ready plug it into the front of the Beaglebone. The photo below also includes an Atheros wifi USB dongle plugged into the front, but that's not necessary unless you want to set up the system to run on a wifi network.
74
 Now follow the [[./homeserver.html][instructions given here to copy the image to the microSD drive]] beginning with running the /freedombone-client/ command. Wherever it says "USB drive" substitute "microSD drive". When the microSD drive is ready plug it into the front of the Beaglebone. The photo below also includes an Atheros wifi USB dongle plugged into the front, but that's not necessary unless you want to set up the system to run on a wifi network.
83
 
75
 
84
-#+BEGIN_CENTER
76
+#+attr_html: :width 80% :align center
85
 [[file:images/bbb_front.jpg]]
77
 [[file:images/bbb_front.jpg]]
86
-#+END_CENTER
87
 
78
 
88
 Connect the power and for the non-wireless versions of the Beaglebone Black also connect the ethernet cable and plug it into your internet router.
79
 Connect the power and for the non-wireless versions of the Beaglebone Black also connect the ethernet cable and plug it into your internet router.
89
 
80
 

+ 6
- 11
doc/EN/boards.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Supported ARM boards</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Supported ARM boards
18
 
13
 
19
 The following ARM boards are supported by the build system. If your board isn't listed here then you may still be able to install Freedombone using [[./armbian.html][Armbian]].
14
 The following ARM boards are supported by the build system. If your board isn't listed here then you may still be able to install Freedombone using [[./armbian.html][Armbian]].
20
 
15
 
21
- - [[./downloads/current/freedombone-current-beaglebone-armhf.img.xz][beaglebone]]
22
- - [[./downloads/current/freedombone-current-cubieboard2-armhf.img.xz][cubieboard2]]
23
- - [[./downloads/current/freedombone-current-cubietruck-armhf.img.xz][cubietruck]]
24
- - [[./downloads/current/freedombone-current-pcduino3-armhf.img.xz][pcduino3]]
16
+ - [[./downloads/v31/freedombone-beaglebone-armhf.img.xz][beaglebone]]
17
+ - [[./downloads/v31/freedombone-cubieboard2-armhf.img.xz][cubieboard2]]
18
+ - [[./downloads/v31/freedombone-cubietruck-armhf.img.xz][cubietruck]]
19
+ - [[./downloads/v31/freedombone-pcduino3-armhf.img.xz][pcduino3]]
25
  - a20-olinuxino-lime
20
  - a20-olinuxino-lime
26
  - a20-olinuxino-lime2
21
  - a20-olinuxino-lime2
27
  - a20-olinuxino-micro
22
  - a20-olinuxino-micro

+ 4
- 9
doc/EN/code.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, code
5
+#+DESCRIPTION: Freedombone codebase
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Code</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Code
18
 
13
 
19
 Freedombone is really just a couple of [[https://www.gnu.org/software/bash][bash]] scripts which install and configure software on a Debian GNU/Linux system. If you're a system administrator, software engineer or Linux hobbyist you'll probably be familiar with command line scripting and be able to make your own modifications or custom variants to suit your needs. Freedombone is licensed under the [[https://www.gnu.org/licenses/agpl.html][GNU Affero General Public License version 3]] (or later).
14
 Freedombone is really just a couple of [[https://www.gnu.org/software/bash][bash]] scripts which install and configure software on a Debian GNU/Linux system. If you're a system administrator, software engineer or Linux hobbyist you'll probably be familiar with command line scripting and be able to make your own modifications or custom variants to suit your needs. Freedombone is licensed under the [[https://www.gnu.org/licenses/agpl.html][GNU Affero General Public License version 3]] (or later).
20
 
15
 

+ 5
- 5
doc/EN/codeofconduct.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+begin_export html
14
-<center><h1>Code of Conduct</h1></center>
15
-#+end_export
12
+* Code of Conduct
16
 
13
 
17
 * Be respectful
14
 * Be respectful
18
 
15
 
47
 Serious or persistent offenders will be kicked from chat rooms and any of their subsequent patches will be unlikely to be upstreamed. In this context "serious" means that someone is causing others to feel unsafe or be unable to contribute, for whatever reason.
44
 Serious or persistent offenders will be kicked from chat rooms and any of their subsequent patches will be unlikely to be upstreamed. In this context "serious" means that someone is causing others to feel unsafe or be unable to contribute, for whatever reason.
48
 
45
 
49
 This is not a big project and so there is no division of labor or special enforcement committee or bureaucratic process. Complaints should be made (in private) to the maintainer or chat room admin. The typical email address can be found in the source code headers. Preferably use GPG if you can, or XMPP with OpenPGP/OMEMO to bob@freedombone.net. XMPP messages are likely to get a quicker response.
46
 This is not a big project and so there is no division of labor or special enforcement committee or bureaucratic process. Complaints should be made (in private) to the maintainer or chat room admin. The typical email address can be found in the source code headers. Preferably use GPG if you can, or XMPP with OpenPGP/OMEMO to bob@freedombone.net. XMPP messages are likely to get a quicker response.
47
+
48
+#+attr_html: :width 10% :height 2% :align center
49
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 0
- 123
doc/EN/controlpanel.org View File

1
-#+TITLE:
2
-#+AUTHOR: Bob Mottram
3
-#+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Control Panel
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
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Control panel</h1>
16
-</center>
17
-#+END_EXPORT
18
-
19
-| [[Main menu]]               |
20
-| [[User control panel]]      |
21
-| [[About screen]]            |
22
-| [[Email filtering rules]]   |
23
-| [[Hubzilla menu]]           |
24
-| [[IRC menu]]                |
25
-| [[Media menu]]              |
26
-| [[Repository mirrors]]      |
27
-| [[Backup and restore menu]] |
28
-| [[Security menu]]           |
29
-| [[User management menu]]    |
30
-
31
-* Main menu
32
-You can access the main menu by logging into the system.
33
-
34
-#+BEGIN_SRC bash
35
-ssh myusername@mydomain -p 2222
36
-#+END_SRC
37
-
38
-Then selecting /Administrator controls/.
39
-
40
-It should look like this:
41
-
42
-#+BEGIN_CENTER
43
-[[file:images/controlpanel/control_panel.jpg]]
44
-#+END_CENTER
45
-
46
-To select anythng on the control panel use the *up and down* cursor keys and *space bar* to tag, then press *Enter*.
47
-
48
-* User control panel
49
-When a user initially logs in they will see a version of the control panel with restricted options aimed at the kinds of things which someone who isn't the administrator might wish to do. An expected scenario is that you might have a few friends or family members on the system, and this is who this menu is intended for.
50
-
51
-From this menu checking email or running chat applications is very easy, and they are configured in a safe manner without the user needing to do anything special. Email uses *mutt*, XMPP uses *profanity* and IRC uses *irssi*.
52
-
53
-#+BEGIN_CENTER
54
-[[./images/controlpanel/control_panel_user.jpg]]
55
-#+END_CENTER
56
-
57
-It's also possible for the user to define email filtering rules, add a ssh public key for key based login and also add or remove GPG public keys. They can also do this via the commandline if they prefer, but the menu system may provide an easier user interface.
58
-* About screen
59
-To find out your current domain names select the About screen from the main menu. This is especially useful for finding your onion addresses. For improved security by compartmentalisation, and also simpler implementation, each application has its own onion address.
60
-
61
-#+BEGIN_CENTER
62
-[[file:images/controlpanel/control_panel_about.jpg]]
63
-#+END_CENTER
64
-
65
-You can also see the SIP extension numbers for each user and how much disk space each user is consuming (typically this corresponds with email use).
66
-
67
-The Local Mirrors contains mirrored copies of the git repositories used by the system. If they don't have access to default repositories (mostly Github) then you can give these details to other users and then they can set their main repository such that they can pull from your system. Obviously any users doing this need to trust that you havn't modified the mirrored repositories in any way.
68
-
69
-* Email filtering rules
70
-You can add users to mailing lists, or block particular email addresses or subject lines in this menu.
71
-
72
-#+BEGIN_CENTER
73
-[[file:images/controlpanel/control_panel_filtering.jpg]]
74
-#+END_CENTER
75
-
76
-* Hubzilla menu
77
-This allows you to set the global directory location and obtain an SSL/TLS certificate if necessary.
78
-
79
-#+BEGIN_CENTER
80
-[[file:images/controlpanel/control_panel_hubzilla.jpg]]
81
-#+END_CENTER
82
-
83
-* IRC menu
84
-You can view the current IRC password or change it from here. Currently the IRC server does not work equally well on clrearnet and via Tor, so there is an option to switch from one to the other. Initially the IRC server will be running on clearnet (i.e. no onion routing).
85
-
86
-#+BEGIN_CENTER
87
-[[file:images/controlpanel/control_panel_irc.jpg]]
88
-#+END_CENTER
89
-
90
-* Media menu
91
-It's possible to add playable media to a USB drive and plug it into the system, then make it accessible to other devices such as tablets or phones on your local network via DLNA.
92
-
93
-#+BEGIN_CENTER
94
-[[file:images/controlpanel/control_panel_media.jpg]]
95
-#+END_CENTER
96
-
97
-* Repository mirrors
98
-If you don't want to use the default repositories, or don't have access to them, then you can obtain them from another Freedombone server (the details can be found on the other server on the *About* screen of the control panel).
99
-
100
-#+BEGIN_CENTER
101
-[[file:images/controlpanel/control_panel_mirrors.jpg]]
102
-#+END_CENTER
103
-
104
-* Backup and restore menu
105
-You can create backups or restore from backup here. It's also possible to create keydrives which store the backup key.
106
-
107
-#+BEGIN_CENTER
108
-[[file:images/controlpanel/control_panel_backup_restore.jpg]]
109
-#+END_CENTER
110
-
111
-* Security menu
112
-If you need to generate SSL/TLS certificates or change cypher details due to changing recommendations then you can do that here. If you are changing cypher details be extra careful not to make mistakes/typos, which could reduce the security of your system.
113
-
114
-#+BEGIN_CENTER
115
-[[file:images/controlpanel/control_panel_security.jpg]]
116
-#+END_CENTER
117
-
118
-* User management menu
119
-Users can be added or removed here.
120
-
121
-#+BEGIN_CENTER
122
-[[file:images/controlpanel/control_panel_users.jpg]]
123
-#+END_CENTER

+ 2
- 7
doc/EN/debianinstall.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>How to install on an existing Debian system</h1>
16
-</center>
17
-#+END_EXPORT
12
+* How to install on an existing Debian system
18
 
13
 
19
 #+BEGIN_QUOTE
14
 #+BEGIN_QUOTE
20
 "/The antagonism of surveillance is not privacy but the making of communities in struggle/"
15
 "/The antagonism of surveillance is not privacy but the making of communities in struggle/"

+ 8
- 7
doc/EN/devguide.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, developers
5
+#+DESCRIPTION: Freedombone developers guide
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+begin_export html
14
-<center><h1>Developers Guide</h1></center>
15
-#+end_export
12
+* Developers Guide
16
 
13
 
17
 * Introduction
14
 * Introduction
18
 Freedombone consists of a set of bash scripts. There are a lot of them, but they're not very complicated. If you're familiar with the GNU/Linux commandline and can hack a bash script then you can probably add a new app or fix a bug in the system. There are no trendy development frameworks to learn or to get in your way. You might also want to consult the [[./codeofconduct.html][Code of Conduct]], and there is a Matrix room at *#fbone:matrix.freedombone.net*
15
 Freedombone consists of a set of bash scripts. There are a lot of them, but they're not very complicated. If you're familiar with the GNU/Linux commandline and can hack a bash script then you can probably add a new app or fix a bug in the system. There are no trendy development frameworks to learn or to get in your way. You might also want to consult the [[./codeofconduct.html][Code of Conduct]], and there is a Matrix room at *#fbone:matrix.freedombone.net*
96
 If you want to make your own specially branded version of the mesh images, such as for a particular event, then to change the default desktop backgrounds edit the images within *img/backgrounds* and to change the available avatars and desktop icons edit the images within *img/avatars*. Re-create disk images using the instructions shown previously.
93
 If you want to make your own specially branded version of the mesh images, such as for a particular event, then to change the default desktop backgrounds edit the images within *img/backgrounds* and to change the available avatars and desktop icons edit the images within *img/avatars*. Re-create disk images using the instructions shown previously.
97
 
94
 
98
 If you need particular /dconf/ commands to alter desktop appearance or behavior then see the function /mesh_client_startup_applications/ within *src/freedombone-image-customise*.
95
 If you need particular /dconf/ commands to alter desktop appearance or behavior then see the function /mesh_client_startup_applications/ within *src/freedombone-image-customise*.
96
+
97
+
98
+#+attr_html: :width 10% :height 2% :align center
99
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 2
- 5
doc/EN/domains.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+begin_export html
14
-<center><h1>How to get a domain name</h1></center>
15
-#+end_export
12
+* How to get a domain name
16
 
13
 
17
 * The domain name itself
14
 * The domain name itself
18
 
15
 

+ 14
- 18
doc/EN/faq.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, hubzilla, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
4
+#+KEYWORDS: freedombone, faq
5
 #+DESCRIPTION: Frequently asked questions
5
 #+DESCRIPTION: Frequently asked questions
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
-
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Frequently Asked Questions</h1>
16
-</center>
17
-#+END_EXPORT
18
 
11
 
19
-#+BEGIN_CENTER
12
+#+attr_html: :width 100% :align center
20
 [[file:images/surveillanceoptions.jpg]]
13
 [[file:images/surveillanceoptions.jpg]]
14
+
21
 /Possible options for dealing with bulk surveillance at The Glass Room exhibition, 2017/
15
 /Possible options for dealing with bulk surveillance at The Glass Room exhibition, 2017/
22
-#+END_CENTER
16
+
23
 
17
 
24
 #+BEGIN_CENTER
18
 #+BEGIN_CENTER
25
 #+ATTR_HTML: :border -1
19
 #+ATTR_HTML: :border -1
31
 | [[How is Tor integrated with Freedombone?]]                                                   |
25
 | [[How is Tor integrated with Freedombone?]]                                                   |
32
 | [[Can I add a clearnet domain to an onion build?]]                                            |
26
 | [[Can I add a clearnet domain to an onion build?]]                                            |
33
 | [[Why use Github?]]                                                                           |
27
 | [[Why use Github?]]                                                                           |
28
+| [[After using nmap or other scanning tool I can no longer log in]]                            |
34
 | [[Should I upload my GPG keys to keybase.io?]]                                                |
29
 | [[Should I upload my GPG keys to keybase.io?]]                                                |
35
 | [[Keys and emails should not be stored on servers. Why do you do that?]]                      |
30
 | [[Keys and emails should not be stored on servers. Why do you do that?]]                      |
36
 | [[Why can't I access my .onion site with a Tor browser?]]                                     |
31
 | [[Why can't I access my .onion site with a Tor browser?]]                                     |
54
 | [[Tor is censored/blocked in my area. What can I do?]]                                        |
49
 | [[Tor is censored/blocked in my area. What can I do?]]                                        |
55
 | [[I want to block a particular domain from getting its content into my social network sites]] |
50
 | [[I want to block a particular domain from getting its content into my social network sites]] |
56
 | [[The mesh system doesn't boot from USB drive]]                                               |
51
 | [[The mesh system doesn't boot from USB drive]]                                               |
52
+| [[Mesh system doesn't connect to the network]]                                                |
57
 
53
 
58
 #+END_CENTER
54
 #+END_CENTER
59
 
55
 
119
 The source code for this project is experimentally independently hosted, and it is expected that in future the main development will shift over to an independent site, maybe with mirrors on Github if it still exists in a viable form.
115
 The source code for this project is experimentally independently hosted, and it is expected that in future the main development will shift over to an independent site, maybe with mirrors on Github if it still exists in a viable form.
120
 
116
 
121
 Currently many of the repositories used for applications which are not yet packaged for Debian are on Github, and to provide some degree of resilliance against depending too much upon that copies of them also exist within disk images.
117
 Currently many of the repositories used for applications which are not yet packaged for Debian are on Github, and to provide some degree of resilliance against depending too much upon that copies of them also exist within disk images.
118
+* After using nmap or other scanning tool I can no longer log in
119
+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.
122
 * Should I upload my GPG keys to keybase.io?
120
 * Should I upload my GPG keys to keybase.io?
123
 It's not recommended unless there exists some compelling reason for you to be on there. That site asks users to upload the *private keys*, 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.
121
 It's not recommended unless there exists some compelling reason for you to be on there. That site asks users to upload the *private keys*, 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.
124
 
122
 
335
 
333
 
336
 ssh into your Freedombone system, go to the *administrator control panel*, select *security settings* then *Tor Bridges* and *Add a bridge*. You can then enter the details.
334
 ssh into your Freedombone system, go to the *administrator control panel*, select *security settings* then *Tor Bridges* and *Add a bridge*. You can then enter the details.
337
 
335
 
338
-#+BEGIN_CENTER
336
+#+attr_html: :width 80% :align center
339
 [[file:images/controlpanel/control_panel_bridges.jpg]]
337
 [[file:images/controlpanel/control_panel_bridges.jpg]]
340
-#+END_CENTER
341
 
338
 
342
 Any bridges that you add will also show up on the About screen of the administrator control panel.
339
 Any bridges that you add will also show up on the About screen of the administrator control panel.
343
 
340
 
357
 
354
 
358
 After the system has booted successfully the problem should resolve itself on subsequent reboots.
355
 After the system has booted successfully the problem should resolve itself on subsequent reboots.
359
 
356
 
357
+* Mesh system doesn't connect to the network
358
+Sometimes after boot the mesh system won't connect to other peers on the network. If this happens select the *network restart* icon and enter the password, which by default is just "freedombone". Wait for a few minutes to see if it connects.
360
 
359
 
361
-#+BEGIN_EXPORT html
362
-<center>
363
-Return to the <a href="index.html">home page</a>
364
-</center>
365
-#+END_EXPORT
360
+#+attr_html: :width 10% :height 2% :align center
361
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 4
- 10
doc/EN/fediverse.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_CENTER
14
-*Homesteading the Fediverse*
15
-#+END_CENTER
12
+* Homesteading the Fediverse
16
 
13
 
17
 Some things you might want to know about the Fediverse:
14
 Some things you might want to know about the Fediverse:
18
 
15
 
38
 * Avoid big public servers
35
 * Avoid big public servers
39
 It may seem like a good idea and it may seem like you're doing a service to the community by allowing random strangers to register, but servers with thousands of users only cause problems - social, administrative, financial and possibly also legal. The financial strain of running a powerful server with high reliability may be enough to encourage the administrator to begin pushing advertising onto the system, or sell user content, and then before you know it you have identical problems to Twitter. Instead try to encourage people to set up their own servers. Follow this principle and a lot of arguments and stress will be more easily avoided.
36
 It may seem like a good idea and it may seem like you're doing a service to the community by allowing random strangers to register, but servers with thousands of users only cause problems - social, administrative, financial and possibly also legal. The financial strain of running a powerful server with high reliability may be enough to encourage the administrator to begin pushing advertising onto the system, or sell user content, and then before you know it you have identical problems to Twitter. Instead try to encourage people to set up their own servers. Follow this principle and a lot of arguments and stress will be more easily avoided.
40
 
37
 
41
-
42
-
43
-#+BEGIN_CENTER
44
-This site can also be accessed via a Tor browser at http://yjxlc3imv7obva4grjae6u3qw527koaytrgjgdp364hmthrst3jodiid.onion. This documentation is under the [[https://www.gnu.org/licenses/fdl-1.3.txt][GNU Free Documentation License version 1.3]]
45
-#+END_CENTER
38
+#+attr_html: :width 10% :height 2% :align center
39
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 12
- 22
doc/EN/homeserver.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, home server
5
+#+DESCRIPTION: Freedombone home server setup
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
 
12
 
14
-#+begin_export html
15
-<center><h1>Home Server</h1></center>
16
-#+end_export
13
+* Home Server
17
 
14
 
18
 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.
15
 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.
19
 
16
 
47
 freedombone-client
44
 freedombone-client
48
 #+end_src
45
 #+end_src
49
 
46
 
50
-#+BEGIN_CENTER
47
+#+attr_html: :width 80% :align center
51
 [[file:images/tor_onion.jpg]]
48
 [[file:images/tor_onion.jpg]]
52
-#+END_CENTER
53
 
49
 
54
 The version in which sites are available only via onion addresses is the easiest to get started with, since you can evaluate the system without committing to buying an ICANN domain name or needing to get involved with SSL/TLS certificates at all. However, if you do want your sites to be available typically as subdomains of a domain name which you own then remove the *--onion-addresses-only yes* option from the last command shown above. Also see the [[./domains.html][guide on setting up an ICANN domain name]].
50
 The version in which sites are available only via onion addresses is the easiest to get started with, since you can evaluate the system without committing to buying an ICANN domain name or needing to get involved with SSL/TLS certificates at all. However, if you do want your sites to be available typically as subdomains of a domain name which you own then remove the *--onion-addresses-only yes* option from the last command shown above. Also see the [[./domains.html][guide on setting up an ICANN domain name]].
55
 
51
 
57
 
53
 
58
 If you want to create images for microSD cards used within various single board computers then replace the *i386* with *beaglebone* / *cubieboard2* / *cubietruck* / *a20-olinuxino-lime* / *a20-olinuxino-lime2* / *a20-olinuxino-micro* or *apu*.
54
 If you want to create images for microSD cards used within various single board computers then replace the *i386* with *beaglebone* / *cubieboard2* / *cubietruck* / *a20-olinuxino-lime* / *a20-olinuxino-lime2* / *a20-olinuxino-micro* or *apu*.
59
 
55
 
60
-#+BEGIN_CENTER
56
+#+attr_html: :width 80% :align center
61
 [[file:images/beaglebone_black9.jpg]]
57
 [[file:images/beaglebone_black9.jpg]]
62
-#+END_CENTER
63
 
58
 
64
 This takes a while. Maybe an hour or so, depending on the speed of your system and the internets. The good news though is that once created you can use the resulting image any number of times, and you don't need to trust some pre-built image.
59
 This takes a while. Maybe an hour or so, depending on the speed of your system and the internets. The good news though is that once created you can use the resulting image any number of times, and you don't need to trust some pre-built image.
65
 
60
 
107
 
102
 
108
 This will show the hash code for the public ssh key of the Freedombone system.
103
 This will show the hash code for the public ssh key of the Freedombone system.
109
 
104
 
110
-#+BEGIN_CENTER
105
+#+attr_html: :width 80% :align center
111
 [[file:images/ssh_key_verify.jpg]]
106
 [[file:images/ssh_key_verify.jpg]]
112
-#+END_CENTER
113
 
107
 
114
 Open another terminal window then run:
108
 Open another terminal window then run:
115
 
109
 
120
 
114
 
121
 Use the password you wrote down earlier to log in. Select the *administrator control panel* with up and down cursor keys, space bar and enter key. You should see something like this, and you might need to re-enter your password.
115
 Use the password you wrote down earlier to log in. Select the *administrator control panel* with up and down cursor keys, space bar and enter key. You should see something like this, and you might need to re-enter your password.
122
 
116
 
123
-#+BEGIN_CENTER
117
+#+attr_html: :width 80% :align center
124
 [[file:images/controlpanel/control_panel.jpg]]
118
 [[file:images/controlpanel/control_panel.jpg]]
125
-#+END_CENTER
126
 
119
 
127
 Then select *About*. You'll see a list of sites and their onion addresses.
120
 Then select *About*. You'll see a list of sites and their onion addresses.
128
 
121
 
129
-#+BEGIN_CENTER
122
+#+attr_html: :width 80% :align center
130
 [[file:images/controlpanel/control_panel_about.jpg]]
123
 [[file:images/controlpanel/control_panel_about.jpg]]
131
-#+END_CENTER
132
 
124
 
133
 The About screen contains the ssh server public key hashes and you can compare the relevant one with the previous terminal window to verify that they're the same. If they're not then you might have a /machine-in-the-middle/ snooping on you.
125
 The About screen contains the ssh server public key hashes and you can compare the relevant one with the previous terminal window to verify that they're the same. If they're not then you might have a /machine-in-the-middle/ snooping on you.
134
 
126
 
136
 
128
 
137
 Press any key to exit from the About screen. You can then select *Add/Remove apps* and add whatever applications you wish to run. Note that some apps will only run on x86 systems, but most will install and run on ARM single board computers. More details on particular apps can be [[./apps.html][found here]].
129
 Press any key to exit from the About screen. You can then select *Add/Remove apps* and add whatever applications you wish to run. Note that some apps will only run on x86 systems, but most will install and run on ARM single board computers. More details on particular apps can be [[./apps.html][found here]].
138
 
130
 
139
-#+BEGIN_CENTER
131
+#+attr_html: :width 80% :align center
140
 [[file:images/controlpanel/control_panel_apps.jpg]]
132
 [[file:images/controlpanel/control_panel_apps.jpg]]
141
-#+END_CENTER
142
 
133
 
143
 Once your apps have installed you can go back to the About screen, pick an onion address and try it within a Tor compatible browser. You'll need to know the login passwords and those can be found within the /Passwords/ section of the administrator control panel. An axiom of the Freedombone system is that /if given the choice users will usually use insecure passwords/, so on this system passwords are generated randomly. If you need to then you can transfer the passwords into your favourite password manager and remove them from the server by going to the *Security Settings* section of the administrator control panel and choosing *Export passwords* and *Password storage*.
134
 Once your apps have installed you can go back to the About screen, pick an onion address and try it within a Tor compatible browser. You'll need to know the login passwords and those can be found within the /Passwords/ section of the administrator control panel. An axiom of the Freedombone system is that /if given the choice users will usually use insecure passwords/, so on this system passwords are generated randomly. If you need to then you can transfer the passwords into your favourite password manager and remove them from the server by going to the *Security Settings* section of the administrator control panel and choosing *Export passwords* and *Password storage*.
144
 
135
 
152
 man freedombone-image
143
 man freedombone-image
153
 #+end_src
144
 #+end_src
154
 
145
 
155
-#+BEGIN_CENTER
156
-This site can also be accessed via a Tor browser at http://yjxlc3imv7obva4grjae6u3qw527koaytrgjgdp364hmthrst3jodiid.onion
157
-#+END_CENTER
146
+#+attr_html: :width 10% :height 2% :align center
147
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 10
- 32
doc/EN/index.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone
5
+#+DESCRIPTION: Freedombone project
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-[[file:images/bbb3.png]]
12
-#+END_CENTER
13
 
11
 
14
-#+begin_quote
15
-"/With the increasing move of our computing to cloud infrastructures, we give up the control of our computing to the managers of those infrastructures. Our terminals (laptops, desktops) might now be running entirely on Free Software, but this is increasingly irrelevant given that most of what actually matters gets executed on a remote closed system that we don’t control. The Free Software community needs to work to help users keep the control of all their computing, by developing suitable alternatives and facilitating their deployment./"
12
+So you want to run your own internet services? Email, chat, VoIP, web sites, file synchronisation, wikis, blogs, social networks, media hosting, backups, VPN. Freedombone is a home server system which enables you to self-host all of these things.
16
 
13
 
17
-#+end_quote
14
+You can run Freedombone on an old laptop or a single board computer. See the [[./installmethods.html][list of installation methods]]. You can also use it to [[./mesh.html][set up a mesh network]] in your local area.
18
 
15
 
19
-So you want to run your own internet services? Email, chat, VoIP, web sites, file synchronisation, wikis, blogs, social networks, media hosting, backups, VPN. Freedombone enables you to do all of that in a self-hosted way, where you keep control of your data and it resides in your own home.
20
-
21
-A list of other supported ARM boards [[./boards.html][can be found here]], or you can install onto an old laptop or netbook. Some installation instructions for different use cases are:
22
-
23
- * [[./homeserver.html][Typical installation]]
24
- * Installing [[./beaglebone.html][on a Beaglebone Black]]
25
- * Installing on an [[./debianinstall.html][existing Debian system]]
26
- * Installing [[./armbian.html][on Armbian]], for unsupported ARM boards such as Raspberry Pi
27
- * Creating a dedicated [[./socialinstance.html][fediverse instance]] for a single user or to host a community
28
- * Deploying a [[./mesh.html][mesh network]] which can operate with or without the internet
29
-
30
-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.
31
-
32
- * [[./domains.html][How to get a domain name]]
33
- * [[./security.html][Improving security]]
34
- * [[./users.html][Adding or removing users]]
35
- * [[./apps.html][Apps available on the system]]
36
- * [[./faq.html][Frequently Asked Questions]]
37
- * [[./mobile.html][Advice on setting up a mobile phone]]
38
- * [[./support.html][I like this project. How can I help to support it?]]
16
+Check out the [[./apps.html][list of available apps]] and [[./faq.html][Frequently Asked Questions]] section. Recent developments are also described on [[https://blog.freedombone.net/tag/freedombone][the blog]].
39
 
17
 
18
+Disk images which can be cloned straight to USB or microSD drives are [[./downloads/v31][available here]].
40
 
19
 
41
 If you find bugs, or want to add a new app to this system see the [[./devguide.html][Developers Guide]] and [[./codeofconduct.html][Code of Conduct]]. There is a Matrix chat room available at *#fbone:matrix.freedombone.net*.
20
 If you find bugs, or want to add a new app to this system see the [[./devguide.html][Developers Guide]] and [[./codeofconduct.html][Code of Conduct]]. There is a Matrix chat room available at *#fbone:matrix.freedombone.net*.
42
 
21
 
43
-Ready made disk images which can be copied onto USB or microSD drives are [[./downloads/current][available here]].
22
+If you like this project and want to support continued development then [[./support.html][here's what to do]].
44
 
23
 
45
-#+BEGIN_CENTER
46
-This site can also be accessed via a Tor browser at http://yjxlc3imv7obva4grjae6u3qw527koaytrgjgdp364hmthrst3jodiid.onion. This documentation is under the [[https://www.gnu.org/licenses/fdl-1.3.txt][GNU Free Documentation License version 1.3]]
47
-#+END_CENTER
24
+#+attr_html: :width 10% :height 2% :align center
25
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 4
- 9
doc/EN/installation.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, hubzilla, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, installation
5
+#+DESCRIPTION: Freedombone installation
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Installation</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Installation
18
 
13
 
19
 | [[Building an image for a Single Board Computer or Virtual Machine]] |
14
 | [[Building an image for a Single Board Computer or Virtual Machine]] |
20
 | [[Checklist]]                                                        |
15
 | [[Checklist]]                                                        |

+ 31
- 0
doc/EN/installmethods.org View File

1
+#+TITLE:
2
+#+AUTHOR: Bob Mottram
3
+#+EMAIL: bob@freedombone.net
4
+#+KEYWORDS:  freedombone, installation
5
+#+DESCRIPTION: Installation methods
6
+#+OPTIONS: ^:nil toc:nil
7
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
+
9
+#+attr_html: :width 80% :height 10% :align center
10
+[[file:images/logo.png]]
11
+
12
+Most people don't have a static external IP address, so you will need to have an account on a dymanic DNS service. [[https://freedns.afraid.org][FreeDNS]] is the one recommended, but others are available.
13
+
14
+If you want systems to be available within an ordinary web browser, such as Firefox, then you will need to [[./domains.html][obtain a domain name]].
15
+
16
+A list of other supported ARM boards [[./boards.html][can be found here]], or you can install onto an old laptop or netbook. Some installation instructions for different use cases are:
17
+
18
+ * [[./homeserver.html][Typical installation]]
19
+ * Installing [[./beaglebone.html][on a Beaglebone Black]]
20
+ * Installing on an [[./debianinstall.html][existing Debian system]]
21
+ * Installing [[./armbian.html][on Armbian]], for unsupported ARM boards such as Raspberry Pi
22
+ * Creating a dedicated [[./socialinstance.html][fediverse instance]] for a single user or to host a community
23
+ * Deploying a [[./mesh.html][mesh network]] which can operate with or without the internet
24
+ * [[./users.html][Adding or removing users]]
25
+ * [[./security.html][Improving security]]
26
+ * [[./mobile.html][Advice on setting up a mobile phone]]
27
+ * [[./apps.html][Apps available on the system]]
28
+ * [[./faq.html][Frequently Asked Questions]]
29
+
30
+#+attr_html: :width 10% :height 2% :align center
31
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 7
- 12
doc/EN/mesh.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, mesh
5
+#+DESCRIPTION: Freedombone mesh network
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+begin_export html
14
-<center><h1>Mesh Network</h1></center>
15
-#+end_export
12
+* Mesh Network
16
 
13
 
17
 The Freedombone Mesh is a wireless solution for autonomous or internet connected communication that can be rapidly deployed in temporary, emergency or post-disaster situations where internet access is unavailable or compromised.
14
 The Freedombone Mesh is a wireless solution for autonomous or internet connected communication that can be rapidly deployed in temporary, emergency or post-disaster situations where internet access is unavailable or compromised.
18
 
15
 
22
  * [[./mesh_custom.html][Customisation]]
19
  * [[./mesh_custom.html][Customisation]]
23
  * [[./mesh_usage.html][How to use it]]
20
  * [[./mesh_usage.html][How to use it]]
24
 
21
 
25
-#+BEGIN_CENTER
22
+#+attr_html: :width 100% :align center
26
 [[file:images/mesh_desktop1.png]]
23
 [[file:images/mesh_desktop1.png]]
27
-#+END_CENTER
28
 
24
 
29
 Mesh networks are useful as a quick way to make a fully decentralised communications system which is not connected to or reliant upon the internet. Think festivals, hacker conferences, onboard ships at sea, disaster/war zones, small businesses who don't want the overhead of server maintenance, protests, remote areas of the world, temporary "digital blackouts", scientific expeditions and off-world space colonies.
25
 Mesh networks are useful as a quick way to make a fully decentralised communications system which is not connected to or reliant upon the internet. Think festivals, hacker conferences, onboard ships at sea, disaster/war zones, small businesses who don't want the overhead of server maintenance, protests, remote areas of the world, temporary "digital blackouts", scientific expeditions and off-world space colonies.
30
 
26
 
34
 
30
 
35
 Like [[https://libremesh.org][LibreMesh]], this system uses a combination of [[https://en.wikipedia.org/wiki/B.A.T.M.A.N.][batman-adv]] on network layer 2 and [[http://bmx6.net][BMX]] on layer 3. Routing protocols [[http://www.olsr.org][OLSR2]] and [[https://www.irif.fr/~jch/software/babel][Babel]] are also selectable.
31
 Like [[https://libremesh.org][LibreMesh]], this system uses a combination of [[https://en.wikipedia.org/wiki/B.A.T.M.A.N.][batman-adv]] on network layer 2 and [[http://bmx6.net][BMX]] on layer 3. Routing protocols [[http://www.olsr.org][OLSR2]] and [[https://www.irif.fr/~jch/software/babel][Babel]] are also selectable.
36
 
32
 
37
-#+BEGIN_CENTER
38
-This site can also be accessed via a Tor browser at http://yjxlc3imv7obva4grjae6u3qw527koaytrgjgdp364hmthrst3jodiid.onion
39
-#+END_CENTER
33
+#+attr_html: :width 10% :height 2% :align center
34
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 7
- 7
doc/EN/mesh_capabilities.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, mesh
5
+#+DESCRIPTION: Freedombone mesh network capabilities
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+begin_export html
14
-<center><h1>Mesh Network: Capabilities</h1></center>
15
-#+end_export
12
+* Mesh Network: Capabilities
16
 
13
 
17
 The mesh system has the following capabilities:
14
 The mesh system has the following capabilities:
18
 
15
 
33
  - Publicly shared data is /content addressable/
30
  - Publicly shared data is /content addressable/
34
 
31
 
35
 This system should be quite scalable. Both qTox and IPFS are based upon distributed hash tables (DHT) so that each peer does not need to store the full index of data for the entire network. Gossiping between SSB peers may be slower, but the [[https://en.wikipedia.org/wiki/Small-world_network][small world effect]] will presumably still make for quite efficient delivery in a large network. Caching or pinning of IPFS data and its content addressability means that if a file or blog becomes popular then performance should improve as the number of downloads increases, which is the opposite of the client/server paradigm.
32
 This system should be quite scalable. Both qTox and IPFS are based upon distributed hash tables (DHT) so that each peer does not need to store the full index of data for the entire network. Gossiping between SSB peers may be slower, but the [[https://en.wikipedia.org/wiki/Small-world_network][small world effect]] will presumably still make for quite efficient delivery in a large network. Caching or pinning of IPFS data and its content addressability means that if a file or blog becomes popular then performance should improve as the number of downloads increases, which is the opposite of the client/server paradigm.
33
+
34
+#+attr_html: :width 10% :height 2% :align center
35
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 8
- 7
doc/EN/mesh_custom.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, mesh
5
+#+DESCRIPTION: Freedombone mesh network customisation
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+begin_export html
14
-<center><h1>Mesh Network: Customisation</h1></center>
15
-#+end_export
12
+* Mesh Network: Customisation
16
 
13
 
17
 If you want to make your own specially branded version, such as for a particular event, then to change the default desktop backgrounds edit the images within *img/backgrounds* and to change the available avatars and desktop icons edit the images within *img/avatars*. Re-create disk images using the instructions shown previously.
14
 If you want to make your own specially branded version, such as for a particular event, then to change the default desktop backgrounds edit the images within *img/backgrounds* and to change the available avatars and desktop icons edit the images within *img/avatars*. Re-create disk images using the instructions shown previously.
18
 
15
 
19
 If you need particular /dconf/ commands to alter desktop appearance or behavior then see the function /mesh_client_startup_applications/ within *src/freedombone-image-customise*.
16
 If you need particular /dconf/ commands to alter desktop appearance or behavior then see the function /mesh_client_startup_applications/ within *src/freedombone-image-customise*.
17
+
18
+
19
+#+attr_html: :width 10% :height 2% :align center
20
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 18
- 25
doc/EN/mesh_images.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, mesh
5
+#+DESCRIPTION: Freedombone mesh network images
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+begin_export html
14
-<center><h1>Mesh Network: Images</h1></center>
15
-#+end_export
12
+* Mesh Network: Images
16
 
13
 
17
 * Pre-built Disk Images
14
 * Pre-built Disk Images
18
 ** Writing many images quickly
15
 ** Writing many images quickly
33
 The MultiWriter tool is also available within mesh client images, so that you can use mesh systems to create more copies of the same system.
30
 The MultiWriter tool is also available within mesh client images, so that you can use mesh systems to create more copies of the same system.
34
 ** Client images
31
 ** Client images
35
 
32
 
36
-#+BEGIN_CENTER
33
+#+attr_html: :width 100% :align center
37
 [[file:images/mesh_netbook.jpg]]
34
 [[file:images/mesh_netbook.jpg]]
38
-#+END_CENTER
39
 
35
 
40
 "Client" isn't exactly the right term, but it's a mesh peer with a user interface. These images can be copied to a USB drive, then you can plug it into a laptop/netbook/desktop machine and boot from it. You will probably also need an Atheros USB wifi dongle (the black protruding object on the left side of the netbook in the picture above), because most built-in wifi usually requires proprietary firmware. In the commands below substitute /dev/sdX with the USB drive device, excluding any trailing numbers (eg. /dev/sdb). The USB drive you're copying to will need to be at least 16GB in size.
36
 "Client" isn't exactly the right term, but it's a mesh peer with a user interface. These images can be copied to a USB drive, then you can plug it into a laptop/netbook/desktop machine and boot from it. You will probably also need an Atheros USB wifi dongle (the black protruding object on the left side of the netbook in the picture above), because most built-in wifi usually requires proprietary firmware. In the commands below substitute /dev/sdX with the USB drive device, excluding any trailing numbers (eg. /dev/sdb). The USB drive you're copying to will need to be at least 16GB in size.
41
 
37
 
42
 #+begin_src bash
38
 #+begin_src bash
43
 sudo apt-get install xz-utils wget
39
 sudo apt-get install xz-utils wget
44
-wget https://freedombone.net/downloads/current/freedombone-meshclient-i386.img.xz
45
-wget https://freedombone.net/downloads/current/freedombone-meshclient-i386.img.xz.sig
40
+wget https://freedombone.net/downloads/v31/freedombone-meshclient-i386.img.xz
41
+wget https://freedombone.net/downloads/v31/freedombone-meshclient-i386.img.xz.sig
46
 gpg --verify freedombone-meshclient-i386.img.xz.sig
42
 gpg --verify freedombone-meshclient-i386.img.xz.sig
47
-sha256sum freedombone-meshclient-i386.img.xz
48
-49391230de6a4f1966db091813deb8f9d93c947677f5483baa52400d7fcba7d3
49
 unxz freedombone-meshclient-i386.img.xz
43
 unxz freedombone-meshclient-i386.img.xz
50
 sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
44
 sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
51
 sudo dd bs=1M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync
45
 sudo dd bs=1M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync
57
 
51
 
58
 #+begin_src bash
52
 #+begin_src bash
59
 sudo apt-get install xz-utils wget
53
 sudo apt-get install xz-utils wget
60
-wget https://freedombone.net/downloads/current/freedombone-meshclient-insecure-i386.img.xz
61
-wget https://freedombone.net/downloads/current/freedombone-meshclient-insecure-i386.img.xz.sig
54
+wget https://freedombone.net/downloads/v31/freedombone-meshclient-insecure-i386.img.xz
55
+wget https://freedombone.net/downloads/v31/freedombone-meshclient-insecure-i386.img.xz.sig
62
 gpg --verify freedombone-meshclient-insecure-i386.img.xz.sig
56
 gpg --verify freedombone-meshclient-insecure-i386.img.xz.sig
63
-sha256sum freedombone-meshclient-insecure-i386.img.xz
64
-c11783741e66df5072ffcbef8d9b04260a2298d84e33c72fefa4bb539d094810
65
 unxz freedombone-meshclient-insecure-i386.img.xz
57
 unxz freedombone-meshclient-insecure-i386.img.xz
66
 sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
58
 sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
67
 sudo dd bs=1M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync
59
 sudo dd bs=1M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync
70
 ** Router images
62
 ** Router images
71
 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.
63
 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.
72
 *** Beaglebone Black
64
 *** Beaglebone Black
73
-#+BEGIN_CENTER
65
+#+attr_html: :width 50% :align center
74
 [[file:images/mesh_router.jpg]]
66
 [[file:images/mesh_router.jpg]]
75
-#+END_CENTER
76
 
67
 
77
 The above picture shows a Beaglebone Black with the image copied onto a microSD card (there's no need to do anything with the internal EMMC). A USB Atheros wifi adaptor with a large antenna is attached and in this case power is from the mains, although it could be from a battery or solar power system capable of supplying 5 volts and maybe 1A (depending upon how active the router is).
68
 The above picture shows a Beaglebone Black with the image copied onto a microSD card (there's no need to do anything with the internal EMMC). A USB Atheros wifi adaptor with a large antenna is attached and in this case power is from the mains, although it could be from a battery or solar power system capable of supplying 5 volts and maybe 1A (depending upon how active the router is).
78
 
69
 
79
 #+begin_src bash
70
 #+begin_src bash
80
 sudo apt-get install xz-utils wget
71
 sudo apt-get install xz-utils wget
81
-wget https://freedombone.net/downloads/current/freedombone-mesh_beaglebone-armhf.img.xz
82
-wget https://freedombone.net/downloads/current/freedombone-mesh_beaglebone-armhf.img.xz.sig
72
+wget https://freedombone.net/downloads/v31/freedombone-mesh_beaglebone-armhf.img.xz
73
+wget https://freedombone.net/downloads/v31/freedombone-mesh_beaglebone-armhf.img.xz.sig
83
 gpg --verify freedombone-mesh_beaglebone-armhf.img.xz.sig
74
 gpg --verify freedombone-mesh_beaglebone-armhf.img.xz.sig
84
 sha256sum freedombone-mesh_beaglebone-armhf.img.xz
75
 sha256sum freedombone-mesh_beaglebone-armhf.img.xz
85
 ad8f22c0d46c98a80aa47b5809402971cf5cf26ebf587c59a667307b2386c3d2
76
 ad8f22c0d46c98a80aa47b5809402971cf5cf26ebf587c59a667307b2386c3d2
98
 
89
 
99
 #+begin_src bash
90
 #+begin_src bash
100
 sudo apt-get -y install git wget build-essential
91
 sudo apt-get -y install git wget build-essential
101
-wget https://freedombone.net/downloads/current/freedombone.tar.gz
102
-wget https://freedombone.net/downloads/current/freedombone.tar.gz.sig
92
+wget https://freedombone.net/downloads/v31/freedombone.tar.gz
93
+wget https://freedombone.net/downloads/v31/freedombone.tar.gz.sig
103
 gpg --verify freedombone.tar.gz.sig
94
 gpg --verify freedombone.tar.gz.sig
104
-sha256sum freedombone.tar.gz
105
-afbb536564140aa28c6491d45b7474ced5a0b018539ffd3e96b13b242a41792e
106
 tar -xzvf freedombone.tar.gz
95
 tar -xzvf freedombone.tar.gz
107
 cd freedombone
96
 cd freedombone
108
 git checkout stretch
97
 git checkout stretch
147
 #+end_src
136
 #+end_src
148
 
137
 
149
 The resulting image can be copied to a microSD card, inserted into a Beaglebone Black and booted. Don't forget to plug in an Atheros USB wifi dongle.
138
 The resulting image can be copied to a microSD card, inserted into a Beaglebone Black and booted. Don't forget to plug in an Atheros USB wifi dongle.
139
+
140
+
141
+#+attr_html: :width 10% :height 2% :align center
142
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 8
- 7
doc/EN/mesh_philosophic.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, mesh
5
-#+DESCRIPTION: Turn any laptop or a Beaglebone Black into an off-the-grid mesh peer
4
+#+KEYWORDS: freedombone, mesh
5
+#+DESCRIPTION: Philosophy of the Freedombone mesh
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+begin_export html
14
-<center><h1>Mesh Network: Philosophic</h1></center>
15
-#+end_export
12
+* Mesh Network: Philosophic
16
 
13
 
17
 #+begin_quote
14
 #+begin_quote
18
  "/I see mesh networks naturally evolving to become the dominant form of network over the next few decades, because it’s the most practical solution to a number of problems that will have to be solved in order to build the VR web as well as to connect the entire world to the internet. Centralized networks are only possible in highly developed countries with existing infrastructures like power and telephone grids, as well as roads. You can’t build a tower where you don’t have either power or access. For vast areas of the world, mesh networks will be the only feasible solution./" -- Valkyrie Ice
15
  "/I see mesh networks naturally evolving to become the dominant form of network over the next few decades, because it’s the most practical solution to a number of problems that will have to be solved in order to build the VR web as well as to connect the entire world to the internet. Centralized networks are only possible in highly developed countries with existing infrastructures like power and telephone grids, as well as roads. You can’t build a tower where you don’t have either power or access. For vast areas of the world, mesh networks will be the only feasible solution./" -- Valkyrie Ice
49
 
46
 
50
 * Evolvable
47
 * Evolvable
51
 The network should be built with future development in mind. The platform should be flexible enough to support technologies, protocols and modes of usage that have not yet been developed.
48
 The network should be built with future development in mind. The platform should be flexible enough to support technologies, protocols and modes of usage that have not yet been developed.
49
+
50
+
51
+#+attr_html: :width 10% :height 2% :align center
52
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 31
- 50
doc/EN/mesh_usage.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: mesh, network, freedombone
5
+#+DESCRIPTION: How to use the Freedombone mesh network
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+begin_export html
14
-<center><h1>Mesh Network: How to use it</h1></center>
15
-#+end_export
12
+* Mesh Network: How to use it
16
 
13
 
17
  * [[Boot trouble]]
14
  * [[Boot trouble]]
18
  * [[Set the Date]]
15
  * [[Set the Date]]
28
 
25
 
29
 When you first boot from the USB drive the system will create some encryption keys, assign a unique network address to the system and then reboot itself. When that's done you should see a prompt asking for a username. This username just makes it easy for others to initially find you on the mesh and will appear in the list of users.
26
 When you first boot from the USB drive the system will create some encryption keys, assign a unique network address to the system and then reboot itself. When that's done you should see a prompt asking for a username. This username just makes it easy for others to initially find you on the mesh and will appear in the list of users.
30
 
27
 
31
-#+BEGIN_CENTER
28
+#+attr_html: :width 100% :align center
32
 [[file:images/mesh_initial_login.jpg]]
29
 [[file:images/mesh_initial_login.jpg]]
33
-#+END_CENTER
30
+
34
 
31
 
35
 After a minute or two if you are within wifi range and there is at least one other user on the network then you should see additional icons appear on the desktop, such as /Other Users/ and /Chat/.
32
 After a minute or two if you are within wifi range and there is at least one other user on the network then you should see additional icons appear on the desktop, such as /Other Users/ and /Chat/.
36
 
33
 
47
 
44
 
48
 Select the wifi icon on the desktop and enter the password '/freedombone/'. The network configuration will go into a monitoring mode and in the bottom right side of the window you will be able to see signal strength and other parameters. This can help you to locate systems or adjust antennas to get the best wifi performance.
45
 Select the wifi icon on the desktop and enter the password '/freedombone/'. The network configuration will go into a monitoring mode and in the bottom right side of the window you will be able to see signal strength and other parameters. This can help you to locate systems or adjust antennas to get the best wifi performance.
49
 
46
 
50
-
51
-#+BEGIN_CENTER
47
+#+attr_html: :width 70% :align center
52
 [[file:images/mesh_signal.jpg]]
48
 [[file:images/mesh_signal.jpg]]
53
-#+END_CENTER
54
 
49
 
55
 When you are finished close the window and then select the /Network Restart/ desktop icon, which will restart the B.A.T.M.A.N. network. You can also use the restart icon if you are within range of the mesh network but the /Chat/ and /Other Users/ icons do not automatically appear after a few minutes.
50
 When you are finished close the window and then select the /Network Restart/ desktop icon, which will restart the B.A.T.M.A.N. network. You can also use the restart icon if you are within range of the mesh network but the /Chat/ and /Other Users/ icons do not automatically appear after a few minutes.
56
 * Connecting to the internet
51
 * Connecting to the internet
57
 
52
 
58
-#+BEGIN_CENTER
53
+#+attr_html: :width 100% :align center
59
 [[file:images/mesh_architecture2.jpg]]
54
 [[file:images/mesh_architecture2.jpg]]
60
-#+END_CENTER
61
 
55
 
62
 If you need to be able to access the internet from the mesh then connect one of the peers to an internet router using an ethernet cable (shown as yellow above), then reboot it. Other peers in the mesh, including any attached mobile devices, will then be able to access the internet using the ethernet attached peer as a gateway. [[https://en.wikipedia.org/wiki/Freifunk][Freifunk]] works in a similar way.
56
 If you need to be able to access the internet from the mesh then connect one of the peers to an internet router using an ethernet cable (shown as yellow above), then reboot it. Other peers in the mesh, including any attached mobile devices, will then be able to access the internet using the ethernet attached peer as a gateway. [[https://en.wikipedia.org/wiki/Freifunk][Freifunk]] works in a similar way.
63
 
57
 
72
 Where /myclient.ovpn/ comes from your VPN provider and with the password "/freedombone/".
66
 Where /myclient.ovpn/ comes from your VPN provider and with the password "/freedombone/".
73
 * Connecting two meshes over the internet via a VPN tunnel
67
 * Connecting two meshes over the internet via a VPN tunnel
74
 
68
 
75
-#+BEGIN_CENTER
69
+#+attr_html: :width 100% :align center
76
 [[file:images/mesh_architecture_vpn.jpg]]
70
 [[file:images/mesh_architecture_vpn.jpg]]
77
-#+END_CENTER
78
 
71
 
79
 Maybe the internet exists, but you don't care about getting any content from it and just want to use it as a way to connect mesh networks from different geographical locations together.
72
 Maybe the internet exists, but you don't care about getting any content from it and just want to use it as a way to connect mesh networks from different geographical locations together.
80
 
73
 
81
 In your home directory on a system connected via ethernet to an internet router you'll find a file called *vpn.tar.gz*. If you want another mesh to be able to connect to yours then send them this file and get them to uncompress it into their home directory also on an internet gateway machine. If they have an external IP address or domain name for your router then they will be able to VPN connect using the *Connect Meshes* icon. They should also forward port 653 from their internet router to the mesh gateway machine.
74
 In your home directory on a system connected via ethernet to an internet router you'll find a file called *vpn.tar.gz*. If you want another mesh to be able to connect to yours then send them this file and get them to uncompress it into their home directory also on an internet gateway machine. If they have an external IP address or domain name for your router then they will be able to VPN connect using the *Connect Meshes* icon. They should also forward port 653 from their internet router to the mesh gateway machine.
82
 
75
 
83
-#+BEGIN_CENTER
76
+#+attr_html: :width 80% :align center
84
 [[file:images/mesh_connect.png]]
77
 [[file:images/mesh_connect.png]]
85
-#+END_CENTER
86
 
78
 
87
 You should create a new *vpn.tar.gz* file for every other mesh which wants to be able to connect to yours. If you are prompted for a password it is 'freedombone'.
79
 You should create a new *vpn.tar.gz* file for every other mesh which wants to be able to connect to yours. If you are prompted for a password it is 'freedombone'.
88
 
80
 
90
 
82
 
91
 * Mobile devices (phones, etc)
83
 * Mobile devices (phones, etc)
92
 
84
 
93
-#+BEGIN_CENTER
85
+#+attr_html: :width 100% :align center
94
 [[file:images/mesh_architecture3.jpg]]
86
 [[file:images/mesh_architecture3.jpg]]
95
-#+END_CENTER
96
 
87
 
97
 To allow mobile devices to connect to the mesh you will need a second wifi adapter connected to your laptop/netbook/SBC. Plug in a second wifi adapter then reboot the system. The second adaptor will then create a wifi hotspot (the connection shown in green above) which mobile devices can connect to. The hotspot name also contains its local IP address (eg. "/mesh-192.168.1.83/").
88
 To allow mobile devices to connect to the mesh you will need a second wifi adapter connected to your laptop/netbook/SBC. Plug in a second wifi adapter then reboot the system. The second adaptor will then create a wifi hotspot (the connection shown in green above) which mobile devices can connect to. The hotspot name also contains its local IP address (eg. "/mesh-192.168.1.83/").
98
 
89
 
99
 On a typical Android device go to *Settings* then *Security* and ensure that *Unknown sources* is enabled. Also within *Wifi* from the *Settings* screen select the mesh hotspot. The password is "/freedombone/". Open a non-Tor browser and navigate to the IP address showing in the hotspot name. You can then download and install mesh apps.
90
 On a typical Android device go to *Settings* then *Security* and ensure that *Unknown sources* is enabled. Also within *Wifi* from the *Settings* screen select the mesh hotspot. The password is "/freedombone/". Open a non-Tor browser and navigate to the IP address showing in the hotspot name. You can then download and install mesh apps.
100
 
91
 
101
-#+BEGIN_CENTER
92
+#+attr_html: :width 50% :align center
102
 [[file:images/mesh_mobileapps.jpg]]
93
 [[file:images/mesh_mobileapps.jpg]]
103
-#+END_CENTER
104
 
94
 
105
 On some android devices you may need to move the downloaded APK file from the *Downloads* directory to your *home* directory before you can install it.
95
 On some android devices you may need to move the downloaded APK file from the *Downloads* directory to your *home* directory before you can install it.
106
 * Chat System
96
 * Chat System
107
 
97
 
108
 Ensure that you're within wifi range of at least one other mesh peer (could be a router or client) and then you should see that the /Chat/ and /Other Users/ icons appear. Select the users icon and you should see a list of users on the mesh.
98
 Ensure that you're within wifi range of at least one other mesh peer (could be a router or client) and then you should see that the /Chat/ and /Other Users/ icons appear. Select the users icon and you should see a list of users on the mesh.
109
 
99
 
110
-#+BEGIN_CENTER
100
+#+attr_html: :width 50% :align center
111
 [[file:images/mesh_peerslist.png]]
101
 [[file:images/mesh_peerslist.png]]
112
-#+END_CENTER
113
 
102
 
114
 Selecting a user followed by the Ok button will copy their Tox ID to the clipboard.
103
 Selecting a user followed by the Ok button will copy their Tox ID to the clipboard.
115
 
104
 
116
 Now select the /Chat/ icon and once you are connected you should see the status light turn green. If after a few minutes you don't get the green status light then try closing and re-opening the Tox chat application. Select the plus button to add a friend and then paste in a Tox ID.
105
 Now select the /Chat/ icon and once you are connected you should see the status light turn green. If after a few minutes you don't get the green status light then try closing and re-opening the Tox chat application. Select the plus button to add a friend and then paste in a Tox ID.
117
 
106
 
118
-#+BEGIN_CENTER
107
+#+attr_html: :width 80% :align center
119
 [[file:images/mesh_paste_tox_id.jpg]]
108
 [[file:images/mesh_paste_tox_id.jpg]]
120
-#+END_CENTER
121
 
109
 
122
 The other user can then accept or decline your friend request.
110
 The other user can then accept or decline your friend request.
123
 
111
 
124
-#+BEGIN_CENTER
112
+#+attr_html: :width 80% :align center
125
 [[file:images/mesh_friend_request.jpg]]
113
 [[file:images/mesh_friend_request.jpg]]
126
-#+END_CENTER
127
 
114
 
128
 You can also select an avatar by selecting the grey head and shoulders image.
115
 You can also select an avatar by selecting the grey head and shoulders image.
129
 
116
 
130
-#+BEGIN_CENTER
117
+#+attr_html: :width 100% :align center
131
 [[file:images/mesh_choose_avatar.jpg]]
118
 [[file:images/mesh_choose_avatar.jpg]]
132
-#+END_CENTER
133
 
119
 
134
 And by selecting the user from the list on the left hand side the chat can begin.
120
 And by selecting the user from the list on the left hand side the chat can begin.
135
 
121
 
136
-#+BEGIN_CENTER
122
+#+attr_html: :width 100% :align center
137
 [[file:images/mesh_text_chat.jpg]]
123
 [[file:images/mesh_text_chat.jpg]]
138
-#+END_CENTER
139
 
124
 
140
 One important point is that by default the microphone is turned off. When doing voice chat you can select the microphone volume with the drop down slider in the top right corner of the screen.
125
 One important point is that by default the microphone is turned off. When doing voice chat you can select the microphone volume with the drop down slider in the top right corner of the screen.
141
 
126
 
144
 * Collaborative document editing
129
 * Collaborative document editing
145
 The mesh system includes the ability to collaboratively edit various sorts of documents using CryptPad. CryptPad is an almost peer-to-peer system in that it is designed for a client/server environment but that the server aspect of it is very minimal and limited to orchestrating the connected clients. With CryptPad installed on each mesh peer it effectively enables peer-to-peer collaborative editing. Documents are ephemeral and forgotten unless they're exported or copy-pasted to permanent storage.
130
 The mesh system includes the ability to collaboratively edit various sorts of documents using CryptPad. CryptPad is an almost peer-to-peer system in that it is designed for a client/server environment but that the server aspect of it is very minimal and limited to orchestrating the connected clients. With CryptPad installed on each mesh peer it effectively enables peer-to-peer collaborative editing. Documents are ephemeral and forgotten unless they're exported or copy-pasted to permanent storage.
146
 
131
 
147
-#+BEGIN_CENTER
132
+#+attr_html: :width 100% :align center
148
 [[file:images/mesh_cryptpad1.jpg]]
133
 [[file:images/mesh_cryptpad1.jpg]]
149
-#+END_CENTER
150
 
134
 
151
 To create a document click on the CryptPad icon. Depending upon the specifications of your system it may take a few seconds to load, so don't be too disturned if the browser contents look blank for a while. Select _Rich Text Pad_ and give yourself a username.
135
 To create a document click on the CryptPad icon. Depending upon the specifications of your system it may take a few seconds to load, so don't be too disturned if the browser contents look blank for a while. Select _Rich Text Pad_ and give yourself a username.
152
 
136
 
153
-#+BEGIN_CENTER
137
+#+attr_html: :width 100% :align center
154
 [[file:images/mesh_cryptpad2.jpg]]
138
 [[file:images/mesh_cryptpad2.jpg]]
155
-#+END_CENTER
156
 
139
 
157
 If you have the chat system running you can then copy and paste the URL for your pad into the chat, and the other user can then open the link and edit the document with you. You can repeat that for however many other users you wish to be able to edit.
140
 If you have the chat system running you can then copy and paste the URL for your pad into the chat, and the other user can then open the link and edit the document with you. You can repeat that for however many other users you wish to be able to edit.
158
 
141
 
162
 
145
 
163
 Double click on the "Social" icon to open the app, then add your nickname and optionally a description. If you want to choose an avatar image some can be found within the directory */usr/share/freedombone/avatars*. On older systems or systems without a hardware random number generator, Patchwork sometimes takes a long time (a few minutes) to open for the first time after clicking the icon. This is most likely due to the initial generation of encryption keys, so be patient.
146
 Double click on the "Social" icon to open the app, then add your nickname and optionally a description. If you want to choose an avatar image some can be found within the directory */usr/share/freedombone/avatars*. On older systems or systems without a hardware random number generator, Patchwork sometimes takes a long time (a few minutes) to open for the first time after clicking the icon. This is most likely due to the initial generation of encryption keys, so be patient.
164
 
147
 
165
-#+BEGIN_CENTER
148
+#+attr_html: :width 80% :align center
166
 [[file:images/patchwork_setup.jpg]]
149
 [[file:images/patchwork_setup.jpg]]
167
-#+END_CENTER
168
 
150
 
169
 Other Patchwork users on the mesh will appear automatically under the *local* list and you can select and follow them if you wish. It's also possible to select the dark theme from *settings* on the drop down menu if you prefer.
151
 Other Patchwork users on the mesh will appear automatically under the *local* list and you can select and follow them if you wish. It's also possible to select the dark theme from *settings* on the drop down menu if you prefer.
170
 
152
 
171
-#+BEGIN_CENTER
153
+#+attr_html: :width 80% :align center
172
 [[file:images/patchwork_public.jpg]]
154
 [[file:images/patchwork_public.jpg]]
173
-#+END_CENTER
174
 
155
 
175
 The Secure Scuttlebutt protocol which Patchwork is based upon is intended to be robust to intermittent network connectivity, so you can write posts when out of range and they will sync once you are back in the network.
156
 The Secure Scuttlebutt protocol which Patchwork is based upon is intended to be robust to intermittent network connectivity, so you can write posts when out of range and they will sync once you are back in the network.
176
 
157
 
177
 * Sharing Files
158
 * Sharing Files
178
 You can make files publicly available on the network simply by dragging and dropping them into the /Public/ folder on the desktop. To view the files belonging to another user select the desktop icon called /Visit a site/ and enter the username or Tox ID of the other user.
159
 You can make files publicly available on the network simply by dragging and dropping them into the /Public/ folder on the desktop. To view the files belonging to another user select the desktop icon called /Visit a site/ and enter the username or Tox ID of the other user.
179
 
160
 
180
-#+BEGIN_CENTER
161
+#+attr_html: :width 80% :align center
181
 [[file:images/mesh_share_files.jpg]]
162
 [[file:images/mesh_share_files.jpg]]
182
-#+END_CENTER
183
 
163
 
184
 * Blogging
164
 * Blogging
185
 To create a blog post select the /Blog/ icon on the desktop and then select *New blog entry* and *Ok*. Edit the title of the entry and add your text. You can also include photos if you wish - just copy them to the *CreateBlog/content/images* directory and then link to them as shown.
165
 To create a blog post select the /Blog/ icon on the desktop and then select *New blog entry* and *Ok*. Edit the title of the entry and add your text. You can also include photos if you wish - just copy them to the *CreateBlog/content/images* directory and then link to them as shown.
186
 
166
 
187
-#+BEGIN_CENTER
167
+#+attr_html: :width 50% :align center
188
 [[file:images/mesh_blog.png]]
168
 [[file:images/mesh_blog.png]]
189
-#+END_CENTER
190
 
169
 
191
 To finish your blog entry just select /Save/ and then close the editor. On older hardware it may take a while to publish the results, and this depends upon the amount of computation needed by IPFS to create file hashes. If you make no changes to the default text then the new blog entry will not be saved.
170
 To finish your blog entry just select /Save/ and then close the editor. On older hardware it may take a while to publish the results, and this depends upon the amount of computation needed by IPFS to create file hashes. If you make no changes to the default text then the new blog entry will not be saved.
192
 
171
 
193
-#+BEGIN_CENTER
172
+#+attr_html: :width 80% :align center
194
 [[file:images/mesh_new_blog2.jpg]]
173
 [[file:images/mesh_new_blog2.jpg]]
195
-#+END_CENTER
196
 
174
 
197
-#+BEGIN_CENTER
175
+
176
+#+attr_html: :width 80% :align center
198
 [[file:images/mesh_view_blog.jpg]]
177
 [[file:images/mesh_view_blog.jpg]]
199
-#+END_CENTER
200
 
178
 
201
 You can also visit other blogs, edit or delete your previous entry and change your blog theme.
179
 You can also visit other blogs, edit or delete your previous entry and change your blog theme.
202
 
180
 
203
-#+BEGIN_CENTER
181
+#+attr_html: :width 80% :align center
204
 [[file:images/mesh_select_blog_theme.png]]
182
 [[file:images/mesh_select_blog_theme.png]]
205
-#+END_CENTER
183
+
184
+
185
+#+attr_html: :width 10% :height 2% :align center
186
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 3
- 8
doc/EN/meshindex.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h3>Welcome to the Freedombone Mesh</h3>
16
-The following apps are available:
17
-</center>
18
-#+END_EXPORT
12
+* Welcome to the Freedombone Mesh
13
+>>>>>>> 8161704e106728bec7e22d3211109faa06801081
19
 
14
 
20
 #+BEGIN_EXPORT html
15
 #+BEGIN_EXPORT html
21
  <center>
16
  <center>

+ 0
- 47
doc/EN/mirrors.org View File

1
-#+TITLE:
2
-#+AUTHOR: Bob Mottram
3
-#+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Mirroring git repositories
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
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Mirrors</h1>
16
-</center>
17
-#+END_EXPORT
18
-
19
-| [[What are mirrors and why do they exist?]]                         |
20
-| [[What security do mirrors have?]]                                  |
21
-| [[How do I set up mirrors?]]                                        |
22
-| [[Do mirrors include debian package repositories?]]                 |
23
-| [[What do I need to do to keep the mirrored repositories updated?]] |
24
-
25
-* What are mirrors and why do they exist?
26
-It would be nice if all of the applications used by this project were packaged for Debian, but currently they're not. This means that various upstream git repositories are used and these mostly reside on Github. What if Github were to go away, become paying only or be censored in some manner which was difficult to work around? To guard against this possibility the repositories are mirrored on each install and can then be made available to other users so that new installations or updates could still occur without the original default repos.
27
-* What security do mirrors have?
28
-On each install you have a /mirrors/ user created, whose only purpose is to mirror upstream repositories. A random password is generated for the /mirrors/ user which can be seen within the control panel and so given to other users who may need it.
29
-* How do I set up mirrors?
30
-The interactive installer will ask whether you want to configure the main respositories. Enter the URL, which will typically be an onion address, the ssh port number and the password for the mirrors on that system.
31
-* Do mirrors include debian package repositories?
32
-No. Packages for Debian will still be accessed in the conventional manner.
33
-* Can I change mirrors after the system has been installed
34
-Yes. From the control panel select "/Set the main repository/"
35
-
36
-#+BEGIN_CENTER
37
-[[file:images/controlpanel/control_panel_mirrors.jpg]]
38
-#+END_CENTER
39
-
40
-* What do I need to do to keep the mirrored repositories updated?
41
-Nothing. That happens as part of regular automatic updates.
42
-
43
-#+BEGIN_EXPORT html
44
-<center>
45
-Return to the <a href="index.html">home page</a>
46
-</center>
47
-#+END_EXPORT

+ 9
- 10
doc/EN/mobile.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, mobile
5
+#+DESCRIPTION: Freedombone mobile setup
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Mobile</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Mobile
18
 
13
 
19
 Mobile phones are insecure devices, but they're regarded as being so essential to modern life that telling people not to use them isn't a viable option. Here are some recommendations on setting up a mobile phone (aka "smartphone") to work with Freedombone.
14
 Mobile phones are insecure devices, but they're regarded as being so essential to modern life that telling people not to use them isn't a viable option. Here are some recommendations on setting up a mobile phone (aka "smartphone") to work with Freedombone.
20
 
15
 
79
 * Email
74
 * Email
80
 The easiest way to access email is by installing the [[./app_mailpile.html][Mailpile]] app. This keeps your GPG keys off of possibly insecure mobile devices but still enables encrypted email communications in an easy way. You can use K9 mail if you prefer, but that will require installing OpenKeychain and having your GPG keys on the device, which is a lot more risky.
75
 The easiest way to access email is by installing the [[./app_mailpile.html][Mailpile]] app. This keeps your GPG keys off of possibly insecure mobile devices but still enables encrypted email communications in an easy way. You can use K9 mail if you prefer, but that will require installing OpenKeychain and having your GPG keys on the device, which is a lot more risky.
81
 * Services
76
 * Services
82
-For information on configuring various apps to work with Freedombone see the [[file:./usage.html][usage section]]. Also see advice on chat apps in the [[file:./faq.html][FAQ]].
77
+For information on configuring various apps to work with Freedombone see the [[file:./apps.html][apps section]]. Also see advice on chat apps in the [[file:./faq.html][FAQ]].
83
 
78
 
84
 * Battery
79
 * Battery
85
 Even with free software apps it's not difficult to get into a situation where your battery doesn't last for long. To maximize battery life access RSS feeds via the onion-based mobile reader within a Tor-compatible browser and not from a locally installed RSS app.
80
 Even with free software apps it's not difficult to get into a situation where your battery doesn't last for long. To maximize battery life access RSS feeds via the onion-based mobile reader within a Tor-compatible browser and not from a locally installed RSS app.
145
 Return to the <a href="index.html">home page</a>
140
 Return to the <a href="index.html">home page</a>
146
 </center>
141
 </center>
147
 #+END_EXPORT
142
 #+END_EXPORT
143
+
144
+
145
+#+attr_html: :width 10% :height 2% :align center
146
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 0
- 49
doc/EN/related.org View File

1
-#+TITLE:
2
-#+AUTHOR: Bob Mottram
3
-#+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, hubzilla, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
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
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Related Projects</h1>
16
-</center>
17
-#+END_EXPORT
18
-
19
-#+BEGIN_EXPORT html
20
- <center>
21
-The following projects made Freedombone possible.<br>
22
- <table style="width:80%; border:0">
23
-  <tr>
24
-    <td><center><a href="https://wiki.nginx.org">Nginx</a></center></td>
25
-    <td><center><a href="https://www.openssl.org">Openssl</a></center></td>
26
-    <td><center><a href="https://www.gnupg.org">Gnupg</a></center></td>
27
-  </tr>
28
-  <tr>
29
-    <td><center><a href="https://www.debian.org">Debian</a></center></td>
30
-    <td><center><a href="https://freedomboxfoundation.org">Freedombox</a></center></td>
31
-    <td><center><a href="https://beagleboard.org/products/beaglebone+black">Beagleboard</a></center></td>
32
-  </tr>
33
-  <tr>
34
-    <td><center><a href="https://www.dokuwiki.org/dokuwiki">Dokuwiki</a></center></td>
35
-    <td><center><a href="https://gnu.io">GNU Social</a></center></td>
36
-    <td><center><a href="https://github.com/redmatrix/hubzilla">Hubzilla</a></center></td>
37
-  </tr>
38
-  <tr>
39
-    <td><center><a href="https://www.torproject.org">Tor</a></center></td>
40
-    <td><center><a href="https://prosody.im">Prosody</a></center></td>
41
-    <td><center><a href="https://syncthing.net">Syncthing</a></center></td>
42
-  </tr>
43
-  <tr>
44
-    <td><center><a href="https://tox.chat/">Tox</a></center></td>
45
-    <td><center><a href="https://bettercrypto.org">Bettercrypto</a></center></td>
46
-  </tr>
47
-</table>
48
-</center>
49
-#+END_EXPORT

+ 2
- 7
doc/EN/release3.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 100% :align center
10
 [[file:images/release3.jpg]]
10
 [[file:images/release3.jpg]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h2>Building an internet run by the users, for the users</h2>
16
-</center>
17
-#+END_EXPORT
12
+* Building an internet run by the users, for the users
18
 
13
 
19
 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.
14
 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.
20
 
15
 

+ 70
- 0
doc/EN/release31.org View File

1
+#+TITLE:
2
+#+AUTHOR: Bob Mottram
3
+#+EMAIL: bob@freedombone.net
4
+#+KEYWORDS: freedombone
5
+#+DESCRIPTION: Version 3.1
6
+#+OPTIONS: ^:nil toc:nil
7
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
+
9
+#+attr_html: :width 80% :height 10% :align center
10
+[[file:images/logo.png]]
11
+
12
+* *Version 3.1*
13
+
14
+Newer and shinier than before, [[./index.html][Freedombone]] 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 [[./usage_email.html][email with onion and I2P addresses]]. New apps are:
15
+
16
+ * [[./app_akaunting.html][Akaunting]]: Personal or small business accounts
17
+ * [[./app_bdsmail.html][bdsmail]]: Avoid PGP complexity by using email over I2P
18
+ * [[./app_bludit.html][Bludit]]: Painless markdown blogging
19
+ * [[./app_edith.html][Edith]]: The simplest possible note taking system
20
+ * [[./app_icecast.html][Icecast]]: Run your own internet radio station
21
+ * [[./app_peertube.html][PeerTube]]: Peer-to-peer video hosting system
22
+ * [[./app_pleroma.html][Pleroma]]: Ultra lightweight fediverse instance with Mastodon compatibility
23
+
24
+The [[./mesh.html][mesh version]] now supports BMX6, OLSR2 and Babel routing protocols on layer 3 and so is protocol compatible with [[https://libremesh.org][LibreMesh]]. It also now runs on pure IPv6 and has built in video editor and CryptPad integration for networked collaboration even during times when the internet is not available.
25
+
26
+There is a new [[./socialinstance.html][social instance]] image build option, if you want to be able to rapidly deploy fediverse instances, and a [[./devguide.html][template command]] for quickly adding new apps to the system which automates a lot of the boilerplate.
27
+
28
+According to some narratives the open web is dying with the silo companies comprising 80% of web traffic and what remains being pushed into an increasingly marginal corner. But at the same time these colonial occupiers have come under renewed [[https://www.wired.co.uk/article/open-letter-mark-zuckerberg-congress][public criticism]] as they continue to abuse their monopoly powers in ever more egregious ways. 2017 seemed to be a turning point in attitudes towards Silicon Valley generally and there is room for a new kind of movement to get started which is about reclaiming the internet for the common good.
29
+
30
+This is where we make our stand. If the internet falls then so too does freedom.
31
+
32
+The future is decentralized.
33
+
34
+* Installation
35
+
36
+The simplest way to install is from a pre-made disk image. Images can be [[https://freedombone.net/downloads/v31][downloaded here]]. 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.
37
+
38
+Copy the image to a microSD card or 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).
39
+
40
+#+BEGIN_SRC bash
41
+unxz downloadedimagefile.img.xz
42
+dd bs=1M if=downloadedimagefile.img of=/dev/sdX conv=fdatasync
43
+#+END_SRC
44
+
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.
46
+
47
+Plug the microSD or USB drive into the target hardware which you want to use as a server and power on. If you're using an old laptop or netbook as the server then you will need to set the BIOS to boot from USB.
48
+
49
+As the system boots for the first time the login is:
50
+
51
+#+BEGIN_SRC bash
52
+username: fbone
53
+password: freedombone
54
+#+END_SRC
55
+
56
+If you're installing from a microSD card on a single board computer without a screen and keyboard attached then you can ssh into it with:
57
+
58
+#+BEGIN_SRC bash
59
+ssh fbone@freedombone.local -p 2222
60
+#+END_SRC
61
+
62
+Using the initial password "freedombone". If you have trouble accessing the server then make sure you have Avahi installed and [[https://en.wikipedia.org/wiki/Multicast_DNS][mDNS]] enabled.
63
+
64
+You will then be shown a new randomly generated password. It's very important that you write this down somewhere or transfer it to a password manager before going further, because you'll need this to log in later.
65
+
66
+More detailed installation instructions are linked from [[./installmethods.html][the main site]].
67
+
68
+* Upgrading from a previous install
69
+
70
+To upgrade from version 3 just go to the *administrator control panel* and select *check for updates*.

+ 1
- 2
doc/EN/security.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
 * Authentication with keys
12
 * Authentication with keys
14
 It's a lot more secure to log in to the Freedombone system using ssh keys rather than with a password. You can set that up by first running:
13
 It's a lot more secure to log in to the Freedombone system using ssh keys rather than with a password. You can set that up by first running:

+ 9
- 19
doc/EN/socialinstance.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT HTML
14
-<center>
15
-<h1>Social Instance</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Social Instance
18
 
13
 
19
 A social instance image allows you to easily set up a fediverse server, which federates using the OStatus or ActivityPub protocol. You will need:
14
 A social instance image allows you to easily set up a fediverse server, which federates using the OStatus or ActivityPub protocol. You will need:
20
 
15
 
32
 
27
 
33
 #+begin_src bash
28
 #+begin_src bash
34
 sudo apt-get install xz-utils wget
29
 sudo apt-get install xz-utils wget
35
-wget https://freedombone.net/downloads/current/freedombone-pleroma-amd64.img.xz
36
-wget https://freedombone.net/downloads/current/freedombone-pleroma-amd64.img.xz.sig
30
+wget https://freedombone.net/downloads/v31/freedombone-pleroma-amd64.img.xz
31
+wget https://freedombone.net/downloads/v31/freedombone-pleroma-amd64.img.xz.sig
37
 gpg --verify freedombone-pleroma-amd64.img.xz.sig
32
 gpg --verify freedombone-pleroma-amd64.img.xz.sig
38
 unxz freedombone-pleroma-amd64.img.xz
33
 unxz freedombone-pleroma-amd64.img.xz
39
 sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
34
 sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
46
 
41
 
47
 Plug the USB drive into the laptop and connect it to your internet router with the ethernet cable.
42
 Plug the USB drive into the laptop and connect it to your internet router with the ethernet cable.
48
 
43
 
49
-#+BEGIN_CENTER
44
+#+attr_html: :width 100% :align center
50
 [[file:images/laptop_router.jpg]]
45
 [[file:images/laptop_router.jpg]]
51
-#+END_CENTER
52
 
46
 
53
 * Boot the laptop from the USB drive
47
 * Boot the laptop from the USB drive
54
 
48
 
55
 You may need to alter the BIOS settings to get this to work reliably.
49
 You may need to alter the BIOS settings to get this to work reliably.
56
 
50
 
57
-#+BEGIN_CENTER
51
+#+attr_html: :width 100% :align center
58
 [[file:images/bios_boot_usb.jpg]]
52
 [[file:images/bios_boot_usb.jpg]]
59
-#+END_CENTER
60
 
53
 
61
 * Forward ports 80 (HTTP) and 443 (HTTPS) from your internet router to the laptop
54
 * Forward ports 80 (HTTP) and 443 (HTTPS) from your internet router to the laptop
62
 
55
 
63
 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.
56
 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.
64
 
57
 
65
-#+BEGIN_CENTER
58
+#+attr_html: :width 100% :align center
66
 [[file:images/port_forwarding.png]]
59
 [[file:images/port_forwarding.png]]
67
-#+END_CENTER
68
 
60
 
69
 * From another machine ssh into the laptop
61
 * From another machine ssh into the laptop
70
 
62
 
82
 
74
 
83
 Navigate to your domain and register a new user.
75
 Navigate to your domain and register a new user.
84
 
76
 
85
-#+BEGIN_CENTER
77
+#+attr_html: :width 100% :align center
86
 [[file:images/pleroma_register.jpg]]
78
 [[file:images/pleroma_register.jpg]]
87
-#+END_CENTER
88
 
79
 
89
 More details about setting up and using Pleroma [[./app_pleroma.html][can be found here]].
80
 More details about setting up and using Pleroma [[./app_pleroma.html][can be found here]].
90
 
81
 
91
-#+BEGIN_CENTER
82
+#+attr_html: :width 50% :align center
92
 [[file:images/tusky.jpg]]
83
 [[file:images/tusky.jpg]]
93
-#+END_CENTER

+ 8
- 16
doc/EN/support.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, support
5
+#+DESCRIPTION: How to support the Freedombone project
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Support</h1>
16
-</center>
17
-#+END_EXPORT
12
+* Support
18
 
13
 
19
 * Contact details
14
 * Contact details
20
 
15
 
48
 ** Howto videos
43
 ** Howto videos
49
 If you're good at making videos then a howto for installing Freedombone onto various types of hardware, or testing the mesh system in realistic/exotic scenarios would be good. You could even host videos on PeerTube or Mediagoblin.
44
 If you're good at making videos then a howto for installing Freedombone onto various types of hardware, or testing the mesh system in realistic/exotic scenarios would be good. You could even host videos on PeerTube or Mediagoblin.
50
 ** More education and promotion
45
 ** More education and promotion
51
-#+BEGIN_CENTER
46
+#+attr_html: :width 50% :align center
52
 [[./images/educate.png]]
47
 [[./images/educate.png]]
53
-#+END_CENTER
48
+
54
 Many people are unaware that running their own internet services /is even a possibility/. Many also believe that internet services can be provided only if they're supported by advertising or donations, and that only gigantic data centres have enough computing capacity to serve web pages on a worldwide scale. Others may be fearful of encryption due to misrepresentations or misunderstandings of it in the mainstream media. Some may be intimidated by the apparent complexity and think that you need to be some sort of silicon valley genius in order to run a web service on your own. Even many technically-minded folks often believe that they can't run a home server unless they have a static IP address, which isn't true, and others are put off by thinking that any such server will be immediately [[https://en.wikipedia.org/wiki/Pwn][pwned]] by blackhat hackers.
49
 Many people are unaware that running their own internet services /is even a possibility/. Many also believe that internet services can be provided only if they're supported by advertising or donations, and that only gigantic data centres have enough computing capacity to serve web pages on a worldwide scale. Others may be fearful of encryption due to misrepresentations or misunderstandings of it in the mainstream media. Some may be intimidated by the apparent complexity and think that you need to be some sort of silicon valley genius in order to run a web service on your own. Even many technically-minded folks often believe that they can't run a home server unless they have a static IP address, which isn't true, and others are put off by thinking that any such server will be immediately [[https://en.wikipedia.org/wiki/Pwn][pwned]] by blackhat hackers.
55
 
50
 
56
 Raising awareness beyond the near zero current level, overcoming fear and paranoia and dispelling some of the prevalent myths will definitely help.
51
 Raising awareness beyond the near zero current level, overcoming fear and paranoia and dispelling some of the prevalent myths will definitely help.
61
 ** Packaging
56
 ** Packaging
62
 Helping to package GNU Social and Hubzilla for Debian would be beneficial.
57
 Helping to package GNU Social and Hubzilla for Debian would be beneficial.
63
 
58
 
64
-#+BEGIN_EXPORT html
65
-<center>
66
-Return to the <a href="index.html">home page</a>
67
-</center>
68
-#+END_EXPORT
59
+#+attr_html: :width 10% :height 2% :align center
60
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 0
- 96
doc/EN/usage.org View File

1
-#+TITLE:
2
-#+AUTHOR: Bob Mottram
3
-#+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, hubzilla, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
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
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Usage</h1>
16
-</center>
17
-#+END_EXPORT
18
-
19
-| [[Improving security]]                                   |
20
-| [[Administrating the system via an onion address (Tor)]] |
21
-| [[./mobile.html][Mobile advice]]                                        |
22
-| [[./usage_email.html][Using Email]]                                          |
23
-| [[./app_syncthing.html][Syncing to the Cloud]]                                 |
24
-| [[./app_dlna.html][Play Music]]                                           |
25
-| [[./app_gnusocial.html][Microblogging (GNU Social)]]                           |
26
-| [[./app_postactiv.html][Microblogging (PostActiv)]]                            |
27
-| [[./app_ghost.html][Blogging with Ghost]]                                  |
28
-| [[./app_htmly.html][Blogging with HTMLy]]                                  |
29
-| [[./app_hubzilla.html][Social Network]]                                       |
30
-| [[./app_lychee.html][Photo albums]]                                         |
31
-| [[./app_mediagoblin.html][Hosting video and audio content]]                      |
32
-| [[./app_dokuwiki.html][Wiki]]                                                 |
33
-| [[./app_etherpad.html][Collaborative document editing]]                       |
34
-| [[./app_irc.html][Multi-user chat with IRC]]                             |
35
-| [[./app_xmpp.html][XMPP/Jabber]]                                          |
36
-| [[./app_tox.html][Tox]]                                                  |
37
-| [[./app_mumble.html][Mumble]]                                               |
38
-| [[./app_mailpile.jtml][Mailpile]]                                             |
39
-| [[./app_rss.html][RSS Reader]]                                           |
40
-| [[./app_radicale.html][CalDAV calendar server]]                               |
41
-| [[./app_gogs.html][Git Projects]]                                         |
42
-| [[Adding or removing users]]                             |
43
-| [[./app_pihole.html][Blocking Ads]]                                         |
44
-| [[./app_turtl.html][Making and sharing notes and images]]                  |
45
-
46
-* Improving security
47
-It's a lot more secure to log in to the Freedombone system using ssh keys rather than with a password. You can set that up by first running:
48
-
49
-#+begin_src bash
50
-freedombone-client
51
-#+end_src
52
-
53
-On your local system (i.e. whatever you're logging in to the Freedombone system from, typically a laptop). Then:
54
-
55
-#+begin_src
56
-ssh myusername@freedombone.local -p 2222
57
-#+end_src
58
-
59
-Select *Administrator controls* and re-enter your password, then *Manage Users* and *Change user ssh public key*. Copy and paste the ssh public keys which appeared after the *freedombone-client* command was run. Then go to *Security settings* and select *Allow ssh login with passwords* followed by *no*.
60
-
61
-You'll need to make sure that you have a copy of the ~/.ssh directory on your local system. You could just copy that directory to a USB drive and then keep that somewhere safe so that you can restore the keys if you need to.
62
-* Administrating the system via an onion address (Tor)
63
-You can also access your system via the Tor system using an onion address. To find out what the onion address for ssh access is you can do the following:
64
-
65
-#+BEGIN_SRC bash
66
-ssh username@freedombone.local -p 2222
67
-#+END_SRC
68
-
69
-Select /Administrator controls/ then select "About this system" and look for the onion address for ssh. You can then close the terminal and open another, then do the following on your local system:
70
-
71
-#+BEGIN_SRC bash
72
-freedombone-client
73
-#+END_SRC
74
-
75
-This will set up your ssh environment to be able to handle onion addresses. Then you can test ssh with:
76
-
77
-#+BEGIN_SRC bash
78
-ssh username@address.onion -p 2222
79
-#+END_SRC
80
-
81
-Subsequently even if dynamic DNS isn't working you may still be able to administer your system. Using the onion address also gives you some degree of protection against corporate or government metadata analysis, since it becomes more difficult to passively detect which systems are communicating.
82
-* Adding or removing users
83
-Log into the system with:
84
-
85
-#+BEGIN_SRC bash
86
-ssh username@domainname -p 2222
87
-#+END_SRC
88
-
89
-Select *Administrator controls* then *User Management*. Depending upon the type of installation after selecting administrator controls you might need to enter:
90
-
91
-#+BEGIN_SRC bash
92
-sudo su
93
-control
94
-#+END_SRC
95
-
96
-[[file:images/controlpanel/control_panel_manage_users.jpg]]

+ 14
- 7
doc/EN/usage_email.org View File

1
 #+TITLE:
1
 #+TITLE:
2
 #+AUTHOR: Bob Mottram
2
 #+AUTHOR: Bob Mottram
3
 #+EMAIL: bob@freedombone.net
3
 #+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, hubzilla, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
4
+#+KEYWORDS: freedombone, email
5
+#+DESCRIPTION: How to use email on Freedombone
6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
 | [[Things to be aware of]]                           |
12
 | [[Things to be aware of]]                           |
14
 | [[A technical note about email transport security]] |
13
 | [[A technical note about email transport security]] |
36
 #+BEGIN_QUOTE
35
 #+BEGIN_QUOTE
37
 /The researchers also uncovered mass scale attacks of STARTTLS sessions being stripped of their encryption. That attack itself isn't new: internet service providers sometimes do it to monitor users; organizations may use it to keep an eye on employees; or it may come from a malicious actor/
36
 /The researchers also uncovered mass scale attacks of STARTTLS sessions being stripped of their encryption. That attack itself isn't new: internet service providers sometimes do it to monitor users; organizations may use it to keep an eye on employees; or it may come from a malicious actor/
38
 #+END_QUOTE
37
 #+END_QUOTE
38
+
39
+A way to avoid these pitfalls altogether is to use onion addresses (see the section below) or [[./app_bdsmail.html][I2P addresses]] for email. These are not so convenient because they use long random strings which aren't memorable as addresses, but they do give a strong assurance that whoever recieves the message is the intended recipient and that emails can't be read passively during their transport across the internet.
39
 * Add a password to your GPG key
40
 * Add a password to your GPG key
40
 If you didn't use existing GPG keys during the Freedombone installation then you'll need to add a password to your newly generated private key. This is highly recommended. Go through the following sequence of commands to ssh into the Freedombone and then change your GPG password.
41
 If you didn't use existing GPG keys during the Freedombone installation then you'll need to add a password to your newly generated private key. This is highly recommended. Go through the following sequence of commands to ssh into the Freedombone and then change your GPG password.
41
 
42
 
59
 exit
60
 exit
60
 #+END_SRC
61
 #+END_SRC
61
 * Mutt email client
62
 * Mutt email client
62
-
63
-#+BEGIN_CENTER
63
+#+attr_html: :width 80% :align center
64
 [[./images/mutt.jpeg]]
64
 [[./images/mutt.jpeg]]
65
-#+END_CENTER
66
 
65
 
67
 Mutt is a terminal based email client which comes already installed onto the Freedombone. To access it you'll need to access it via ssh with:
66
 Mutt is a terminal based email client which comes already installed onto the Freedombone. To access it you'll need to access it via ssh with:
68
 
67
 
222
 #+END_SRC
221
 #+END_SRC
223
 
222
 
224
 Select /Administrator controls/ then *Email filtering rules* then *Block/Unblock and email address* or *Block/Unblock email with subject line*. Also see the manpage for *freedombone-ignore*.
223
 Select /Administrator controls/ then *Email filtering rules* then *Block/Unblock and email address* or *Block/Unblock email with subject line*. Also see the manpage for *freedombone-ignore*.
224
+* Using onion email addresses
225
+By default this system comes with the ability to send and receive emails using onion addresses as the domain name. On the *user control panel* if you select *Show your email address* then you should find one ending with /dot onion/. You will also see a QR code for that address, which provides a simple way to transfer it to a mobile phone if necessary.
226
+
227
+If you want to give your onion email address to someone else securely then you can use the QR code to transfer it to a phone and copy and paste the address into an encrypted chat app, such as Conversations. Of course they will probably also need to be running Freedombone or some system capable of handling onion email addresses.
228
+
229
+When sending email from an onion address it's not strictly necessary to use GPG/PGP. Tor handles the transport security by itself. You can still use it though if you prefer to have an extra layer of message security. You can also still use onion email addresses even if your ISP blocks the typical email ports (25 and 465).
230
+
231
+If you don't make your onion email address public then it should be fairly resisent to spam, since spammers won't be able to randomly guess onion addresses (there are far too many), whereas it's a lot easier for them to do that with conventional domain names.
225
 * Using I2P for email transport
232
 * Using I2P for email transport
226
 For the most paranoid use cases it is also possible to use I2P as an email transport mechanism. This will of course require the people you're communicating with to have a similar setup in place. For details see the [[./app_bdsmail.html][bdsmail app]]. An advantage of this is that it's very unlikely that your email will get blocked. The disadvantage is that few others will be capable of receiving email this way, and it's only really usable via the Mutt email client.
233
 For the most paranoid use cases it is also possible to use I2P as an email transport mechanism. This will of course require the people you're communicating with to have a similar setup in place. For details see the [[./app_bdsmail.html][bdsmail app]]. An advantage of this is that it's very unlikely that your email will get blocked. The disadvantage is that few others will be capable of receiving email this way, and it's only really usable via the Mutt email client.

+ 5
- 2
doc/EN/users.org View File

6
 #+OPTIONS: ^:nil toc:nil
6
 #+OPTIONS: ^:nil toc:nil
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
7
 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
 
8
 
9
-#+BEGIN_CENTER
9
+#+attr_html: :width 80% :height 10% :align center
10
 [[file:images/logo.png]]
10
 [[file:images/logo.png]]
11
-#+END_CENTER
12
 
11
 
13
 Log into the system with:
12
 Log into the system with:
14
 
13
 
18
 
17
 
19
 Select *Administrator controls* then *User Management*.
18
 Select *Administrator controls* then *User Management*.
20
 
19
 
20
+#+attr_html: :width 80% :align center
21
 [[file:images/controlpanel/control_panel_manage_users.jpg]]
21
 [[file:images/controlpanel/control_panel_manage_users.jpg]]
22
+
23
+#+attr_html: :width 10% :height 2% :align center
24
+[[file:fdl-1.3.txt][file:images/gfdl.png]]

+ 0
- 50
doc/EN/variants.org View File

1
-#+TITLE:
2
-#+AUTHOR: Bob Mottram
3
-#+EMAIL: bob@freedombone.net
4
-#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
5
-#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
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
-#+BEGIN_EXPORT html
14
-<center>
15
-<h1>Variants</h1>
16
-</center>
17
-#+END_EXPORT
18
-
19
-Freedombone may be installed either in its entirety or as different variants with a more specialised purpose.  So for example if you just want to run a blog but don't care about any other services then you can do that. The following variants are available:
20
-
21
-#+BEGIN_EXPORT html
22
- <center>
23
- <table style="width:80%; border:0">
24
-  <tr>
25
-    <td><center><b>Mailbox</b><br>An email server with GPG encryption</center></td>
26
-    <td><center><b>Cloud</b><br>Sync and share files. Never lose important files again</center></td>
27
-  </tr>
28
-  <tr>
29
-    <td><center><b>Social</b><br>Social networking with Hubzilla and GNU Social</center></td>
30
-    <td><center><b>Media</b><br>Runs media services such as DLNA to play music or videos on your devices</center></td>
31
-  </tr>
32
-  <tr>
33
-    <td><center><b>Writer</b><br>Host your blog and wiki</center></td>
34
-    <td><center><b>Chat</b><br>Encrypted IRC, XMPP, Tox and VoIP services for one-to-one and many-to-many chat</center></td>
35
-  </tr>
36
-  <tr>
37
-    <td><center><b>Developer</b><br>Github-like system to host your software projects</center></td>
38
-    <td><center><b>Mesh</b><br>A wireless mesh network which is like the internet, but not the internet</center></td>
39
-  </tr>
40
-</table>
41
-</center>
42
-#+END_EXPORT
43
-
44
-Non-mesh installs also come with an RSS reader which provides strong reading privacy on desktop and mobile via the use of a Tor onion service.
45
-
46
-#+BEGIN_EXPORT html
47
-<center>
48
-Return to the <a href="index.html">home page</a>
49
-</center>
50
-#+END_EXPORT

BIN
img/backgrounds/freedombone_mesh_amnesic_background.png View File


BIN
img/backgrounds/freedombone_mesh_initial_background.png View File


BIN
img/controlpanel/control_panel.jpg View File


BIN
img/gfdl.png View File


BIN
img/logo.png View File


BIN
img/logo_prev.png View File


BIN
img/mesh_initial_login.jpg View File


BIN
img/onion.png View File


BIN
man/freedombone-template.1.gz View File


+ 377
- 0
src/freedombone-app-datserver View File

1
+#!/bin/bash
2
+#
3
+#  _____               _           _
4
+# |   __|___ ___ ___ _| |___ _____| |_ ___ ___ ___
5
+# |   __|  _| -_| -_| . | . |     | . | . |   | -_|
6
+# |__|  |_| |___|___|___|___|_|_|_|___|___|_|_|___|
7
+#
8
+#                              Freedom in the Cloud
9
+#
10
+# The main issue here is bootstrapping. What is running
11
+# on the bootstrap server publicbits.org port 6881 ?
12
+#
13
+# Also it appears that users trying to clone have to
14
+# register an account on datbase.org or another datbase
15
+# server
16
+#
17
+# License
18
+# =======
19
+#
20
+# Copyright (C) 2018 Bob Mottram <bob@freedombone.net>
21
+#
22
+# This program is free software: you can redistribute it and/or modify
23
+# it under the terms of the GNU Affero General Public License as published by
24
+# the Free Software Foundation, either version 3 of the License, or
25
+# (at your option) any later version.
26
+#
27
+# This program is distributed in the hope that it will be useful,
28
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
29
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
30
+# GNU Affero General Public License for more details.
31
+#
32
+# You should have received a copy of the GNU Affero General Public License
33
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
34
+
35
+VARIANTS='full full-vim'
36
+
37
+IN_DEFAULT_INSTALL=0
38
+SHOW_ON_ABOUT=0
39
+
40
+DATSERVER_DOMAIN_NAME=
41
+DATSERVER_CODE=
42
+DATSERVER_HYPERCORED_VERSION='1.4.1'
43
+DATSERVER_DIRECTORY=/etc/datserver
44
+DATSERVER_PORT=3282
45
+
46
+# bootstrap servers are specified here
47
+DATSERVER_BOOTSTRAP_FILE=$DATSERVER_DIRECTORY/node_modules/datland-swarm-defaults/index.js
48
+
49
+DATSERVER_DISCOVERY1='discovery1.publicbits.org'
50
+DATSERVER_DISCOVERY2='discovery2.publicbits.org'
51
+DATSERVER_BOOTSTRAP1='bootstrap1.publicbits.org:6881'
52
+DATSERVER_BOOTSTRAP2='bootstrap2.publicbits.org:6881'
53
+DATSERVER_BOOTSTRAP3='bootstrap3.publicbits.org:6881'
54
+DATSERVER_BOOTSTRAP4='bootstrap4.publicbits.org:6881'
55
+
56
+datserver_variables=(MY_USERNAME
57
+                     DATSERVER_DISCOVERY1
58
+                     DATSERVER_DISCOVERY2
59
+                     DATSERVER_BOOTSTRAP1
60
+                     DATSERVER_BOOTSTRAP2
61
+                     DATSERVER_BOOTSTRAP3
62
+                     DATSERVER_BOOTSTRAP4)
63
+
64
+function datserver_generate_bootstraps {
65
+  { echo "var extend = require('xtend')";
66
+    echo '';
67
+    echo "var DAT_DOMAIN = 'dat.local'";
68
+    echo 'var DEFAULT_DISCOVERY = [';
69
+    echo "  '$DATSERVER_DISCOVERY1',";
70
+    echo "  '$DATSERVER_DISCOVERY2'";
71
+    echo ']';
72
+    echo 'var DEFAULT_BOOTSTRAP = [';
73
+    echo "  '$DATSERVER_BOOTSTRAP1',";
74
+    echo "  '$DATSERVER_BOOTSTRAP2',";
75
+    echo "  '$DATSERVER_BOOTSTRAP3',";
76
+    echo "  '$DATSERVER_BOOTSTRAP4'";
77
+    echo ']';
78
+    echo '';
79
+    echo 'var DEFAULT_OPTS = {';
80
+    echo '  dns: {server: DEFAULT_DISCOVERY, domain: DAT_DOMAIN},';
81
+    echo '  dht: {bootstrap: DEFAULT_BOOTSTRAP}';
82
+    echo '}';
83
+    echo '';
84
+    echo 'module.exports = function (opts) {';
85
+    echo '  return extend(DEFAULT_OPTS, opts) // opts takes priority';
86
+    echo '}'; } > $DATSERVER_BOOTSTRAP_FILE
87
+
88
+  chown datserver:datserver $DATSERVER_BOOTSTRAP_FILE
89
+}
90
+
91
+function datserver_configure_bootstraps {
92
+    read_config_param DATSERVER_DISCOVERY1
93
+    read_config_param DATSERVER_DISCOVERY2
94
+
95
+    read_config_param DATSERVER_BOOTSTRAP1
96
+    read_config_param DATSERVER_BOOTSTRAP2
97
+    read_config_param DATSERVER_BOOTSTRAP3
98
+    read_config_param DATSERVER_BOOTSTRAP4
99
+
100
+    data=$(mktemp 2>/dev/null)
101
+    dialog --backtitle $"Freedombone Control Panel" \
102
+           --title $"dat bootstrap servers" \
103
+           --form $"Specify discovery and bootstrap servers:\\n" 14 68 6 \
104
+           $"Discovery 1:" 1 1 "$DATSERVER_DISCOVERY1" 1 15 50 99 \
105
+           $"Discovery 2:" 2 1 "$DATSERVER_DISCOVERY2" 2 15 50 99 \
106
+           $"Bootstrap 1:" 3 1 "$DATSERVER_BOOTSTRAP1" 3 15 50 99 \
107
+           $"Bootstrap 2:" 4 1 $"$DATSERVER_BOOTSTRAP2" 4 15 50 99 \
108
+           $"Bootstrap 3:" 5 1 $"$DATSERVER_BOOTSTRAP3" 5 15 50 99 \
109
+           $"Bootstrap 4:" 6 1 $"$DATSERVER_BOOTSTRAP4" 6 15 50 99 \
110
+           2> "$data"
111
+    sel=$?
112
+    case $sel in
113
+        1)  rm -f "$data"
114
+            return;;
115
+        255) rm -f "$data"
116
+             return;;
117
+    esac
118
+    DATSERVER_DISCOVERY1=$(sed -n 1p < "$data")
119
+    DATSERVER_DISCOVERY2=$(sed -n 2p < "$data")
120
+    DATSERVER_BOOTSTRAP1=$(sed -n 3p < "$data")
121
+    DATSERVER_BOOTSTRAP2=$(sed -n 4p < "$data")
122
+    DATSERVER_BOOTSTRAP3=$(sed -n 4p < "$data")
123
+    DATSERVER_BOOTSTRAP4=$(sed -n 4p < "$data")
124
+    rm "$data"
125
+
126
+    write_config_param DATSERVER_DISCOVERY1
127
+    write_config_param DATSERVER_DISCOVERY2
128
+
129
+    write_config_param DATSERVER_BOOTSTRAP1
130
+    write_config_param DATSERVER_BOOTSTRAP2
131
+    write_config_param DATSERVER_BOOTSTRAP3
132
+    write_config_param DATSERVER_BOOTSTRAP4
133
+
134
+    datserver_generate_bootstraps
135
+    systemctl restart datserver
136
+}
137
+
138
+function logging_on_datserver {
139
+    echo -n ''
140
+}
141
+
142
+function logging_off_datserver {
143
+    echo -n ''
144
+}
145
+
146
+function remove_user_datserver {
147
+    echo -n ''
148
+}
149
+
150
+function add_user_datserver {
151
+    echo -n ''
152
+    echo '0'
153
+}
154
+
155
+function change_password_datserver {
156
+    echo -n ''
157
+}
158
+
159
+function install_interactive_datserver {
160
+    echo -n ''
161
+    APP_INSTALLED=1
162
+}
163
+
164
+function reconfigure_datserver {
165
+    # This is used if you need to switch identity. Dump old keys and generate new ones
166
+    echo -n ''
167
+}
168
+
169
+function datserver_add_dat {
170
+    data=$(mktemp 2>/dev/null)
171
+    dialog --title $"Add a dat" \
172
+           --backtitle $"Freedombone Control Panel" \
173
+           --inputbox $"dat link:" 8 70 2>"$data"
174
+    sel=$?
175
+    case $sel in
176
+        0)
177
+            dat_link=$(<"$data")
178
+            if [ "$dat_link" ]; then
179
+                if [ ${#dat_link} -gt 5 ]; then
180
+                    if ! grep -q "$dat_link" $DATSERVER_DIRECTORY/feeds; then
181
+                        echo "$dat_link" >> $DATSERVER_DIRECTORY/feeds
182
+                        chown -R datserver:datserver $DATSERVER_DIRECTORY/feeds
183
+                        systemctl restart datserver
184
+                    fi
185
+                fi
186
+            fi
187
+            ;;
188
+    esac
189
+    rm -f "$data"
190
+}
191
+
192
+function configure_interactive_datserver {
193
+    W=(1 $"Add a dat"
194
+       2 $"Browse or edit feeds"
195
+       3 $"Bootstrap servers")
196
+
197
+    while true
198
+    do
199
+        # shellcheck disable=SC2068
200
+        selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"dat server" --menu $"Choose an operation, or ESC for main menu:" 11 70 4 "${W[@]}" 3>&2 2>&1 1>&3)
201
+
202
+        if [ ! "$selection" ]; then
203
+           break
204
+        fi
205
+        case $selection in
206
+            1) datserver_add_dat
207
+               ;;
208
+            2) cd $DATSERVER_DIRECTORY || break
209
+               editor feeds
210
+               chown -R datserver:datserver $DATSERVER_DIRECTORY/feeds
211
+               systemctl restart datserver
212
+               ;;
213
+            3) datserver_configure_bootstraps
214
+               ;;
215
+        esac
216
+    done
217
+}
218
+
219
+function upgrade_datserver {
220
+    CURR_DATSERVER_HYPERCORED_VERSION=$(get_completion_param "datserver hypercored version")
221
+    if [[ "$CURR_DATSERVER_HYPERCORED_VERSION" != "$DATSERVER_HYPERCORED_VERSION" ]]; then
222
+        cd $DATSERVER_DIRECTORY || exit 254274
223
+        systemctl stop datserver
224
+        if npm update hypercored@$DATSERVER_HYPERCORED_VERSION; then
225
+            set_completion_param "datserver hypercored version" "$DATSERVER_HYPERCORED_VERSION"
226
+        fi
227
+        datserver_generate_bootstraps
228
+        chown -R datserver:datserver "$DATSERVER_DIRECTORY"
229
+        systemctl restart datserver
230
+    fi
231
+}
232
+
233
+function backup_local_datserver {
234
+    source_directory=$DATSERVER_DIRECTORY
235
+
236
+    systemctl stop datserver
237
+
238
+    dest_directory=datserver
239
+    backup_directory_to_usb "$source_directory" $dest_directory
240
+
241
+    systemctl start datserver
242
+}
243
+
244
+function restore_local_datserver {
245
+    systemctl stop datserver
246
+
247
+    temp_restore_dir=/root/tempdatserver
248
+    datserver_dir=$DATSERVER_DIRECTORY
249
+
250
+    restore_directory_from_usb $temp_restore_dir datserver
251
+    if [ -d $temp_restore_dir ]; then
252
+        if [ -d "$temp_restore_dir$datserver_dir" ]; then
253
+            cp -rp "$temp_restore_dir$datserver_dir"/* "$datserver_dir"/
254
+        else
255
+            if [ ! -d "$datserver_dir" ]; then
256
+                mkdir "$datserver_dir"
257
+            fi
258
+            cp -rp "$temp_restore_dir"/* "$datserver_dir"/
259
+        fi
260
+        chown -R datserver:datserver "$datserver_dir"
261
+        rm -rf $temp_restore_dir
262
+    fi
263
+    systemctl start datserver
264
+
265
+}
266
+
267
+function backup_remote_datserver {
268
+    source_directory=$DATSERVER_DIRECTORY
269
+    systemctl stop datserver
270
+
271
+    dest_directory=datserver
272
+    backup_directory_to_friend "$source_directory" $dest_directory
273
+
274
+    systemctl start datserver
275
+}
276
+
277
+function restore_remote_datserver {
278
+    systemctl stop datserver
279
+
280
+    temp_restore_dir=/root/tempdatserver
281
+    datserver_dir=$DATSERVER_DIRECTORY
282
+
283
+    restore_directory_from_friend $temp_restore_dir datserver
284
+    if [ -d $temp_restore_dir ]; then
285
+        if [ -d "$temp_restore_dir$datserver_dir" ]; then
286
+            cp -rp "$temp_restore_dir$datserver_dir"/* "$datserver_dir"/
287
+        else
288
+            if [ ! -d "$datserver_dir" ]; then
289
+                mkdir "$datserver_dir"
290
+            fi
291
+            cp -rp $temp_restore_dir/* "$datserver_dir"/
292
+        fi
293
+        chown -R datserver:datserver "$datserver_dir"
294
+        rm -rf $temp_restore_dir
295
+    fi
296
+    systemctl start datserver
297
+
298
+}
299
+
300
+function remove_datserver {
301
+    if [ -f /etc/systemd/system/datserver.service ]; then
302
+        systemctl stop datserver
303
+        systemctl disable datserver
304
+        rm /etc/systemd/system/datserver.service
305
+    fi
306
+    userdel -r datserver
307
+
308
+    remove_nodejs datserver
309
+
310
+    if [ -d $DATSERVER_DIRECTORY ]; then
311
+        rm -rf $DATSERVER_DIRECTORY
312
+    fi
313
+
314
+    remove_app datserver
315
+    remove_completion_param install_datserver
316
+    sed -i '/datserver/d' "$COMPLETION_FILE"
317
+    firewall_remove $DATSERVER_PORT
318
+}
319
+
320
+function install_datserver {
321
+    apt-get -yq install wget
322
+
323
+    install_nodejs datserver
324
+
325
+    if [ -d $DATSERVER_DIRECTORY ]; then
326
+        rm -rf $DATSERVER_DIRECTORY
327
+    fi
328
+    mkdir $DATSERVER_DIRECTORY
329
+    cd $DATSERVER_DIRECTORY || exit 3658356
330
+
331
+    if ! npm install hypercored@$DATSERVER_HYPERCORED_VERSION; then
332
+        echo $'hypercored was not installed'
333
+        exit 4635439
334
+    fi
335
+
336
+    if ! npm install lil-pids@2.6.1; then
337
+        echo $'lil-pids was not installed'
338
+        exit 36483463
339
+    fi
340
+
341
+    echo "$DATSERVER_DIRECTORY/node_modules/.bin/hypercored --cwd $DATSERVER_DIRECTORY" > $DATSERVER_DIRECTORY/services
342
+
343
+    set_completion_param "datserver hypercored version" "$DATSERVER_HYPERCORED_VERSION"
344
+
345
+    adduser --system --home="$DATSERVER_DIRECTORY" --group datserver
346
+    if [ ! -d $DATSERVER_DIRECTORY ]; then
347
+        echo $'dat directory was not created'
348
+        exit 9568356
349
+    fi
350
+
351
+    datserver_generate_bootstraps
352
+
353
+    chown -R datserver:datserver "$DATSERVER_DIRECTORY"
354
+
355
+    firewall_add datserver $DATSERVER_PORT
356
+
357
+    { echo '[Unit]';
358
+      echo 'After=syslog.target network.target remote-fs.target nss-lookup.target';
359
+      echo '';
360
+      echo '[Service]';
361
+      echo 'User=datserver';
362
+      echo 'Group=datserver';
363
+      echo "ExecStart=$DATSERVER_DIRECTORY/node_modules/.bin/lil-pids $DATSERVER_DIRECTORY/services $DATSERVER_DIRECTORY/pids";
364
+      echo 'Restart=always';
365
+      echo "WorkingDirectory=$DATSERVER_DIRECTORY";
366
+      echo 'StandardError=syslog';
367
+      echo '';
368
+      echo '[Install]';
369
+      echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/datserver.service
370
+
371
+    systemctl enable datserver
372
+    systemctl start datserver
373
+
374
+    APP_INSTALLED=1
375
+}
376
+
377
+# NOTE: deliberately there is no "exit 0"

+ 1
- 4
src/freedombone-app-peertube View File

269
         nodecmd='torsocks node'
269
         nodecmd='torsocks node'
270
     fi
270
     fi
271
 
271
 
272
-    data2=$(mktemp 2>/dev/null)
273
-    dialog --title "Choose the video file (select with spacebar)" --fselect "/home/$MY_USERNAME/" 30 60 2> "$data2"
274
-    selected_file=$(cat "$data2")
275
-    rm -f "$data2"
272
+    selected_file=$(dialog --title "Choose the video file (select with spacebar)" --fselect "/home/$MY_USERNAME/" 30 60)
276
     if [ ! "$selected_file" ]; then
273
     if [ ! "$selected_file" ]; then
277
         return
274
         return
278
     fi
275
     fi

+ 1
- 1
src/freedombone-app-pleroma View File

36
 PLEROMA_PORT=4000
36
 PLEROMA_PORT=4000
37
 PLEROMA_ONION_PORT=8011
37
 PLEROMA_ONION_PORT=8011
38
 PLEROMA_REPO="https://git.pleroma.social/pleroma/pleroma.git"
38
 PLEROMA_REPO="https://git.pleroma.social/pleroma/pleroma.git"
39
-PLEROMA_COMMIT='303289d7daac3a51f991bb8603f36628a5d944c1'
39
+PLEROMA_COMMIT='fef8daa454ab04ac2394e02efcc2b48c1fbad91c'
40
 PLEROMA_ADMIN_PASSWORD=
40
 PLEROMA_ADMIN_PASSWORD=
41
 PLEROMA_DIR=/etc/pleroma
41
 PLEROMA_DIR=/etc/pleroma
42
 PLEROMA_SECRET_KEY=""
42
 PLEROMA_SECRET_KEY=""

+ 71
- 36
src/freedombone-app-scuttlebot View File

35
 
35
 
36
 SCUTTLEBOT_DOMAIN_NAME=
36
 SCUTTLEBOT_DOMAIN_NAME=
37
 SCUTTLEBOT_CODE=
37
 SCUTTLEBOT_CODE=
38
-SCUTTLEBOT_VERSION='10.4.6'
38
+SCUTTLEBOT_VERSION='11.2.0'
39
 SCUTTLEBOT_PORT=8010
39
 SCUTTLEBOT_PORT=8010
40
 SCUTTLEBOT_ONION_PORT=8623
40
 SCUTTLEBOT_ONION_PORT=8623
41
 GIT_SSB_PORT=7718
41
 GIT_SSB_PORT=7718
56
 }
56
 }
57
 
57
 
58
 function scuttlebot_create_invite {
58
 function scuttlebot_create_invite {
59
-    invite_string=$(su -c "sbot invite.create 1" - scuttlebot | sed 's/"//g')
59
+    invite_string=$(su -c "/etc/scuttlebot/node_modules/.bin/sbot invite.create 1" - scuttlebot | sed 's/"//g')
60
 
60
 
61
     clear
61
     clear
62
     echo -e "\\n\\nYour Scuttlebot invite code is:\\n\\n${invite_string}\\n\\n"
62
     echo -e "\\n\\nYour Scuttlebot invite code is:\\n\\n${invite_string}\\n\\n"
259
 
259
 
260
 function scuttlebot_git_setup {
260
 function scuttlebot_git_setup {
261
     if [[ "$1" == "mesh" ]]; then
261
     if [[ "$1" == "mesh" ]]; then
262
-        if [ ! -d "$rootdir/usr/local/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight" ]; then
263
-            mkdir "$rootdir/usr/local/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight"
262
+
263
+        if [ ! -d "$rootdir/root/.npm-global/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight" ]; then
264
+            mkdir "$rootdir/root/.npm-global/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight"
264
         fi
265
         fi
265
-        if [ ! -f "$rootdir/usr/local/lib/node_modules/git-ssb/node_modules/highlight.js/styles/foundation.css" ]; then
266
+        if [ ! -f "$rootdir/root/.npm-global/lib/node_modules/git-ssb/node_modules/highlight.js/styles/foundation.css" ]; then
266
             echo $'Could not find foundation.css'
267
             echo $'Could not find foundation.css'
267
             exit 347687245
268
             exit 347687245
268
         fi
269
         fi
269
-        cp "$rootdir/usr/local/lib/node_modules/git-ssb/node_modules/highlight.js/styles/foundation.css" "$rootdir/usr/local/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight/foundation.css"
270
+        cp "$rootdir/root/.npm-global/lib/node_modules/git-ssb/node_modules/highlight.js/styles/foundation.css" "$rootdir/root/.npm-global/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight/foundation.css"
270
 
271
 
271
         git_ssb_nginx_site=$rootdir/etc/nginx/sites-available/git_ssb
272
         git_ssb_nginx_site=$rootdir/etc/nginx/sites-available/git_ssb
272
         { echo 'server {';
273
         { echo 'server {';
284
             exit 7357225
285
             exit 7357225
285
         fi
286
         fi
286
 
287
 
287
-        if [ ! -d /usr/local/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight ]; then
288
-            mkdir /usr/local/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight
288
+        if [ ! -d /root/.npm-global/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight ]; then
289
+            mkdir /root/.npm-global/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight
289
         fi
290
         fi
290
-        if [ ! -f /usr/local/lib/node_modules/git-ssb/node_modules/highlight.js/styles/foundation.css ]; then
291
+        if [ ! -f /root/.npm-global/lib/node_modules/git-ssb/node_modules/highlight.js/styles/foundation.css ]; then
291
             echo $'Could not find foundation.css'
292
             echo $'Could not find foundation.css'
292
             exit 347687245
293
             exit 347687245
293
         fi
294
         fi
294
-        cp /usr/local/lib/node_modules/git-ssb/node_modules/highlight.js/styles/foundation.css /usr/local/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight/foundation.css
295
+        cp /root/.npm-global/lib/node_modules/git-ssb/node_modules/highlight.js/styles/foundation.css /root/.npm-global/lib/node_modules/git-ssb/node_modules/git-ssb-web/highlight/foundation.css
295
 
296
 
296
         git_ssb_nginx_site=/etc/nginx/sites-available/${SCUTTLEBOT_DOMAIN_NAME}
297
         git_ssb_nginx_site=/etc/nginx/sites-available/${SCUTTLEBOT_DOMAIN_NAME}
297
         function_check nginx_http_redirect
298
         function_check nginx_http_redirect
313
     fi
314
     fi
314
 
315
 
315
     { echo '';
316
     { echo '';
316
-      echo '  root /usr/local/lib/node_modules/git-ssb/node_modules/git-ssb-web;';
317
+      echo '  root /root/.npm-global/lib/node_modules/git-ssb/node_modules/git-ssb-web;';
317
       echo '';
318
       echo '';
318
       echo '  location = / {';
319
       echo '  location = / {';
319
       echo "    proxy_pass http://localhost:${GIT_SSB_PORT};";
320
       echo "    proxy_pass http://localhost:${GIT_SSB_PORT};";
339
           echo '  add_header X-Content-Type-Options nosniff;';
340
           echo '  add_header X-Content-Type-Options nosniff;';
340
           echo '  add_header X-Frame-Options SAMEORIGIN;';
341
           echo '  add_header X-Frame-Options SAMEORIGIN;';
341
           echo '';
342
           echo '';
342
-          echo '  root /usr/local/lib/node_modules/git-ssb/node_modules/git-ssb-web;';
343
+          echo '  root /root/.npm-global/lib/node_modules/git-ssb/node_modules/git-ssb-web;';
343
           echo '';
344
           echo '';
344
           echo '  location = / {';
345
           echo '  location = / {';
345
           echo "    proxy_pass http://localhost:${GIT_SSB_PORT};";
346
           echo "    proxy_pass http://localhost:${GIT_SSB_PORT};";
359
 
360
 
360
 function mesh_install_dat {
361
 function mesh_install_dat {
361
     get_npm_arch
362
     get_npm_arch
363
+    mesh_setup_npm
362
 
364
 
363
     cat <<EOF > "$rootdir/usr/bin/install_dat"
365
     cat <<EOF > "$rootdir/usr/bin/install_dat"
364
 #!/bin/bash
366
 #!/bin/bash
379
     mesh_install_dat
381
     mesh_install_dat
380
 
382
 
381
     get_npm_arch
383
     get_npm_arch
384
+    mesh_setup_npm
385
+
386
+    if [ ! -d "$rootdir/etc/scuttlebot" ]; then
387
+        mkdir -p "$rootdir/etc/scuttlebot"
388
+    fi
389
+
390
+    # an unprivileged user to install and run as
391
+    chroot "$rootdir" useradd -d /etc/scuttlebot/ scuttlebot
392
+    chroot "$rootdir" chown -R scuttlebot:scuttlebot /etc/scuttlebot
382
 
393
 
383
     cat <<EOF > "$rootdir/usr/bin/install_scuttlebot"
394
     cat <<EOF > "$rootdir/usr/bin/install_scuttlebot"
384
 #!/bin/bash
395
 #!/bin/bash
385
-npm install --arch=$NPM_ARCH -g scuttlebot@${SCUTTLEBOT_VERSION}
386
-npm install --arch=$NPM_ARCH -g git-ssb
387
-npm install --arch=$NPM_ARCH -g git-remote-ssb
396
+cd /etc/scuttlebot || exit 1
397
+if ! npm install --arch=$NPM_ARCH scuttlebot@${SCUTTLEBOT_VERSION}; then
398
+    exit 2
399
+fi
400
+exit 0
388
 EOF
401
 EOF
389
     chroot "$rootdir" /bin/chmod +x /usr/bin/install_scuttlebot
402
     chroot "$rootdir" /bin/chmod +x /usr/bin/install_scuttlebot
390
-    chroot "$rootdir" /usr/bin/install_scuttlebot
403
+    chroot "$rootdir" sudo -u scuttlebot /usr/bin/install_scuttlebot
391
     rm "$rootdir/usr/bin/install_scuttlebot"
404
     rm "$rootdir/usr/bin/install_scuttlebot"
392
 
405
 
393
-    if [ ! -f "$rootdir/usr/local/bin/sbot" ]; then
406
+    if [ ! -f "$rootdir/etc/scuttlebot/node_modules/.bin/sbot" ]; then
394
         echo $'Scuttlebot was not installed'
407
         echo $'Scuttlebot was not installed'
395
         exit 528253
408
         exit 528253
396
     fi
409
     fi
397
 
410
 
398
-    if [ ! -d "$rootdir/etc/scuttlebot" ]; then
399
-        mkdir -p "$rootdir/etc/scuttlebot"
400
-    fi
401
-
402
-    # an unprivileged user to run as
403
-    chroot "$rootdir" useradd -d /etc/scuttlebot/ scuttlebot
411
+    cat <<EOF > "$rootdir/usr/bin/install_git_ssb"
412
+#!/bin/bash
413
+npm config set prefix '~/.npm-global'
414
+export PATH=~/.npm-global/bin:$PATH
415
+export NPM_CONFIG_PREFIX=~/.npm-global
416
+source ~/.profile
417
+if ! npm install --arch=$NPM_ARCH -g git-ssb; then
418
+    exit 1
419
+fi
420
+if ! npm install --arch=$NPM_ARCH -g git-remote-ssb; then
421
+    exit 2
422
+fi
423
+exit 0
424
+EOF
425
+    chroot "$rootdir" /bin/chmod +x /usr/bin/install_git_ssb
426
+    chroot "$rootdir" /usr/bin/install_git_ssb
427
+    rm "$rootdir/usr/bin/install_git_ssb"
404
 
428
 
405
     # daemon
429
     # daemon
406
     { echo '[Unit]';
430
     { echo '[Unit]';
413
       echo 'User=scuttlebot';
437
       echo 'User=scuttlebot';
414
       echo 'Group=scuttlebot';
438
       echo 'Group=scuttlebot';
415
       echo "WorkingDirectory=/etc/scuttlebot";
439
       echo "WorkingDirectory=/etc/scuttlebot";
416
-      echo 'ExecStart=/usr/local/bin/sbot server';
440
+      echo 'ExecStart=/etc/scuttlebot/node_modules/.bin/sbot server';
417
       echo 'Restart=always';
441
       echo 'Restart=always';
418
       echo 'Environment="USER=scuttlebot"';
442
       echo 'Environment="USER=scuttlebot"';
419
       echo '';
443
       echo '';
428
     function_check install_nodejs
452
     function_check install_nodejs
429
     install_nodejs scuttlebot
453
     install_nodejs scuttlebot
430
 
454
 
431
-    npm install -g scuttlebot@${SCUTTLEBOT_VERSION}
432
-    if [ ! -f /usr/local/bin/sbot ]; then
455
+    if [ ! -d /etc/scuttlebot ]; then
456
+        mkdir -p /etc/scuttlebot
457
+    fi
458
+
459
+    # an unprivileged user to install and run as
460
+    useradd -d /etc/scuttlebot/ scuttlebot
461
+    chown -R scuttlebot:scuttlebot /etc/scuttlebot
462
+
463
+    cat <<EOF > /usr/bin/install_scuttlebot
464
+#!/bin/bash
465
+cd /etc/scuttlebot || exit 1
466
+if ! npm install scuttlebot@${SCUTTLEBOT_VERSION}; then
467
+    exit 2
468
+fi
469
+exit 0
470
+EOF
471
+    chmod +x /usr/bin/install_scuttlebot
472
+    su -c '/usr/bin/install_scuttlebot' - scuttlebot
473
+    rm /usr/bin/install_scuttlebot
474
+
475
+    if [ ! -f /etc/scuttlebot/node_modules/.bin/sbot ]; then
476
+        echo $'Scuttlebot was not installed'
433
         exit 528253
477
         exit 528253
434
     fi
478
     fi
435
 
479
 
437
     npm install -g git-ssb
481
     npm install -g git-ssb
438
     npm install -g git-remote-ssb
482
     npm install -g git-remote-ssb
439
 
483
 
440
-    if [ ! -d /etc/scuttlebot ]; then
441
-        mkdir -p /etc/scuttlebot
442
-    fi
443
-
444
-    npm install -g dat
445
-
446
-    # an unprivileged user to run as
447
-    useradd -d /etc/scuttlebot/ scuttlebot
448
-
449
     # daemon
484
     # daemon
450
     { echo '[Unit]';
485
     { echo '[Unit]';
451
       echo 'Description=Scuttlebot (messaging system)';
486
       echo 'Description=Scuttlebot (messaging system)';
457
       echo 'User=scuttlebot';
492
       echo 'User=scuttlebot';
458
       echo 'Group=scuttlebot';
493
       echo 'Group=scuttlebot';
459
       echo "WorkingDirectory=/etc/scuttlebot";
494
       echo "WorkingDirectory=/etc/scuttlebot";
460
-      echo 'ExecStart=/usr/local/bin/sbot server';
495
+      echo 'ExecStart=/etc/scuttlebot/node_modules/.bin/sbot server';
461
       echo 'Restart=always';
496
       echo 'Restart=always';
462
       echo 'Environment="USER=scuttlebot"';
497
       echo 'Environment="USER=scuttlebot"';
463
       echo '';
498
       echo '';

+ 3
- 0
src/freedombone-base-tripwire View File

122
     if ! grep -q '!/usr/local/lib/node_modules' /etc/tripwire/twpol.txt; then
122
     if ! grep -q '!/usr/local/lib/node_modules' /etc/tripwire/twpol.txt; then
123
         sed -i '\|/etc\t\t->.*|a\    !/usr/local/lib/node_modules ;' /etc/tripwire/twpol.txt
123
         sed -i '\|/etc\t\t->.*|a\    !/usr/local/lib/node_modules ;' /etc/tripwire/twpol.txt
124
     fi
124
     fi
125
+    if ! grep -q '!/root/.npm-global/lib/node_modules' /etc/tripwire/twpol.txt; then
126
+        sed -i '\|/etc\t\t->.*|a\    !/root/.npm-global/lib/node_modules ;' /etc/tripwire/twpol.txt
127
+    fi
125
     # Events here are likely due to USB HRNG activity
128
     # Events here are likely due to USB HRNG activity
126
     if ! grep -q '!/dev/char' /etc/tripwire/twpol.txt; then
129
     if ! grep -q '!/dev/char' /etc/tripwire/twpol.txt; then
127
         sed -i '\|/dev\t\t->.*|a\    !/dev/char ;' /etc/tripwire/twpol.txt
130
         sed -i '\|/dev\t\t->.*|a\    !/dev/char ;' /etc/tripwire/twpol.txt

+ 1
- 1
src/freedombone-client View File

40
 SETUP_CLIENT_APP_NAME=
40
 SETUP_CLIENT_APP_NAME=
41
 
41
 
42
 # Version number of this script
42
 # Version number of this script
43
-VERSION="2.00"
43
+VERSION="3.1"
44
 
44
 
45
 # get the main project file, so that some values can be extracted
45
 # get the main project file, so that some values can be extracted
46
 MAIN_PROJECT_FILE=/usr/local/bin/${PROJECT_NAME}
46
 MAIN_PROJECT_FILE=/usr/local/bin/${PROJECT_NAME}

+ 2
- 1
src/freedombone-image-customise View File

593
     fi
593
     fi
594
 
594
 
595
     get_npm_arch
595
     get_npm_arch
596
+    mesh_setup_npm
596
 
597
 
597
     git clone "$PATCHWORK_REPO" "$rootdir/etc/patchwork"
598
     git clone "$PATCHWORK_REPO" "$rootdir/etc/patchwork"
598
     if [ ! -d "$rootdir/etc/patchwork" ]; then
599
     if [ ! -d "$rootdir/etc/patchwork" ]; then
938
     install_avahi
939
     install_avahi
939
     install_batman
940
     install_batman
940
     install_bmx6
941
     install_bmx6
941
-    install_bmx7
942
+    #install_bmx7
942
     install_olsr2
943
     install_olsr2
943
     install_babel
944
     install_babel
944
     mesh_shutdown_script
945
     mesh_shutdown_script

+ 5
- 3
src/freedombone-image-mesh View File

1449
     systemctl disable bmx6
1449
     systemctl disable bmx6
1450
     echo $'BMX6 disabled' >> $INSTALL_LOG
1450
     echo $'BMX6 disabled' >> $INSTALL_LOG
1451
 
1451
 
1452
-    systemctl stop bmx7
1453
-    systemctl disable bmx7
1454
-    echo $'BMX7 disabled' >> $INSTALL_LOG
1452
+    if [ -d /etc/bmx7 ]; then
1453
+        systemctl stop bmx7
1454
+        systemctl disable bmx7
1455
+        echo $'BMX7 disabled' >> $INSTALL_LOG
1456
+    fi
1455
 
1457
 
1456
     systemctl stop olsr2
1458
     systemctl stop olsr2
1457
     systemctl disable olsr2
1459
     systemctl disable olsr2

+ 3
- 1
src/freedombone-mesh-batman View File

60
     fi
60
     fi
61
 
61
 
62
     systemctl stop bmx6
62
     systemctl stop bmx6
63
-    systemctl stop bmx7
63
+    if [ -d /etc/bmx7 ]; then
64
+        systemctl stop bmx7
65
+    fi
64
     systemctl stop olsr2
66
     systemctl stop olsr2
65
     systemctl stop babel
67
     systemctl stop babel
66
     systemctl disable bmx6
68
     systemctl disable bmx6

+ 279
- 175
src/freedombone-template View File

291
 echo ''
291
 echo ''
292
 echo "function install_interactive_${app_name} {"
292
 echo "function install_interactive_${app_name} {"
293
 if [ ! $app_onion_only ]; then
293
 if [ ! $app_onion_only ]; then
294
-    echo "    if [ ! \"\$ONION_ONLY\" ]; then"
295
-    echo "        ONION_ONLY='no'"
296
-    echo '    fi'
297
-    echo ''
298
-    echo "    if [[ \"\$ONION_ONLY\" != \"no\" ]]; then"
299
-    echo "        ${app_name_upper}_DOMAIN_NAME='${app_name}.local'"
300
-    echo "        write_config_param \"${app_name_upper}_DOMAIN_NAME\" \"\$${app_name_upper}_DOMAIN_NAME\""
301
-    echo '    else'
302
-    echo "        interactive_site_details \"${app_name}\" \"${app_name_upper}_DOMAIN_NAME\" \"${app_name_upper}_CODE\""
303
-    echo '    fi'
294
+    if [ $app_webui ]; then
295
+        echo "    if [ ! \"\$ONION_ONLY\" ]; then"
296
+        echo "        ONION_ONLY='no'"
297
+        echo '    fi'
298
+        echo ''
299
+        echo "    if [[ \"\$ONION_ONLY\" != \"no\" ]]; then"
300
+        echo "        ${app_name_upper}_DOMAIN_NAME='${app_name}.local'"
301
+        echo "        write_config_param \"${app_name_upper}_DOMAIN_NAME\" \"\$${app_name_upper}_DOMAIN_NAME\""
302
+        echo '    else'
303
+        echo "        interactive_site_details \"${app_name}\" \"${app_name_upper}_DOMAIN_NAME\" \"${app_name_upper}_CODE\""
304
+        echo '    fi'
305
+    else
306
+        echo "    echo -n ''"
307
+    fi
304
 else
308
 else
305
     echo "    echo -n ''"
309
     echo "    echo -n ''"
306
 fi
310
 fi
310
 echo "function change_password_${app_name} {"
314
 echo "function change_password_${app_name} {"
311
 echo "    curr_username=\"\$1\""
315
 echo "    curr_username=\"\$1\""
312
 echo "    new_user_password=\"\$2\""
316
 echo "    new_user_password=\"\$2\""
313
-echo ''
314
-echo "    read_config_param '${app_name_upper}_DOMAIN_NAME'"
317
+if [ $app_webui ]; then
318
+    echo ''
319
+    echo "    read_config_param '${app_name_upper}_DOMAIN_NAME'"
320
+fi
315
 echo ''
321
 echo ''
316
 echo "    \"\${PROJECT_NAME}-pass\" -u \"\$curr_username\" -a ${app_name} -p \"\$new_user_password\""
322
 echo "    \"\${PROJECT_NAME}-pass\" -u \"\$curr_username\" -a ${app_name} -p \"\$new_user_password\""
317
 echo '}'
323
 echo '}'
348
 echo '}'
354
 echo '}'
349
 echo ''
355
 echo ''
350
 echo "function configure_interactive_${app_name} {"
356
 echo "function configure_interactive_${app_name} {"
357
+echo '    W=(1 $"Option 1"'
358
+echo '       2 $"Option 2")'
359
+echo ''
351
 echo '    while true'
360
 echo '    while true'
352
 echo '    do'
361
 echo '    do'
353
-echo "        data=\$(mktemp 2>/dev/null)"
354
-echo "        dialog --backtitle \$\"Freedombone Control Panel\" \\"
355
-echo "               --title \$\"${app_name}\" \\"
356
-echo "               --radiolist \$\"Choose an operation:\" 16 70 3 \\"
357
-echo "               1 \$\"Option 1\" off \\"
358
-echo "               2 \$\"Option 2\" off \\"
359
-echo "               3 \$\"Exit\" on 2> \"\$data\""
360
-echo '        sel=$?'
361
-echo "        case \$sel in"
362
-echo "            1) rm -f \"\$data\""
363
-echo '               return;;'
364
-echo "            255) rm -f \"\$data\""
365
-echo '                 return;;'
366
-echo '        esac'
367
-echo "        case \$(cat \"\$data\") in"
362
+echo '        # shellcheck disable=SC2068'
363
+echo "        selection=\$(dialog --backtitle \$\"Freedombone Administrator Control Panel\" --title \$\"${app_name}\" --menu \$\"Choose an operation, or ESC for main menu:\" 14 70 3 \"\${W[@]}\" 3>&2 2>&1 1>&3)"
364
+echo ''
365
+echo "        if [ ! \"\$selection\" ]; then"
366
+echo '           break'
367
+echo '        fi'
368
+echo "        case \$selection in"
368
 echo '            1) # call some function for option 1'
369
 echo '            1) # call some function for option 1'
369
 echo '               ;;'
370
 echo '               ;;'
370
 echo '            2) # call some function for option 2'
371
 echo '            2) # call some function for option 2'
371
 echo '               ;;'
372
 echo '               ;;'
372
-echo "            3) rm -f \"\$data\""
373
-echo '               break;;'
374
 echo '        esac'
373
 echo '        esac'
375
-echo "        rm -f \"\$data\""
376
 echo '    done'
374
 echo '    done'
377
 echo '}'
375
 echo '}'
378
 echo ''
376
 echo ''
381
 echo "    if [[ \"\$CURR_${app_name_upper}_COMMIT\" == \"\$${app_name_upper}_COMMIT\" ]]; then"
379
 echo "    if [[ \"\$CURR_${app_name_upper}_COMMIT\" == \"\$${app_name_upper}_COMMIT\" ]]; then"
382
 echo '        return'
380
 echo '        return'
383
 echo '    fi'
381
 echo '    fi'
384
-echo ''
385
-echo "    if grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
386
-echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
387
-echo '    fi'
382
+if [ $app_webui ]; then
383
+    echo ''
384
+    echo "    if grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
385
+    echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
386
+    echo '    fi'
387
+fi
388
 echo ''
388
 echo ''
389
 echo '    # update to the next commit'
389
 echo '    # update to the next commit'
390
 if [ ! "$app_dir" ]; then
390
 if [ ! "$app_dir" ]; then
391
-    echo "    set_repo_commit \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\" \$${app_name_upper}_REPO"
391
+    echo "    set_repo_commit \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\" \"\$${app_name_upper}_REPO\""
392
     echo "    chown -R www-data:www-data \"/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs\""
392
     echo "    chown -R www-data:www-data \"/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs\""
393
 else
393
 else
394
-    echo "    set_repo_commit \"${app_dir}\" \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\" \$${app_name_upper}_REPO"
394
+    echo "    set_repo_commit \"${app_dir}\" \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\" \"\$${app_name_upper}_REPO\""
395
     echo "    chown -R ${app_name}:${app_name} \"${app_dir}\""
395
     echo "    chown -R ${app_name}:${app_name} \"${app_dir}\""
396
 fi
396
 fi
397
 echo '}'
397
 echo '}'
398
 echo ''
398
 echo ''
399
 echo "function backup_local_${app_name} {"
399
 echo "function backup_local_${app_name} {"
400
-echo "    ${app_name_upper}_DOMAIN_NAME='${app_name}'"
401
-echo "    if grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
402
-echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
403
-echo '    fi'
404
-echo ''
400
+if [ $app_webui ]; then
401
+    echo "    ${app_name_upper}_DOMAIN_NAME='${app_name}'"
402
+    echo "    if grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
403
+    echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
404
+    echo '    fi'
405
+    echo ''
406
+fi
405
 if [ ! "$app_dir" ]; then
407
 if [ ! "$app_dir" ]; then
406
     echo "    source_directory=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
408
     echo "    source_directory=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
407
 else
409
 else
408
     echo "    source_directory=${app_dir}"
410
     echo "    source_directory=${app_dir}"
409
 fi
411
 fi
410
-echo ''
411
-echo "    suspend_site \"\${${app_name_upper}_DOMAIN_NAME}\""
412
+if [ $app_webui ]; then
413
+    echo ''
414
+    echo "    suspend_site \"\${${app_name_upper}_DOMAIN_NAME}\""
415
+fi
416
+if [ $app_daemon ]; then
417
+    echo ''
418
+    echo "    systemctl stop ${app_name}"
419
+fi
412
 echo ''
420
 echo ''
413
 echo "    dest_directory=${app_name}"
421
 echo "    dest_directory=${app_name}"
414
 echo "    backup_directory_to_usb \"\$source_directory\" \$dest_directory"
422
 echo "    backup_directory_to_usb \"\$source_directory\" \$dest_directory"
422
     echo "    backup_database_to_usb ${app_name}"
430
     echo "    backup_database_to_usb ${app_name}"
423
     echo ''
431
     echo ''
424
 fi
432
 fi
425
-echo '    restart_site'
433
+if [ $app_webui ]; then
434
+    echo '    restart_site'
435
+fi
436
+if [ $app_daemon ]; then
437
+    echo "    systemctl start ${app_name}"
438
+fi
426
 echo '}'
439
 echo '}'
427
 echo ''
440
 echo ''
428
 echo "function restore_local_${app_name} {"
441
 echo "function restore_local_${app_name} {"
429
-echo "    if ! grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
430
-echo '        return'
431
-echo '    fi'
432
-echo "    ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
433
-echo "    if [ \"\$${app_name_upper}_DOMAIN_NAME\" ]; then"
434
-echo "        temp_restore_dir=/root/temp${app_name}"
442
+if [ $app_webui ]; then
443
+    echo "    if ! grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
444
+    echo '        return'
445
+    echo '    fi'
446
+    echo "    ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
447
+    echo "    if [ ! \"\$${app_name_upper}_DOMAIN_NAME\" ]; then"
448
+    echo "        return"
449
+    echo "    fi"
450
+fi
451
+if [ $app_webui ]; then
452
+    echo "    suspend_site \"\${${app_name_upper}_DOMAIN_NAME}\""
453
+fi
454
+if [ $app_daemon ]; then
455
+    echo "    systemctl stop ${app_name}"
456
+    echo ''
457
+fi
458
+echo "    temp_restore_dir=/root/temp${app_name}"
435
 if [ ! "$app_dir" ]; then
459
 if [ ! "$app_dir" ]; then
436
-    echo "        ${app_name}_dir=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
460
+    echo "    ${app_name}_dir=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
437
 else
461
 else
438
-    echo "        ${app_name}_dir=${app_dir}"
462
+    echo "    ${app_name}_dir=${app_dir}"
439
 fi
463
 fi
440
 echo ''
464
 echo ''
441
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
465
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
442
-    echo "        ${app_name}_create_database"
466
+    echo "    ${app_name}_create_database"
443
     echo ''
467
     echo ''
444
-    echo "        restore_database ${app_name}"
445
-    echo "        if [ -d \$temp_restore_dir ]; then"
446
-    echo "            rm -rf \$temp_restore_dir"
447
-    echo '        fi'
468
+    echo "    restore_database ${app_name}"
469
+    echo "    if [ -d \$temp_restore_dir ]; then"
470
+    echo "        rm -rf \$temp_restore_dir"
471
+    echo '    fi'
448
     echo ''
472
     echo ''
449
 fi
473
 fi
450
 if [[ "$database_type" == "postgres"* ]]; then
474
 if [[ "$database_type" == "postgres"* ]]; then
451
-    echo "        ${app_name}_create_database"
475
+    echo "    ${app_name}_create_database"
452
     echo ''
476
     echo ''
453
-    echo '        USE_POSTGRESQL=1'
454
-    echo "        restore_database ${app_name}"
455
-    echo "        if [ -d \$temp_restore_dir ]; then"
456
-    echo "            rm -rf \$temp_restore_dir"
457
-    echo '        fi'
477
+    echo '    USE_POSTGRESQL=1'
478
+    echo "    restore_database ${app_name}"
479
+    echo "    if [ -d \$temp_restore_dir ]; then"
480
+    echo "        rm -rf \$temp_restore_dir"
481
+    echo '    fi'
458
     echo ''
482
     echo ''
459
 fi
483
 fi
460
-echo "        restore_directory_from_usb \$temp_restore_dir ${app_name}"
461
-echo "        if [ -d \$temp_restore_dir ]; then"
462
-echo "            if [ -d \"\$temp_restore_dir\$${app_name}_dir\" ]; then"
463
-echo "                cp -rp \"\$temp_restore_dir\$${app_name}_dir\"/* \"\$${app_name}_dir\"/"
464
-echo '            else'
465
-echo "                if [ ! -d \"\$${app_name}_dir\" ]; then"
466
-echo "                    mkdir \"\$${app_name}_dir\""
467
-echo '                fi'
468
-echo "                cp -rp \"\$temp_restore_dir\"/* \"\$${app_name}_dir\"/"
484
+echo "    restore_directory_from_usb \$temp_restore_dir ${app_name}"
485
+echo "    if [ -d \$temp_restore_dir ]; then"
486
+echo "        if [ -d \"\$temp_restore_dir\$${app_name}_dir\" ]; then"
487
+echo "            cp -rp \"\$temp_restore_dir\$${app_name}_dir\"/* \"\$${app_name}_dir\"/"
488
+echo '        else'
489
+echo "            if [ ! -d \"\$${app_name}_dir\" ]; then"
490
+echo "                mkdir \"\$${app_name}_dir\""
469
 echo '            fi'
491
 echo '            fi'
470
-echo "            chown -R www-data:www-data \"\$${app_name}_dir\""
471
-echo "            rm -rf \$temp_restore_dir"
492
+echo "            cp -rp \"\$temp_restore_dir\"/* \"\$${app_name}_dir\"/"
472
 echo '        fi'
493
 echo '        fi'
473
-echo ''
494
+if [[ ! "$app_dir" ]]; then
495
+    echo "        chown -R www-data:www-data \"\$${app_name}_dir\""
496
+else
497
+    echo "        chown -R ${app_name}:${app_name} \"\$${app_name}_dir\""
498
+fi
499
+echo "        rm -rf \$temp_restore_dir"
474
 echo '    fi'
500
 echo '    fi'
501
+if [ $app_daemon ]; then
502
+    echo "    systemctl start ${app_name}"
503
+    echo ''
504
+fi
505
+if [ $app_webui ]; then
506
+    echo '    restart_site'
507
+fi
475
 echo '}'
508
 echo '}'
476
 echo ''
509
 echo ''
477
 echo "function backup_remote_${app_name} {"
510
 echo "function backup_remote_${app_name} {"
478
-echo "    ${app_name_upper}_DOMAIN_NAME='${app_name}'"
479
-echo "    if grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
480
-echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
481
-echo '    fi'
482
-echo ''
511
+if [ $app_webui ]; then
512
+    echo "    ${app_name_upper}_DOMAIN_NAME='${app_name}'"
513
+    echo "    if grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
514
+    echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
515
+    echo '    fi'
516
+    echo ''
517
+fi
483
 if [ ! "$app_dir" ]; then
518
 if [ ! "$app_dir" ]; then
484
     echo "    source_directory=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
519
     echo "    source_directory=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
485
 else
520
 else
486
     echo "    source_directory=${app_dir}"
521
     echo "    source_directory=${app_dir}"
487
 fi
522
 fi
488
-echo ''
489
-echo "    suspend_site \"\${${app_name_upper}_DOMAIN_NAME}\""
523
+if [ $app_webui ]; then
524
+    echo ''
525
+    echo "    suspend_site \"\${${app_name_upper}_DOMAIN_NAME}\""
526
+fi
527
+if [ $app_daemon ]; then
528
+    echo "    systemctl stop ${app_name}"
529
+fi
490
 echo ''
530
 echo ''
491
 echo "    dest_directory=${app_name}"
531
 echo "    dest_directory=${app_name}"
492
 echo "    backup_directory_to_friend \"\$source_directory\" \$dest_directory"
532
 echo "    backup_directory_to_friend \"\$source_directory\" \$dest_directory"
499
     echo "    backup_database_to_friend ${app_name}"
539
     echo "    backup_database_to_friend ${app_name}"
500
     echo ''
540
     echo ''
501
 fi
541
 fi
502
-echo ''
503
-echo '    restart_site'
542
+if [ $app_daemon ]; then
543
+    echo ''
544
+    echo "    systemctl start ${app_name}"
545
+fi
546
+if [ $app_webui ]; then
547
+    echo ''
548
+    echo '    restart_site'
549
+fi
504
 echo '}'
550
 echo '}'
505
 echo ''
551
 echo ''
506
 echo "function restore_remote_${app_name} {"
552
 echo "function restore_remote_${app_name} {"
507
-echo "    if ! grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
508
-echo '        return'
509
-echo '    fi'
510
-echo "    ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
511
-echo "    if [ \"\$${app_name_upper}_DOMAIN_NAME\" ]; then"
512
-echo "        temp_restore_dir=/root/temp${app_name}"
553
+if [ $app_webui ]; then
554
+    echo "    if ! grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
555
+    echo '        return'
556
+    echo '    fi'
557
+    echo "    ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
558
+    echo "    if [ ! \"\$${app_name_upper}_DOMAIN_NAME\" ]; then"
559
+    echo "        return"
560
+    echo "    fi"
561
+fi
562
+if [ $app_webui ]; then
563
+    echo "    suspend_site \"\${${app_name_upper}_DOMAIN_NAME}\""
564
+fi
565
+if [ $app_daemon ]; then
566
+    echo "    systemctl stop ${app_name}"
567
+    echo ''
568
+fi
569
+echo "    temp_restore_dir=/root/temp${app_name}"
513
 if [ ! "$app_dir" ]; then
570
 if [ ! "$app_dir" ]; then
514
-    echo "        ${app_name}_dir=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
571
+    echo "    ${app_name}_dir=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
515
 else
572
 else
516
-    echo "        ${app_name}_dir=${app_dir}"
573
+    echo "    ${app_name}_dir=${app_dir}"
517
 fi
574
 fi
518
 echo ''
575
 echo ''
519
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
576
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
520
-    echo "        ${app_name}_create_database"
577
+    echo "    ${app_name}_create_database"
521
     echo ''
578
     echo ''
522
-    echo "        restore_database_from_friend ${app_name}"
523
-    echo "        if [ -d \"\$temp_restore_dir\" ]; then"
524
-    echo "            rm -rf \$temp_restore_dir"
525
-    echo '        fi'
579
+    echo "    restore_database_from_friend ${app_name}"
580
+    echo "    if [ -d \"\$temp_restore_dir\" ]; then"
581
+    echo "        rm -rf \$temp_restore_dir"
582
+    echo '    fi'
526
     echo ''
583
     echo ''
527
 fi
584
 fi
528
 if [[ "$database_type" == "postgres"* ]]; then
585
 if [[ "$database_type" == "postgres"* ]]; then
529
-    echo "        ${app_name}_create_database"
586
+    echo "    ${app_name}_create_database"
530
     echo ''
587
     echo ''
531
-    echo '        USE_POSTGRESQL=1'
532
-    echo "        restore_database_from_friend ${app_name}"
533
-    echo "        if [ -d \"\$temp_restore_dir\" ]; then"
534
-    echo "            rm -rf \$temp_restore_dir"
535
-    echo '        fi'
588
+    echo '    USE_POSTGRESQL=1'
589
+    echo "    restore_database_from_friend ${app_name}"
590
+    echo "    if [ -d \"\$temp_restore_dir\" ]; then"
591
+    echo "        rm -rf \$temp_restore_dir"
592
+    echo '    fi'
536
     echo ''
593
     echo ''
537
 fi
594
 fi
538
-echo "        restore_directory_from_friend \$temp_restore_dir ${app_name}"
539
-echo "        if [ -d \$temp_restore_dir ]; then"
540
-echo "            if [ -d \"\$temp_restore_dir\$${app_name}_dir\" ]; then"
541
-echo "                cp -rp \"\$temp_restore_dir\$${app_name}_dir\"/* \"\$${app_name}_dir\"/"
542
-echo '            else'
543
-echo "                if [ ! -d \"\$${app_name}_dir\" ]; then"
544
-echo "                    mkdir \"\$${app_name}_dir\""
545
-echo '                fi'
546
-echo "                cp -rp \$temp_restore_dir/* \"\$${app_name}_dir\"/"
595
+echo "    restore_directory_from_friend \$temp_restore_dir ${app_name}"
596
+echo "    if [ -d \$temp_restore_dir ]; then"
597
+echo "        if [ -d \"\$temp_restore_dir\$${app_name}_dir\" ]; then"
598
+echo "            cp -rp \"\$temp_restore_dir\$${app_name}_dir\"/* \"\$${app_name}_dir\"/"
599
+echo '        else'
600
+echo "            if [ ! -d \"\$${app_name}_dir\" ]; then"
601
+echo "                mkdir \"\$${app_name}_dir\""
547
 echo '            fi'
602
 echo '            fi'
548
-echo "            chown -R www-data:www-data \"\$${app_name}_dir\""
549
-echo "            rm -rf \$temp_restore_dir"
603
+echo "            cp -rp \$temp_restore_dir/* \"\$${app_name}_dir\"/"
550
 echo '        fi'
604
 echo '        fi'
551
-echo ''
605
+if [[ ! "$app_dir" ]]; then
606
+    echo "        chown -R www-data:www-data \"\$${app_name}_dir\""
607
+else
608
+    echo "        chown -R ${app_name}:${app_name} \"\$${app_name}_dir\""
609
+fi
610
+echo "        rm -rf \$temp_restore_dir"
552
 echo '    fi'
611
 echo '    fi'
612
+if [ $app_daemon ]; then
613
+    echo "    systemctl start ${app_name}"
614
+    echo ''
615
+fi
616
+if [ $app_webui ]; then
617
+    echo '    restart_site'
618
+fi
553
 echo '}'
619
 echo '}'
554
 echo ''
620
 echo ''
555
 echo "function remove_${app_name} {"
621
 echo "function remove_${app_name} {"
556
-if [[ "$app_node" == 'yes' ]]; then
557
-    echo "    remove_nodejs ${app_name}"
622
+if [ $app_webui ]; then
623
+    echo "    nginx_dissite \"\$${app_name_upper}_DOMAIN_NAME\""
624
+    echo "    remove_certs \"\$${app_name_upper}_DOMAIN_NAME\""
558
     echo ''
625
     echo ''
559
 fi
626
 fi
560
-echo "    nginx_dissite \"\$${app_name_upper}_DOMAIN_NAME\""
561
-echo "    remove_certs \"\$${app_name_upper}_DOMAIN_NAME\""
562
-echo ''
563
 if [ $app_daemon ]; then
627
 if [ $app_daemon ]; then
564
     echo "    if [ -f /etc/systemd/system/${app_name}.service ]; then"
628
     echo "    if [ -f /etc/systemd/system/${app_name}.service ]; then"
565
     echo "        systemctl stop ${app_name}"
629
     echo "        systemctl stop ${app_name}"
568
     echo '    fi'
632
     echo '    fi'
569
     echo "    userdel -r ${app_name}"
633
     echo "    userdel -r ${app_name}"
570
 fi
634
 fi
571
-echo ''
572
-echo "    if [ -d \"/var/www/\$${app_name_upper}_DOMAIN_NAME\" ]; then"
573
-echo "        rm -rf \"/var/www/\$${app_name_upper}_DOMAIN_NAME\""
574
-echo '    fi'
575
-echo "    if [ -f \"/etc/nginx/sites-available/\$${app_name_upper}_DOMAIN_NAME\" ]; then"
576
-echo "        rm \"/etc/nginx/sites-available/\$${app_name_upper}_DOMAIN_NAME\""
577
-echo '    fi'
635
+if [ "$app_nodeapp" ]; then
636
+    echo "    npm uninstall -g ${app_nodeapp}"
637
+    echo ''
638
+fi
639
+if [[ "$app_node" == 'yes' ]]; then
640
+    echo "    remove_nodejs ${app_name}"
641
+    echo ''
642
+fi
643
+if [ $app_webui ]; then
644
+    echo ''
645
+    echo "    if [ -d \"/var/www/\$${app_name_upper}_DOMAIN_NAME\" ]; then"
646
+    echo "        rm -rf \"/var/www/\$${app_name_upper}_DOMAIN_NAME\""
647
+    echo '    fi'
648
+    echo "    if [ -f \"/etc/nginx/sites-available/\$${app_name_upper}_DOMAIN_NAME\" ]; then"
649
+    echo "        rm \"/etc/nginx/sites-available/\$${app_name_upper}_DOMAIN_NAME\""
650
+    echo '    fi'
651
+fi
578
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
652
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
579
     echo "    drop_database ${app_name}"
653
     echo "    drop_database ${app_name}"
580
 fi
654
 fi
581
 if [[ "$database_type" == "postgres"* ]]; then
655
 if [[ "$database_type" == "postgres"* ]]; then
582
     echo "    drop_database_postgresql ${app_name}"
656
     echo "    drop_database_postgresql ${app_name}"
583
 fi
657
 fi
584
-echo "    remove_onion_service ${app_name} \${${app_name_upper}_ONION_PORT}"
658
+echo "    remove_onion_service ${app_name} \"\${${app_name_upper}_ONION_PORT}\""
585
 echo "    if grep -q \"${app_name}\" /etc/crontab; then"
659
 echo "    if grep -q \"${app_name}\" /etc/crontab; then"
586
 echo "        sed -i \"/${app_name}/d\" /etc/crontab"
660
 echo "        sed -i \"/${app_name}/d\" /etc/crontab"
587
 echo '    fi'
661
 echo '    fi'
592
     echo ''
666
     echo ''
593
     echo "    firewall_remove ${app_port} tcp"
667
     echo "    firewall_remove ${app_port} tcp"
594
 fi
668
 fi
595
-echo ''
596
-echo "    remove_ddns_domain \"\$${app_name_upper}_DOMAIN_NAME\""
669
+if [ $app_webui ]; then
670
+    echo ''
671
+    echo "    remove_ddns_domain \"\$${app_name_upper}_DOMAIN_NAME\""
672
+fi
597
 echo '}'
673
 echo '}'
598
 echo ''
674
 echo ''
599
 echo "function install_${app_name} {"
675
 echo "function install_${app_name} {"
608
     echo ''
684
     echo ''
609
 fi
685
 fi
610
 if [[ "$app_node" == 'yes' ]]; then
686
 if [[ "$app_node" == 'yes' ]]; then
611
-    echo "install_nodejs ${app_name}"
687
+    echo "    install_nodejs ${app_name}"
612
 fi
688
 fi
613
 if [ "$app_nodeapp" ]; then
689
 if [ "$app_nodeapp" ]; then
614
-    echo "npm install -g ${app_nodeapp}"
690
+    echo "    npm install -g ${app_nodeapp}"
615
 fi
691
 fi
616
 if [[ "$app_php" == 'yes' ]]; then
692
 if [[ "$app_php" == 'yes' ]]; then
617
     echo '    apt-get -yq install php-gettext php-curl php-gd php-mysql git curl'
693
     echo '    apt-get -yq install php-gettext php-curl php-gd php-mysql git curl'
619
     echo ''
695
     echo ''
620
 fi
696
 fi
621
 
697
 
622
-echo "    if [ ! \"\$${app_name_upper}_DOMAIN_NAME\" ]; then"
623
-echo "        echo \$'No domain name was given'"
624
-echo '        exit 3568356'
625
-echo '    fi'
626
-
627
 if [ $app_webui ]; then
698
 if [ $app_webui ]; then
699
+    echo "    if [ ! \"\$${app_name_upper}_DOMAIN_NAME\" ]; then"
700
+    echo "        echo \$'No domain name was given'"
701
+    echo '        exit 3568356'
702
+    echo '    fi'
628
     echo ''
703
     echo ''
629
     echo "    if [ -d \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" ]; then"
704
     echo "    if [ -d \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" ]; then"
630
     echo "        rm -rf \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
705
     echo "        rm -rf \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
631
     echo '    fi'
706
     echo '    fi'
632
 fi
707
 fi
633
 
708
 
634
-echo "      if [ -d /repos/${app_name} ]; then"
635
-echo "          mkdir \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
709
+echo "    if [ -d /repos/${app_name} ]; then"
710
+if [ $app_webui ]; then
711
+    echo "        mkdir \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
712
+fi
636
 if [ ! "$app_dir" ]; then
713
 if [ ! "$app_dir" ]; then
637
-    echo "          cp -r -p /repos/${app_name}/. \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
638
-    echo "          cd \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" || exit 324687356"
714
+    echo "        cp -r -p /repos/${app_name}/. \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
715
+    echo "        cd \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" || exit 324687356"
639
 else
716
 else
640
-    echo "          cp -r -p /repos/${app_name}/. \"${app_dir}\""
641
-    echo "          cd \"${app_dir}\" || exit 36487365"
717
+    echo "        cp -r -p /repos/${app_name}/. \"${app_dir}\""
718
+    echo "        cd \"${app_dir}\" || exit 36487365"
642
 fi
719
 fi
643
-echo '          git pull'
644
-echo '      else'
720
+echo '        git pull'
721
+echo '    else'
645
 if [ ! "$app_dir" ]; then
722
 if [ ! "$app_dir" ]; then
646
-    echo "          git_clone \$${app_name_upper}_REPO \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
723
+    echo "        git_clone \"\$${app_name_upper}_REPO\" \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
647
 else
724
 else
648
-    echo "          git_clone \$${app_name_upper}_REPO \"${app_dir}\""
725
+    echo "        git_clone \"\$${app_name_upper}_REPO\" \"${app_dir}\""
649
 fi
726
 fi
650
-echo '      fi'
727
+echo '    fi'
651
 echo ''
728
 echo ''
652
 if [ ! "$app_dir" ]; then
729
 if [ ! "$app_dir" ]; then
653
-    echo "        if [ ! -d \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" ]; then"
730
+    echo "    if [ ! -d \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" ]; then"
654
 else
731
 else
655
-    echo "        if [ ! -d \"${app_dir}\" ]; then"
732
+    echo "    if [ ! -d \"${app_dir}\" ]; then"
656
 fi
733
 fi
657
-echo "            echo \$'Unable to clone ${app_name} repo'"
658
-echo '            exit 87525'
659
-echo '        fi'
734
+echo "        echo \$'Unable to clone ${app_name} repo'"
735
+echo '        exit 87525'
736
+echo '    fi'
660
 echo ''
737
 echo ''
661
 if [ ! "$app_dir" ]; then
738
 if [ ! "$app_dir" ]; then
662
     echo "    cd \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" || exit 36587356"
739
     echo "    cd \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" || exit 36587356"
663
 else
740
 else
664
     echo "    cd \"${app_dir}\" || exit 3463754637"
741
     echo "    cd \"${app_dir}\" || exit 3463754637"
665
 fi
742
 fi
666
-echo "    git checkout \$${app_name_upper}_COMMIT -b \$${app_name_upper}_COMMIT"
743
+echo "    git checkout \"\$${app_name_upper}_COMMIT\" -b \"\$${app_name_upper}_COMMIT\""
667
 echo "    set_completion_param \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\""
744
 echo "    set_completion_param \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\""
668
-echo ''
669
-echo "    chmod g+w \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
670
-echo "    chown -R www-data:www-data \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
745
+if [ $app_webui ]; then
746
+    echo ''
747
+    echo "    chmod g+w \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
748
+    echo "    chown -R www-data:www-data \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
749
+fi
671
 
750
 
672
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"*  ]]; then
751
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"*  ]]; then
673
     echo ''
752
     echo ''
674
     echo "    ${app_name}_create_database"
753
     echo "    ${app_name}_create_database"
675
 fi
754
 fi
755
+if [ $app_webui ]; then
756
+    echo ''
757
+    echo "    add_ddns_domain \"\$${app_name_upper}_DOMAIN_NAME\""
758
+fi
676
 echo ''
759
 echo ''
677
-echo "    add_ddns_domain \"\$${app_name_upper}_DOMAIN_NAME\""
678
-echo ''
679
-echo "    ${app_name_upper}_ONION_HOSTNAME=\$(add_onion_service ${app_name} 80 \${${app_name_upper}_ONION_PORT})"
760
+echo "    ${app_name_upper}_ONION_HOSTNAME=\$(add_onion_service ${app_name} 80 \"\${${app_name_upper}_ONION_PORT}\")"
680
 
761
 
681
 if [ $app_webui ]; then
762
 if [ $app_webui ]; then
682
     echo ''
763
     echo ''
791
 
872
 
792
 if [ $app_daemon ]; then
873
 if [ $app_daemon ]; then
793
     echo ''
874
     echo ''
794
-    echo "    useradd -d \"TODO_PATH_TO_INSTALL\" -s /bin/false ${app_name}"
875
+    if [[ ! "$app_dir" ]]; then
876
+        echo "    adduser --system --home=\"TODO_PATH_TO_INSTALL\" --group ${app_name}"
877
+    else
878
+        echo "    adduser --system --home=\"${app_dir}\" --group ${app_name}"
879
+    fi
795
     echo ''
880
     echo ''
796
     echo "    { echo '[Unit]';"
881
     echo "    { echo '[Unit]';"
797
     echo "      echo 'Description=${app_name}';"
882
     echo "      echo 'Description=${app_name}';"
801
     echo "      echo '[Service]';"
886
     echo "      echo '[Service]';"
802
     echo "      echo 'Type=simple';"
887
     echo "      echo 'Type=simple';"
803
     echo "      echo 'User=${app_name}';"
888
     echo "      echo 'User=${app_name}';"
804
-    echo "      echo 'Group=${app_name}'; } > \"/etc/systemd/system/${app_name}.service\""
889
+    echo "      echo 'Group=${app_name}';"
805
     if [ ! "$app_dir" ]; then
890
     if [ ! "$app_dir" ]; then
806
-        echo "    echo 'WorkingDirectory=TODO' >> \"/etc/systemd/system/${app_name}.service\""
891
+        echo "      echo 'WorkingDirectory=TODO';"
892
+    else
893
+        echo "      echo 'WorkingDirectory=${app_dir}';"
894
+    fi
895
+    if [[ ! "$app_nodeapp" ]]; then
896
+        if [ ! $app_node ]; then
897
+            echo "      echo 'ExecStart=TODO';"
898
+        else
899
+            echo "      echo 'ExecStart=/usr/local/bin/npm start';"
900
+            echo "      echo 'ExecStop=/usr/local/bin/npm stop';"
901
+        fi
807
     else
902
     else
808
-        echo "    echo 'WorkingDirectory=${app_dir}' >> \"/etc/systemd/system/${app_name}.service\""
903
+        echo "      echo 'ExecStart=/usr/local/bin/node $app_nodeapp';"
904
+        echo "      echo 'Environment=NODE_ENV=production';"
809
     fi
905
     fi
810
-    echo "    { echo 'ExecStart=TODO';"
906
+    echo "      echo 'Environment=USER=${app_name}';"
811
     echo "      echo 'Restart=always';"
907
     echo "      echo 'Restart=always';"
812
-    echo "      echo 'Environment=\"USER=${app_name}\"';"
908
+    echo "      echo 'StandardError=syslog';"
813
     echo "      echo '';"
909
     echo "      echo '';"
814
     echo "      echo '[Install]';"
910
     echo "      echo '[Install]';"
815
     echo "      echo 'WantedBy=multi-user.target'; } >> \"/etc/systemd/system/${app_name}.service\""
911
     echo "      echo 'WantedBy=multi-user.target'; } >> \"/etc/systemd/system/${app_name}.service\""
819
     fi
915
     fi
820
     echo "    systemctl start ${app_name}"
916
     echo "    systemctl start ${app_name}"
821
 fi
917
 fi
822
-echo ''
823
-echo "    create_site_certificate \"\$${app_name_upper}_DOMAIN_NAME\" 'yes'"
824
-echo ''
825
-echo "    nginx_ensite \"\$${app_name_upper}_DOMAIN_NAME\""
826
-echo ''
918
+if [ $app_webui ]; then
919
+    echo ''
920
+    echo "    create_site_certificate \"\$${app_name_upper}_DOMAIN_NAME\" 'yes'"
921
+    echo ''
922
+    echo "    nginx_ensite \"\$${app_name_upper}_DOMAIN_NAME\""
923
+fi
827
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
924
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
925
+    echo ''
828
     echo '    systemctl restart mariadb'
926
     echo '    systemctl restart mariadb'
829
 fi
927
 fi
830
-if [[ "$app_php" == 'yes' ]]; then
831
-    echo '    systemctl restart php7.0-fpm'
928
+if [ $app_webui ]; then
929
+    if [[ "$app_php" == 'yes' ]]; then
930
+        echo ''
931
+        echo '    systemctl restart php7.0-fpm'
932
+    fi
933
+    echo ''
934
+    echo '    systemctl restart nginx'
832
 fi
935
 fi
833
-echo '    systemctl restart nginx'
834
 echo ''
936
 echo ''
835
 echo "    \"\${PROJECT_NAME}-pass\" -u \"\$MY_USERNAME\" -a ${app_name} -p \"\$${app_name_upper}_ADMIN_PASSWORD\""
937
 echo "    \"\${PROJECT_NAME}-pass\" -u \"\$MY_USERNAME\" -a ${app_name} -p \"\$${app_name_upper}_ADMIN_PASSWORD\""
836
-echo "    set_completion_param \"${app_name} domain\" \"\$${app_name_upper}_DOMAIN_NAME\""
938
+if [ $app_webui ]; then
939
+    echo "    set_completion_param \"${app_name} domain\" \"\$${app_name_upper}_DOMAIN_NAME\""
940
+fi
837
 if [ "$app_port" ]; then
941
 if [ "$app_port" ]; then
838
     echo ''
942
     echo ''
839
     echo "    firewall_add ${app_name} ${app_port} tcp"
943
     echo "    firewall_add ${app_name} ${app_port} tcp"

+ 30
- 0
src/freedombone-utils-firewall View File

36
 function save_firewall_settings {
36
 function save_firewall_settings {
37
     iptables-save > /etc/firewall.conf
37
     iptables-save > /etc/firewall.conf
38
     ip6tables-save > /etc/firewall6.conf
38
     ip6tables-save > /etc/firewall6.conf
39
+    if [ ! -d /etc/network/if-up.d ]; then
40
+        mkdir /etc/network/if-up.d
41
+    fi
39
     printf '#!/bin/sh\n' > /etc/network/if-up.d/iptables
42
     printf '#!/bin/sh\n' > /etc/network/if-up.d/iptables
40
     printf 'iptables-restore < /etc/firewall.conf\n' >> /etc/network/if-up.d/iptables
43
     printf 'iptables-restore < /etc/firewall.conf\n' >> /etc/network/if-up.d/iptables
41
     printf 'ip6tables-restore < /etc/firewall6.conf\n' >> /etc/network/if-up.d/iptables
44
     printf 'ip6tables-restore < /etc/firewall6.conf\n' >> /etc/network/if-up.d/iptables
465
     fi
468
     fi
466
 }
469
 }
467
 
470
 
471
+function firewall_handle_port_scans {
472
+    if [[ $(is_completed "${FUNCNAME[0]}") == "1" ]]; then
473
+        return
474
+    fi
475
+    # only works for high frequency port scanning
476
+
477
+    # flooding of RST packets, smurf attack Rejection
478
+    iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT
479
+
480
+    # Protecting portscans
481
+    # Attacking IP will be locked for 24 hours (3600 x 24 = 86400 Seconds)
482
+    iptables -A INPUT -m recent --name portscan --rcheck --seconds 86400 -j DROP
483
+    iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP
484
+
485
+    # Remove attacking IP after 24 hours
486
+    iptables -A INPUT -m recent --name portscan --remove
487
+    iptables -A FORWARD -m recent --name portscan --remove
488
+
489
+    # These rules add scanners to the portscan list, and log the attempt.
490
+    iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "portscan:"
491
+    iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP
492
+
493
+    iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "portscan:"
494
+    iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP
495
+    save_firewall_settings
496
+    mark_completed "${FUNCNAME[0]}"
497
+}
468
 
498
 
469
 function firewall_remove {
499
 function firewall_remove {
470
     firewall_port=$1
500
     firewall_port=$1

+ 2
- 3
src/freedombone-utils-network View File

34
 # OpenDNS ipv6 DNS  2620:0:ccc::2
34
 # OpenDNS ipv6 DNS  2620:0:ccc::2
35
 IPV4_ADDRESS_TEST_DESTINATION='85.214.73.63'
35
 IPV4_ADDRESS_TEST_DESTINATION='85.214.73.63'
36
 IPV6_ADDRESS_TEST_DESTINATION='2620:0:ccc::2'
36
 IPV6_ADDRESS_TEST_DESTINATION='2620:0:ccc::2'
37
-EXTERNAL_IP_LOOKUP_URL='ifcfg.me'
38
 
37
 
39
 # The static IP address of the system within the local network
38
 # The static IP address of the system within the local network
40
 # By default the IP address is dynamic within your LAN
39
 # By default the IP address is dynamic within your LAN
100
 }
99
 }
101
 
100
 
102
 function get_external_ipv4_address {
101
 function get_external_ipv4_address {
103
-    nslookup . $EXTERNAL_IP_LOOKUP_URL | grep Address | tail -n 1 | awk -F ' ' '{print $2}'
102
+    curl -s ipinfo.io/ip
104
 }
103
 }
105
 
104
 
106
 function get_ipv4_address {
105
 function get_ipv4_address {
117
     ip_update_script=/usr/bin/externalipupdate
116
     ip_update_script=/usr/bin/externalipupdate
118
     { echo '#!/bin/bash';
117
     { echo '#!/bin/bash';
119
       echo "existing_ip=\$(cat $CONFIGURATION_FILE | grep \"EXTERNAL_IPV4_ADDRESS=\" | head -n 1 | awk -F '=' '{print \$2}')'";
118
       echo "existing_ip=\$(cat $CONFIGURATION_FILE | grep \"EXTERNAL_IPV4_ADDRESS=\" | head -n 1 | awk -F '=' '{print \$2}')'";
120
-      echo "curr_ip=\$(nslookup . $EXTERNAL_IP_LOOKUP_URL | grep Address | tail -n 1 | awk -F ' ' '{print \$2}')";
119
+      echo "curr_ip=\$(curl -s ipinfo.io/ip)";
121
       echo "if [[ \"\$curr_ip\" != \"\$existing_ip\" ]]; then";
120
       echo "if [[ \"\$curr_ip\" != \"\$existing_ip\" ]]; then";
122
       echo "  sed -i \"s|EXTERNAL_IPV4_ADDRESS=.*|EXTERNAL_IPV4_ADDRESS=\${curr_ip}|g\" $CONFIGURATION_FILE";
121
       echo "  sed -i \"s|EXTERNAL_IPV4_ADDRESS=.*|EXTERNAL_IPV4_ADDRESS=\${curr_ip}|g\" $CONFIGURATION_FILE";
123
       echo "  echo \"\$(date)\" >> ~/${PROJECT_NAME}-external-ip-changes.txt";
122
       echo "  echo \"\$(date)\" >> ~/${PROJECT_NAME}-external-ip-changes.txt";

+ 20
- 0
src/freedombone-utils-nodejs View File

244
     npm update -g
244
     npm update -g
245
 }
245
 }
246
 
246
 
247
+function mesh_setup_npm {
248
+    cat <<EOF > "$rootdir/usr/bin/install_npm_global"
249
+#!/bin/bash
250
+if [ ! -d ~/.npm-global ]; then
251
+    mkdir ~/.npm-global
252
+fi
253
+npm config set prefix '~/.npm-global'
254
+if [[ "$PATH" != *'~/.npm-global/bin'* ]]; then
255
+    export PATH=~/.npm-global/bin:$PATH
256
+    echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
257
+fi
258
+export NPM_CONFIG_PREFIX=~/.npm-global
259
+echo 'export NPM_CONFIG_PREFIX=~/.npm-global' >> ~/.bashrc
260
+source ~/.profile
261
+EOF
262
+    chroot "$rootdir" /bin/chmod +x /usr/bin/install_npm_global
263
+    chroot "$rootdir" /usr/bin/install_npm_global
264
+    rm "$rootdir/usr/bin/install_npm_global"
265
+}
266
+
247
 function nodejs_setup_global_modules {
267
 function nodejs_setup_global_modules {
248
     if [ ! -f /usr/local/bin/node ]; then
268
     if [ ! -f /usr/local/bin/node ]; then
249
         return
269
         return

+ 0
- 0
src/freedombone-utils-setup View File


Some files were not shown because too many files changed in this diff