herd-community icon indicating copy to clipboard operation
herd-community copied to clipboard

[Bug]: Running herd init cannot install minio

Open nicekiwi opened this issue 5 months ago • 3 comments

Platform

macOS

Operating system version

macOS 15.5 24F74

System architecture

ARM64 (M1, M2, etc)

Herd Version

1.21.2 (Build 51)

PHP Version

PHP 8.3.24 (cli) (built: Aug 1 2025 00:17:19) (NTS)

Bug description

I have created a herd.yml file with herd init:fresh. If I remove all the services and sites from the app and run herd init I get the following:

$ herd init

   INFO  Setting up your project…

   INFO  PHP 8.3 is installed.

   INFO  Site is secured.

   INFO  Redis is running on port 6379

   INFO  Installing service Minio
   ERROR  Unable to install minio.

If I run it while the Herd app is not running, I get:

herd init

   INFO  Setting up your project…


Warning: Undefined array key 1 in phar:///Users/ezra/Library/Application Support/Herd/bin/herd.phar/cli/Valet/Herd.php on line 185

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in phar:///Users/ezra/Library/Application Support/Herd/bin/herd.phar/cli/Valet/Herd.php on line 187
   ERROR  Invalid herd.yml file…
   ERROR  Invalid service found. The allowed services are: .

But the Herd app starts.

Adding any permutation of -v/-vvv/--verbose does not increase the output.

The herd.yml file:

name: app
php: '8.3'
secured: true
aliases: {  }
services:
    redis:
        version: 7.0.0
        port: '${REDIS_PORT}'
    minio:
        version: RELEASE.2024-06-29
        port: '${AWS_ENDPOINT}'
    mysql:
        version: 8.0.36
        port: '${DB_PORT}'
    reverb:
        version: 1.x
        port: '${REVERB_PORT}'
integrations:
    forge: {  }

I am able to setup the site exclusively via the Herd GUI app without issue (Minio installs and runs fine), but I want to share the config with my team, so this would ideally work. 🤞

if I remove minio from the yml file, MySQL installs, then it fails to install Reverb with the same output.

if I remove reverb, it works.

Steps to reproduce

Following a fresh install of Herd Pro, run herd init in a laravel app root with the above herd.yml file.

nicekiwi avatar Aug 04 '25 08:08 nicekiwi

It looks like the herd init:fresh file is creating the minio service with the wrong env variable for the port property in the herd.yml file. I assume it should be something like '${MINIO_PORT}', not '${AWS_ENDPOINT} as the endpoint is a web address. 🐛

nicekiwi avatar Aug 04 '25 08:08 nicekiwi

Hmm it also looks like the port the Reverb service suggests for the .env file within the GUI does not match the port it actually listens on when running over https. So if I copy the ENV from the Herd GUI into my .env, herd init will fail as port 443 is privileged. 🐛

Image

The host variable in the GUI is also not the one that is actually linked when the service is created.

  • ❌ reverb-1x.herd.test
  • ✅ reverb-dashboard.herd.test

The GUI also shows the env REVERB_SCHEME=https even though when it is created it is not using HTTPS by default. 🐛

Image

nicekiwi avatar Aug 04 '25 08:08 nicekiwi

So to clarify, herd init:fresh is creating an invalid config.

Fresh config: ❌

name: app
php: '8.3'
secured: true
aliases: {  }
services:
    redis:
        version: 7.0.0
        port: '${REDIS_PORT}'
    minio:
        version: RELEASE.2024-06-29
        port: '${AWS_ENDPOINT}' # this is a string, not a valid port number
    mysql:
        version: 8.0.36
        port: '${DB_PORT}'
    reverb:
        version: 1.x
        port: '${REVERB_PORT}' # port is correct if copied form Herd docs, not from the Herd GUI
integrations:
    forge: {  }

Updated config: ✅

name: app
php: '8.3'
secured: true
aliases: {  }
services:
    redis:
        version: 7.0.0
        port: '${REDIS_PORT}'
    minio:
        version: RELEASE.2024-06-29
        port: '${MINIO_PORT}'
    mysql:
        version: 8.0.36
        port: '${DB_PORT}'
    reverb:
        version: 1.x
        port: '${REVERB_PORT}'
integrations:
    forge: {  }

with .env variables

REVERB_PORT=8080
MINIO_PORT=9000

nicekiwi avatar Aug 04 '25 08:08 nicekiwi