Skip to content

Installation

A single script does the installation: installer_de_patch.sh. It detects on its own whether to create a new Drupal CMS or to prepare an existing project.

You need a command line with PHP, Composer, git and curl – the same environment as for Drupal CMS itself.

New Drupal CMS in German

Run the script in an empty directory:

bash curl -sSL https://git.drupalcode.org/project/dcgi/-/raw/1.0.x/installer_de_patch.sh | bash

The script downloads Drupal CMS via composer create-project into the subfolder cms/ and prepares the installer. To use a different folder name (with curl | bash this needs the -s -- syntax):

bash curl -sSL https://git.drupalcode.org/project/dcgi/-/raw/1.0.x/installer_de_patch.sh | bash -s -- drupalcms

Then open the site in your browser, choose German as the language and follow the installer.

Don't reload during installation

Don't reload the page while the installation is running. Drupal may otherwise cache an unfinished state, and the finished site shows a 500 error. drush cr fixes that.

Existing Drupal CMS project

Run the script in the root of your project, where composer.json and web/ live – not in the web/ folder itself:

bash curl -sSL https://git.drupalcode.org/project/dcgi/-/raw/1.0.x/installer_de_patch.sh | bash

The script detects the existing installation via web/profiles/contrib/drupal_cms_installer and wires the German installer in right there.

If the site is already fully installed, this has no visible effect: the installer only applies the next time core/install.php runs. The script checks whether a site is installed with drush status. If the database is emptied later (e.g. with drush sql:drop), it wires the installer in again.

Clean up after installation

Run the script a second time in the same directory once the installation is finished. It detects that on its own, removes the German installer again and resets the Drupal CMS installer to its original state. The finished site doesn't need it any more.

Good to know

No entry in composer.json. The installer is not added with composer require but placed in web/profiles/contrib/drupal_cms_installer_de with git clone, where Drupal finds it automatically. composer.json and composer.lock stay unchanged. Only the add-on modules from drupal.org go into composer.json as usual.

Run it again after composer update. Composer does not run the scripts of packages itself. An update of Drupal CMS can therefore overwrite the changes to the installer. Simply run installer_de_patch.sh again. Every change detects whether it has already been applied.

PHP memory. The web installer runs each installation step inside PHP's memory_limit. The large site templates (Summit, Varbase, The Rightup, Educare, Horizon Aid) need more than the common default of 128 MB; with it, the installer stops halfway with an "AJAX HTTP error". Set memory_limit to at least 512M for PHP-FPM or Apache, then restart PHP. Installations with Drush are not affected, because PHP on the command line has no limit.

Twig 3.30. Twig 3.30.0 (released 2026-09-25) is incompatible with Drupal core 11.4.7: the very first installation page fails with EscaperRuntime::escape(): Argument #4 ($autoescape) must be of type bool, null given. Drupal core 11.4.8 fixed this. Only with an older core does the script restrict Twig to a compatible version automatically. After updating to 11.4.8, remove the restriction with composer remove twig/twig.

Testing a branch or a local clone. The installer's source can be overridden:

bash INSTALLER_DE_REPO=file:///path/to/clone INSTALLER_DE_BRANCH=my-branch bash installer_de_patch.sh