-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample.env
More file actions
161 lines (140 loc) · 7.33 KB
/
example.env
File metadata and controls
161 lines (140 loc) · 7.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# Database
# PostgreSQL connection string
# Format: postgresql://[user]:[password]@[host]:[port]/[database]?schema=public
# For local development with Docker: postgresql://postgres:postgres@localhost:5432/plex_wrapped?schema=public
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/plex_wrapped?schema=public"
# Application URL Configuration
# NEXT_PUBLIC_APP_URL is used for public-facing URLs (sharing links, OG images, etc.)
# NEXTAUTH_URL is required by NextAuth.js for OAuth callbacks and session management
# In production, set both to your domain (e.g., https://yourdomain.com)
# For development, localhost is fine
NEXT_PUBLIC_APP_URL="http://localhost:3000"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key-here-generate-with-openssl-rand-base64-32"
# Plex Authentication
# No OAuth credentials needed - Plex uses PIN-based authentication
# PLEX_CLIENT_IDENTIFIER should be a unique identifier for your application instance
# It can be any string (doesn't need to be a UUID)
PLEX_CLIENT_IDENTIFIER=""
# Test Authentication (for E2E tests)
# Enable test token authentication for Playwright E2E tests
# WARNING: Never enable this in production! Only for development/testing
# NEXT_PUBLIC_ENABLE_TEST_AUTH="true"
# E2E Test Server Port
# Port for the dev server when running Playwright E2E tests (default: 3000)
# E2E_PORT="3001"
# Discord Bot / Linked Roles
# ENABLE_DISCORD_BOT="true" # Set to "false" to disable bot attempts (default: enabled)
# # Uses distributed database lock - only one pod will run the bot automatically
# DISCORD_BOT_POLL_INTERVAL_MS=60000 # How often to poll for lock availability (default: 60000 = 1 minute)
# DISCORD_BOT_TOKEN="discord-bot-token"
# DISCORD_SUPPORT_CHANNEL_ID="123456789012345678"
# DISCORD_SUPPORT_THREAD_IDS="123456789012345678,234567890123456789"
# DISCORD_PORTAL_URL="https://yourdomain.com/discord/link" # Optional: defaults to NEXT_PUBLIC_APP_URL/discord/link
# PLEX_WRAPPED_BASE_URL="https://yourdomain.com" # Only needed for external API access (bot uses direct function calls)
# =============================================================================
# DEVELOPMENT DEFAULTS FOR SETUP WIZARD
# =============================================================================
#
# SECURITY WARNING: These DEV_* variables are ONLY read in development mode
# (NODE_ENV=development). They are completely ignored in production.
#
# IMPORTANT SECURITY NOTES:
# - Never commit real API keys or tokens to version control
# - These values are stored in plaintext and may appear in logs
# - For production, always use the setup wizard UI to configure services
# - If you use these for local development, ensure your .env is in .gitignore
#
# HOW IT WORKS:
# - DEV_* variables pre-populate the setup wizard forms
# - Set DEV_SETUP_AUTO_SUBMIT=true for zero-click setup (forms auto-submit)
# - A warning banner appears in the UI when dev defaults are active
# =============================================================================
# Auto-submit: Enable zero-click setup wizard (requires all fields populated)
# DEV_SETUP_AUTO_SUBMIT="true"
# -----------------------------------------------------------------------------
# Service Configuration Defaults
# -----------------------------------------------------------------------------
# URL format: include protocol and port (e.g., https://localhost:32400)
# Plex Server
DEV_PLEX_NAME="My Plex Server"
DEV_PLEX_URL="https://localhost:32400"
DEV_PLEX_TOKEN=""
# DEV_PLEX_PUBLIC_URL="" # Optional: public-facing URL for links
# Tautulli
DEV_TAUTULLI_NAME="My Tautulli Server"
DEV_TAUTULLI_URL="http://localhost:8181"
DEV_TAUTULLI_API_KEY=""
# DEV_TAUTULLI_PUBLIC_URL="" # Optional: public-facing URL for links
# Overseerr
DEV_OVERSEERR_NAME="My Overseerr Server"
DEV_OVERSEERR_URL="http://localhost:5055"
DEV_OVERSEERR_API_KEY=""
# DEV_OVERSEERR_PUBLIC_URL="" # Optional: public-facing URL for links
# Sonarr
DEV_SONARR_NAME="My Sonarr Server"
DEV_SONARR_URL="http://localhost:8989"
DEV_SONARR_API_KEY=""
# DEV_SONARR_PUBLIC_URL="" # Optional: public-facing URL for links
# Radarr
DEV_RADARR_NAME="My Radarr Server"
DEV_RADARR_URL="http://localhost:7878"
DEV_RADARR_API_KEY=""
# DEV_RADARR_PUBLIC_URL="" # Optional: public-facing URL for links
# -----------------------------------------------------------------------------
# Discord Integration Defaults
# -----------------------------------------------------------------------------
# DEV_DISCORD_ENABLED="false" # Enable Discord linked roles
# DEV_DISCORD_BOT_ENABLED="false" # Enable Discord bot functionality
# DEV_DISCORD_CLIENT_ID="" # Discord application client ID
# DEV_DISCORD_CLIENT_SECRET="" # Discord application client secret
# DEV_DISCORD_GUILD_ID="" # Restrict to specific Discord server
# DEV_DISCORD_SERVER_INVITE_CODE="" # Discord server invite code
# DEV_DISCORD_PLATFORM_NAME="" # Display name (default: "Plex Wrapped")
# DEV_DISCORD_INSTRUCTIONS="" # Internal admin notes
# -----------------------------------------------------------------------------
# LLM Provider Defaults
# -----------------------------------------------------------------------------
# Generic LLM settings (used as fallback for both Chat and Wrapped)
DEV_LLM_PROVIDER="openai"
DEV_LLM_API_KEY=""
DEV_LLM_MODEL=""
# Chat Assistant AI (admin troubleshooting chatbot)
# These override the generic DEV_LLM_* settings for the chat purpose
# DEV_CHAT_LLM_PROVIDER="openai"
# DEV_CHAT_LLM_API_KEY=""
# DEV_CHAT_LLM_MODEL="gpt-4o-mini"
# DEV_CHAT_LLM_TEMPERATURE="0.7" # 0.0-2.0, controls randomness
# DEV_CHAT_LLM_MAX_TOKENS="1000" # Max tokens in response
# Wrapped Generation AI (Plex Wrapped story generation)
# These override the generic DEV_LLM_* settings for the wrapped purpose
# DEV_WRAPPED_LLM_PROVIDER="openai"
# DEV_WRAPPED_LLM_API_KEY=""
# DEV_WRAPPED_LLM_MODEL="gpt-4o"
# DEV_WRAPPED_LLM_TEMPERATURE="0.8" # 0.0-2.0, controls randomness
# DEV_WRAPPED_LLM_MAX_TOKENS="6000" # Max tokens in response
# LLM Request Timeout (optional)
# Timeout in milliseconds for LLM API calls (default: 300000 = 5 minutes)
# Increase this if you're experiencing timeout errors with complex prompts
# LLM_REQUEST_TIMEOUT_MS=300000
# Logging Level (optional)
# Controls the verbosity of logs: error, warn, info, verbose, debug, silly
# Defaults to "debug" in development, "info" in production
# Set to "info" to turn off debug logs
# LOG_LEVEL="info"
# -----------------------------------------------------------------------------
# Job Queue (BullMQ)
# -----------------------------------------------------------------------------
# Redis is required for the job queue. If not configured, the app falls back
# to legacy PostgreSQL-based polling for background jobs.
#
# REDIS_URL: Connection string for Redis
# Format: redis://[username:password@]host:port[/database]
# REDIS_URL="redis://localhost:6379"
#
# ENABLE_QUEUE_WORKER: Enable/disable the queue worker (default: true when Redis is configured)
# Set to "false" to disable the worker (e.g., for dedicated worker deployments)
# ENABLE_QUEUE_WORKER="true"
#
# QUEUE_WORKER_CONCURRENCY: Number of concurrent jobs the worker can process (default: 5)
# QUEUE_WORKER_CONCURRENCY="5"