# Typo3 Ddev

> Use whenever a running TYPO3 instance is wanted, started or reached: ddev commands, backend URLs, DDEV setup, multi-version testing — and when DDEV cannot run, so the instance must be provisioned directly. Triggers on: I need an instance, install TYPO3 locally, ddev URLs, docker environment, CI or container without DDEV.

- Skill: `netresearch/typo3-ddev` (Agent Skill, multi-file: 53 files)
- Install (CLI): `npx skillmds@latest add netresearch/typo3-ddev`
- Raw SKILL.md: https://api.skillmd.com/api/skills/netresearch/typo3-ddev/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: netresearch (https://skillmd.com/u/netresearch)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/netresearch/typo3-ddev

---


# TYPO3 DDEV Setup Skill

## CRITICAL: URL Scheme

**NEVER guess URLs. Read `name:` from `.ddev/config.yaml`, then apply the subdomain pattern:**

`https://v{VERSION}.{sitename}.ddev.site/typo3/` · Landing: `https://{sitename}.ddev.site/` · Docs: `https://docs.{sitename}.ddev.site/`

Each version gets a vhost (`/var/www/html/v{VERSION}`) via `additional_hostnames`. **Never infer URLs from directory listings.**

**Credentials**: admin / Joh316!!

## Container Priority

1. `.ddev/` exists → `ddev exec`
2. `docker-compose.yml` → `docker compose exec`
3. System tools only if no container. Use project's configured PHP.

**No DDEV available** (CI, container, agent harness — DDEV drives Docker): read `.ddev/config.yaml` and `.ddev/commands/`, then `scripts/provision-without-ddev.sh --extension . --serve`. The distribution ships no `.htaccess`, so `/typo3/` answers 200 while sub-routes 404 — `references/without-ddev.md`.

**In-container edits:** `docker cp` in, then `ddev exec` — not heredocs/`php -r`. See `references/container-file-editing.md`.

## Quick Start

```bash
ddev start && ddev install-all    # All versions (11/12/13/14)
ddev install-v14                  # v14.3 LTS (default / gold standard)
ddev install-v13                  # v13.4 LTS
```

## Database Selection

**MariaDB 10.11** (default) · SQLite · PostgreSQL 16 · MySQL 8.0. See `references/advanced-options.md`, `references/0002-mariadb-default-with-database-alternatives.md`.

## PHP Management

`php_version: "8.3"` in config.yaml. Upgrade via `.ddev/web-build/Dockerfile`. Settings: `.ddev/php/custom.ini`. See `references/0003-php-version-management.md`.

## TYPO3 Version Differences

| | v12 | v13 | v14.3 LTS |
|---|---|---|---|
| Setup | `install:setup --use-existing-database` | `setup` | `setup` |
| Activation | Auto | `extension:setup` | `extension:setup` |
| `composer.json` | optional | optional | **required** (#108310) |
| Theme | bootstrap-package | bootstrap-package | **Camino** (#108539) |
| Fluid | 2.x | 4.x | 5.x strict (#108148) |
| CKEditor | 41–42 | 41–42 | 47 |

See `references/typo3-12-cli-changes.md`.

## Post-Setup Verification

`ddev status`, `ddev describe`, `ddev exec -d /var/www/html/v13 vendor/bin/typo3 extension:list --active`. Check a consequence, not a status: `/typo3/login` must answer 200. See `references/post-setup-verification.md`.

## Optional Services & Commands

- **Valkey 8** (default) or Redis 7: `references/0001-valkey-default-with-redis-alternative.md`
- **Ofelia**: scheduler automation · `ddev generate-makefile` / `generate-index` / `docs` / `xdebug on`

## Extension Naming

Hyphens for composer (`nr-llm`), underscores for TYPO3 key (`nr_llm`). Source: composer.json `name`.

## Troubleshooting

| Issue | Solution |
|---|---|
| Port conflict | `router_http_port: "8080"` / `router_https_port: "8443"` |
| Database exists | `ddev mysql -e "DROP DATABASE v13; CREATE DATABASE v13;"` |
| Extension not found | `ddev exec -d /var/www/html/v13 vendor/bin/typo3 cache:flush` |
| Windows health check | `/phpstatus` endpoint with `php-fpm.sock` |
| PHP settings ignored | `.ddev/php/custom.ini` |
| Full cleanup | `ddev delete --omit-snapshot --yes`, remove volumes |

## References

| Topic | File in `references/` |
|---|---|
| Without DDEV | `without-ddev.md` |
| Prerequisites, quick start | `{prerequisites-validation,quickstart}.md` |
| Advanced, post-setup, branding | `{advanced-options,post-setup-verification,index-page-generation}.md` |
| ADRs · Windows | `{0001,0002,0003}-*.md` · `windows-{fixes,optimizations}.md` |
| Docs rendering, troubleshooting | `{documentation-rendering,troubleshooting}.md` |

