Share Better Auth Secrets Across Environments
Better Auth requires a 32-byte secret to sign sessions. Use different values per environment and never commit them.
Generate secrets
openssl rand -base64 32
# or
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"Local development
apps/web/.env.local:
BETTER_AUTH_SECRET="base64string=="
NEXT_PUBLIC_BETTER_AUTH_URL="http://localhost:3000"Vercel deployment
vercel env add BETTER_AUTH_SECRET production
vercel env add NEXT_PUBLIC_BETTER_AUTH_URL productionSelf-hosted?
- Use Docker secrets:
docker secret create better_auth_secret secret.txt. - On Kubernetes, mount as
Secretand inject via env vars.
Diagram
flowchart LR
A[Secret manager] --> B[CI/CD]
B --> C[Vercel env vars]
B --> D[Docker compose]
Rotate secrets periodically and revoke leaked ones by deleting associated sessions in the database.