TYPO3 Core contribution setup with DDEV

DDEV provides several pre-configured environments based on Docker.

Here is a description of how you can use DDEV to setup a working TYPO3 installation using the cloned TYPO3 CMS Git repository.

You don't need to have a Webserver, a Database or PHP running on your system. Everything will be supplied by DDEV. In fact, if you do have a Webserver or Database running on your machine, make sure there are no conflicts (e.g. change the ports in the ddev config).

Prerequisites

  • You have cloned the TYPO3 git repository as described in git clone and have switched to the directory which contains the local Git repository.

Configure DDEV

For the TYPO3 CMS core latest (main branch) DDEV v1.16.5 or later is suggested to have the correct setup included

ddev config
Copied!

DDEV should suggest the correct defaults and you just need to press ENTER:

> Project name (t3coredev):

> Docroot Location (current directory):

> Found a typo3 codebase at /var/www/t3coredev.
> Project Type [backdrop, drupal6, drupal7, drupal8, drupal9, laravel, magento, magento2, php, typo3, wordpress] (typo3):
Copied!

Change configuration

In order to make further changes to the configuration, use ddev config as shown below or edit the configuration file .ddev/config.yaml manually.

# Set correct PHP version:
ddev config --php-version="8.2"

# Add necessary packages for the npm build process,
# (only needed if you are working on assets):
ddev config --nodejs-version="18"
ddev config --webimage-extra-packages="automake,build-essential"
Copied!

Optionally, set a new HTTP/HTTPS port to avoid conflicts with local defaults. Error message: Failed to start t3coredev: Unable to listen on required ports, port 80 is already in use,

ddev config --router-http-port="8090"
ddev config --router-https-port="8443"
Copied!

Start DDEV

ddev start
Copied!

DDEV should now show a URL under which the site can be reached:

> TYPO3 does not seem to have been set up yet, missing LocalConfiguration.php (/var/www/t3coredev/typo3conf/LocalConfiguration.php)
> Generating AdditionalConfiguration.php file for database connection.
> Successfully started t3coredev
> Project can be reached at http://t3coredev.ddev.site http://127.0.0.1:32773
Copied!

Ignore the warning about missing LocalConfiguration.php for now. We will take care of that below.

Build

It is recommended to run tasks such as composer install etc. via the runTests.sh script. We provide the direct commands in some places - in case there is good reason to run the commands directly. But, if you need the direct commands, you are encouraged to look them up using the instructions in Direct commands without Docker.

Build/Scripts/runTests.sh -s composerInstall
Copied!
ddev composer install
Copied!

The following is not necessary for the initial build, but once you change some assets (for example Typescript, SCSS files), you must build them. You might like to try this now:

Build/Scripts/runTests.sh -s buildCss
Build/Scripts/runTests.sh -s buildJavascript
Copied!
ddev exec "cd Build && npm ci"
ddev exec "cd Build && npm run build"
Copied!

The first command is required once, the second (build) command is required after every change of a resource file.

Be aware that until TYPO3 v11.5 yarn was used.

DDEV describe

Let DDEV dump information:

ddev describe
Copied!

Displays information about the project, its URLs and access to phpMyAdmin, MailHog and the MySQL database.

FIRST_INSTALL

Create a file FIRST_INSTALL:

touch FIRST_INSTALL
Copied!

Setup your TYPO3 installation

Now load the URL by running the command ddev launch.

You will now be guided through the basic installation steps by TYPO3.

Additional setup

Be sure to add the .ddev directory to your local gitignore (e.g. .git/info/exclude).

Shutdown DDEV

When you are done you can do:

ddev stop
Copied!

For a list of commands see:

ddev help
Copied!

Next step

If you are in the middle of setting up a TYPO3 installation for core development, continue with

Resources

Remember, you can use the Slack channels to ask for help! Follow the general convention for the channels: not too chatty, get straight to the point and ask, be nice. Register for the TYPO3 slack workspace if you have not done so already.

Slack channels

  • #ddev
  • #typo3-cms-coredev : Only for core development, ask general TYPO3 support questions in #typo3-cms

DDEV documentation