<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.wiki.bluespice.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hjing</id>
	<title>BlueSpice - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.wiki.bluespice.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hjing"/>
	<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/wiki/Special:Contributions/Hjing"/>
	<updated>2026-04-03T19:27:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=13815</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=13815"/>
		<updated>2026-02-12T15:08:35Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Add comment on version number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.2.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.2.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.2.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Use one consistent version number|text=The tag number 5.2.1 in this command (could be 5.1.4, 5.1.5 etc. as well) should also be used as the &amp;lt;code&amp;gt;VERSION=&amp;lt;/code&amp;gt; number in Step 2.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:375px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&amp;lt;br /&amp;gt;Optionally with external MySQL/MariaDB and OpenSearch one can skip loading this &amp;lt;code&amp;gt;.yml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;. Please then wire your services properly in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&amp;lt;br&amp;gt;One can create e.g a &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.2.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== Add Customizations to containers ===&lt;br /&gt;
Since tag 5.1.4 and tag 5.2.0 of project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;, we allow to edit and maintain a separate &amp;lt;code&amp;gt;docker-compose.override.yml&amp;lt;/code&amp;gt;  which will be ignored by git.&lt;br /&gt;
&lt;br /&gt;
This way you can add your own Container-Configurations and be able to maintain your git status up to date. just place the file next to the other &amp;lt;code&amp;gt;docker-compose.*.yml&amp;lt;/code&amp;gt; s and run &amp;lt;code&amp;gt;./bluespice-deploy up -d&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
services:&lt;br /&gt;
  wiki-web:&lt;br /&gt;
    volumes:&lt;br /&gt;
      - /backup/:/data/backup&lt;br /&gt;
  wiki-task:&lt;br /&gt;
    volumes:&lt;br /&gt;
      - /backup/:/data/backup&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configs for &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Instead of exposing the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; for [[mediawikiwiki:Manual:LocalSettings.php|adding additional configurations]], the stack offers two entry points. After the initial installation, you can add your configs to two files in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Set configs before the initialization of BlueSpice&#039;s debug logging, libraries, skins, extensions and default settings.  Configs set here can be picked up by the init process.&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Set configs after the initialization, manipulating configs that have been set by the init process.&lt;br /&gt;
