Skip to main content
This guide covers production deployment best practices, security hardening, monitoring, and operational procedures for running Budgetron at scale.

Production Checklist

Before deploying to production:
  • Set strong, unique secrets for AUTH_SECRET, CRON_SECRET_TOKEN
  • Configure SSL/TLS certificates (HTTPS)
  • Set up database backups
  • Configure monitoring and alerting
  • Review and restrict network access
  • Enable database connection pooling
  • Set up log aggregation
  • Configure rate limiting
  • Test disaster recovery procedures
  • Document deployment and rollback procedures

Security Hardening

Environment Variables

Never commit secrets to version control. Use secure secret management:

Generate Strong Secrets

Secret Management

Docker Secrets (Docker Swarm):
Kubernetes Secrets:
HashiCorp Vault, AWS Secrets Manager, or Azure Key Vault for enterprise deployments.

Database Security

Connection Security

Use SSL for database connections:
SSL modes:
  • require - Requires SSL, no certificate verification
  • verify-ca - Requires SSL, verifies CA
  • verify-full - Requires SSL, verifies CA and hostname

Network Isolation

Restrict database access:
Use private networks or VPC for database connections.

Database User Permissions

Create a limited database user:

Application Security

Run as Non-Root User

Modify Dockerfile:

Read-Only Filesystem

Run container with read-only root:

Security Headers

Next.js automatically sets security headers. Verify in next.config.ts:

Network Security

Firewall Configuration

Use UFW (Ubuntu):

Rate Limiting

Configure Nginx rate limiting:

DDoS Protection

Use Cloudflare or AWS WAF for DDoS protection and CDN caching.

High Availability

Load Balancing

Run multiple Budgetron instances behind a load balancer:
Nginx upstream configuration:

Database High Availability

PostgreSQL Replication

Set up primary-replica replication:

Managed Database Services

Use managed PostgreSQL for automatic failover:
  • AWS RDS with Multi-AZ
  • Google Cloud SQL with high availability
  • Azure Database for PostgreSQL with read replicas
  • DigitalOcean Managed Databases

Health Checks

Implement comprehensive health checks:
Docker health check:

Monitoring and Observability

Logging

Structured Logging

Budgetron logs to stdout/stderr. Use a log aggregation service: Docker Compose with Loki:
Centralized Logging Services:
  • Datadog
  • New Relic
  • Papertrail
  • Logtail
  • ELK Stack (Elasticsearch, Logstash, Kibana)

Log Rotation

For standalone deployments:

Metrics

Application Metrics

Integrate Prometheus metrics:

Database Metrics

Monitor PostgreSQL:
Use monitoring tools:
  • pgAdmin
  • pganalyze
  • pg_stat_statements extension

Infrastructure Metrics

Prometheus + Grafana:

Alerting

Health Check Monitoring

Use uptime monitoring:
  • UptimeRobot (free tier available)
  • Pingdom
  • Better Uptime
  • StatusCake

Custom Alerts

Prometheus alerting rules:

Backup and Recovery

Database Backups

Automated Backup Script

Make executable and schedule:

Point-in-Time Recovery (PITR)

Enable WAL archiving in PostgreSQL:

Application State Backup

Budgetron is stateless, but back up:
  • Environment variables (securely)
  • Custom configurations
  • SSL certificates

Disaster Recovery

Recovery Procedure

  1. Restore Database:
  1. Deploy Application:
  1. Verify:

Test Recovery

Regularly test your recovery procedure:

Performance Optimization

Database Optimization

Connection Pooling

Budgetron uses Drizzle ORM with connection pooling. Configure pool size:

Database Indexes

Ensure proper indexes exist:

Query Optimization

Monitor slow queries:

Application Optimization

Caching

Next.js App Router includes built-in caching. Configure cache headers:

CDN Integration

Use a CDN for static assets:
  • Cloudflare
  • AWS CloudFront
  • Vercel Edge Network

Resource Limits

Set container resource limits:

Deployment Strategies

Blue-Green Deployment

Rolling Updates

With Docker Swarm or Kubernetes:

Rollback Procedure

Compliance and Auditing

Audit Logging

Log all authentication and sensitive operations:

Data Privacy

  • Implement GDPR data export/deletion
  • Encrypt sensitive data at rest
  • Use TLS 1.3 for data in transit
  • Regular security audits

Compliance Checklist

  • Data encryption (at rest and in transit)
  • User data export functionality
  • User data deletion functionality
  • Audit logging
  • Access controls
  • Regular backups
  • Incident response plan

Next Steps