Initial push of Plunk Next
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
---
|
||||
title: Environment Variables
|
||||
description: Complete environment variable reference
|
||||
---
|
||||
|
||||
## Required Variables
|
||||
|
||||
### Database
|
||||
|
||||
```bash
|
||||
# PostgreSQL connection string
|
||||
DATABASE_URL="postgresql://user:password@host:5432/plunk"
|
||||
|
||||
# Direct connection (for Prisma migrations)
|
||||
DIRECT_DATABASE_URL="postgresql://user:password@host:5432/plunk"
|
||||
```
|
||||
|
||||
### Redis
|
||||
|
||||
```bash
|
||||
# Redis connection URL
|
||||
REDIS_URL="redis://host:6379"
|
||||
```
|
||||
|
||||
### Security
|
||||
|
||||
```bash
|
||||
# JWT signing secret (generate with: openssl rand -base64 32)
|
||||
JWT_SECRET="your-secret-here"
|
||||
```
|
||||
|
||||
### AWS SES (Email Delivery)
|
||||
|
||||
```bash
|
||||
AWS_SES_REGION="us-east-1"
|
||||
AWS_SES_ACCESS_KEY_ID="your-access-key"
|
||||
AWS_SES_SECRET_ACCESS_KEY="your-secret-key"
|
||||
|
||||
# SES Configuration Sets
|
||||
SES_CONFIGURATION_SET="plunk-tracking"
|
||||
SES_CONFIGURATION_SET_NO_TRACKING="plunk-no-tracking"
|
||||
```
|
||||
|
||||
### Application URLs
|
||||
|
||||
```bash
|
||||
# Protocol configuration (auto-generates URIs with http:// or https://)
|
||||
USE_HTTPS="false" # Set to "true" for HTTPS in production
|
||||
|
||||
# Application URIs (auto-generated from domains if not set)
|
||||
API_URI="https://api.yourdomain.com"
|
||||
DASHBOARD_URI="https://app.yourdomain.com"
|
||||
LANDING_URI="https://www.yourdomain.com"
|
||||
|
||||
# For Next.js (build time)
|
||||
NEXT_PUBLIC_API_URI="https://api.yourdomain.com"
|
||||
NEXT_PUBLIC_DASHBOARD_URI="https://app.yourdomain.com"
|
||||
NEXT_PUBLIC_LANDING_URI="https://www.yourdomain.com"
|
||||
```
|
||||
|
||||
**Note**: When using domain-based configuration (e.g., `API_DOMAIN=api.yourdomain.com`), the application URIs are automatically generated. Set `USE_HTTPS=true` to use HTTPS protocol, otherwise HTTP will be used by default. You can also manually set the full URIs to override the auto-generation.
|
||||
|
||||
## Optional Variables
|
||||
|
||||
### Plunk API
|
||||
|
||||
If you're using the email package's `sendEmail` function to send emails via the Plunk API:
|
||||
|
||||
```bash
|
||||
# Plunk API Key (obtained from dashboard)
|
||||
PLUNK_API_KEY="sk_your_secret_key"
|
||||
```
|
||||
|
||||
### S3-Compatible Storage (Minio)
|
||||
|
||||
**Note**: When using Docker Compose, Minio is included and these variables are automatically configured with defaults. You typically don't need to set these unless you want to use external S3 storage.
|
||||
|
||||
```bash
|
||||
# Only configure if NOT using the bundled Minio
|
||||
S3_ENDPOINT="http://minio:9000" # Default: uses bundled Minio
|
||||
S3_ACCESS_KEY_ID="plunk" # Default: plunk
|
||||
S3_ACCESS_KEY_SECRET="plunkminiopass" # Default: plunkminiopass
|
||||
S3_BUCKET="uploads" # Default: uploads
|
||||
S3_PUBLIC_URL="http://localhost:9000/uploads" # Default: Minio URL
|
||||
S3_FORCE_PATH_STYLE="true" # Required for Minio
|
||||
```
|
||||
|
||||
### OAuth Providers
|
||||
|
||||
```bash
|
||||
# GitHub OAuth
|
||||
GITHUB_OAUTH_CLIENT="your-client-id"
|
||||
GITHUB_OAUTH_SECRET="your-client-secret"
|
||||
|
||||
# Google OAuth
|
||||
GOOGLE_OAUTH_CLIENT="your-client-id"
|
||||
GOOGLE_OAUTH_SECRET="your-client-secret"
|
||||
```
|
||||
|
||||
### Stripe Billing
|
||||
|
||||
```bash
|
||||
STRIPE_SK="sk_test_..."
|
||||
STRIPE_WEBHOOK_SECRET="whsec_..."
|
||||
|
||||
# Stripe Products
|
||||
STRIPE_PRICE_ONBOARDING="price_..."
|
||||
STRIPE_PRICE_EMAIL_USAGE="price_..."
|
||||
|
||||
# Stripe Metering
|
||||
STRIPE_METER_EVENT_NAME="email_sent"
|
||||
```
|
||||
|
||||
### Internal
|
||||
|
||||
```bash
|
||||
# Node environment
|
||||
NODE_ENV="production"
|
||||
```
|
||||
|
||||
## Example .env File
|
||||
|
||||
```bash
|
||||
# Database
|
||||
DATABASE_URL="postgresql://postgres:password@localhost:5432/plunk"
|
||||
DIRECT_DATABASE_URL="postgresql://postgres:password@localhost:5432/plunk"
|
||||
|
||||
# Redis
|
||||
REDIS_URL="redis://localhost:6379"
|
||||
|
||||
# Security
|
||||
JWT_SECRET="generated-secret-here"
|
||||
|
||||
# AWS SES
|
||||
AWS_SES_REGION="us-east-1"
|
||||
AWS_SES_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
|
||||
AWS_SES_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
|
||||
SES_CONFIGURATION_SET="plunk-tracking"
|
||||
SES_CONFIGURATION_SET_NO_TRACKING="plunk-no-tracking"
|
||||
|
||||
# Protocol & URLs
|
||||
USE_HTTPS="false"
|
||||
API_URI="http://localhost:3001"
|
||||
DASHBOARD_URI="http://localhost:3000"
|
||||
LANDING_URI="http://localhost:3002"
|
||||
|
||||
# Next.js Public URLs
|
||||
NEXT_PUBLIC_API_URI="http://localhost:3001"
|
||||
NEXT_PUBLIC_DASHBOARD_URI="http://localhost:3000"
|
||||
NEXT_PUBLIC_LANDING_URI="http://localhost:3002"
|
||||
|
||||
# Node Environment
|
||||
NODE_ENV="development"
|
||||
```
|
||||
|
||||
## Generating Secrets
|
||||
|
||||
### JWT Secret
|
||||
|
||||
```bash
|
||||
openssl rand -base64 32
|
||||
```
|
||||
|
||||
### Strong Passwords
|
||||
|
||||
```bash
|
||||
openssl rand -base64 24
|
||||
```
|
||||
|
||||
## Security Best Practices
|
||||
|
||||
1. **Never commit secrets** to version control
|
||||
2. **Use environment-specific files** (.env.production, .env.development)
|
||||
3. **Rotate secrets regularly**
|
||||
4. **Use secret management** (AWS Secrets Manager, HashiCorp Vault) in production
|
||||
5. **Limit access** to production environment variables
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [Set up database](/self-hosting/database-setup)
|
||||
- [Configure email delivery](/self-hosting/email-setup)
|
||||
- [Deploy with Docker](/self-hosting/docker)
|
||||
Reference in New Issue
Block a user