For example, if you add the following lines to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;, you can then read outputted debug logs (if any) in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/logs/debug.log&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS[&#039;bsgDebugLogGroups&#039;][&#039;exception&#039;] = &amp;quot;/data/bluespice/logs/debug.log&amp;quot;;&lt;br /&gt;
$wgShowExceptionDetails = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maintenance scripts ===&lt;br /&gt;
To run [[Setup:Installation Guide/Advanced/Maintenance scripts|maintenance scripts]] from MediaWiki or from other extensions, please use the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container, which handles all back-end jobs and processes. You can connect into the container in two different ways:&lt;br /&gt;
&lt;br /&gt;
* run &amp;lt;code&amp;gt;./bluespice-deploy exec -it wiki-task bash&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; directory for Docker Compose files&lt;br /&gt;
* or alternatively, run &amp;lt;code&amp;gt;docker exec -it bluespice-wiki-task bash&amp;lt;/code&amp;gt; wherever you are on the host machine&lt;br /&gt;
&lt;br /&gt;
Inside the container you can enter the wiki&#039;s code base with &amp;lt;code&amp;gt;cd /app/bluespice/w&amp;lt;/code&amp;gt; , where one can run scripts like &amp;lt;code&amp;gt;php maintenance/run.php update --quick&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;php extensions/BlueSpiceExtendedSearch/maintenance/updateWikiPageIndex.php&amp;lt;/code&amp;gt; and so on.&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authentication using Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Update_from_4.5_to_5.1&amp;diff=13681</id>
		<title>Setup:Installation Guide/Update from 4.5 to 5.1</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Update_from_4.5_to_5.1&amp;diff=13681"/>
		<updated>2026-01-14T09:42:08Z</updated>

		<summary type="html">&lt;p&gt;Hjing: /* External MySQL/MariaDB database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Textbox|boxtype=important|header=Version compatibility|text=&lt;br /&gt;
*If you want to update from a BlueSpice version &amp;lt; 4.4, the intermediate step of [[Setup:Installation Guide/Patch Update|updating to 4.4]] is required.&lt;br /&gt;
*If you want to update from a Docker container 4.4 to 5.1, first update to 4.5.&lt;br /&gt;
|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Determine your update scenario ==&lt;br /&gt;
With version 4.5 of BlueSpice, there were two options for installation:&lt;br /&gt;
&lt;br /&gt;
=== Container stack (bluespice-deploy) ===&lt;br /&gt;
If you have already installed BlueSpice 4.5 as a Docker container, follow the update instructions below to BlueSpice 5:&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;[[{{FULLPAGENAME}}/bluespice-deploy|Upgrade from &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; installation]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Direct installation (classic tarball) ===&lt;br /&gt;
If you have already installed BlueSpice 4.5 as a Docker container, follow the update instructions below to BlueSpice 5:&lt;br /&gt;
&lt;br /&gt;
→ &#039;&#039;&#039;[[{{FULLPAGENAME}}/Classic_tarball|Upgrade from classic tarball installation]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Based on which of those you are starting from, the update to BlueSpice version 5.1 may require different steps.&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=warning|header=Create a backup|text=Before performing any of the following steps, make sure to make a backup of all databases and filesystem locations related to the process.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Special cases ==&lt;br /&gt;
Before running the database schema updates, based on the previously installed edition of BlueSpice and optionally enabled extensions, some minor changes on the database may be required.&lt;br /&gt;
&lt;br /&gt;
=== Extension:OATHAuth ===&lt;br /&gt;
In some cases the [https://github.com/wikimedia/mediawiki-extensions-OATHAuth/blob/master/sql/mysql/tables-generated.sql extension tables] must be added manually to the database before the update.&lt;br /&gt;
&lt;br /&gt;
=== Extension:OpenIDConnect ===&lt;br /&gt;
&lt;br /&gt;
In some cases this patch needs to be applied before the update.&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE openid_connect DROP COLUMN oidc_id;&lt;br /&gt;
ALTER TABLE openid_connect ADD PRIMARY KEY (oidc_user);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;{{Textbox|boxtype=important|header=Duplicate keys|text=In case the &amp;lt;code&amp;gt;openid_connect&amp;lt;/code&amp;gt; table contains duplicate entries of &amp;lt;code&amp;gt;oidc_subject&amp;lt;/code&amp;gt;, you can safely remove all duplicates, that have a tailing slash in the &amp;lt;code&amp;gt;oidc_issuer&amp;lt;/code&amp;gt; field.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
=== External MySQL/MariaDB database ===&lt;br /&gt;
&lt;br /&gt;
If your wiki uses an external database server before update, and you plan to continue using the same external database server after the update, please make sure that the task runner processes of your wiki before update are completely shut down:&lt;br /&gt;
* For 4.5 installations with Docker containers, please make sure that:&lt;br /&gt;
*# the previous stack is stopped&lt;br /&gt;
*# its daemon service &amp;lt;code&amp;gt;bluespice.service&amp;lt;/code&amp;gt; is removed/disabled&lt;br /&gt;
*# the containers in the previous stack are down, and will not start automatically upon server restart&lt;br /&gt;
* For 4.5 installations directly within the Linux system of the host machine:&lt;br /&gt;
*# check the Crontab attributes for your root user, comment out job runner / process runner lines&lt;br /&gt;
*# check and kill remaining processes&lt;br /&gt;
&lt;br /&gt;
== Collabpads database update ==&lt;br /&gt;
The easiest way to update from MongoDB 4.4 to 8.0 is to export and import the databases:&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
On Mongo 4.4 run&lt;br /&gt;
 mongodump --db &amp;lt;dbname&amp;gt; --gzip --archive &amp;gt; /tmp/collabpads_dump.gz&lt;br /&gt;
On Mongo 8.0 run&lt;br /&gt;
 mongorestore --gzip --archive=/tmp/collabpads_dump.gz&lt;br /&gt;
&lt;br /&gt;
== SAML authentication ==&lt;br /&gt;
If you were using SAML with the previous version of BlueSpice, you will probably need to re-register the Service Provider with your Identity Provider.&lt;br /&gt;
&lt;br /&gt;
To do so, download the new &amp;lt;code&amp;gt;metadata.xml&amp;lt;/code&amp;gt; file from &amp;lt;code&amp;gt;https://&amp;lt;wikiserver&amp;gt;/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Update_von_BlueSpice_4.5_auf_5.1]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=13252</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=13252"/>
		<updated>2025-10-28T12:20:06Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Bump version 5.1.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.3.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.3.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.3/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:375px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&amp;lt;br /&amp;gt;Optionally with external MySQL/MariaDB and OpenSearch one can skip loading this &amp;lt;code&amp;gt;.yml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;. Please then wire your services properly in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&amp;lt;br&amp;gt;One can create e.g a &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.3&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== Configs for &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Instead of exposing the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; for [[mediawikiwiki:Manual:LocalSettings.php|adding additional configurations]], the stack offers two entry points. After the initial installation, you can add your configs to two files in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Set configs before the initialization of BlueSpice&#039;s debug logging, libraries, skins, extensions and default settings.  Configs set here can be picked up by the init process.&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Set configs after the initialization, manipulating configs that have been set by the init process.&lt;br /&gt;
For example, if you add the following lines to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;, you can then read outputted debug logs (if any) in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/logs/debug.log&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS[&#039;bsgDebugLogGroups&#039;][&#039;exception&#039;] = &amp;quot;/data/bluespice/logs/debug.log&amp;quot;;&lt;br /&gt;
$wgShowExceptionDetails = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maintenance scripts ===&lt;br /&gt;
To run [[Setup:Installation Guide/Advanced/Maintenance scripts|maintenance scripts]] from MediaWiki or from other extensions, please use the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container, which handles all back-end jobs and processes. You can connect into the container in two different ways:&lt;br /&gt;
&lt;br /&gt;
* run &amp;lt;code&amp;gt;./bluespice-deploy exec -it wiki-task bash&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; directory for Docker Compose files&lt;br /&gt;
* or alternatively, run &amp;lt;code&amp;gt;docker exec -it bluespice-wiki-task bash&amp;lt;/code&amp;gt; wherever you are on the host machine&lt;br /&gt;
&lt;br /&gt;
Inside the container you can enter the wiki&#039;s code base with &amp;lt;code&amp;gt;cd /app/bluespice/w&amp;lt;/code&amp;gt; , where one can run scripts like &amp;lt;code&amp;gt;php maintenance/run.php update --quick&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;php extensions/BlueSpiceExtendedSearch/maintenance/updateWikiPageIndex.php&amp;lt;/code&amp;gt; and so on.&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authentication using Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12664</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12664"/>
		<updated>2025-07-29T13:21:14Z</updated>

		<summary type="html">&lt;p&gt;Hjing: /* Maintenance scripts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:375px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&amp;lt;br /&amp;gt;Optionally with external MySQL/MariaDB and OpenSearch one can skip loading this &amp;lt;code&amp;gt;.yml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;. Please then wire your services properly in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&amp;lt;br&amp;gt;One can create e.g a &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== Configs for &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Instead of exposing the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; for [[mediawikiwiki:Manual:LocalSettings.php|adding additional configurations]], the stack offers two entry points. After the initial installation, you can add your configs to two files in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Set configs before the initialization of BlueSpice&#039;s debug logging, libraries, skins, extensions and default settings.  Configs set here can be picked up by the init process.&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Set configs after the initialization, manipulating configs that have been set by the init process.&lt;br /&gt;
For example, if you add the following lines to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;, you can then read outputted debug logs (if any) in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/logs/debug.log&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS[&#039;bsgDebugLogGroups&#039;][&#039;exception&#039;] = &amp;quot;/data/bluespice/logs/debug.log&amp;quot;;&lt;br /&gt;
$wgShowExceptionDetails = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maintenance scripts ===&lt;br /&gt;
To run [[Setup:Installation Guide/Advanced/Maintenance scripts|maintenance scripts]] from MediaWiki or from other extensions, please use the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container, which handles all back-end jobs and processes. You can connect into the container in two different ways:&lt;br /&gt;
&lt;br /&gt;
* run &amp;lt;code&amp;gt;./bluespice-deploy exec -it wiki-task bash&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; directory for Docker Compose files&lt;br /&gt;
* or alternatively, run &amp;lt;code&amp;gt;docker exec -it bluespice-wiki-task bash&amp;lt;/code&amp;gt; wherever you are on the host machine&lt;br /&gt;
&lt;br /&gt;
Inside the container you can enter the wiki&#039;s code base with &amp;lt;code&amp;gt;cd /app/bluespice/w&amp;lt;/code&amp;gt; , where one can run scripts like &amp;lt;code&amp;gt;php maintenance/run.php update --quick&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;php extensions/BlueSpiceExtendedSearch/maintenance/updateWikiPageIndex.php&amp;lt;/code&amp;gt; and so on.&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authentication using Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12660</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12660"/>
		<updated>2025-07-28T13:18:48Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:375px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&amp;lt;br /&amp;gt;Optionally with external MySQL/MariaDB and OpenSearch one can skip loading this &amp;lt;code&amp;gt;.yml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;. Please then wire your services properly in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&amp;lt;br&amp;gt;One can create e.g a &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== Configs for &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Instead of exposing the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; for [[mediawikiwiki:Manual:LocalSettings.php|adding additional configurations]], the stack offers two entry points. After the initial installation, you can add your configs to two files in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Set configs before the initialization of BlueSpice&#039;s debug logging, libraries, skins, extensions and default settings.  Configs set here can be picked up by the init process.&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Set configs after the initialization, manipulating configs that have been set by the init process.&lt;br /&gt;
For example, if you add the following lines to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;, you can then read outputted debug logs (if any) in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/logs/debug.log&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS[&#039;bsgDebugLogGroups&#039;][&#039;exception&#039;] = &amp;quot;/data/bluespice/logs/debug.log&amp;quot;;&lt;br /&gt;
$wgShowExceptionDetails = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maintenance scripts ===&lt;br /&gt;
To run scripts from MediaWiki or from other extensions, please use the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container, which handles all back-end jobs and processes. You can connect into the container in two different ways:&lt;br /&gt;
&lt;br /&gt;
* run &amp;lt;code&amp;gt;./bluespice-deploy exec -it wiki-task bash&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; directory for Docker Compose files&lt;br /&gt;
* or alternatively, run &amp;lt;code&amp;gt;docker exec -it bluespice-wiki-task bash&amp;lt;/code&amp;gt; wherever you are on the host machine&lt;br /&gt;
&lt;br /&gt;
Inside the container you can enter the wiki&#039;s code base with &amp;lt;code&amp;gt;cd /app/bluespice/w&amp;lt;/code&amp;gt; , where one can run scripts like &amp;lt;code&amp;gt;php maintenance/run.php update --quick&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;php extensions/BlueSpiceExtendedSearch/maintenance/updateWikiPageIndex.php&amp;lt;/code&amp;gt; and so on.&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authentication using Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12659</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12659"/>
		<updated>2025-07-28T13:17:55Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:375px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&amp;lt;br /&amp;gt;Optionally with external MySQL/MariaDB and OpenSearch one can skip loading this &amp;lt;code&amp;gt;.yml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;. Please then wire your services properly in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&amp;lt;br&amp;gt;One can create e.g a &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== Configs for &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Instead of exposing the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; for [[mediawikiwiki:Manual:LocalSettings.php|adding additional configurations]], the stack offers two entry points. After the initial installation, you can add your configs to two files in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Set configs before the initialization of BlueSpice&#039;s debug logging, libraries, skins, extensions and default settings.  Configs set here can be picked up by the init process.&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Set configs after the initialization, manipulating configs that have been set by the init process.&lt;br /&gt;
For example, if you add the following lines to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;, you can then read outputted debug logs (if any) in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/logs/debug.log&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS[&#039;bsgDebugLogGroups&#039;][&#039;exception&#039;] = &amp;quot;/data/bluespice/logs/debug.log&amp;quot;;&lt;br /&gt;
$wgShowExceptionDetails = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maintenance scripts ===&lt;br /&gt;
To run scripts from MediaWiki or from other extensions, please use the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container, which handles all back-end jobs and processes. You can connect into the container in two different ways:&lt;br /&gt;
&lt;br /&gt;
* run &amp;lt;code&amp;gt;./bluespice-deploy exec -it wiki-task bash&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; directory for Docker Compose files&lt;br /&gt;
* or alternatively, run &amp;lt;code&amp;gt;docker exec -it bluespice-wiki-task bash&amp;lt;/code&amp;gt; regardless where you are on the host machine&lt;br /&gt;
&lt;br /&gt;
Inside the container you can enter the wiki&#039;s code base with &amp;lt;code&amp;gt;cd /app/bluespice/w&amp;lt;/code&amp;gt; , where one can run scripts like &amp;lt;code&amp;gt;php maintenance/run.php update --quick&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;php extensions/BlueSpiceExtendedSearch/maintenance/updateWikiPageIndex.php&amp;lt;/code&amp;gt; and so on.&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authentication using Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12658</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12658"/>
		<updated>2025-07-28T13:15:27Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:375px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&amp;lt;br /&amp;gt;Optionally with external MySQL/MariaDB and OpenSearch one can skip loading this &amp;lt;code&amp;gt;.yml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;. Please then wire your services properly in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&amp;lt;br&amp;gt;One can create e.g a &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== Configs for &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Instead of exposing the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; for [[mediawikiwiki:Manual:LocalSettings.php|adding additional configurations]], the stack offers two entry points. After the initial installation, you can add your configs to two files in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Set configs before the initialization of BlueSpice&#039;s debug logging, libraries, skins, extensions and default settings.  Configs set here can be picked up by the init process.&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Set configs after the initialization, manipulating configs that have been set by the init process.&lt;br /&gt;
For example, if you add the following lines to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;, you can then read outputted debug logs (if any) in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/logs/debug.log&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS[&#039;bsgDebugLogGroups&#039;][&#039;exception&#039;] = &amp;quot;/data/bluespice/logs/debug.log&amp;quot;;&lt;br /&gt;
$wgShowExceptionDetails = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maintenance scripts ===&lt;br /&gt;
To run scripts from MediaWiki or from other extensions, please use the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container, which handles all back-end jobs and processes. You can connect into the container in two different ways:&lt;br /&gt;
&lt;br /&gt;
* run &amp;lt;code&amp;gt;./bluespice-deploy exec -it wiki-task bash&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; directory for Docker Compose files, or&lt;br /&gt;
* run &amp;lt;code&amp;gt;docker exec -it bluespice-wiki-task bash&amp;lt;/code&amp;gt; anywhere.&lt;br /&gt;
&lt;br /&gt;
Inside the container you can enter the wiki&#039;s code base with &amp;lt;code&amp;gt;cd /app/bluespice/w&amp;lt;/code&amp;gt; , where one can run scripts like &amp;lt;code&amp;gt;php maintenance/run.php update --quick&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;php extensions/BlueSpiceExtendedSearch/maintenance/updateWikiPageIndex.php&amp;lt;/code&amp;gt; and so on.&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authentication using Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12657</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12657"/>
		<updated>2025-07-28T13:06:59Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:375px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&amp;lt;br /&amp;gt;Optionally with external MySQL/MariaDB and OpenSearch one can skip loading this &amp;lt;code&amp;gt;.yml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;. Please then wire your services properly in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&amp;lt;br&amp;gt;One can create e.g a &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&amp;lt;!--TODO: ownership? restart stack needed?--&amp;gt;&lt;br /&gt;
=== Configs for &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Instead of exposing the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; for [[mediawikiwiki:Manual:LocalSettings.php|adding additional configurations]], the stack offers two entry points. After the initial installation, you can add your configs to two files in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Set configs before the initialization of BlueSpice&#039;s debug logging, libraries, skins, extensions and default settings.  Configs set here can be picked up by the init process.&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Set configs after the initialization, manipulating configs that have been set by the init process.&lt;br /&gt;
For example, if you add the following lines to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;, you can then read outputted debug logs (if any) in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/logs/debug.log&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS[&#039;bsgDebugLogGroups&#039;][&#039;exception&#039;] = &amp;quot;/data/bluespice/logs/debug.log&amp;quot;;&lt;br /&gt;
$wgShowExceptionDetails = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Run maintenance scripts ===&lt;br /&gt;
To run scripts from MediaWiki or from other extensions, please use the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container, which handles all back-end jobs and processes. You can connect into the container in two different ways:&lt;br /&gt;
&lt;br /&gt;
* run &amp;lt;code&amp;gt;./bluespice-deploy exec -it wiki-task bash&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; directory for Docker Compose files, or&lt;br /&gt;
* run &amp;lt;code&amp;gt;docker exec -it bluespice-wiki-task bash&amp;lt;/code&amp;gt; anywhere.&lt;br /&gt;
&lt;br /&gt;
Inside the container you can enter the wiki&#039;s code base with &amp;lt;code&amp;gt;cd /app/bluespice/w&amp;lt;/code&amp;gt; , where one can run for example &amp;lt;code&amp;gt;php maintenance/run.php update --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authentication using Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12656</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12656"/>
		<updated>2025-07-28T13:06:38Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:375px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&amp;lt;br /&amp;gt;Optionally with external MySQL/MariaDB and OpenSearch one can skip loading this &amp;lt;code&amp;gt;.yml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;. Please then wire your services properly in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&amp;lt;br&amp;gt;One can create e.g a &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&amp;lt;!--TODO: ownership? restart stack needed?--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configs for &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Instead of exposing the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; for [[mediawikiwiki:Manual:LocalSettings.php|adding additional configurations]], the stack offers two entry points. After the initial installation, you can add your configs to two files in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Set configs before the initialization of BlueSpice&#039;s debug logging, libraries, skins, extensions and default settings.  Configs set here can be picked up by the init process.&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Set configs after the initialization, manipulating configs that have been set by the init process.&lt;br /&gt;
For example, if you add the following lines to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;, you can then read outputted debug logs (if any) in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/logs/debug.log&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS[&#039;bsgDebugLogGroups&#039;][&#039;exception&#039;] = &amp;quot;/data/bluespice/logs/debug.log&amp;quot;;&lt;br /&gt;
$wgShowExceptionDetails = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Run maintenance scripts ===&lt;br /&gt;
To run scripts from MediaWiki or from other extensions, please use the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container, which handles all back-end jobs and processes. You can connect into the container in two different ways:&lt;br /&gt;
&lt;br /&gt;
* run &amp;lt;code&amp;gt;./bluespice-deploy exec -it wiki-task bash&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; directory for Docker Compose files, or&lt;br /&gt;
* run &amp;lt;code&amp;gt;docker exec -it bluespice-wiki-task bash&amp;lt;/code&amp;gt; anywhere.&lt;br /&gt;
&lt;br /&gt;
Inside the container you can enter the wiki&#039;s code base with &amp;lt;code&amp;gt;cd /app/bluespice/w&amp;lt;/code&amp;gt; , where one can run for example &amp;lt;code&amp;gt;php maintenance/run.php update --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authentication using Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12655</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12655"/>
		<updated>2025-07-28T12:57:05Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:375px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&amp;lt;br /&amp;gt;Optionally with external MySQL/MariaDB and OpenSearch one can skip loading this &amp;lt;code&amp;gt;.yml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;. Please then wire your services properly in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&amp;lt;br&amp;gt;One can create e.g a &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Configurations, maintenance and more extensions ==&lt;br /&gt;
&lt;br /&gt;
=== Configs for &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Instead of exposing the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; for [[mediawikiwiki:Manual:LocalSettings.php|adding additional configurations]], the stack offers two entry points. After the initial installation, you can add your configs to two files in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Set configs before the initialization of BlueSpice&#039;s debug logging, libraries, skins, extensions and default settings.  Configs set here can be picked up by the init process.&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Set configs after the initialization, manipulating configs that have been set by the init process.&lt;br /&gt;
For example, if you add the following lines to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;, you can then read outputted debug logs (if any) in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/logs/debug.log&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS[&#039;bsgDebugLogGroups&#039;][&#039;exception&#039;] = &amp;quot;/data/bluespice/logs/debug.log&amp;quot;;&lt;br /&gt;
$wgShowExceptionDetails = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Run maintenance scripts ===&lt;br /&gt;
To run scripts from MediaWiki or from other extensions, please use the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container, which handles all back-end jobs and processes. You can connect into the container in two different ways:&lt;br /&gt;
&lt;br /&gt;
* run &amp;lt;code&amp;gt;./bluespice-deploy exec -it wiki-task bash&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; directory for Docker Compose files, or&lt;br /&gt;
* run &amp;lt;code&amp;gt;docker exec -it bluespice-wiki-task bash&amp;lt;/code&amp;gt; anywhere.&lt;br /&gt;
&lt;br /&gt;
Inside the container you can enter the wiki&#039;s code base with &amp;lt;code&amp;gt;cd /app/bluespice/w&amp;lt;/code&amp;gt; , where one can run for example &amp;lt;code&amp;gt;php maintenance/run.php update --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Install more MediaWiki extensions ===&lt;br /&gt;
To install more MediaWiki extensions, especially those complicated ones that relies on external libraries, one will need to manage the wiki&#039;s code base outside the &amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; containers, add your wanted extensions then load libraries with [https://getcomposer.org/ Composer]. Please follow the steps:&lt;br /&gt;
&lt;br /&gt;
# Enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for the Docker Compose files of the directory where you load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;, see [[Setup:Installation Guide/Docker#Step 1: Get the stack|Step 1]].&lt;br /&gt;
# Replace placeholders in the following piece of code (with correct absolute path in your case), then run the code.&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;./bluespice-deploy cp wiki-web:/app/bluespice/w ../code&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; docker-compose.override.yml&lt;br /&gt;
services:&lt;br /&gt;
  wiki-web:&lt;br /&gt;
    volumes:&lt;br /&gt;
      - /&amp;lt;absolute-path-to-the-project&amp;gt;/code:/app/bluespice/w&lt;br /&gt;
  wiki-task:&lt;br /&gt;
    volumes:&lt;br /&gt;
      - /&amp;lt;absolute-path-to-the-project&amp;gt;/code:/app/bluespice/w&lt;br /&gt;
EOF&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# tba&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Do not edit the code inside the containers. Any edit in a container will be lost once the container is stopped or removed. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&amp;lt;!--TODO: ownership? restart stack needed?--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authentication using Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12637</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12637"/>
		<updated>2025-07-24T16:16:30Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Improve tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:375px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&amp;lt;br /&amp;gt;Optionally with external MySQL/MariaDB and OpenSearch one can skip loading this &amp;lt;code&amp;gt;.yml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;. Please then wire your services properly in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:375px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&amp;lt;br&amp;gt;One can create e.g a &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&amp;lt;!--TODO: ownership? restart stack needed?--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configs for &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Instead of exposing the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; for [[mediawikiwiki:Manual:LocalSettings.php|adding additional configurations]], the stack offers two entry points. After the initial installation, you can add your configs to two files in &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Set configs before the initialization of BlueSpice&#039;s debug logging, libraries, skins, extensions and default settings.  Configs set here can be picked up by the init process.&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Set configs after the initialization, manipulating configs that have been set by the init process.&lt;br /&gt;
&lt;br /&gt;
=== Run maintenance scripts ===&lt;br /&gt;
To run scripts from MediaWiki or from other extensions, please use the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container, which handles all back-end jobs and processes. You can connect into the container in two different ways:&lt;br /&gt;
&lt;br /&gt;
* run &amp;lt;code&amp;gt;./bluespice-deploy exec -it wiki-task bash&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; directory for Docker Compose files, or&lt;br /&gt;
* run &amp;lt;code&amp;gt;docker exec -it bluespice-wiki-task bash&amp;lt;/code&amp;gt; anywhere. &lt;br /&gt;
&lt;br /&gt;
Inside the container you can find code base of the wiki at &amp;lt;code&amp;gt;/app/bluespice/w&amp;lt;/code&amp;gt; , where one can run for example &amp;lt;code&amp;gt;php maintenance/run.php update --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Install further MediaWiki extensions ===&lt;br /&gt;
&lt;br /&gt;
== Additional authentication services ==&lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authentication using Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12636</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12636"/>
		<updated>2025-07-24T14:36:38Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set or use your data directory &lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=This config works for all editions, but the main image of Pro or Farm edition needs to be obtained differently, see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]]|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your preferred web browser and start using the application.&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=note&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
To use a Let&#039;s Encrypt certificate for your domain name, set &amp;lt;code&amp;gt;LETSENCRYPT=true&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To use a self-signend certificate for your domain name, put its &amp;lt;code&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.key&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;. For example, with &amp;lt;code&amp;gt;wiki.company.local&amp;lt;/code&amp;gt; you should prepare &amp;lt;code&amp;gt;wiki.company.local.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki.company.local.key&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&amp;lt;!--TODO: ownership? restart stack needed?--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12635</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12635"/>
		<updated>2025-07-24T10:45:40Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Improve default value for db settings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=set_or_use_your_db_user_name&lt;br /&gt;
DB_PASS=SET_OR_USE_YOUR_DB_PASS_WORD&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=All services configurations for Pro and Farm editions are included here, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. If you are deploying Pro or Farm edition, please see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12613</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12613"/>
		<updated>2025-07-21T13:47:07Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=bluespice&lt;br /&gt;
DB_PASS=...(mandatory field)&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=All services configurations for Pro and Farm editions are included here, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. If you are deploying Pro or Farm edition, please see [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12612</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12612"/>
		<updated>2025-07-21T13:44:53Z</updated>

		<summary type="html">&lt;p&gt;Hjing: /* Step 1: Get the stack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Load project &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; from https://github.com/hallowelt/bluespice-deploy/releases/latest and enter the sub-directory &amp;lt;code&amp;gt;compose&amp;lt;/code&amp;gt; for Docker Compose files.&lt;br /&gt;
&lt;br /&gt;
For example, run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=sh&amp;gt;&lt;br /&gt;
wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
  &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |shell script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Start-up script, wrapping command &amp;lt;code&amp;gt;docker compose&amp;lt;/code&amp;gt; and service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files.&amp;lt;br&amp;gt;Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main containers of the wiki (&amp;lt;code&amp;gt;wiki-web&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers of database and search services, storing persistent data onto the file system.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Containers for caching, PDF rendering, formula-rendering and diagram editing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Helper containers for file system preparation and automated BlueSpice upgrade.&amp;lt;br&amp;gt;These containers exit automatically after finishing tasks.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Container of proxy service. Can be replaced by existing proxy/load-balancer infrastructure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional service for auto-renewal of &amp;quot;Let&#039;s Encrypt&amp;quot; certificates.&amp;lt;br&amp;gt;Only required when using the Let&#039;s Encrypt service and having no other TLS termination.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|Containers of back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |text&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |service script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Demo-file for control the BlueSpice stack as a &amp;lt;code&amp;gt;systemctl&amp;lt;/code&amp;gt; service.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=bluespice&lt;br /&gt;
DB_PASS=...(mandatory field)&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are deploying &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; edition, please run &amp;lt;code&amp;gt;docker login docker.bluespice.com&amp;lt;/code&amp;gt; and login with your credentials.&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=All services configurations for Pro and Farm editions are included here, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. See [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12610</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12610"/>
		<updated>2025-07-21T12:34:10Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Get &amp;quot;docker-compose&amp;quot; files from https://github.com/hallowelt/bluespice-deploy/releases/latest&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=note|header=PRO and FARM editions|text=All services configurations for PRO and FARM edition are already included, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. See [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Mandatory&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |bash-script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Wrapper for general start-up of needed containers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main application services/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Database and search/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |PDF-Renderer/Cache/Formula/Diagram-Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Provides different helper containers for Filesystem-preparation, major-upgrades and backups&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false, but recommended&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Proxy Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional auto-renewal service for &amp;quot;Let&#039;s Encrypt&amp;quot; certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Provides back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
|text&lt;br /&gt;
|true&lt;br /&gt;
|Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
|service script&lt;br /&gt;
|false&lt;br /&gt;
|A Demo-file for control the BlueSpice stack as systemctl service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For convenience, the &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; script wraps the first five &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files by default. This includes the main wiki application and also required backend services, like a database, search and application cache. Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Create your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
&lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
&lt;br /&gt;
DB_USER=bluespice&lt;br /&gt;
DB_PASS=...(mandatory field)&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
&lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=To deploy &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; edition, you will need credentials to the private registry &amp;lt;code&amp;gt;docker.bluespice.com&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Please login in by running &amp;lt;code&amp;gt;docker login docker.bluespice.com&amp;lt;/code&amp;gt;.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12609</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12609"/>
		<updated>2025-07-21T12:27:11Z</updated>

		<summary type="html">&lt;p&gt;Hjing: /* Step 1: Get the stack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Get &amp;quot;docker-compose&amp;quot; files from https://github.com/hallowelt/bluespice-deploy/releases/latest&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=note|header=PRO and FARM editions|text=All services configurations for PRO and FARM edition are already included, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. See [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Mandatory&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |bash-script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Wrapper for general start-up of needed containers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main application services/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Database and search/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |PDF-Renderer/Cache/Formula/Diagram-Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Provides different helper containers for Filesystem-preparation, major-upgrades and backups&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false, but recommended&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Proxy Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional auto-renewal service for &amp;quot;Let&#039;s Encrypt&amp;quot; certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Provides back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
|text&lt;br /&gt;
|true&lt;br /&gt;
|Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
|service script&lt;br /&gt;
|false&lt;br /&gt;
|A Demo-file for control the BlueSpice stack as systemctl service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For convenience, the &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; script wraps the first five &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files by default. This includes the main wiki application and also required backend services, like a database, search and application cache. Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;, please create your new &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; config file or edit your existing config file.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
 &lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
 &lt;br /&gt;
DB_USER=bluespice&lt;br /&gt;
DB_PASS=...(mandatory field)&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
 &lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=To deploy &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; edition, you will need credentials to the private registry &amp;lt;code&amp;gt;docker.bluespice.com&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Please login in by running &amp;lt;code&amp;gt;docker login docker.bluespice.com&amp;lt;/code&amp;gt;.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12608</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12608"/>
		<updated>2025-07-21T12:26:08Z</updated>

		<summary type="html">&lt;p&gt;Hjing: /* Step 2: Set up environment variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Get &amp;quot;docker-compose&amp;quot; files from https://github.com/hallowelt/bluespice-deploy/releases/latest&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=warning|header=PRO and FARM editions|text=All services configurations for PRO and FARM edition are already included, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. See [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Mandatory&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |bash-script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Wrapper for general start-up of needed containers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main application services/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Database and search/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |PDF-Renderer/Cache/Formula/Diagram-Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Provides different helper containers for Filesystem-preparation, major-upgrades and backups&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false, but recommended&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Proxy Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional auto-renewal service for &amp;quot;Let&#039;s Encrypt&amp;quot; certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Provides back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
|text&lt;br /&gt;
|true&lt;br /&gt;
|Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
|service script&lt;br /&gt;
|false&lt;br /&gt;
|A Demo-file for control the BlueSpice stack as systemctl service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For convenience, the &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; script wraps the first five &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files by default. This includes the main wiki application and also required backend services, like a database, search and application cache. Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Based on the sample file &amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;, please create your new &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; config file or edit your existing config file.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DATADIR=/data/bluespice&lt;br /&gt;
VERSION=5.1.1&lt;br /&gt;
EDITION=free&lt;br /&gt;
BACKUP_HOUR=04&lt;br /&gt;
 &lt;br /&gt;
WIKI_NAME=BlueSpice&lt;br /&gt;
WIKI_LANG=en&lt;br /&gt;
WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
WIKI_HOST=wiki.company.local&lt;br /&gt;
WIKI_PORT=443&lt;br /&gt;
WIKI_PROTOCOL=https&lt;br /&gt;
WIKI_BASE_PATH=&lt;br /&gt;
 &lt;br /&gt;
DB_USER=bluespice&lt;br /&gt;
DB_PASS=...(mandatory field)&lt;br /&gt;
DB_ROOT_USER=root &lt;br /&gt;
DB_ROOT_PASS=$DB_PASS&lt;br /&gt;
DB_HOST=database&lt;br /&gt;
DB_NAME=bluespice&lt;br /&gt;
DB_PREFIX=&lt;br /&gt;
 &lt;br /&gt;
SMTP_HOST=mail.company.local&lt;br /&gt;
SMTP_PORT=25&lt;br /&gt;
SMTP_USER=...&lt;br /&gt;
SMTP_PASS=...&lt;br /&gt;
SMTP_ID_HOST=...&lt;br /&gt;
&lt;br /&gt;
LETSENCRYPT=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=To deploy &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; edition, you will need credentials to the private registry &amp;lt;code&amp;gt;docker.bluespice.com&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Please login in by running &amp;lt;code&amp;gt;docker login docker.bluespice.com&amp;lt;/code&amp;gt;.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12607</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12607"/>
		<updated>2025-07-21T11:53:03Z</updated>

		<summary type="html">&lt;p&gt;Hjing: /* Step 1: Get the stack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Get &amp;quot;docker-compose&amp;quot; files from https://github.com/hallowelt/bluespice-deploy/releases/latest&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=warning|header=PRO and FARM editions|text=All services configurations for PRO and FARM edition are already included, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. See [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Mandatory&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |bash-script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Wrapper for general start-up of needed containers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main application services/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Database and search/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |PDF-Renderer/Cache/Formula/Diagram-Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Provides different helper containers for Filesystem-preparation, major-upgrades and backups&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false, but recommended&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Proxy Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional auto-renewal service for &amp;quot;Let&#039;s Encrypt&amp;quot; certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Provides back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
|text&lt;br /&gt;
|true&lt;br /&gt;
|Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
|service script&lt;br /&gt;
|false&lt;br /&gt;
|A Demo-file for control the BlueSpice stack as systemctl service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For convenience, the &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; script wraps the first five &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files by default. This includes the main wiki application and also required backend services, like a database, search and application cache. Additional service &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Copy .env.sample to &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; and adjust the variables  according to existing or state-to-be installation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 DATADIR=/data/bluespice&lt;br /&gt;
 VERSION=5.1&lt;br /&gt;
 EDITION=pro&lt;br /&gt;
 BACKUP_HOUR=04&lt;br /&gt;
 &lt;br /&gt;
 WIKI_NAME=BlueSpice&lt;br /&gt;
 WIKI_LANG=en&lt;br /&gt;
 WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_HOST=wiki.company.local&lt;br /&gt;
 WIKI_PORT=443&lt;br /&gt;
 WIKI_PROTOCOL=https&lt;br /&gt;
 &lt;br /&gt;
 DB_USER=bluespice&lt;br /&gt;
 DB_PASS=...&lt;br /&gt;
 DB_HOST=database&lt;br /&gt;
 DB_NAME=bluespice&lt;br /&gt;
 DB_PREFIX=&lt;br /&gt;
 &lt;br /&gt;
 SMTP_HOST=mail.company.local&lt;br /&gt;
 SMTP_PORT=25&lt;br /&gt;
 SMTP_USER=...&lt;br /&gt;
 SMTP_PASS=...&lt;br /&gt;
 SMTP_ID_HOST=...&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=The example shows &amp;lt;code&amp;gt;EDITION=pro&amp;lt;/code&amp;gt;. Be aware that for &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; you need to be logged into &amp;lt;code&amp;gt;docker.bluespice.com&amp;lt;/code&amp;gt;.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=File:Setup:Installation_Guide_Docker-Achitecture.png&amp;diff=12606</id>
		<title>File:Setup:Installation Guide Docker-Achitecture.png</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=File:Setup:Installation_Guide_Docker-Achitecture.png&amp;diff=12606"/>
		<updated>2025-07-21T11:03:36Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Hjing uploaded a new version of File:Setup:Installation Guide Docker-Achitecture.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12605</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12605"/>
		<updated>2025-07-21T09:45:47Z</updated>

		<summary type="html">&lt;p&gt;Hjing: /* Step 3: Start the stack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Get &amp;quot;docker-compose&amp;quot; files from https://github.com/hallowelt/bluespice-deploy/releases/latest&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=warning|header=PRO and FARM editions|text=All services configurations for PRO and FARM edition are already included, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. See [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Mandatory&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |bash-script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Wrapper for general start-up of needed containers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main application services/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Database and search/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |PDF-Renderer/Cache/Formula/Diagram-Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false, but recommended&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Proxy Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional auto-renewal service for &amp;quot;Let&#039;s Encrypt&amp;quot; certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|true&lt;br /&gt;
|Provides different helper containers for Filesystem-preparation, major-upgrades and backups&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Provides back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
|text&lt;br /&gt;
|true&lt;br /&gt;
|Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
|service script&lt;br /&gt;
|false&lt;br /&gt;
|A Demo-file for control the BlueSpice stack as systemctl service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For convenience, the &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; script wraps the first four &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files by default. This includes the main wiki application and also required backend services, like a database, search and application cache. Additional services can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Copy .env.sample to &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; and adjust the variables  according to existing or state-to-be installation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 DATADIR=/data/bluespice&lt;br /&gt;
 VERSION=5.1&lt;br /&gt;
 EDITION=pro&lt;br /&gt;
 BACKUP_HOUR=04&lt;br /&gt;
 &lt;br /&gt;
 WIKI_NAME=BlueSpice&lt;br /&gt;
 WIKI_LANG=en&lt;br /&gt;
 WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_HOST=wiki.company.local&lt;br /&gt;
 WIKI_PORT=443&lt;br /&gt;
 WIKI_PROTOCOL=https&lt;br /&gt;
 &lt;br /&gt;
 DB_USER=bluespice&lt;br /&gt;
 DB_PASS=...&lt;br /&gt;
 DB_HOST=database&lt;br /&gt;
 DB_NAME=bluespice&lt;br /&gt;
 DB_PREFIX=&lt;br /&gt;
 &lt;br /&gt;
 SMTP_HOST=mail.company.local&lt;br /&gt;
 SMTP_PORT=25&lt;br /&gt;
 SMTP_USER=...&lt;br /&gt;
 SMTP_PASS=...&lt;br /&gt;
 SMTP_ID_HOST=...&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=The example shows &amp;lt;code&amp;gt;EDITION=pro&amp;lt;/code&amp;gt;. Be aware that for &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; you need to be logged into &amp;lt;code&amp;gt;docker.bluespice.com&amp;lt;/code&amp;gt;.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/initialAdminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12581</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12581"/>
		<updated>2025-07-18T09:17:10Z</updated>

		<summary type="html">&lt;p&gt;Hjing: fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Get &amp;quot;docker-compose&amp;quot; files from https://github.com/hallowelt/bluespice-deploy/releases/latest&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=warning|header=PRO and FARM editions|text=All services configurations for PRO and FARM edition are already included, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. See [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Mandatory&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |bash-script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Wrapper for general start-up of needed containers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main application services/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Database and search/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |PDF-Renderer/Cache/Formula/Diagram-Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false, but recommended&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Proxy Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional auto-renewal service for &amp;quot;Let&#039;s Encrypt&amp;quot; certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authentication&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|true&lt;br /&gt;
|Provides different helper containers for Filesystem-preparation, major-upgrades and backups&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Provides back-end services for [[Manual:Extension/CollabPads|CollabPads]] (included in Pro and Farm editions)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
|text&lt;br /&gt;
|true&lt;br /&gt;
|Sample for creating &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; that defines key environment variables &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
|service script&lt;br /&gt;
|false&lt;br /&gt;
|A Demo-file for control the BlueSpice stack as systemctl service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For convenience, the &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; script wraps the first four &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files by default. This includes the main wiki application and also required backend services, like a database, search and application cache. Additional services can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Copy .env.sample to &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; and adjust the variables  according to existing or state-to-be installation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 DATADIR=/data/bluespice&lt;br /&gt;
 VERSION=5.1&lt;br /&gt;
 EDITION=pro&lt;br /&gt;
 BACKUP_HOUR=04&lt;br /&gt;
 &lt;br /&gt;
 WIKI_NAME=BlueSpice&lt;br /&gt;
 WIKI_LANG=en&lt;br /&gt;
 WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_HOST=wiki.company.local&lt;br /&gt;
 WIKI_PORT=443&lt;br /&gt;
 WIKI_PROTOCOL=https&lt;br /&gt;
 &lt;br /&gt;
 DB_USER=bluespice&lt;br /&gt;
 DB_PASS=...&lt;br /&gt;
 DB_HOST=database&lt;br /&gt;
 DB_NAME=bluespice&lt;br /&gt;
 DB_PREFIX=&lt;br /&gt;
 &lt;br /&gt;
 SMTP_HOST=mail.company.local&lt;br /&gt;
 SMTP_PORT=25&lt;br /&gt;
 SMTP_USER=...&lt;br /&gt;
 SMTP_PASS=...&lt;br /&gt;
 SMTP_ID_HOST=...&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=The example shows &amp;lt;code&amp;gt;EDITION=pro&amp;lt;/code&amp;gt;. Be aware that for &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; you need to be logged into &amp;lt;code&amp;gt;docker.bluespice.com&amp;lt;/code&amp;gt;.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/adminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12580</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12580"/>
		<updated>2025-07-18T08:53:23Z</updated>

		<summary type="html">&lt;p&gt;Hjing: fix table style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Get &amp;quot;docker-compose&amp;quot; files from https://github.com/hallowelt/bluespice-deploy/releases/latest&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=warning|header=PRO and FARM editions|text=All services configurations for PRO and FARM edition are already included, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. See [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Mandatory&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |bash-script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Wrapper for general start-up of needed containers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main application services/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Database and search/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |PDF-Renderer/Cache/Formula/Diagram-Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false, but recommended&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Proxy Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional auto-renewal service for &amp;quot;Let&#039;s Encrypt&amp;quot; certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authenication&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.helper-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|true&lt;br /&gt;
|Provde different help Containers for Filesystem-preparation, Major-Upgrades and Backups(planned)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.collabpads-service.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Provides Backend for [[Manual:Extension/CollabPads|CollabPads]]   (pro and farm only)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;.env.sample&amp;lt;/code&amp;gt;&lt;br /&gt;
|txt&lt;br /&gt;
|true&lt;br /&gt;
|A sample of minimum Variables needed for complete distribution&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service.demo&amp;lt;/code&amp;gt;&lt;br /&gt;
|txt&lt;br /&gt;
|false&lt;br /&gt;
|A Demo-file for control the BluespiceStack as systemctl service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For convenience, the &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; script wraps the first four &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files by default. This includes the main wiki application and also required backend services, like a database, search and application cache. Additional services can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Copy .env.sample to &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; and adjust the variables  according to existing or state-to-be installation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 DATADIR=/data/bluespice&lt;br /&gt;
 VERSION=5.1&lt;br /&gt;
 EDITION=pro&lt;br /&gt;
 BACKUP_HOUR=04&lt;br /&gt;
 &lt;br /&gt;
 WIKI_NAME=BlueSpice&lt;br /&gt;
 WIKI_LANG=en&lt;br /&gt;
 WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_HOST=wiki.company.local&lt;br /&gt;
 WIKI_PORT=443&lt;br /&gt;
 WIKI_PROTOCOL=https&lt;br /&gt;
 &lt;br /&gt;
 DB_USER=bluespice&lt;br /&gt;
 DB_PASS=...&lt;br /&gt;
 DB_HOST=database&lt;br /&gt;
 DB_NAME=bluespice&lt;br /&gt;
 DB_PREFIX=&lt;br /&gt;
 &lt;br /&gt;
 SMTP_HOST=mail.company.local&lt;br /&gt;
 SMTP_PORT=25&lt;br /&gt;
 SMTP_USER=...&lt;br /&gt;
 SMTP_PASS=...&lt;br /&gt;
 SMTP_ID_HOST=...&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=The example shows &amp;lt;code&amp;gt;EDITION=pro&amp;lt;/code&amp;gt;. Be aware that for &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; you need to be logged into &amp;lt;code&amp;gt;docker.bluespice.com&amp;lt;/code&amp;gt;.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/adminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12579</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=12579"/>
		<updated>2025-07-18T08:50:39Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Use release tags instead of the main branch of bluespice-deploy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with version 4.5, BlueSpice MediaWiki can be installed with a stack of Docker container images. &lt;br /&gt;
&lt;br /&gt;
Everything is built in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are:&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
== Step 1: Get the stack ==&lt;br /&gt;
Get &amp;quot;docker-compose&amp;quot; files from https://github.com/hallowelt/bluespice-deploy/releases/latest&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 wget https://github.com/hallowelt/bluespice-deploy/archive/refs/tags/5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; unzip 5.1.1.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; cd bluespice-deploy-5.1.1/compose&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=warning|header=PRO and FARM editions|text=All services configurations for PRO and FARM edition are already included, but the main application image &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; needs to be obtained differently. See [[{{FULLPAGENAME}}/Pro and Farm edition|Pro and Farm edition]] for details|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Type&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Mandatory&lt;br /&gt;
! style=&amp;quot;&amp;quot; |Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |bash-script&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Wrapper for general start-up of needed containers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Main application services/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Database and search/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |true&lt;br /&gt;
| style=&amp;quot;&amp;quot; |PDF-Renderer/Cache/Formula/Diagram-Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false, but recommended&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Proxy Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional auto-renewal service for &amp;quot;Let&#039;s Encrypt&amp;quot; certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;&amp;quot; |yml&lt;br /&gt;
| style=&amp;quot;&amp;quot; |false&lt;br /&gt;
| style=&amp;quot;&amp;quot; |Additional proxy for Kerberos based authenication&lt;br /&gt;
|-&lt;br /&gt;
|docker-compose.helper-service.yml&lt;br /&gt;
|yml&lt;br /&gt;
|true&lt;br /&gt;
|Provde different help Containers for Filesystem-preparation, Major-Upgrades and Backups(planned)&lt;br /&gt;
|-&lt;br /&gt;
|docker-compose.collabpads-service.yml&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Provides Backend for [[Manual:Extension/CollabPads|CollabPads]]   (pro and farm only)&lt;br /&gt;
|-&lt;br /&gt;
|.env.sample&lt;br /&gt;
|txt&lt;br /&gt;
|true&lt;br /&gt;
|A sample of minimum Variables needed for complete distribution&lt;br /&gt;
|-&lt;br /&gt;
|bluespice.service.demo&lt;br /&gt;
|txt&lt;br /&gt;
|false&lt;br /&gt;
|A Demo-file for control the BluespiceStack as systemctl service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For convenience, the &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; script wraps the first four &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files by default. This includes the main wiki application and also required backend services, like a database, search and application cache. Additional services can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set up environment variables ==&lt;br /&gt;
Copy .env.sample to &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; and adjust the variables  according to existing or state-to-be installation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 DATADIR=/data/bluespice&lt;br /&gt;
 VERSION=5.1&lt;br /&gt;
 EDITION=pro&lt;br /&gt;
 BACKUP_HOUR=04&lt;br /&gt;
 &lt;br /&gt;
 WIKI_NAME=BlueSpice&lt;br /&gt;
 WIKI_LANG=en&lt;br /&gt;
 WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_HOST=wiki.company.local&lt;br /&gt;
 WIKI_PORT=443&lt;br /&gt;
 WIKI_PROTOCOL=https&lt;br /&gt;
 &lt;br /&gt;
 DB_USER=bluespice&lt;br /&gt;
 DB_PASS=...&lt;br /&gt;
 DB_HOST=database&lt;br /&gt;
 DB_NAME=bluespice&lt;br /&gt;
 DB_PREFIX=&lt;br /&gt;
 &lt;br /&gt;
 SMTP_HOST=mail.company.local&lt;br /&gt;
 SMTP_PORT=25&lt;br /&gt;
 SMTP_USER=...&lt;br /&gt;
 SMTP_PASS=...&lt;br /&gt;
 SMTP_ID_HOST=...&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=The example shows &amp;lt;code&amp;gt;EDITION=pro&amp;lt;/code&amp;gt;. Be aware that for &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; you need to be logged into &amp;lt;code&amp;gt;docker.bluespice.com&amp;lt;/code&amp;gt;.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
== Step 3: Start the stack ==&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/adminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
== Additional options ==&lt;br /&gt;
&lt;br /&gt;
=== SSL certificates ===&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Operating system level service ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;code&amp;gt;ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Custom wiki application configuration ===&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
=== Custom database and search ===&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
=== Kerberos proxy ===&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
=== SAML authentication ===&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== OpenID Connect authentication ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Migration_from_MediaWiki_to_BlueSpice&amp;diff=12262</id>
		<title>Setup:Installation Guide/Migration from MediaWiki to BlueSpice</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Migration_from_MediaWiki_to_BlueSpice&amp;diff=12262"/>
		<updated>2025-06-17T16:30:25Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Before you start==&lt;br /&gt;
It is important to check the compatibility of your current MediaWiki installation and the BlueSpice version to which you want to migrate:&lt;br /&gt;
&lt;br /&gt;
* BlueSpice version 3.x is based on MediaWiki 1.31.x&lt;br /&gt;
* BlueSpice version 4.x until 4.2.7 is based on MediaWiki 1.35.x&lt;br /&gt;
* BlueSpice version 4.x starting from 4.3 is based on MediaWiki 1.39.x&lt;br /&gt;
* BlueSpice version 5.x is based on MediaWiki 1.43.x&lt;br /&gt;
&lt;br /&gt;
==Backup==&lt;br /&gt;
Create a full backup of your current installation. Commands may differ depending on your operating system.&lt;br /&gt;
&lt;br /&gt;
#Create a directory to store the backup:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
mkdir -p /opt/mediawiki-migration-backup/{db,web}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Create the database dump:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
mysqldump -u DB_USER_OR_ROOT -p MEDIAWIKI_DATABASE_NAME &amp;gt; /opt/mediawiki-migration-backup/db/database.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Copy everything in the web root to the backup folder:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
cp -Rvf /PATH/TO/MEDIAWIKI/FOLDER/* /opt/mediawiki-migration-backup/web/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will use this backup later for the migration process as well.&lt;br /&gt;
&lt;br /&gt;
==Preparing the migration==&lt;br /&gt;
You can create a separate user account and database for  BlueSpice. This step is optional but recommended. The following steps are based on such a separately created user and database.&lt;br /&gt;
&lt;br /&gt;
If you choose not to create a separate user account and database,  replace the following commands accordingly.&lt;br /&gt;
&lt;br /&gt;
#Create a MySQL/MariaDB user via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CREATE USER &#039;bluespice&#039;@&#039;localhost&#039; IDENFITIED BY &#039;PleaseChooseAComplexPassword&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Create a database for BlueSpice via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CREATE DATABASE bluespice;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Grant the required privileges for the bluespice user to the bluespice database via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
GRANT ALL PRIVILEGES ON bluespice.* TO &#039;bluespice&#039;@&#039;localhost&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Now we have an empty SQL database and are ready to import.&lt;br /&gt;
&lt;br /&gt;
==Importing the data==&lt;br /&gt;
&lt;br /&gt;
#Import the SQL dump from the backup you created earlier:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u bluespice -p bluespice &amp;lt; /opt/mediawiki-migration-backup/db/database.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;After this command, enter  the password you chose for the &amp;lt;code&amp;gt;bluespice&amp;lt;/code&amp;gt; database user.&lt;br /&gt;
#Next,  clean up the old installation folder and create an empty one.&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
rm -Rf /PATH/TO/MEDIAWIKI/FOLDER/ &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;and&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p /PATH/TO/MEDIAWIKI/FOLDER/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Next,  extract the BlueSpice package and place it into the /PATH/TO/MEDIAWIKI/FOLDER/ &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /PATH/TO/MEDIAWIKI/FOLDER/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Copy the &#039;&#039;images&#039;&#039; folder from the backup to the /PATH/TO/MEDIAWIKI/FOLDER/ :&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -Rf /opt/mediawiki-migration-backup/images .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Set the correct permissions based on your operating system to the folder  /PATH/TO/MEDIAWIKI/FOLDER/ .&lt;br /&gt;
&lt;br /&gt;
==Configuration settings==&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=important|header=|text=If you are migrating to [[Setup:Installation_Guide/Docker|a Docker installation]] using &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;, your new installation does not provide a concrete &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Instead, you can add your customized settings to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Please check [[Setup:Installation_Guide/Docker#Custom_wiki_application_configuration]] for details.|icon=yes}}&lt;br /&gt;
#In  /PATH/TO/MEDIAWIKI/FOLDER/, create a new file named  &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; and copy the following content into the file:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# This file was automatically generated by the MediaWiki 1.35.3&lt;br /&gt;
# installer. If you make manual changes, please keep track in case you&lt;br /&gt;
# need to recreate them later.&lt;br /&gt;
#&lt;br /&gt;
# See includes/DefaultSettings.php for all configurable settings&lt;br /&gt;
# and their default values, but don&#039;t forget to make changes in _this_&lt;br /&gt;
# file, not there.&lt;br /&gt;
#&lt;br /&gt;
# Further documentation for configuration settings may be found at:&lt;br /&gt;
# https://www.mediawiki.org/wiki/Manual:Configuration_settings&lt;br /&gt;
&lt;br /&gt;
# Protect against web entry&lt;br /&gt;
if ( !defined( &#039;MEDIAWIKI&#039; ) ) {&lt;br /&gt;
	exit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Uncomment this to disable output compression&lt;br /&gt;
# $wgDisableOutputCompression = true;&lt;br /&gt;
&lt;br /&gt;
$wgSitename = &amp;quot;YOUR_WIKI_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## The URL base path to the directory containing the wiki;&lt;br /&gt;
## defaults for all runtime URL paths are based off of this.&lt;br /&gt;
## For more information on customizing the URLs&lt;br /&gt;
## (like /w/index.php/Page_title to /wiki/Page_title) please see:&lt;br /&gt;
## https://www.mediawiki.org/wiki/Manual:Short_URL&lt;br /&gt;
$wgScriptPath = &amp;quot;/w&amp;quot;; # &amp;lt;--- PLEASE CHECK YOUR DOCUMENTROOT&lt;br /&gt;
&lt;br /&gt;
## The protocol and server name to use in fully-qualified URLs&lt;br /&gt;
$wgServer = &amp;quot;http(s)://your-domain.ltd&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## The URL path to static resources (images, scripts, etc.)&lt;br /&gt;
$wgResourceBasePath = $wgScriptPath;&lt;br /&gt;
&lt;br /&gt;
## The URL paths to the logo.  Make sure you change this from the default,&lt;br /&gt;
## or else you&#039;ll overwrite your logo when you upgrade!&lt;br /&gt;
$wgLogos = [ &#039;1x&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/wiki.png&amp;quot; ];&lt;br /&gt;
&lt;br /&gt;
## UPO means: this is also a user preference option&lt;br /&gt;
&lt;br /&gt;
$wgEnableEmail = true;&lt;br /&gt;
$wgEnableUserEmail = true; # UPO&lt;br /&gt;
&lt;br /&gt;
$wgEmergencyContact = &amp;quot;nomail@localhost.localdomain&amp;quot;;&lt;br /&gt;
$wgPasswordSender = &amp;quot;nomail@localhost.localdomain&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgEnotifUserTalk = false; # UPO&lt;br /&gt;
$wgEnotifWatchlist = false; # UPO&lt;br /&gt;
$wgEmailAuthentication = true;&lt;br /&gt;
&lt;br /&gt;
## Database settings&lt;br /&gt;
$wgDBtype = &amp;quot;mysql&amp;quot;;&lt;br /&gt;
$wgDBserver = &amp;quot;YOUR_DATABASE_SERVER&amp;quot;;&lt;br /&gt;
$wgDBname = &amp;quot;bluespice&amp;quot;;&lt;br /&gt;
$wgDBuser = &amp;quot;bluespice&amp;quot;;&lt;br /&gt;
$wgDBpassword = &amp;quot;PleaseChooseAComplexPassword&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# MySQL specific settings&lt;br /&gt;
$wgDBprefix = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# MySQL table options to use during installation or update&lt;br /&gt;
$wgDBTableOptions = &amp;quot;ENGINE=InnoDB, DEFAULT CHARSET=binary&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Shared database table&lt;br /&gt;
# This has no effect unless $wgSharedDB is also set.&lt;br /&gt;
$wgSharedTables[] = &amp;quot;actor&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Shared memory settings&lt;br /&gt;
$wgMainCacheType = CACHE_NONE;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
&lt;br /&gt;
## To enable image uploads, make sure the &#039;images&#039; directory&lt;br /&gt;
## is writable, then set this to true:&lt;br /&gt;
$wgEnableUploads = false;&lt;br /&gt;
$wgUseImageMagick = true;&lt;br /&gt;
$wgImageMagickConvertCommand = &amp;quot;/usr/bin/convert&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# InstantCommons allows wiki to use images from https://commons.wikimedia.org&lt;br /&gt;
$wgUseInstantCommons = false;&lt;br /&gt;
&lt;br /&gt;
# Periodically send a pingback to https://www.mediawiki.org/ with basic data&lt;br /&gt;
# about this MediaWiki instance. The Wikimedia Foundation shares this data&lt;br /&gt;
# with MediaWiki developers to help guide future development efforts.&lt;br /&gt;
$wgPingback = false;&lt;br /&gt;
&lt;br /&gt;
## If you use ImageMagick (or any other shell command) on a&lt;br /&gt;
## Linux server, this will need to be set to the name of an&lt;br /&gt;
## available UTF-8 locale. This should ideally be set to an English&lt;br /&gt;
## language locale so that the behaviour of C library functions will&lt;br /&gt;
## be consistent with typical installations. Use $wgLanguageCode to&lt;br /&gt;
## localise the wiki.&lt;br /&gt;
$wgShellLocale = &amp;quot;C.UTF-8&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
## to make your wiki go slightly faster. The directory should not&lt;br /&gt;
## be publicly accessible from the web.&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Site language code, should be one of the list in ./languages/data/Names.php&lt;br /&gt;
$wgLanguageCode = &amp;quot;en&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgSecretKey = &amp;quot;68a265061a4101d0d3dee2a06eeb734abaa6710a7dbe103838f2a26a50fc7835&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Changing this will log out all existing sessions.&lt;br /&gt;
$wgAuthenticationTokenVersion = &amp;quot;1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Site upgrade key. Must be set to a string (default provided) to turn on the&lt;br /&gt;
# web installer while LocalSettings.php is in place&lt;br /&gt;
$wgUpgradeKey = &amp;quot;8775d57b99d672b8&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## For attaching licensing metadata to pages, and displaying an&lt;br /&gt;
## appropriate copyright notice / icon. GNU Free Documentation&lt;br /&gt;
## License and Creative Commons licenses are supported so far.&lt;br /&gt;
$wgRightsPage = &amp;quot;&amp;quot;; # Set to the title of a wiki page that describes your license/copyright&lt;br /&gt;
$wgRightsUrl = &amp;quot;&amp;quot;;&lt;br /&gt;
$wgRightsText = &amp;quot;&amp;quot;;&lt;br /&gt;
$wgRightsIcon = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Path to the GNU diff3 utility. Used for conflict resolution.&lt;br /&gt;
$wgDiff3 = &amp;quot;/usr/bin/diff3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Default skin: you can change the default skin. Use the internal symbolic&lt;br /&gt;
## names, ie &#039;vector&#039;, &#039;monobook&#039;:&lt;br /&gt;
$wgDefaultSkin = &amp;quot;bluespicediscovery&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# End of automatically generated settings.&lt;br /&gt;
# Add more configuration options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# This is the main settings file for all BlueSpice extensions and settings&lt;br /&gt;
# It will include all files in &amp;quot;$IP/settings.d/&amp;quot; directory&lt;br /&gt;
require_once &amp;quot;$IP/LocalSettings.BlueSpice.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$wgUserMergeProtectedGroups = array();&lt;br /&gt;
$wgUserMergeUnmergeable = array();&lt;br /&gt;
$wgMetaNamespace = &#039;Project&#039;;&lt;br /&gt;
$bsgGroupRoles[&#039;*&#039;][&#039;reader&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
# Convenience for debugging&lt;br /&gt;
# $wgShowSQLErrors = true;&lt;br /&gt;
# $wgDebugDumpSql  = true;&lt;br /&gt;
# $wgShowExceptionDetails = true;&lt;br /&gt;
# $wgShowDBErrorBacktrace = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Edit this  &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; and set the correct values to fit your installation. This current &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; might look like different from your MediaWiki installation, because BlueSpice comes with a separate folder for custom settings (&#039;&#039;&amp;lt;code&amp;gt;settings.d&amp;lt;/code&amp;gt;&#039;&#039;). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Migrating the system==&lt;br /&gt;
The system is ready to migrate. &lt;br /&gt;
&lt;br /&gt;
#Run the following script to start the migration:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/update.php --quick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Now BlueSpice should be reachable.&lt;br /&gt;
#Execute the following additional scripts (install [[Archive:Setup:Installation_Guide/System_Preparation/Linux/OpenSearch|OpenSearch]] before initiating search index):&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/rebuildall.php &lt;br /&gt;
&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/extensions/BlueSpiceExtendedSearch/maintenance/initBackends.php --quick&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/extensions/BlueSpiceExtendedSearch/maintenance/rebuildIndex.php --quick&lt;br /&gt;
&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/runJobs.php --memory-limit=max&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your migration is complete and your BlueSpice is ready to use!&lt;br /&gt;
&lt;br /&gt;
You can use your old credentials to login.&lt;br /&gt;
&lt;br /&gt;
==After the migration==&lt;br /&gt;
Please check and clean up your &amp;lt;code&amp;gt;MediaWiki:Common.js&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MediaWiki:Common.css&amp;lt;/code&amp;gt; pages, and inspect if you have any legacy script pieces and style rules that might incompatible with the BlueSpice interface. By default BlueSpice does not have working content in these two pages. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Questions?&#039;&#039;&#039; Seek help from the [https://community.bluespice.com BlueSpice help forum]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[en:{{FULLPAGENAME}}]]&lt;br /&gt;
[[de:Setup:Installationsanleitung/Migration_von_MediaWiki_auf_BlueSpice]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Migration_from_MediaWiki_to_BlueSpice&amp;diff=12261</id>
		<title>Setup:Installation Guide/Migration from MediaWiki to BlueSpice</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Migration_from_MediaWiki_to_BlueSpice&amp;diff=12261"/>
		<updated>2025-06-17T16:23:47Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Before you start==&lt;br /&gt;
It is important to check the compatibility of your current MediaWiki installation and the BlueSpice version to which you want to migrate:&lt;br /&gt;
&lt;br /&gt;
* BlueSpice version 3.x is based on MediaWiki 1.31.x&lt;br /&gt;
* BlueSpice version 4.x until 4.2.7 is based on MediaWiki 1.35.x&lt;br /&gt;
* BlueSpice version 4.x starting from 4.3 is based on MediaWiki 1.39.x&lt;br /&gt;
* BlueSpice version 5.x is based on MediaWiki 1.43.x&lt;br /&gt;
&lt;br /&gt;
==Backup==&lt;br /&gt;
Create a full backup of your current installation. Commands may differ depending on your operating system.&lt;br /&gt;
&lt;br /&gt;
#Create a directory to store the backup:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
mkdir -p /opt/mediawiki-migration-backup/{db,web}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Create the database dump:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
mysqldump -u DB_USER_OR_ROOT -p MEDIAWIKI_DATABASE_NAME &amp;gt; /opt/mediawiki-migration-backup/db/database.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Copy everything in the web root to the backup folder:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
cp -Rvf /PATH/TO/MEDIAWIKI/FOLDER/* /opt/mediawiki-migration-backup/web/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will use this backup later for the migration process as well.&lt;br /&gt;
&lt;br /&gt;
==Preparing the migration==&lt;br /&gt;
You can create a separate user account and database for  BlueSpice. This step is optional but recommended. The following steps are based on such a separately created user and database.&lt;br /&gt;
&lt;br /&gt;
If you choose not to create a separate user account and database,  replace the following commands accordingly.&lt;br /&gt;
&lt;br /&gt;
#Create a MySQL/MariaDB user via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CREATE USER &#039;bluespice&#039;@&#039;localhost&#039; IDENFITIED BY &#039;PleaseChooseAComplexPassword&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Create a database for BlueSpice via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CREATE DATABASE bluespice;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Grant the required privileges for the bluespice user to the bluespice database via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
GRANT ALL PRIVILEGES ON bluespice.* TO &#039;bluespice&#039;@&#039;localhost&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Now we have an empty SQL database and are ready to import.&lt;br /&gt;
&lt;br /&gt;
==Importing the data==&lt;br /&gt;
&lt;br /&gt;
#Import the SQL dump from the backup you created earlier:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u bluespice -p bluespice &amp;lt; /opt/mediawiki-migration-backup/db/database.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;After this command, enter  the password you chose for the &amp;lt;code&amp;gt;bluespice&amp;lt;/code&amp;gt; database user.&lt;br /&gt;
#Next,  clean up the old installation folder and create an empty one.&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
rm -Rf /PATH/TO/MEDIAWIKI/FOLDER/ &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;and&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p /PATH/TO/MEDIAWIKI/FOLDER/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Next,  extract the BlueSpice package and place it into the /PATH/TO/MEDIAWIKI/FOLDER/ &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /PATH/TO/MEDIAWIKI/FOLDER/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Copy the &#039;&#039;images&#039;&#039; folder from the backup to the /PATH/TO/MEDIAWIKI/FOLDER/ :&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -Rf /opt/mediawiki-migration-backup/images .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Set the correct permissions based on your operating system to the folder  /PATH/TO/MEDIAWIKI/FOLDER/ .&lt;br /&gt;
&lt;br /&gt;
==Configuration settings==&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=important|header=|text=If you are migrating to [[Setup:Installation_Guide/Docker|a Docker installation]] using &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;, your new installation does not provide a concrete &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Instead, you can add your customized settings to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Please check [[Setup:Installation_Guide/Docker#Custom_wiki_application_configuration]] for details.|icon=yes}}&lt;br /&gt;
#In  /PATH/TO/MEDIAWIKI/FOLDER/, create a new file named  &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; and copy the following content into the file:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# This file was automatically generated by the MediaWiki 1.35.3&lt;br /&gt;
# installer. If you make manual changes, please keep track in case you&lt;br /&gt;
# need to recreate them later.&lt;br /&gt;
#&lt;br /&gt;
# See includes/DefaultSettings.php for all configurable settings&lt;br /&gt;
# and their default values, but don&#039;t forget to make changes in _this_&lt;br /&gt;
# file, not there.&lt;br /&gt;
#&lt;br /&gt;
# Further documentation for configuration settings may be found at:&lt;br /&gt;
# https://www.mediawiki.org/wiki/Manual:Configuration_settings&lt;br /&gt;
&lt;br /&gt;
# Protect against web entry&lt;br /&gt;
if ( !defined( &#039;MEDIAWIKI&#039; ) ) {&lt;br /&gt;
	exit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Uncomment this to disable output compression&lt;br /&gt;
# $wgDisableOutputCompression = true;&lt;br /&gt;
&lt;br /&gt;
$wgSitename = &amp;quot;YOUR_WIKI_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## The URL base path to the directory containing the wiki;&lt;br /&gt;
## defaults for all runtime URL paths are based off of this.&lt;br /&gt;
## For more information on customizing the URLs&lt;br /&gt;
## (like /w/index.php/Page_title to /wiki/Page_title) please see:&lt;br /&gt;
## https://www.mediawiki.org/wiki/Manual:Short_URL&lt;br /&gt;
$wgScriptPath = &amp;quot;/w&amp;quot;; # &amp;lt;--- PLEASE CHECK YOUR DOCUMENTROOT&lt;br /&gt;
&lt;br /&gt;
## The protocol and server name to use in fully-qualified URLs&lt;br /&gt;
$wgServer = &amp;quot;http(s)://your-domain.ltd&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## The URL path to static resources (images, scripts, etc.)&lt;br /&gt;
$wgResourceBasePath = $wgScriptPath;&lt;br /&gt;
&lt;br /&gt;
## The URL paths to the logo.  Make sure you change this from the default,&lt;br /&gt;
## or else you&#039;ll overwrite your logo when you upgrade!&lt;br /&gt;
$wgLogos = [ &#039;1x&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/wiki.png&amp;quot; ];&lt;br /&gt;
&lt;br /&gt;
## UPO means: this is also a user preference option&lt;br /&gt;
&lt;br /&gt;
$wgEnableEmail = true;&lt;br /&gt;
$wgEnableUserEmail = true; # UPO&lt;br /&gt;
&lt;br /&gt;
$wgEmergencyContact = &amp;quot;nomail@localhost.localdomain&amp;quot;;&lt;br /&gt;
$wgPasswordSender = &amp;quot;nomail@localhost.localdomain&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgEnotifUserTalk = false; # UPO&lt;br /&gt;
$wgEnotifWatchlist = false; # UPO&lt;br /&gt;
$wgEmailAuthentication = true;&lt;br /&gt;
&lt;br /&gt;
## Database settings&lt;br /&gt;
$wgDBtype = &amp;quot;mysql&amp;quot;;&lt;br /&gt;
$wgDBserver = &amp;quot;YOUR_DATABASE_SERVER&amp;quot;;&lt;br /&gt;
$wgDBname = &amp;quot;bluespice&amp;quot;;&lt;br /&gt;
$wgDBuser = &amp;quot;bluespice&amp;quot;;&lt;br /&gt;
$wgDBpassword = &amp;quot;PleaseChooseAComplexPassword&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# MySQL specific settings&lt;br /&gt;
$wgDBprefix = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# MySQL table options to use during installation or update&lt;br /&gt;
$wgDBTableOptions = &amp;quot;ENGINE=InnoDB, DEFAULT CHARSET=binary&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Shared database table&lt;br /&gt;
# This has no effect unless $wgSharedDB is also set.&lt;br /&gt;
$wgSharedTables[] = &amp;quot;actor&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Shared memory settings&lt;br /&gt;
$wgMainCacheType = CACHE_NONE;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
&lt;br /&gt;
## To enable image uploads, make sure the &#039;images&#039; directory&lt;br /&gt;
## is writable, then set this to true:&lt;br /&gt;
$wgEnableUploads = false;&lt;br /&gt;
$wgUseImageMagick = true;&lt;br /&gt;
$wgImageMagickConvertCommand = &amp;quot;/usr/bin/convert&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# InstantCommons allows wiki to use images from https://commons.wikimedia.org&lt;br /&gt;
$wgUseInstantCommons = false;&lt;br /&gt;
&lt;br /&gt;
# Periodically send a pingback to https://www.mediawiki.org/ with basic data&lt;br /&gt;
# about this MediaWiki instance. The Wikimedia Foundation shares this data&lt;br /&gt;
# with MediaWiki developers to help guide future development efforts.&lt;br /&gt;
$wgPingback = false;&lt;br /&gt;
&lt;br /&gt;
## If you use ImageMagick (or any other shell command) on a&lt;br /&gt;
## Linux server, this will need to be set to the name of an&lt;br /&gt;
## available UTF-8 locale. This should ideally be set to an English&lt;br /&gt;
## language locale so that the behaviour of C library functions will&lt;br /&gt;
## be consistent with typical installations. Use $wgLanguageCode to&lt;br /&gt;
## localise the wiki.&lt;br /&gt;
$wgShellLocale = &amp;quot;C.UTF-8&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
## to make your wiki go slightly faster. The directory should not&lt;br /&gt;
## be publicly accessible from the web.&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Site language code, should be one of the list in ./languages/data/Names.php&lt;br /&gt;
$wgLanguageCode = &amp;quot;en&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgSecretKey = &amp;quot;68a265061a4101d0d3dee2a06eeb734abaa6710a7dbe103838f2a26a50fc7835&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Changing this will log out all existing sessions.&lt;br /&gt;
$wgAuthenticationTokenVersion = &amp;quot;1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Site upgrade key. Must be set to a string (default provided) to turn on the&lt;br /&gt;
# web installer while LocalSettings.php is in place&lt;br /&gt;
$wgUpgradeKey = &amp;quot;8775d57b99d672b8&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## For attaching licensing metadata to pages, and displaying an&lt;br /&gt;
## appropriate copyright notice / icon. GNU Free Documentation&lt;br /&gt;
## License and Creative Commons licenses are supported so far.&lt;br /&gt;
$wgRightsPage = &amp;quot;&amp;quot;; # Set to the title of a wiki page that describes your license/copyright&lt;br /&gt;
$wgRightsUrl = &amp;quot;&amp;quot;;&lt;br /&gt;
$wgRightsText = &amp;quot;&amp;quot;;&lt;br /&gt;
$wgRightsIcon = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Path to the GNU diff3 utility. Used for conflict resolution.&lt;br /&gt;
$wgDiff3 = &amp;quot;/usr/bin/diff3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Default skin: you can change the default skin. Use the internal symbolic&lt;br /&gt;
## names, ie &#039;vector&#039;, &#039;monobook&#039;:&lt;br /&gt;
$wgDefaultSkin = &amp;quot;bluespicediscovery&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# End of automatically generated settings.&lt;br /&gt;
# Add more configuration options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# This is the main settings file for all BlueSpice extensions and settings&lt;br /&gt;
# It will include all files in &amp;quot;$IP/settings.d/&amp;quot; directory&lt;br /&gt;
require_once &amp;quot;$IP/LocalSettings.BlueSpice.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$wgUserMergeProtectedGroups = array();&lt;br /&gt;
$wgUserMergeUnmergeable = array();&lt;br /&gt;
$wgMetaNamespace = &#039;Project&#039;;&lt;br /&gt;
$bsgGroupRoles[&#039;*&#039;][&#039;reader&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
# Convenience for debugging&lt;br /&gt;
# $wgShowSQLErrors = true;&lt;br /&gt;
# $wgDebugDumpSql  = true;&lt;br /&gt;
# $wgShowExceptionDetails = true;&lt;br /&gt;
# $wgShowDBErrorBacktrace = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Edit this  &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; and set the correct values to fit your installation. This current &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; might look like different from your MediaWiki installation, because BlueSpice comes with a separate folder for custom settings (&#039;&#039;&amp;lt;code&amp;gt;settings.d&amp;lt;/code&amp;gt;&#039;&#039;). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Migrating the system==&lt;br /&gt;
The system is ready to migrate. &lt;br /&gt;
&lt;br /&gt;
#Run the following script to start the migration:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/update.php --quick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Now BlueSpice should be reachable.&lt;br /&gt;
#Execute the following additional scripts (install [[Archive:Setup:Installation_Guide/System_Preparation/Linux/OpenSearch|opensearch]] before initiating search index):&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/rebuildall.php &lt;br /&gt;
&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/extensions/BlueSpiceExtendedSearch/maintenance/initBackends.php --quick&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/extensions/BlueSpiceExtendedSearch/maintenance/rebuildIndex.php --quick&lt;br /&gt;
&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/runJobs.php --memory-limit=max&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your migration is complete and your BlueSpice is ready to use!&lt;br /&gt;
&lt;br /&gt;
You can use your old credentials to login.&lt;br /&gt;
&lt;br /&gt;
==After the migration==&lt;br /&gt;
Please check and clean up your &amp;lt;code&amp;gt;MediaWiki:Common.js&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MediaWiki:Common.css&amp;lt;/code&amp;gt; pages, and inspect if you have any legacy script pieces and style rules that might incompatible with the BlueSpice interface. By default BlueSpice does not have working content in these two pages. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Questions?&#039;&#039;&#039; Seek help from the [https://community.bluespice.com BlueSpice help forum]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[en:{{FULLPAGENAME}}]]&lt;br /&gt;
[[de:Setup:Installationsanleitung/Migration_von_MediaWiki_auf_BlueSpice]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Migration_from_MediaWiki_to_BlueSpice&amp;diff=12260</id>
		<title>Setup:Installation Guide/Migration from MediaWiki to BlueSpice</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Migration_from_MediaWiki_to_BlueSpice&amp;diff=12260"/>
		<updated>2025-06-17T16:23:27Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Before you start==&lt;br /&gt;
It is important to check the compatibility of your current MediaWiki installation and the BlueSpice version to which you want to migrate:&lt;br /&gt;
&lt;br /&gt;
* BlueSpice version 3.x is based on MediaWiki 1.31.x&lt;br /&gt;
* BlueSpice version 4.x until 4.2.7 is based on MediaWiki 1.35.x&lt;br /&gt;
* BlueSpice version 4.x starting from 4.3 is based on MediaWiki 1.39.x&lt;br /&gt;
* BlueSpice version 5.x is based on MediaWiki 1.43.x&lt;br /&gt;
&lt;br /&gt;
==Backup==&lt;br /&gt;
Create a full backup of your current installation. Commands may differ depending on your operating system.&lt;br /&gt;
&lt;br /&gt;
#Create a directory to store the backup:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
mkdir -p /opt/mediawiki-migration-backup/{db,web}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Create the database dump:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
mysqldump -u DB_USER_OR_ROOT -p MEDIAWIKI_DATABASE_NAME &amp;gt; /opt/mediawiki-migration-backup/db/database.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Copy everything in the web root to the backup folder:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
cp -Rvf /PATH/TO/MEDIAWIKI/FOLDER/* /opt/mediawiki-migration-backup/web/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will use this backup later for the migration process as well.&lt;br /&gt;
&lt;br /&gt;
==Preparing the migration==&lt;br /&gt;
You can create a separate user account and database for  BlueSpice. This step is optional but recommended. The following steps are based on such a separately created user and database.&lt;br /&gt;
&lt;br /&gt;
If you choose not to create a separate user account and database,  replace the following commands accordingly.&lt;br /&gt;
&lt;br /&gt;
#Create a MySQL/MariaDB user via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CREATE USER &#039;bluespice&#039;@&#039;localhost&#039; IDENFITIED BY &#039;PleaseChooseAComplexPassword&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Create a database for BlueSpice via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CREATE DATABASE bluespice;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Grant the required privileges for the bluespice user to the bluespice database via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
GRANT ALL PRIVILEGES ON bluespice.* TO &#039;bluespice&#039;@&#039;localhost&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Now we have an empty SQL database and are ready to import.&lt;br /&gt;
&lt;br /&gt;
==Importing the data==&lt;br /&gt;
&lt;br /&gt;
#Import the SQL dump from the backup you created earlier:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u bluespice -p bluespice &amp;lt; /opt/mediawiki-migration-backup/db/database.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;After this command, enter  the password you chose for the &amp;lt;code&amp;gt;bluespice&amp;lt;/code&amp;gt; database user.&lt;br /&gt;
#Next,  clean up the old installation folder and create an empty one.&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
rm -Rf /PATH/TO/MEDIAWIKI/FOLDER/ &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;and&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p /PATH/TO/MEDIAWIKI/FOLDER/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Next,  extract the BlueSpice package and place it into the /PATH/TO/MEDIAWIKI/FOLDER/ &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /PATH/TO/MEDIAWIKI/FOLDER/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Copy the &#039;&#039;images&#039;&#039; folder from the backup to the /PATH/TO/MEDIAWIKI/FOLDER/ :&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -Rf /opt/mediawiki-migration-backup/images .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Set the correct permissions based on your operating system to the folder  /PATH/TO/MEDIAWIKI/FOLDER/ .&lt;br /&gt;
&lt;br /&gt;
==Configuration settings==&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=important|header=|text=If you are migrating to [[Setup:Installation_Guide/Docker|a Docker installation]] using &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;, your new installation does not provide a concrete &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Instead, you can add your customized settings to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Please check [[Setup:Installation_Guide/Docker#Custom_wiki_application_configuration]] for details.|icon=yes}}&lt;br /&gt;
#In  /PATH/TO/MEDIAWIKI/FOLDER/, create a new file named  &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; and copy the following content into the file:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# This file was automatically generated by the MediaWiki 1.35.3&lt;br /&gt;
# installer. If you make manual changes, please keep track in case you&lt;br /&gt;
# need to recreate them later.&lt;br /&gt;
#&lt;br /&gt;
# See includes/DefaultSettings.php for all configurable settings&lt;br /&gt;
# and their default values, but don&#039;t forget to make changes in _this_&lt;br /&gt;
# file, not there.&lt;br /&gt;
#&lt;br /&gt;
# Further documentation for configuration settings may be found at:&lt;br /&gt;
# https://www.mediawiki.org/wiki/Manual:Configuration_settings&lt;br /&gt;
&lt;br /&gt;
# Protect against web entry&lt;br /&gt;
if ( !defined( &#039;MEDIAWIKI&#039; ) ) {&lt;br /&gt;
	exit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Uncomment this to disable output compression&lt;br /&gt;
# $wgDisableOutputCompression = true;&lt;br /&gt;
&lt;br /&gt;
$wgSitename = &amp;quot;YOUR_WIKI_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## The URL base path to the directory containing the wiki;&lt;br /&gt;
## defaults for all runtime URL paths are based off of this.&lt;br /&gt;
## For more information on customizing the URLs&lt;br /&gt;
## (like /w/index.php/Page_title to /wiki/Page_title) please see:&lt;br /&gt;
## https://www.mediawiki.org/wiki/Manual:Short_URL&lt;br /&gt;
$wgScriptPath = &amp;quot;/w&amp;quot;; # &amp;lt;--- PLEASE CHECK YOUR DOCUMENTROOT&lt;br /&gt;
&lt;br /&gt;
## The protocol and server name to use in fully-qualified URLs&lt;br /&gt;
$wgServer = &amp;quot;http(s)://your-domain.ltd&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## The URL path to static resources (images, scripts, etc.)&lt;br /&gt;
$wgResourceBasePath = $wgScriptPath;&lt;br /&gt;
&lt;br /&gt;
## The URL paths to the logo.  Make sure you change this from the default,&lt;br /&gt;
## or else you&#039;ll overwrite your logo when you upgrade!&lt;br /&gt;
$wgLogos = [ &#039;1x&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/wiki.png&amp;quot; ];&lt;br /&gt;
&lt;br /&gt;
## UPO means: this is also a user preference option&lt;br /&gt;
&lt;br /&gt;
$wgEnableEmail = true;&lt;br /&gt;
$wgEnableUserEmail = true; # UPO&lt;br /&gt;
&lt;br /&gt;
$wgEmergencyContact = &amp;quot;nomail@localhost.localdomain&amp;quot;;&lt;br /&gt;
$wgPasswordSender = &amp;quot;nomail@localhost.localdomain&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgEnotifUserTalk = false; # UPO&lt;br /&gt;
$wgEnotifWatchlist = false; # UPO&lt;br /&gt;
$wgEmailAuthentication = true;&lt;br /&gt;
&lt;br /&gt;
## Database settings&lt;br /&gt;
$wgDBtype = &amp;quot;mysql&amp;quot;;&lt;br /&gt;
$wgDBserver = &amp;quot;YOUR_DATABASE_SERVER&amp;quot;;&lt;br /&gt;
$wgDBname = &amp;quot;bluespice&amp;quot;;&lt;br /&gt;
$wgDBuser = &amp;quot;bluespice&amp;quot;;&lt;br /&gt;
$wgDBpassword = &amp;quot;PleaseChooseAComplexPassword&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# MySQL specific settings&lt;br /&gt;
$wgDBprefix = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# MySQL table options to use during installation or update&lt;br /&gt;
$wgDBTableOptions = &amp;quot;ENGINE=InnoDB, DEFAULT CHARSET=binary&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Shared database table&lt;br /&gt;
# This has no effect unless $wgSharedDB is also set.&lt;br /&gt;
$wgSharedTables[] = &amp;quot;actor&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Shared memory settings&lt;br /&gt;
$wgMainCacheType = CACHE_NONE;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
&lt;br /&gt;
## To enable image uploads, make sure the &#039;images&#039; directory&lt;br /&gt;
## is writable, then set this to true:&lt;br /&gt;
$wgEnableUploads = false;&lt;br /&gt;
$wgUseImageMagick = true;&lt;br /&gt;
$wgImageMagickConvertCommand = &amp;quot;/usr/bin/convert&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# InstantCommons allows wiki to use images from https://commons.wikimedia.org&lt;br /&gt;
$wgUseInstantCommons = false;&lt;br /&gt;
&lt;br /&gt;
# Periodically send a pingback to https://www.mediawiki.org/ with basic data&lt;br /&gt;
# about this MediaWiki instance. The Wikimedia Foundation shares this data&lt;br /&gt;
# with MediaWiki developers to help guide future development efforts.&lt;br /&gt;
$wgPingback = false;&lt;br /&gt;
&lt;br /&gt;
## If you use ImageMagick (or any other shell command) on a&lt;br /&gt;
## Linux server, this will need to be set to the name of an&lt;br /&gt;
## available UTF-8 locale. This should ideally be set to an English&lt;br /&gt;
## language locale so that the behaviour of C library functions will&lt;br /&gt;
## be consistent with typical installations. Use $wgLanguageCode to&lt;br /&gt;
## localise the wiki.&lt;br /&gt;
$wgShellLocale = &amp;quot;C.UTF-8&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
## to make your wiki go slightly faster. The directory should not&lt;br /&gt;
## be publicly accessible from the web.&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Site language code, should be one of the list in ./languages/data/Names.php&lt;br /&gt;
$wgLanguageCode = &amp;quot;en&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgSecretKey = &amp;quot;68a265061a4101d0d3dee2a06eeb734abaa6710a7dbe103838f2a26a50fc7835&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Changing this will log out all existing sessions.&lt;br /&gt;
$wgAuthenticationTokenVersion = &amp;quot;1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Site upgrade key. Must be set to a string (default provided) to turn on the&lt;br /&gt;
# web installer while LocalSettings.php is in place&lt;br /&gt;
$wgUpgradeKey = &amp;quot;8775d57b99d672b8&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## For attaching licensing metadata to pages, and displaying an&lt;br /&gt;
## appropriate copyright notice / icon. GNU Free Documentation&lt;br /&gt;
## License and Creative Commons licenses are supported so far.&lt;br /&gt;
$wgRightsPage = &amp;quot;&amp;quot;; # Set to the title of a wiki page that describes your license/copyright&lt;br /&gt;
$wgRightsUrl = &amp;quot;&amp;quot;;&lt;br /&gt;
$wgRightsText = &amp;quot;&amp;quot;;&lt;br /&gt;
$wgRightsIcon = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Path to the GNU diff3 utility. Used for conflict resolution.&lt;br /&gt;
$wgDiff3 = &amp;quot;/usr/bin/diff3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Default skin: you can change the default skin. Use the internal symbolic&lt;br /&gt;
## names, ie &#039;vector&#039;, &#039;monobook&#039;:&lt;br /&gt;
$wgDefaultSkin = &amp;quot;bluespicediscovery&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# End of automatically generated settings.&lt;br /&gt;
# Add more configuration options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# This is the main settings file for all BlueSpice extensions and settings&lt;br /&gt;
# It will include all files in &amp;quot;$IP/settings.d/&amp;quot; directory&lt;br /&gt;
require_once &amp;quot;$IP/LocalSettings.BlueSpice.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$wgUserMergeProtectedGroups = array();&lt;br /&gt;
$wgUserMergeUnmergeable = array();&lt;br /&gt;
$wgMetaNamespace = &#039;Project&#039;;&lt;br /&gt;
$bsgGroupRoles[&#039;*&#039;][&#039;reader&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
# Convenience for debugging&lt;br /&gt;
# $wgShowSQLErrors = true;&lt;br /&gt;
# $wgDebugDumpSql  = true;&lt;br /&gt;
# $wgShowExceptionDetails = true;&lt;br /&gt;
# $wgShowDBErrorBacktrace = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Edit this  &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; and set the correct values to fit your installation. This current &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; might look like different from your MediaWiki installation, because BlueSpice comes with a separate folder for custom settings (&#039;&#039;&amp;lt;code&amp;gt;settings.d&amp;lt;/code&amp;gt;&#039;&#039;). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Migrating the system==&lt;br /&gt;
The system is ready to migrate. &lt;br /&gt;
&lt;br /&gt;
#Run the following script to start the migration:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/update.php --quick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Now BlueSpice should be reachable.&lt;br /&gt;
#Execute the following additional scripts (install [[Archive:Setup:Installation_Guide/System_Preparation/Linux/OpenSearch|opensearch]] before initiating search index):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/rebuildall.php &lt;br /&gt;
&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/extensions/BlueSpiceExtendedSearch/maintenance/initBackends.php --quick&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/extensions/BlueSpiceExtendedSearch/maintenance/rebuildIndex.php --quick&lt;br /&gt;
&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/runJobs.php --memory-limit=max&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your migration is complete and your BlueSpice is ready to use!&lt;br /&gt;
&lt;br /&gt;
You can use your old credentials to login.&lt;br /&gt;
&lt;br /&gt;
==After the migration==&lt;br /&gt;
Please check and clean up your &amp;lt;code&amp;gt;MediaWiki:Common.js&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MediaWiki:Common.css&amp;lt;/code&amp;gt; pages, and inspect if you have any legacy script pieces and style rules that might incompatible with the BlueSpice interface. By default BlueSpice does not have working content in these two pages. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Questions?&#039;&#039;&#039; Seek help from the [https://community.bluespice.com BlueSpice help forum]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[en:{{FULLPAGENAME}}]]&lt;br /&gt;
[[de:Setup:Installationsanleitung/Migration_von_MediaWiki_auf_BlueSpice]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Migration_from_MediaWiki_to_BlueSpice&amp;diff=12206</id>
		<title>Setup:Installation Guide/Migration from MediaWiki to BlueSpice</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Migration_from_MediaWiki_to_BlueSpice&amp;diff=12206"/>
		<updated>2025-06-13T12:35:44Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Correct MW version, add docker hint and Common.js/.css hint, correct community link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Before you start==&lt;br /&gt;
It is important to check the compatibility of your current MediaWiki installation and the BlueSpice version to which you want to migrate:&lt;br /&gt;
&lt;br /&gt;
* BlueSpice version 3.x is based on MediaWiki 1.31.x&lt;br /&gt;
* BlueSpice version 4.x until 4.2.7 is based on MediaWiki 1.35.x&lt;br /&gt;
* BlueSpice version 4.x starting from 4.3 is based on MediaWiki 1.39.x&lt;br /&gt;
* BlueSpice version 5.x is based on MediaWiki 1.43.x&lt;br /&gt;
&lt;br /&gt;
==Backup==&lt;br /&gt;
Create a full backup of your current installation. Commands may differ depending on your operating system.&lt;br /&gt;
&lt;br /&gt;
#Create a directory to store the backup:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
mkdir -p /opt/mediawiki-migration-backup/{db,web}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Create the database dump:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
mysqldump -u DB_USER_OR_ROOT -p MEDIAWIKI_DATABASE_NAME &amp;gt; /opt/mediawiki-migration-backup/db/database.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Copy everything in the web root to the backup folder:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
cp -Rvf /PATH/TO/MEDIAWIKI/FOLDER/* /opt/mediawiki-migration-backup/web/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will use this backup later for the migration process as well.&lt;br /&gt;
&lt;br /&gt;
==Preparing the migration==&lt;br /&gt;
You can create a separate user account and database for  BlueSpice. This step is optional but recommended. The following steps are based on such a separately created user and database.&lt;br /&gt;
&lt;br /&gt;
If you choose not to create a separate user account and database,  replace the following commands accordingly.&lt;br /&gt;
&lt;br /&gt;
#Create a MySQL/MariaDB user via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CREATE USER &#039;bluespice&#039;@&#039;localhost&#039; IDENFITIED BY &#039;PleaseChooseAComplexPassword&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Create a database for BlueSpice via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CREATE DATABASE bluespice;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Grant the required privileges for the bluespice user to the bluespice database via MySQL CLI:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
GRANT ALL PRIVILEGES ON bluespice.* TO &#039;bluespice&#039;@&#039;localhost&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Now we have an empty SQL database and are ready to import.&lt;br /&gt;
&lt;br /&gt;
==Importing the data==&lt;br /&gt;
&lt;br /&gt;
#Import the SQL dump from the backup you created earlier:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u bluespice -p bluespice &amp;lt; /opt/mediawiki-migration-backup/db/database.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;After this command, enter  the password you chose for the &amp;lt;code&amp;gt;bluespice&amp;lt;/code&amp;gt; database user.&lt;br /&gt;
#Next,  clean up the old installation folder and create an empty one.&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
rm -Rf /PATH/TO/MEDIAWIKI/FOLDER/ &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;and&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p /PATH/TO/MEDIAWIKI/FOLDER/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Next,  extract the BlueSpice package and place it into the /PATH/TO/MEDIAWIKI/FOLDER/ &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /PATH/TO/MEDIAWIKI/FOLDER/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#Copy the &#039;&#039;images&#039;&#039; folder from the backup to the /PATH/TO/MEDIAWIKI/FOLDER/ :&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp -Rf /opt/mediawiki-migration-backup/images .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Set the correct permissions based on your operating system to the folder  /PATH/TO/MEDIAWIKI/FOLDER/ .&lt;br /&gt;
&lt;br /&gt;
==Configuration settings==&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=important|header=|text=If you are migrating to [[Setup:Installation_Guide/Docker|a Docker installation]] using &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;, your new installation does not provide a concrete &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Instead, you can add your customized settings to &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Please check [[Setup:Installation_Guide/Docker#Custom_wiki_application_configuration]] for details.|icon=yes}}&lt;br /&gt;
#In  /PATH/TO/MEDIAWIKI/FOLDER/, create a new file named  &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; and copy the following content into the file:&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# This file was automatically generated by the MediaWiki 1.35.3&lt;br /&gt;
# installer. If you make manual changes, please keep track in case you&lt;br /&gt;
# need to recreate them later.&lt;br /&gt;
#&lt;br /&gt;
# See includes/DefaultSettings.php for all configurable settings&lt;br /&gt;
# and their default values, but don&#039;t forget to make changes in _this_&lt;br /&gt;
# file, not there.&lt;br /&gt;
#&lt;br /&gt;
# Further documentation for configuration settings may be found at:&lt;br /&gt;
# https://www.mediawiki.org/wiki/Manual:Configuration_settings&lt;br /&gt;
&lt;br /&gt;
# Protect against web entry&lt;br /&gt;
if ( !defined( &#039;MEDIAWIKI&#039; ) ) {&lt;br /&gt;
	exit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Uncomment this to disable output compression&lt;br /&gt;
# $wgDisableOutputCompression = true;&lt;br /&gt;
&lt;br /&gt;
$wgSitename = &amp;quot;YOUR_WIKI_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## The URL base path to the directory containing the wiki;&lt;br /&gt;
## defaults for all runtime URL paths are based off of this.&lt;br /&gt;
## For more information on customizing the URLs&lt;br /&gt;
## (like /w/index.php/Page_title to /wiki/Page_title) please see:&lt;br /&gt;
## https://www.mediawiki.org/wiki/Manual:Short_URL&lt;br /&gt;
$wgScriptPath = &amp;quot;/w&amp;quot;; # &amp;lt;--- PLEASE CHECK YOUR DOCUMENTROOT&lt;br /&gt;
&lt;br /&gt;
## The protocol and server name to use in fully-qualified URLs&lt;br /&gt;
$wgServer = &amp;quot;http(s)://your-domain.ltd&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## The URL path to static resources (images, scripts, etc.)&lt;br /&gt;
$wgResourceBasePath = $wgScriptPath;&lt;br /&gt;
&lt;br /&gt;
## The URL paths to the logo.  Make sure you change this from the default,&lt;br /&gt;
## or else you&#039;ll overwrite your logo when you upgrade!&lt;br /&gt;
$wgLogos = [ &#039;1x&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/wiki.png&amp;quot; ];&lt;br /&gt;
&lt;br /&gt;
## UPO means: this is also a user preference option&lt;br /&gt;
&lt;br /&gt;
$wgEnableEmail = true;&lt;br /&gt;
$wgEnableUserEmail = true; # UPO&lt;br /&gt;
&lt;br /&gt;
$wgEmergencyContact = &amp;quot;nomail@localhost.localdomain&amp;quot;;&lt;br /&gt;
$wgPasswordSender = &amp;quot;nomail@localhost.localdomain&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgEnotifUserTalk = false; # UPO&lt;br /&gt;
$wgEnotifWatchlist = false; # UPO&lt;br /&gt;
$wgEmailAuthentication = true;&lt;br /&gt;
&lt;br /&gt;
## Database settings&lt;br /&gt;
$wgDBtype = &amp;quot;mysql&amp;quot;;&lt;br /&gt;
$wgDBserver = &amp;quot;YOUR_DATABASE_SERVER&amp;quot;;&lt;br /&gt;
$wgDBname = &amp;quot;bluespice&amp;quot;;&lt;br /&gt;
$wgDBuser = &amp;quot;bluespice&amp;quot;;&lt;br /&gt;
$wgDBpassword = &amp;quot;PleaseChooseAComplexPassword&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# MySQL specific settings&lt;br /&gt;
$wgDBprefix = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# MySQL table options to use during installation or update&lt;br /&gt;
$wgDBTableOptions = &amp;quot;ENGINE=InnoDB, DEFAULT CHARSET=binary&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Shared database table&lt;br /&gt;
# This has no effect unless $wgSharedDB is also set.&lt;br /&gt;
$wgSharedTables[] = &amp;quot;actor&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Shared memory settings&lt;br /&gt;
$wgMainCacheType = CACHE_NONE;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
&lt;br /&gt;
## To enable image uploads, make sure the &#039;images&#039; directory&lt;br /&gt;
## is writable, then set this to true:&lt;br /&gt;
$wgEnableUploads = false;&lt;br /&gt;
$wgUseImageMagick = true;&lt;br /&gt;
$wgImageMagickConvertCommand = &amp;quot;/usr/bin/convert&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# InstantCommons allows wiki to use images from https://commons.wikimedia.org&lt;br /&gt;
$wgUseInstantCommons = false;&lt;br /&gt;
&lt;br /&gt;
# Periodically send a pingback to https://www.mediawiki.org/ with basic data&lt;br /&gt;
# about this MediaWiki instance. The Wikimedia Foundation shares this data&lt;br /&gt;
# with MediaWiki developers to help guide future development efforts.&lt;br /&gt;
$wgPingback = false;&lt;br /&gt;
&lt;br /&gt;
## If you use ImageMagick (or any other shell command) on a&lt;br /&gt;
## Linux server, this will need to be set to the name of an&lt;br /&gt;
## available UTF-8 locale. This should ideally be set to an English&lt;br /&gt;
## language locale so that the behaviour of C library functions will&lt;br /&gt;
## be consistent with typical installations. Use $wgLanguageCode to&lt;br /&gt;
## localise the wiki.&lt;br /&gt;
$wgShellLocale = &amp;quot;C.UTF-8&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
## to make your wiki go slightly faster. The directory should not&lt;br /&gt;
## be publicly accessible from the web.&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Site language code, should be one of the list in ./languages/data/Names.php&lt;br /&gt;
$wgLanguageCode = &amp;quot;en&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgSecretKey = &amp;quot;68a265061a4101d0d3dee2a06eeb734abaa6710a7dbe103838f2a26a50fc7835&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Changing this will log out all existing sessions.&lt;br /&gt;
$wgAuthenticationTokenVersion = &amp;quot;1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Site upgrade key. Must be set to a string (default provided) to turn on the&lt;br /&gt;
# web installer while LocalSettings.php is in place&lt;br /&gt;
$wgUpgradeKey = &amp;quot;8775d57b99d672b8&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## For attaching licensing metadata to pages, and displaying an&lt;br /&gt;
## appropriate copyright notice / icon. GNU Free Documentation&lt;br /&gt;
## License and Creative Commons licenses are supported so far.&lt;br /&gt;
$wgRightsPage = &amp;quot;&amp;quot;; # Set to the title of a wiki page that describes your license/copyright&lt;br /&gt;
$wgRightsUrl = &amp;quot;&amp;quot;;&lt;br /&gt;
$wgRightsText = &amp;quot;&amp;quot;;&lt;br /&gt;
$wgRightsIcon = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Path to the GNU diff3 utility. Used for conflict resolution.&lt;br /&gt;
$wgDiff3 = &amp;quot;/usr/bin/diff3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Default skin: you can change the default skin. Use the internal symbolic&lt;br /&gt;
## names, ie &#039;vector&#039;, &#039;monobook&#039;:&lt;br /&gt;
$wgDefaultSkin = &amp;quot;bluespicediscovery&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# End of automatically generated settings.&lt;br /&gt;
# Add more configuration options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# This is the main settings file for all BlueSpice extensions and settings&lt;br /&gt;
# It will include all files in &amp;quot;$IP/settings.d/&amp;quot; directory&lt;br /&gt;
require_once &amp;quot;$IP/LocalSettings.BlueSpice.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$wgUserMergeProtectedGroups = array();&lt;br /&gt;
$wgUserMergeUnmergeable = array();&lt;br /&gt;
$wgMetaNamespace = &#039;Project&#039;;&lt;br /&gt;
$bsgGroupRoles[&#039;*&#039;][&#039;reader&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
# Convenience for debugging&lt;br /&gt;
# $wgShowSQLErrors = true;&lt;br /&gt;
# $wgDebugDumpSql  = true;&lt;br /&gt;
# $wgShowExceptionDetails = true;&lt;br /&gt;
# $wgShowDBErrorBacktrace = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Edit this  &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; and set the correct values to fit your installation. This current &#039;&#039;&amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;&#039;&#039; might look like different from your MediaWiki installation, because BlueSpice comes with a separate folder for custom settings (&#039;&#039;&amp;lt;code&amp;gt;settings.d&amp;lt;/code&amp;gt;&#039;&#039;). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Migrating the system==&lt;br /&gt;
The system is ready to migrate. &lt;br /&gt;
&lt;br /&gt;
#Run the following script to start the migration:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/update.php --quick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Now BlueSpice should be reachable.&lt;br /&gt;
#Execute the following additional scripts:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/rebuildall.php &lt;br /&gt;
#Finally for the search index (ElasticSearch 6.x and ingest-attachment plugins must be installed) php /PATH/TO/MEDIAWIKI/FOLDER/extensions/BlueSpiceExtendedSearch/maintenance/initBackends.php --quick&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/extensions/BlueSpiceExtendedSearch/maintenance/rebuildIndex.php --quick&lt;br /&gt;
php /PATH/TO/MEDIAWIKI/FOLDER/maintenance/runJobs.php --memory-limit=max&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your migration is complete and your BlueSpice is ready to use!&lt;br /&gt;
&lt;br /&gt;
You can use your old credentials to login.&lt;br /&gt;
&lt;br /&gt;
==After the migration==&lt;br /&gt;
Please check and clean up your &amp;lt;code&amp;gt;MediaWiki:Common.js&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MediaWiki:Common.css&amp;lt;/code&amp;gt; pages, and inspect if you have any legacy script pieces and style rules that might incompatible with the BlueSpice interface. By default BlueSpice does not have working content in these two pages. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Questions?&#039;&#039;&#039; Seek help from the [https://community.bluespice.com BlueSpice help forum]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[en:{{FULLPAGENAME}}]]&lt;br /&gt;
[[de:Setup:Installationsanleitung/Migration_von_MediaWiki_auf_BlueSpice]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=User_blog:Hjing&amp;diff=11226</id>
		<title>User blog:Hjing</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=User_blog:Hjing&amp;diff=11226"/>
		<updated>2025-04-04T13:19:12Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Root blog page created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=10445</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=10445"/>
		<updated>2025-02-24T07:25:31Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Correct typo of certificate directory&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Migration from 4.4&lt;br /&gt;
|text=With BlueSpice 4.5 there were some important changes to the container portfolio:&lt;br /&gt;
# There are no &amp;quot;all-in-one&amp;quot; containers anymore. Neither for FREE, nor for PRO and FARM editions&lt;br /&gt;
# The &amp;quot;distributed-services&amp;quot; setup for PRO and FARM edition has completely been reworked&lt;br /&gt;
If you are upgrading from one of the above-mentioned setups, please refer to the [[{{FULLPAGENAME}}/Migration_4.4 to 4.5|migration guide]]&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
Since version 4.5, BlueSpice MediaWiki can be easily installed using a stack of Docker container images. Everything is build in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and ports in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port &amp;lt;code&amp;gt;88&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port &amp;lt;code&amp;gt;443&amp;lt;/code&amp;gt;) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Get the stack ===&lt;br /&gt;
Get &amp;quot;docker-compose&amp;quot; files from https://github.com/hallowelt/bluespice-deploy&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 wget https://github.com/hallowelt/bluespice-deploy/archive/refs/heads/main.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; unzip main.zip \&lt;br /&gt;
    &amp;amp;&amp;amp; cd bluespice-deploy-main/compose&lt;br /&gt;
&lt;br /&gt;
{{Textbox|boxtype=important|header=PRO and FARM editions|text=All services configurations for PRO and FARM edition are already included, but access to private &amp;lt;code&amp;gt;docker.bluespice.com&amp;lt;/code&amp;gt; is required to obtain the images.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
!Type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|bash-script&lt;br /&gt;
|false&lt;br /&gt;
|Wrapper for general start-up of needed containers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-prepare&amp;lt;/code&amp;gt;&lt;br /&gt;
|bash-script&lt;br /&gt;
|false&lt;br /&gt;
|Prepare Folder and Permissions before first start also registers the service at the operating system&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
|service-script&lt;br /&gt;
|false&lt;br /&gt;
|Proper handling of the containers on reboot&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|true&lt;br /&gt;
|Main application services/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Database and search/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|true&lt;br /&gt;
|PDF-Renderer/Cache/Formula/Diagram-Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false, but recommended&lt;br /&gt;
|Proxy Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Additional auto-renewal service for &amp;quot;Let&#039;s Encrypt&amp;quot; certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Additional proxy for Kerberos based authenication&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For convenience, the &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; script wraps the first four &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files by default. This includes the main wiki application and also required backend services, like a database, search and application cache. Additional services can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Step 2: Set up environment variables===&lt;br /&gt;
Create &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file according to existing or state-to-be installation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 DATADIR=/data/bluespice&lt;br /&gt;
 VERSION=4.5&lt;br /&gt;
 EDITION=pro&lt;br /&gt;
 BACKUP_HOUR=04&lt;br /&gt;
 &lt;br /&gt;
 WIKI_NAME=BlueSpice&lt;br /&gt;
 WIKI_LANG=en&lt;br /&gt;
 WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_HOST=wiki.company.local&lt;br /&gt;
 WIKI_PORT=443&lt;br /&gt;
 WIKI_PROTOCOL=https&lt;br /&gt;
 &lt;br /&gt;
 DB_USER=bluespice&lt;br /&gt;
 DB_PASS=...&lt;br /&gt;
 DB_HOST=database&lt;br /&gt;
 DB_NAME=bluespice&lt;br /&gt;
 DB_PREFIX=&lt;br /&gt;
 &lt;br /&gt;
 SMTP_HOST=mail.company.local&lt;br /&gt;
 SMTP_PORT=25&lt;br /&gt;
 SMTP_USER=...&lt;br /&gt;
 SMTP_PASS=...&lt;br /&gt;
 SMTP_ID_HOST=...&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=The example shows &amp;lt;code&amp;gt;EDITION=pro&amp;lt;/code&amp;gt;. Be aware that for &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; you need to be logged into &amp;lt;code&amp;gt;docker.bluespice.com&amp;lt;/code&amp;gt;.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Prepare data directories===&lt;br /&gt;
Run &amp;lt;code&amp;gt;bluespice-prepare&amp;lt;/code&amp;gt; script, helping you set up correct folder structure and permissions. Also installing a service for proper handling of the containers on reboots. Make sure to run this command with in a privileged user context (like &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt;), as it will set permissions on the newly created directories.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Start the stack ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/adminPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
=== Additional options ===&lt;br /&gt;
&lt;br /&gt;
==== SSL certificates ====&lt;br /&gt;
For using Let&#039;s Encrypt certificates just set variable &amp;lt;code&amp;gt;LETSENCRYPT&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;  in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${DATADIR}/proxy/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====Operating system level service====&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
 ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Custom wiki application configuration ====&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
==== Custom database and search ====&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
====Kerberos proxy====&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
====SAML authentication====&lt;br /&gt;
&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== OpenID Connect authentication ====&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=10218</id>
		<title>Setup:Installation Guide/Docker</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Setup:Installation_Guide/Docker&amp;diff=10218"/>
		<updated>2025-01-07T07:34:43Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Correct typo of command in /* Step 1: Get the stack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Migration from 4.4&lt;br /&gt;
|text=With BlueSpice 4.5 there were some important changes to the container portfolio:&lt;br /&gt;
# There are no &amp;quot;all-in-one&amp;quot; containers anymore. Neither for FREE, nor for PRO and FARM editions&lt;br /&gt;
# The &amp;quot;distributed-services&amp;quot; setup for PRO and FARM edition has completely been reworked&lt;br /&gt;
If you are upgrading from one of the above-mentioned setups, please refer to the [[{{FULLPAGENAME}}/Migration_4.4 to 4.5|migration guide]]&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
Since version 4.5, BlueSpice MediaWiki can be easily installed using a stack of Docker container images. Everything is build in a modular way to allow different types of setups.&lt;br /&gt;
&lt;br /&gt;
The most common cases are&lt;br /&gt;
# &amp;quot;All-in-one&amp;quot; (with and without Let&#039;s Encrypt)&lt;br /&gt;
# Custom database and search service&lt;br /&gt;
# Custom load balancer / proxy&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&amp;lt;drawio filename=&amp;quot;Setup:Installation_Guide_Docker-Achitecture&amp;quot; alt=&amp;quot;Diagram of BlueSpice Docker Stack Architecture&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
* Internal HTTP connections may use non-standard ports. Those are noted next to the respective services.&lt;br /&gt;
** HTTP (in-secure) is only used for internal communication within the virtual network the stack is operated in. All connections to the client use TLS.&lt;br /&gt;
* Proprietary ports (esp. for database connections) are noted next to the respective services.&lt;br /&gt;
* There may be additional services and port in use, based on the setup. Some examples:&lt;br /&gt;
** When using LDAP based authentication an LDAPS connection (port 636) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to the LDAP-Server&lt;br /&gt;
** When using Kerberos authentication, a connection (port 88) is used from the &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; containers to the Kerberos-Server&lt;br /&gt;
** When using DeepL or OpenAI services, a HTTPS connection (port 443) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; containers to to the respective service&lt;br /&gt;
** When using OpenIDConnect authentication, a HTTPS connection (port 443) is used from the &amp;lt;code&amp;gt;bluespice/wiki&amp;lt;/code&amp;gt; &amp;quot;task&amp;quot; container to to the authentication provider&lt;br /&gt;
** When using &amp;quot;Let&#039;s Encrypt&amp;quot; Certbot, a HTTPS connection (port 443) is used from the &amp;lt;code&amp;gt;acme-companion&amp;lt;/code&amp;gt; container to the &amp;quot;Let&#039;s Encrypt&amp;quot; service&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Get the stack ===&lt;br /&gt;
Get &amp;quot;docker-compose&amp;quot; files from https://bluespice.com/de/download/&lt;br /&gt;
 wget &amp;lt;nowiki&amp;gt;https://bluespice.com/filebase/docker-deployment-script&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
     &amp;amp;&amp;amp; unzip docker-deployment-script \&lt;br /&gt;
     &amp;amp;&amp;amp; cd bluespice-deploy-main/compose&lt;br /&gt;
&lt;br /&gt;
The directory contains the following files:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;width:350px;&amp;quot; |Filename&lt;br /&gt;
!Type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Comment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|bash-script&lt;br /&gt;
|false&lt;br /&gt;
|Wrapper for general start-up of needed containers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice-prepare&amp;lt;/code&amp;gt;&lt;br /&gt;
|bash-script&lt;br /&gt;
|false&lt;br /&gt;
|Prepare Folder and Permissions before first start also registers the service at the operating system&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
|service-script&lt;br /&gt;
|false&lt;br /&gt;
|Proper handling of the containers on reboot&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.main.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|true&lt;br /&gt;
|Main application services/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Database and search/ run by &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.stateless-services.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|true&lt;br /&gt;
|PDF-Renderer/Cache/Formula/Diagram-Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false, but recommended&lt;br /&gt;
|Proxy Service&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Additional auto-renewal service for &amp;quot;Let&#039;s Encrypt&amp;quot; certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:350px;&amp;quot; |&amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
|yml&lt;br /&gt;
|false&lt;br /&gt;
|Additional proxy for Kerberos based authenication&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For convenience, the &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; script wraps the first four &amp;lt;code&amp;gt;yml&amp;lt;/code&amp;gt; files by default. This includes the main wiki application and also required backend services, like a database, search and application cache.&lt;br /&gt;
&lt;br /&gt;
Additional services can be loaded by adding &amp;lt;code&amp;gt;-f &amp;lt;filename&amp;gt; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
 bluespice-deploy \&lt;br /&gt;
     -f docker-compose.proxy-letsencrypt.yml \&lt;br /&gt;
     up -d&lt;br /&gt;
&lt;br /&gt;
This will start the stack with &amp;quot;Let&#039;s Encrypt&amp;quot; certificates. For details, please refer to section [[#SSL certificates| SSL certificates]].&lt;br /&gt;
&lt;br /&gt;
===Step 2: Set up environment variables===&lt;br /&gt;
Create &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file according to existing or state-to-be installation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 DATADIR=/data/bluespice&lt;br /&gt;
 VERSION=4.5&lt;br /&gt;
 EDITION=pro&lt;br /&gt;
 BACKUP_HOUR=04&lt;br /&gt;
 &lt;br /&gt;
 WIKI_NAME=BlueSpice&lt;br /&gt;
 WIKI_LANG=en&lt;br /&gt;
 WIKI_PASSWORDSENDER=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_EMERGENCYCONTACT=no-reply@wiki.company.local&lt;br /&gt;
 WIKI_HOST=wiki.company.local&lt;br /&gt;
 WIKI_PORT=443&lt;br /&gt;
 WIKI_PROTOCOL=https&lt;br /&gt;
 &lt;br /&gt;
 DB_USER=bluespice&lt;br /&gt;
 DB_PASS=...&lt;br /&gt;
 DB_HOST=database&lt;br /&gt;
 DB_NAME=bluespice&lt;br /&gt;
 DB_PREFIX=&lt;br /&gt;
 &lt;br /&gt;
 SMTP_HOST=mail.company.local&lt;br /&gt;
 SMTP_PORT=25&lt;br /&gt;
 SMTP_USER=...&lt;br /&gt;
 SMTP_PASS=...&lt;br /&gt;
 SMTP_ID_HOST=...&lt;br /&gt;
{{Textbox|boxtype=note|header=Different editions|text=The example shows &amp;lt;code&amp;gt;EDITION=pro&amp;lt;/code&amp;gt;. Be aware that for &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;farm&amp;lt;/code&amp;gt; you need to be logged into &amp;lt;code&amp;gt;docker.bluspice.com&amp;lt;/code&amp;gt;.|icon=yes}}&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Prepare data directories===&lt;br /&gt;
Run &amp;lt;code&amp;gt;bluespice-prepare&amp;lt;/code&amp;gt; script, helping you set up correct folder structure and permissions. Also installing a service for proper handling of the containers on reboots. Make sure to run this command with in a privileged user context (like &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt;), as it will set permissions on the newly created directories.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Start the stack ===&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=important&lt;br /&gt;
|header=Initial installation&lt;br /&gt;
|text=When starting the stack the first time, the &amp;lt;code&amp;gt;wiki-task&amp;lt;/code&amp;gt; container will automatically perform the installation. It may take a couple of minutes for the process to set up the database and complete. Once it is finished, the password for the default &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; user can be found in &amp;lt;code&amp;gt;$DATADIR/wiki/adminPasssword&amp;lt;/code&amp;gt;.&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
Use &amp;lt;code&amp;gt;bluespice-deploy up -d&amp;lt;/code&amp;gt; to start the stack, once the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file and the &amp;quot;data directories&amp;quot; are ready. Once all containers are shown as &amp;quot;ready&amp;quot; you can navigate to &amp;lt;code&amp;gt;$WIKI_PROTOCOL://$WIKI_HOST:$WIKI_PORT&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.company.local&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) in your favorite web browser and start using the application.&lt;br /&gt;
&lt;br /&gt;
=== Additional options ===&lt;br /&gt;
&lt;br /&gt;
==== SSL certificates ====&lt;br /&gt;
For using Let&#039;s Encrypt certificates just add &amp;lt;code&amp;gt;docker-compose.proxy-letsencrypt.yml&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Self-signed certificates&lt;br /&gt;
|text=For using self-signend Certificates please put &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.crt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;bluespice-wiki.com&amp;gt;.key&amp;lt;/code&amp;gt; with the exact name of your Wikis URL in &amp;lt;code&amp;gt;${VOLUMES_DIR}/nginx/certs&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====Operating system level service====&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Adding additional services&lt;br /&gt;
|text=expand the &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; parameter in the &amp;lt;code&amp;gt;/etc/systemd/system/bluespice.service&amp;lt;/code&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
 ExecStart=&amp;lt;WORKDIR&amp;gt;/bluespice-deploy -f docker-compose.proxy-letsencrypt.yml up -f -d --remove-orphans&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Custom wiki application configuration ====&lt;br /&gt;
After the initial installation, the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/&amp;lt;/code&amp;gt; contains two files that can be used to set custom application configuration as it may be found on [https://www.mediawiki.org mediawiki.org]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pre-init-settings.php&amp;lt;/code&amp;gt;  - Can be used to set config that can be picked up by  the init process&lt;br /&gt;
* &amp;lt;code&amp;gt;post-init-settings.php&amp;lt;/code&amp;gt; - Can be used to manipulate configs that have been set by the init process&lt;br /&gt;
&lt;br /&gt;
==== Custom database and search ====&lt;br /&gt;
If you have a MySQL/MariaDB and an OpenSearch server running in your local network, you can remove &amp;lt;code&amp;gt;docker-compose.persistent-data-services.yml&amp;lt;/code&amp;gt; entirely from your &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt;  file. Make sure to set the proper variables in the &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
====Kerberos proxy====&lt;br /&gt;
For implicit authenticationusing Kerberos, an additional proxy must be used: &amp;lt;code&amp;gt;bluespice/kerberos-proxy&amp;lt;/code&amp;gt; . The file &amp;lt;code&amp;gt;docker-compose.kerberos-proxy.yml&amp;lt;/code&amp;gt; contains a common configuration. It can be used &#039;&#039;&#039;instead of&#039;&#039;&#039; the regular &amp;lt;code&amp;gt;docker-compose.proxy.yml&amp;lt;/code&amp;gt; file inside &amp;lt;code&amp;gt;bluespice-deploy&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Make sure to have the files&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/krb5.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;${DATADIR}/kerberos/kerberos.keytab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set up properly.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/pre-init-settings.php&amp;lt;/code&amp;gt; can then be used to set up [[mediawikiwiki:LDAP_hub|&amp;quot;Extension:Auth_remoteuser&amp;quot; and the LDAP stack extensions]].&lt;br /&gt;
&lt;br /&gt;
====SAML authentication====&lt;br /&gt;
&lt;br /&gt;
During the initial installation a certificate for message signing will automatically be created. It can be found in &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/certs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to configure a remote IdP, one must copy the IdP metadata XML to a file called &amp;lt;code&amp;gt;${DATADIR}/wiki/simplesamlphp/saml_idp_metadata.xml&amp;lt;/code&amp;gt;. The SP metadata can then be obtained via &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/saml/sp/metadata.php/default-sp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. It must be configured in the remote IdP.&lt;br /&gt;
&lt;br /&gt;
{{Textbox&lt;br /&gt;
|boxtype=tip&lt;br /&gt;
|header=Test authentication&lt;br /&gt;
|text= You can test authentication directly within the SimpleSAMLphp application. To do so, navigate to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://{{$WIKI_HOST}}/_sp/module.php/admin&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and log in with &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;INTERNAL_SIMPLESAMLPHP_ADMIN_PASS&amp;lt;/code&amp;gt; found in &amp;lt;code&amp;gt;${DATADIR}/wiki/.wikienv&amp;lt;/code&amp;gt;&lt;br /&gt;
|icon=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Next, the extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;SimpleSAMLphp&amp;quot; must be enabled on the wiki. To do so, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;SimpleSAMLphp&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[File:Setup:SAML ConfigManager EN 01.png|thumb|300x300px]]to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== OpenID Connect authentication ====&lt;br /&gt;
&lt;br /&gt;
The extensions &amp;quot;PluggableAuth&amp;quot; and &amp;quot;OpenIDConnect&amp;quot; must be enabled on the wiki. To do so, add&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions( [&lt;br /&gt;
    &#039;PluggableAuth&#039;,&lt;br /&gt;
    &#039;OpenIDConnect&#039;&lt;br /&gt;
] );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;to the &amp;lt;code&amp;gt;${DATADIR}/wiki/bluespice/post-init-settings.php&amp;lt;/code&amp;gt;. Run&lt;br /&gt;
&lt;br /&gt;
 ./bluespice-deploy exec wiki-task /app/bluespice/w/maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
to complete the installation.&lt;br /&gt;
&lt;br /&gt;
After that, the authentication plugin configuration can be applied in [[Manual:Extension/BlueSpiceConfigManager|Special:BlueSpiceConfigManager]] under &amp;quot;Authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[de:Setup:Installationsanleitung/Docker]]&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Reference:NumberHeadings&amp;diff=10095</id>
		<title>Reference:NumberHeadings</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Reference:NumberHeadings&amp;diff=10095"/>
		<updated>2024-10-29T15:13:20Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BSExtensionInfo&lt;br /&gt;
|status=stable&lt;br /&gt;
|developer=HalloWelt&lt;br /&gt;
|type=MediaWiki&lt;br /&gt;
|edition=BlueSpice pro, BlueSpice farm, BlueSpice cloud&lt;br /&gt;
|compatible=MediaWiki&lt;br /&gt;
|category=Content Structuring&lt;br /&gt;
|bsvFrom=4.5&lt;br /&gt;
|features=This extension provides a configuration settings that shows the TOC numbers with each section heading&lt;br /&gt;
|desc=allows to edit text with ChatGPT.&lt;br /&gt;
BlueSpice can support users with an AI editing assistant. It allows to highlight text and have ChatPT make improvement suggestions based on pre-defined prompts. This feature requires a ChatGPT API-key to be activated.&lt;br /&gt;
}}&lt;br /&gt;
{{wcagCheck}}&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Reference:NumberHeadings&amp;diff=10094</id>
		<title>Reference:NumberHeadings</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Reference:NumberHeadings&amp;diff=10094"/>
		<updated>2024-10-29T14:35:56Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BSExtensionInfo&lt;br /&gt;
|status=stable&lt;br /&gt;
|developer=HalloWelt&lt;br /&gt;
|type=MediaWiki&lt;br /&gt;
|edition=BlueSpice pro, BlueSpice farm, BlueSpice cloud&lt;br /&gt;
|compatible=BlueSpice&lt;br /&gt;
|category=Content Structuring&lt;br /&gt;
|bsvFrom=4.5&lt;br /&gt;
|features=This extension provides a configuration settings that shows the TOC numbers with each section heading&lt;br /&gt;
|desc=allows to edit text with ChatGPT.&lt;br /&gt;
BlueSpice can support users with an AI editing assistant. It allows to highlight text and have ChatPT make improvement suggestions based on pre-defined prompts. This feature requires a ChatGPT API-key to be activated.&lt;br /&gt;
}}&lt;br /&gt;
{{wcagCheck}}&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Reference:NumberHeadings&amp;diff=10093</id>
		<title>Reference:NumberHeadings</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Reference:NumberHeadings&amp;diff=10093"/>
		<updated>2024-10-29T14:33:09Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BSExtensionInfo&lt;br /&gt;
|status=stable&lt;br /&gt;
|developer=HalloWelt&lt;br /&gt;
|type=MediaWiki&lt;br /&gt;
|edition=BlueSpice pro, BlueSpice farm, BlueSpice cloud&lt;br /&gt;
|compatible=BlueSpice&lt;br /&gt;
|category=Communication&lt;br /&gt;
|bsvFrom=4.5&lt;br /&gt;
|features=This extension provides a configuration settings that shows the TOC numbers with each section heading&lt;br /&gt;
|desc=allows to edit text with ChatGPT.&lt;br /&gt;
BlueSpice can support users with an AI editing assistant. It allows to highlight text and have ChatPT make improvement suggestions based on pre-defined prompts. This feature requires a ChatGPT API-key to be activated.&lt;br /&gt;
}}&lt;br /&gt;
{{wcagCheck}}&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Reference:NumberHeadings&amp;diff=10092</id>
		<title>Reference:NumberHeadings</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Reference:NumberHeadings&amp;diff=10092"/>
		<updated>2024-10-29T14:32:50Z</updated>

		<summary type="html">&lt;p&gt;Hjing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BSExtensionInfo&lt;br /&gt;
|status=stable&lt;br /&gt;
|developer=HalloWelt&lt;br /&gt;
|type=BlueSpice&lt;br /&gt;
|edition=BlueSpice pro, BlueSpice farm, BlueSpice cloud&lt;br /&gt;
|compatible=MediaWiki&lt;br /&gt;
|category=Communication&lt;br /&gt;
|bsvFrom=4.5&lt;br /&gt;
|features=This extension provides a configuration settings that shows the TOC numbers with each section heading&lt;br /&gt;
|desc=allows to edit text with ChatGPT.&lt;br /&gt;
BlueSpice can support users with an AI editing assistant. It allows to highlight text and have ChatPT make improvement suggestions based on pre-defined prompts. This feature requires a ChatGPT API-key to be activated.&lt;br /&gt;
}}&lt;br /&gt;
{{wcagCheck}}&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=Manual:Extension/ContentDroplets&amp;diff=10027</id>
		<title>Manual:Extension/ContentDroplets</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=Manual:Extension/ContentDroplets&amp;diff=10027"/>
		<updated>2024-09-06T10:19:17Z</updated>

		<summary type="html">&lt;p&gt;Hjing: Fixing link to Progress subpage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Content Droplets}}&lt;br /&gt;
{{BSVersion|bsvFrom=4.3.2|bsvFeature=ContentDroplets}}&lt;br /&gt;
{{TOClimit|limit=1}}&lt;br /&gt;
To insert additional functionality in a wiki page, you can use Content droplets. Content droplets include tags that were previously accessed from &#039;&#039;Insert &amp;gt; Magic word&#039;&#039; in the editor toolbar.  They also provide access to some templates that are preconfigured in the wiki, such as message boxes.&lt;br /&gt;
&lt;br /&gt;
== Adding a droplet to a page ==&lt;br /&gt;
To add a droplet to a page:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Click&#039;&#039;&#039; the Content droplets icon in the editor toolbar or type &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
#&#039;&#039;&#039;Search&#039;&#039;&#039; for a droplet name in the search bar of the droplets menu or browse the droplets by category.[[File:droplet menu.png|none|thumb|550x550px]]&lt;br /&gt;
#&#039;&#039;&#039;Select&#039;&#039;&#039; a droplet&lt;br /&gt;
#&#039;&#039;&#039;Click&#039;&#039;&#039; &#039;&#039;Insert&#039;&#039;.&lt;br /&gt;
{{Messagebox|boxtype=note|icon=|Note text=Some droplets open an inspector menu which contains another &#039;&#039;Insert&#039;&#039; button. Be sure to confirm that button as well.|bgcolor=}} &lt;br /&gt;
Based on the type of droplet, you can continue with configuring the droplet as needed.&lt;br /&gt;
&lt;br /&gt;
==List of droplets==&lt;br /&gt;
{{Icon|bi bi-arrow-right-circle|||}} [[Manual:Extension/ContentDroplets/Examples|View examples of droplets outputs.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;containerfilter selector=&amp;quot;.wikitable tr&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/containerfilter&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color:rgb(234, 236, 240);text-align:center;box-sizing:border-box;border:1px solid rgb(162, 169, 177);padding:8px;&amp;quot; class=&amp;quot;&amp;quot; |&#039;&#039;&#039;Droplet&#039;&#039;&#039;&lt;br /&gt;
! style=&amp;quot;background-color:rgb(234, 236, 240);text-align:center;box-sizing:border-box;border:1px solid rgb(162, 169, 177);padding:8px;&amp;quot; class=&amp;quot;&amp;quot; |&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
!Inserts the following in the page source:&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Attachments]] {{PopImg|file=attachments.png|alt=Screenshot of the attachments area|caption=Attachments output|width=600}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Area for organising attachments&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;attachments title=&amp;quot;Attachments area&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;* &amp;lt;nowiki&amp;gt;[[Media:Financial_Sample.xlsx]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/attachments&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Booklist&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |List of books based on a filter value. The value needs to be defined as a metadata value in the book settings&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:booklist filter=&amp;quot;Author:WikiSysop&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Book PDF link{{Bsvs|bsvFrom=4.4}}&lt;br /&gt;
|PDF-download link to a book&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{BookPDFLink|book=Testbook|template=BlueSpice%20Book|label=Book PDF Link}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Book table of contents{{PopImg|file=droplet-BookTOC.png|alt=First chapter of the book &amp;quot;Admin manual&amp;quot;|caption=Book table of contents|width=600}}{{Bsvs|bsvFrom=4.4}}&lt;br /&gt;
|Inserts the ToC of any book in a wiki page&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;booknav book=&amp;quot;Admin_manual&amp;quot; chapter=&amp;quot;1&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[mediawikiwiki:Extension:Cognitive_Process_Designer#Usage|BPMN diagram]] {{PopImg|file=Manual:bpmn-UserFeedback.svg|alt=Screenshot of a BPMN diagram|caption=BPMN diagram|width=600}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Editable BPMN diagram &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bpmn name=&amp;quot;Test:Erm31642&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Templates download/ButtonLink|Button]]{{PopImg|file=HW-ButtonLink.png|alt=Screenshot of three colored button links|caption=Links styled as buttons|width=400}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Link that is styled as a button&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ButtonLink|target=Main Page|label=click me!|format=blue}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[mediawikiwiki:Extension:CategoryTree|Categorytree]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Selected categories are shown in a tree structure&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;categorytree&amp;gt;TestCat&amp;lt;/categorytree&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceChecklist#Creating a checkbox|Checkbox]]{{Bsvs|bsvTo=4.3}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Checkbox that can be checked in view mode&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:checkbox checked=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceChecklist|Checklist]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |List that allows to set a value in view mode&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:checklist type=&amp;quot;list&amp;quot; checked=&amp;quot;true&amp;quot; list=&amp;quot;Template:Status&amp;quot; value=&amp;quot;Select status&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[wikipedia:Help:Displaying_a_formula#Chemistry|Chemical formula]]  {{PopImg|file=chem.png|alt=screenshot of the chemical formula|caption=Chemical formula|width=300}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Display of chemical formulas&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;chem&amp;gt;H2O&amp;lt;/chem&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Circled number&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Number in a circle with customizable color &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{CircledNumber|bgColor=black|fgColor=yellow|number=180}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Reference:SyntaxHighlight|Code]]{{PopImg|file=syntaxhighlight.png|alt=Screenshot of a code area with css syntax|caption=Code area for a css example}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Highlighted section for code examples&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;css&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;.hi {background:blue;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:190px;&amp;quot; |[[Manual:Extension/InputBox|Create page]]&lt;br /&gt;
| style=&amp;quot;width:380px;&amp;quot; |Form field for predefined page creation&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{CreateInput|alignment=left|buttonlabel=Create}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[SMW queries#Content droplet .22Data query.22 v4.3.2B|Data query]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Enables queries on content in the wiki&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;dataquery modified=&amp;quot;+&amp;quot; format=&amp;quot;ul&amp;quot; count=&amp;quot;6&amp;quot; namespaces=&amp;quot;Main&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Date{{Bsvs|bsvFrom=4.4}}{{PopImg|file=ContentDroplets date.png|alt=Screenshot of a date|caption=Date display}}&lt;br /&gt;
|Inserts a date. This can be used in combination with the content droplet &#039;&#039;Task list&#039;&#039;&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;datetime&amp;gt;2023-11-23&amp;lt;/datetime&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/ContentDroplets#Decision|Decision]]{{PopImg|file=droplet decision.png|alt=Example of a decision|caption=Decision output|width=600}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Highlights a decision as a page property&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Decision|decision=Eat more veggies}}{{Decision|decision=Buy new car}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Decision  overview{{PopImg|file=ContentDroplets Decision report.png|alt=Decision report table|caption=Decision report output|width=600}}{{Bsvs|bsvTo=|bsvFrom=4.4}}&lt;br /&gt;
|Table with a list of decisions that were created by the &#039;&#039;Decision&#039;&#039; content droplet&amp;lt;br /&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;decisionoverview namespaces=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/decisionoverview&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/DrawioEditor|Diagram]] {{PopImg|file=BlueSpice_system_architecture_high_level.drawio.png|alt=Example of a server structure diagram|caption=Drawio diagram|width=600}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Editable draw.io diagram &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;drawio filename=&amp;quot;Mydiagram&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[mediawikiwiki:Help:Images#Gallery_syntax|Gallery]]{{PopImg|file=droplet gallery.png|alt=Example of a gallery with three fish|caption=Gallery|width=}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; | Displays an image gallery&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;gallery&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;File:test1.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;File:test.pdf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/gallery&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/ContentDroplets/Icon|Icon]]{{PopImg|file=icon.png|alt=Example of a bootstrap icon|caption=Icons template}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Inserts an icon&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Icon|bi bi-arrow-left-circle}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Templates download/Messagebox|Important Message]]{{PopImg|file=message-important.png|alt=Screenshot of important message|caption=Message of type &amp;quot;important&amp;quot;}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Adds colored panel for a important note&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Textbox|boxtype=important|header=OMG|text=Important|icon=yes}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceSmartList|Links to this page]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |List of pages that link to this page&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;whatlinkshere period=&amp;quot;-&amp;quot; sort=&amp;quot;time&amp;quot; showns=&amp;quot;0&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Reference:BlueSpiceWhoIsOnline|List of users logged in]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Pop-up with a list of all users that are currently logged in&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:whoisonlinepopup /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/Maps|Map]]{{PopImg|file=map.png|alt=Screenshot of the map output|caption=Map output with text marker}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Locations can be marked on the map&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Map|Munich ~ Hello there!|Munich, Germany}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[mediawikiwiki:Help:VisualEditor/User_guide#Editing_mathematical_formulae|Mathematical formula]]{{PopImg|file=math.png|alt=Math formula|caption=Screenshot of a math formula}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Display of mathematical formulas&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;math&amp;gt;\tfrac{2}{4}&amp;lt;/math&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:190px;&amp;quot; |Member list&lt;br /&gt;
|List of members of a wiki group&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:userlist groups=&amp;quot;sysop&amp;quot; count=&amp;quot;6&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:rgb(248, 249, 250);text-align:start;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;color:rgb(32, 33, 34);font-family:Lato, &amp;amp;quot;sans-serif&amp;amp;quot;;font-size:13.9995px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;&amp;quot; class=&amp;quot;&amp;quot; |[[Templates download/Messagebox|Message]]{{PopImg|file=message.png|alt=Screenshot of a plain message|caption=A plain message}}&lt;br /&gt;
| style=&amp;quot;background-color:rgb(248, 249, 250);text-align:start;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;color:rgb(32, 33, 34);font-family:Lato, &amp;amp;quot;sans-serif&amp;amp;quot;;font-size:13.9995px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;&amp;quot; class=&amp;quot;&amp;quot; |Adds text panel &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Textbox|boxtype=neutral|header=|text=SDadad|icon=no}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/ContentDroplets#Modal button|Modal button]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Configurable button which opens a customizable modal dialogue&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ModalDialog|title=I am a dialog|btnLabel=click me!|body=This is the text|footer=hello world}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceSmartList#Toplist|Most visited pages]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |List of the most visited wiki pages&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:toplist count=&amp;quot;3&amp;quot; period=&amp;quot;-&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceSmartList|New users]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; | List of new users in the wiki&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:newbies count=&amp;quot;4&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Templates download/Messagebox|Note Message]] {{PopImg|file=message-note.png|alt=Screenshot of a note message|caption=Message of type &amp;quot;Note&amp;quot;}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; | Adds colored panel for a note&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Textbox|boxtype=note|header=|text=sfsadfasfdsdaf|icon=yes}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceCountThings|Number of characters]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Shows the number of characters or words in a wiki page&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:countcharacters /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceCountThings|Number of files]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Shows the number of all uploaded files&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:countfiles /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceCountThings|Number of  pages]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Shows the number of  pages&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:countarticles /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceCountThings|Number of users]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; | Shows the number of all users&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:countusers /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Reference:BlueSpiceWhoIsOnline|Number of users logged in]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Number of currently logged in users&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:whoisonlinecount /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Reference:BlueSpicePageAccess|Page access]]{{PopImg|file=pageaccess.png|alt=Screenshot of the page access notification banner|caption=Page access notification banner}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Restricts access to the page to the specified groups&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:pageaccess groups=&amp;quot;sysop&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |PDF link&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Link that downloads another wiki page as PDF&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{PDFLink|page=Main Page|template=BlueSpice|label=PDF Link}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |PDF page break&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Forces a page break at the set position during PDF export&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:uepagebreak /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[Manual:Extension/ContentDroplets#PDF preview|PDF preview]]&lt;br /&gt;
|Embed preview of a PDF file&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;pdf height=&amp;quot;800&amp;quot;&amp;gt;File:Raspberry_pi.pdf&amp;lt;/pdf&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceUniversalExport#Exclude content from PDF export|PDF no export]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Content within this section is excluded from the  PDF export&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:uenoexport&amp;gt;Don&#039;t export this text&amp;lt;/bs:uenoexport&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/ContentDroplets/Progress|Progress]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Visualizes progress against given measurement variables&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:statistics:progress basecount=&amp;quot;2&amp;quot; progressitem=&amp;quot;OK&amp;quot; width=&amp;quot;150&amp;quot; baseitem=&amp;quot;Status:&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/ContentDroplets#Pros and cons|Pros and cons]]{{PopImg|file=pros and cons.png|alt=Screenshot of the pros and cons template|caption=Pros and cons}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Table for comparing pros and cons&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ProConList|title-advantages=Advantages|title-disadvantages=Disadvantages|advantages=* It is cheap|disadvantages=* It is sold out}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceSmartList|Recent changes]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |List of recently changed pages&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;recentchanges count=&amp;quot;6&amp;quot; period=&amp;quot;-&amp;quot; sort=&amp;quot;time&amp;quot; showns=&amp;quot;0&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceSignHere|Signature]]{{PopImg|file=signatures.png|alt=Screenshot of the signatures button with a signature already added|caption=Signatures button}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |A button to add signatures in view mode&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:signhere /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceTagSearch|Search field]] {{PopImg|file=Suchfeld standard.png|alt=Screenshot of a search field with suggested results|caption=Search field|width=}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Adds a search field to the page content&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:tagsearch type=&amp;quot;wikipage&amp;quot;  namespace=&amp;quot;QM&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Reference:SubPageList|Subpages]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |List of the subpages of a wiki page&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Subpages|parentpage=Mypage}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Templates download/Messagebox|Success Message]] {{PopImg|file=message-success.png|alt=Screenshot of a success message|caption=Message of type &amp;quot;success&amp;quot;}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Adds colored panel for a success note&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Textbox|boxtype=success|header=Example|text=Message text|icon=yes}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceTagCloud|Tag cloud]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Tag cloud based on categories or search queries&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:tagcloud renderer=&amp;quot;list&amp;quot; store=&amp;quot;category&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Task list{{PopImg|file=droplet-task-item.png|alt=Checkbox with label|caption=Task list output}}{{Bsvs|bsvFrom=4.4}}&lt;br /&gt;
|Adds a checklist item&lt;br /&gt;
|[] &lt;br /&gt;
&lt;br /&gt;
[] Checkbox text &lt;br /&gt;
[]  (2)&lt;br /&gt;
|-&lt;br /&gt;
|Task report {{PopImg|file=Content_Droplets_Task_report.png|alt=Filterable task report with 4 entries|caption=Task report}}{{Bsvs|bsvFrom=4.4}}&lt;br /&gt;
|Filterable list of existing tasks &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;taskreport user=&amp;quot;&amp;quot; namespaces=&amp;quot;&amp;quot; status=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/taskreport&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Templates download/Messagebox|Tip Message]]{{PopImg|file=message-tip.png|alt=Screenshot of a tip message|caption=Message of type &amp;quot;tip&amp;quot;}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Adds colored panel for a tip&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Textbox|boxtype=tip|header=Tip|text=sfsadf|icon=yes}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpiceAvatars#Using the .3Cprofileimage.3E tag|User profile]] {{PopImg|file=userprofile.png|alt=Screenshot of the user profile|caption=User profile of type &amp;quot;Short&amp;quot;|width=300}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |A user profile will be included on this page&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:socialentityprofile username=&amp;quot;WikiSysop&amp;quot; rendertype=&amp;quot;Short&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/EmbedVideo|Video]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Embeds video from different external platforms (YouTube)&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;embedvideo service=&amp;quot;youtube&amp;quot;&amp;gt;JILEkPu61Ao&amp;lt;/embedvideo&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/BlueSpicePagesVisited|Visited pages]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |List with visited pages&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:pagesvisited count=&amp;quot;7&amp;quot; maxtitlelength=&amp;quot;40&amp;quot; order=&amp;quot;time&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Templates download/Messagebox|Warning Message]]{{PopImg|file=message-warning.png|alt=Screenshot of a warning message|caption=Message of type &amp;quot;warning&amp;quot;}}&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Adds a colored box for a warning note&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Textbox|boxtype=warning|header=Hello|text=|icon=yes}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |[[Manual:Extension/ContentDroplets#Watchlist|Watchlist]]&lt;br /&gt;
| style=&amp;quot;box-sizing:border-box;border:1px solid rgb(162, 169, 177);break-inside:avoid;padding:8px;&amp;quot; |Latest changes to pages included in your watch list&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bs:watchlist count=&amp;quot;5&amp;quot; maxtitlelength=&amp;quot;20&amp;quot; order=&amp;quot;time&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More info==&lt;br /&gt;
{{#subpages:Manual:Extension/ContentDroplets}}&lt;br /&gt;
{{translation}}&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
	<entry>
		<id>https://en.wiki.bluespice.com/w/index.php?title=User:Hjing&amp;diff=10025</id>
		<title>User:Hjing</title>
		<link rel="alternate" type="text/html" href="https://en.wiki.bluespice.com/w/index.php?title=User:Hjing&amp;diff=10025"/>
		<updated>2024-09-06T07:58:54Z</updated>

		<summary type="html">&lt;p&gt;Hjing: create user page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Userpage standard content}}&lt;/div&gt;</summary>
		<author><name>Hjing</name></author>
	</entry>
</feed>