Files
Rezepte/start-local-network.sh

103 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
set -e
echo "🌐 Starting Rezepte for Local Network Access"
echo "=================================================="
# Function to detect host IP
detect_host_ip() {
# Try different methods to get the local IP
local ip=""
# Method 1: macOS WiFi
if command -v ipconfig &> /dev/null; then
ip=$(ipconfig getifaddr en0 2>/dev/null || echo "")
if [ -n "$ip" ]; then
echo "$ip"
return
fi
# Try Ethernet on macOS
ip=$(ipconfig getifaddr en1 2>/dev/null || echo "")
if [ -n "$ip" ]; then
echo "$ip"
return
fi
fi
# Method 2: Linux/Unix
if command -v ip &> /dev/null; then
ip=$(ip route get 1 2>/dev/null | awk '{print $7; exit}' || echo "")
if [ -n "$ip" ]; then
echo "$ip"
return
fi
fi
# Method 3: Alternative Linux method
if command -v hostname &> /dev/null; then
ip=$(hostname -I 2>/dev/null | awk '{print $1}' || echo "")
if [ -n "$ip" ]; then
echo "$ip"
return
fi
fi
# Fallback
echo "192.168.1.100"
}
# Detect the host IP
HOST_IP=$(detect_host_ip)
echo "🔍 Detected Host IP: $HOST_IP"
echo ""
# Verify IP looks valid
if [[ ! $HOST_IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
echo "⚠️ Warning: Detected IP '$HOST_IP' doesn't look valid."
echo "Please check your network connection or manually set HOST_IP in .env.local-network"
echo ""
read -p "Do you want to continue anyway? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
# Export HOST_IP for docker compose
export HOST_IP
echo "🛑 Stopping any existing containers..."
docker compose -f docker compose.local-network.yml down
echo "🏗️ Building and starting containers for local network access..."
docker compose -f docker compose.local-network.yml up --build -d
echo "⏳ Waiting for services to start..."
sleep 20
echo "🔍 Checking service health..."
if docker compose -f docker compose.local-network.yml ps | grep -q "Up"; then
echo "✅ Services started successfully!"
echo ""
echo "🌐 Your application is now accessible from:"
echo " Local machine: http://localhost:3000"
echo " Network access: http://$HOST_IP:3000"
echo " API endpoint: http://$HOST_IP:3001/api"
echo ""
echo "📊 Service Status:"
docker compose -f docker compose.local-network.yml ps
echo ""
echo "💡 Share this URL with other devices on your network:"
echo " http://$HOST_IP:3000"
else
echo "❌ Failed to start services. Check logs:"
docker compose -f docker compose.local-network.yml logs --tail=20
exit 1
fi
echo ""
echo "📋 Useful commands:"
echo " View logs: docker compose -f docker compose.local-network.yml logs -f"
echo " Stop: docker compose -f docker compose.local-network.yml down"
echo " Restart: docker compose -f docker compose.local-network.yml restart"