Skip to content

Installation

rafageist edited this page Oct 18, 2026 · 2 revisions

Installation

Good news first: Studio is a regular Drupal 11 site packaged as a recipe, so installing it is mostly "get the code, point it at a database, run one command". This page walks you through it on a Linux machine. Coffee recommended, but it shouldn't take long. ☕

flowchart LR
    A[1. Check<br/>requirements] --> B[2. Get the code<br/>+ composer install]
    B --> C[3. Create the<br/>database]
    C --> D[4. Prepare<br/>settings.php]
    D --> E[5. Run the<br/>recipe]
    E --> F[6. Point your<br/>web server]
    F --> G((🎉 Log in))
Loading

1. What you need

Thing Version Notes
PHP 8.4 With the usual Drupal extensions: pdo_pgsql, gd, xml, mbstring, curl, zip, opcache.
PostgreSQL 14 or newer (16 tested) Needs the pg_trgm extension.
Composer 2.x To download Drupal core and the libraries.
A web server Caddy, nginx or Apache Anything that can talk to PHP-FPM.
Git any To clone the repository, and for Code Source to read your code.

🐘 Why PostgreSQL? It's what Studio is developed and tested on. Drupal itself supports MySQL and SQLite too, but stick with PostgreSQL unless you enjoy surprises.

2. Get the code

git clone https://github.com/divengine/studio.git
cd studio
composer install

The repository only contains Divengine's own code (the divengine_* modules, the theme and the recipes). composer install downloads Drupal core, the contributed modules and everything else into web/ and vendor/.

3. Create the database

sudo -u postgres psql <<'SQL'
CREATE ROLE studio LOGIN PASSWORD 'choose-a-good-one';
CREATE DATABASE studio OWNER studio;
\c studio
CREATE EXTENSION IF NOT EXISTS pg_trgm;
SQL

4. Prepare settings.php

Test evidence (screenshots, logs, videos your testers attach) is stored in Drupal's private file system, so nobody can download it without permission. Tell Drupal where that folder lives before installing:

cp web/sites/default/default.settings.php web/sites/default/settings.php
mkdir -p private/files
echo "\$settings['file_private_path'] = '../private/files';" >> web/sites/default/settings.php

The private/ folder sits next to web/, outside the public web root. Good.

5. Run the recipe

This is the magic step. It installs Drupal with the Standard profile, every Studio module, the Studio theme, the Gin admin theme, the default configuration (artifact types, lifecycles, trace types, process definitions, QA settings) and the user roles.

vendor/bin/drush site:install recipes/divengine_studio \
  --db-url=pgsql://studio:choose-a-good-one@localhost/studio \
  --account-name=admin --account-pass='another-good-one' \
  --site-name='Divengine Studio'

It takes a minute or two. When it says Installation complete, you have a working Studio.

Already have a Drupal 11 site? You can apply the recipe on top of it instead: vendor/bin/drush recipe $PWD/recipes/divengine_studio. Your existing configuration is kept.

6. Point your web server at web/

The document root is the web/ folder. Here's a minimal Caddy example (the setup we use day to day):

:8080 {
    root * /srv/studio/web
    php_fastcgi unix//run/php/php8.4-fpm.sock
    file_server
    encode gzip
}

For nginx or Apache, follow the standard Drupal hosting guides: nothing special is needed.

If you access the site by IP or a custom host name, add it to the trusted hosts at the end of settings.php:

$settings['trusted_host_patterns'] = ['^localhost$', '^studio\.example\.com$'];

7. Log in 🎉

Open the site in your browser. You'll land on the login page:

Login page

Log in with the admin account you created and you'll see My work, your personal starting point. Next stop: A tour of the workspace.

Checking that everything is healthy

Go to Manage → Reports → Status report (/admin/reports/status). Look for:

  • QA evidence storage: Private file system. If it says Not configured, step 4 was skipped.
  • No red errors about the database or file permissions.

Optional extras

  • AI assistants: expose Studio read-only to Claude Code and other MCP clients. See Connecting AI assistants.
  • Running the test suite: copy phpunit.xml.dist to phpunit.xml, set SIMPLETEST_DB, then vendor/bin/phpunit -c phpunit.xml web/modules/custom.

Updating later

git pull
composer install
vendor/bin/drush updatedb -y
vendor/bin/drush cache:rebuild

Something went wrong? The Troubleshooting & FAQ page collects the usual suspects.

Clone this wiki locally