# Environment variables for Linear Void # Copy to .env and fill in real values for local/development use. # Production secrets should be managed via Docker secrets, Cloudflare, or Hetzner environment. # Cloudflare R2 (S3-compatible) R2_ACCESS_KEY_ID=your-r2-access-key R2_SECRET_ACCESS_KEY=your-r2-secret-key R2_BUCKET_NAME=linearvoid-media R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com R2_REGION=auto R2_SEGMENT_RETENTION_HOURS=24 # Cloudflare (for custom domain, cache rules, Workers if used) CLOUDFLARE_API_TOKEN=your-cloudflare-api-token CLOUDFLARE_ACCOUNT_ID=your-account-id MEDIA_DOMAIN=media.linearvoid.tv # Public frontend URLs (Vite reads these from the repository root via frontend/vite.config.ts) # Preferred local setup in this repo uses the real public domains through Cloudflare/Nginx Proxy Manager. VITE_PUBLIC_APP_URL=https://linearvoid.tv VITE_PUBLIC_WS_URL=wss://linearvoid.tv/ws VITE_PUBLIC_HLS_URL=https://media.linearvoid.tv/hls/playlist.m3u8 VITE_PUBLIC_ADMIN_DEFAULT_MODERATOR=admin VITE_PUBLIC_ADMIN_DEFAULT_ROOM=main VITE_PUBLIC_ADMIN_MODERATION_LOG_LIMIT=50 ADMIN_USERNAME=admin ADMIN_PASSWORD=change-me ADMIN_SESSION_TTL_HOURS=12 # Optional direct-local fallback when bypassing the public proxy: # VITE_PUBLIC_APP_URL=http://localhost # VITE_PUBLIC_WS_URL=ws://localhost/ws # VITE_PUBLIC_HLS_URL=http://localhost/hls/playlist.m3u8 # Gitea Container Registry (for self-hosted Docker images) CI_REGISTRY_URL=git.allucanget.biz CI_REGISTRY_USER=your-gitea-username CI_REGISTRY_TOKEN=your-gitea-token CI_REGISTRY_NAMESPACE=zwitschi/linearvoid # Gitea API access (optional, for CI/release automation) CI_SERVER_URL=https://git.allucanget.biz # Chat / Application Database (compose-safe PostgreSQL by default, SQLite optional) DATABASE_URL=postgres://linearvoid:linearvoid@db:5432/linearvoid?sslmode=disable # Or for SQLite-only local development: # DATABASE_URL=sqlite://./data/chat.db # Redis (for presence, rate limiting, pub/sub) REDIS_URL=redis://redis:6379/0 # Service Ports (for local docker-compose) PLAYOUT_PORT=8080 CHAT_PORT=3000 NGINX_PORT=80 # Playout configuration PLAYLIST_PATH=/app/playlist/playlist.txt HLS_SEGMENT_DURATION=2 HLS_WINDOW_SIZE=12 # Shared runtime config (written by chat admin via /api/admin/config, read by playout). # Both resolve to the same host file through the ./data/playlist volume. CONFIG_PATH=/app/playlist/config.json PLAYOUT_CONFIG_PATH=/app/playlist/config.json # Logging / Monitoring LOG_LEVEL=info PROMETHEUS_PORT=9090 GRAFANA_PORT=3001 # Development flags NODE_ENV=development GO_ENV=development