Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 30 additions & 3 deletions INSTALL
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
For detailed installation and further instructions please refer http://airavata.apache.org/:
Documentation section in left hand panel. The website lists step by step instructions

Installing Apache Airavata 0.17
Installing Apache Airavata 0.21-SNAPSHOT
------------------------------------------------

Prerequisites
-------------
Java 1.8 or later
Maven 3 or later
Java 17 or later (Java 21 recommended)
Maven 3.8 or later
Docker 20.10+ (optional, for containerized deployment)
Docker Compose 2.0+ (optional, for containerized deployment)

Build Apache Airavata from Source
---------------------------------
Expand All @@ -27,6 +29,31 @@ Running Tests
- Extract the binary distributions and once the binary is unzipped, instructions to run the tests should be followed
from README files found within.

Docker Deployment (Recommended)
--------------------------------
* Build the project first:
$ mvn clean install -DskipTests
* Start all services with Docker Compose:
$ docker-compose up -d
* View logs:
$ docker-compose logs -f
* Stop all services:
$ docker-compose down

Service Endpoints (Docker):
- API Server: localhost:8930
- RabbitMQ Management: localhost:15672
- MySQL: localhost:3306

Security Note
-------------
The default Docker configuration uses default passwords for development.
For production deployments, ALWAYS:
1. Change all default passwords
2. Use environment variables for credentials
3. Implement proper secrets management
4. See docker-compose.yml for configuration options

