e8d9b1fd42
Add complete token system with Plex/Tautulli/Overseer integration: - Anchor program for SPL token mint/burn/transfer - Express backend with OAuth, webhooks, Solana integration - Next.js frontend with dashboard, admin panel, wallet management - Docker deployment for 172.20.1.0/24 infrastructure - Production configs with SSL, Nginx, health monitoring Tautulli webhooks auto-mint on watch events. Overseer integration burns for content requests.
133 lines
3.1 KiB
Bash
Executable File
133 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# CoopCredits Deployment Script
|
|
# Usage: ./deploy.sh [environment]
|
|
|
|
set -e
|
|
|
|
ENVIRONMENT=${1:-production}
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
echo "🚀 CoopCredits Deployment"
|
|
echo "========================"
|
|
echo "Environment: $ENVIRONMENT"
|
|
echo ""
|
|
|
|
# Check prerequisites
|
|
check_prerequisites() {
|
|
echo "Checking prerequisites..."
|
|
|
|
command -v docker >/dev/null 2>&1 || { echo "❌ Docker is required but not installed. Aborting." >&2; exit 1; }
|
|
command -v docker-compose >/dev/null 2>&1 || { echo "❌ Docker Compose is required but not installed. Aborting." >&2; exit 1; }
|
|
|
|
echo "✅ Prerequisites met"
|
|
}
|
|
|
|
# Load environment variables
|
|
load_env() {
|
|
if [ -f "$PROJECT_DIR/.env" ]; then
|
|
echo "Loading environment variables..."
|
|
set -a
|
|
source "$PROJECT_DIR/.env"
|
|
set +a
|
|
else
|
|
echo "⚠️ .env file not found. Using default values."
|
|
fi
|
|
}
|
|
|
|
# Build and deploy
|
|
build_and_deploy() {
|
|
echo ""
|
|
echo "Building and deploying..."
|
|
|
|
cd "$PROJECT_DIR"
|
|
|
|
# Pull latest images
|
|
docker-compose pull
|
|
|
|
# Build services
|
|
docker-compose build --no-cache
|
|
|
|
# Start services
|
|
docker-compose up -d
|
|
|
|
# Wait for database
|
|
echo "Waiting for database..."
|
|
sleep 10
|
|
|
|
# Run migrations
|
|
echo "Running database migrations..."
|
|
docker-compose exec -T backend npx prisma migrate deploy
|
|
|
|
echo "✅ Deployment complete!"
|
|
}
|
|
|
|
# Setup SSL certificates
|
|
setup_ssl() {
|
|
echo ""
|
|
echo "Setting up SSL certificates..."
|
|
|
|
# Check if certificates exist
|
|
if [ ! -f "$PROJECT_DIR/docker/nginx/ssl/cert.pem" ]; then
|
|
echo "⚠️ SSL certificates not found at docker/nginx/ssl/"
|
|
echo "Please place your certificates:"
|
|
echo " - cert.pem (certificate)"
|
|
echo " - key.pem (private key)"
|
|
echo ""
|
|
read -p "Continue without SSL? (y/n) " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Health check
|
|
health_check() {
|
|
echo ""
|
|
echo "Running health checks..."
|
|
|
|
# Check if services are running
|
|
if docker-compose ps | grep -q "Up"; then
|
|
echo "✅ Services are running"
|
|
else
|
|
echo "❌ Some services failed to start"
|
|
docker-compose ps
|
|
exit 1
|
|
fi
|
|
|
|
# Test API endpoint
|
|
if curl -sf http://localhost:3001/health > /dev/null; then
|
|
echo "✅ Backend is responding"
|
|
else
|
|
echo "❌ Backend is not responding"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Health checks passed"
|
|
}
|
|
|
|
# Main deployment flow
|
|
main() {
|
|
check_prerequisites
|
|
load_env
|
|
setup_ssl
|
|
build_and_deploy
|
|
health_check
|
|
|
|
echo ""
|
|
echo "🎉 CoopCredits has been deployed!"
|
|
echo ""
|
|
echo "Access your application:"
|
|
echo " - Website: https://coop.hobokenchicken.com"
|
|
echo " - API: https://coop.hobokenchicken.com/api"
|
|
echo ""
|
|
echo "Useful commands:"
|
|
echo " - View logs: docker-compose logs -f"
|
|
echo " - Stop: docker-compose down"
|
|
echo " - Restart: docker-compose restart"
|
|
}
|
|
|
|
main "$@"
|