From 2e06475aab4a09acba16d2e19f38afce0d365b8c Mon Sep 17 00:00:00 2001 From: nmemmert Date: Tue, 13 Jan 2026 15:58:04 -0500 Subject: [PATCH] Fix deployment scripts for systems without openssl - Added fallback to /dev/urandom when openssl is not available - Added multiple fallback methods for encryption key generation - Scripts now work on minimal systems like ZimaOS - Maintains security with urandom-based key generation --- deploy.sh | 15 ++++++++++++++- install.sh | 26 ++++++++++++++++++-------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/deploy.sh b/deploy.sh index 4a206ca..de69332 100755 --- a/deploy.sh +++ b/deploy.sh @@ -14,7 +14,20 @@ if [ ! -f .env ]; then cp .env.example .env # Generate a secure encryption key - ENCRYPTION_KEY=$(openssl rand -base64 32) + echo "🔑 Generating encryption key..." + + if command -v openssl &> /dev/null; then + # Use openssl if available + ENCRYPTION_KEY=$(openssl rand -base64 32) + elif [ -r /dev/urandom ]; then + # Fallback to /dev/urandom + ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64 | tr -d '\n') + else + # Last resort: generate from random data + ENCRYPTION_KEY=$(cat /dev/random | head -c 32 | base64 | tr -d '\n' 2>/dev/null || echo "PLEASE-CHANGE-THIS-$(date +%s)-$(( RANDOM * RANDOM ))") + echo "âš ī¸ Warning: Could not generate optimal random key" + echo " Please update ENCRYPTION_KEY in .env with a secure random value" + fi # Update .env with generated key if [[ "$OSTYPE" == "darwin"* ]]; then diff --git a/install.sh b/install.sh index b2dcee9..504a259 100755 --- a/install.sh +++ b/install.sh @@ -93,18 +93,28 @@ if [ ! -f .env ]; then cp .env.example .env # Generate encryption key + echo "🔑 Generating encryption key..." + if command -v openssl &> /dev/null; then + # Use openssl if available ENCRYPTION_KEY=$(openssl rand -base64 32) - # Update .env with generated key - if [[ "$OSTYPE" == "darwin"* ]]; then - sed -i '' "s/change-this-to-a-secure-random-key/$ENCRYPTION_KEY/" .env - else - sed -i "s/change-this-to-a-secure-random-key/$ENCRYPTION_KEY/" .env - fi - echo "✅ Generated secure encryption key" + elif [ -r /dev/urandom ]; then + # Fallback to /dev/urandom + ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64 | tr -d '\n') else - echo "âš ī¸ OpenSSL not found. Please manually set ENCRYPTION_KEY in .env file" + # Last resort: generate from random data + ENCRYPTION_KEY=$(cat /dev/random | head -c 32 | base64 | tr -d '\n' 2>/dev/null || echo "PLEASE-CHANGE-THIS-$(date +%s)-$(( RANDOM * RANDOM ))") + echo "âš ī¸ Warning: Could not generate optimal random key" + echo " Please update ENCRYPTION_KEY in .env with a secure random value" fi + + # Update .env with generated key + if [[ "$OSTYPE" == "darwin"* ]]; then + sed -i '' "s/change-this-to-a-secure-random-key/$ENCRYPTION_KEY/" .env + else + sed -i "s/change-this-to-a-secure-random-key/$ENCRYPTION_KEY/" .env + fi + echo "✅ Generated secure encryption key" else echo "â„šī¸ .env file already exists, keeping existing configuration" fi