DVinyl logo

DVinyl

Self-hosted collection manager for vinyl, CDs, books, movies, and games

Alternative to: collectorz, discogs


DVinyl is a self-hostable collection manager for physical media lovers, letting you catalog, value, and organize vinyl records, CDs, books, movies, games, and LEGO sets from one place. It's plugin-based, so each media type can be toggled on independently or extended with custom types, and it pulls rich metadata from Discogs, TMDB, IGDB, Hardcover, and Rebrickable. It supports barcode scanning, wishlists, multi-collection and multi-user access with optional SSO/OIDC, and shareable collection links.

DVinyl Docker Compose example

Self-host DVinyl on your own server, homelab, or VPS starting from this Docker Compose example. It runs DVinyl in Docker containers using the official ghcr.io/kyonew/dvinyl:latest, mongo:latest 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:
  dvinyl-app:
    image: ghcr.io/kyonew/dvinyl:latest
    restart: unless-stopped
    depends_on:
      - mongodb
    environment:
      # MongoDB connection string (points at the bundled mongodb service).
      MONGODB_URL: "mongodb://mongodb:27017/dvinyl"
      # Secret used to sign session tokens. Must differ from SESSION_SECRET; generate with: openssl rand -hex 32
      PASSJWT: "4c6524bd32c20dbad852b8d2dea72167fb70df8498915f862dbee5666b5f99bb"
      # Secret used to encrypt sessions. Must differ from PASSJWT; generate with: openssl rand -hex 32
      SESSION_SECRET: "fbd506fa6b3f05657aeaa170ba498bf3327f65288a7a00fb0841306cfb3daeea"
      # Set to "true" ONLY when the app itself serves over HTTPS. Behind a TLS-terminating reverse proxy, keep "false".
      PROD: "false"
      # Port DVinyl listens on inside the container.
      VINYL_PORT: "3099"
      # Sub-path prefix to serve from; leave empty to serve from the root.
      BASE_URL: ""
      # Discogs API token, enables music (vinyl/CD) metadata lookups.
      DISCOGS_TOKEN: ""
      # Hardcover API key, enables book metadata lookups.
      HARDCOVER_API_KEY: ""
      # TMDB API key, enables movie/DVD metadata lookups.
      TMDB_API_KEY: ""
      # Twitch client ID, enables game (IGDB) metadata lookups.
      TWITCH_CLIENT_ID: ""
      # Twitch client secret, enables game (IGDB) metadata lookups.
      TWITCH_CLIENT_SECRET: ""
      # Rebrickable API key, enables LEGO set metadata lookups.
      REBRICKABLE_API_KEY: ""
    volumes:
      # Uploaded cover art and user files.
      - uploads:/app/public/uploads

  mongodb:
    image: mongo:latest
    restart: unless-stopped
    volumes:
      # MongoDB database files.
      - mongo_data:/data/db

volumes:
  uploads:
  mongo_data:

Prefer a managed setup? WinterFlow installs, configures, and updates DVinyl for you using this same Docker Compose configuration.