Secret Management with Doppler
NextDeploy is Doppler-first for managing secrets. No .env files, no git commits with secrets, just secure, encrypted secret management.
Why Doppler?
- 🔐Encrypted - Secrets encrypted at rest and in transit
- 🌍Environment-scoped - dev, staging, prod configs
- 👥Team-friendly - Share secrets securely
- 🔄Auto-sync - Update secrets without redeploying
- 📊Audit logs - Track who changed what
Setup
1. Create Doppler Account
Sign up at doppler.com (free tier available).
2. Install Doppler CLI
# macOS
brew install dopplerhq/cli/doppler
# Linux
curl -Ls https://cli.doppler.com/install.sh | sh
# Windows
scoop install doppler3. Login
doppler login4. Create Project
doppler projects create my-app5. Set Up Environments
# Development
doppler setup --project my-app --config dev
# Staging
doppler setup --project my-app --config stg
# Production
doppler setup --project my-app --config prdAdding Secrets
Via CLI
# Switch to production config
doppler setup --project my-app --config prd
# Add secrets
doppler secrets set DATABASE_URL="postgresql://..."
doppler secrets set API_KEY="sk_live_..."
doppler secrets set STRIPE_SECRET="sk_..."Via Dashboard
- Go to dashboard.doppler.com
- Select your project
- Select environment (dev/stg/prd)
- Click "Add Secret"
- Enter name and value
Using Secrets Locally
Development
# Run Next.js with Doppler
doppler run -- npm run dev
# Or export to shell
eval $(doppler secrets download --no-file --format env-no-quotes)
npm run devBuild with Secrets
doppler run -- nextdeploy buildUsing Secrets in Production
Method 1: Doppler Service Token (Recommended)
- Generate service token:
doppler configs tokens create production --project my-app - Add to server:
ssh deploy@your-server echo "DOPPLER_TOKEN=dp.st.xxx" | sudo tee -a /etc/environment - Update nextdeploy.yml:
secrets: provider: doppler project: my-app config: prd - Deploy:
nextdeploy ship
Common Secrets
Database
doppler secrets set DATABASE_URL="postgresql://user:pass@host:5432/db"
doppler secrets set REDIS_URL="redis://localhost:6379"Authentication
doppler secrets set NEXTAUTH_SECRET="your-secret-here"
doppler secrets set NEXTAUTH_URL="https://myapp.com"
doppler secrets set GITHUB_CLIENT_ID="..."
doppler secrets set GITHUB_CLIENT_SECRET="..."APIs
doppler secrets set STRIPE_SECRET_KEY="sk_live_..."
doppler secrets set SENDGRID_API_KEY="SG...."
doppler secrets set AWS_ACCESS_KEY_ID="..."
doppler secrets set AWS_SECRET_ACCESS_KEY="..."Best Practices
1. Never Commit Secrets
# .gitignore
.env
.env.*
!.env.example
master.key
*.encrypted2. Use .env.example
# .env.example
DATABASE_URL=postgresql://localhost/myapp_dev
API_KEY=your_api_key_here
STRIPE_SECRET=sk_test_...3. Rotate Secrets Regularly
# Generate new secret
doppler secrets set API_KEY="new_key_here"
# Restart app to pick up changes
nextdeploy restartTroubleshooting
Secrets not loading
# Check current config
doppler configure get
# Download secrets to verify
doppler secrets download --no-fileInvalid token
# Re-login
doppler login
# Verify setup
doppler setup