S3 minIO (Optional)

1. Introduction

minIO is a scalable, object-based storage solution with high performance. In Relution, the resource table can grow very large (e.g., due to stored native apps). To relieve the database, it is recommended to outsource these app files into an S3 bucket.

The minIO image is a compact, easily configurable Docker container.

⚠️ Important: Include the minIO directory in your backup routine. Without its contents, the operation of the server and device management cannot be ensured.


2. Preparing the docker-compose.yml

Add a minIO container to your docker-compose.yml:

services:
  minio:
    image: "quay.io/minio/minio:latest"
    restart: always
    ports:
      - "9001:9001"
    expose:
      - 9000
    environment:
      - MINIO_ROOT_USER=%USERNAME%
      - MINIO_ROOT_PASSWORD=%PASSWORD%
    command: server --console-address ":9001" /data
    networks:
      relution-network:
        aliases:
          - minio
    volumes:
      - ./volumes/minio/data:/data
  • Replace MINIO_ROOT_USER and MINIO_ROOT_PASSWORD with your own values.
  • Data will be stored locally under ./volumes/minio/data.

3. Initial minIO Setup

  1. Start the container and open the minIO web interface: 👉 http://localhost:9001

  2. Log in with your configured credentials.

  3. Perform the following steps:

    • Create a new bucket named relution.

4. Configure Relution

Relution must be informed that data will now be stored in the S3 bucket.

Option A: in docker-compose.yml

Add these environment variables to the relution service:

services:
  relution:
    environment:
      - S3_ENDPOINT=http://minio:9000
      - STORAGE_TYPE=S3
      - STORAGE_S3_ACCESS_KEY=%ACCESS-KEY-ID%
      - STORAGE_S3_SECRET_KEY=%SECRET-KEY%
      - STORAGE_S3_BUCKET_NAME=relution
  • Replace %ACCESS-KEY-ID% and %SECRET-KEY% with the previously set values MINIO_ROOT_USER=%USERNAME% and MINIO_ROOT_PASSWORD=%PASSWORD%.

Option B: in application.yml

Alternatively, add this configuration there:

relution:
  storage:
    resourceStorageType: S3
    s3:
      customEndpoint: http://minio:9000
      accessKey: %ACCESS-KEY-ID%
      secretKey: %SECRET-KEY%
      bucketName: relution
  • Replace %ACCESS-KEY-ID% and %SECRET-KEY% with the previously set values MINIO_ROOT_USER=%USERNAME% and MINIO_ROOT_PASSWORD=%PASSWORD%.

5. Start the Containers

  1. Pull the images:

    docker compose pull
    
  2. Start the containers:

    docker compose up -d
    
  • minIO will be ready within a few seconds.
  • Relution will automatically start moving content from the resource table into the S3 bucket.

6. Monitor Progress

You can monitor the copying process with the following command:

docker logs -f docker_relution

7. Note

⚠️ This process is not reversible (as of Relution 5.31.2).