Tutorials
----------
The airavata documentation has instructions for basic tutorials at https://airavata.readthedocs.io/en/latest/
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -237,9 +237,16 @@ multitail apache-airavata-*/logs/*.log

```

### 🐳 Option 2 - Run with Docker (Experimental)

> ⚠️ **Note:** Docker deployment is experimental and not recommended for production use.
### 🐳 Option 2 - Run with Docker

> ⚠️ **SECURITY WARNING:** The default Docker configuration uses hardcoded passwords for development only.
> **For production deployments:**
> 1. Copy `env.example` to `.env` and update all passwords
> 2. Use environment variables for all sensitive credentials
> 3. Implement proper secrets management (HashiCorp Vault, AWS Secrets Manager, etc.)
> 4. Never commit `.env` file to version control
>
> See `env.example` for configuration template.

Before setting up Apache Airavata, ensure that you have:

Expand Down
52 changes: 48 additions & 4 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,47 @@ services:
image: mariadb:10.11
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpass}
MYSQL_DATABASE: experiment_catalog
MYSQL_USER: airavata
MYSQL_PASSWORD: 123456
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-123456}
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
- ./.devcontainer/database_scripts/init:/docker-entrypoint-initdb.d:ro
networks:
- airavata-network
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M

rabbitmq:
image: rabbitmq:3-management
container_name: airavata-rabbitmq
environment:
RABBITMQ_DEFAULT_USER: airavata
RABBITMQ_DEFAULT_PASS: airavata
RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:-airavata}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD:-airavata}
ports:
- "5672:5672"
- "15672:15672"
volumes:
- rabbitmq-data:/var/lib/rabbitmq
networks:
- airavata-network
deploy:
resources:
limits:
cpus: '1'
memory: 1G
reservations:
cpus: '0.25'
memory: 256M

zookeeper:
image: confluentinc/cp-zookeeper:7.4.0
Expand All @@ -40,6 +56,14 @@ services:
- zookeeper-logs:/var/lib/zookeeper/log
networks:
- airavata-network
deploy:
resources:
limits:
cpus: '1'
memory: 1G
reservations:
cpus: '0.25'
memory: 256M

kafka:
image: confluentinc/cp-kafka:7.4.0
Expand All @@ -62,6 +86,14 @@ services:
airavata-network:
aliases:
- airavata.host
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M

airavata-monolithic:
build:
Expand All @@ -87,6 +119,10 @@ services:
- airavata-logs:/opt/airavata/logs
environment:
- JAVA_OPTS=-Xmx2g -Xms1g -Dthrift.server.max.message.size=1048576000 -Dthrift.server.max.frame.size=1048576000 -Dthrift.server.transport.max.message.size=1048576000 -Dthrift.maxMessageSize=1048576000 -Dthrift.maxFrameSize=1048576000
- DB_HOST=${DB_HOST:-mysql}
- DB_PORT=${DB_PORT:-3306}
- RABBITMQ_HOST=${RABBITMQ_HOST:-rabbitmq}
- RABBITMQ_PORT=${RABBITMQ_PORT:-5672}
logging:
driver: "json-file"
options:
Expand All @@ -99,6 +135,14 @@ services:
- kafka
networks:
- airavata-network
deploy:
resources:
limits:
cpus: '4'
memory: 4G
reservations:
cpus: '1'
memory: 2G

volumes:
mysql-data:
Expand Down
58 changes: 58 additions & 0 deletions env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Apache Airavata Environment Configuration
# Copy this file to .env and update with your values
# NEVER commit .env file to version control

# ==============================================================================
# DATABASE CONFIGURATION
# ==============================================================================
MYSQL_ROOT_PASSWORD=CHANGE_ME_ROOT_PASSWORD
MYSQL_PASSWORD=CHANGE_ME_USER_PASSWORD
DB_HOST=mysql
DB_PORT=3306

# ==============================================================================
# RABBITMQ CONFIGURATION
# ==============================================================================
RABBITMQ_USER=airavata
RABBITMQ_PASSWORD=CHANGE_ME_RABBITMQ_PASSWORD
RABBITMQ_HOST=rabbitmq
RABBITMQ_PORT=5672

# ==============================================================================
# KEYCLOAK CONFIGURATION (for .devcontainer)
# ==============================================================================
KEYCLOAK_ADMIN_PASSWORD=CHANGE_ME_KEYCLOAK_ADMIN_PASSWORD
OAUTH_CLIENT_SECRET=CHANGE_ME_OAUTH_SECRET

# ==============================================================================
# RESOURCE LIMITS (optional overrides)
# ==============================================================================
# MySQL
MYSQL_CPU_LIMIT=2
MYSQL_MEMORY_LIMIT=2G

# RabbitMQ
RABBITMQ_CPU_LIMIT=1
RABBITMQ_MEMORY_LIMIT=1G

# Kafka
KAFKA_CPU_LIMIT=2
KAFKA_MEMORY_LIMIT=2G

# Airavata Monolithic
AIRAVATA_CPU_LIMIT=4
AIRAVATA_MEMORY_LIMIT=4G

# ==============================================================================
# PRODUCTION SECURITY CHECKLIST
# ==============================================================================
# Before deploying to production:
# 1. Generate strong, unique passwords for all services
# 2. Use a secrets management system (HashiCorp Vault, AWS Secrets Manager, etc.)
# 3. Enable SSL/TLS for all connections
# 4. Configure firewall rules
# 5. Enable authentication and authorization
# 6. Regular security audits
# 7. Keep all services updated
# ==============================================================================

10 changes: 9 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,15 @@ under the License.
<skipTests>${skipTests}</skipTests>
<workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
<useSystemClassLoader>false</useSystemClassLoader>
<argLine>-Xmx1024m -XX:MaxPermSize=256m --add-opens java.base/java.lang=ALL-UNNAMED
<argLine>-Xmx1024m
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/java.lang.reflect=ALL-UNNAMED
--add-opens java.base/java.text=ALL-UNNAMED
--add-opens java.desktop/java.awt.font=ALL-UNNAMED
--add-opens java.base/sun.nio.ch=ALL-UNNAMED
--add-opens java.base/java.io=ALL-UNNAMED
--add-opens java.base/java.nio=ALL-UNNAMED
-javaagent:${settings.localRepository}/org/jmockit/jmockit/1.50/jmockit-1.50.jar
</argLine>
<reuseForks>false</reuseForks>
Expand Down