Your Comics, Your Server, Your Rules
Cloud-based reading apps are convenient until they aren’t. Subscriptions get more expensive, libraries get pulled without notice, and your reading history gets quietly harvested. Komga offers a different path: a self-hosted media server built specifically for comics, manga, and ebooks in CBZ, CBR, PDF, and EPUB formats. You run it on your own hardware, access it from any browser or compatible app, and nothing leaves your network unless you want it to.
The setup process is straightforward if you’re comfortable with basic terminal commands or Docker. Komga runs on any machine that can handle a Java runtime or a Docker container – that includes a Raspberry Pi, an old desktop, a NAS device, or a rented VPS. This guide walks through installation, library configuration, and getting your reader apps connected.

Installation: Docker or Native Java
Docker is the fastest route. If you already have Docker installed and running on your server, pull the Komga image with a single command: docker pull gotson/komga. From there, you create a container with two volume mounts – one for the Komga configuration directory and one pointing to wherever your comics are stored on disk. A basic run command looks like this: docker run -d –name komga -p 25600:25600 -v /your/config/path:/config -v /your/comics/path:/data gotson/komga. Swap in your actual paths, and Komga starts immediately on port 25600.
If Docker isn’t your preference, the native Java method works just as well. Download the latest JAR file from the official Komga GitHub releases page, make sure you have Java 17 or later installed, and run it with java -jar komga.jar. On first launch, Komga creates its configuration files in a default application data folder. You can override the data directory and port by passing arguments or by editing the application.yml config file that Komga generates automatically. Either way, once it’s running, navigate to http://your-server-ip:25600 in a browser to reach the web interface.
For users managing multiple self-hosted services, running Komga through Portainer for visual Docker container management makes it easier to monitor logs, restart the container, and manage environment variables without touching the terminal every time.

First Login and Account Setup
On first access, Komga prompts you to create an admin account. Use a strong password even on a home network – if you ever expose this server to the internet through a reverse proxy, that account is your only gate. After logging in, you land on the dashboard, which is empty until you add your first library.
Go to Server Settings, then Libraries, and click the plus icon. You give the library a name – “Marvel,” “Manga,” “Webtoons,” whatever makes sense – and point it at the directory path where those files live. Komga scans that directory, reads metadata from CBZ files (which are essentially ZIP archives with embedded ComicInfo.xml files), and builds a browsable library automatically. Series are grouped by folder structure, and cover art is pulled from the first page of each issue unless a dedicated cover file is present.
Library Organization and Metadata
How you organize your files on disk directly affects how Komga presents them. The recommended structure is one folder per series, with individual issue files inside. A folder named The Sandman containing The Sandman 001.cbz, The Sandman 002.cbz, and so on will be read as a single series with numbered issues. Komga respects this hierarchy and handles nested folders, so you can have a top-level DC Comics directory containing dozens of series subdirectories.
Metadata editing is available directly in the Komga interface. You can override series titles, set reading direction (critical for manga, where right-to-left is standard), assign age ratings, and add tags manually. For bulk metadata management, Komga supports the ComicInfo.xml standard, which means tools like ComicTagger or Mylar3 can write metadata directly into your CBZ files before Komga ever scans them. Once a library scan runs, that embedded metadata populates automatically in the UI.
Komga also tracks reading progress per user. If you create multiple user accounts under Settings – Users, each person gets their own read/unread status, reading history, and bookmarks. This is useful for shared household setups where two people are working through the same collection at different paces. The per-user progress is stored in Komga’s database, not in the files themselves, so your source files stay untouched.

One detail worth getting right early: Komga does not move, rename, or modify your files under any circumstance. It reads from the paths you give it. If you reorganize your folders on disk, Komga will treat that as a deletion and re-addition, which resets reading progress for the affected items. A stable, well-organized directory structure before you set up your libraries saves a lot of re-scanning later. Plan your folder hierarchy before pointing Komga at it, not after you’ve already started reading.
Connecting Reader Apps
The Komga web interface works in any modern browser and is genuinely usable for reading – but native apps give you a better experience on tablets and phones. Komga exposes an OPDS feed and a native API that several third-party apps support. On Android, Tachiyomi (and its forks like Mihon) support Komga directly through a built-in extension. You add your server URL and credentials, and your entire library appears inside the app with full progress sync back to the server.
On iOS, Panels and Chunky are the most-used options, both supporting Komga’s OPDS catalog URL. Chunky in particular handles CBZ files well and respects reading direction settings. For desktop reading, the Komga web reader handles double-page spreads, zoom, and continuous scroll – the web-first design means you don’t necessarily need a separate app at all. The OPDS URL for any Komga instance follows the format http://your-server-ip:25600/opds/v1.2/catalog, which is what you paste into any OPDS-compatible reader to get started.
If you want remote access from outside your home network, a reverse proxy with a domain name and HTTPS is the standard approach. Nginx Proxy Manager or Caddy in front of Komga handles TLS termination cleanly, and Komga itself doesn’t need any special configuration – it just needs to be reachable. Without HTTPS, browser-based readers on mobile will block connections to plain HTTP addresses, so skipping encryption isn’t really an option for remote use. The gap between “running on my home network” and “accessible anywhere” is almost entirely a reverse proxy configuration problem, not a Komga one.





