Overview
This guide covers deploying Tesslate Studio to production with:- Custom domain configuration
- Automatic SSL/TLS certificates
- Security hardening
- Performance optimization
- Backup strategies
This guide assumes you’ve already set up Tesslate Studio locally. If not, see the Self-Hosting Quickstart first.
Prerequisites
Server
- Cloud VM or dedicated server
- 16GB RAM recommended
- 50GB+ disk space
- Ubuntu 22.04 LTS (or similar)
Domain
- Custom domain (e.g.,
studio.yourcompany.com) - DNS access to create records
- Wildcard DNS support (
*.studio.yourcompany.com)
SSL Certificate
- Automatic via Let’s Encrypt (recommended)
- Or bring your own certificate
- Admin email for Let’s Encrypt notifications
Server Setup
1. Provision Server
Choose a cloud provider:- DigitalOcean
- AWS EC2
- Hetzner
2. Initial Server Configuration
1
Connect to Server
2
Update System
3
Install Docker
4
Create Non-Root User
5
Set up Firewall
DNS Configuration
1. Create DNS Records
Add these records to your DNS provider:2. Verify DNS Propagation
Wait 5-10 minutes, then test:Application Deployment
1. Clone Repository
2. Configure Environment
3. Configure SSL with Let’s Encrypt
Updatedocker-compose.yml for production:
4. Deploy
5. Verify Deployment
1
Check Services
2
Test HTTPS
Open browser to:Should show:
- Valid SSL certificate
- Green padlock in browser
- No certificate warnings
3
Test API
4
Create First User
Sign up at
https://studio.yourcompany.comFirst user is automatically admin.Database Backup
1. Automated Backup Script
Create/home/tesslate/backup.sh:
2. Schedule Backups
Add to crontab:3. Test Restore
Monitoring
1. Docker Health Checks
Check container health:2. Log Management
View logs:docker-compose.yml:
3. Disk Space Monitoring
Create/home/tesslate/monitor.sh:
Security Hardening
1
Disable Root SSH
Edit Restart SSH:
/etc/ssh/sshd_config:2
Configure Fail2Ban
3
Enable Unattended Upgrades
4
Secure PostgreSQL
Change default password in Update
.env:DATABASE_URL accordingly.5
Rate Limiting
Add to Traefik configuration:
Performance Optimization
1. Enable HTTP/2
Already enabled with Traefik HTTPS.2. Database Optimization
Add todocker-compose.yml:
3. Docker Resource Limits
Add todocker-compose.yml:
Maintenance
Daily Tasks
Weekly Tasks
Monthly Tasks
Troubleshooting
SSL Certificate Not Working
SSL Certificate Not Working
Check Let’s Encrypt logs:Common issues:
- DNS not propagated (wait 10-15 minutes)
- Port 80 not accessible (check firewall)
- Invalid email in acme configuration
- Rate limit hit (5 certs per week per domain)
High Memory Usage
High Memory Usage
Check what’s using memory:Solutions:
- Add swap space
- Increase server RAM
- Add resource limits in docker-compose.yml
- Clean up old containers:
Database Connection Errors
Database Connection Errors
Check PostgreSQL is running:Check logs:Restart database: