feat: add CoopCredits Solana media rewards ecosystem
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.
This commit is contained in:
Executable
+132
@@ -0,0 +1,132 @@
|
||||
#!/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 "$@"
|
||||
Reference in New Issue
Block a user