MinIO on RockStor: Fixing the cpuv1 Console Port and Startup Errors

The short answer: that colon in MINIO_CONSOLE_ADDRESS is not optional

If you’re getting FATAL Unable to start listening on console port: address 9001: missing port in address when running a custom MinIO Rock-On on RockStor, the cause is almost always the same thing: the MINIO_CONSOLE_ADDRESS environment variable is being set to 9001 when MinIO expects :9001. The leading colon is part of the Go network address format — without it, MinIO can’t parse the value at all and refuses to start.

There’s also a second error that appears just before the fatal one: ERRO: Calculating checksum failed: open minio: no such file or directory. That one is different in character and worth understanding separately. Neither is obvious from the error message alone.

Background: why cpuv1 in the first place

Starting around late 2022, MinIO’s official Docker images were compiled to target the x86-64-v2 microarchitecture. Older CPUs — many of which still run perfectly fine for home NAS use — lack those instruction extensions and produce a hard crash: Fatal glibc error: CPU does not support x86-64-v2.

MinIO publishes a parallel set of image tags suffixed with -cpuv1 for exactly this situation. The tag used in the original post, RELEASE.2024-09-22T00-33-43Z-cpuv1, is the right approach. The image itself is fine. The problem is in the Rock-On JSON configuration that drives it.

Error 1: the checksum warning

The line ERRO: Calculating checksum failed: open minio: no such file or directory looks alarming but is a non-fatal self-check. MinIO verifies its own binary on startup by looking for a file literally named minio in the working directory. In some container builds the binary lives at a different path than the check expects, so the lookup fails. The log level is ERRO not FATAL, so the process continues. It won’t stop MinIO from running.

You can safely ignore this one for now. Fix the port error first; the checksum warning will likely be irrelevant once everything is running.

Error 2: the fatal console port error

This one does kill the process. FATAL Unable to start listening on console port: address 9001: missing port in address means MinIO received the string 9001 as its console address and couldn’t make sense of it.

MinIO uses Go’s net package to parse network addresses. That package expects addresses in the form host:port or just :port to bind all interfaces. The string 9001 has no colon, so Go sees it as a hostname with no port — hence “missing port in address”.

The fix is straightforward: wherever you enter the value for MINIO_CONSOLE_ADDRESS during Rock-On install, type :9001 (including the colon), not 9001.

Two ways to wire up the console address

Option A: environment variable (what the current JSON does)

The Rock-On JSON already defines MINIO_CONSOLE_ADDRESS as a user-supplied environment variable. This is correct in principle. The only thing that goes wrong is when the user enters 9001 without the colon at install time. The description text in the JSON does say “for example, ‘:9001′” — but that’s easy to miss in the UI.

One small improvement: add a default value so the field is pre-filled with :9001. Rock-On JSON supports a default key inside environment variable definitions. Adding "default": ":9001" means users see the correct format immediately and are less likely to strip the colon.

Option B: bake it into cmd_arguments

The cleaner approach for a single-port setup is to move --console-address :9001 directly into the container’s command arguments and remove the environment variable entirely. That way the port is hardcoded in the JSON and there’s no user-input surface for the colon to go missing.

Change the cmd_arguments block from:

"cmd_arguments": [
    [ "server" , "/data" ]
]

to:

"cmd_arguments": [
    [ "server", "/data", "--console-address", ":9001" ]
]

Each flag and its value must be a separate array element — MinIO receives them as individual argv entries, not as a single shell string. ["--console-address :9001"] as a single string will not work.

A corrected, minimal Rock-On JSON

Below is a cleaned-up version of the configuration that incorporates Option B (cmd_arguments) and removes the now-redundant MINIO_CONSOLE_ADDRESS environment variable, since the port is fixed in the command. If you want the port to remain user-configurable, keep the env var and add "default": ":9001" to it instead of using cmd_arguments.

{
    "MinIOcpuV1": {
        "description": "MinIO S3-compatible object storage (cpuv1 build for older CPUs).",
        "version": "1.3",
        "website": "https://minio.io",
        "ui": {
            "https": false,
            "slug": ""
        },
        "volume_add_support": false,
        "containers": {
            "MinIOcpuV1": {
                "image": "minio/minio",
                "tag": "RELEASE.2024-09-22T00-33-43Z-cpuv1",
                "launch_order": 1,
                "ports": {
                    "9000": {
                        "description": "MinIO API port",
                        "host_default": 9000,
                        "label": "MinIO API Port",
                        "ui": false
                    },
                    "9001": {
                        "description": "MinIO Console (WebUI) port",
                        "host_default": 9001,
                        "label": "MinIO Console Port",
                        "ui": true
                    }
                },
                "volumes": {
                    "/data": {
                        "description": "Share for MinIO object storage",
                        "label": "MinIO Data"
                    }
                },
                "cmd_arguments": [
                    [ "server", "/data", "--console-address", ":9001" ]
                ],
                "environment": {
                    "MINIO_ROOT_USER": {
                        "description": "Admin username (3-128 alphanumeric characters)",
                        "label": "MinIO Admin User"
                    },
                    "MINIO_ROOT_PASSWORD": {
                        "description": "Admin password (8-128 alphanumeric characters)",
                        "label": "MinIO Admin Password"
                    }
                }
            }
        }
    }
}

After saving this JSON to your Rock-Ons directory and reloading the Rock-On framework, install the Rock-On fresh (uninstall the previous attempt first). The WebUI should be reachable at http://<your-rockstor-ip>:9001 once the container starts.

Checking logs when something still goes wrong

RockStor’s Rock-On logs are surfaced through Docker. From the RockStor shell, run:

docker logs MinIOcpuV1

That streams the container’s stdout/stderr — the same output that generated the errors in the original post. If the container exits immediately, add --tail 50 to see the last lines before it died. For a live view during startup use docker logs -f MinIOcpuV1.

Sources


Similar Posts