# ───────────────────────────────────────────────────────────── # media-vault — configuration # Copy to `.env` and fill in. NEVER commit your real .env. # ───────────────────────────────────────────────────────────── # ---- Database (Postgres) ---- POSTGRES_USER=mediavault POSTGRES_PASSWORD=change-me-in-prod POSTGRES_DB=mediavault POSTGRES_HOST=db POSTGRES_PORT=5432 # ---- Backend ---- # Port the API listens on (inside the container / locally) BACKEND_PORT=4000 # Secret used to sign session cookies. Generate a long random string. SESSION_SECRET=change-me-to-a-long-random-string # Public origin of the frontend, used for CORS + cookie settings. APP_ORIGIN=http://localhost:8080 # Set to "production" behind TLS so session cookies are marked Secure. NODE_ENV=development # Default household user, created on first boot to own the seeded 513-game list. # Log in with these, then change the password from the UI. SEED_USER_EMAIL=admin@media-vault.local SEED_USER_PASSWORD=changeme SEED_USER_NAME=Collector # Open registration. Keep false on a network-exposed instance (the seed user above # always exists). Set true only if you want new people to self-register accounts. ALLOW_REGISTRATION=false # ---- Frontend (nginx) exposed port ---- FRONTEND_PORT=8080 # ───────────────────────────────────────────────────────────── # Metadata sources — bring your own free API keys. # Enrichment stays idle for any source whose keys are blank. # ───────────────────────────────────────────────────────────── # IGDB (games) — via a Twitch developer app. # 1. https://dev.twitch.tv/console/apps → Register Your Application # 2. OAuth Redirect URL: http://localhost (any valid URL; unused by us) # 3. Category: Application Integration # 4. Copy the Client ID, then "New Secret" for the Client Secret. IGDB_CLIENT_ID= IGDB_CLIENT_SECRET= # TMDB (movies) — https://www.themoviedb.org/settings/api # Use the API Read Access Token (v4 auth), a long "eyJ..." bearer token. TMDB_ACCESS_TOKEN= # Language for movie titles/descriptions, e.g. en-US or de-DE. TMDB_LANGUAGE=en-US # Discogs (vinyl LP / single / CD) — https://www.discogs.com/settings/developers # Two options (either works for read-only metadata): # (a) "Generate new token" → personal access token → set DISCOGS_TOKEN, or # (b) register an app → Consumer Key + Secret → set DISCOGS_KEY + DISCOGS_SECRET. DISCOGS_TOKEN= DISCOGS_KEY= DISCOGS_SECRET= # Discogs requires a descriptive User-Agent identifying your app. DISCOGS_USER_AGENT=media-vault/0.1 (+https://github.com/halvar20000/media-vault) # ---- Valuation ---- # Game valuation via PriceCharting. NOTE: their API requires a PAID subscription # token (https://www.pricecharting.com/api-documentation) — there is no free game # price API. Leave blank to disable game valuation. Music valuation uses Discogs # (your key above); movies have no automatic price source (manual only). PRICECHARTING_TOKEN= # Currency for Discogs marketplace prices, e.g. EUR, USD, GBP. VALUATION_CURRENCY=EUR # ---- Second-hand marketplace(s) ---- # Which marketplace(s) the "find deals / bundles" buttons search. Comma-separated # — each value adds its own search button, so you can offer several at once. # Titles and bundle/lot phrasing come out in each site's language. Values: # leboncoin (France), kleinanzeigen (Germany), ebay-de, ebay-com, ebay-uk, # ebay-fr, marktplaats (Netherlands), wallapop (Spain), medimops (German # used-media shop), or none to hide the buttons. # Example (several at once): MARKETPLACE=leboncoin,medimops,kleinanzeigen MARKETPLACE=leboncoin