Watcharr
Easily self-hosted movie, TV show, anime, and video game tracker with status management and ratings.
Smart Download
Visit Project Homepage
No installer available yet — head to the source repository
Self-host your own content watchlist for movies, TV, anime, and games.
Core Features
- Self-hosted – full control over your data
- Supports movies, TV shows, anime, and video games
- Track status: watched, watching, planned, etc., with ratings
- Built-in Discover page and user profiles, dark mode
- Docker one-click deploy with docker-compose
What It Can't Do
- •Requires TMDB and IGDB API keys for metadata; first run needs initial user setup; game tracking is optional and needs extra IGDB config.
Use Cases
- Privacy-first alternative to Trakt for tracking media
- Family or small team shared watch progress (e.g., binge-watching anime)
- Gamers tracking game completion (with IGDB config)
Detailed Introduction
Watcharr is an easily self-hosted content watched list that lets you store your watched, watching, or planned movies, TV shows, and anime. You can rate them, track their status, and even include video games with extra IGDB configuration. Built with Go and Svelte, it offers a modern, responsive interface with dark mode, user profiles, a discover page, and Docker deployment. Community plugins like a Kodi addon enhance automation. It’s a privacy-focused alternative to services like Trakt.
Troubleshooting & FAQ (2)
TroubleshootingWhy does Nginx reverse proxy to Watcharr time out even though Docker maps port 3080?
Watcharr listens on port **3000 inside the container**, not 3080. In Docker port mapping, the format is HOST:CONTAINER, so map host port 3080 to container port 3000:
services:
watcharr:
image: ghcr.io/sbondco/watcharr:latest
container_name: watcharr
ports:
- "3080:3000"
volumes:
- ./data:/data
restart: unless-stopped
Apply the change:
docker compose up -d
If Nginx runs on the host, proxy to the published host port:
location / {
proxy_pass http://127.0.0.1:3080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
If Nginx runs in a container, put both containers on the same Docker network and proxy directly to the container port:
proxy_pass http://watcharr:3000;
Verify the internal listener with:
docker logs watcharr
You should see Listening on http://0.0.0.0:3000. Using 3080:3080 causes the reverse proxy to time out because nothing is listening on port 3080 inside the Watcharr container.
TroubleshootingWhy does Watcharr log me out with 'database is locked' errors during a Trakt import?
This happens because the Trakt importer writes your entire watch history to the SQLite database in bulk, locking it so authentication queries fail (401 'not authorized' errors, forced logouts). Fix: update Watcharr to the latest version, which runs SQLite in WAL (Write-Ahead Logging) mode, allowing concurrent reads during imports. Workaround on older versions: the import continues in the background even if the progress popup appears stuck, so let it finish completely (large histories can take hours), then log back in once the database writes are done.
Tags
Getting Started
Download installer
Click the button above to download the installer for your system
Install the software
Double-click the downloaded installer and follow the prompts
Step 1: Install Docker and Docker Compose
Step 2: Download the docker-compose.yml from the repo root
Step 3: Run docker-compose up -d in terminal
- Step 1: Install Docker and Docker Compose
- Step 2: Download the docker-compose.yml from the repo root
- Step 3: Run docker-compose up -d in terminal
Checksum not available
This project has not published a SHA-256 checksum on its GitHub Release page
SHA256 Checksum
No checksum available
Download directly from GitHub Releases and verify file integrity yourself
All SHA-256 checksums on this platform are extracted from the project's official GitHub Release page, without any modification. You can independently verify them on the GitHub Releases page.
Open Source Transparency
View GitHub SourceUninstall Info
Stop containers (docker-compose down) and remove volumes (docker volume rm watcharr_data) to erase all data.
No Extra Dependencies
Ready to use after download. No additional runtime required.
Having issues? Check the FAQ below
2 FAQs
Similar Projects
Jellyfin
Free and open-source media system for managing and streaming your personal media collection to any device.
Sunshine
Self-hosted game stream host for Moonlight, supporting AMD, Intel, and Nvidia GPUs with low latency.
Jitsi Meet
Open-source video conferencing platform with HD audio/video, screen sharing, and mobile apps. Browser-based, no installation needed.