MinIO Object Storage on PMSS
MinIO is a mature, widely-integrated S3 server you can run on a Pulsed Media storage box or seedbox when you want more than a plain bucket — object versioning, bucket policies, and a browser-based object console. It is a single Go binary that runs from your home directory; in a test on a Pulsed Media storage box the server held about 138 MB of RAM. It is one of the self-hosted S3 options, heavier than rclone serve s3 but with a richer feature set. The keys are yours and the data stays in Pulsed Media's Finnish datacenters.

When MinIO is the right tool
Reach for MinIO when a plain bucket is not enough:
- You want object versioning — keep previous versions of an object after it is overwritten or deleted. rclone serve s3 does not do this; MinIO does.
- You want bucket policies and multiple access keys with different permissions, managed with the
mccommand-line client. - You want a browser object console to see and manage buckets and objects without a separate S3 client.
- You are running software that expects a full-featured S3 target — MinIO is one of the most widely tested S3 implementations, so compatibility is rarely the problem.
For the simplest possible endpoint on one box, rclone serve s3 is lighter. To spread the store across boxes so a whole box can fail, use Garage.
What one process needs
MinIO ships as a single Go binary — download it into ~/bin and run it; there is no package to install and no root required. In a test on a Pulsed Media storage box (MinIO RELEASE.2025-09-07, Debian 12) the running server held about 138 MB of resident memory while serving a small bucket. That is more than rclone serve s3 (about 51 MB in the same test) and buys you the console, versioning, and policy engine. Objects are stored under a data directory in your home; disk cost tracks your data.
Verified behaviour
On a Pulsed Media storage box, MinIO was exercised end to end: download the binary, start the server on non-default ports bound to localhost, then over the S3 API create a bucket, upload an object, list it, and read it back byte for byte. Object versioning was enabled on the bucket and accepted. The object browser, reached over an SSH tunnel to the console port, showed the bucket and the uploaded object — that is the screenshot. The server held about 138 MB of RAM throughout.
The Community Edition console
MinIO's open-source Community Edition is what you self-host, and it is worth knowing what its console does and does not include. Since 2025, MinIO moved the browser-based administration features — user management, access policies, and configuration — out of the Community Edition and into its paid tier. What the Community Edition console still gives you is the object browser: create buckets, browse, upload, and download objects, as in the screenshot. Administration — users, policies, versioning, configuration — is done with the mc command-line client (mc admin), which remains fully featured. So on a Pulsed Media box you drive MinIO day to day with mc, and use the console when you want to click through your objects.
Setting it up
Download the server and the client into ~/bin:
mkdir -p ~/bin ~/minio-data curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio -o ~/bin/minio && chmod +x ~/bin/minio curl -fsSL https://dl.min.io/client/mc/release/linux-amd64/mc -o ~/bin/mc && chmod +x ~/bin/mc
Start the server. Pick your own ports — not the default 9000, which automated scanners probe and which another user on a shared box may already hold — and bind to localhost, a VPN, or a known client IP. Run it inside a tmux or screen session:
MINIO_ROOT_USER=YOUR-ACCESS-KEY MINIO_ROOT_PASSWORD=YOUR-SECRET-KEY \ ~/bin/minio server ~/minio-data \ --address 127.0.0.1:PORT --console-address 127.0.0.1:CONSOLE_PORT
Point the mc client at it and use it:
mc alias set myminio http://127.0.0.1:PORT YOUR-ACCESS-KEY YOUR-SECRET-KEY mc mb myminio/mybucket mc version enable myminio/mybucket # object versioning mc cp file.txt myminio/mybucket/
To reach the console from your own machine, forward the console port over SSH — ssh -L LOCALPORT:127.0.0.1:CONSOLE_PORT you@server — then open http://127.0.0.1:LOCALPORT. Do not bind the console to all interfaces on a shared box. See Docker on PMSS if you would rather run MinIO as a rootless container than a bare binary.
A stable hostname, and TLS
Point S3 clients at your service permalink — <your-service-label>.mcx.fi:PORT — so the endpoint keeps working when Pulsed Media migrates your service. Some clients refuse plain HTTP; give MinIO a certificate by mounting public.crt and private.key into ~/.minio/certs/, and set the certificate's name to your permalink so the trusted name survives a move.
Security
- Use long, random values for the root access key and secret. The console and the S3 API both use them.
- Do not use the default port 9000. Pick your own, and bind to localhost, a VPN, or a known client IP unless you need public access.
- Manage least-privilege access keys and bucket policies with
mc adminrather than handing out the root key. - MinIO stores and serves bytes; it does not encrypt them for you. Combine it with client-side encryption for sensitive data.
See also
- S3 Object Storage on PMSS — all the self-hosted S3 options and when to choose which
- S3 Server Benchmarks on PMSS — measured PUT/GET throughput of this and the other S3 servers
- rclone serve s3 on PMSS — the lighter single-box option, for a plain bucket
- Garage Object Storage on PMSS — spread the store across boxes so one can fail
- Storage Boxes — the disk this runs on: plans, protocols, and use cases
- Docker on PMSS — run MinIO as a rootless container instead of a bare binary