Spins up a reproducible local TYPO3 v14 LTS development environment with one command, based on DDEV, Composer, TYPO3 Console, and the official Camino theme.
After running it, you get a working TYPO3 instance including a backend login and a styled Camino demo page on the frontend.
- DDEV (tested with v1.25.x)
- Docker / Colima (running container runtime)
git- macOS or Linux,
bash
The script checks these prerequisites and aborts with a clear message if anything is missing.
./setup.sh [options]| Option | Description | Default |
|---|---|---|
--project <name> |
DDEV project name / URL slug | typo3-dev |
--admin-user <u> |
TYPO3 backend admin | admin |
--admin-pass <p> |
Admin password (TYPO3 policy: ≥ 8 chars, upper/lower/digit/special char) | generated |
--php <x.y> |
PHP version in the container | 8.4 |
--db <type:version> |
DDEV database — only mariadb or mysql (e.g. mysql:8.0) |
mariadb:11.8 |
--reset, --force |
Delete an existing environment and rebuild | off |
--delete, --destroy |
Delete an existing environment (no rebuild) | off |
-h, --help |
Show help | – |
Alternatively via environment variables: T3_PROJECT, T3_ADMIN_USER, T3_ADMIN_PASS, T3_PHP, T3_DB.
# Default setup
./setup.sh
# Custom project name + a different PHP version (default is 8.4)
./setup.sh --project my-shop --php 8.3
# Completely rebuild an existing environment (destructive!)
./setup.sh --project my-shop --reset
# Delete an existing environment without rebuilding (destructive!)
./setup.sh --project my-shop --deleteThe script creates the environment in its own subdirectory ./<project-name>/
(DDEV convention: one project = one directory).
After a successful run:
Frontend : https://<project>.ddev.site/ (Camino demo)
Backend : https://<project>.ddev.site/typo3/
Open with:
cd <project>
ddev launch # Frontend
ddev launch /typo3/ # Backend- Preflight – checks
ddev,docker,git - Re-run guard – aborts if the environment already exists (unless
--resetis passed) - DDEV – configures (
typo3,publicdocroot, PHP, database,TYPO3_CONTEXT=Development/Local) and starts - Composer –
typo3/cms-base-distribution:^14.3+typo3/theme-camino:^14.3+helhum/typo3-console:^9.0+helhum/dotenv-connector:^3.2(plugin allow-listed) - Headless setup –
typo3 install:setup(DB, admin) without the web installer; the admin is registered as a system maintainer - Theme/site –
extension:setup, points the Camino demo site at the project URL, flushes the cache - .gitignore – separates versionable configuration from generated runtime files
- Report – URLs and credentials
- Application context is
Development/Local(viaTYPO3_CONTEXTin.ddev/config.yaml) — not Production. - The backend admin is additionally registered as a system maintainer (
SYS/systemMaintainers). - No
typo3/cmsmonolith package — it conflicts withtypo3/theme-camino. Usestypo3/cms-base-distributioninstead (individualtypo3/cms-*packages). - Camino ships its own site including a demo start page; the script points its base at the DDEV URL so the demo appears directly under the project URL.
- A generated admin password is guaranteed to satisfy the TYPO3 password policy (≥ 8 characters, upper-/lowercase letter, digit, special character) and is only printed in the final report, never written to a file.
Should be versioned: .ddev/config.yaml, composer.json, composer.lock, config/.
The generated .gitignore excludes the fully generated directories: /public/ (entirely
generated for Composer-managed TYPO3), /vendor/, and /var/. From .ddev/, only config.yaml
is versioned (/.ddev/* + !/.ddev/config.yaml) — the remaining .ddev/ files are managed by DDEV itself.
Built using Spec Driven Development.