Overview
Dokploy provides automatic SSL/TLS certificate management through Traefik integration. You can use free Let’s Encrypt certificates or bring your own custom certificates for secure HTTPS connections.Automatic SSL
Free Let’s Encrypt certificates with auto-renewal
Custom Certificates
Use your own SSL certificates
Wildcard Support
Secure multiple subdomains with one certificate
SSL Certificate Types
Dokploy supports three certificate types:- Let's Encrypt (Recommended)
- Custom Certificate
- None (Development)
Automatic, free SSL certificates:
- Automatic certificate issuance
- Auto-renewal before expiration
- Supports HTTP-01 and DNS-01 challenges
- Trusted by all major browsers
- Rate limit: 50 certificates per week per domain
Let’s Encrypt Configuration
Automatic HTTPS (HTTP-01 Challenge)
The default method works for most use cases:Configure Domain
When adding a domain to your application:
- Enter your domain name (e.g.,
example.com) - Select Let’s Encrypt as certificate type
- Ensure your domain’s DNS points to your server
Deploy
Dokploy automatically:
- Requests certificate from Let’s Encrypt
- Completes HTTP-01 challenge
- Configures Traefik with the certificate
- Redirects HTTP to HTTPS
DNS-01 Challenge (Wildcard Certificates)
For wildcard certificates (e.g.,*.example.com):
traefik-config.yml
DNS-01 requires API credentials for your DNS provider (Cloudflare, Route53, etc.).
Supported DNS Providers
Traefik supports 100+ DNS providers:- Cloudflare
- AWS Route53
- Google Cloud DNS
- DigitalOcean
- Namecheap
- GoDaddy
- And many more
Custom Certificates
Upload Certificate
Prepare Certificate Files
You need:
- Certificate file (
.crtor.pem) - Private key file (
.key) - Optional: CA bundle/chain file
Add Certificate in Dokploy
Navigate to Settings → Certificates → Add Certificate
A friendly name for the certificate
The certificate content (PEM format)
The private key content (PEM format)
Optional CA bundle/intermediate certificates
Using the API
Create Certificate
Certificate Format
Certificates must be in PEM format:certificate.crt
private.key
Wildcard Certificates
Secure all subdomains with a single certificate:Using Let’s Encrypt
- Configure DNS-01 challenge (see above)
- Add domain as
*.example.com - Dokploy requests wildcard certificate
Using Custom Certificate
- Obtain wildcard certificate from your CA
- Upload to Dokploy
- Use for all subdomains
Example Usage
*.example.com certificate.
Certificate Management
View Certificates
List Certificates
Update Certificate
- Via Dashboard
- Via API
- Go to Settings → Certificates
- Click on the certificate
- Upload new certificate/key
- Save changes
Certificate Renewal
Let's Encrypt Auto-Renewal
Let's Encrypt Auto-Renewal
Dokploy automatically renews Let’s Encrypt certificates:
- Renewal starts 30 days before expiration
- Multiple retry attempts if renewal fails
- Email notifications on renewal failure
- Zero downtime during renewal
Custom Certificate Renewal
Custom Certificate Renewal
For custom certificates:
- Obtain renewed certificate from your CA
- Update in Dokploy (via dashboard or API)
- Traefik hot-reloads without downtime
SSL/TLS Best Practices
Use Strong Ciphers
Configure Traefik with modern TLS 1.2+ and strong cipher suites
Enable HSTS
Force HTTPS with HTTP Strict Transport Security headers
Certificate Monitoring
Set up alerts for certificate expiration
Rotate Regularly
For custom certs, rotate annually or when compromised
Traefik TLS Configuration
traefik-static.yml
HSTS Configuration
Add HSTS headers to force HTTPS:docker-compose.yml
Troubleshooting
Let's Encrypt rate limit exceeded
Let's Encrypt rate limit exceeded
Let’s Encrypt limits:
- 50 certificates per registered domain per week
- 5 duplicate certificates per week
- Use staging environment for testing
- Use wildcard certificates
- Wait for rate limit reset (weekly)
- Consider custom certificates
HTTP-01 challenge fails
HTTP-01 challenge fails
Common causes:
- DNS not pointing to your server
- Port 80 blocked by firewall
- Traefik not accessible on port 80
- Domain resolving to wrong IP
Certificate not trusted
Certificate not trusted
For custom certificates:
- Include complete certificate chain
- Verify certificate validity:
openssl x509 -in cert.crt -text -noout - Check certificate matches domain
- Ensure root CA is trusted
SSL handshake errors
SSL handshake errors
- Verify TLS version compatibility
- Check cipher suite support
- Review Traefik logs:
docker logs traefik - Test with:
openssl s_client -connect domain:443
Certificate renewal fails
Certificate renewal fails
Check Traefik logs:Common issues:
- DNS propagation delays
- API credentials expired (DNS-01)
- Rate limits
- Network connectivity
Security Considerations
Certificate Security Checklist
- Private keys stored securely (not in git)
- TLS 1.2 or higher enforced
- Strong cipher suites configured
- HSTS enabled
- Certificate expiration monitoring
- Auto-renewal configured
- Regular security audits
Next Steps
Domains & Routing
Configure domain routing with SSL
Security
Additional security configuration
Traefik
Configure Traefik settings
Monitoring
Monitor SSL certificate status