Separate YouTube video titles from on-video song/artist fields with Pro gating, serve curated fonts and watermark assets for 1:1 preview parity, and include billing/API/docs/deploy stack for self-hosted release.
2.7 KiB
2.7 KiB
sidebar_position
| sidebar_position |
|---|
| 3 |
Environment variables
Two files exist on purpose — they are not duplicates you both fill with secrets.
| File | Role |
|---|---|
.env.example |
Safe template committed to git. Shows names and placeholders. No real secrets. |
.env |
Your real local or production secrets. Gitignored. The app reads only this. |
Workflow: copy once (cp .env.example .env), then edit only .env. Leave .env.example as the shared checklist.
Required for local development
| Variable | Purpose |
|---|---|
DATABASE_URL |
Postgres connection string (Docker defaults work out of the box) |
REDIS_URL |
Redis for BullMQ and rate limiting |
NEXTAUTH_URL |
Public app URL, e.g. http://localhost:3000 or https://songs2vid.example.com |
NEXTAUTH_SECRET |
Long random string (e.g. openssl rand -base64 32) |
GOOGLE_CLIENT_ID |
Google OAuth client ID |
GOOGLE_CLIENT_SECRET |
Google OAuth client secret |
Create OAuth credentials in Google Cloud Console. Guide: Setting up OAuth 2.0. Enable YouTube Data API v3.
Optional
| Variable | Purpose |
|---|---|
TOKEN_ENCRYPTION_KEY |
Encrypts YouTube tokens at rest; falls back to NEXTAUTH_SECRET if unset |
UPLOAD_DIR |
Upload storage path; defaults to ./uploads (Compose uses /app/uploads) |
FFMPEG_PATH |
Override bundled ffmpeg-static binary |
S2VID_EDITION |
Set to selfhosted for unlimited video allowance, API access, and all layout features |
S2VID_PORT |
Host port for the optional root docker-compose.yml example (default 3000) |
NEXT_PUBLIC_GITEA_URL |
Footer / open-source link |
NEXT_PUBLIC_GITEA_ISSUES_URL |
Bug report link |
NEXT_PUBLIC_DOCKER_HUB_URL |
Docker image link |
NEXT_PUBLIC_DOCS_URL |
Docusaurus docs site. Omit locally to use http://localhost:3001 when NEXTAUTH_URL is localhost; production default https://docs.songs2vid.com |
ADMIN_API_KEY |
Optional Bearer token for internal admin HTTP routes. Not required for normal self-hosted operation |
Notes
- User API keys are generated in Dashboard → Settings (hashed at rest). They are not env vars.
- Self-hosted deployments should set
S2VID_EDITION=selfhosted(the optional root Compose example does this for you). - In production,
NEXTAUTH_URLmust match the public HTTPS URL users open in the browser, and the same origin must be listed as an OAuth redirect URI (…/api/auth/callback/google). See Production notes. - Never commit
.envor put production secrets in.env.example.