---
title: Implementierung von Solr in die lokale TYPO3-Entwicklungsumgebung
url: "https://b13.com/de/wissen/solr-ddev-integration-typo3-lokale-entwicklung"
description: Eine Kurzanleitung für das Hinzufügen von Solr zu deinem lokalen Entwicklungs-Setup in TYPO3 für kontinuierliche Verbesserung und Verfügbarkeit. 
image: "https://b13.com/fileadmin/_processed_/5/a/csm_ddev-TYPO3_191-1_18488dacde.png"
date: 2021-12-21
modified: 2026-08-19
lastUpdated: 2026-08-19
---

# Implementierung von Solr in die lokale TYPO3-Entwicklungsumgebung

[ Solr ](https://b13.com/de/wissen/solr) [ DDEV ](https://b13.com/de/wissen/ddev)

 Wie du Solr mit DDEV und TYPO3 v10 in deine lokale Entwicklungsumgebung integrierst
=====================================================================================

![](https://b13.com/fileadmin/_processed_/c/6/csm_benni_5e519221c4.jpg)Benni Mack

  21. Dezember 2021

 [ RSS Feed ](https://b13.com/de/rss.xml)

  ![Zwei Personen arbeiten an Laptops, während sie auf blauen Containern sitzen. Über ihnen schwebt eine große orange Kiste, im Hintergrund sind abstrakte Formen und Punkte zu sehen.](https://b13.com/fileadmin/_processed_/0/3/csm_ddev-TYPO3_fb9ca3661e.webp)

Viele unserer Kunden benötigen eine leistungsstarke Suchfunktion auf ihren Websites. TYPO3 stellt sich dieser Herausforderung, indem es die Integration der Solr-Suche denkbar einfach macht. Wir setzen auf die Solr-Extension von dkd, um [leistungsstarke Suchfunktionen](https://b13.com/de/wissen/die-liebe-zur-solr-suche-neu-entdecken) einzurichten.

Bei b13 praktizieren unsere Entwickler und Entwicklerinnen „Continuous Integration“ und „Continuous Delivery“ (CI/CD) und testen Änderungen lokal, bevor der Code auf den Produktionssystemen veröffentlicht wird. Um Änderungen machen zu können, müssen unsere lokalen und produktiven Umgebungen identische Konfigurationen haben — für Solr und andere Systeme. Daher müssen Entwickler, die Solr ohne größere Probleme im Live-System einsetzen wollen, dies auch lokal implementieren.

Diese Schritt-für-Schritt-Anleitung zeigt dir, wie du Solr in wenigen Minuten lokal über Docker einrichtest.

   Voraussetzungen
-----------------

Eines der Tools, die wir bei der lokalen Entwicklung einsetzen, ist [DDEV](https://ddev.com/), eine leistungsstarke Plattform, die auf Docker und Docker-Compose für PHP-Projekte aufbaut. DDEV bietet eine hervorragende Unterstützung für TYPO3. Bevor du beginnst, solltest du sicherstellen, dass du DDEV und die Solr-Extension von dkd bereits in deinem bestehenden TYPO3-Projekt installiert hast. In dieser Anleitung wird davon ausgegangen, dass du die Versionskontrolle Git verwendest und bereits auf TYPO3 v10 LTS aktualisiert hast. Als kurze Checkliste erwarten wir, dass dein Projekt die folgenden Voraussetzungen erfüllt:

- TYPO3 v10 LTS läuft mit Composer und dein Public Root Verzeichnis ist als „htdocs/“ konfiguriert (wo sich dein fileadmin-Ordner befindet).
- Die [Solr Extension](https://extensions.typo3.org/extension/solr) v11.0.x ist installiert.
- Der verbundene Solr Server 8.11.1 ist bereits in der TYPO3 Site-Configuration konfiguriert (weitere Informationen findest du in der [Versionsmatrix der Solr Extension](https://docs.typo3.org/p/apache-solr-for-typo3/solr/main/en-us/Appendix/VersionMatrix.html)).
- Für jede Sprache auf deiner Website ist ein eigener Solr-Kern eingerichtet, der das TYPO3-Solr-Konfigurationsset „ext\_solr\_11\_1\_0“ verwendet. (Eine Website mit vier Sprachen hätte zum Beispiel vier Solr Cores: „corporate\_en“, ´„corporate\_de“, „corporate\_it“ und „corporate\_cn“.)
- DDEV läuft bereits und ist in `.ddev` im Stammverzeichnis deines Projekts konfiguriert

   Schritt 1: Solr als DDEV-Container einrichten
-----------------------------------------------

DDEV wird bereits mit grundlegender Unterstützung für Solr ausgeliefert, und du kannst jede docker-compose-Datei verwenden, um schnell zusätzliche Docker-Container einzurichten. (Das ist genial!)

Erstelle in deinem bestehenden Projekt eine neue Datei namens `.ddev/docker-compose.solr.yaml` mit folgendem Inhalt:

  ```
1<br></br>2<br></br>3<br></br>4<br></br>5<br></br>6<br></br>7<br></br>8<br></br>9<br></br>10<br></br>11<br></br>12<br></br>13<br></br>14<br></br>15<br></br>16<br></br>17<br></br>18<br></br>19<br></br>20<br></br>21<br></br>
```

```
<span class="hljs-attr">version:</span> <span class="hljs-string">'3.6'</span><br></br><br></br><span class="hljs-attr">services:</span><br></br> <span class="hljs-attr">solr:</span><br></br>   <span class="hljs-attr">container_name:</span> <span class="hljs-string">ddev-${DDEV_SITENAME}-solr</span><br></br>   <span class="hljs-attr">image:</span> <span class="hljs-string">solr:8.11.1</span><br></br>   <span class="hljs-attr">restart:</span> <span class="hljs-string">"no"</span><br></br>   <span class="hljs-attr">expose:</span><br></br>     <span class="hljs-bullet">-</span> <span class="hljs-number">8983</span><span class="hljs-number">-8984</span><br></br>   <span class="hljs-attr">labels:</span><br></br>     <span class="hljs-attr">com.ddev.site-name:</span> <span class="hljs-string">${DDEV_SITENAME}</span><br></br>     <span class="hljs-attr">com.ddev.approot:</span> <span class="hljs-string">$DDEV_APPROOT</span><br></br>   <span class="hljs-attr">environment:</span><br></br>     <span class="hljs-bullet">-</span> <span class="hljs-string">VIRTUAL_HOST=$DDEV_HOSTNAME</span><br></br>     <span class="hljs-bullet">-</span> <span class="hljs-string">HTTP_EXPOSE=8983</span><br></br>     <span class="hljs-bullet">-</span> <span class="hljs-string">HTTPS_EXPOSE=8984:8983</span><br></br>   <span class="hljs-attr">volumes:</span><br></br>     <span class="hljs-bullet">-</span> <span class="hljs-string">./solr:/var/solr/data</span><br></br> <span class="hljs-attr">web:</span><br></br>   <span class="hljs-attr">links:</span><br></br>     <span class="hljs-bullet">-</span> <span class="hljs-string">solr</span><br></br>
```

  Beachte die folgenden drei Punkte:

1. Der Name des Docker-Images ist „solr:8.11.1“. Wir verwenden das offizielle „solr“-Image mit dem Tag „8.11.1“, da es in der Produktion eingesetzt wird und wir so nah wie möglich am Produktionssystem bleiben wollen. Schau auf [„hub.docker.com“](https://hub.docker.com/_/solr?tab=tags) für verfügbare Versionen dieses Images. Solr 8.11.1 ist außerdem sicher vor allen [Log4J-Schwachstellen](https://solr.apache.org/news.html#apache-solrtm-8111-available).
2. Der Containername lautet `ddev-${DDEV_SITENAME}-solr` und wir werden diesen später verwenden, um uns mit dem Solr-Dienst in TYPO3 zu verbinden.
3. Die exponierten Ports für HTTP und HTTPS, die wir verwenden, sind die Standardports, die Solr verwendet. 8983 für den nicht verschlüsselten HTTP-Port und 8984 für den verschlüsselten HTTPS-Port.

   Schritt 2: Konfiguriere deine Solr-Kerne
------------------------------------------

Konfiguriere die Solr-Kerne in DDEVs Konfigurationsdatei `.ddev/config.yaml`. Füge die folgenden Zeilen am Ende der Datei hinzu und passe sie an deine Spracheinstellungen an:

  ```
1<br></br>2<br></br>3<br></br>4<br></br>5<br></br>6<br></br>7<br></br>8<br></br>9<br></br>10<br></br>11<br></br>12<br></br>13<br></br>14<br></br>15<br></br>16<br></br>17<br></br>18<br></br>19<br></br>20<br></br>21<br></br>22<br></br>23<br></br>24<br></br>25<br></br>
```

```
environment:<br></br> - SOLR_HOST=${DDEV_SITENAME}.ddev.site<br></br>TYPO3_solr_cores:<br></br> - { name: corporate_en, schema: <span class="hljs-string">"english/schema.xml"</span> }<br></br> - { name: corporate_de, schema: <span class="hljs-string">"german/schema.xml"</span> }<br></br> - { name: corporate_zh, schema: <span class="hljs-string">"chinese/schema.xml"</span> }<br></br> - { name: corporate_it, schema: <span class="hljs-string">"italian/schema.xml"</span> }<br></br>TYPO3_solr_ext_path: <span class="hljs-string">'htdocs/TYPO3conf/ext/solr/Resources/Private/Solr/'</span><br></br>TYPO3_solr_configset: <span class="hljs-string">'ext_solr_11_0_0'</span><br></br>hooks:<br></br> post-start:<br></br>   - <span class="hljs-keyword">exec</span>-host: <span class="hljs-string">"composer install --no-scripts"</span><br></br>   - <span class="hljs-keyword">exec</span>: |<br></br>       SOLR_EXT_PATH=(<span class="hljs-string">`yq e '.TYPO3_solr_ext_path' .ddev/config.yaml`</span>)<br></br>       cp -r ${SOLR_EXT_PATH}solr.xml .ddev/solr/<br></br>       cp -r ${SOLR_EXT_PATH}configsets .ddev/solr/<br></br><br></br>       CONFIGSET=(<span class="hljs-string">`yq e '.TYPO3_solr_configset' .ddev/config.yaml`</span>)<br></br>       NAME=(<span class="hljs-string">`yq e '.TYPO3_solr_cores.[].name' .ddev/config.yaml`</span>)<br></br>       SCHEMA=(<span class="hljs-string">`yq e '.TYPO3_solr_cores.[].schema' .ddev/config.yaml`</span>)<br></br><br></br>       <span class="hljs-keyword">length</span>=${<span class="hljs-comment">#NAME[@]}</span><br></br>       <span class="hljs-keyword">for</span> (( i = <span class="hljs-number">0</span>; i < <span class="hljs-keyword">length</span>; i++ )); <span class="hljs-keyword">do</span><br></br>         curl -<span class="hljs-keyword">s</span> -o /dev/null <span class="hljs-string">"http://solr:8983/solr/admin/cores?action=CREATE&name=<span class="hljs-subst">${NAME[$i]}</span>&configSet=<span class="hljs-subst">${CONFIGSET}</span>&schema=<span class="hljs-subst">${SCHEMA[$i]}</span>&dataDir=data/"</span><br></br>       done<br></br>
```

  In diesem Schritt wird die Hauptlogik für die TYPO3-Integration implementiert. Auch hier sind drei Punkte wichtig:

- Definiere die Kerne, die du erstellen willst (TYPO3\_solr\_ext\_cores), den Pfad zum Asset-Ordner der Solr-Extension (TYPO3\_solr\_ext\_path), der die Configsets bereits enthält und die Solr-Konfiguration, die schon einsatzbereit ist für TYPO3.
- Der Post-Start-Hook kopiert die Konfiguration aus der Extension und erstellt die Cores über eine Curl-Anfrage an den Solr-Host, falls sie noch nicht existieren. Der Hook nutzt `composer install`, um sicherzustellen, dass die Solr-Extension zu diesem Zeitpunkt auch installiert ist.
- Die zusätzliche Umgebungsvariable für den Haupt-Webcontainer `SOLR_HOST` wird später in TYPO3 verwendet, um den internen Docker-Dienst direkt in der Site-Configuration von TYPO3 zu referenzieren.

Wenn du Git verwendest, ist es jetzt an der Zeit, die Datei `.ddev/.gitignore` zu bearbeiten und sicherzustellen, dass die erstellten Solr-Core-Daten und Configsets nicht übertragen werden. Um `.gitignore` zu deinem Git-Repository hinzuzufügen und den Ordner `.ddev/solr/` und seinen Inhalt von der Versionskontrolle auszuschließen, musst du die ersten drei Zeilen in `.ddev/.gitignore` entfernen und `/solr/` ganz am Ende der Datei hinzufügen.

Führe `ddev restart` aus und — voila — deine Solr-Kerne werden automatisch erstellt.

   Schritt 3: Verbinde deine Solr-Kerne in TYPO3
-----------------------------------------------

In unserem Beispiel gehen wir davon aus, dass du in deiner Produktionsumgebung mit Umgebungsvariablen arbeitest (siehe <https://12factor.net/config> für weitere Details). Wir verwenden denselben Solr Host zum Lesen und Schreiben und die Umgebungsvariable `SOLR_HOST` in der Produktionsumgebung. Angenommen, dein Setup ist ähnlich, dann folge der [TYPO3 Solr-Dokumentation](https://docs.typo3.org/p/apache-solr-for-typo3/solr/11.0/en-us/GettingStarted/ConfigureExtension.html#configure-solr-connections) und passe die Umgebungsvariable `SOLR_HOST` in deiner Site-Konfiguration an — entweder über die GUI oder durch Bearbeiten der Datei `config/sites/main/config.yaml`.

Als finalen Check solltest du sicherstellen, dass du in der Produktionumgebung Umgebungsvariablen verwendest und die `SOLR_HOST`-Variable in deiner Site-Configuration angegeben hast. Außerdem musst du die Namen deiner lokalen Solr-Kerne mit denen in der Produktionsumgebung abgleichen. Sobald du das getan hast, ist deine Einrichtung abgeschlossen! Du kannst deine Solr-Suche lokal in DDEV indizieren und testen.

Dies ist ein kurzer Auszug aus der Konfigurationsdatei des Beispielprojekts, die sich in `config/sites/main/config.yaml` befindet.

  ```
1<br></br>2<br></br>3<br></br>4<br></br>5<br></br>6<br></br>7<br></br>8<br></br>9<br></br>10<br></br>11<br></br>12<br></br>13<br></br>14<br></br>15<br></br>16<br></br>17<br></br>18<br></br>19<br></br>
```

```
<span class="hljs-bullet">-</span><br></br> <span class="hljs-attr">title:</span> <span class="hljs-string">English</span><br></br> <span class="hljs-attr">languageId:</span> <span class="hljs-number">0</span><br></br> <span class="hljs-attr">base:</span> <span class="hljs-string">/en/</span><br></br> <span class="hljs-attr">TYPO3Language:</span> <span class="hljs-string">default</span><br></br> <span class="hljs-string">...</span><br></br> <span class="hljs-attr">solr_core_read:</span> <span class="hljs-string">corporate_en</span><br></br><span class="hljs-bullet">-</span><br></br> <span class="hljs-attr">title:</span> <span class="hljs-string">Deutsch</span><br></br> <span class="hljs-attr">languageId:</span> <span class="hljs-number">1</span><br></br> <span class="hljs-attr">base:</span> <span class="hljs-string">/</span><br></br> <span class="hljs-attr">TYPO3Language:</span> <span class="hljs-string">de</span><br></br> <span class="hljs-string">...</span><br></br> <span class="hljs-attr">solr_core_read:</span> <span class="hljs-string">corporate_de</span><br></br><span class="hljs-attr">solr_enabled_read:</span> <span class="hljs-literal">true</span><br></br><span class="hljs-attr">solr_host_read:</span> <span class="hljs-string">'%env(SOLR_HOST)'</span><br></br><span class="hljs-attr">solr_path_read:</span> <span class="hljs-string">/solr/</span><br></br><span class="hljs-attr">solr_port_read:</span> <span class="hljs-string">'8983'</span><br></br><span class="hljs-attr">solr_scheme_read:</span> <span class="hljs-string">http</span><br></br>
```

  Last but not least: Committe und pushe deinen Code, damit deine Teammitglieder das von dir erstellte Setup für das Projekt ebenfalls nutzen können.

Wir hoffen, dass das dir und deinen Teammitgliedern Zeit spart!

  **Wenn du zusätzliche Hilfe brauchst, melde dich bei uns. Wir helfen dir, eine Deployment-Pipeline und den entsprechenden Code für dein TYPO3-Projekt einzurichten.**

 [ Let’s connect ](https://b13.com/de/kontakt)

  ###  Geschrieben von:

 ![Lächelnder Mann mit kurzen Haaren und einem Bart, der ein weinrotes Hemd trägt, steht in einer modernen Innenumgebung mit unscharfen Hintergrundelementen.](https://b13.com/fileadmin/_processed_/c/6/csm_benni_66cce9a81f.webp)

Der Mitbegründer von b13 und Leiter des TYPO3 CMS Core Developement, Benni Mack, bestimmt maßgeblich unsere technischen Best-Practises. Er ist zuständig für den Aufbau und die Wartung unserer technischen Infrastruktur und koordiniert unseren Beitrag zum Open-Source-Projekt. Sein wesentliches Werkzeug: TYPO3

 Benni Mack  CTO

 [ mehr von Benni Mack ](https://b13.com/de/team/benni-mack)

  Ähnliche Artikel
------------------

- ![Eine Reihe stilisierter Figuren in verschiedenen Posen, jede mit einem markanten orangefarbenen Hut, zeigt einen Übergang vom Gehen zum Stillstehen, während sie auf ein Handy schauen, vor einem lila Gitterhintergrund.](https://b13.com/fileadmin/_processed_/d/7/csm_QueuesDDEV_Headerbild_f640931350.webp)

    ###  Bessere Skalierbarkeit mit entkoppelten Queues: So richtest du RabbitMQ mit TYPO3 ein

     10. April 2024 | Jochen Roth

     Wenn integrierte Nachrichtentransporte an ihre Grenzen stoßen, kann RabbitMQ TYPO3 mit einer skalierbaren, robusten Message Queue versorgen.

     [ weiterlesen: Bessere Skalierbarkeit mit entkoppelten Queues: So richtest du RabbitMQ mit TYPO3 ein ](https://b13.com/de/wissen/bessere-skalierbarkeit-mit-entkoppelten-queues-so-richtest-du-rabbitmq-mit-typo3-ein)
- ![Vier stilisierte Figuren mit orangefarbenen, kegelförmigen Köpfen sind in einem Tauziehen verwickelt und ziehen an einem Seil. Der Hintergrund zeigt ein Gittermuster, das die dynamische Aktion der Szene betont.](https://b13.com/fileadmin/_processed_/2/d/csm_CustomProviderDDEVpull_Headerbild_4acc1aab1d.webp)

    ###  Wie man TYPO3-Daten von Kunden mittels DDEV-Providers abruft

     19. März 2025 | Jochen Roth

     Wie man einen wiederholbaren, standardisierten Prozess für den Abruf von TYPO3 Kundendaten in eine lokale Umgebung mit ddev pull erstellt.

     [ weiterlesen: Wie man TYPO3-Daten von Kunden mittels DDEV-Providers abruft ](https://b13.com/de/wissen/wie-man-typo3-daten-von-kunden-mittels-ddev-providers-abruft)
- ![Eine Person stützt ihr Kinn auf ihre Hände, sieht nachdenklich aus und ist von Herzen umgeben, während eine Suchleiste mit einem Lupe-Symbol angezeigt wird, was Themen wie Liebe und Online-Suche andeutet.](https://b13.com/fileadmin/_processed_/7/9/csm_on-site-search_360beef0b1.webp)

    ###  Die Liebe zur eigenen Webseitensuche (neu) entdecken

     01. September 2020 | Florian “Flix” Keitgen

     Nutzen Sie Ihre On-Site-Suche optimal aus? In diesem Artikel erläutern wir, warum Sie die Solr-Suche kontinuierlich verfeinern müssen, um das bestmögliche Sucherlebnis zu erzielen.

     [ weiterlesen: Die Liebe zur eigenen Webseitensuche (neu) entdecken ](https://b13.com/de/wissen/die-liebe-zur-solr-suche-neu-entdecken)