<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kavita &#8211; Erik Makes Things</title>
	<atom:link href="https://erikmakesthings.ddns.net/category/kavita/feed/" rel="self" type="application/rss+xml" />
	<link>https://erikmakesthings.ddns.net</link>
	<description></description>
	<lastBuildDate>Thu, 10 Jul 2025 07:39:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://erikmakesthings.ddns.net/wp-content/uploads/2025/06/cropped-E-3-32x32.png</url>
	<title>Kavita &#8211; Erik Makes Things</title>
	<link>https://erikmakesthings.ddns.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Making Reading Great Again (with Kavita)</title>
		<link>https://erikmakesthings.ddns.net/making-reading-great-again-with-kavita/</link>
					<comments>https://erikmakesthings.ddns.net/making-reading-great-again-with-kavita/#respond</comments>
		
		<dc:creator><![CDATA[Erik]]></dc:creator>
		<pubDate>Thu, 10 Jul 2025 07:35:51 +0000</pubDate>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Kavita]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Server]]></category>
		<guid isPermaLink="false">https://erikmakesthings.ddns.net/?p=274</guid>

					<description><![CDATA[I love that reading is free, you can do it anywhere. You can do it on the train&#8230; uh, don&#8217;t do it while you&#8217;re driving &#8211; James Pumphrey When I was younger I used to avidly enjoy reading in my free time. From adventures in a galaxy far, far away (shoutout Karen Traviss), to the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>I love that reading is free, you can do it anywhere. You can do it on the train&#8230; uh, don&#8217;t do it while you&#8217;re driving</p>
</blockquote>



<p>&#8211; James Pumphrey</p>



<p>When I was younger I used to avidly enjoy reading in my free time. From adventures in a galaxy far, far away (shoutout Karen Traviss), to the neo-Greek mythology of the Percy Jackson series, I tore through books like it was my job. However, as I’ve gotten older that’s no longer the case. Between work and school, most of my reading now consists of dry technical manuals, textbooks, and reviews for whatever power tool I want to buy next.</p>



<p>So the goal of this project is to make whatever book I’m reading:</p>



<ol class="wp-block-list">
<li>Easily accessible</li>



<li>Simple to pick up right where I left off</li>



<li>Replaceable when I’m ready to crack open the next one</li>
</ol>



<p>Join me as we <strong>Make Reading Great Again</strong> so I have no excuse not to be well-read.</p>



<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="500" height="281" src="https://erikmakesthings.ddns.net/wp-content/uploads/2025/07/catreading.gif" alt="" class="wp-image-275"/></figure>



<h2 class="wp-block-heading">Picking a Platform</h2>



<p>Obviously, the first thing I could do to achieve this goal would be to open up my wallet and head to the nearest app store to get an e-reader service like Bezos’s Kindle or Google’s Shelf and start building a digital library that I don’t really own. But the easy way has some huge red flags. For example, say they lose the licensing or worse, <em>1984</em> comes to pass and certain books get banned and <em>poof</em>, there goes my book and my money.</p>



<p>Also, if you’ve read any of my posts so far you’re probably aware that I’m definitely a DIY kind of guy, and like with most things I’m going to do it myself.</p>



<p>So what are the options for self-hosting this kind of service? As you can tell from the title, I went with <strong>Kavita</strong> for its multi-user support, anywhere access, and mainly because I liked the UI the most. But there are other great options I stumbled upon that might suit your needs better:</p>



<ul class="wp-block-list">
<li><strong>Calibre</strong> for its wider format support and plugins.</li>



<li><strong>Komga</strong> if your main focus is comics and manga.</li>



<li><strong>Polar Bookshelf</strong> if you just want to install a Snap package and enjoy books locally.</li>
</ul>



<h2 class="wp-block-heading">The Set Up</h2>



<p>For this setup I’ll be using Kavita’s Docker image. There are plenty of ways to set it up, but for that I’ll refer you to their instructional page here: <a class="" href="https://wiki.kavitareader.com/getting-started/">https://wiki.kavitareader.com/getting-started/</a>.</p>



<p>I like using <strong>Portainer</strong> to set up and manage my Docker containers since it’s simple and easy. Remember to create your volume first, set your port mapping to 5000, and set the network adapter to bridge before pulling and creating the container.</p>



<p>Once it’s up and running you’re good to go to http://your-server-ip:5000, and you should be greeted with a simple sign-in screen to create your admin account. After you create your account and log in, the last thing is to load up something to read and create your libraries. Kavita supports formats like PDF, EPUB, and a variety of comic/manga formats.</p>



 [<a href="https://erikmakesthings.ddns.net/making-reading-great-again-with-kavita/">See image gallery at erikmakesthings.ddns.net</a>] 



<p>To make this all work you’ll need to create a folder and place each file in that folder. For example, my copy of <em>Pride and Prejudice</em> from <a class="" href="https://www.epubbooks.com/book/44-pride-and-prejudice">epubbooks.com</a> is mounted like this:</p>



<pre class="wp-block-code"><code>/storage/books/'Pride and Prejudice (Illustrated)'/austen-pride-and-prejudice-illustrations.epub
</code></pre>



<p>Now that you have your books loaded up, create a library by clicking on the gear icon in the top left, navigating to the Libraries tab under Server, and clicking on the <strong>Add Library</strong> button. In the popup, give it a name and point it to the folder you mounted with your media. I decided to split my libraries into books, comics, and manga.</p>



<h2 class="wp-block-heading">Mr. Worldwide </h2>



<p>You can stop here if you only want access to your e-library locally, but I decided to take it a step further. To access the library securely from anywhere in the world, I created a domain name with NO-IP, used Certbot to generate some SSL certificates, and created and enabled my .conf file.</p>



<p>That’s right, eriks-library (e-library for short) can now be accessed anywhere with an internet connection.</p>



<p>If you want to do this too, there are more detailed instructions in Kavita’s setup guide I linked earlier. Or if you’re using Apache2, you can copy, edit, and enable the slightly trimmed-down config file I made for the reverse proxy:</p>



<pre class="wp-block-code"><code>&lt;IfModule mod_ssl.c&gt;
&lt;VirtualHost *:443&gt;
    ServerName your.domain.com

    SSLEngine on
    SSLProxyEngine on
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off

    # Use Let's Encrypt certificate paths
    SSLCertificateFile /etc/letsencrypt/live/your.domain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/your.domain.com/privkey.pem

    ErrorLog ${APACHE_LOG_DIR}/proxy-error.log
    CustomLog ${APACHE_LOG_DIR}/proxy-access.log combined

    ProxyPass / http://SERVER_IP_ADDR:5000/
    ProxyPassReverse / http://SERVER_IP_ADDR:5000/

    ProxyPreserveHost On
    ProxyRequests Off

    # WebSocket support
    RewriteEngine On
    RewriteCond %{HTTP:UPGRADE} ^.*WebSocket.*$ &#091;NC]
    RewriteCond %{HTTP:CONNECTION} ^.*Upgrade.*$ &#091;NC]
    RewriteRule .* ws://SERVER_IP_ADDR:5000%{REQUEST_URI} &#091;P]

    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"
    RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}e"
&lt;/VirtualHost&gt;
&lt;/IfModule&gt;
</code></pre>



<h2 class="wp-block-heading">On the Go</h2>



<p>The last step was figuring out how I’m going to access and enjoy my library from my phone. Currently, there’s only a third-party app called <strong>Kavita Blue</strong>, but when I tried it, it kept freezing and ruined the UI I like. So I just opened up Chrome on my phone, navigated to my domain, and set it up as a web app on my home screen. Sure, I could have paid for a Kindle subscription, but where’s the fun in that? Besides, now I get to say my library runs on Docker and that sounds way cooler at parties anyways.</p>



<figure class="wp-block-video aligncenter"><video height="1584" style="aspect-ratio: 720 / 1584;" width="720" controls src="https://erikmakesthings.ddns.net/wp-content/uploads/2025/07/webapp.mp4"></video></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://erikmakesthings.ddns.net/making-reading-great-again-with-kavita/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://erikmakesthings.ddns.net/wp-content/uploads/2025/07/webapp.mp4" length="7146987" type="video/mp4" />

			</item>
	</channel>
</rss>
