<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://hemanthk-12.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://hemanthk-12.github.io/" rel="alternate" type="text/html" /><updated>2026-04-21T06:19:46+00:00</updated><id>https://hemanthk-12.github.io/feed.xml</id><title type="html">Hemanth Karthikeya G</title><subtitle>Computer science final year student, in BITS Pilani Hyderabad Campus. Currently interning at Hevo Data as Data Scientist Intern.</subtitle><entry><title type="html">the story of the homeserver</title><link href="https://hemanthk-12.github.io/posts/2026-04-21-server-story/" rel="alternate" type="text/html" title="the story of the homeserver" /><published>2026-04-21T00:00:00+00:00</published><updated>2026-04-21T00:00:00+00:00</updated><id>https://hemanthk-12.github.io/posts/server-story</id><content type="html" xml:base="https://hemanthk-12.github.io/posts/2026-04-21-server-story/"><![CDATA[<p>Making a server is very straightforward and requires no highend hardware and is completely free(excluding negligible electricty costs). For example, the initial draft of my server worked on an i3-2nd gen cpu with 4GB ram (ddr3, ouch), and it still worked great. only with some small storage and ram modifications, I am still maining the same system.</p>
<figure>   
    <img src="/assets/image.png" alt="alt text" />
    <figcaption>my present cpu and ram through my monitoring tool (the uptime is in DD:HH:MM) </figcaption>                                      
  </figure>

<h2 id="how-this-journey-started">How this journey started</h2>

<p>My first exposure to diving into tech came from me learning about ubuntu and linux in the 1st year of my undergrad through the labs and also the robotics club I was a part of. As time went on, I tried various distributions, viz. ubuntu-&gt;zorin-&gt;endeavour-&gt;kali-&gt;omarchy-&gt;debian and finally on bazzite for the last 3 months. I think it was this which made me dive deeper into the privacy rabbit hole: looking at VPNs, learnign about <code class="language-python highlighter-rouge"><span class="n">nmap</span></code>, dabbling with Kali linux, RSS feeds, open source alternatives to services i use, reading privacy policies, monitoring data breaches, encrypting passwords, finding out about Yubikey, and many more. Hands down, the best outcome which came from this slowly rising paranoia in me was getting introduced to the world of self hosting.</p>

<p>Self hosting became the perfect middle ground for me. I was concerned enough to realise the extent of survelliance and control companies like the big G, zuckerbook and microslop (and even govts with the new age verification bs) have on <strong>our</strong> personal machines. But, I wanted it without causing a major hit to speed or convenience as does anyone. Naturally, Tor, dark web, hosting my mail server, multiple VPN tunnels wasn’t practical for me. Self hosting made me aware of the fact that if the data being transmitted is sent to my own machine, inacessible to the outside world without my explicit permission, I’m fine with it.</p>

<h2 id="my-services">My Services</h2>

<p>As of now, these are the service I host in my server :</p>

<table>
  <tbody>
    <tr>
      <td>Affine</td>
      <td>Notion Equivalent</td>
    </tr>
    <tr>
      <td>VaultWarden</td>
      <td>Password Manager[Self hosted rust reimplementation of open-source Bitwarden]</td>
    </tr>
    <tr>
      <td>Dozzle</td>
      <td>Docker containers monitoring tool</td>
    </tr>
    <tr>
      <td>Glances</td>
      <td>Homepage to monitor all metrics of my server</td>
    </tr>
    <tr>
      <td>Karakeep</td>
      <td>Bookmarking + Temporary note-taking app</td>
    </tr>
    <tr>
      <td>SearXNG</td>
      <td>Metasearch engine, replacing google with fallback on brave search</td>
    </tr>
    <tr>
      <td>Forgejo</td>
      <td>self hosted git instance</td>
    </tr>
    <tr>
      <td>Navidrome</td>
      <td>spotify equivalent’s backend + symfonium as frontend client</td>
    </tr>
    <tr>
      <td>Immich</td>
      <td>Google photos alternative</td>
    </tr>
    <tr>
      <td>Filebrowser quantum</td>
      <td>google drive alternative</td>
    </tr>
    <tr>
      <td>Media Server</td>
      <td>Netflix alternative</td>
    </tr>
    <tr>
      <td>- Prowlarr</td>
      <td>Torrents and Indexers finder</td>
    </tr>
    <tr>
      <td>- Radarr</td>
      <td>Movie management</td>
    </tr>
    <tr>
      <td>- Sonarr</td>
      <td>TV Shows management</td>
    </tr>
    <tr>
      <td>- Bazarr</td>
      <td>Subtitles management</td>
    </tr>
    <tr>
      <td>- Qbittorrent</td>
      <td>Downloading client</td>
    </tr>
    <tr>
      <td>- Jellyfin</td>
      <td>Streaming client</td>
    </tr>
    <tr>
      <td>- Fladder</td>
      <td>Material You based frontend client, crossplatform, supporting windows, mac, linux, android, ios</td>
    </tr>
  </tbody>
