/** * Generate .htpasswd file for Nginx basic authentication * * This script creates a .htpasswd file from the bcrypt hash provided in the * PASSWORD_HASH environment variable. */ const fs = require('fs'); const path = require('path'); // Get username from environment variable or use default const USERNAME = process.env.AUTH_USERNAME || 'user'; // Get password hash from environment variable const passwordHash = process.env.PASSWORD_HASH || '$2a$10$EgxHKjDDFcZKtQY9hl/N4.QvEQHCXVnQXw9dzFYlUDVKOcLMGp9eq'; // For Nginx basic auth, we need to use the format: username:{PLAIN}password // This is simpler and more reliable than trying to use bcrypt hashes with Nginx // Extract the original password from environment variable if available const plainPassword = process.env.AUTH_PASSWORD || 'password'; // Format for .htpasswd with plaintext password const htpasswdContent = `${USERNAME}:{PLAIN}${plainPassword}`; // Path to the .htpasswd file const htpasswdPath = '/etc/nginx/.htpasswd'; // Write the .htpasswd file try { fs.writeFileSync(htpasswdPath, htpasswdContent); console.log(`Generated .htpasswd file at ${htpasswdPath}`); } catch (error) { console.error(`Error generating .htpasswd file: ${error.message}`); process.exit(1); } console.log('Basic authentication setup complete');