summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Smith <Luke Smith>2022-06-15 11:48:06 -0400
committerLuke Smith <Luke Smith>2022-06-15 11:48:06 -0400
commit967594150f011456cde5965d48cbf0e64f39d31e (patch)
treecb7d2196076a93beac7f52d480c1acba8fea6dd2
parent41fdd117773af41fdf35421b8555b4a9843cc26e (diff)
parent2db64d573a2715bae62dd2ed977e8cf3b2cb4af7 (diff)
Merge branch 'master' of github.com:LukeSmithxyz/landchad
-rw-r--r--LICENSE.md24
-rw-r--r--index.html2
-rw-r--r--jitsi.html55
-rw-r--r--pix/radicale.svg10
-rw-r--r--pix/searxng.svg19
-rw-r--r--prosody.html2
-rw-r--r--radicale.html70
-rw-r--r--searxng.html143
8 files changed, 324 insertions, 1 deletions
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..fdddb29
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
diff --git a/index.html b/index.html
index 1206913..abddd3a 100644
--- a/index.html
+++ b/index.html
@@ -77,12 +77,14 @@ img { border: none ;}
<dt><a href="git.html"><img src="pix/git.svg"> git</a></dt><dd>Version control software on your own server</dd>
<dt><a href="cgit.html"><img src="pix/cgit.svg"> Cgit</a></dt><dd>A hyperfast web frontend for git repositories</dd>
<dt><a href="gitea.html"><img src="pix/gitea.svg"> Gitea</a></dt><dd>A fully-featured git and issue tracking site</dd>
+ <dt><a href="radicale.html"><img src="pix/radicale.svg"> Radicale</a></dt><dd>A small but powerful calDav and cardDav server</dd>
<dt><a href="irc.html"><img src="pix/irc.svg"> IRC</a></dt><dd>Installing and managing a classic internet relay chat server</dd>
<dt><a href="rss-bridge.html"> RSS Bridge</a></dt><dd>Creating RSS feeds for social media sites</dd>
<dt><a href="matrix.html"><img src="pix/element.svg" alt="Element logo"> Matrix</a></dt><dd>An easy-to-use, free and federated chat and channel server.</dd>
<dt><a href="calibre.html"><img src="pix/calibre.png"> Calibre</a></dt><dd>A library server</dd>
<dt><a href="i2p.html"><img src="pix/itoopie.svg" alt="Itoopie">I2P</a></dt><dd>Host your site on a private and peer-to-peer internet layer.</dd>
<dt><a href="tor.html"><img src="pix/tor.svg">Tor</a></dt><dd>Host your site on private onion-routing.</dd>
+ <dt><a href="searxng.html"><img src="pix/searxng.svg">SearXNG</a></dt><dd>Setting up a SearXNG metasearch engine.</dd>
</dl>
<h3 id=crypto>Accepting Cryptocurrency Tips</h3>
diff --git a/jitsi.html b/jitsi.html
index 3fd42e0..ad15404 100644
--- a/jitsi.html
+++ b/jitsi.html
@@ -113,6 +113,61 @@ ufw enable</code></pre>
<p>When you create a video chatroom, its address will appear as <code><strong>meet.example.org/yourvideochatname</strong></code> and can be shared as such.</p>
+ <h2>Security</h2>
+
+ <p>
+ By default, anyone who has access to <strong>meet.example.org</strong> will be able to create a chatroom. You probably don't want that, so you'll need to set up some authentication. The simplest option is to handle authentication through the local <a href="./prosody.html">Prosody</a> user database.
+ </p>
+
+ <h3>Prosody configuration</h3>
+ <p>
+ First, we need to enable password authentication in <a href="./prosody.html">Prosody</a>. Edit <code>/etc/prosody/conf.avail/<strong>meet.example.org</strong>.cfg.lua</code>, and locate this block:
+ <pre><code>VirtualHost "<strong>meet.example.org</strong>"
+ authentication = "anonymous"</code></pre>
+ And change the authentication mode from <code>"anonymous"</code> to <code>"internal_hashed"</code>.
+ </p>
+ <p>
+ Then, to enable guests to login and join your chatrooms, add the following block <strong>after</strong> the one you just edited:
+ <pre><code>VirtualHost "guest.<strong>meet.example.org</strong>"
+ authentication = "anonymous"
+ c2s_require_encryption = false</code></pre>
+ </p>
+
+ <h3>Jitsi Meet configuration</h3>
+ <p>
+ Next, in <code>/etc/jitsi/meet/<strong>meet.example.org</strong>-config.js</code>, uncomment the following line:
+ <pre><code>var config = {
+ hosts: {
+ // anonymousdomain: 'guest.jitsi-meet.example.com',
+ },
+}
+</code></pre>
+ And change <code>'guest.jitsi-meet.example.com'</code> to <code>'guest.<strong>meet.example.org</strong>'</code>.
+ </p>
+
+ <h3>Jicofo configuration</h3>
+ <p>
+ Finally, we configure Jicofo to only allow the creation of conferences when the request is coming from an authenticated user. To do so, add the following <code>authentication</code> section to <code>/etc/jitsi/jicofo/jicofo.conf</code>:
+ <pre><code>jicofo {
+ authentication: {
+ enabled: true
+ type: XMPP
+ login-url: <strong>meet.example.org</strong>
+ }</code></pre>
+ </p>
+
+ <h3>Create users in Prosody and restart the services</h3>
+ <p>
+ You now need to register some users in <a href="./prosody.html">Prosody</a>, you can do so manually using <code>prosodyctl</code>:
+ <pre><code>prosodyctl register &ltusername&gt <strong>meet.example.org</strong> &ltpassword&gt</code></pre>
+ </p>
+ <p>
+ Finally, restart <code>prosody</code>, <code>jicofo</code>, and <code>jitsi-videobridge2</code>:
+ <pre><code>systemctl restart prosody
+systemctl restart jicofo
+systemctl restart jitsi-videobridge2</code></pre>
+ </p>
+
<h2>More info</h2>
<p>
diff --git a/pix/radicale.svg b/pix/radicale.svg
new file mode 100644
index 0000000..546d3d1
--- /dev/null
+++ b/pix/radicale.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="200" height="300" xmlns="http://www.w3.org/2000/svg">
+ <path fill="#a40000" d="M 186,188 C 184,98 34,105 47,192 C 59,279 130,296 130,296 C 130,296 189,277 186,188 z" />
+ <path fill="#ffffff" d="M 73,238 C 119,242 140,241 177,222 C 172,270 131,288 131,288 C 131,288 88,276 74,238 z" />
+ <g fill="none" stroke="#4e9a06" stroke-width="15">
+ <path d="M 103,137 C 77,69 13,62 13,62" />
+ <path d="M 105,136 C 105,86 37,20 37,20" />
+ <path d="M 105,135 C 112,73 83,17 83,17" />
+ </g>
+</svg>
diff --git a/pix/searxng.svg b/pix/searxng.svg
new file mode 100644
index 0000000..417e7ed
--- /dev/null
+++ b/pix/searxng.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" id="svg8" version="1.1" viewBox="0 0 92 92" height="92mm" width="92mm">
+ <defs id="defs2"/>
+ <metadata id="metadata5">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g transform="translate(-40.921303,-17.416526)" id="layer1">
+ <circle r="0" style="fill:none;stroke:#000000;stroke-width:12;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" cy="92" cx="75" id="path3713"/>
+ <circle r="30" cy="53.902557" cx="75.921303" id="path834" style="fill:none;fill-opacity:1;stroke:#3050ff;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+ <path d="m 67.514849,37.91524 a 18,18 0 0 1 21.051475,3.312407 18,18 0 0 1 3.137312,21.078282" id="path852" style="fill:none;fill-opacity:1;stroke:#3050ff;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+ <rect transform="rotate(-46.234709)" ry="1.8669105e-13" y="122.08995" x="3.7063529" height="39.963303" width="18.846331" id="rect912" style="opacity:1;fill:#3050ff;fill-opacity:1;stroke:none;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+ </g>
+</svg> \ No newline at end of file
diff --git a/prosody.html b/prosody.html
index e5ca89d..07f42b9 100644
--- a/prosody.html
+++ b/prosody.html
@@ -18,7 +18,7 @@
<p>XMPP is a fantastically simple protocol that's usually used as a messenger.
It's highly extensible,
better than IRC,
- lighter and more decentralized and Matrix
+ lighter and more decentralized than Matrix
and Telegram and normie social media can't hold a candle to it.
</p>
diff --git a/radicale.html b/radicale.html
new file mode 100644
index 0000000..85bbf14
--- /dev/null
+++ b/radicale.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang=en>
+ <head>
+ <title>Setting up Radicale &ndash; LandChad.net</title>
+ <meta charset="utf-8"/>
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel='alternate' type='application/rss+xml' title='Land Chad RSS' href='/rss.xml'>
+ </head>
+<body>
+ <header><h1>Setting up a calDAV server - Radicale</h1></header>
+ <nav></nav>
+ <main>
+ <img class=titleimg src="pix/radicale.svg">
+ <p>Radicale is an open source calDAV server. CalDAV is a widely supported internet standard for calendars, todo-lists and contacts. Hosting your own calDAV server allows sharing calendars between mutliple devices.</p>
+ <p>More information can be found on the projects offical website: <a href="https://radicale.org/3.0.html">radicale.org</a>.</p>
+ <h2>Installing Radicale</h2>
+ <p>Firstly, we have to install radicale on our system, luckily for us radicale is packaged for the most used distros.</p>
+ <pre><code>apt install radicale apache2-utils</code></pre>
+ <p>Next we need to configure Radicale. We configure radicale to be accessible from other machines, how Radicale handles users and where the files should be stored. Open /etc/radicale/config with your favourite editor and add this configuration.</p>
+ <pre><code>[server]
+# Bind all addresses
+hosts = 0.0.0.0:5232, [::]:5232
+
+[auth]
+type = htpasswd
+htpasswd_filename = /etc/radicale/users
+htpasswd_encryption = bcrypt
+
+[storage]
+filesystem_folder = /var/lib/radicale/collections</code></pre>
+
+ <p>As you can see under [auth] we use htpasswd to manage the users. Execute the following command to add a new user to Radicale.</p>
+ <pre><code>htpasswd -c /etc/radicale/users <strong>username</strong></code></pre>
+ <p>As Radicale stands now it is fully functional and after starting it by executing its binary, can be accessed under example.org:5232. But there are two additional things we can do to make using and managing Radicale way easier.</p>
+ <h3>Setting up a Nginx reverse proxy</h3>
+ <p>Because the URL of your Radicale server is an URL you will have to remember and enter it on any device you want to use your calendar on it is advised to set up a reverse proxy.</p>
+ <pre><code>server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ server_name <strong>cal.example.org</strong>;
+ location / {
+ proxy_pass http://localhost:5232/; # The / is important!
+ }
+ # You can also leave these two lines out and use certbot
+ ssl_certificate /etc/ssl/nginx/<strong>cal.example.com</strong>/fullchain.pem;
+ ssl_certificate_key /etc/ssl/nginx/<strong>cal.example.com</strong>/privkey.pem;
+}</code></pre>
+ <h3>Run as a service</h3>
+ <p>Running Radicale as a service makes managing it much easier. Add this config to /etc/systemd/system/radicale.service.</p>
+ <pre><code>[Unit]
+Description=A simple CalDAV (calendar) and CardDAV (contact) server
+
+[Service]
+ExecStart=/usr/bin/env python3 -m radicale
+Restart=on-failure
+
+[Install]
+WantedBy=default.target</code></pre>
+ <p>After creating the config load, start and enable the service with the following commands.</p>
+ <pre><code>systemctl daemon-reload
+systemctl enable --now radicale</code></pre>
+ <h2>Contribution</h2>
+ <li>Author: Jocomol &ndash; <a href="https://jocomol.ch">jocomol.ch</a> -- XMR: <code class=crypto>41kLv68Nk4N3zvTRFYtHZfRRFMgXkxK2FcXDeCSa4yNwBGTBa1WQ8HtXL8cCAcoZ2iSLBCS6HQqdpRSf56ecMBgWTkn2ARt</code>
+ </li>
+ </main>
+ <footer><a href="https://landchad.net">LandChad.net</a></br>Because Everyone should be an Internet LandChad.</br><a href="index.html"><li><img src="pix/chad.gif" alt="chad"></li></a><a href="rss.xml"><li><img src="pix/rss.svg" alt="RSS"></li></a><a href="pix/btc.png"><li><img src="pix/btc.svg" alt="BTC"></li></a><a href="pix/xmr.png"><li><img src="pix/xmr.svg" alt="XMR"></li></a><a href="https://github.com/lukesmithxyz/landchad"><li><img src="pix/git.svg" alt="Github"></li></a></footer>
+</body>
+</html>
diff --git a/searxng.html b/searxng.html
new file mode 100644
index 0000000..3271899
--- /dev/null
+++ b/searxng.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<html lang=en>
+ <head>
+ <title>Setting up a public SearXNG instance &ndash; LandChad.net</title>
+ <meta charset="utf-8"/>
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel='alternate' type='application/rss+xml' title='Land Chad RSS' href='/rss.xml'>
+ </head>
+<body>
+ <header><h1>Setting up a public SearXNG instance</h1></header>
+ <nav></nav>
+ <main>
+ <img src="pix/searxng.svg" alt="SearXNG logo" class=titleimg>
+ <p>
+ SearXNG is a free internet metasearch engine which aggregates results from more than 70 search services.
+ This guide sets up a working instance that can be accessed using a domain over HTTPS.
+ Features include:
+ </p>
+ <ul>
+ <li>Self hosted</li>
+ <li>No user tracking</li>
+ <li>No user profiling</li>
+ <li>About 70 supported search engines</li>
+ <li>Easy integration with any search engine</li>
+ <li>Cookies are not used by default</li>
+ <li>Secure, encrypted connections (HTTPS/SSL)</li>
+ </ul>
+
+ <h2>Installation</h2>
+
+ <p>Install the required packages.</p>
+
+ <pre><code>apt install git nginx -y</code></pre>
+
+ <p>Open http and https ports.</p>
+
+ <pre><code>iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
+iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
+netfilter-persistent save
+ufw allow 80
+ufw allow 443</code></pre>
+
+ <p>Clone the SearXNG Repository.</p>
+
+ <pre><code>git clone https://github.com/searxng/searxng searxng
+cd searxng</code></pre>
+
+ <p>Installing SearXNG, Filtron and Morty.</p>
+
+ <pre><code>./utils/searx.sh install all
+./utils/filtron.sh install all
+./utils/morty.sh install all</code></pre>
+
+ <p>Check that both filtron and morty are running.</p>
+
+ <pre><code>systemctl status filtron
+systemctl status morty</code></pre>
+
+ <h2>Configure Nginx</h2>
+
+ <p>Delete the default site.</p>
+
+ <pre><code>rm /etc/nginx/sites-enabled/default</code></pre>
+
+ <p>Create a new file <code>/etc/nginx/sites-available/searxng.conf</code> and add the following:</p>
+
+ <pre><code>
+server {
+
+ # Listens on http
+ listen 80;
+ listen [::]:80;
+
+ # Your server name
+ server_name searx.example.org;
+
+ # If you want to log user activity, comment these
+ access_log /dev/null;
+ error_log /dev/null;
+
+ # Searx reverse proxy
+ location / {
+ proxy_pass http://127.0.0.1:4004/;
+
+ proxy_set_header Host $host;
+ proxy_set_header Connection $http_connection;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Scheme $scheme;
+ proxy_set_header X-Script-Name /searx;
+ }
+
+ location /searx/static {
+ alias /usr/local/searx/searx-src/searx/static;
+ }
+
+ # Morty reverse proxy
+ location /morty {
+ proxy_pass http://127.0.0.1:3000/;
+
+ proxy_set_header Host $host;
+ proxy_set_header Connection $http_connection;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Scheme $scheme;
+ }
+}
+ </code></pre>
+
+ <p>Now create a symbolic link to enable this site.</p>
+
+ <pre><code>ln -s /etc/nginx/sites-available/searxng.conf /etc/nginx/sites-enabled/searxng.conf</code></pre>
+
+ <p>Restart Nginx and SearXNG.</p>
+
+ <pre><code>systemctl restart nginx
+service uwsgi restart searx</code></pre>
+
+ <h2>Configure HTTPS with Certbot</h2>
+
+ <p>Install certbot.</p>
+
+ <pre><code>apt install python3-certbot-nginx</code></pre>
+
+ <p>Install a Let's Encrypt SSL certificate to Nginx and optionally let it configure HTTPS for you.
+ <a href="certbot.html">Detailed instructions and additional information</a>.</p>
+
+ <pre><code>certbot --nginx</code></pre>
+
+ <p>SearXNG should now be available from your domain.</p>
+
+ <h2>Configuration</h2>
+
+ <p>You can change settings by editing <code>/etc/searxng/settings.yml</code>.</p>
+
+ <h2>Contribution</h2>
+ <li>Author: goshawk22 &ndash; <a href="https://goshawk22.uk">website</a></li>
+ </main>
+<footer><a href="https://landchad.net">LandChad.net</a></br>Because Everyone should be an Internet LandChad.</br><a href="index.html"><li><img src="pix/chad.gif" alt="chad"></li></a><a href="rss.xml"><li><img src="pix/rss.svg" alt="RSS"></li></a><a href="donate-bitcoin.html"><li><img src="pix/btc.svg" alt="BTC"></li></a><a href="donate-monero.html"><li><img src="pix/xmr.svg" alt="XMR"></li></a><a href="https://github.com/lukesmithxyz/landchad"><li><img src="pix/git.svg" alt="Github"></li></a></footer>
+</body>
+</html>