SSL Certificate Setup - Tomorrow's Task¶
🎯 Objective¶
Get production Let's Encrypt SSL certificates to replace the temporary self-signed certificates.
⏰ When to Run¶
Date: October 20, 2025
Time: After 10:30:38 UTC (when rate limit resets)
Current Rate Limit: 5 certificates issued in last 168 hours (resets at 2025-10-20 10:30:38 UTC)
🔧 Prerequisites¶
- ✅ Volume mounting issue is FIXED (read-write access)
- ✅ Nginx container running with proper volume mounts
- ✅ Domain
adlab.moreyra.com.arresolving to147.93.7.60 - ✅ HTTP site working and accessible
📋 Step-by-Step Instructions¶
1. Stop Nginx Temporarily¶
2. Generate Production Certificates¶
ssh root@147.93.7.60 "cd /opt/laboratory-system && certbot certonly --standalone -d adlab.moreyra.com.ar --email facundo@moreyra.com.ar --agree-tos --no-eff-email --config-dir certbot/conf --work-dir certbot/work --logs-dir certbot/logs"
3. Verify Certificates Were Created¶
Expected output:
4. Verify Certificate Details¶
ssh root@147.93.7.60 "cd /opt/laboratory-system && openssl x509 -in certbot/conf/live/adlab.moreyra.com.ar/fullchain.pem -text -noout | grep -A 2 -B 2 'Issuer\|Subject\|Not After'"
Expected output:
Issuer: C=US, O=Let's Encrypt, CN=R3
Subject: CN=adlab.moreyra.com.ar
Not After: Jan 16 23:XX:XX 2026 GMT
5. Start Nginx with Production Certificates¶
6. Test HTTPS Connection¶
Expected output:
7. Test in Browser¶
- Open Chrome
- Navigate to
https://adlab.moreyra.com.ar/ - Should work without security warnings! ✅
🔍 Troubleshooting¶
If Rate Limit Still Active:¶
Solution: Wait until after 10:30:38 UTCIf Certificates Don't Persist:¶
# Check volume mount
ssh root@147.93.7.60 "docker inspect laboratory-nginx | grep -A 5 -B 5 'letsencrypt'"
"Mode": "rw" (not "ro")
If Nginx Won't Start:¶
If HTTPS Still Shows Self-Signed:¶
# Check certificate content
ssh root@147.93.7.60 "cd /opt/laboratory-system && openssl x509 -in certbot/conf/live/adlab.moreyra.com.ar/fullchain.pem -text -noout | grep Issuer"
Issuer: C=US, O=Let's Encrypt, CN=R3
🎉 Success Indicators¶
- ✅ Chrome: No security warnings
- ✅ Certificate: Shows "Let's Encrypt" as issuer
- ✅ HTTPS: HTTP/2 200 response
- ✅ Security Headers: All present
- ✅ Expiry: Valid until 2026-01-16
📝 Post-Setup Tasks¶
Set Up Auto-Renewal¶
Add to Crontab (Optional)¶
🚨 Important Notes¶
- Rate Limit: Only 5 certificates per domain per 168 hours
- Volume Mounts: Must be read-write (
rw) not read-only (ro) - Nginx Stop: Required during certificate generation (port 80 conflict)
- Domain Resolution: Must point to
147.93.7.60 - Email:
facundo@moreyra.com.aris registered with Let's Encrypt
📞 If Issues Persist¶
- Check rate limit status:
certbot certificates - Verify domain resolution:
nslookup adlab.moreyra.com.ar - Check nginx logs:
docker logs laboratory-nginx - Verify volume mounts:
docker inspect laboratory-nginx
Created: October 19, 2025
Rate Limit Reset: October 20, 2025 10:30:38 UTC
Status: Ready to execute ✅