Before starting, ensure you have the following installed on your system:
Tool | Version | Purpose | Installation Link |
---|---|---|---|
🐳 Docker & Docker Compose | Latest | Container orchestration | Get Docker |
💡 IntelliJ IDEA | Latest | IDE with Java 17+ | Download IDEA |
☕ Java JDK | 17+ | Runtime environment | OpenJDK 17 |
🔧 Apache Maven | 3.8+ | Build tool | Install Maven |
📝 Git | Latest | Version control | Install Git |
🐍 Python | 3.8+ | Django portal | Python.org |
📦 Node.js & npm | Latest LTS | Frontend build tools | Node.js |
# Clone the main repository git clone https://github.com/apache/airavata.git cd airavata # Build the project (this may take a few minutes) mvn clean install -DskipTests
airavata
directorymodules
→ ide-integration
moduleAdd the following entry to your system's hosts file:
Linux/macOS: /etc/hosts
Windows: C:\Windows\System32\drivers\etc\hosts
127.0.0.1 airavata.host
Navigate to the containers directory and start all required services:
cd .devcontainer docker-compose up -d
Services Started:
Apply database migrations:
cd .devcontainer cat ./database_scripts/init/*-migrations.sql | docker exec -i containers-db-1 mysql -p123456
org.apache.airavata.ide.integration.APIServerStarter
Run 'APIServerStarter.main()'
💡 JDK 17+ Note: Add this JVM argument in your run configuration:
--add-opens java.base/java.lang=ALL-UNNAMED
org.apache.airavata.ide.integration.JobEngineStarter
Components Started:
Create a Gmail Account https://accounts.google.com/signup
Enable 2-Step Verification https://myaccount.google.com/security
Go to App Passwords https://myaccount.google.com/apppasswords
(Make sure you're logged in and have already enabled 2-Step Verification.)
Generate App Password:
Copy the Generated App Password
Update Configuration: Edit src/main/resources/airavata-server.properties
:
email.based.monitor.address=your-email@gmail.com email.based.monitor.password=your-app-password
Start Monitor:
org.apache.airavata.ide.integration.JobMonitorStarter
You can create and launch experiments and manage credentials using this portal.
# Navigate outside the Airavata directory cd .. # Clone the Django portal repository git clone https://github.com/apache/airavata-portals.git cd airavata-portals/airavata-django-portal # Create a virtual environment python3 -m venv venv # Activate the virtual environment source venv/bin/activate # For Windows: venv\Scripts\activate # Install Python dependencies pip install -r requirements.txt ### 🔟 Configure Django Portal ```bash # Create local settings cp django_airavata/settings_local.py.ide django_airavata/settings_local.py # Run database migrations python3 manage.py migrate # Build JavaScript components ./build_js.sh # Load default CMS pages python3 manage.py load_default_gateway # Start development server python3 manage.py runserver
default-admin
123456
For registering compute resources and storage resources:
This portal is required when registering new compute or storage resources into the gateway.
cd .devcontainer/pga docker-compose up -d
Get host machine IP:
macOS:
docker-compose exec pga getent hosts docker.for.mac.host.internal | awk '{ print $1 }'
Windows:
docker-compose exec pga getent hosts host.docker.internal
Update container hosts: Replace with the actual IP
docker-compose exec pga /bin/sh -c "echo '<host-machine-ip> airavata.host' >> /etc/hosts"
default-admin
123456
# In each docker-compose directory, run: docker-compose down docker-compose rm -f # Remove unused containers and networks docker system prune
Only needed when Keycloak certificates expire:
cd modules/ide-integration/src/main/resources/keystores # Remove old keystore rm airavata.p12 # Generate new keystore (airavata.p12) keytool -genkey -keyalg RSA -alias selfsigned -keystore airavata.p12 \ -storetype pkcs12 -storepass airavata -validity 360 -keysize 2048 \ -dname "CN=airavata.host,OU=airavata.host,O=airavata.host,L=airavata.host,ST=airavata.host,C=airavata.host" # Generate self-signed key-pair (for TLS) openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt \ -subj "/CN=airavata.host/OU=airavata.host/O=airavata.host/L=airavata.host/ST=airavata.host/C=airavata.host" \ -addext "subjectAltName=DNS:airavata.host"
Service | Port | Status Check | Purpose |
---|---|---|---|
🗄️ MySQL | 3306 | docker ps | Database |
🔐 Keycloak | 8443 | airavata.host:8443 | Authentication |
📨 Kafka | 9092 | Internal | Messaging |
🐰 RabbitMQ | 5672 | Internal | Message Queue |
🌐 Django Portal | 8000 | localhost:8000 | User Interface |
🛠️ PGA Admin | 8008 | airavata.host:8008 | Admin Portal |
Port Conflicts:
# Check what's using a port lsof -i :8000 netstat -tulpn | grep :8000
Docker Issues:
# Reset Docker docker system prune -a docker-compose down --volumes
Build Failures:
# Clean Maven cache mvn clean rm -rf ~/.m2/repository/org/apache/airavata