MinIO systemd服务配置必须显式声明Environment变量和--console-address参数:Environment=逐行设置MINIO_ROOT_USER、MINIO_ROOT_PASSWORD等可避免密码明文泄露;--console-address须显式指定(如:9001),否则与API端口:9000冲突导致控制台无法访问。

systemd服务配置必须显式声明Environment和--console-address
MinIO二进制启动时,环境变量如MINIO_ROOT_USER和MINIO_ROOT_PASSWORD不能写在ExecStart命令行里——shell会截断、进程列表里会泄露明文密码。必须用Environment=逐行声明。同样,--console-address必须显式指定(比如:9001),否则控制台默认绑定到API端口:9000,导致端口冲突、Web界面打不开。
常见错误配置:
-
WorkingDirectory设成/root但User=minio-user,权限拒绝导致静默失败 - 漏掉
LimitNOFILE=65536,高并发上传时连接被拒绝 -
RestartSec=10没设,服务频繁崩溃会被systemd禁用
最小可用的/etc/systemd/system/minio.service关键段:
[Service] Type=simple User=minio-user Group=minio-user Environment=MINIO_ROOT_USER=admin Environment=MINIO_ROOT_PASSWORD=your-secure-password Environment=MINIO_SERVER_URL=https://minio.example.com WorkingDirectory=/usr/local/bin ExecStart=/usr/local/bin/minio server --address :9000 --console-address :9001 /data/minio Restart=always RestartSec=10 LimitNOFILE=65536
Docker运行必须挂载/data和/root/.minio两个卷
只挂载/data会导致每次容器重启后,用户创建的存储桶、策略、证书等元数据丢失——因为MinIO把IAM配置、TLS证书、桶策略都存在/root/.minio里。不挂载它,等于每次都是全新实例。
正确挂载方式:
-
-v /path/on/host/data:/data:存对象文件 -
-v /path/on/host/config:/root/.minio:存用户、策略、证书 - 必须用
--restart=unless-stopped,避免宿主机重启后服务离线
启动命令示例:
docker run -d \ --name minio-server \ -p 9000:9000 -p 9001:9001 \ -v ~/minio-docker/data:/data \ -v ~/minio-docker/config:/root/.minio \ -e "MINIO_ROOT_USER=myadmin" \ -e "MINIO_ROOT_PASSWORD=mypassword123" \ minio/minio:RELEASE.2023-10-25T06-33-25Z \ server /data --console-address ":9001"
用mc命令行创建桶并开放匿名下载要分两步走
mc不是装完就能用,得先用mc config host add注册服务地址和凭证,否则所有后续操作都会报unable to initialize client。注册后创建桶是原子操作,但开放匿名读取必须单独执行mc anonymous set,且路径格式严格为ALIAS/BUCKETNAME,少斜杠或大小写错就失败。
典型流程:
mc config host add myminio http://localhost:9000 myadmin mypassword123mc mb myminio/mybucketmc anonymous set download myminio/mybucket
注意:download只开放GET,不开放PUT;如果要允许上传,得用mc policy set upload myminio/mybucket,但生产环境慎用。
Windows上别双击minio.exe,要用sc create注册为系统服务
直接双击minio.exe会闪退,因为它需要命令行参数和工作目录。CMD里运行start /b minio server D:\minio-data能后台跑,但关终端或重启后服务就没了。真正持久的方式是用Windows服务管理器注册。
注册步骤(以管理员身份运行PowerShell):
sc create MinIO binPath= "D:\Tools\minio\minio.exe server --console-address :9001 D:\minio-data" start= auto obj= "LocalSystem"-
sc failure MinIO actions= restart/60000/restart/60000/restart/60000 reset= 86400(三次崩溃后每分钟重启) sc start MinIO
日志默认输出到Event Viewer → Windows Logs → Application,搜MinIO即可定位启动失败原因,比如“failed to open data directory”通常是因为D:\minio-data不存在或权限不足。
真正容易被忽略的是/root/.minio这个目录——它不存对象,但存了所有你认为“已经配好”的东西:用户、策略、证书、甚至控制台主题设置。Docker不挂载它,systemd没给User写权限,Windows服务没指定obj上下文,都会让配置在重启后彻底消失。











