From 8bda053fd960a6c36c3181be925814bb3c6ff172 Mon Sep 17 00:00:00 2001 From: Bob Mottram <bob@freedombone.net> Date: Sat, 6 May 2017 14:39:31 +0100 Subject: [PATCH] Documentation for Matrix --- doc/EN/app_matrix.org | 53 ++++++ doc/EN/apps.org | 4 + img/matrix_riotweb.jpg | Bin 0 -> 43614 bytes website/EN/app_matrix.html | 348 +++++++++++++++++++++++++++++++++++++ website/EN/apps.html | 176 ++++++++++--------- 5 files changed, 499 insertions(+), 82 deletions(-) create mode 100644 doc/EN/app_matrix.org create mode 100644 img/matrix_riotweb.jpg create mode 100644 website/EN/app_matrix.html diff --git a/doc/EN/app_matrix.org b/doc/EN/app_matrix.org new file mode 100644 index 000000000..456e8f7a8 --- /dev/null +++ b/doc/EN/app_matrix.org @@ -0,0 +1,53 @@ +#+TITLE: +#+AUTHOR: Bob Mottram +#+EMAIL: bob@freedombone.net +#+KEYWORDS: freedombone, matrix +#+DESCRIPTION: How to use Matrix +#+OPTIONS: ^:nil toc:nil +#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" /> + +#+BEGIN_CENTER +[[file:images/logo.png]] +#+END_CENTER + +#+BEGIN_EXPORT html +<center> +<h1>Matrix</h1> +</center> +#+END_EXPORT + +#+BEGIN_CENTER +[[file:images/matrix_riotweb.jpg]] +#+END_CENTER + +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. + +* Installation +Log into your system with: + +#+begin_src bash +ssh myusername@mydomain -p 2222 +#+end_src + +Using cursor keys, space bar and Enter key select *Administrator controls* and type in your password. + +Select *Add/Remove Apps* then *matrix*. You will then be asked for a domain name and if you are using FreeDNS also the code for the domain which can be found under *Dynamic DNS* on the FreeDNS site (the random string from "/quick cron example/" which appears after /update.php?/ and before />>/). For more details on obtaining a domain and making it accessible via dynamic DNS see the [[./faq.html][FAQ]]. Typically the domain name you use will be a subdomain, such as /matrix.mydomainname.net/. It will need to be a domain which you have bought somewhere and own and not one of the FreeDNS subdomains, otherwise you won't be able to get a SSL/TLS certificate for it. + +* Initial setup +Go to the *Administrator control panel* and select *Passwords* then *matrix*. This will give you the password to initially log in to the system and you can change it later from a client app if needed. + +Install the *Riot* app from F-droid on a mobile device. You can then log in with your username and password, making sure to select a custom server and then entering your Matrix domain name for both the main server and identity server. + +Other client apps are available but are currently mostly only at the alpha stage. For details see the main [[https://matrix.org][matrix.org site]]. + +* DNS setup +It's recommended that you add an SRV record for Matrix to your DNS setup. How you do this will depend upon your dynamic DNS provider and their web interface. On FreeDNS on the subdomains settings in addition to the subdomain which you are using for the matrix server create an extra entry as follows: + +#+begin_src text +Type: SRV +Subdomain: _matrix._tcp +Domain: [youdomain] +Destination: 10 0 8448 [yourmatrixsubdomain] +#+end_src + +You may also want to make another entry with the same settings but replacing *tcp* with *udp*. diff --git a/doc/EN/apps.org b/doc/EN/apps.org index d40ade796..450e96857 100644 --- a/doc/EN/apps.org +++ b/doc/EN/apps.org @@ -79,6 +79,10 @@ Make your photo albums available on the web. Modern email client which supports GPG encryption. [[./app_mailpile.html][How to use it]] +* Matrix +Multi-user chat with some security and moderation controls. + +[[./app_matrix.html][How to use it]] * Mediagoblin Publicly host video and audio files so that you don't need to use YouTube/Vimeo/etc. diff --git a/img/matrix_riotweb.jpg b/img/matrix_riotweb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5fac7212b1be2ca3a9c4fe72213ec7d759da57da GIT binary patch literal 43614 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	Ou*L;M#ZCVLgCa9$92@;m?P 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 literal 0 HcmV?d00001 diff --git a/website/EN/app_matrix.html b/website/EN/app_matrix.html new file mode 100644 index 000000000..715223963 --- /dev/null +++ b/website/EN/app_matrix.html @@ -0,0 +1,348 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> +<head> +<!-- 2017-05-06 Sat 14:38 --> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1" /> +<title></title> +<meta name="generator" content="Org mode" /> +<meta name="author" content="Bob Mottram" /> +<meta name="description" content="How to use Matrix" + /> +<meta name="keywords" content="freedombone, matrix" /> +<style type="text/css"> + <!--/*--><![CDATA[/*><!--*/ + .title { text-align: center; + margin-bottom: .2em; } + .subtitle { text-align: center; + font-size: medium; + font-weight: bold; + margin-top:0; } + .todo { font-family: monospace; color: red; } + .done { font-family: monospace; color: green; } + .priority { font-family: monospace; color: orange; } + .tag { background-color: #eee; font-family: monospace; + padding: 2px; font-size: 80%; font-weight: normal; } + .timestamp { color: #bebebe; } + .timestamp-kwd { color: #5f9ea0; } + .org-right { margin-left: auto; margin-right: 0px; text-align: right; } + .org-left { margin-left: 0px; margin-right: auto; text-align: left; } + .org-center { margin-left: auto; margin-right: auto; text-align: center; } + .underline { text-decoration: underline; } + #postamble p, #preamble p { font-size: 90%; margin: .2em; } + p.verse { margin-left: 3%; } + pre { + border: 1px solid #ccc; + box-shadow: 3px 3px 3px #eee; + padding: 8pt; + font-family: monospace; + overflow: auto; + margin: 1.2em; + } + pre.src { + position: relative; + overflow: visible; + padding-top: 1.2em; + } + pre.src:before { + display: none; + position: absolute; + background-color: white; + top: -10px; + right: 10px; + padding: 3px; + border: 1px solid black; + } + pre.src:hover:before { display: inline;} + /* Languages per Org manual */ + pre.src-asymptote:before { content: 'Asymptote'; } + pre.src-awk:before { content: 'Awk'; } + pre.src-C:before { content: 'C'; } + /* pre.src-C++ doesn't work in CSS */ + pre.src-clojure:before { content: 'Clojure'; } + pre.src-css:before { content: 'CSS'; } + pre.src-D:before { content: 'D'; } + pre.src-ditaa:before { content: 'ditaa'; } + pre.src-dot:before { content: 'Graphviz'; } + pre.src-calc:before { content: 'Emacs Calc'; } + pre.src-emacs-lisp:before { content: 'Emacs Lisp'; } + pre.src-fortran:before { content: 'Fortran'; } + pre.src-gnuplot:before { content: 'gnuplot'; } + pre.src-haskell:before { content: 'Haskell'; } + pre.src-hledger:before { content: 'hledger'; } + pre.src-java:before { content: 'Java'; } + pre.src-js:before { content: 'Javascript'; } + pre.src-latex:before { content: 'LaTeX'; } + pre.src-ledger:before { content: 'Ledger'; } + pre.src-lisp:before { content: 'Lisp'; } + pre.src-lilypond:before { content: 'Lilypond'; } + pre.src-lua:before { content: 'Lua'; } + pre.src-matlab:before { content: 'MATLAB'; } + pre.src-mscgen:before { content: 'Mscgen'; } + pre.src-ocaml:before { content: 'Objective Caml'; } + pre.src-octave:before { content: 'Octave'; } + pre.src-org:before { content: 'Org mode'; } + pre.src-oz:before { content: 'OZ'; } + pre.src-plantuml:before { content: 'Plantuml'; } + pre.src-processing:before { content: 'Processing.js'; } + pre.src-python:before { content: 'Python'; } + pre.src-R:before { content: 'R'; } + pre.src-ruby:before { content: 'Ruby'; } + pre.src-sass:before { content: 'Sass'; } + pre.src-scheme:before { content: 'Scheme'; } + pre.src-screen:before { content: 'Gnu Screen'; } + pre.src-sed:before { content: 'Sed'; } + pre.src-sh:before { content: 'shell'; } + pre.src-sql:before { content: 'SQL'; } + pre.src-sqlite:before { content: 'SQLite'; } + /* additional languages in org.el's org-babel-load-languages alist */ + pre.src-forth:before { content: 'Forth'; } + pre.src-io:before { content: 'IO'; } + pre.src-J:before { content: 'J'; } + pre.src-makefile:before { content: 'Makefile'; } + pre.src-maxima:before { content: 'Maxima'; } + pre.src-perl:before { content: 'Perl'; } + pre.src-picolisp:before { content: 'Pico Lisp'; } + pre.src-scala:before { content: 'Scala'; } + pre.src-shell:before { content: 'Shell Script'; } + pre.src-ebnf2ps:before { content: 'ebfn2ps'; } + /* additional language identifiers per "defun org-babel-execute" + in ob-*.el */ + pre.src-cpp:before { content: 'C++'; } + pre.src-abc:before { content: 'ABC'; } + pre.src-coq:before { content: 'Coq'; } + pre.src-groovy:before { content: 'Groovy'; } + /* additional language identifiers from org-babel-shell-names in + ob-shell.el: ob-shell is the only babel language using a lambda to put + the execution function name together. */ + pre.src-bash:before { content: 'bash'; } + pre.src-csh:before { content: 'csh'; } + pre.src-ash:before { content: 'ash'; } + pre.src-dash:before { content: 'dash'; } + pre.src-ksh:before { content: 'ksh'; } + pre.src-mksh:before { content: 'mksh'; } + pre.src-posh:before { content: 'posh'; } + /* Additional Emacs modes also supported by the LaTeX listings package */ + pre.src-ada:before { content: 'Ada'; } + pre.src-asm:before { content: 'Assembler'; } + pre.src-caml:before { content: 'Caml'; } + pre.src-delphi:before { content: 'Delphi'; } + pre.src-html:before { content: 'HTML'; } + pre.src-idl:before { content: 'IDL'; } + pre.src-mercury:before { content: 'Mercury'; } + pre.src-metapost:before { content: 'MetaPost'; } + pre.src-modula-2:before { content: 'Modula-2'; } + pre.src-pascal:before { content: 'Pascal'; } + pre.src-ps:before { content: 'PostScript'; } + pre.src-prolog:before { content: 'Prolog'; } + pre.src-simula:before { content: 'Simula'; } + pre.src-tcl:before { content: 'tcl'; } + pre.src-tex:before { content: 'TeX'; } + pre.src-plain-tex:before { content: 'Plain TeX'; } + pre.src-verilog:before { content: 'Verilog'; } + pre.src-vhdl:before { content: 'VHDL'; } + pre.src-xml:before { content: 'XML'; } + pre.src-nxml:before { content: 'XML'; } + /* add a generic configuration mode; LaTeX export needs an additional + (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */ + pre.src-conf:before { content: 'Configuration File'; } + + table { border-collapse:collapse; } + caption.t-above { caption-side: top; } + caption.t-bottom { caption-side: bottom; } + td, th { vertical-align:top; } + th.org-right { text-align: center; } + th.org-left { text-align: center; } + th.org-center { text-align: center; } + td.org-right { text-align: right; } + td.org-left { text-align: left; } + td.org-center { text-align: center; } + dt { font-weight: bold; } + .footpara { display: inline; } + .footdef { margin-bottom: 1em; } + .figure { padding: 1em; } + .figure p { text-align: center; } + .inlinetask { + padding: 10px; + border: 2px solid gray; + margin: 10px; + background: #ffffcc; + } + #org-div-home-and-up + { text-align: right; font-size: 70%; white-space: nowrap; } + textarea { overflow-x: auto; } + .linenr { font-size: smaller } + .code-highlighted { background-color: #ffff00; } + .org-info-js_info-navigation { border-style: none; } + #org-info-js_console-label + { font-size: 10px; font-weight: bold; white-space: nowrap; } + .org-info-js_search-highlight + { background-color: #ffff00; color: #000000; font-weight: bold; } + .org-svg { width: 90%; } + /*]]>*/--> +</style> +<link rel="stylesheet" type="text/css" href="freedombone.css" /> +<script type="text/javascript"> +/* +@licstart The following is the entire license notice for the +JavaScript code in this tag. + +Copyright (C) 2012-2017 Free Software Foundation, Inc. + +The JavaScript code in this tag is free software: you can +redistribute it and/or modify it under the terms of the GNU +General Public License (GNU GPL) as published by the Free Software +Foundation, either version 3 of the License, or (at your option) +any later version. The code is distributed WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. + +As additional permission under GNU GPL version 3 section 7, you +may distribute non-source (e.g., minimized or compacted) forms of +that code without the copy of the GNU GPL normally required by +section 4, provided you include this license notice and a URL +through which recipients can access the Corresponding Source. + + +@licend The above is the entire license notice +for the JavaScript code in this tag. +*/ +<!--/*--><![CDATA[/*><!--*/ + function CodeHighlightOn(elem, id) + { + var target = document.getElementById(id); + if(null != target) { + elem.cacheClassElem = elem.className; + elem.cacheClassTarget = target.className; + target.className = "code-highlighted"; + elem.className = "code-highlighted"; + } + } + function CodeHighlightOff(elem, id) + { + var target = document.getElementById(id); + if(elem.cacheClassElem) + elem.className = elem.cacheClassElem; + if(elem.cacheClassTarget) + target.className = elem.cacheClassTarget; + } +/*]]>*///--> +</script> +</head> +<body> +<div id="preamble" class="status"> +<a name="top" id="top"></a> +</div> +<div id="content"> +<div class="org-center"> + +<div class="figure"> +<p><img src="images/logo.png" alt="logo.png" /> +</p> +</div> +</div> + +<center> +<h1>Matrix</h1> +</center> + +<div class="org-center"> + +<div class="figure"> +<p><img src="images/matrix_riotweb.jpg" alt="matrix_riotweb.jpg" /> +</p> +</div> +</div> + +<p> +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. +</p> + +<div id="outline-container-org46fb6b7" class="outline-2"> +<h2 id="org46fb6b7">Installation</h2> +<div class="outline-text-2" id="text-org46fb6b7"> +<p> +Log into your system with: +</p> + +<div class="org-src-container"> +<pre><code class="src src-bash">ssh myusername@mydomain -p 2222 +</code></pre> +</div> + +<p> +Using cursor keys, space bar and Enter key select <b>Administrator controls</b> and type in your password. +</p> + +<p> +Select <b>Add/Remove Apps</b> then <b>matrix</b>. You will then be asked for a domain name and if you are using FreeDNS also the code for the domain which can be found under <b>Dynamic DNS</b> on the FreeDNS site (the random string from "<i>quick cron example</i>" which appears after <i>update.php?</i> and before <i>>></i>). For more details on obtaining a domain and making it accessible via dynamic DNS see the <a href="./faq.html">FAQ</a>. Typically the domain name you use will be a subdomain, such as <i>matrix.mydomainname.net</i>. It will need to be a domain which you have bought somewhere and own and not one of the FreeDNS subdomains, otherwise you won't be able to get a SSL/TLS certificate for it. +</p> +</div> +</div> + +<div id="outline-container-org290b604" class="outline-2"> +<h2 id="org290b604">Initial setup</h2> +<div class="outline-text-2" id="text-org290b604"> +<p> +Go to the <b>Administrator control panel</b> and select <b>Passwords</b> then <b>matrix</b>. This will give you the password to initially log in to the system and you can change it later from a client app if needed. +</p> + +<p> +Install the <b>Riot</b> app from F-droid on a mobile device. You can then log in with your username and password, making sure to select a custom server and then entering your Matrix domain name for both the main server and identity server. +</p> + +<p> +Other client apps are available but are currently mostly only at the alpha stage. For details see the main <a href="https://matrix.org">matrix.org site</a>. +</p> +</div> +</div> + +<div id="outline-container-orgba35485" class="outline-2"> +<h2 id="orgba35485">DNS setup</h2> +<div class="outline-text-2" id="text-orgba35485"> +<p> +It's recommended that you add an SRV record for Matrix to your DNS setup. How you do this will depend upon your dynamic DNS provider and their web interface. On FreeDNS on the subdomains settings in addition to the subdomain which you are using for the matrix server create an extra entry as follows: +</p> + +<div class="org-src-container"> +<pre><code class="src src-text">Type: SRV +Subdomain: _matrix._tcp +Domain: [youdomain] +Destination: 10 0 8448 [yourmatrixsubdomain] +</code></pre> +</div> + +<p> +You may also want to make another entry with the same settings but replacing <b>tcp</b> with <b>udp</b>. +</p> +</div> +</div> +</div> +<div id="postamble" class="status"> + +<style type="text/css"> +.back-to-top { + position: fixed; + bottom: 2em; + right: 0px; + text-decoration: none; + color: #000000; + background-color: rgba(235, 235, 235, 0.80); + font-size: 12px; + padding: 1em; + display: none; +} + +.back-to-top:hover { + background-color: rgba(135, 135, 135, 0.50); +} +</style> + +<div class="back-to-top"> +<a href="#top">Back to top</a> | <a href="mailto:bob@freedombone.net">E-mail me</a> +</div> +</div> +</body> +</html> diff --git a/website/EN/apps.html b/website/EN/apps.html index df40e77be..69c6ada64 100644 --- a/website/EN/apps.html +++ b/website/EN/apps.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> -<!-- 2017-04-16 Sun 20:15 --> +<!-- 2017-05-06 Sat 14:28 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title></title> @@ -264,9 +264,9 @@ The base install of the system just contains an email server and Mutt client, bu </div> </div> -<div id="outline-container-orgaef5461" class="outline-2"> -<h2 id="orgaef5461">DLNA</h2> -<div class="outline-text-2" id="text-orgaef5461"> +<div id="outline-container-org3133696" class="outline-2"> +<h2 id="org3133696">DLNA</h2> +<div class="outline-text-2" id="text-org3133696"> <p> Enables you to use the system as a music server which any DLNA compatible devices can connect to within your home network. </p> @@ -276,9 +276,9 @@ Enables you to use the system as a music server which any DLNA compatible device </p> </div> </div> -<div id="outline-container-org93b2ce7" class="outline-2"> -<h2 id="org93b2ce7">Dokuwiki</h2> -<div class="outline-text-2" id="text-org93b2ce7"> +<div id="outline-container-org7e6853f" class="outline-2"> +<h2 id="org7e6853f">Dokuwiki</h2> +<div class="outline-text-2" id="text-org7e6853f"> <p> A databaseless wiki system. </p> @@ -288,9 +288,9 @@ A databaseless wiki system. </p> </div> </div> -<div id="outline-container-org22d83d1" class="outline-2"> -<h2 id="org22d83d1">Emacs</h2> -<div class="outline-text-2" id="text-org22d83d1"> +<div id="outline-container-orge8f2197" class="outline-2"> +<h2 id="orge8f2197">Emacs</h2> +<div class="outline-text-2" id="text-orge8f2197"> <p> If you use the Mutt client to read your email then this will set it up to use emacs for composing new mail. </p> @@ -300,9 +300,9 @@ If you use the Mutt client to read your email then this will set it up to use em </p> </div> </div> -<div id="outline-container-org3def1a9" class="outline-2"> -<h2 id="org3def1a9">Etherpad</h2> -<div class="outline-text-2" id="text-org3def1a9"> +<div id="outline-container-org426b74c" class="outline-2"> +<h2 id="org426b74c">Etherpad</h2> +<div class="outline-text-2" id="text-org426b74c"> <p> Collaborate on creating documents in real time. Maybe you're planning a holiday with other family members or creating documentation for a Free Software project along with other volunteers. Etherpad is hard to beat for simplicity and speed. Only users of the system will be able to access it. </p> @@ -312,9 +312,9 @@ Collaborate on creating documents in real time. Maybe you're planning a holiday </p> </div> </div> -<div id="outline-container-orgce48cd9" class="outline-2"> -<h2 id="orgce48cd9">Friendica</h2> -<div class="outline-text-2" id="text-orgce48cd9"> +<div id="outline-container-org9b190bd" class="outline-2"> +<h2 id="org9b190bd">Friendica</h2> +<div class="outline-text-2" id="text-org9b190bd"> <p> Federated social network system. </p> @@ -324,9 +324,9 @@ Federated social network system. </p> </div> </div> -<div id="outline-container-orgddef943" class="outline-2"> -<h2 id="orgddef943">Ghost</h2> -<div class="outline-text-2" id="text-orgddef943"> +<div id="outline-container-org2413ce1" class="outline-2"> +<h2 id="org2413ce1">Ghost</h2> +<div class="outline-text-2" id="text-org2413ce1"> <p> Modern looking blogging system. </p> @@ -336,9 +336,9 @@ Modern looking blogging system. </p> </div> </div> -<div id="outline-container-orgaa03d10" class="outline-2"> -<h2 id="orgaa03d10">GNU Social</h2> -<div class="outline-text-2" id="text-orgaa03d10"> +<div id="outline-container-orgfe1fc0a" class="outline-2"> +<h2 id="orgfe1fc0a">GNU Social</h2> +<div class="outline-text-2" id="text-orgfe1fc0a"> <p> Federated social network. You can "<i>remote follow</i>" other users within the GNU Social federation. </p> @@ -348,9 +348,9 @@ Federated social network. You can "<i>remote follow</i>" other users within the </p> </div> </div> -<div id="outline-container-org0b59cf9" class="outline-2"> -<h2 id="org0b59cf9">Gogs</h2> -<div class="outline-text-2" id="text-org0b59cf9"> +<div id="outline-container-orga4716ef" class="outline-2"> +<h2 id="orga4716ef">Gogs</h2> +<div class="outline-text-2" id="text-orga4716ef"> <p> Lightweight git project hosting system. You can mirror projects from Github, or if Github turns evil then just host your own projects while retaining the familiar <i>fork-and-pull</i> workflow. If you can use Github then you can also use Gogs. </p> @@ -360,9 +360,9 @@ Lightweight git project hosting system. You can mirror projects from Github, or </p> </div> </div> -<div id="outline-container-org82116af" class="outline-2"> -<h2 id="org82116af">HTMLy</h2> -<div class="outline-text-2" id="text-org82116af"> +<div id="outline-container-org0d4f93d" class="outline-2"> +<h2 id="org0d4f93d">HTMLy</h2> +<div class="outline-text-2" id="text-org0d4f93d"> <p> Databaseless blogging system. Quite simple and with a markdown-like format. </p> @@ -372,9 +372,9 @@ Databaseless blogging system. Quite simple and with a markdown-like format. </p> </div> </div> -<div id="outline-container-org628e970" class="outline-2"> -<h2 id="org628e970">Hubzilla</h2> -<div class="outline-text-2" id="text-org628e970"> +<div id="outline-container-org0d348d0" class="outline-2"> +<h2 id="org0d348d0">Hubzilla</h2> +<div class="outline-text-2" id="text-org0d348d0"> <p> Web publishing platform with social network like features and good privacy controls so that it's possible to specify who can see which content. Includes photo albums, calendar, wiki and file storage. </p> @@ -384,9 +384,9 @@ Web publishing platform with social network like features and good privacy contr </p> </div> </div> -<div id="outline-container-org053df0a" class="outline-2"> -<h2 id="org053df0a">IRC Server (ngirc)</h2> -<div class="outline-text-2" id="text-org053df0a"> +<div id="outline-container-org9d8a8f3" class="outline-2"> +<h2 id="org9d8a8f3">IRC Server (ngirc)</h2> +<div class="outline-text-2" id="text-org9d8a8f3"> <p> Run your own IRC chat channel which can be secured with a password and accessible via an onion address. A bouncer is included so that you can receive messages sent while you were offline. Works with Hexchat and other popular clients. </p> @@ -396,18 +396,18 @@ Run your own IRC chat channel which can be secured with a password and accessibl </p> </div> </div> -<div id="outline-container-org3114655" class="outline-2"> -<h2 id="org3114655">Jitsi Meet</h2> -<div class="outline-text-2" id="text-org3114655"> +<div id="outline-container-org994c40b" class="outline-2"> +<h2 id="org994c40b">Jitsi Meet</h2> +<div class="outline-text-2" id="text-org994c40b"> <p> Experimental WebRTC video conferencing system, similar to Google Hangouts. This may not be fully functional, but is hoped to be in the near future. </p> </div> </div> -<div id="outline-container-org95bfce2" class="outline-2"> -<h2 id="org95bfce2">Lychee</h2> -<div class="outline-text-2" id="text-org95bfce2"> +<div id="outline-container-org77fc7ff" class="outline-2"> +<h2 id="org77fc7ff">Lychee</h2> +<div class="outline-text-2" id="text-org77fc7ff"> <p> Make your photo albums available on the web. </p> @@ -417,9 +417,9 @@ Make your photo albums available on the web. </p> </div> </div> -<div id="outline-container-org7547134" class="outline-2"> -<h2 id="org7547134">Mailpile</h2> -<div class="outline-text-2" id="text-org7547134"> +<div id="outline-container-org8fe7942" class="outline-2"> +<h2 id="org8fe7942">Mailpile</h2> +<div class="outline-text-2" id="text-org8fe7942"> <p> Modern email client which supports GPG encryption. </p> @@ -429,9 +429,21 @@ Modern email client which supports GPG encryption. </p> </div> </div> -<div id="outline-container-org8cf199d" class="outline-2"> -<h2 id="org8cf199d">Mediagoblin</h2> -<div class="outline-text-2" id="text-org8cf199d"> +<div id="outline-container-orgefa8f2e" class="outline-2"> +<h2 id="orgefa8f2e">Matrix</h2> +<div class="outline-text-2" id="text-orgefa8f2e"> +<p> +Multi-user chat with some security and moderation controls. +</p> + +<p> +<a href="./app_matrix.html">How to use it</a> +</p> +</div> +</div> +<div id="outline-container-org0a14737" class="outline-2"> +<h2 id="org0a14737">Mediagoblin</h2> +<div class="outline-text-2" id="text-org0a14737"> <p> Publicly host video and audio files so that you don't need to use YouTube/Vimeo/etc. </p> @@ -441,9 +453,9 @@ Publicly host video and audio files so that you don't need to use YouTube/Vimeo/ </p> </div> </div> -<div id="outline-container-org5c78370" class="outline-2"> -<h2 id="org5c78370">Mumble</h2> -<div class="outline-text-2" id="text-org5c78370"> +<div id="outline-container-orgcc0d1bc" class="outline-2"> +<h2 id="orgcc0d1bc">Mumble</h2> +<div class="outline-text-2" id="text-orgcc0d1bc"> <p> The popular VoIP and text chat system. Say goodbye to old-fashioned telephony conferences with silly dial codes. Also works well on mobile. </p> @@ -453,9 +465,9 @@ The popular VoIP and text chat system. Say goodbye to old-fashioned telephony co </p> </div> </div> -<div id="outline-container-orgb21fe4b" class="outline-2"> -<h2 id="orgb21fe4b">PI-Hole</h2> -<div class="outline-text-2" id="text-orgb21fe4b"> +<div id="outline-container-orgb5dff52" class="outline-2"> +<h2 id="orgb5dff52">PI-Hole</h2> +<div class="outline-text-2" id="text-orgb5dff52"> <p> The black hole for web adverts. Block adverts at the domain name level within your local network. It can significantly reduce bandwidth, speed up page load times and protect your systems from being tracked by spyware. </p> @@ -465,9 +477,9 @@ The black hole for web adverts. Block adverts at the domain name level within yo </p> </div> </div> -<div id="outline-container-orgf07d1fd" class="outline-2"> -<h2 id="orgf07d1fd">PostActiv</h2> -<div class="outline-text-2" id="text-orgf07d1fd"> +<div id="outline-container-org14f412d" class="outline-2"> +<h2 id="org14f412d">PostActiv</h2> +<div class="outline-text-2" id="text-org14f412d"> <p> An alternative federated social networking system compatible with GNU Social. It includes some optimisations and fixes currently not available within the main GNU Social project. </p> @@ -477,9 +489,9 @@ An alternative federated social networking system compatible with GNU Social. It </p> </div> </div> -<div id="outline-container-orgf106362" class="outline-2"> -<h2 id="orgf106362">Radicale</h2> -<div class="outline-text-2" id="text-orgf106362"> +<div id="outline-container-org428f160" class="outline-2"> +<h2 id="org428f160">Radicale</h2> +<div class="outline-text-2" id="text-org428f160"> <p> Calendar system compatible with CalDAV and CardDAV. Synch your calendar events easily and securely across all your devices. </p> @@ -489,9 +501,9 @@ Calendar system compatible with CalDAV and CardDAV. Synch your calendar events e </p> </div> </div> -<div id="outline-container-org75daebd" class="outline-2"> -<h2 id="org75daebd">SearX</h2> -<div class="outline-text-2" id="text-org75daebd"> +<div id="outline-container-orgfe12a99" class="outline-2"> +<h2 id="orgfe12a99">SearX</h2> +<div class="outline-text-2" id="text-orgfe12a99"> <p> A metasearch engine for customised and private web searches. </p> @@ -501,9 +513,9 @@ A metasearch engine for customised and private web searches. </p> </div> </div> -<div id="outline-container-org277c344" class="outline-2"> -<h2 id="org277c344">tt-rss</h2> -<div class="outline-text-2" id="text-org277c344"> +<div id="outline-container-org5601f82" class="outline-2"> +<h2 id="org5601f82">tt-rss</h2> +<div class="outline-text-2" id="text-org5601f82"> <p> Private RSS reader. Pulls in RSS/Atom feeds via Tor and is only accessible via an onion address. Have "<i>the right to read</i>" without the Surveillance State knowing what you're reading. Also available with a user interface suitable for viewing on mobile devices via a browser such as OrFox. </p> @@ -513,9 +525,9 @@ Private RSS reader. Pulls in RSS/Atom feeds via Tor and is only accessible via a </p> </div> </div> -<div id="outline-container-org303d613" class="outline-2"> -<h2 id="org303d613">Syncthing</h2> -<div class="outline-text-2" id="text-org303d613"> +<div id="outline-container-org0665efd" class="outline-2"> +<h2 id="org0665efd">Syncthing</h2> +<div class="outline-text-2" id="text-org0665efd"> <p> Possibly the best way to synchronise files across all of your devices. Once it has been set up it "just works" with no user intervention needed. </p> @@ -525,9 +537,9 @@ Possibly the best way to synchronise files across all of your devices. Once it h </p> </div> </div> -<div id="outline-container-org9375130" class="outline-2"> -<h2 id="org9375130">Tahoe-LAFS</h2> -<div class="outline-text-2" id="text-org9375130"> +<div id="outline-container-orgbb157d9" class="outline-2"> +<h2 id="orgbb157d9">Tahoe-LAFS</h2> +<div class="outline-text-2" id="text-orgbb157d9"> <p> Robust and encrypted storage of files on one or more server. </p> @@ -537,9 +549,9 @@ Robust and encrypted storage of files on one or more server. </p> </div> </div> -<div id="outline-container-org14db040" class="outline-2"> -<h2 id="org14db040">Tox</h2> -<div class="outline-text-2" id="text-org14db040"> +<div id="outline-container-orgc480751" class="outline-2"> +<h2 id="orgc480751">Tox</h2> +<div class="outline-text-2" id="text-orgc480751"> <p> Client and bootstrap node for the Tox chat/VoIP system. </p> @@ -549,9 +561,9 @@ Client and bootstrap node for the Tox chat/VoIP system. </p> </div> </div> -<div id="outline-container-org7fa24b1" class="outline-2"> -<h2 id="org7fa24b1">Turtl</h2> -<div class="outline-text-2" id="text-org7fa24b1"> +<div id="outline-container-org445dcb2" class="outline-2"> +<h2 id="org445dcb2">Turtl</h2> +<div class="outline-text-2" id="text-org445dcb2"> <p> A system for privately creating and sharing notes and images, similar to Evernote but without the spying. </p> @@ -561,18 +573,18 @@ A system for privately creating and sharing notes and images, similar to Evernot </p> </div> </div> -<div id="outline-container-org87a048b" class="outline-2"> -<h2 id="org87a048b">Vim</h2> -<div class="outline-text-2" id="text-org87a048b"> +<div id="outline-container-org15fb14c" class="outline-2"> +<h2 id="org15fb14c">Vim</h2> +<div class="outline-text-2" id="text-org15fb14c"> <p> If you use the Mutt client to read your email then this will set it up to use vim for composing new mail. </p> </div> </div> -<div id="outline-container-orgf4dbf6f" class="outline-2"> -<h2 id="orgf4dbf6f">XMPP</h2> -<div class="outline-text-2" id="text-orgf4dbf6f"> +<div id="outline-container-org453cb99" class="outline-2"> +<h2 id="org453cb99">XMPP</h2> +<div class="outline-text-2" id="text-org453cb99"> <p> 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 <i>client state notification</i> to save battery power on your mobile devices, support for seamless roaming between networks and <i>message carbons</i> so that you can receive the same messages while being simultaneously logged in to your account on more than one device. </p> -- GitLab