Installing TYPO3

Welcome to the TYPO3 installation guide. This guide covers each of the steps required to install TYPO3 using the dependency manager Composer.

Installation and deployment

It is recommended to not use Composer on a productive system to update and install additional packages. Such changes should be made on a development system (locally in DDEV, on a non-productive part of the server, …)

This way it can be prevented to install unwanted versions of packages. The files composer.json and composer.lock can be kept under version control and specify exactly what versions should be installed.

Deployment to the productive system can be achieved by deploying these two composer.* files and calling

composer install --no-dev


Always use the –no-dev option to prevent installing packages marked as “development only” to be deployed on the productive server.

Or by executing the above command on a development system or in a Docker container in a deployment pipeline and then just transfer the following folders:

$ TYPO3 root directory
├── webroot/typo3
├── webroot/typo3conf
└── vendor

Pre-installation Checklist

  • Command line (CLI) access with the ability to create directories and symbolic links.
  • Access to Composer via the CLI (for local development)
  • Access to the web server’s root directory
  • Database with appropriate credentials

Execute Composer Create-Project

composer create-project typo3/cms-base-distribution:^11 example-project-directory
composer create-project "typo3/cms-base-distribution:^11" example-project-directory
# Create a directory for your project
mkdir example-project-directory

# Go into that directory
cd example-project-directory

# Tell DDEV to create a new project of type "typo3"
# 'docroot' MUST be 'public'
ddev config  --project-type=typo3 --docroot=public --create-docroot

# Start the ddev instance
ddev start

# Fetch a basic TYPO3 installation and its' dependencies
ddev composer create "typo3/cms-base-distribution:^11"

This command pulls down the latest release of TYPO3 and places it in the example-project-directory.

After this command has finished running, example-project-directory will contain the following structure:

├── .gitignore
├── composer.json
├── composer.lock
├── public
├── var
└── vendor

Verify Installation

Create an empty file called FIRST_INSTALL in the /public directory:

touch example-project-directory/public/FIRST_INSTALL
echo $null >> public/FIRST_INSTALL
ddev exec touch public/FIRST_INSTALL
├── .gitignore
├── composer.json
├── composer.lock
├── public
├── var
└── vendor

Access TYPO3 via a web browser

After you have configured your web server to point ot the public directory of your project, TYPO3 can be accessed via a web browser. When accessing a new site for the first time, TYPO3 automatically redirects all requests to /typo3/install.php to complete the installation process.


When accessing the page via HTTPS, a “Privacy error” or similar warning is likely to occur. In a local environment it is safe to ignore this warning by forcing the browser to ignore similar exceptions for this domain.

The warning is due to the fact that self-signed certificates are being used.

If there is a trustedHostsPattern error on initial access, accessing TYPO3 without HTTPS (http://) is also an option.

Scan Environment

TYPO3 will now scan the host environment. During the scan TYPO3 will check the host system for the following:

  • Minimum required version of PHP is installed.
  • Required PHP extensions are loaded.
  • php.ini is configured.
  • TYPO3 is able to create and delete files and directories within the installation’s root directory.

If no issues are detected, the installation process can continue.

In the event that certain criteria are not met, TYPO3 will display a list of issues it has detected accompanied by a resolution for each issue.

Once changes have been made, TYPO3 can re-scan the host environment by reloading the page https://example-project-site.local/typo3/install.php.


Install Tool in 1-2-3 mode, first step.

Select A Database

Select a database connection driver and enter the credentials for the database.


Install Tool in 1-2-3 mode, second step.

TYPO3 can either connect to an existing empty database or create a new one.

The list of databases available is dependent on which database drivers are installed on the host.

For example, if an instance of TYPO3 is intended to be used with a MySQL database then the PHP extension pdo_mysql is required. Once it is installed, MySQL Database will be an available option.


Install Tool in 1-2-3 mode, third step.

Create Administrative User & Set Site Name

An administrator account needs to be created to gain access to TYPO3’s backend.

An email address for this user can also be specified and a name can also be given.


Install Tool in 1-2-3 mode, forth step.


TYPO3 offers two options for initialisation: Creating an empty starting page or it can go directly to the backend administrative interface. Beginners should select the first option and allow TYPO3 to create an empty starting page, this will also generate a site configuration file.


Install Tool in 1-2-3 mode, fifth step.

Next Steps

Now that the installation is complete, TYPO3 can be configured.