Your personal comic library server
Host your digital comics (CBZ/CBR files) on your home server and read them on any device. Issued automatically organizes your collection and makes it available through mobile apps like Panels, Chunky, or a built-in web reader.
β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ ATTENTION!! β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ
During a campaign affecting HUNDREDS of repositories on github, Issued has been hacked. If you have installed the repository by cloning the repo and using directly the python files between March 8β14, please delete it immediately and clean your machine because the repository had a malicious code able to run unwanted code using nodejs. This has been solved on the repo and I'm still investigating HOW they hacked the repo without hacking my account. I'm terribly sorry about this and I will do my best to prevent this in the future. You can read more in here
β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ ATTENTION!! β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ β οΈ
- π Keep your folder structure β No need to reorganize your comics
- π Automatic updates β New comics are detected and added automatically
- πΌοΈ Thumbnail previews β See cover images before opening
- π± Read anywhere β Use your favorite comic reader app (Panels, Chunky, etc.)
- π Web reader β Read in your browser without installing anything (on mobile too!)
- β‘ Easy setup β One command to get started
Docker users: skip this section β the Docker image includes everything you need.
For CBR files only (skip if you only have CBZ):
Install unrar on your computer:
- macOS:
brew install rar - Linux:
sudo apt install rar - Windows: Download from rarlab.com
Note: CBZ files work without any extra software. CBR files need
unrarto extract.
Best for: Running on a home server or NAS. Everything is pre-configured, including unrar.
Step 1: Create a docker-compose.yml file anywhere on your server:
services:
issued:
image: ghcr.io/metalogico/issued:latest
restart: unless-stopped
ports:
- "8181:8181"
volumes:
- ./data:/app/data
- /path/to/your/comics:/comics:ro # β Change this pathChange /path/to/your/comics to your comics folder:
- /home/user/Comics:/comics:ro # Linux
- /Users/john/Comics:/comics:ro # macOS
- C:/Comics:/comics:ro # WindowsStep 2: Start the server
docker compose up -dDone! Your comics are now available at:
- π± Mobile apps:
http://YOUR-SERVER-IP:8181/opds/ - π Web reader:
http://YOUR-SERVER-IP:8181/reader/
Replace
YOUR-SERVER-IPwith your computer's IP address (e.g.,192.168.1.100)
Alternative: docker run
docker run -d --name issued \
--restart unless-stopped \
-p 8181:8181 \
-v /path/to/your/comics:/comics:ro \
-v issued_data:/app/data \
ghcr.io/metalogico/issued:latestAlternative: docker create (create now, start later)
docker create \
--name=issued \
--user 1000:1000 \
-p 8181:8181 \
--mount type=bind,source=/path/to/your/comics,target=/comics,readonly \
--mount type=bind,source=/path/to/data,target=/app/data \
--restart unless-stopped \
ghcr.io/metalogico/issued:latestThen start it:
docker start issuedThe image is also available on Docker Hub as metalogico/issued.
Best for: Quick setup on your personal computer.
Step 1: Download for your system
Get the latest release from GitHub Releases:
- macOS:
issued-macos - Linux:
issued-linux - Windows:
issued.exe
Step 2: Make it executable (macOS/Linux only)
chmod +x issued
# macOS only: If blocked by security
xattr -d com.apple.quarantine issuedStep 3: Initialize your library
# Replace with your actual comics folder path
./issued init --library /path/to/your/comicsExamples:
./issued init --library ~/Comics # macOS/Linux
./issued init --library C:\Users\You\Comics # WindowsStep 4: Scan your comics
./issued scanThis will:
- Find all CBZ/CBR files
- Create thumbnails
- Build the library database
Step 5: Start the server
./issued serveDone! Your comics are now available at:
- π± Mobile apps:
http://YOUR-COMPUTER-IP:8181/opds/ - π Web reader:
http://YOUR-COMPUTER-IP:8181/reader/
Tip: Keep the terminal window open while the server runs. New comics will be detected automatically.
Popular apps that work with Issued:
- Panels (iOS) - Best overall experience
- Chunky Reader (iOS) - Great for iPad
- KyBook (iOS) - Feature-rich
- Moon+ Reader (Android) - Highly customizable
- And many oders with opds support (please let me know what you use and I'll add it here)
How to connect:
- Open your comic reader app
- Add a new OPDS catalog
- Enter:
http://YOUR-IP:8181/opds/ - Browse and download comics!
Finding your IP:
- macOS/Linux: Run
ifconfigorip addr- Windows: Run
ipconfig- Look for something like
192.168.1.100
Just open: http://localhost:8181/reader/
Optional: Add password protection by editing config.ini:
[reader]
user = yourname
password = yourpasswordJust copy them to your comics folder! If the server is running, they'll be detected automatically.
Or manually scan:
./issued scan./issued scan --force./issued stats./issued thumbnails --regenerateEdit config.ini in the same folder as the executable:
- Change port:
[server]βport = 8080 - Add password:
[reader]βuser = name,password = pass - Adjust thumbnails:
[thumbnails]βwidth,height,quality
Edit config.ini for more options:
[library]
path = /path/to/comics # Your comics folder
name = My Comics # Library name shown in apps
[server]
host = 0.0.0.0 # Listen on all network interfaces
port = 8181 # Change if port is already in use
[thumbnails]
width = 300 # Thumbnail width in pixels
height = 450 # Thumbnail height in pixels
quality = 85 # JPEG quality (1-100)
format = jpeg # jpeg or webp
[monitoring]
enabled = true # Auto-detect new comics
debounce_seconds = 2 # Wait time before processing changes
[reader]
user = # Leave empty for no password
password = # Leave empty for no password-
Check the scan worked:
./issued stats
Should show your comic count.
-
Try a forced rescan:
./issued scan --force
-
Use your computer's IP address, not
localhost- Find it:
ifconfig(Mac/Linux) oripconfig(Windows) - Example:
http://192.168.1.100:8181/opds/
- Find it:
-
Check firewall:
- Make sure port 8181 is allowed
- macOS: System Settings β Network β Firewall
- Windows: Windows Defender Firewall β Allow an app
-
Make sure both devices are on the same network
- Computer and phone/tablet must be on the same WiFi
Install unrar:
- macOS:
brew install unrar - Linux:
sudo apt install unrar - Windows: Download from rarlab.com
Then restart the server.
xattr -d com.apple.quarantine issuedEdit config.ini and change the port:
[server]
port = 8080Then use http://YOUR-IP:8080/opds/ instead.
Docker: It runs in the background automatically.
Executable: Run in the background:
# macOS/Linux
nohup ./issued serve &
# Or use screen/tmux
screen -S issued
./issued serve
# Press Ctrl+A then D to detachThis project uses the violet accent color just because my baby daughter is called Violet <3
If you're stuck:
- Check the Issues page
- Open a new issue with:
- Your OS (macOS/Linux/Windows)
- How you installed (Docker/executable)
- What you tried
- Error messages (if any)
MIT. See LICENSE for details.