You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Server-side secret (AZURE_CLIENT_SECRET also supported)
NEXT_PUBLIC_URL
Yes
Public URL for callbacks/links
PACKAGER_MODE
Yes
github or local
DATABASE_MODE
Yes
supabase or sqlite
Database
Variable
Required
Notes
NEXT_PUBLIC_SUPABASE_URL
Required in supabase mode
Supabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEY
Required in supabase mode
Public anon key
SUPABASE_SERVICE_ROLE_KEY
Required for server operations in supabase mode
Privileged key
DATABASE_PATH
Optional in sqlite mode
Default ./data/intuneget.db
PACKAGER_API_KEY
Required in sqlite + local mode
Shared key for packager API auth
GitHub Packaging Mode
Variable
Required in PACKAGER_MODE=github
Notes
GITHUB_PAT
Yes
PAT to dispatch/check workflow runs
GITHUB_OWNER
Yes
User/org owner
GITHUB_WORKFLOWS_REPO
Yes
Private workflow repository
GITHUB_REPO
Optional
Public repo reference
GITHUB_WORKFLOW_FILE
Optional
Default package-intunewin.yml
GITHUB_REF
Optional
Default main
CALLBACK_SECRET
Recommended
HMAC verification for callback endpoint
Optional Integrations
Variable
Required
Notes
NEXT_PUBLIC_PLAUSIBLE_DOMAIN
Optional
Enables analytics tracking
BEEHIIV_API_KEY
Optional
Newsletter integration
RESEND_API_KEY
Optional
Email sending
RESEND_FROM_EMAIL
Optional
Email sender address
Runtime/Platform
Variable
Source
VERCEL
Platform
VERCEL_URL
Platform
NODE_ENV
Runtime
DEPLOYMENT_MODE
Optional override
Security/Operations
Variable
Notes
CRON_SECRET
Protect cron routes
MSP_STATE_SECRET
MSP state/signing support
Packager Service Variables
Packager binary (@ugurkocde/intuneget-packager) supports two communication modes.
Common Required
Variable
Required
Notes
AZURE_CLIENT_ID
Yes
Service principal client ID
AZURE_CLIENT_SECRET
Yes
Service principal client secret
API Mode (recommended with sqlite web mode)
Variable
Required
Notes
INTUNEGET_API_URL
Yes
Base URL of web app
PACKAGER_API_KEY
Yes
Must match web app key
Supabase Mode
Variable
Required
Notes
SUPABASE_URL
Yes
Supabase URL
SUPABASE_SERVICE_ROLE_KEY
Yes
Service role key
Packager Optional
Variable
Default
Notes
PACKAGER_ID
auto-generated
Instance identity
POLL_INTERVAL
5000
ms between polling cycles
STALE_JOB_TIMEOUT
300000
stale job threshold ms
WORK_DIR
./work
packaging working dir
TOOLS_DIR
./tools
IntuneWinAppUtil + PSADT path
AZURE_TENANT_ID
none
optional default tenant hint
Naming Compatibility
The web app supports both:
AZURE_AD_CLIENT_SECRET
AZURE_CLIENT_SECRET
For consistency, prefer AZURE_AD_CLIENT_SECRET in web app config and AZURE_CLIENT_SECRET where integrations expect that name (for example workflow secrets and packager).
Docker Runtime Injection
Next.js inlines NEXT_PUBLIC_* variables at build time, which means they are
empty in a pre-built Docker image. IntuneGet includes a runtime injection layer
(lib/runtime-config.ts + layout.tsx) that reads NEXT_PUBLIC_AZURE_AD_CLIENT_ID
from the server process at request time and forwards it to the browser via
window.__RUNTIME_CONFIG__.
What this means for operators:
No build arguments needed. Pass NEXT_PUBLIC_AZURE_AD_CLIENT_ID in the
container environment section of docker-compose.yml and it will be
available to the client automatically.
Vercel and local dev are unaffected. The standard build-time inlining
still works; the runtime layer is a transparent fallback.
Other NEXT_PUBLIC_* variables (Supabase URL, Plausible domain, etc.) are
currently only used in server components or server-side API routes, so they
are read from process.env at runtime and do not require this injection.
Validation Tips
In sqlite + local mode, missing PACKAGER_API_KEY is the most common failure.
In github mode, missing GITHUB_WORKFLOWS_REPO prevents workflow dispatch.
In supabase mode, missing NEXT_PUBLIC_SUPABASE_URL/NEXT_PUBLIC_SUPABASE_ANON_KEY prevents app data access.
Keep secrets out of client-exposed variables unless explicitly NEXT_PUBLIC_* and intended.
In Docker deployments, if MSAL authentication URLs are missing the client_id
parameter, verify that NEXT_PUBLIC_AZURE_AD_CLIENT_ID is set in the
container environment (not only in a .env file on the host).