Secure your Formbricks instance with SSL/TLS certificates to enable HTTPS, encrypt traffic, and build trust with your users.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/formbricks/formbricks/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Formbricks supports multiple SSL/TLS configuration approaches:- Automated Let’s Encrypt (Docker with Traefik)
- Manual Certificate Management (Bring your own certificates)
- Reverse Proxy SSL Termination (Nginx, HAProxy, Caddy)
- Cloud Load Balancer SSL (AWS ALB, GCP LB, Azure App Gateway)
- Kubernetes Ingress (cert-manager, ingress-nginx)
Docker Deployment with Let’s Encrypt
The quickest way to enable SSL for Docker deployments using the official setup script.Prerequisites
- Public domain name pointing to your server (A record)
- Ports 80 and 443 open on your firewall
- Email address for Let’s Encrypt notifications
Automated Setup
The official Formbricks Docker script includes Traefik reverse proxy with automatic Let’s Encrypt:- Email Address: For Let’s Encrypt certificate registration
- Domain Name: Your fully qualified domain (e.g.,
formbricks.example.com)
What Happens Behind the Scenes
- Traefik Setup: Reverse proxy is configured with Let’s Encrypt ACME integration
- HTTP-01 Challenge: Let’s Encrypt validates domain ownership via HTTP
- Certificate Issuance: SSL certificate is automatically generated and installed
- Auto-Renewal: Certificates are automatically renewed before expiration (90 days)
- HTTP Redirect: All HTTP traffic is automatically redirected to HTTPS
Configuration Details
The setup creates a Traefik configuration that:- Listens on ports 80 (HTTP) and 443 (HTTPS)
- Forwards requests to Formbricks container
- Manages certificate lifecycle automatically
- Stores certificates in Docker volumes
Troubleshooting Let’s Encrypt
Certificate Not Issuing
Certificate Not Issuing
Common Causes:
-
Domain not pointing to server IP
-
Firewall blocking port 80
-
Rate limiting from Let’s Encrypt
- Let’s Encrypt has rate limits: 50 certificates per domain per week
- Use staging environment for testing:
LETSENCRYPT_STAGING=true
-
Check Traefik logs:
Certificate Renewal Failing
Certificate Renewal Failing
Solutions:
- Ensure Traefik container is running continuously
- Check Traefik can bind to port 80 for renewal challenges
- Verify DNS still points to your server
- Review Traefik renewal logs:
Mixed Content Warnings
Mixed Content Warnings
Ensure your
WEBAPP_URL uses HTTPS:Manual SSL Configuration
Using Custom Certificates
If you have certificates from a commercial CA or internal PKI:Obtain Certificates
You’ll need:
- Certificate file (
.crtor.pem) - Private key file (
.key) - Intermediate certificates/chain (if applicable)
Kubernetes with cert-manager
For Kubernetes deployments, use cert-manager for automated certificate management.Install cert-manager
Configure ClusterIssuer
Configure Ingress with TLS
Update your Formbricks Helm values:values.yaml
Verify Certificate
Cloud Provider SSL Options
AWS Application Load Balancer
Google Cloud Load Balancer
Azure Application Gateway
Use Azure Key Vault for certificate storage:SSL Best Practices
Security Configuration
- Use TLS 1.2 and 1.3 only (disable older versions)
- Enable HSTS header with long max-age
- Implement OCSP stapling for faster certificate validation
- Use strong cipher suites (prefer ECDHE)
- Disable SSL session tickets for better forward secrecy
Certificate Management
- Automate certificate renewal (45 days before expiration)
- Monitor certificate expiration with alerts
- Use wildcard certificates for multiple subdomains (*.example.com)
- Keep private keys secure and never commit to version control
- Implement certificate pinning for mobile apps
Performance Optimization
- Enable HTTP/2 for better performance
- Configure SSL session caching
- Use CDN for SSL termination at edge locations
- Implement OCSP stapling to reduce validation overhead
SSL Testing & Validation
Online Tools
-
SSL Labs: https://www.ssllabs.com/ssltest/
- Comprehensive SSL configuration analysis
- Grade your SSL implementation (A+ is ideal)
- Identify security vulnerabilities
-
SSL Checker: https://www.sslshopper.com/ssl-checker.html
- Verify certificate installation
- Check certificate chain
Command Line Testing
Browser Testing
- Visit your Formbricks URL in a browser
- Click the padlock icon in the address bar
- View certificate details
- Verify:
- Certificate is valid and not expired
- Issued to correct domain
- Chain of trust is complete
- No security warnings
Troubleshooting
Certificate Chain Incomplete
Certificate Chain Incomplete
Symptom: “This site is missing a valid, trusted certificate”Solution: Ensure full certificate chain is configured:
Certificate Mismatch
Certificate Mismatch
Symptom: “Certificate name does not match”Solution:
- Verify certificate CN/SAN matches your domain
- For multi-domain, use SAN certificate or wildcard
- Check server_name in Nginx matches certificate
SMTP TLS Configuration
SMTP TLS Configuration
For email with TLS:
Proxy Headers Missing
Proxy Headers Missing
Ensure reverse proxy forwards correct headers:
Certificate Providers
Free Options
-
Let’s Encrypt: Free, automated, 90-day certificates
- Best for: Most use cases
- Limitations: 90-day renewal, rate limits
-
ZeroSSL: Free alternative to Let’s Encrypt
- Best for: Alternative to Let’s Encrypt
- Limitations: Similar to Let’s Encrypt
Commercial Options
-
DigiCert: Premium certificates with warranty
- Best for: Enterprise deployments requiring high assurance
- Features: Extended validation, warranty, dedicated support
-
Sectigo (Comodo): Affordable commercial certificates
- Best for: Long-term certificates (1-2 years)
- Features: Wildcard, multi-domain support
-
GlobalSign: Enterprise-grade certificates
- Best for: Organizations requiring EV certificates
- Features: Organizational validation, code signing
Further Resources
- Mozilla SSL Configuration Generator
- SSL/TLS Best Practices (OWASP)
- Let’s Encrypt Documentation
- cert-manager Documentation
For production deployments, always use valid SSL certificates from a trusted CA. Self-signed certificates should only be used in development or internal testing environments.