Drop
Self-hosted, DRM-free game distribution platform
Alternative to: steam, gog.com, itch.io
Drop is an open-source game distribution platform for hosting and sharing your own library of DRM-free games, similar to Steam or GOG but fully self-hosted. It provides a fast, flexible web storefront for browsing and downloading games from your own server, with authentication via username/password or SSO. Built for game collectors and small communities who want to run their own store without relying on a third-party platform.
Drop Docker Compose example
Self-host Drop on your own server, homelab, or VPS starting from this Docker Compose example.
It runs Drop in Docker containers using the official ghcr.io/drop-oss/drop:latest, postgres:16-alpine images, with persistent volumes and automatic restarts preconfigured.
Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.
services:
drop:
image: ghcr.io/drop-oss/drop:latest
depends_on:
db:
condition: service_healthy
volumes:
# Game library — the DRM-free game files Drop distributes
- library:/library
# Application data (client certificates, uploads, metadata cache)
- data:/data
environment:
# Postgres connection string (points at the bundled db service)
DATABASE_URL: "postgres://drop:drop@db:5432/drop"
# Public URL the browser and game clients use to reach this instance —
# set this to your real external address (e.g. https://drop.example.com)
EXTERNAL_URL: "http://localhost:3000"
# Optional Giant Bomb API key for richer game metadata (leave empty to disable)
GIANT_BOMB_API_KEY: ""
# Optional IGDB (Twitch) client id for game metadata (leave empty to disable)
IGDB_CLIENT_ID: ""
# Optional IGDB (Twitch) client secret for game metadata (leave empty to disable)
IGDB_CLIENT_SECRET: ""
restart: unless-stopped
db:
image: postgres:16-alpine
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: drop
POSTGRES_PASSWORD: drop
POSTGRES_DB: drop
healthcheck:
test: ["CMD", "pg_isready", "-U", "drop", "-d", "drop"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
volumes:
library:
data:
db_data: Prefer a managed setup? WinterFlow installs, configures, and updates Drop for you using this same Docker Compose configuration.