Market Data Service is a high-performance financial data API that provides comprehensive Symbol prices of different markets through both RESTful endpoints and real-time WebSocket connections.

certbot-init.sh 2.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #!/bin/sh
  2. # SSL Certificate Initialization Script for Docker
  3. # This script is used to obtain the initial SSL certificate
  4. set -e
  5. DOMAIN_NAME="${DOMAIN_NAME:-}"
  6. SSL_EMAIL="${SSL_EMAIL:-}"
  7. STAGING="${SSL_STAGING:-0}"
  8. if [ -z "$DOMAIN_NAME" ]; then
  9. echo "ERROR: DOMAIN_NAME environment variable is required"
  10. echo ""
  11. echo "Usage:"
  12. echo " DOMAIN_NAME=yourdomain.com SSL_EMAIL=your@email.com docker-compose -f docker-compose.prod.yml run --rm certbot-init"
  13. echo ""
  14. echo "For testing (staging server):"
  15. echo " DOMAIN_NAME=yourdomain.com SSL_EMAIL=your@email.com SSL_STAGING=1 docker-compose -f docker-compose.prod.yml run --rm certbot-init"
  16. exit 1
  17. fi
  18. if [ -z "$SSL_EMAIL" ]; then
  19. echo "ERROR: SSL_EMAIL environment variable is required"
  20. echo ""
  21. echo "Usage:"
  22. echo " DOMAIN_NAME=yourdomain.com SSL_EMAIL=your@email.com docker-compose -f docker-compose.prod.yml run --rm certbot-init"
  23. exit 1
  24. fi
  25. echo "=========================================="
  26. echo "SSL Certificate Initialization"
  27. echo "=========================================="
  28. echo "Domain: $DOMAIN_NAME"
  29. echo "Email: $SSL_EMAIL"
  30. echo ""
  31. # Use staging server if SSL_STAGING=1 (for testing)
  32. STAGING_FLAG=""
  33. if [ "$STAGING" = "1" ]; then
  34. echo "WARNING: Using Let's Encrypt staging server (for testing only)"
  35. STAGING_FLAG="--staging"
  36. fi
  37. # Wait for nginx to be ready (it needs to serve the challenge)
  38. echo "Waiting for nginx to be ready..."
  39. sleep 5
  40. # Obtain certificate using webroot method
  41. echo "Requesting SSL certificate from Let's Encrypt..."
  42. certbot certonly \
  43. --webroot \
  44. --webroot-path=/var/www/certbot \
  45. --email "$SSL_EMAIL" \
  46. --agree-tos \
  47. --no-eff-email \
  48. --force-renewal \
  49. $STAGING_FLAG \
  50. -d "$DOMAIN_NAME"
  51. if [ $? -eq 0 ]; then
  52. echo ""
  53. echo "=========================================="
  54. echo "✅ SSL certificate obtained successfully!"
  55. echo "=========================================="
  56. echo "Certificate location: /etc/letsencrypt/live/$DOMAIN_NAME/"
  57. echo ""
  58. echo "Next steps:"
  59. echo "1. Update nginx.prod.conf with your domain name:"
  60. echo " Replace \${DOMAIN_NAME:-default} with $DOMAIN_NAME"
  61. echo " Or set DOMAIN_NAME environment variable in docker-compose.prod.yml"
  62. echo ""
  63. echo "2. Restart nginx container:"
  64. echo " docker-compose -f docker-compose.prod.yml restart nginx"
  65. echo ""
  66. echo "3. Verify HTTPS is working:"
  67. echo " curl https://$DOMAIN_NAME/health"
  68. echo ""
  69. echo "4. Certificates will auto-renew every 12 hours"
  70. else
  71. echo ""
  72. echo "=========================================="
  73. echo "❌ SSL certificate obtainment failed"
  74. echo "=========================================="
  75. echo "Please check:"
  76. echo "1. Domain DNS is pointing to this server"
  77. echo "2. Port 80 is accessible from the internet"
  78. echo "3. Nginx container is running and can serve /.well-known/acme-challenge/"
  79. exit 1
  80. fi