</table>

<p>If it’s your first time, I recommend starting with a password manager and a google drive equivalent as you’ll face all the common problems in self hosting. But first, you need a machine.</p>

<h2 id="the-server">The Server</h2>

<p>My father had an old office cpu, i3-2120 4GB ddr3 ram and that was enough for me to run everything except media streaming(for this, I upgraded ram by adding another 89gb ddr3 stick totalling to 12 gigs, costed ~Rs.2000). Any old laptop/cpu would be perfect, just make sure it gets plenty of ventilation.</p>]]></content><author><name></name></author><category term="Tailscale" /><category term="homelab" /><category term="selfhosting" /><summary type="html"><![CDATA[Making a server is very straightforward and requires no highend hardware and is completely free(excluding negligible electricty costs). For example, the initial draft of my server worked on an i3-2nd gen cpu with 4GB ram (ddr3, ouch), and it still worked great. only with some small storage and ram modifications, I am still maining the same system. my present cpu and ram through my monitoring tool (the uptime is in DD:HH:MM)]]></summary></entry><entry><title type="html">Interesting Things/Updates I found out</title><link href="https://hemanthk-12.github.io/posts/2025-12-26-update-and-things-i-found-out/" rel="alternate" type="text/html" title="Interesting Things/Updates I found out" /><published>2024-12-26T00:00:00+00:00</published><updated>2024-12-26T00:00:00+00:00</updated><id>https://hemanthk-12.github.io/posts/update-and-things-i-found-out</id><content type="html" xml:base="https://hemanthk-12.github.io/posts/2025-12-26-update-and-things-i-found-out/"><![CDATA[<p>Some interesting developments on things I’m interested in :</p>

<h2 id="found-out-nginx-and-caddy-are-the-same">Found out Nginx and Caddy are the same</h2>
<p>I have used caddy to help me in hosting vaultwarden password manager in my home server(you can check out the blog <a href="/posts/2025-12-22-vaultwarden-setup-selfhosting">here</a>) because vaultwarden apparently accepts https only. Meanwhile, I was also seeing posts about https and cert generation mentioning nginx, and then found out Caddy and nginx are the same, just in diff setups, viz. one in small homelabs/monolithic sstems and the latter being used in production env and enterprises. The more you know.</p>

<h2 id="tailscale-finally-adding-subdomain-cert-generation">Tailscale finally adding subdomain cert generation</h2>
<p>Tailscale has rolled out a beta which introduced a new feature called <strong>Tailscale Services</strong>, which FINALLY allows us to generate certificates for subdomains of our self hosted services and also need https for them. Generally we need to use a third party service like nginx or caddy to generate certificates using Let’s Encrypt for https compatibility for our services and it was COMPULSORY for us own a domain to direct these certs. But Tailscale has the feature of generating cert for the tailnet <code class="language-python highlighter-rouge"><span class="o">&lt;</span><span class="n">name</span><span class="o">&gt;</span><span class="p">.</span><span class="n">ts</span><span class="p">.</span><span class="n">net</span></code> BUT FRUSTRATINGLY, only 1 service can use it. Now, we can generate multiple certs, one for each subdomain of our tailnet, eg. <code class="language-python highlighter-rouge"><span class="n">immich</span><span class="p">.</span><span class="o">&lt;</span><span class="n">name</span><span class="o">&gt;</span><span class="p">.</span><span class="n">ts</span><span class="p">.</span><span class="n">net</span></code>. Good to hear :D</p>

<h2 id="using-a-data-structure-in-the-wild">Using a Data Structure in the Wild..!</h2>
<p>I had the opportunity of using a data structure I’ve known since a long time, the <strong>HASHMAP</strong>, for an actually useful work instead of just in leetcode/interviews.</p>

<p>I had a project in mind to sort through all the contacts in my phone, which include the union of contacts in my google accounts(yes, multiple), my sim and my device. For context I have an android phone running Android 16 and in the default contacts app, there is NO way to show duplicates of contacts, atleast not reliably. I don’t know what the reason is, but my bet is on the difference that numbers stored in google, in my sim and on device store numbers in different formats, namely <code class="language-python highlighter-rouge"><span class="n">xxx</span><span class="o">-</span><span class="n">xxx</span><span class="o">-</span><span class="n">xxxx</span></code>, <code class="language-python highlighter-rouge"><span class="n">xxx</span> <span class="n">xxx</span> <span class="n">xxxx</span></code> and <code class="language-python highlighter-rouge"><span class="n">xxxxxxxxxx</span></code>. Contacts app was only showing me duplicates in the first format, but not the others and I needed to clean around 2000 contacts.</p>

