<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by orizuru on Medium]]></title>
        <description><![CDATA[Stories by orizuru on Medium]]></description>
        <link>https://medium.com/@orizuru?source=rss-974e4f608e52------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*0zOuE9LKWOXHjuScbl_L5g.jpeg</url>
            <title>Stories by orizuru on Medium</title>
            <link>https://medium.com/@orizuru?source=rss-974e4f608e52------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 30 May 2026 07:52:21 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@orizuru/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Filter out results from your web searches]]></title>
            <link>https://medium.com/@orizuru/filter-out-results-from-your-web-searches-a243ebe4449d?source=rss-974e4f608e52------2</link>
            <guid isPermaLink="false">https://medium.com/p/a243ebe4449d</guid>
            <category><![CDATA[web]]></category>
            <category><![CDATA[seo]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[search-engines]]></category>
            <category><![CDATA[research]]></category>
            <dc:creator><![CDATA[orizuru]]></dc:creator>
            <pubDate>Wed, 09 Aug 2023 20:51:50 GMT</pubDate>
            <atom:updated>2023-08-09T20:51:50.178Z</atom:updated>
            <content:encoded><![CDATA[<p>Let’s face it, searching for information on the web has been going downhill for a while.</p><p>You used to be able to search for information using your favourite search engine and get what you were looking for. But I guess in the age of AI-generated content and SEO-riddled websites, that’s no longer the case.</p><p>As I described in a <a href="https://medium.com/@orizuru/why-use-just-google-when-you-can-combine-the-power-of-multiple-search-engines-be64f061e51a">previous post</a>, I run a metasearch engine instance instead of directly “googling” for information. In case you don’t know what that means (and don’t feel like reading my previous post): I use an app that sends my searches to multiple search engines at the same time, and retrieves the aggregated results back to me. This allows me to (hopefully) have access to less biased information, and to reduce my reliance on Google. However, this still won’t spare me from useless websites, scam websites, or awful “modern” interfaces that the website owners decided to shove down our throats (looking at you Reddit).</p><p>Luckily, <a href="https://github.com/searxng/searxng">SearXNG</a> (my metasearch engine of choice) has a builtin plugin which allows me to either <a href="https://docs.searxng.org/admin/plugins.html">filter out or redirect domains</a>. All I need to do is to change my SearXNG settings.yml file to enable it by default:</p><pre>enabled_plugins:<br>  — ‘Hostname replace’</pre><p>Then define the filter rules on the same file:</p><pre>hostname_replace:<br># Filter out<br>  &#39;badwebsite\.com&#39;: false<br># Redirect<br>  &#39;(.*\.)?reddit\.com$&#39;: &#39;old.reddit.com&#39;</pre><p>And that’s it! Just need to restart the docker container, and I’ll have a much more pleasant browsing experience.</p><pre>docker restart searxng</pre><p>If you want know how to set-up SearXNG check out my <a href="https://medium.com/@orizuru/why-use-just-google-when-you-can-combine-the-power-of-multiple-search-engines-be64f061e51a">previous post</a>, and if you need a comprehensive list of junk websites, you can always have a look at what some relevant open-source projects use, for example:</p><ul><li><a href="https://firebog.net/">The Big Blocklist Collection</a></li><li><a href="https://github.com/letsblockit/letsblockit/tree/main/data/filters/presets/search-results">Let’s Block It!</a></li><li><a href="https://github.com/quenhus/uBlock-Origin-dev-filter/tree/main/data">uBlock-Origin-dev-filter</a></li></ul><p>Happy browsing! 🙂</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a243ebe4449d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why use just Google, when you can combine the power of multiple search engines?]]></title>
            <link>https://medium.com/@orizuru/why-use-just-google-when-you-can-combine-the-power-of-multiple-search-engines-be64f061e51a?source=rss-974e4f608e52------2</link>
            <guid isPermaLink="false">https://medium.com/p/be64f061e51a</guid>
            <category><![CDATA[linux]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[research]]></category>
            <category><![CDATA[decentralization]]></category>
            <category><![CDATA[search-engines]]></category>
            <dc:creator><![CDATA[orizuru]]></dc:creator>
            <pubDate>Fri, 03 Feb 2023 16:22:43 GMT</pubDate>
            <atom:updated>2023-02-26T18:40:21.112Z</atom:updated>
            <content:encoded><![CDATA[<h4>How to create your own wise crowd.</h4><p>There is this idea expressed in the book <a href="https://en.wikipedia.org/wiki/The_Wisdom_of_Crowds">The Wisdom of Crowds</a>, which states that aggregating the information from a large group tends to yield better decisions than the ones taken by a single member of the group (as long as the group is diverse enough and each member is independent). There are some discussions regarding the conditions in which this holds, but there’s still some nugget of truth in there: looking through a problem from a diverse set of perspectives is beneficial.</p><p>Which leads leads me to: search engines.</p><p><a href="https://www.statista.com/statistics/216573/worldwide-market-share-of-search-engines/">Depending</a> <a href="https://www.oberlo.co.uk/statistics/search-engine-market-share">on</a> <a href="https://www.similarweb.com/engines/">the</a> <a href="https://www.webfx.com/blog/seo/2019-search-market-share/">source</a>, you’ll get slightly different values for the current market share of Google, but the general consensus is that it seems to be around 90%. This is concerning (to say the least), since the world is trusting a single member to dictate what’s relevant and/or true. Yes, Google aggregates the results from different sources, but the company is still responsible for designing the algorithm that decides which sources are displayed at the top (or displayed at all).</p><p>Even if you don’t really care about the possible consequences of concentrating all this power in a single company, you can still look at this issue from a pure self-interest perspective (which turns it into an opportunity). In the current competitive information age, having access to more varied sources of information than your peers can be an advantage. You may not notice it at first, but every so often you’ll find a website that was not as good at playing the google <a href="https://en.wikipedia.org/wiki/Search_engine_optimization">SEO</a> game, but happens to have the information or the solution to the problem that you were looking for. Exposing yourself to more variety will give you an edge.</p><p>My point is not “don’t use Google”, but rather “why use <em>only</em> Google?”. The fact is, Google is amazing at what they do, but there’s nothing stopping you from enhancing your search results with more sources, in other words: <strong>to create your own wise crowd</strong>.</p><p>Which leads me to: <a href="https://en.wikipedia.org/wiki/Metasearch_engine"><em>metasearch engines</em></a>.</p><p>A metasearch engine is basically a search engine of search engines. It’s a piece of software that sends your query to multiple search engines, aggregates the results, and presents them to you.</p><p>In this post, I’ll show you how you can run your own metasearch engine for free. More specifically, <a href="https://docs.searxng.org/">SearXNG</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/538/1*5HRrRyyvZFxT9ju77PTXvw.png" /><figcaption>Image from the author.</figcaption></figure><p>SearXNG is a fork of <a href="https://searx.github.io/searx/">Searx</a>, with a <a href="https://github.com/searxng/searxng#differences-to-searx">few improvements</a> which makes it (in my opinion) easier to set-up.</p><h3>Setting up SearXNG</h3><p>The first step is to install <a href="https://www.docker.com/">docker</a>. Make sure that you follow the <a href="https://docs.docker.com/engine/install/linux-postinstall/">post-installation</a> steps as well, so that you don’t have to run docker with sudo. After you’re done, create a directory where you’re going to store the startup scripts (or cd into the one you already use for your personal scripts):</p><pre>cd ~/<br>mkdir scripts<br>cd scripts</pre><p>Inside your scripts directory, create a new script called start_searxng, open it, and paste the following:</p><pre>#!/bin/sh<br><br>mkdir -p $HOME/searxng<br>docker pull searxng/searxng<br>docker run -d --rm \<br>              -d -p 8080:8080 \<br>              -v &quot;${HOME}/searxng:/etc/searxng&quot; \<br>              -e &quot;BASE_URL=http://localhost:8080/&quot; \<br>              searxng/searxng</pre><p>Don’t forget to make the script executable</p><pre>chmod +x start_searxng</pre><p>And run it:</p><pre>./start_searxng</pre><p>If you now open your browser and go to localhost:8080, you should be able to see the SearXNG page.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*a9xTKqG8JDiJt7llafxyYw.png" /></figure><p>It’s that easy. You’re running SearXNG now!</p><p>You can customize your preferences, and pick which search engines you’d like to use.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yG9cJ-9YVYHSia1E3tfKAg.png" /></figure><p>Be aware that your queries will be slower the more engines you add (specially if they are slow and/or unreliable). So, you’ll have to balance between diversity and speed.</p><p>You can also see that you have various search categories, including “science” (i.e. scientific papers) and “files” (i.e. torrents), which you can customize as well.</p><h3>Setting it up in the search bar (optional)</h3><p>Another thing you may want to configure, is to have your browser use SearXNG when you type a search in the address bar, instead of Google. This will depend on your browser.</p><h3>Chrome-based browsers</h3><p>For chrome-based browsers (which include Brave), you want to do the following:</p><ol><li>Go to the settings: chromium://settings/searchEngines (replace chromium with brave, chrome, etc).</li><li>Go into the “Search engines” section.</li><li>Add a new search engine.</li><li>Give it a name.</li><li>In the “URL with %s in place of query” field, fill it out with the following: <a href="http://localhost:8080/search?q=%s.">http://localhost:8080/search?q=%s.</a></li><li>Set it as the default search engine.</li></ol><h3>Firefox-based browsers</h3><p>For Firefox-based browsers (which include LibreWolf), the procedure is the following:</p><ol><li>Go into the settings: about:preferences#search</li><li>Select the “Add search bar in toolbar” option (i.e. select the option to split the search bar from the address bar).</li><li>Open localhost:8080</li><li>On the search bar, the magnifying glass icon should have a green “+” symbol.</li><li>Click on the icon.</li><li>You should see an SearXNG icon with the same “+” green icon.</li><li>Click on it. SearXNG is now on your search engines.</li><li>Go back to about:preferences#search, and set it as default.</li></ol><h3>Final questions you might have</h3><blockquote><em>What if I want to use this on the go, while on my phone?</em></blockquote><p>This is where the “for free” part of running your own metasearch engine stops. If you want to do this, you will usually have to buy a domain name and pay for hosting. If there’s interest, I might write a post in the future with a step-by-step guide. But for now, you should at least be able to play around with your new metasearch engine, and see if this is something that you’re willing to pay a few dollars per month to have available everywhere you go.</p><p>If you’re already familiar with how to host your own services, you should be able to easily deploy the docker containers yourself. SearXNG provides a docker-compose <a href="https://github.com/searxng/searxng-docker#how-to-use-it">yaml file</a> that will make your life much easier.</p><blockquote><em>Are there any kind people running SearXNG instances that I could use for free?</em></blockquote><p><a href="https://searx.space/">There certainly are</a>, but to be honest, I wouldn’t use them. You have no idea what a random internet stranger is running, they could be logging your search history. You can check what kind of code you’re running on your machine, but you can’t check theirs.</p><p>As with most computer-related things, I’d rather have more control. But you’re free to decide what’s best for you.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=be64f061e51a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to host your own website on the darkweb]]></title>
            <link>https://medium.com/@orizuru/how-to-host-your-own-darkweb-website-7fd53a64d0a4?source=rss-974e4f608e52------2</link>
            <guid isPermaLink="false">https://medium.com/p/7fd53a64d0a4</guid>
            <category><![CDATA[i2p]]></category>
            <category><![CDATA[decentralization]]></category>
            <category><![CDATA[darkweb]]></category>
            <category><![CDATA[privacy]]></category>
            <category><![CDATA[raspberry-pi]]></category>
            <dc:creator><![CDATA[orizuru]]></dc:creator>
            <pubDate>Wed, 25 Jan 2023 22:22:19 GMT</pubDate>
            <atom:updated>2023-01-26T10:09:13.156Z</atom:updated>
            <content:encoded><![CDATA[<h4>All that genuine 90s internet feel, with 110% more street cred</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bMJbpDvNBGoMlHFF69IuZg.jpeg" /><figcaption>Photo by <a href="https://www.pexels.com/@soumil-kumar-4325/">Soumil Kumar</a> from Pexels.</figcaption></figure><p>In my <a href="https://medium.com/@orizuru/how-to-browse-i2p-from-a-raspberry-pi-55c712514109">previous post</a>, I explained how to set up a Raspberry Pi on your home network to act as an I2P router, allowing you to browse anonymous sites (and contribute to the network at the same time).</p><p>If you’re not familiar with I2P, or how to set up an I2P router. Please checkout my previous post, as this one starts where the other one left off.</p><h3>Why bother hosting a website on I2P?</h3><p>I could give you the whole spiel about the importance of censorship resistant systems, freedom of information, decentralisation of the web, etc. But the truth is: I did it because I was bored, and this was fun. So, why not?</p><p>You certainly won’t get as much visibility when compared with a website on the clearnet. But you can always have a copy of your personal website on both the clearnet and I2P. However, be aware that speed that you get on I2P is <em>really</em> slow, so keep it light. Who needs anything more than HTML and CSS anyway?</p><p>This is the solution that I found to host it. Do let me know if you think it can be improved!</p><h3>Step 1 — Make a website and host it on your Raspberry Pi</h3><p>The first step is to make a website. Log into the Raspberry Pi, and create something simple.</p><pre>cd ~/<br>echo &quot;&lt;h1&gt;Hello World!&lt;/h1&gt;&quot; &gt;&gt; index.html</pre><p>Now, you need to make it visible to anyone on your home network. For this part, you’ll want to have both <a href="https://www.docker.com/">docker</a> and <a href="https://docs.docker.com/compose/install/">docker-compose</a> installed. Also, make sure that you follow the <a href="https://docs.docker.com/engine/install/linux-postinstall/">post-installation</a> steps as well, so that you don’t have to run docker with sudo, and that docker starts when the Raspberry Pi boots up.</p><p>To host the website, you’ll want to use a webserver like nginx . But to make things easier, you can use it inside a docker container.</p><p>Start by creating a directory inside your home called nginx and go into it (you can give it another name, as long as you keep things consistent).</p><pre>mkdir ~/nginx<br>cd ~/nginx</pre><p>Then, create a directory to keep the website in:</p><pre>mkdir website<br>mv ~/index.html website/</pre><p>Now that’s in place, you want to create a docker container running nginx, and tell it where to find your website.</p><p>You could just use docker run for this, but docker-compose also allows you to run multi-container applications. One could argue this is a bit overkill, but there is one little feature which I quite like.</p><p>Create a new file named docker-compose.yml inside ~/nginx, and paste the following inside:</p><pre>version: &#39;3&#39;<br>services:<br>  app:<br>    image: &#39;nginx:latest&#39;<br>    restart: always<br>    ports:<br>      - &#39;80:80&#39;<br>    volumes:<br>      - ~/nginx/website:/usr/share/nginx/html<br>  watchtower:<br>    image: containrrr/watchtower<br>    restart: always<br>    volumes:<br>      - /var/run/docker.sock:/var/run/docker.sock</pre><p>This will tell docker-compose to launch a multi-container application with 2 containers. The first one (app), will be a webserver with the following characteristics:</p><ul><li>it’s running the latest nginx image</li><li>it always restarts the container if it stops</li><li>it forwards port 80 in the host (the Raspberry Pi), to port 80 in the container</li><li>it mounts the path ~/nginx/website in the Raspberry Pi, to the the default path used by nginx to read the website from (/usr/share/nginx/html).</li></ul><p>That last point is important. It means that whatever you put inside ~/nginx/website/ will be read by the docker container running nginx, and will be served as your website. Therefore, if you want to update it, you just need to change the files inside ~/nginx/website/.</p><blockquote><em>OK that’s pretty obvious, but what’s watchtower?</em></blockquote><p>This is neat little solution that automatically updates app every time a new version of nginx:latest is pushed to Docker Hub. In other words, if a newer version is available, watchtower pulls the latest version, shuts-down the currently running container (i.e. app), and launches a new one running the latest version. Have a look at the <a href="https://containrrr.dev/watchtower/">documentation for more details</a>.</p><p>Once the docker-compose.yml file is saved, all you have to do is launch it:</p><pre>cd ~/nginx/<br>docker compose up -d</pre><p>You can now open a browser from another machine on your network, and give it the internal IP address of the Raspberry Pi.</p><pre>firefox &lt;raspberry-pi-internal-ip-address&gt;</pre><p>You should be able to see your website. If this does not work, something went wrong with the webserver. Try to pinpoint the problem before proceeding.</p><blockquote><em>Wait, how do I find this address?</em></blockquote><p>From your Raspberry Pi, you can run the command below to get the address of the interfaces (e.g. if the Raspberry Pi is using the wifi, look at the inet field under the wlan0 section):</p><pre>ifconfig -a</pre><p>If you want to find it from the machine where you’re opening the browser, you can scan your network to find it:</p><pre>sudo nmap -sn 192.168.1.0/24</pre><p>I won’t go into detail on how nmap works, as it’s outside of the scope of this tutorial.</p><h3>Step 2 — Make the website accessible to the rest of the I2P network</h3><p>As mentioned in the introduction, at this point, you should have i2pd configured in the same way as described in my <a href="https://medium.com/@orizuru/how-to-browse-i2p-from-a-raspberry-pi-55c712514109">previous post</a>. I’m assuming that’s the case for you.</p><p>Now that you can see the site from a different machine on your network, it’s time to make it visible on i2p. For that, you’re going to need to change the tunnels.conf file. It’s usually on ~/.i2pd/tunnels.conf , but that might not be the case for you.</p><p>If you access the i2pd webconsole (http://127.0.0.1:7070/), you should see a Data path field on the main page (in my case, it says /var/lib/i2pd). That’s the directory where you can find the tunnels.conf file. Open that file (you might need to use sudo), and <a href="https://i2pd.readthedocs.io/en/latest/tutorials/http/#host-anonymous-website">add the following to the bottom</a>:</p><pre>[anon-website]<br>type = http<br>host = 127.0.0.1<br>port = 80<br>keys = anon-website.dat</pre><p>Restart i2pd:</p><pre>sudo systemctl restart i2pd.service</pre><p>Open the webconsole, and go to the tunnels page (http://127.0.0.1:7070/?page=i2p_tunnels), you should see a subheading saying anon-website followed by a long string with *.b32.i2p:80 at the end. That’s the address to the website (you should be able to open it in the browser after a while).</p><h3>Step 3 (Optional) — Get a human-readable address for your fancy new website</h3><p>Congratulations! You are now hosting your own website on the darkweb.</p><p>But that long string is rather ugly, wouldn’t it be nice to have a nice human-readable address?</p><p>To do that, go into the webconsole &gt; I2P tunnels &gt; anon-website. On this page, click on “Address registration line” and fill out which domain you’d like. If the generation is successful, it should take you to another page, asking to add a small description. Submit it, and wait a bit until the new address works (it could be a couple of days, so don’t stand there refreshing in despair).</p><p>You shouldn’t need anything else. But if at any point you need to generate an authentication string, you’ll need to use i2pd-tools, in particular <a href="https://github.com/PurpleI2P/i2pd-tools#regaddr">readdr</a>:</p><pre>./regaddr anon-website.dat &lt;your-domain&gt;.i2p &gt; auth_string.txt<br>cat auth_string.txt</pre><p>The anon-website.dat file can be found in the same directory as the tunnels.conf file. Follow the instructions on the project’s repo on how to compile i2pd-tools.</p><p>After a few days, you should be able to see the website being announced on planet.i2p and identiguy.i2p.</p><p>And that’s it! Enjoy your own piece of virtual real estate on the darkweb.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7fd53a64d0a4" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Death to Caps Lock]]></title>
            <link>https://medium.com/@orizuru/death-to-caps-lock-5d5ab4dbf56?source=rss-974e4f608e52------2</link>
            <guid isPermaLink="false">https://medium.com/p/5d5ab4dbf56</guid>
            <category><![CDATA[keyboard]]></category>
            <category><![CDATA[caps-lock]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[linux]]></category>
            <category><![CDATA[ergonomics]]></category>
            <dc:creator><![CDATA[orizuru]]></dc:creator>
            <pubDate>Fri, 20 Jan 2023 16:35:50 GMT</pubDate>
            <atom:updated>2023-01-25T21:57:49.821Z</atom:updated>
            <content:encoded><![CDATA[<h4>How to improve your typing experience without buying a new keyboard</h4><p>Take a moment to recall when was the last time you used the Caps Lock key.</p><p>Do you remember?</p><p>Unless you’re a boomer ranting on Facebook about things you have no knowledge about, then the answer should be “when I accidentally touched it, and then had to backspace to re-write a whole sentence”.</p><p>Why is this useless (and often hindering) key so close to the home row? Arguably, the area on the keyboard where your fingers spend the most amount of time while typing?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1eKf9Ue5chhrnHLHuRMVuw.png" /><figcaption><a href="https://en.wikipedia.org/wiki/Touch_typing">The home row</a>. You are typing like this, right?</figcaption></figure><p>The answer is that the Caps Lock key is actually a legacy from <a href="https://en.wikipedia.org/wiki/Caps_Lock#History">mechanical typewriters</a>, back in the days when you might need a row of upper case letters to define a title. But with today’s cutting edge technological advances like different sized fonts, <strong>bold</strong>, and <em>italic</em>; it’s time for it to die.</p><h3>Making this key actually useful on Linux</h3><p>In this day and age, it makes no sense for Caps Lock to occupy such a valuable piece of keyboard real estate (or to exist at all). So, while I cannot force some sense into the keyboard manufacturers’ heads, I still have control over my own machines. There is no reason why one shouldn&#39;t remap this key into something more useful, like an extra Ctrl.</p><p>Just think about it: how many times do you use the Ctrl key per day? You probably use it to copy (Ctrl+c), paste (Ctrl+v), save (Ctrl+s), select all (Ctrl+a), open a tab (Ctrl+t), close a tab (Ctrl+w), etc. All these require you to bend the left little finger awkwardly downwards, and it’s the cause of the mythical <a href="https://en.wikipedia.org/wiki/Emacs#Emacs_pinky">“Emacs pinky”</a> injury.</p><p>You could be living in the present, and have an easy access to one of the most useful modifier keys! It’s time to join the 21st century.</p><p>If you are using Linux with Gnome, the most user-friendly way to remap the Caps Lock key is to install gnome tweaks:</p><pre>$ sudo apt-get install gnome-tweaks</pre><p>And enable the remap option on “Keyboard &amp; Mouse” &gt; “Additional Layout Options”</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1019/0*l7KQ0BfR4ubVDyAx.png" /></figure><p>If you want a more general solution (or are too cool to use desktop environments), you can change ~/.Xmodmap instead:</p><pre>remove Lock = Caps_Lock<br>keysym Caps_Lock = Control_L<br>add Control = Control_L</pre><h3>Other operating systems</h3><p>As for Windows and Mac users, I can’t provide first hand experience. I’ve done it on a Windows 7 machine many years ago, and it involved creating my own registry key file with regedit. However, I’ve seen that Microsoft has made this easier, with a new tool called <a href="https://learn.microsoft.com/en-us/windows/powertoys/keyboard-manager">Keyboard Manager</a>.</p><p>On MacOS, this option is also available <a href="https://stackoverflow.com/a/40254864">in the System Preferences</a>.</p><p>Now go forth, and enjoy your newly found productivity. After years of typing for several hours a day, your left little finger will thank you for this change.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5d5ab4dbf56" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to browse the darkweb from a Raspberry Pi]]></title>
            <link>https://medium.com/@orizuru/how-to-browse-i2p-from-a-raspberry-pi-55c712514109?source=rss-974e4f608e52------2</link>
            <guid isPermaLink="false">https://medium.com/p/55c712514109</guid>
            <category><![CDATA[privacy]]></category>
            <category><![CDATA[decentralization]]></category>
            <category><![CDATA[raspberry-pi]]></category>
            <category><![CDATA[i2p]]></category>
            <category><![CDATA[linux]]></category>
            <dc:creator><![CDATA[orizuru]]></dc:creator>
            <pubDate>Mon, 16 Jan 2023 23:28:27 GMT</pubDate>
            <atom:updated>2023-01-28T10:15:49.088Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*FhpkpXQe5FehPgwBnyoQdQ.png" /><figcaption>I2P’s mascot: itoopie. [<a href="https://en.wikipedia.org/wiki/I2P">source</a>]</figcaption></figure><p>In this post, I’ll outline how I have set up a Raspberry Pi I had laying around the house to act as an I2P node, allowing me not only to browse I2P, but to help the network as well.</p><p>I’m not claiming this is the best way to do it. In fact, if you have any ideas on how to make it better, please let me know! But it’s probably a good starting point if you’re planing to play around with anonymous networks.</p><p>I’m assuming that you are familiar with the Linux command line, and have a Raspberry Pi already running on your home network. If there is interest in any of those topics, I can write some posts about them in the future.</p><p><strong>Before you proceed</strong></p><p>Please be aware that there are things on the darkweb that you’d rather not see, or are down right illegal and reprehensible. Fortunately, I have not run into any of them. I have been using I2P to browse random blogs and tinkering with the technology, but you may not be as lucky. Proceed at your own risk.</p><h3>A few questions you might have before we start</h3><blockquote>What is I2P?</blockquote><p>I2P is a network layer, that allows anonymous and encrypted peer-to-peer communication. It’s similar to <a href="https://www.torproject.org/">tor</a>, but it won’t allow one to browse websites on the clearnet (at least, not directly). You can think of I2P as its own separate internet, where the sun always shines!¹</p><p>For a more detailed comparison, check out <a href="https://geti2p.net/en/comparison/tor">the official website</a>.</p><blockquote>Why a Raspberry Pi? Can’t I just install it on a regular computer? I have an old laptop I’m not using</blockquote><p>You can, but you probably don’t want to.</p><p>Another difference between tor and I2P is that each node also contributes to the network (even the people just browsing), while tor has dedicated machines acting as relays. In other words, you don’t just browse the network, but you contribute to it as well, by being one of the nodes which traffic flows through.</p><p>This means that when you connect to I2P, you won’t be able to browse any sites at first, as your node is not integrated with the network yet. It can take several hours until you start seeing some sites. Therefore, you want to keep it connected for long periods of time (ideally, 24/7). With the current energy prices, you may want to avoid doing this on a regular computer.</p><blockquote>I don’t have a Raspberry Pi, but I do have a server that I already use for something else. Can I run it there?</blockquote><p>You certainly can!</p><p>I haven’t tried it yet. So I’ll focus on a Raspberry Pi for now.</p><h3>Setting up</h3><p>You can get the java version on <a href="https://geti2p.net/en/">the official website</a>. However, I’ve found it to be unnecessarily heavy on my puny Raspberry Pi, so I switched to <a href="https://i2pd.website/">i2pd</a>. Even though it comes with less features out of the box (e.g. it does not include torrent or email capabilities built in), it’s written in C++, and is much lighter.</p><h4>Installing i2pd and running it</h4><p>On a Debian system, you can install it by <a href="https://i2pd.readthedocs.io/en/latest/user-guide/install/#debian">running the following</a>:</p><pre>sudo apt-get install apt-transport-https<br>wget -q -O - https://repo.i2pd.xyz/.help/add_repo | sudo bash -s -<br>sudo apt-get update<br>sudo apt-get install i2pd</pre><p>To start it, you can simply run:</p><pre>i2pd</pre><p>However, you probably want to <a href="https://i2pd.readthedocs.io/en/latest/user-guide/run/#systemd-unit">start it on the background every time the Raspberry Pi boots up</a>:</p><pre>sudo systemctl enable i2pd.service # enable i2pd autostart<br>sudo systemctl disable i2pd.service # disable i2pd autostart</pre><h4>Browsing I2P</h4><p>Great! You have i2pd up and running now. But how can you browse I2P websites (also known as eepsites)?</p><p>Unlike tor, i2pd does not ship with a dedicated browser, you have to configure your own browser to use it.</p><p>I prefer to have a separate browser just for I2P. So I installed <a href="https://librewolf.net/">librewolf</a> and configured the connection settings as follows:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/740/1*PyqFYK6vWWfqkURzf_eWbg.png" /></figure><p>Once that’s done, you should be able to see your i2pd console by going to <em>127.0.0.1:7070</em> on librewolf.</p><h4>Browsing on other computers in your home</h4><p>So, you’ve got your Raspberry Pi set up, but it’s <em>all the way over there</em>, and you’re pretty comfy sitting on the couch with your laptop. What can you do?</p><p>Well, that’s pretty easy. All you have to do is to run this command on the computer you wish to browse I2P on:</p><pre>ssh -fTNL 4444:127.0.0.1:4444 -L 7070:127.0.0.1:7070 &lt;raspberry-pi-username&gt;@&lt;raspberry-pi-local-ip-address&gt;</pre><p>You can now browse from any computer inside your house, as long as you are on the same network as the Raspberry Pi.</p><h3>Where can one find sites to visit?</h3><p>Unfortunately, the amount of sites available on I2P is fairly small, even compared with something like tor hidden services. However, you can find a big list of them here: <em>identiguy.i2p</em>. There are also search engines you can use, e.g. <em>legwork.i2p</em>.</p><p>For an RSS feed of the latest things happening on I2P, check out <em>planet.i2p</em>. Or maybe you’d like to browse some quality blogs like this one: <em>orizuru.i2p</em> (a bit of a shameless plug 🙂).</p><blockquote>Wait, how do you host your own blog on I2P?</blockquote><p>It’s actually pretty easy, and you can do it on the same Raspberry Pi. But I’ll leave that tutorial for another time.</p><p><strong>EDIT (2023–01–26)</strong>: Part 2 of this post is <a href="https://medium.com/@orizuru/how-to-host-your-own-darkweb-website-7fd53a64d0a4">now available</a>. It will teach you how to host a website on I2P.</p><p>[1]: When trying to stay anonymous on the internet. Do not talk about anything that could be used to find out your location <a href="https://thetinhat.com/tutorials/darknets/i2ptips.html">including the weather</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=55c712514109" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>