#!/bin/bash set -e echo "Starting Review Board Cloudron package..." # Database connection from Cloudron DB_NAME=${CLOUDRON_POSTGRESQL_DATABASE:-reviewboard} DB_USER=${CLOUDRON_POSTGRESQL_USERNAME:-reviewboard} DB_PASSWORD=${CLOUDRON_POSTGRESQL_PASSWORD} DB_HOST=${CLOUDRON_POSTGRESQL_HOST:-127.0.0.1} DB_PORT=${CLOUDRON_POSTGRESQL_PORT:-5432} echo "Database host: $DB_HOST" echo "Database port: $DB_PORT" echo "Database name: $DB_NAME" # Wait for PostgreSQL to be ready echo "Waiting for PostgreSQL to be ready..." until PGPASSWORD=$DB_PASSWORD psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c '\q' 2>/dev/null; do echo "PostgreSQL is unavailable - sleeping" sleep 2 done echo "PostgreSQL is ready!" # Django configuration export REVIEWBOARD_SITE_ROOT=${REVIEWBOARD_SITE_ROOT:-https://$CLOUDRON_APP_DOMAIN} export DATABASE_TYPE=postgresql export DATABASE_NAME=$DB_NAME export DATABASE_USER=$DB_USER export DATABASE_PASSWORD=$DB_PASSWORD export DATABASE_HOST=$DB_HOST export DATABASE_PORT=$DB_PORT export MEMCACHED_SERVER= export SECRET_KEY=${SECRET_KEY:-cloudron-secret-key-change-in-production} export ALLOWED_HOSTS=${ALLOWED_HOSTS:-'*'} # Site directory export REVIEWBOARD_SITEDIR=/site # Run database migrations echo "Running Review Board database migrations..." ./manage.py migrate --noinput # Collect static files echo "Collecting static files..." ./manage.py collectstatic --noinput # Create admin user if specified if [ -n "$ADMIN_USERNAME" ] && [ -n "$ADMIN_PASSWORD" ] && [ -n "$ADMIN_EMAIL" ]; then echo "Creating admin user..." echo "from django.contrib.auth import get_user_model; from django.core.management import call_command; User = get_user_model(); User.objects.create_superuser('$ADMIN_USERNAME', '$ADMIN_EMAIL', '$ADMIN_PASSWORD') if not User.objects.filter(email='$ADMIN_EMAIL').exists() else None" | \ ./manage.py shell 2>/dev/null || echo "Admin user may already exist" fi # Start Review Board echo "Starting Review Board..." exec ./serve.sh