A self-hosted game library manager born from a passion for game preservation.
GamesDownloader is your own private game vault: build and manage a personal collection of GOG titles, custom games, and a full ROM library, browse it through a clean web interface, play retro games straight in the browser, and share access with family or friends on your network.
Get started: Installation guide · Full docs: Wiki · Community: Discord
Commercial game storefronts come and go. DRM servers go offline. Publishers get acquired. Games get delisted.
GamesDownloader is a personal project built on the belief that games you own should stay yours: properly catalogued, beautifully presented, and available whenever you want them. It runs happily LAN-only with no domain or proxy, and scales up to a hardened, internet-facing instance when you want one.
Every area below has a dedicated page in the Wiki with the full detail.
- GOG account sync with queued downloads, pause/resume/retry, checksum verification, and per-platform packaging. Multi-user: everyone can connect their own GOG account, with owner tracking and deduplication.
- Custom games uploaded through the browser (a local file or a direct URL) or added by magnet /
.torrent, each landing in whichever library you are viewing, organised by OS, type, version, and language. - ROM library scanned per platform, matched by hash (CRC32 / MD5 / SHA1 from inside
.zip/.7z) for spot-on results. - Full detail: Library · GOG Integration · ROMs & Emulation
- Play ROMs directly in the browser via EmulatorJS (NES, SNES, GBA, Genesis, N64, PS1, arcade, and more), with save states, battery saves, bezels, and gamepad support.
- Couch Mode: a full-screen, controller-first console UI with a platform carousel and a complete emulator settings system.
- Full detail: ROMs & Emulation
- A role-aware overview screen. Every user gets a personal Your activity panel (downloads, game saves with a per-user quota, requests, continue-playing), and admins additionally get a live Server overview - a real-time transfer queue, a server-health heartbeat, download and email stats, top titles and platforms, security, antivirus, and disk - all gated on the server, not just hidden.
- Full detail: Dashboard
- One-pass scraping from IGDB, RAWG, ScreenScraper, SteamGridDB, LaunchBox, HowLongToBeat, and metadata plugins, merged across sources.
- A ten-tab Edit Metadata panel with combined multi-source search and per-field overrides. All scraped media is downloaded and served locally, never hot-linked.
- Full detail: Scrapers & Metadata
- Role-based access (Admin / Uploader / Editor / User), per-game access control, JWT sessions with instant revocation, and SSO (OIDC, Google, GitHub, Microsoft).
- Brute-force protection, IP allowlist, trusted-proxy real-IP handling, two-factor auth, ClamAV antivirus, encrypted-at-rest secrets, audit log, and email security alerts.
- Full detail: Network & Security · Users & Permissions · Security
- Shareable one-time download tokens (optional password, expiry, and download limit, no account needed) and torrent seeding of any library file via the built-in Transmission daemon.
- Full detail: Downloads & Sharing
- Recently-added announcements in the spirit of Plex/Tautulli: a rich Discord card per title, plus email as an immediate alert or a scheduled daily / weekly digest with a branded two-per-row layout (Games / GOG / ROMs), per-user opt-in, and delivery only to people who can actually see each item.
- Webhook and email for GOG library sync and game requests (to admins, with the decision going back to the requester), alongside the security alerts and periodic report.
- Full detail: Email & Notifications
- A plugin system (metadata scrapers, download providers, library sources, widgets, lifecycle hooks) and full theme plugins that ship complete custom Vue layouts, installable from a plugin store.
- Full detail: Plugin Development
Two built-in layouts, Modern (cover grid, list view, alphabet sidebar) and Classic (game-detail sidebar), plus 14 colour skins and a glass UI. Hot-swap between them with no reload.
Theme plugins go further and replace the whole layout. Two examples:
| Neon Horizon | Vapor |
|---|---|
![]() |
![]() |
| Netflix-style hero and tabs | Storefront look in the spirit of the big launchers |
More on the Themes page.
# Create a folder, drop in the docker-compose.yml and .env from the wiki, then:
docker compose pull
docker compose up -dOpen http://localhost:8080 and the setup wizard guides you through the rest. The prebuilt multi-arch image (linux/amd64 and linux/arm64) is on Docker Hub as 60plus/gamesdownloader.
The Installation guide has the complete docker-compose.yml, a ready-to-edit .env, and everything about first boot, updating, and running behind a reverse proxy.
The full manual lives in the Wiki:
- Installation and Reverse Proxy & HTTPS
- Configuration, Scrapers & Metadata, Email & Notifications, Network & Security
- Features: Dashboard, Library, Collections, GOG Integration, ROMs & Emulation, Downloads & Sharing, Users & Permissions, Themes
- Plugin Development and the Plugin Trust Model
- Troubleshooting & FAQ
| Layer | Technology |
|---|---|
| Backend | Python · FastAPI · SQLAlchemy · asyncio |
| Frontend | Vue 3 · Vite · Pinia · Vuetify · custom CSS |
| Emulation | EmulatorJS (local-first) · RetroArch cores via WebAssembly |
| Database | MariaDB |
| Cache / Queue | Redis (Valkey) |
| Real-time | Socket.IO |
| Antivirus | ClamAV (in-container) |
| Torrent | Transmission (in-container) |
| Plugins | pluggy |
| Deployment | Docker · Docker Compose |
GamesDownloader was inspired by several outstanding open-source projects, notably RomM (emulation library architecture and metadata approach) and Gameyfin (the personal game vault concept).
Platform artwork (frontend/public/platforms/*) comes from EmulationStation community themes by RobZombie9043 (Colorful Pop, Elementerial), used under CC BY-NC-SA 4.0. See LICENSE-ASSETS and NOTICE.md. All credit for the original artwork goes to RobZombie9043.
Thanks also to the teams behind EmulatorJS, ScreenScraper, SteamGridDB, LaunchBox, HowLongToBeat, IGDB, RAWG, and the many open-source projects this codebase stands on.
This project uses a dual-licensing scheme:
| Scope | Licence | File |
|---|---|---|
| Source code (backend + frontend + plugins) | GNU AGPL-3.0 | LICENSE |
Platform artwork (frontend/public/platforms/*) |
CC BY-NC-SA 4.0 | LICENSE-ASSETS |
| Third-party service icons (GOG, IGDB, RAWG, Steam, etc.) | trademarks of their respective owners, nominative use | NOTICE.md |
In practice:
- Self-host, fork, modify, share with friends: fully permitted.
- Run a modified version as a public network service: you must release your changes under AGPL-3.0 (the copyleft server-side clause).
- Offer as a paid SaaS while bundling the platform artwork: not permitted (the NC clause applies to the CC BY-NC-SA assets). To run commercially, remove
frontend/public/platforms/and source compatible-licence artwork. - Attribution to RobZombie9043 must be preserved in any redistribution, see
NOTICE.md.
Not affiliated with GOG, Valve, Nintendo, Sony, Microsoft, Sega, CD PROJEKT, ScreenScraper, LaunchBox, EmulatorJS, or any other platform or service. All trademarks are property of their respective owners.








