git / moonbite-network / deploy/entrypoint-railway.sh · raw
#!/bin/bashset -eecho "🚀 MoonBite PWA Wallet - Railway Deployment"echo "=========================================="# Railway Environment SetupDOMAIN="${RAILWAY_DOMAIN:-moonbite.org}"EMAIL="${LETSENCRYPT_EMAIL:-admin@moonbite.org}"PORT="${PORT:-8000}"FLASK_PORT="${FLASK_PORT:-5000}"echo "📍 Domain: $DOMAIN"echo "📧 Email: $EMAIL"echo "🔌 Port: $PORT"# Create directoriesmkdir -p /etc/letsencrypt/live/$DOMAINmkdir -p /var/log/nginxmkdir -p /var/cache/nginx# Check if certificate exists, if not create self-signed for nowif [ ! -f "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" ]; then echo "⚠️ Generating self-signed certificate (replace with Let's Encrypt)..." openssl req -x509 -newkey rsa:4096 -keyout /etc/letsencrypt/live/$DOMAIN/privkey.pem \ -out /etc/letsencrypt/live/$DOMAIN/fullchain.pem -days 365 -nodes \ -subj "/CN=$DOMAIN/O=MoonBite/C=US" echo "✅ Self-signed certificate generated"else echo "✅ Certificate found"fi# Update nginx configuration with correct domainsed -i "s/moonbite.org/$DOMAIN/g" /etc/nginx/nginx.confsed -i "s/example.com/$DOMAIN/g" /etc/nginx/nginx.conf# Start Flask app in backgroundecho "🐍 Starting Flask application..."cd /apppython web_app.py &FLASK_PID=$!echo "✅ Flask running (PID: $FLASK_PID)"# Wait for Flask to startsleep 3until curl -f http://localhost:$FLASK_PORT > /dev/null 2>&1; do echo "⏳ Waiting for Flask to start..." sleep 1doneecho "✅ Flask ready"# Start nginxecho "🌐 Starting nginx..."nginx -g "daemon off;" &NGINX_PID=$!echo "✅ Nginx running (PID: $NGINX_PID)"# Function to renew certificate every 30 daysrenew_certificate() { while true; do sleep 86400 # Check daily echo "🔄 Checking certificate expiration..." # Try Let's Encrypt renewal (will be manual for now on Railway) # In production, use Railway's managed certificates or integrate with Certbot if [ -f "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" ]; then expiration=$(openssl x509 -enddate -noout -in "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" | cut -d= -f2) echo "📅 Certificate expires: $expiration" fi done}# Start certificate renewal checkerrenew_certificate &RENEWAL_PID=$!# Handle signalstrap 'kill $FLASK_PID $NGINX_PID $RENEWAL_PID 2>/dev/null; exit 0' SIGTERM SIGINTecho ""echo "✨ MoonBite PWA Wallet is Running!"echo "=========================================="echo "🌍 HTTPS: https://$DOMAIN"echo "📱 Install on iPhone: Share > Add to Home Screen"echo "🤖 Install on Android: Menu > Install app"echo ""# Keep container runningwait