diff --git a/.github/actions/api-tests/action.yml b/.github/actions/api-tests/action.yml index 0c80412aa9c..19479f1b5ca 100644 --- a/.github/actions/api-tests/action.yml +++ b/.github/actions/api-tests/action.yml @@ -1,6 +1,6 @@ name: API Tests description: > - Start service containers (PostgreSQL, Elasticsearch, RabbitMQ, MinIO), + Start service containers (PostgreSQL, Elasticsearch, RabbitMQ, Silo), download pre-compiled artifacts, and run API tests for a single shard. Requires job-level env vars: SPRING_DATASOURCE_URL, SPRING_DATASOURCE_USERNAME, @@ -172,12 +172,12 @@ runs: done docker exec rabbitmq rabbitmq-diagnostics -q check_running || { echo "❌ RabbitMQ failed to start"; exit 1; } - echo "⏳ Waiting for MinIO..." + echo "⏳ Waiting for Silo..." for i in $(seq 1 30); do curl -sf http://localhost:11000/minio/health/live && break sleep 1 done - curl -sf http://localhost:11000/minio/health/live || { echo "❌ MinIO failed to start"; exit 1; } + curl -sf http://localhost:11000/minio/health/live || { echo "❌ Silo failed to start"; exit 1; } echo "✅ All services ready" diff --git a/.github/actions/api-types-check/action.yml b/.github/actions/api-types-check/action.yml index c8912f3bb0c..540fad95aa0 100644 --- a/.github/actions/api-types-check/action.yml +++ b/.github/actions/api-types-check/action.yml @@ -1,6 +1,6 @@ name: API Types Check description: > - Start service containers (PostgreSQL, Elasticsearch, RabbitMQ, MinIO), + Start service containers (PostgreSQL, Elasticsearch, RabbitMQ, Silo), download and run the backend JAR, and verify that generated API types are up to date. Requires job-level env vars: SPRING_DATASOURCE_URL, @@ -103,12 +103,12 @@ runs: done docker exec rabbitmq rabbitmq-diagnostics -q check_running || { echo "❌ RabbitMQ failed to start"; exit 1; } - echo "⏳ Waiting for MinIO..." + echo "⏳ Waiting for Silo..." for i in $(seq 1 30); do curl -sf http://localhost:11000/minio/health/live && break sleep 1 done - curl -sf http://localhost:11000/minio/health/live || { echo "❌ MinIO failed to start"; exit 1; } + curl -sf http://localhost:11000/minio/health/live || { echo "❌ Silo failed to start"; exit 1; } echo "✅ All services ready" diff --git a/.github/actions/e2e-tests/action.yml b/.github/actions/e2e-tests/action.yml index 6080ff9f920..5c3e0c94f77 100644 --- a/.github/actions/e2e-tests/action.yml +++ b/.github/actions/e2e-tests/action.yml @@ -1,6 +1,6 @@ name: E2E Tests description: > - Start service containers (PostgreSQL, Elasticsearch, RabbitMQ, MinIO), + Start service containers (PostgreSQL, Elasticsearch, RabbitMQ, Silo), download and run the backend Docker image, and run Playwright E2E tests. The Docker image is built in parallel by the docker-build job; this action waits for a registry marker or image artifact and loads the first usable source. @@ -177,12 +177,12 @@ runs: done docker exec rabbitmq rabbitmq-diagnostics -q check_running || { echo "❌ RabbitMQ failed to start"; exit 1; } - echo "⏳ Waiting for MinIO..." + echo "⏳ Waiting for Silo..." for i in $(seq 1 30); do curl -sf http://localhost:11000/minio/health/live && break sleep 1 done - curl -sf http://localhost:11000/minio/health/live || { echo "❌ MinIO failed to start"; exit 1; } + curl -sf http://localhost:11000/minio/health/live || { echo "❌ Silo failed to start"; exit 1; } echo "✅ All services ready" diff --git a/.github/actions/start-dev-services/action.yml b/.github/actions/start-dev-services/action.yml index d3a3fe3a14d..b071d267654 100644 --- a/.github/actions/start-dev-services/action.yml +++ b/.github/actions/start-dev-services/action.yml @@ -1,7 +1,7 @@ name: Start Dev Services description: > Start the backing service containers shared by the test jobs (PostgreSQL, - Elasticsearch or OpenSearch, RabbitMQ, MinIO) in the background and assert + Elasticsearch or OpenSearch, RabbitMQ, Silo) in the background and assert they came up. Image tags come from openaev-dev/docker-compose.yml. Containers are named pgsql, search-engine, rabbitmq and minio. Readiness polling is left to the caller so the containers can boot while other setup runs. diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 11911bfa36f..13f4587fd40 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -8,7 +8,7 @@ strategic levels. ### Architecture -- **Backend**: Spring Boot (Java), PostgreSQL, Elasticsearch/OpenSearch, MinIO, RabbitMQ +- **Backend**: Spring Boot (Java), PostgreSQL, Elasticsearch/OpenSearch, Silo (S3 object storage), RabbitMQ - **Frontend**: React, TypeScript, Vite, Material-UI - **Multi-module Maven project** with 3 modules: `openaev-model`, `openaev-framework`, `openaev-api` - ⚠️ **`openaev-framework` is deprecated** — it will be removed. **Never add new code to `openaev-framework`**. Place @@ -60,7 +60,7 @@ CI runs on GitHub Actions (see `.github/workflows/`): 3. **E2E Tests**: Full app test with Playwright 4. **Type Check**: `yarn generate-types-from-api` verification -**Services**: PostgreSQL, MinIO, Elasticsearch, RabbitMQ (see workflow files for exact versions) +**Services**: PostgreSQL, Silo, Elasticsearch, RabbitMQ (see workflow files for exact versions) ### Key Workflows @@ -167,7 +167,7 @@ Examples: 2. **Trust these instructions**: Only search for information if instructions are incomplete or incorrect. 3. **Pre-existing issues**: Don't fix unrelated linting/build issues unless they block your task. 4. **Frontend must build first**: The backend copies frontend build artifacts. -5. **Services required**: PostgreSQL, MinIO, Elasticsearch/OpenSearch, and RabbitMQ must be running for tests. +5. **Services required**: PostgreSQL, Silo, Elasticsearch/OpenSearch, and RabbitMQ must be running for tests. 6. **Java 21 is mandatory**: The project will not compile with earlier versions. 7. **Node.js version**: Check `openaev-front/package.json` engines field for the minimum required version. 8. **API types**: After API changes, run `yarn generate-types-from-api` in frontend to update TypeScript types. diff --git a/.github/skills/activate-tenant-table/SKILL.md b/.github/skills/activate-tenant-table/SKILL.md index f79ecbdc73a..78b4e8f9a89 100644 --- a/.github/skills/activate-tenant-table/SKILL.md +++ b/.github/skills/activate-tenant-table/SKILL.md @@ -1480,7 +1480,7 @@ mvn -B -ntp spotless:check || mvn -ntp spotless:apply mvn -ntp clean install -DskipTests # 8.3 your tests, then the FULL API suite (needs the Docker services from -# openaev-dev/docker-compose.yml: PostgreSQL, MinIO, OpenSearch, RabbitMQ) +# openaev-dev/docker-compose.yml: PostgreSQL, Silo, OpenSearch, RabbitMQ) mvn -ntp -pl openaev-api test -Dtest='{Entity}*IsolationTest' ``` diff --git a/docs/docs/deployment/installation.md b/docs/docs/deployment/installation.md index abf2a09a0ff..5c68e88fd40 100644 --- a/docs/docs/deployment/installation.md +++ b/docs/docs/deployment/installation.md @@ -104,7 +104,7 @@ If the OpenAEV container exits immediately after starting: 1. Check the logs: `docker compose logs openaev` 2. Verify all required environment variables are set in your `.env` file -3. Ensure all dependency containers (PostgreSQL, ElasticSearch, RabbitMQ, MinIO) are healthy: +3. Ensure all dependency containers (PostgreSQL, ElasticSearch, RabbitMQ, Silo) are healthy: ```bash docker compose ps ``` @@ -128,7 +128,7 @@ You may refer to [the official Docker documentation](https://docs.docker.com/ref Otherwise, you are responsible for providing the dependencies yourself by installing and running them. You need at least a Java Runtime, PostgreSQL (database), ElasticSearch (database), RabbitMQ (queue management), and -MinIO (for object storage). +Silo or any other S3-compatible service (for object storage). !!! note "Supported dependency versions" @@ -140,7 +140,7 @@ If you choose to install the dependencies manually, please refer to their respec * PostgreSQL: the [PostgreSQL documentation portal](https://www.postgresql.org/docs/) * ElasticSearch: the [ElasticSearch documentation portal](https://www.elastic.co/docs) * RabbitMQ: the [RabbitMQ documentation portal](https://www.rabbitmq.com/docs) -* MinIO: the [MinIO website](https://min.io/docs). +* Silo (the community-maintained fork of MinIO): the [Silo documentation](https://silo.pgsty.com/docs/). #### Download the application files @@ -174,7 +174,7 @@ See the relevant Configuration sections for more details: - [PostgreSQL](configuration.md#postgresql) - [ElasticSearch](configuration.md#engine) - [RabbitMQ](configuration.md#rabbitmq) -- [MinIO](configuration.md#s3-bucket) +- [S3 bucket / Silo](configuration.md#s3-bucket) #### Start the application diff --git a/docs/docs/deployment/platform/overview.md b/docs/docs/deployment/platform/overview.md index 0bd173fec40..61ece69f244 100644 --- a/docs/docs/deployment/platform/overview.md +++ b/docs/docs/deployment/platform/overview.md @@ -56,7 +56,7 @@ if an inject (execution, emails, etc.) has been detected or prevented and fill t | PostgreSQL | ≥ 17.0 | 2 cores | ≥ 8GB | SSD | ≥ 16GB | | ElasticSearch | ≥ 8.19 | 2 cores | ≥ 8GB | SSD | ≥ 16GB | | RabbitMQ | >= 4.1 | 1 core | ≥ 512MB | Standard | ≥ 2GB | -| S3 / MinIO | ≥ RELEASE.2025-06-13T11-33-47Z | 1 core | ≥ 128MB | SSD | ≥ 16GB | +| S3 / Silo | latest (Silo is a MinIO fork) | 1 core | ≥ 128MB | SSD | ≥ 16GB | Please note that while the versions of these dependencies are the recommended ones, OpenAEV may still function with earlier versions. However, we will not provide support for versions prior to the recommended ones. diff --git a/docs/docs/development/build-from-source.md b/docs/docs/development/build-from-source.md index 3da767bcb01..a25883ef7bc 100644 --- a/docs/docs/development/build-from-source.md +++ b/docs/docs/development/build-from-source.md @@ -40,7 +40,7 @@ cp ./openaev-api/src/main/resources/application.properties ./openaev-api/src/mai **Start the development dependencies docker stack** -Preconfigured containers for all the needed support containers (PostgreSQL, MinIO, RabbitMQ, Elasticsearch...) +Preconfigured containers for all the needed support containers (PostgreSQL, Silo, RabbitMQ, Elasticsearch...) can be found as a docker compose file in `./openaev/openaev-dev`. Create a file a this location: `./openaev/openaev-dev/.env` and populate it with a minimal set of keys: @@ -69,7 +69,7 @@ and any additional configuration. Make sure the file contains settings for at th the following dependencies: - PostgreSQL -- MinIO +- S3 object storage (Silo in the development stack) - RabbitMQ - Engine (Elasticsearch or OpenSearch) diff --git a/docs/docs/development/environment-windows.md b/docs/docs/development/environment-windows.md index 780200f48eb..d2807fc8bd4 100644 --- a/docs/docs/development/environment-windows.md +++ b/docs/docs/development/environment-windows.md @@ -34,7 +34,7 @@ mvn -version ### Docker Desktop -Docker Desktop is required to run the development services (PostgreSQL, Elasticsearch, RabbitMQ, MinIO). +Docker Desktop is required to run the development services (PostgreSQL, Elasticsearch, RabbitMQ, Silo). 1. Download and install [Docker Desktop for Windows](https://docs.docker.com/desktop/install/windows-install/). 2. Enable the WSL 2 backend for better performance (recommended). @@ -91,7 +91,7 @@ This starts: | Service | Port | Description | |---|---|---| | PostgreSQL 17 | 5432 | Database | -| MinIO | 10000, 10001 | S3-compatible object storage | +| Silo | 10000, 10001 | S3-compatible object storage (MinIO fork) | | Elasticsearch 8 | 9200 | Analytics engine | | RabbitMQ 4 | 5672, 15672 | Message broker | diff --git a/openaev-dev/README.md b/openaev-dev/README.md index 50035598f2a..c6f144d6228 100644 --- a/openaev-dev/README.md +++ b/openaev-dev/README.md @@ -57,7 +57,7 @@ docker compose up -d openaev-dev-pgsql openaev-dev-minio openaev-dev-elasticsear | Service | Port | Why it's required | |---------|------|-------------------| | **PostgreSQL (dev)** | 5432 | Primary data store — all entities, users, scenarios | -| **MinIO** | 10000 (API), 10001 (Console) | File/document storage (S3-compatible) | +| **Silo** | 10000 (API), 10001 (Console) | File/document storage (S3-compatible, MinIO fork) | | **Elasticsearch (dev)** | 9200, 9300 | Full-text search & indexing engine | | **RabbitMQ** | 5672 (AMQP), 15672 (Management) | Async messaging between backend components | @@ -79,7 +79,7 @@ This starts everything, including optional services: |---------|------|-------------| | PostgreSQL (dev) | 5432 | Main development database (persistent) | | PostgreSQL (test) | 5433 | Test database (ephemeral, no volume) | -| MinIO | 10000 (API), 10001 (Console) | Object storage | +| Silo | 10000 (API), 10001 (Console) | Object storage (S3-compatible) | | RabbitMQ | 5672 (AMQP), 15672 (Management) | Message queue | | Elasticsearch (dev) | 9200, 9300 | Search engine | | Elasticsearch (test) | 9201, 9301 | Test search engine | @@ -90,7 +90,7 @@ This starts everything, including optional services: ### 4. Access services -- **MinIO Console**: http://localhost:10001 (minioadmin/minioadmin) +- **Silo Console**: http://localhost:10001 (minioadmin/minioadmin) - **RabbitMQ Management**: http://localhost:15672 (guest/guest) - **pgAdmin**: http://localhost:5050 (admin@openaev.io/admin by default, see `.env`) - **Kibana**: http://localhost:5601 diff --git a/openaev-dev/docker-compose.yml b/openaev-dev/docker-compose.yml index 0c602adac66..a5fc90d121d 100644 --- a/openaev-dev/docker-compose.yml +++ b/openaev-dev/docker-compose.yml @@ -24,12 +24,12 @@ services: interval: 10s timeout: 5s retries: 5 - # MinIO object storage (S3-compatible) + # Silo object storage (S3-compatible, community-maintained MinIO fork) # API: http://localhost:10000, Console: http://localhost:10001 # Credentials: minioadmin/minioadmin openaev-dev-minio: container_name: openaev-dev-minio - image: quay.io/minio/minio:RELEASE.2025-06-13T11-33-47Z + image: pgsty/silo:latest ports: - "10000:9000" - "10001:9001" @@ -110,10 +110,10 @@ services: interval: 10s timeout: 5s retries: 5 - # Test MinIO object storage (S3-compatible) + # Test Silo object storage (S3-compatible) openaev-test-minio: container_name: openaev-test-minio - image: quay.io/minio/minio:RELEASE.2025-06-13T11-33-47Z + image: pgsty/silo:latest ports: - "11000:9000" - "11001:9001"