Troubleshooting
The failure modes we know about, with the fix for each. If yours is not here, check the issue queue.
The browser warns about the site's certificate
DDEV's HTTPS certificates come from mkcert, and mkcert -install (a
one-time step) is what makes your browser trust them. The installer only
installs DDEV when ddev is missing, and it is DDEV's install script that
sets up mkcert. So on a machine where DDEV was already installed some other
way (apt, brew, an old manual install), mkcert may never have been set up.
Fix:
mkcert -install
If mkcert itself is missing, install it first (brew install mkcert on
macOS; on Linux it ships next to ddev when DDEV's install script is used,
or take it from https://github.com/FiloSottile/mkcert/releases). On Linux,
browser trust additionally needs certutil:
sudo apt install libnss3-tools # Ubuntu/Debian
sudo dnf install nss-tools # Fedora/RHEL
Then run mkcert -install again and restart the browser.
Docker is installed but the build fails immediately
The Docker daemon has to be running. On macOS, start Docker Desktop (or OrbStack/Colima) and wait until it reports ready. On Linux:
sudo systemctl start docker
Add your user to the docker group if docker ps needs sudo:
sudo usermod -aG docker $USER, then log out and back in.
drupalaibp: command not found after installing
install adds ~/.local/bin to your PATH via your shell rc file, but a
shell that was already open does not see it. Restart the shell or source
the rc file it names in its output.
macOS: the installer stops at "bash 4 required" or Homebrew
macOS ships bash 3.2, so the installer bootstraps a newer bash via Homebrew
before doing anything else. That step needs your password (Homebrew's
installer uses sudo) and can take a few minutes on a machine without
Homebrew. If it fails, install Homebrew manually from https://brew.sh, run
brew install bash, and start the one-liner again. The system bash at
/bin/bash is never touched.
"holds several configs" error in an unattended run
A .drupalaibp/ directory with more than one *.json needs to be told
which config to build from. Interactively you get a menu; with --yolo (or
no terminal) the installer dies and names the choices. Pass
--config <name> (the file's basename without .json).
Management mode refuses --yolo
Running the installer inside an existing DDEV project opens the management
menu, which is interactive by design. Run it without --yolo there.
Disk space
A build pulls Docker images and a full Composer project; expect several gigabytes. When space runs out mid-build, clean up and re-run:
docker system prune # unused images/containers
ddev clean --all # DDEV's own caches and leftovers
The denylist step warns about jq
The denylist writers edit the agents' JSON settings with jq, using the
host's jq or, when that is missing, jq inside the web container. The
DDEV web image ships jq, so this only fails when the container is not
running at that point. Re-run the installer inside the project (management
mode) to write the denylist again.
The one-liner runs an older version than the repo
That is by design: the published script updates only when a release tag is cut, so the one-liner always serves the latest release. Run the current development state with:
bash <(curl -fsSL https://git.drupalcode.org/project/one_line_installer/-/raw/2.0.x/drupalaibp)