blog-contributions/opsec/contribute/index.html
2024-10-06 22:02:32 +02:00

443 lines
20 KiB
HTML

<!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>How to contribute to the Opsec Blog</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="anon3">
<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>nihilist@mainpc - 2024-10-06</ba></p>
<h1>How to contribute to The Nihilism Blog </h1>
<p>In this tutorial we're going to look at how you can contribute to the opsec blog, we'll look into how the work is being organized, and how to contribute via gitea. We'll also look into how you can run the blog yourself since it's entirely public domain (Creative Commons Zero license).</p>
</div>
</div><!-- /row -->
</div> <!-- /container -->
</div><!-- /grey -->
<!-- +++++ Second Post +++++ -->
<div id="anon2">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<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>
<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>
<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>
<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>
<p>If you think one of the existing tutorials is missing something, feel free to criticize them in their assigned issues (ping me when you do so, so i don't miss it):</p>
<img src="5.png" class="imgRz">
<p>After discussing with me what task you want to do, we'll confirm on the price for that tutorial and after i get your confirmation i'll assign it to you, and that's when you can start to work on it.</p>
<p><u>Disclaimer:</u> if you're not used to writing technical stuff, please aim for the tutorials that are labeled as "Simple" and that you actually understand. Don't try to bite more than you can chew, otherwise i might refuse further contributions coming from you. You should be at least familliar with the topic you intend to talk about.</p>
</div>
</div><!-- /row -->
</div> <!-- /container -->
</div><!-- /white -->
<!-- +++++ Footer Section +++++ -->
<!-- +++++ Second Post +++++ -->
<div id="anon3">
<div class="container">
<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">
<img src="6.5.png" class="imgRz">
<img src="7.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>
<img src="10.png" class="imgRz">
<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
Cloning into 'blog-contributions'...
remote: Enumerating objects: 3400, done.
remote: Counting objects: 100% (3400/3400), done.
remote: Compressing objects: 100% (2729/2729), done.
remote: Total 3400 (delta 1588), reused 2109 (delta 609), pack-reused 0 (from 0)
Receiving objects: 100% (3400/3400), 149.35 MiB | 6.82 MiB/s, done.
Resolving deltas: 100% (1588/1588), done.
[ mainpc ] [ /dev/pts/18 ] [~/Documents]
→ cd blog-contributions
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
→ ls
assets index.html opsec productivity pull.sh push.sh pushtoprod.sh README.md
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
→ cd opsec
</pre></code>
<p>now from there you can copy the template tutorial folder called "0_anon" into another folder:</p>
<pre><code class="nim">
[ mainpc ] [ /dev/pts/18 ] [Documents/blog-contributions/opsec]
→ cp -r 0_anon newtutorial
[ mainpc ] [ /dev/pts/18 ] [Documents/blog-contributions/opsec]
→ cd newtutorial
</pre></code>
<p>In it you will find the index.html file that you can edit from the commandline still:</p>
<pre><code class="nim">
[ mainpc ] [ /dev/pts/18 ] [blog-contributions/opsec/newtutorial]
→ pwd
/home/nihilist/Documents/blog-contributions/opsec/newtutorial
[ mainpc ] [ /dev/pts/18 ] [blog-contributions/opsec/newtutorial]
→ ls
index.html
[ mainpc ] [ /dev/pts/18 ] [blog-contributions/opsec/newtutorial]
→ vim index.html
</pre></code>
<p>and you can also view your edits in real time from your browser of choice, just put the complete path to the index.html file to view it in real time, for me it is as follows: <b>/home/nihilist/Documents/blog-contributions/opsec/newtutorial/index.html</b> (just hit F5 to refresh in the browser, everytime you save (:w) in vim)</p>
<img src="11.png" class="imgRz">
<p>Make sure that you follow the quality standard i described <a href="../tutorial/index.html">here</a>: <b>start with the Why, then the What, then the How</b>. to describe how to do things, you can use images like so: </p>
<pre><code class="nim">
<<b></b>img src="12.png" class="imgRz">
</pre></code>
<img src="12.png" class="imgRz">
<p>and if there are any commands to be shown, just copy paste from your terminal directly into the index.html file, into the <b>pre code blocks</b>:</p>
<pre><code class="nim">
<<b></b>pre><<b></b>code class="nim">
[ mainpc ] [ /dev/pts/20 ] [~/Nextcloud/blog]
→ vim index.html
<<b></b>/pre><<b></b>/code>
</pre></code>
<pre><code class="nim">
[ mainpc ] [ /dev/pts/20 ] [~/Nextcloud/blog]
→ vim index.html
</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>Now your tutorial is ready to be sent over for review you. 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]
→ git config --global user.email "6dv9lk1pbaflulau@nowhere.moe"
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
→ git config --global user.name "6dv9lk1pbaflulau"
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
→ git add -A
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
→ git commit
</pre></code>
<pre><code class="nim">
new tutorial contribution
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch main
# Your branch is up to date with 'origin/main'.
#
# Changes to be committed:
# new file: opsec/newtutorial/index.html
# modified: push.sh
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':
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
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:
remote: . Processing 1 references
remote: Processed 1 references in total
To https://git.nowhere.moe/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>
<img src="14.png" class="imgRz">
<img src="15.png" class="imgRz">
<img src="16.png" class="imgRz">
<p>now from there your pull request is created, and i'll review it as soon as i get the time:</p>
<img src="17.png" class="imgRz">
<p>If it's not complete, i'll comment in there asking you to add what's missing, <b>changes that you must actually finish before the deadline.</b> To add further changes simply add more commits to it</p>
<pre><code class="nim">
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
→ vim opsec/newtutorial/index.html
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
→ git add -A
[ mainpc ] [ /dev/pts/18 ] [~/Documents/blog-contributions]
→ git commit
forgot to do this change!
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch main
# Your branch is up to date with 'origin/main'.
#
# Changes to be committed:
# modified: opsec/newtutorial/index.html
ESC :wq
[main eb4b994] forgot to do this change!
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':
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 432 bytes | 432.00 KiB/s, done.
</pre></code>
<img src="18.png" class="imgRz">
<p>Then wait for me to confirm the content is complete, and then i'll accept the pull request and merge it into the main repository.</p>
<img src="19.png" class="imgRz">
</div>
</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">
<div class="col-lg-4">
<h4>Nihilism</h4>
<p>
Until there is Nothing left.</p></br></br><p>Creative Commons Zero: No Rights Reserved</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>About nihilist</h4>
<p style="word-wrap: break-word;"><u>Donate XMR:</u> 8AUYjhQeG3D5aodJDtqG499N5jXXM71gYKD8LgSsFB9BUV1o7muLv3DXHoydRTK4SZaaUBq4EAUqpZHLrX2VZLH71Jrd9k8</p></br><p><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>