MinIO cpuv1 Rock-on Won’t Start: Fix the Console Address Error
Two errors, one root cause
If you’re standing up a custom MinIO Rock-on on RockStor and hitting this in the logs:
FATAL Unable to start listening on console port: address 9001: missing port in address
the fix is a single character. Your MINIO_CONSOLE_ADDRESS environment variable is set to 9001 when it needs to be :9001 — colon first, then the port number.
Go’s standard net package parses listen addresses as host:port. A bare number like 9001 is read as a hostname, not a port. No port found, fatal error. Once you add the colon, MinIO can bind its console correctly.
The checksum error is a red herring
That first line — ERRO: Calculating checksum failed: open minio: no such file or directory — looks alarming but it’s not what’s killing your container. MinIO performs a self-integrity check at startup by reading its own binary. Inside the container, if the process was launched with a bare minio name rather than a full path, it looks for a file called minio in the working directory, can’t find it, and logs an ERRO. Note it’s ERRO, not FATAL. MinIO continues past it. The FATAL on the console port is what actually stops the server.
Why the cpuv1 image in the first place
Modern MinIO images are compiled against glibc 2.17 targeting the x86-64-v2 microarchitecture baseline, which requires CPU instructions (SSE4.2, POPCNT) that pre-2008 or some embedded chips don’t have. The symptom is blunt:
Fatal glibc error: CPU does not support x86-64-v2
MinIO started shipping -cpuv1 tagged images as a separate build for exactly this hardware. The tag format is minio/minio:RELEASE.YYYY-MM-DDTHH-MM-SSZ-cpuv1. So RELEASE.2024-09-22T00-33-43Z-cpuv1 is the right call for an older host. That part of your JSON is correct.
The fix in your Rock-on JSON
Two things to check:
1. MINIO_CONSOLE_ADDRESS value
When the installer prompts you for this value, enter :9001 — colon included. The description in your JSON already hints at this with the example ":9001", but it’s easy to type the port number alone when filling out the form.
2. cmd_arguments — pass –console-address as an alternative
If you’d rather not rely on the env var, you can drop MINIO_CONSOLE_ADDRESS entirely and pass the flag through cmd_arguments instead:
"cmd_arguments": [
["server", "/data", "--console-address", ":9001"]
]
Both routes work. The env var approach keeps the port configurable at install time, which is cleaner for a Rock-on that other people might use.
A corrected working JSON snippet
Here’s the relevant section with the colon in place:
"environment": {
"MINIO_ROOT_USER": {
"description": "MinIO Administrator Username, 3 to 128 alphanumeric characters",
"label": "MinIO Admin User"
},
"MINIO_ROOT_PASSWORD": {
"description": "MinIO Administrator Password, 8 to 128 alphanumeric characters",
"label": "MinIO Admin Password"
},
"MINIO_CONSOLE_ADDRESS": {
"description": "MinIO Console Address — must start with a colon, e.g. \":9001\"",
"label": "MinIO Console Address"
}
}
The JSON structure itself is fine. The issue is purely the runtime value the user types when deploying. Making the description more explicit (as above) helps avoid it.
Verifying it started
Once the container is running, check with:
docker logs <container_name>
You should see MinIO print its startup banner with the API endpoint on port 9000 and the WebUI on 9001, then a line like Status: 1 Online, 0 Offline. If the FATAL is gone but the console is still unreachable, double-check that port 9001 is mapped correctly in the Rock-on ports section — the JSON you posted maps host 9001 to container 9001, which is correct.
One more thing about the Rock-on registry
If you get this working, consider submitting your MinIOcpuV1 definition to the rockon-registry on GitHub. There are other RockStor users on older hardware hitting the same x86-64-v2 wall, and a tested cpuv1 variant in the official registry would save them the same debugging loop.
Sources
