diff --git a/.env b/.env deleted file mode 100644 index 4c27e1c..0000000 --- a/.env +++ /dev/null @@ -1,21 +0,0 @@ -# Server Configuration -PORT=5955 -HOST=0.0.0.0 - -# SSL Configuration (only needed if not using Traefik) -# Set USE_SSL=true if you want to handle SSL directly -# Set USE_SSL=false when deploying behind Traefik/reverse proxy -USE_SSL=false - -# SSL Certificate Paths (only used when USE_SSL=true) -# SSL_KEY_PATH=/etc/httpd/ssl/crewsportswear_app.key -# SSL_CERT_PATH=/etc/httpd/ssl/certs/current_cert.crt - -# Screenshot Configuration -OUTPUT_DIR=/var/www/html/images/ -BASE_URL=https://crewsportswear.app:5955/ -VIEWPORT_WIDTH=1366 -VIEWPORT_HEIGHT=1100 -WAIT_TIME=10000 - -# Viewer URLs (configured in config.js) diff --git a/config/config.js b/config/config.js index 24ae2b6..0aa5418 100644 --- a/config/config.js +++ b/config/config.js @@ -2,10 +2,18 @@ const fs = require('fs'); const path = require('path'); // SSL Configuration (optional - only needed if not using Traefik/reverse proxy) -const sslConfig = process.env.USE_SSL === 'true' ? { - key: fs.readFileSync(process.env.SSL_KEY_PATH || '/etc/httpd/ssl/crewsportswear_app.key', 'utf8'), - cert: fs.readFileSync(process.env.SSL_CERT_PATH || '/etc/httpd/ssl/certs/current_cert.crt', 'utf8') -} : null; +let sslConfig = null; +if (process.env.USE_SSL === 'true') { + try { + sslConfig = { + key: fs.readFileSync(process.env.SSL_KEY_PATH || '/etc/httpd/ssl/crewsportswear_app.key', 'utf8'), + cert: fs.readFileSync(process.env.SSL_CERT_PATH || '/etc/httpd/ssl/certs/current_cert.crt', 'utf8') + }; + } catch (err) { + console.error('Failed to read SSL certificates:', err.message); + console.log('Falling back to HTTP mode'); + } +} // CORS Configuration const allowedOrigins = [ diff --git a/docker-compose.traefik.yml b/docker-compose.traefik.yml index ad9b7dd..52d196d 100644 --- a/docker-compose.traefik.yml +++ b/docker-compose.traefik.yml @@ -24,7 +24,7 @@ services: - "traefik.http.routers.screenshot-service.rule=Host(`ss-tools.crewsportswear.app`)" - "traefik.http.routers.screenshot-service.entrypoints=websecure" - "traefik.http.routers.screenshot-service.tls=true" - - "traefik.http.routers.screenshot-service.tls.certresolver=letsencrypt" + - "traefik.http.routers.screenshot-service.tls.certresolver=le" # Service - "traefik.http.services.screenshot-service.loadbalancer.server.port=5955" diff --git a/server.js b/server.js index e6e768b..feee382 100644 --- a/server.js +++ b/server.js @@ -68,11 +68,30 @@ const server = serverConfig.useSSL && sslConfig ? https.createServer(sslConfig, app) : http.createServer(app); +// Handle server errors +server.on('error', (err) => { + if (err.code === 'EADDRINUSE') { + console.error(`❌ Port ${serverConfig.port} is already in use`); + console.error(' Please stop the other process or use a different port'); + } else if (err.code === 'ECONNREFUSED') { + console.error(`❌ Connection refused on ${serverConfig.host}:${serverConfig.port}`); + console.error(' Check if the port is accessible'); + } else { + console.error('❌ Server error:', err); + } + process.exit(1); +}); + const protocol = serverConfig.useSSL && sslConfig ? 'https' : 'http'; const sslNote = serverConfig.useSSL && sslConfig ? '(Direct SSL)' : '(SSL via Traefik/Reverse Proxy)'; // Start server -server.listen(serverConfig.port, serverConfig.host, () => { +server.listen(serverConfig.port, serverConfig.host, (err) => { + if (err) { + console.error('Failed to start server:', err); + process.exit(1); + } + console.log('╔════════════════════════════════════════════════════════════╗'); console.log('║ Screenshot Service - Unified Application Started ║'); console.log('╚════════════════════════════════════════════════════════════╝');