EN
Log in Create an account

How to set up MinIO on Saplo (your own S3 for projects)

MinIO is object storage compatible with the Amazon S3 API, which you set up on your own Box. The same libraries, the same protocol, zero public cloud transfer and storage costs.

Grzegorz Kalmus ·

Amazon S3 is convenient until you get the data transfer bill, because it's the transfer, not the storage itself, that can surprise you the most. MinIO is open-source object storage that speaks the same language as S3, meaning the same API. So, the boto3 or aws-sdk library you already have in your project will work without changing a single line of code, apart from the endpoint address. The difference is that you set up MinIO on your own Box, once, and you only pay for the Box, without a separate invoice for each gigabyte of transfer. Below is a step-by-step guide on how to set up MinIO on Saplo.

Why MinIO instead of Amazon S3

Amazon S3 has two features that, in practice, hurt growing projects the most:

  • egress data transfer bill - storing files itself is cheap, but every downloaded file, every photo displayed to a user, is counted separately and can dominate the invoice with higher traffic,
  • billing dependent on the number of operations - listing files, writes, reads, each of these actions has its own rate, making it difficult to predict costs upfront.

MinIO implements the same S3 protocol, so migrating from one to the other is usually just a matter of changing the endpoint address and access keys, not rewriting application code. You host it on your own Box, you pay for the Box itself regardless of how many times a file is downloaded, and the data physically remains on your infrastructure.

Requirements

To set up MinIO on Saplo, you need:

  • A Box with Docker running (the engine automatically enables it when installing from the catalog, nesting in the container is required, which Saplo has by default),
  • A minimum of 512 MB of free RAM on the Box and 5 GB of disk space for data, with the target amount depending on how many files you plan to store,
  • A Domain or subdomain *.saploapp.pl included in the Price of each plan, where the administration console will be hosted.

MinIO exposes two different interfaces that are worth distinguishing immediately. The first is the web console, which is a panel with a file browser, bucket creation, and access key management, exposed under a Domain like any other application from the catalog. The second is the S3 API itself, an endpoint to which application code connects via boto3 or a similar library. The engine allocates one port for the application to the public Domain, so the S3 API works only within the Box, on the loopback, and is not visible from the outside.

Step-by-step installation

  1. In your Saplo panel, go to the App catalog and select MinIO (under the "Server" category).
  2. Select the Box where it will be installed, and the domain or subdomain where the administration console will be available.
  3. Confirm the installation. The engine deploys a Docker container with the official minio/minio image, prepares a separate volume for data, generates a random administrator account, and exposes the console under the specified domain using nginx with free SSL.
  4. The engine verifies that the container has actually started before considering the installation complete, so if the image fails to launch, you will see an error instead of a dead domain.
  5. Once finished, in the Box's app directory, you will find the MINIO-SETUP.txt file with the login and generated password for the console.

First configuration

MinIO, just like Directus or Vaultwarden, automatically generates an administrator account during installation instead of asking for it in the wizard.

  1. Log in to the console using the credentials from the MINIO-SETUP.txt file and change the password in Identity -> Users before doing anything else.
  2. Create the first bucket in the Buckets -> Create Bucket tab, for example, a separate one for user files and another one for backups.
  3. In Identity -> Service Accounts, generate an access key (Access Key and Secret Key) for the application that will write and read files. Do not use the administrator account for this in the application code.
  4. The S3 API endpoint works exclusively on the Box loopback and is not exposed publicly. If the application using MinIO is on the same Box, it connects via http://127.0.0.1 on the assigned port. Access from outside the Box, for example, from your own computer or another server, requires an SSH tunnel available from Box L upwards, or an additional custom TCP port from the add-ons catalog.

MinIO on Saplo vs. Amazon S3

Amazon S3 MinIO on Saplo
Cost storage plus transfer plus operations, billed separately included in your Saplo plan, no extra charge for transfer
Where is the data Amazon's infrastructure Your Box
API compatibility S3 standard the same protocol, the same libraries (boto3 and others)
API access from outside the server public endpoint immediately requires an SSH tunnel (Box L+) or a TCP port add-on
Who administers Amazon You, but without manually setting up the server

FAQ

Do I need to change my application's code to switch from S3 to MinIO? Usually not. MinIO implements the same S3 protocol, so you change the endpoint address, access key, and secret in the application configuration, and the rest of the code using boto3 or a similar library works without changes.

Why isn't the S3 API immediately available outside the Box? The Saplo engine exposes exactly one port per application under the public domain, and for MinIO, this is the web console. The S3 API remains on the loopback, so applications running on the same Box connect directly to it, and access from outside the Box requires an SSH tunnel or an additional TCP port.

Can I have more than one bucket? Yes, the number of buckets is not limited by MinIO itself; the only limit is the disk space on the Box.

How do I secure access to files if the application connects from outside the Box? Generate a separate access key for each application in Identity -> Service Accounts and restrict it with a policy to a specific bucket instead of using the administrator account. To connect from outside the Box, use an SSH tunnel (Box L and above) or purchase the additional custom TCP port.

Are data in MinIO automatically backed up? It depends on the purchased Box plan; backup works at the Box level, just like with other applications from the catalog, it is not a separate function of MinIO itself.

If you have questions about setting up MinIO on your own Box or connecting it to your own application, write to us, we will help with the initial configuration.

  • #Backup
  • #MinIO
  • #Guide
  • #File storage
  • #S3