<p>So, I exported the contacts in <code class="language-python highlighter-rouge"><span class="p">.</span><span class="n">vcf</span></code> format, sent it to my laptop and opened it in vscode to see the contents. I noticed that it was just a text file with this format for each contact :</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>BEGIN:VCARD
VERSION:2.1
N:;Lorem Ipsum;;;
FN:Lorem Ipsum
TEL;CELL:+91[redacted]
PHOTO;ENCODING=BASE64;JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEU
 AAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAA
 ABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAACh
 iVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMA
 UgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAA
 CSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQ
 AAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbAB
 lACAASQBuAGMALgAgADIAMAAxADb/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUG
 BgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHC
 goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCA
 BgAGADASIAAhEBAxEB/8QAHgAAAQQDAQEBAAAAAAAAAAAABwADCAkEBQYKAgH/xABLEAAABAQ
 DAwYICgcIAwAAAAABAgMEBQYHEQAIEhMUIQkVIjFBUSMyNUJhYnSyFiQzNENSU3FzkQolcoGS
 sdEXGCZEV4KhwWOltf/EABsBAAEFAQEAAAAAAAAAAAAAAAYAAQQFBwMC/8QANBEAAQMCBAMHA
 QcFAAAAAAAAAQIDEQAEBRIhMUFRcQYTMmGBkaEUIlKxwdHw8SMzQnLh/9oADAMBAAIRAxEAPw
 C/OEeS2vsyfu4ycMsi/E0b/Zl93D2GGtKlhYG1bM2WXnLuzTdVlqrCoICp9Kaa6+pQf9hQEf8
 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
 ol0P/Vt8FOL+S3Xsynu4H1eI0Lr8Zr//2Q==

END:VCARD
</code></pre></div></div>
<p>So I wrote a c++ script which extracts the name and the phone number with regex and normalises the phone number to only 10 digits. Then, to find duplicates I made a hashmap with the phone number as the key and the name as the value(made it a vector), and printed all phone numbers with &gt;1 name. Worked like a charm !
You can find my (very sloppy) c++ script <a href="/assets/s.cpp">here</a>.</p>

<p>Catch you guys in the next one.</p>]]></content><author><name></name></author><category term="Tailscale" /><category term="homelab" /><category term="selfhosting" /><summary type="html"><![CDATA[Some interesting developments on things I’m interested in :]]></summary></entry><entry><title type="html">My Server and how it came to be</title><link href="https://hemanthk-12.github.io/posts/2025-12-11-immich-tailscale-server/" rel="alternate" type="text/html" title="My Server and how it came to be" /><published>2024-12-15T00:00:00+00:00</published><updated>2024-12-15T00:00:00+00:00</updated><id>https://hemanthk-12.github.io/posts/immich-tailscale-server</id><content type="html" xml:base="https://hemanthk-12.github.io/posts/2025-12-11-immich-tailscale-server/"><![CDATA[<p>I’ve always hated the cloud. Maybe because I couldn’t afford it (mostly) or that I couldn’t control it, or that it doesn’t have the niche features which I needed and there was no way to get around them. But I didn’t know any better and was not aware of selfhosting at that time.</p>]]></content><author><name></name></author><category term="reinforcement-learning" /><category term="debugging" /><category term="robotics" /><summary type="html"><![CDATA[I’ve always hated the cloud. Maybe because I couldn’t afford it (mostly) or that I couldn’t control it, or that it doesn’t have the niche features which I needed and there was no way to get around them. But I didn’t know any better and was not aware of selfhosting at that time.]]></summary></entry><entry><title type="html">Vaultwarden and my struggle with HTTPS</title><link href="https://hemanthk-12.github.io/posts/2025-12-22-vaultwarden-setup-selfhosting/" rel="alternate" type="text/html" title="Vaultwarden and my struggle with HTTPS" /><published>2024-12-15T00:00:00+00:00</published><updated>2024-12-15T00:00:00+00:00</updated><id>https://hemanthk-12.github.io/posts/vaultwarden-setup-selfhosting</id><content type="html" xml:base="https://hemanthk-12.github.io/posts/2025-12-22-vaultwarden-setup-selfhosting/"><![CDATA[<p>I presently have immich and filebrowser running on my server. I wanted to have a password manager for a lon time and was searching for something which is reliable and has a self hosted solution. I found Bitwarden and subsequently found Vaultwarden. I copied the compose.yml, ran docker and gave it a random port. I went to the URL and was greeted with this :
<img src="https://global.discourse-cdn.com/free1/uploads/vaultwarden/original/2X/8/842d57fe34629b89097ce9a0c1012b90b78e920f.png" alt="Vaultwarden Loading screen loop" /></p>]]></content><author><name></name></author><category term="password manager" /><category term="selfhosting" /><category term="homelab" /><summary type="html"><![CDATA[I presently have immich and filebrowser running on my server. I wanted to have a password manager for a lon time and was searching for something which is reliable and has a self hosted solution. I found Bitwarden and subsequently found Vaultwarden. I copied the compose.yml, ran docker and gave it a random port. I went to the URL and was greeted with this :]]></summary></entry></feed>