new contribution - privatesimplex
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 180 KiB |
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 90 KiB |
|
@ -76,14 +76,14 @@
|
|||
<h2>The Nihilism Blog Organisation</h2>
|
||||
<p>First, look at all the blogposts that are yet to be completed from the <a href="../index.html">opsec index page</a> to see if there are some you'd like to do:</p>
|
||||
<img src="1.png" class="imgRz">
|
||||
<p>Each tutorial (even if completed) has it's own assigned issue on <a href="https://git.nowhere.moe/nihilist/blog-contributions/issues">gitea</a>:</p>
|
||||
<p>Each tutorial (even if completed) has it's own assigned issue on <a href="http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/blog-contributions/issues">gitea</a>:</p>
|
||||
<img src="1.5.png" class="imgRz">
|
||||
<p>You can pick one that you'd like to do, if you see one that has a red cross you can click on it, it will redirect you to it's assigned gitea issue (example: <a href="https://git.nowhere.moe/nihilist/blog-contributions/issues/61">Easy Private Chats - SimpleX</a> you are free to brainstorm it further like so:</p>
|
||||
<p>You can pick one that you'd like to do, if you see one that has a red cross you can click on it, it will redirect you to it's assigned gitea issue (example: <a href="http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/blog-contributions/issues/61">Easy Private Chats - SimpleX</a> you are free to brainstorm it further like so:</p>
|
||||
<img src="2.png" class="imgRz">
|
||||
<p>The idea being that each issue needs to have a clear todolist to bring clarity on what needs to be done in it. <b> Please check if the tutorial is already assigned to someone already or not:</b></p>
|
||||
<img src="3.png" class="imgRz">
|
||||
<p>At first, I am assigning only <b>one contributor per tutorial</b>, and only <b>one tutorial per contributor</b> at a time, with a <b>default deadline of 1 month</b>. to complete the assigned tutorial. (if you want to extend the deadline, you'll have to contact me first).</p>
|
||||
<p>In short, please <b>choose a tutorial that is neither done, nor assigned yet</b>, you can check the status of each tutorial on the project board <a href="https://git.nowhere.moe/nihilist/blog-contributions/projects/1">here</a>:</p>
|
||||
<p>In short, please <b>choose a tutorial that is neither done, nor assigned yet</b>, you can check the status of each tutorial on the project board <a href="http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/blog-contributions/projects/1">here</a>:</p>
|
||||
<img src="4.png" class="imgRz">
|
||||
<p>The list of tutorials that are not assigned yet are in the second column, once you have chosen one just ping me on <a href="https://simplex.chat/contact#/?v=2-5&smp=smp%3A%2F%2F1OwYGt-yqOfe2IyVHhxz3ohqo3aCCMjtB-8wn4X_aoY%3D%40smp11.simplex.im%2FsM96T2YMg4As7FiVoUVEttBgZQVPxWnb%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAsKONXcyHAFEd79i13QZf8vDRUU5dVgQKQqUy_0S7ay4%253D%26srv%3D6ioorbm6i3yxmuoezrhjk6f6qgkc4syabh7m3so74xunb5nzr4pwgfqd.onion">SimpleX</a> or in the <a href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FL5jrGV2L_Bb20Oj0aE4Gn-m5AHet9XdpYDotiqpcpGc%3D%40nowhere.moe%2FH4g7zPbitSLV5tDQ51Yz-R6RgOkMEeCc%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAkts5T5AMxHGrZCCg12aeKxWcpXaxbB_XqjrXmcFYlDQ%253D&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22c3Y-iDaoDCFm6RhptSDOaw%3D%3D%22%7D">Opsec SimpleX group chat</a>.</p>
|
||||
<p>You can also submit a suggestion to me directly if you think this blog is missing something crucial, such as a brand new blogpost idea <b>(although make sure it remains on topic for Privacy / Anonymity / Deniability) i am NOT looking for regular Sysadmin tutorials here.</b> </p>
|
||||
|
@ -103,11 +103,12 @@
|
|||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<h2>How to contribute new tutorials</h2>
|
||||
<p>Now you first need to sign up on gitea, if you want to maintain your anonymity feel free to get yourself a mailbox anonymously such as signing up on <a href="https://account.proton.me/mail/signup">protonmail</a> using the tor browser. and then use that email to sign up onto <a href="https://git.nowhere.moe/user/sign_up">gitea</a> aswell:</p>
|
||||
<img src="6.png" class="imgRz">
|
||||
<!--<p>Now you first need to sign up on gitea, if you want to maintain your anonymity feel free to get yourself a mailbox anonymously such as signing up on <a href="https://account.proton.me/mail/signup">protonmail</a> using the tor browser. and then use that email to sign up onto <a href="http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/user/sign_up">gitea</a> aswell. If you don't want to do either of those things, just <a href="https://simplex.chat/contact#/?v=2-5&smp=smp%3A%2F%2F1OwYGt-yqOfe2IyVHhxz3ohqo3aCCMjtB-8wn4X_aoY%3D%40smp11.simplex.im%2FsM96T2YMg4As7FiVoUVEttBgZQVPxWnb%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAsKONXcyHAFEd79i13QZf8vDRUU5dVgQKQqUy_0S7ay4%253D%26srv%3D6ioorbm6i3yxmuoezrhjk6f6qgkc4syabh7m3so74xunb5nzr4pwgfqd.onion">ping me directly on SimpleX</a> so that i create your account manually.</p>-->
|
||||
<p>Now you first need to sign up on gitea, just <a href="https://simplex.chat/contact#/?v=2-5&smp=smp%3A%2F%2F1OwYGt-yqOfe2IyVHhxz3ohqo3aCCMjtB-8wn4X_aoY%3D%40smp11.simplex.im%2FsM96T2YMg4As7FiVoUVEttBgZQVPxWnb%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAsKONXcyHAFEd79i13QZf8vDRUU5dVgQKQqUy_0S7ay4%253D%26srv%3D6ioorbm6i3yxmuoezrhjk6f6qgkc4syabh7m3so74xunb5nzr4pwgfqd.onion">ping me directly on SimpleX</a> so that i create your account manually.</p>
|
||||
<!--<img src="6.png" class="imgRz">
|
||||
<img src="6.5.png" class="imgRz">
|
||||
<img src="7.png" class="imgRz">
|
||||
<img src="8.png" class="imgRz">
|
||||
<img src="8.png" class="imgRz">-->
|
||||
<p>From there, you can fork the repository, from your new account:</p>
|
||||
<img src="9.png" class="imgRz">
|
||||
<p>You can leave everything as default as shown below: </p>
|
||||
|
@ -115,7 +116,10 @@
|
|||
<p>Now from there you continue from the commandline, do a git clone the repository you just forked, and do the edits you need to do:</p>
|
||||
<pre><code class="nim">
|
||||
[ mainpc ] [ /dev/pts/18 ] [~/Documents]
|
||||
→ git clone https://git.nowhere.moe/6dv9lk1pbaflulau/blog-contributions
|
||||
→ apt install git tor torsocks -y
|
||||
|
||||
[ mainpc ] [ /dev/pts/18 ] [~/Documents]
|
||||
→ torsocks git clone http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/6dv9lk1pbaflulau/blog-contributions
|
||||
Cloning into 'blog-contributions'...
|
||||
remote: Enumerating objects: 3400, done.
|
||||
remote: Counting objects: 100% (3400/3400), done.
|
||||
|
@ -217,7 +221,7 @@ draw.io/now 24.7.17 amd64 [installed,local]
|
|||
</pre></code>
|
||||
<p>Preferably copy paste the command outputs into the pre code blocks, so we i can save on storage space as images take alot more space than regular text.</p>
|
||||
<img src="13.png" class="imgRz">
|
||||
<p>Then once your tutorial is finished, don't forget to edit the footer to contain your contact details, your links if you have any, and your monero donation address.</p>
|
||||
<p>Then once your tutorial is finished, don't forget to edit the footer to contain your contact details, your links if you have any, <b>and your monero donation address (which is important as i use that address to pay you for your contribution)</b>.</p>
|
||||
<p>Now your tutorial is ready to be sent over for review. So now you need to git push it to your forked repository like so:</p>
|
||||
<pre><code class="nim">
|
||||
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
|
||||
|
@ -249,8 +253,8 @@ ESC :wq
|
|||
|
||||
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
|
||||
→ git push
|
||||
Username for 'https://git.nowhere.moe': 6dv9lk1pbaflulau
|
||||
Password for 'https://6dv9lk1pbaflulau@git.nowhere.moe':
|
||||
Username for 'http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion': 6dv9lk1pbaflulau
|
||||
Password for 'https://6dv9lk1pbaflulau@git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion':
|
||||
Enumerating objects: 7, done.
|
||||
Counting objects: 100% (7/7), done.
|
||||
Delta compression using up to 4 threads
|
||||
|
@ -259,15 +263,15 @@ Writing objects: 100% (4/4), 388 bytes | 388.00 KiB/s, done.
|
|||
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
|
||||
remote:
|
||||
remote: Create a new pull request for '6dv9lk1pbaflulau:main':
|
||||
remote: https://git.nowhere.moe/nihilist/blog-contributions/compare/main...6dv9lk1pbaflulau:main
|
||||
remote: http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/blog-contributions/compare/main...6dv9lk1pbaflulau:main
|
||||
remote:
|
||||
remote: . Processing 1 references
|
||||
remote: Processed 1 references in total
|
||||
To https://git.nowhere.moe/6dv9lk1pbaflulau/blog-contributions
|
||||
To http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/6dv9lk1pbaflulau/blog-contributions
|
||||
7c759d3..7067b5c main -> main
|
||||
|
||||
</pre></code>
|
||||
<p>Now you have pushed your changes to your <a href="https://git.nowhere.moe/6dv9lk1pbaflulau/blog-contributions">forked respository</a>, from there you can make a Pull request (asking me to pull in your changes, to the <a href="https://git.nowhere.moe/nihilist/blog-contributions">main repository</a>) as follows:</p>
|
||||
<p>Now you have pushed your changes to your <a href="http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/6dv9lk1pbaflulau/blog-contributions">forked respository</a>, from there you can make a Pull request (asking me to pull in your changes, to the <a href="http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/blog-contributions">main repository</a>) as follows:</p>
|
||||
<img src="14.png" class="imgRz">
|
||||
<img src="15.png" class="imgRz">
|
||||
<img src="16.png" class="imgRz">
|
||||
|
@ -300,9 +304,9 @@ ESC :wq
|
|||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
|
||||
→ git push
|
||||
Username for 'https://git.nowhere.moe': 6dv9lk1pbaflulau
|
||||
Password for 'https://6dv9lk1pbaflulau@git.nowhere.moe':
|
||||
→ torsocks git push
|
||||
Username for 'http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion': 6dv9lk1pbaflulau
|
||||
Password for 'https://6dv9lk1pbaflulau@git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion':
|
||||
Enumerating objects: 9, done.
|
||||
Counting objects: 100% (9/9), done.
|
||||
Delta compression using up to 4 threads
|
||||
|
@ -318,126 +322,6 @@ Writing objects: 100% (5/5), 432 bytes | 432.00 KiB/s, done.
|
|||
</div><!-- /row -->
|
||||
</div> <!-- /container -->
|
||||
</div><!-- /white -->
|
||||
<!-- +++++ Footer Section +++++ --> <!-- +++++ Second Post +++++ -->
|
||||
<div id="anon2">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<h2>You can also host the blog yourself!</h2>
|
||||
<p>As you may have noticed, the entire blog is Public Domain (Creative Commons Zero license), which means that you can not only save the files for yourself, but you can also run it under your own clearnet or onion domain.</p>
|
||||
<p>To do so you can just git clone it on a VPS like so :</p>
|
||||
<pre><code class="nim">
|
||||
[ Datura ] [ /dev/pts/0 ] [~]
|
||||
→ cd /srv
|
||||
|
||||
[ Datura ] [ /dev/pts/0 ] [/srv]
|
||||
→ git clone https://git.nowhere.moe/nihilist/blog-contributions blog
|
||||
|
||||
</pre></code>
|
||||
<p>And then using nginx you can make it publicly accessible over clearnet, or over Tor. Feel free to reuse my nginx config if you want to host it, just change the domains to be your instead.</p>
|
||||
<pre><code class="nim">
|
||||
[ Datura ] [ /dev/pts/0 ] [/srv]
|
||||
→ cat /etc/nginx/sites-enabled/blog.nowhere.moe.conf
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name blog.nihilism.network;
|
||||
return 301 https://blog.nowhere.moe$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 http2 ssl;
|
||||
listen [::]:443 http2 ssl;
|
||||
server_name blog.nihilism.network;
|
||||
ssl_certificate /root/.acme.sh/blog.nihilism.network/fullchain.cer;
|
||||
ssl_certificate_key /root/.acme.sh/blog.nihilism.network/blog.nihilism.network.key;
|
||||
return 301 https://blog.nowhere.moe$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name blog.nowhere.moe;
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
######## TOR CHANGES ########
|
||||
listen 4443;
|
||||
listen [::]:4443;
|
||||
server_name blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion;
|
||||
add_header Onion-Location "http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion$request_uri" always;
|
||||
######## TOR CHANGES ########
|
||||
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
server_name blog.nowhere.moe;
|
||||
########################################## HARDENING SSL #############################################
|
||||
ssl_certificate /root/.acme.sh/blog.nowhere.moe/fullchain.cer;
|
||||
ssl_certificate_key /root/.acme.sh/blog.nowhere.moe/blog.nowhere.moe.key;
|
||||
ssl_dhparam /root/.acme.sh/dhparam.pem;
|
||||
|
||||
|
||||
# SSL Settings
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
ssl_session_tickets off;
|
||||
ssl_ecdh_curve auto;
|
||||
|
||||
# OCSP stapling
|
||||
ssl_stapling on;
|
||||
ssl_stapling_verify on;
|
||||
ssl_trusted_certificate /root/.acme.sh/blog.nowhere.moe/fullchain.cer;
|
||||
resolver 1.1.1.1 208.67.222.222;
|
||||
|
||||
add_header Strict-Transport-Security "max-age=63072000" always;
|
||||
|
||||
|
||||
|
||||
|
||||
access_log off;
|
||||
error_log off;
|
||||
###################################END OF HARDENING SSL###########################################
|
||||
|
||||
|
||||
|
||||
root /srv/blog/;
|
||||
rewrite ^/servers/anon.html /opsec/index.html permanent;
|
||||
rewrite ^/servers/(.*)$ /opsec/$1 permanent;
|
||||
index index.html;
|
||||
}
|
||||
</pre></code>
|
||||
<p>Then you can check if the nginx configuration is correct like so:</p>
|
||||
<pre><code class="nim">
|
||||
[ Datura ] [ /dev/pts/0 ] [/srv]
|
||||
→ nginx -t
|
||||
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
|
||||
nginx: configuration file /etc/nginx/nginx.conf test is successful
|
||||
|
||||
[ Datura ] [ /dev/pts/0 ] [/srv]
|
||||
→ systemctl restart nginx
|
||||
|
||||
</pre></code>
|
||||
<img src="29.png" class="imgRz">
|
||||
<p> Now to make sure it remains updated on a hourly basis, you can have the following cronjob:</p>
|
||||
<pre><code class="nim">
|
||||
[ Datura ] [ /dev/pts/0 ] [/srv]
|
||||
→ crontab -e
|
||||
|
||||
0 * * * git -C /srv/blog pull
|
||||
|
||||
</pre></code>
|
||||
<p>And that's it! you're now helping me educate people on what technology can do to enhance their lives :)</p>
|
||||
|
||||
</div>
|
||||
</div><!-- /row -->
|
||||
</div> <!-- /container -->
|
||||
</div><!-- /white -->
|
||||
<div id="anonb">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
|
|
@ -110,7 +110,7 @@
|
|||
<li><a href="linux/index.html">✅ How to have Privacy on your Computer (Linux) ⭐</a></li>
|
||||
<li><a href="graphene/index.html">✅ How to have Privacy on your Phone (GrapheneOS)</a></li>
|
||||
<li><a href="https://git.nowhere.moe/nihilist/blog-contributions/issues/161">❌ How to have Privacy on your Router (Opnsense)</a></li>
|
||||
<li><a href="https://git.nowhere.moe/nihilist/blog-contributions/issues/61">❌ Easy Private Chats - SimpleX</a></li>
|
||||
<li><a href="privatesimplex/index.html">✅ Easy Private Chats - SimpleX</a></li>
|
||||
</ol></br>
|
||||
|
||||
|
||||
|
|
BIN
opsec/privatesimplex/0.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
opsec/privatesimplex/1.png
Normal file
After Width: | Height: | Size: 312 KiB |
BIN
opsec/privatesimplex/10.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
opsec/privatesimplex/11.png
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
opsec/privatesimplex/12.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
opsec/privatesimplex/13.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
opsec/privatesimplex/14.png
Normal file
After Width: | Height: | Size: 242 KiB |
BIN
opsec/privatesimplex/15.png
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
opsec/privatesimplex/16.png
Normal file
After Width: | Height: | Size: 214 KiB |
BIN
opsec/privatesimplex/2.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
opsec/privatesimplex/3.png
Normal file
After Width: | Height: | Size: 114 KiB |
BIN
opsec/privatesimplex/4.png
Normal file
After Width: | Height: | Size: 241 KiB |
BIN
opsec/privatesimplex/5.png
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
opsec/privatesimplex/6.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
opsec/privatesimplex/7.png
Normal file
After Width: | Height: | Size: 127 KiB |
BIN
opsec/privatesimplex/8.png
Normal file
After Width: | Height: | Size: 116 KiB |
BIN
opsec/privatesimplex/9.png
Normal file
After Width: | Height: | Size: 45 KiB |
503
opsec/privatesimplex/index.html
Normal file
|
@ -0,0 +1,503 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="shortcut icon" href="../../../../../../assets/img/favicon.png">
|
||||
|
||||
<title>Easy Private Chats - SimpleX</title>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="../../assets/css/bootstrap.css" rel="stylesheet">
|
||||
<link href="../../assets/css/xt256.css" rel="stylesheet">
|
||||
|
||||
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="../../assets/css/main.css" rel="stylesheet">
|
||||
|
||||
|
||||
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Static navbar -->
|
||||
<div class="navbar navbar-inverse-anon navbar-static-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand-anon" href="\index.html">The Nihilism Blog</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
|
||||
<li><a href="/about.html">About</a></li>
|
||||
<li><a href="/blog.html">Categories</a></li>
|
||||
<li><a href="https://blog.nowhere.moe/donate.html">Donate</a></li>
|
||||
<li><a href="/contact.html">Contact</a></li>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- +++++ Posts Lists +++++ -->
|
||||
<!-- +++++ First Post +++++ -->
|
||||
<div id="anon2">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<a href="../index.html">Previous Page</a></br></br><p><img src="../../assets/img/user.png" width="50px" height="50px"> <ba>XMRonly - 30 / 11 / 2024</ba></p>
|
||||
<h1>Easy Private Chats - SimpleX</h1>
|
||||
<img src="0.png" style="width:100px">
|
||||
<p> </p>
|
||||
|
||||
</div>
|
||||
</div><!-- /row -->
|
||||
</div> <!-- /container -->
|
||||
</div><!-- /grey -->
|
||||
|
||||
<!-- +++++ Second Post +++++ -->
|
||||
<div id="anon3">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<h2><b>Introduction</b></h2>
|
||||
<p>
|
||||
Online communication is one of the most ubiquitous activities on all of the internet. From newsletters, corporate emails and even down to instant messaging with friends, its spread cannot be denied. With such wide reach, it would seem very important to protect these communication channels, yet this is almost an after-thought for most mainstream messengers. Platforms with millions of users market their services with the latest buzz words yet close-source their protocols leaving users with a "trust me bro". With so many options to choose from how can we best decide which app to use? In this article we'll compare a few options (Telegram, Signal and SimpleX) to see how their technical details stack up and determine which is best for easy private chats.
|
||||
</p>
|
||||
|
||||
</code></pre>
|
||||
</div>
|
||||
</div><!-- /row -->
|
||||
</div> <!-- /container -->
|
||||
</div><!-- /white -->
|
||||
|
||||
<div id="anon2">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<h2><b>Overview of Telegram, Signal and SimpleX</b></h2> </br> </br>
|
||||
<p>
|
||||
Telegram is a very popular messaging app that boasts close to <a href=https://www.statista.com/statistics/258749/most-popular-global-mobile-messenger-apps/ target=_blank>1 billion</a> active users worldwide. With support for massive chatrooms, Telegram is almost more akin to social media than to a traditional messaging app. Many companies offer news, updates, and support through their official Telegram channels making it a very convenient place for users to stay up to date with various interests. Due to its strong stance on free speech, Telegram built a reputation for not cooperating with law enforcement investigations. However, after the arrest of CEO Pavel Durov in part relating to Telegram's refusal hand over user data in lawful orders, Telegram changed their <a href=https://files.catbox.moe/988lhl.png target=_blank>privacy policy</a> to say they may share user phone numbers and IP addresses and indeed have <a href=https://www.404media.co/telegram-confirms-it-gave-u-s-user-data-to-the-cops/ target=_blank>done so</a>. Telegram supports E2EE but this is not enabled by default, which is probably its most significant drawback.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Signal is a champion for user freedom and its state-of-the-art security is the foundation upon which other chat applications are built. Signal is very intuitive to use, supporting all of the usual text/image/voice/video/etc features that users expect. Unlike Telegram, Signal is E2EE by default and the only information it knows about users are their phone number and time of registration. Numerous <a href=https://signal.org/bigbrother/ target=_blank>court orders</a> have solidified how Signal has nothing else to hand over to law enforcement. The phone number requirement for SMS verification, while concretely a drawback if not <a href=https://blog.nowhere.moe/opsec/anonsms/index.html target=_blank>acquired anonymously</a>, is an intentional decision for Signal's target audience (normies) as everyday users can be notified if other stored contacts join Signal.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
SimpleX is a relative newcomer on the scene and has a unique angle in that there are no user identifies of any kind. As such, users can create unlimited profiles (and even hidden profiles to improve plausible deniability) and connect with others anonymously. Unlike Signal, SimpleX supports native onion routing as well as the ability to self-host servers. Because of its default E2EE, servers are not able to see message contents and self-hosted servers can be shared with others, contributing to decentralization and thus making SimpleX more resilient. SimpleX's founder, in an <a href=https://www.wired.com/story/neo-nazis-flee-telegram-encrypted-app-simplex/ target=_blank>interview</a>, implied that SimpleX sees no information about its users but since it is new, it remains to be seen how they would respond to actual court orders. SimpleX has received some criticism for its reliance on Venture Capital to establish itself while it works to develop a business model.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
A comparison from <a href=https://privacyspreadsheet.com/messaging-apps target=_blank>privacyspreadsheet.com</a> has a breakdown of all the technical details.
|
||||
<img src="1.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
When selecting a messaging app, certain <a href=https://blog.nowhere.moe/opsec/anonsimplex/index.html target=_blank>OPSEC criteria</a> should be considered.
|
||||
<br>
|
||||
<br>
|
||||
Privacy:
|
||||
<br>
|
||||
   1. The application is free and open source (FOSS).
|
||||
<br>
|
||||
   2. The application is end-to-end-encrypted by default (E2EE).
|
||||
<br>
|
||||
   3. The application allows self-hosting our own servers (Decentralization).
|
||||
<br>
|
||||
Anonymity:
|
||||
<br>
|
||||
   1. The application supports Tor servers out of the box (Onion Routing).
|
||||
<br>
|
||||
   2. The application requires no sign-up information (Emails, Usernames, Phone Numbers).
|
||||
<br>
|
||||
   3. The application allows joining chatrooms without revealing our identity (Incognito Mode).
|
||||
<br>
|
||||
Deniability:
|
||||
<br>
|
||||
   1. The application allows disappearing messages (Plausible Deniability).
|
||||
<br>
|
||||
   2. The application allows creation/deletion of multiple profiles (Plausible Deniability).
|
||||
<br>
|
||||
   3. The application allows hidden profiles (Plausible Deniability).
|
||||
<br>
|
||||
<br>
|
||||
From the above comparison, we can see that only SimpleX meets all of the criteria. While we only focus on Privacy in this article, it doesn't hurt to have the other benefits of Anonymity and Plausible Deniability.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div><!-- /row -->
|
||||
</div> <!-- /container -->
|
||||
</div><!-- /white -->
|
||||
|
||||
|
||||
<!-- +++++ Fourth Post +++++ -->
|
||||
<div id="anon1">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<h2><b>Using SimpleX</b></h2> </br>
|
||||
|
||||
<p>
|
||||
To start using SimpleX, we will start by installing it from <a href=https://f-droid.org/packages/chat.simplex.app/ target=_blank>F-Droid</a>. Search for the app and then click Install. Navigate through the setup process, choose a username and click Create your profile.
|
||||
<img src="2.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
With your profile complete, it's time to create a private group chat. Click on the pencil icon at the bottom of the screen and select Create group. Give your group a name and click Create group. Finally, skip inviting members for now.
|
||||
<img src="3.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Click on the group name to see some options. Click on Create group link. Finally, share the group link with your friends out-of-band.
|
||||
<img src="4.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Once your friends connect, you can start messaging.
|
||||
<img src="5.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Out of the box, SimpleX works perfectly fine. However, more advanced users may wish to tweak a few settings or self-host their own servers.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div><!-- /row -->
|
||||
</div> <!-- /container -->
|
||||
</div><!-- /white -->
|
||||
|
||||
<!-- +++++ Fifth Post +++++ -->
|
||||
<div id="anon2">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<h2><b>Self-Hosting SimpleX Servers</b></h2> </br> </br>
|
||||
|
||||
<p>
|
||||
<h3>Requirements</h3>
|
||||
|
||||
<p>
|
||||
   1. A VPS running Debian 12 (or Ubuntu 22.04)
|
||||
<br>
|
||||
   2. A domain name (or subdomain)
|
||||
</p>
|
||||
|
||||
<p>
|
||||
To start, we will need a domain name. A subdomain such as a free one obtained from <b>https://freedns.afraid.org</b> will also work. Create A record entries for smp.yourdomain.tld and xftp.yourdomain.tld and point them at the IP address of your VPS.
|
||||
<img src="6.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We will SSH into our VPS and set up our environment.
|
||||
|
||||
<pre><code class="nim">
|
||||
~ ❯ torsocks ssh root@145.223.79.150
|
||||
The authenticity of host '145.223.79.150 (145.223.79.150)' can't be established.
|
||||
ED25519 key fingerprint is SHA256:AGZHyLpidaSu+ZE3cLFZ3KWxQq3Mx9rDH+HLVNF/okc.
|
||||
This key is not known by any other names.
|
||||
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
|
||||
Warning: Permanently added '145.223.79.150' (ED25519) to the list of known hosts.
|
||||
root@145.223.79.150's password:
|
||||
Linux srv636770 6.1.0-26-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.112-1 (2024-09-30) x86_64
|
||||
|
||||
The programs included with the Debian GNU/Linux system are free software;
|
||||
the exact distribution terms for each program are described in the
|
||||
individual files in /usr/share/doc/*/copyright.
|
||||
|
||||
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
|
||||
permitted by applicable law.
|
||||
Last login: Wed Nov 20 21:05:02 2024 from 185.220.101.103
|
||||
root@srv636770:~#
|
||||
|
||||
</code></pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Once connected, we will follow the <a href=https://docs.docker.com/engine/install/debian/ target=_blank>official instructions</a> to install Docker. Run:
|
||||
<pre><code class="nim">
|
||||
# Add Docker's official GPG key:
|
||||
apt update
|
||||
apt install -y ca-certificates curl gnupg openssl vim
|
||||
install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
|
||||
# Add the repository to Apt sources:
|
||||
echo \
|
||||
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
||||
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
|
||||
tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
apt update
|
||||
|
||||
</code></pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
With the Docker apt repositories out of the way, install the Docker packages:
|
||||
<pre><code class="nim">
|
||||
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
</code></pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
OPTIONAL: You can test everything is working up to this point by a deploying a test container to see some output. Run:
|
||||
<pre><code class="nim">
|
||||
docker run hello-world
|
||||
|
||||
</code></pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We will now set up a docker-compose.yml file with all the build instructions:
|
||||
<pre><code class="nim">
|
||||
vim docker-compose.yml
|
||||
|
||||
</code></pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Copy/paste the following and change the <b>ADDR</b> fields to your domain.
|
||||
<br>
|
||||
HINT: It's <b>p</b> to paste in vim, then <b>ESC :wq</b> to write changes and quit the file.
|
||||
<pre><code class="nim">
|
||||
networks:
|
||||
simplex:
|
||||
|
||||
services:
|
||||
simplex-smp-server:
|
||||
image: simplexchat/smp-server:v6.0.6
|
||||
container_name: simplex-smp
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "5223:5223"
|
||||
volumes:
|
||||
- ./simplex/smp/config:/etc/opt/simplex:Z
|
||||
- ./simplex/smp/logs:/var/opt/simplex:Z
|
||||
environment:
|
||||
- ADDR=smp.xmronly.us.to
|
||||
# - PASS=${SIMPLEX_PASSWORD} #for non public servers
|
||||
networks:
|
||||
- simplex
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
cap_drop:
|
||||
- ALL
|
||||
|
||||
simplex-xftp-server:
|
||||
image: simplexchat/xftp-server:v6.1.3
|
||||
container_name: simplex-xftp
|
||||
ports:
|
||||
- "443:443"
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./simplex/xftp/config:/etc/opt/simplex-xftp:Z
|
||||
- ./simplex/xftp/logs:/var/opt/simplex-xftp:Z
|
||||
- ./simplex/xftp/files:/srv/xftp:X
|
||||
environment:
|
||||
- ADDR=xftp.xmronly.us.to
|
||||
- QUOTA=10gb #change to set your own quota
|
||||
networks:
|
||||
- simplex
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
cap_drop:
|
||||
- ALL
|
||||
|
||||
</code></pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
A note about versioning: at the time of writing, there was an open <a href=https://github.com/simplex-chat/simplexmq/issues/1373 target=_blank>issue</a> with the "latest" (v6.1.3) tag and HTTPS credentials for the SMP server. The most recent working version for the SMP server (v6.0.6) was definitively tagged here and the "latest" version for XFTP server (v6.1.3) was also definitively tagged to ensure working builds with the presented instructions. For reference, the "latest" version used in the <a href=https://forum.hackliberty.org/t/simplex-server-docker-installation-guide-smp-xftp/140 target=_blank>HackLiberty</a> documentation for June 1st, 2024 is v5.8.0-beta.6 which is now several security fixes behind.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Everything is now ready to be deployed. Run:
|
||||
<pre><code class="nim">
|
||||
docker compose up -d
|
||||
|
||||
</code></pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Run the following command to see the SMP and XFTP server addresses:
|
||||
<pre><code class="nim">
|
||||
echo "smp://$(<simplex/smp/config/fingerprint)@$(awk -F '=' '/ADDR=/ {print $2}' docker-compose.yml | head -1)" && \
|
||||
echo "xftp://$(<simplex/xftp/config/fingerprint)@$(awk -F '=' '/ADDR=/ {print $2}' docker-compose.yml | tail -1)"
|
||||
|
||||
</code></pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
You should see output similar to this and just like that your self-hosted SimpleX servers are now ready!
|
||||
<pre><code class="nim">
|
||||
smp://IB2NJl4Pv3OSLUmnvipKkCuJKGkEDfgUNkYFiKIH_GY=@smp.xmronly.us.to
|
||||
xftp://t_H_I_h5Iz7X-ChxA3nJeyw0s_2PJIFkfSK7Ng6UulU=@xftp.xmronly.us.to
|
||||
|
||||
</code></pre>
|
||||
</p>
|
||||
|
||||
|
||||
</div>
|
||||
</div><!-- /row -->
|
||||
</div> <!-- /container -->
|
||||
</div><!-- /white -->
|
||||
|
||||
<!-- +++++ Sixth Post +++++ -->
|
||||
<div id="anon3">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<h2><b>Adding Your Self-Hosted SimpleX Servers</b></h2> </br> </br>
|
||||
|
||||
<p>
|
||||
To add the newly created self-hosted SimpleX servers to your client, click on your profile on the top left, followed by Settings. Click on Network & servers. We will modify both the Message servers (SMP) and the Media & file servers (XFTP).
|
||||
<img src="7.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Click on <b>Message servers</b> and scroll down to Add server. Select Enter server manually. Paste in your SMP server address from above, click Test server and receive a green check mark. Finally, tick Use for new connections.
|
||||
<img src="8.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
With our self-hosted SMP server set, it's time to remove the default SimpleX servers. Click on each of the presets, then click Delete server.
|
||||
<img src="9.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
With only our self-hosted SMP server remaining, click the back arrow, then save changes.
|
||||
<img src="10.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We will now repeat the process for <b>Media & file servers</b>. Scroll down to Add server. Select Enter server manually. Paste in your XFTP server address from above, click Test server and receive a green check mark. Finally, tick Use for new connections.
|
||||
<img src="11.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
With our self-hosted XFTP server set, it's time to remove the default SimpleX servers. Click on each of the presets, then click Delete server.
|
||||
<img src="12.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
With only our self-hosted XFTP server remaining, click the back arrow, then save changes.
|
||||
<img src="13.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
It is possible to self-host onion servers as well, but since this article is focusing on privacy and not anonymity, that part of the setup has been omitted.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div><!-- /row -->
|
||||
</div> <!-- /container -->
|
||||
</div><!-- /white -->
|
||||
|
||||
|
||||
<!-- +++++ Seventh Post +++++ -->
|
||||
<div id="anon2">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<h2><b>Using Your Self-Hosted SimpleX Servers</b></h2> </br> </br>
|
||||
|
||||
<p>
|
||||
All new connections will automatically use your self-hosted SimpleX servers, but what about already existing connections that were made using the default Simplex servers? It turns out existing connections do not automatically update, so we will need to manually change them. Click on the group name and scroll down to the members section. Click on a group member and scroll down to servers. We can see that Larry is using the default SimpleX servers. Click on Change receiving address and confirm the change.
|
||||
<img src="14.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Repeat the process for Sam and you have now configured the group chat to use your self-hosted servers!
|
||||
<img src="15.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
You can confirm this by clicking on the group chat name and clicking on any of the members.
|
||||
<img src="16.png" class="imgRz">
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div><!-- /row -->
|
||||
</div> <!-- /container -->
|
||||
</div><!-- /white -->
|
||||
|
||||
|
||||
|
||||
<!-- +++++ Eighth Post +++++ -->
|
||||
<div id="anon3">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2">
|
||||
<h2><b>Conclusion</b></h2> </br> </br>
|
||||
|
||||
<p>
|
||||
In this article we saw how SimpleX compares to a few other popular instant messengers and some of its unique advantages. We saw how to easily install and start using it, and going the extra mile, how to self-host and use your own servers. With that knowledge in hand, you can easily make all your chats private!
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div><!-- /row -->
|
||||
</div> <!-- /container -->
|
||||
</div><!-- /white -->
|
||||
|
||||
<!-- +++++ Footer Section +++++ -->
|
||||
|
||||
<div id="anonb">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<h4>Nihilism</h4>
|
||||
<p>
|
||||
Until there is Nothing left.</p></br></br><p>Creative Commons Zero: <a href="../../../../opsec/runtheblog/index.html">No Rights Reserved</a></br><img src="\CC0.png">
|
||||
|
||||
</p>
|
||||
</div><!-- /col-lg-4 -->
|
||||
|
||||
<div class="col-lg-4">
|
||||
<h4>My Links</h4>
|
||||
<p>
|
||||
|
||||
<a target="_blank" rel="noopener noreferrer" href="http://blog.nowhere.moe/rss/feed.xml">RSS Feed</a><br/><a target="_blank" rel="noopener noreferrer" href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FL5jrGV2L_Bb20Oj0aE4Gn-m5AHet9XdpYDotiqpcpGc%3D%40nowhere.moe%2FH4g7zPbitSLV5tDQ51Yz-R6RgOkMEeCc%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAkts5T5AMxHGrZCCg12aeKxWcpXaxbB_XqjrXmcFYlDQ%253D&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22c3Y-iDaoDCFm6RhptSDOaw%3D%3D%22%7D">SimpleX Chat</a><br/>
|
||||
|
||||
</p>
|
||||
</div><!-- /col-lg-4 -->
|
||||
|
||||
<div class="col-lg-4">
|
||||
<h4 class="readable">About nihilist</h4>
|
||||
<p style="word-wrap: break-word;"><u>Donate XMR:</u>
|
||||
8AUYjhQeG3D5aodJDtqG499N5jXXM71gYKD8LgSsFB9BUV1o7muLv3DXHoydRTK4SZaaUBq4EAUqpZHLrX2VZLH71Jrd9k8
|
||||
</p></br>
|
||||
<p style="word-wrap: break-word;"><u>Donate XMR to the author:</u>
|
||||
8AHNGepbz9844kfCqR4aVTCSyJvEKZhtxdyz6Qn8yhP2gLj5u541BqwXR7VTwYwMqbGc8ZGNj3RWMNQuboxnb1X4HobhSv3</p>
|
||||
<p class="readable"><u>Contact:</u> nihilist@contact.nowhere.moe (<a
|
||||
href="https://nowhere.moe/nihilist.pubkey">PGP</a>)</p>
|
||||
</div><!-- /col-lg-4 -->
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 270 KiB |