logo
podcast Podcast
get help Get Unstuck

How to get Minio working with Orbstack over HTTPS

Improving the local dev experience

Joel Clermont
Joel Clermont
2025-06-25

I previously talked about how to force downloads when using S3 temporary URLs. This presented a little bit of a challenge for us with our local dev environment, which is what I want to explore today.

Locally, we use Docker for development, and more specifically we use Orbstack as our container host instead of Docker Desktop.

We have one container running Minio, so we don't need to connect to a real S3 bucket up in Amazon.

One of the nice things about Orbstack is that it auto-provisions TLS certificates and proxies connections to your container, so you don't normally need to set any of that up manually. As mentioned in the previous article, the HTTPS connection is critical in order for the download headers to be respected.

The tricky part is that Minio runs on two ports inside the container: One for the API calls, the other for console interactions in the browser. And neither of these is on port 80, the automatic proxy setup Orbstack does will not work.

The solution was fairly simple once I figured it out.

First, we alter our Docker compose configuration to have Orbstack proxy to the correct port:

minio:
  container_name: "minio"
  image: minio/minio:RELEASE.2025-05-24T17-08-30Z
  volumes:
    - ./storage/minio:/data
  ports:
    - "9000:9000"
    - "9988:9988"
  labels:
    - dev.orbstack.http-port=9000

That last labels block is the key one that tells Orbstack to proxy HTTPS traffic specifically to port 9000, instead of the default port 80.

Next, we had to update our environment to use the full Orbstack container host, and omit the port number:

# original - with container name and port
AWS_ENDPOINT=http://minio:9000

# new - with local hostname and no port
AWS_ENDPOINT=https://minio.yourprojectname.orb.local

Now the API connections are over HTTPS and everything works locally as expected. We still access the console over HTTP on port 9988, but that works fine for local development.

Here to help,

Joel

P.S. Check out the amazing library of Laravel, Livewire, and Alpine content over at Code Course. And if you sign up, it helps support our efforts too!

Toss a coin in the jar if you found this helpful.
Want a tip like this in your inbox every weekday? Sign up below 👇🏼
email
No spam. Only real-world advice you can use.