XWiki ist eine leistungsstarke, Open Source Wiki-Software, entwickelt in Java. Das besondere Merkmal ist, dass das DesignErweiterbarkeit ausgelegt wurde. Auch wenn es als Enterprise Wiki gilt, kann dieses bei euch ohne Probleme installiert werden. In dieser Anleitung zeige ich euch, wie ihr xWiki für Docker und Traefik installieren könnt.
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
2. Ordner anlegen
Wir legen einen Ordner in der vorhandenen Struktur an:
mkdir -p /opt/containers/xwiki
3. Docker Compose anlegen
Wir erstellen das Docker File:
nano /opt/containers/xwiki/docker-compose.yml
und fügen folgenden Inhalt ein:
version: '3.4' services: xwiki: image: xwiki:lts-mysql-tomcat container_name: xwiki depends_on: - db networks: - proxy - default environment: - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} - DB_DATABASE=${DB_NAME} - DB_HOST=db restart: unless-stopped volumes: - xwiki-data:/usr/local/xwiki labels: - "traefik.enable=true" - "traefik.http.routers.xwiki.entrypoints=websecure" - "traefik.http.routers.xwiki.rule=(Host(`xwiki.DEINE-Domain.de`))" - "traefik.http.routers.xwiki.tls=true" - "traefik.http.routers.xwiki.tls.certresolver=http_resolver" - "traefik.http.routers.xwiki.service=xwiki" - "traefik.http.services.xwiki.loadbalancer.server.port=8080" - "traefik.docker.network=proxy" - "traefik.http.routers.xwiki.middlewares=default@file" db: image: mysql:5.7 container_name: db restart: always command: --character-set-server=utf8 --collation-server=utf8_bin --explicit-defaults-for-timestamp=1 volumes: - xwiki-db:/var/lib/mysql healthcheck: test: mysqladmin status -h 127.0.0.1 -u $$MYSQL_USER --password=$$MYSQL_PASSWORD start_period: 5s interval: 5s timeout: 5s retries: 55 environment: - MYSQL_RANDOM_ROOT_PASSWORD=1 - MYSQL_USER=${DB_USER} - MYSQL_PASSWORD=${DB_PASSWORD} - MYSQL_DATABASE=${DB_NAME} networks: - default volumes: xwiki-data: name: xwiki-data xwiki-db: name: xwiki-db networks: proxy: external: true
Noch anzupassen:
- URL anpassen! – xwiki.DEINE-Domain.de
3.1 Docker .env File anlegen
Wir erstellen das .env File um die Variablen zu definieren:
nano /opt/containers/xwiki/.env
Und fügen folgenden Inhalt ein:
COMPOSE_PROJECT_NAME=xwiki # Database connection details DB_USER="xwiki" DB_PASSWORD="PASSWORT ANPASSEN!" DB_NAME="xwiki"
Und ändert das Datenbank Passwort unter DB_PASSWORD
4. xWiki starten
Die xWiki-Instanz könnt ihr mit folgendem Befehl starten:
docker compose -f /opt/containers/xwiki/docker-compose.yml up -d
5. xWiki einrichten
Der erste Start dauert etwas – je nach System. Das xWiki ist nun erreichbar unter eurer gewählten Domain. Ein Einrichtungsassistent hilft euch bei der Installation.
Startet den Assistenten mit Continue.
5.1. Hinweise zum Wizzard:
Da der Einrichtungsprozess nicht gänzlich intuitiv ist, folgen noch ein paar Hinweise zu diesem.
Nach der Eingabe des Admin-User geht es mit Continue weiter.
5.2. Flavor- und Abschluss der Installation
Sollte es im nächsten Schritt keinen Flavor zur Auswahl geben, müsst ihr in der Suche “Standard” eingeben.
Es scheint einen Anzeigefehler zu geben.
Dieser Standard Flavor wird benötigt, um die Setting- und Admin-Inhalte des Wiki zu installieren. Ohne müssen diese erst manuell heruntergeladen und installiert werden.
Nachdem ihr auf “Install this Flavor” geklickt habt, müsst ihr im nächsten Schritt nochmal auf “Install” klicken. Die Installation wird dann gestartet. Danach muss mit “Continue” der weitere Prozess bestätigt werden.
Nachdem alles installiert wurde, könnt ihr den Flavor-Installationsprozess mit erneutem “Continue” abschließen.
Im Anschluss erfolgt eine Ansicht, welche Seiten gerade vorhanden sind. Dies kann ebenfalls mit “Continue” abgeschlossen werden.
Es folgt eine kurze Tour über eure neue xWiki Installation und euer xWiki ist betriebsbereit!
Ich hoffe ihr könnt diese Anleitung, und mein Debut hier, nachvollziehen und wünsche euch
Viel Erfolg!
Hat schon mal jemand ein sub-wiki angelegt? Wenn ja wie geht das – Ich habe schon ewig rumprobiert.
Bei mir hat die Installation nicht funktioniert. Ich habe bei Aufrufen der Seite folgenden Text:
XWiki initialization failed!
Unexpected character ‘^’ (code 94); expected a semi-colon after the reference for entity ‘L6U’ at [row,col {unknown-source}]: [90,47] class com.xpn.xwiki.XWikiException: Error number 0 in 3: Failed to initialize storesat com.xpn.xwiki.XWiki.initXWiki(XWiki.java:1332)at com.xpn.xwiki.XWiki.initXWiki(XWiki.java:1291)at com.xpn.xwiki.XWiki.<init>(XWiki.java:1264)at com.xpn.xwiki.internal.XWikiInitializerJob.runInternal(XWikiInitializerJob.java:103)at org.xwiki.job.AbstractJob.runInContext(AbstractJob.java:246)at org.xwiki.job.AbstractJob.run(AbstractJob.java:223)at java.base/java.lang.Thread.run(Unknown Source)Caused by: class org.xwiki.component.manager.ComponentLookupException: Failed to lookup component [com.xpn.xwiki.store.XWikiHibernateStore] identified by type [interface com.xpn.xwiki.store.XWikiStoreInterface] and hint [hibernate]at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:332)at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:320)at com.xpn.xwiki.internal.store.StoreConfiguration.getStore(StoreConfiguration.java:80)at com.xpn.xwiki.internal.store.StoreConfiguration.getStore(StoreConfiguration.java:67)at com.xpn.xwiki.internal.store.StoreConfiguration.getXWikiStore(StoreConfiguration.java:106)at com.xpn.xwiki.XWiki.initializeStores(XWiki.java:1386)at com.xpn.xwiki.XWiki.initXWiki(XWiki.java:1330)at com.xpn.xwiki.XWiki.initXWiki(XWiki.java:1291)at com.xpn.xwiki.XWiki.<init>(XWiki.java:1264)at com.xpn.xwiki.internal.XWikiInitializerJob.runInternal(XWikiInitializerJob.java:103)at org.xwiki.job.AbstractJob.runInContext(AbstractJob.java:246)at org.xwiki.job.AbstractJob.run(AbstractJob.java:223)at java.base/java.lang.Thread.run(Unknown Source)Caused by: class org.xwiki.component.manager.ComponentLookupException: Failed to lookup component [org.xwiki.query.internal.DefaultQueryManager] identified by type [interface org.xwiki.query.QueryManager] and hint [default]at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:332)at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:320)at org.xwiki.component.embed.EmbeddableComponentManager.getDependencyInstance(EmbeddableComponentManager.java:591)at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:540)at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:636)at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:329)at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:320)at com.xpn.xwiki.internal.store.StoreConfiguration.getStore(StoreConfiguration.java:80)at com.xpn.xwiki.internal.store.StoreConfiguration.getStore(StoreConfiguration.java:67)at com.xpn.xwiki.internal.store.StoreConfiguration.getXWikiStore(StoreConfiguration.java:106)at com.xpn.xwiki.XWiki.initializeStores(XWiki.java:1386)at com.xpn.xwiki.XWiki.initXWiki(XWiki.java:1330)at com.xpn.xwiki.XWiki.initXWiki(XWiki.java:1291)at com.xpn.xwiki.XWiki.<init>(XWiki.java:1264)at com.xpn.xwiki.internal.XWikiInitializerJob.runInternal(XWikiInitializerJob.java:103)at org.xwiki.job.AbstractJob.runInContext(AbstractJob.java:246)at org.xwiki.job.AbstractJob.run(AbstractJob.java:223)at java.base/java.lang.Thread.run(Unknown Source)Caused by: class org.xwiki.component.manager.ComponentLookupException: Failed to lookup component [org.xwiki.query.internal.DefaultQueryExecutorManager] identified by type [interface org.xwiki.query.QueryExecutorManager] and hint [default]at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:332)at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:320)at org.xwiki.component.embed.EmbeddableComponentManager.getDependencyInstance(EmbeddableComponentManager.java:591)at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:540)at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:636)at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:329)at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:320)at org.xwiki.component.embed.EmbeddableComponentManager.getDependencyInstance(EmbeddableComponentManager.java:591)at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:540)at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:636)at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:329)at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:320)at com.xpn.xwiki.internal.store.StoreConfiguration.getStore(StoreConfiguration.java:80)at com.xpn.xwiki.internal.store.StoreConfiguration.getStore(StoreConfiguration.java:67)at com.xpn.xwiki.internal.store.StoreConfiguration.getXWikiStore(StoreConfiguration.java:106)at com.xpn.xwiki.XWiki.initializeStores(XWiki.java:1386)at com.xpn.xwiki.XWiki.initXWiki(XWiki.java:1330)at com.xpn.xwiki.XWiki.initXWiki(XWiki.java:1291)at com.xpn.xwiki.XWiki.<init>(XWiki.java:1264)
usw. Das geht ewig so weiter.
Ich habe dann docker-compose up (ohne -d) gestartet und habe folgende Meldung bekommen
db | 2024-03-20T19:17:03.173807Z 7 [Note] Access denied for user ‘xwiki’@’127.0.0.1’ (using password: YES)
Das Passwort für den User ist 12345, in der .env eingetragen.
Jemand eine Idee was ich das falsch mache?
Hi – Danke für die Anleitung – ging echt super schnell.
Jetzt will ich innerhalb des Wikis ein SubWiki anlegen und habe die Rechte nicht. Um diese zuzuweisen, brauche ich jetzt das zufällig erzeugte root passwort des mySQL-Containers, damit ich dem User die Tabellen/Datenbank Create Rechte zuweisen kann.
Vielen Dank für deine Anleitung 😀