Mit Docker-Installer#

Dieses Kapitel enthält eine Schritt-für-Schritt-Beschreibung des Installationsprozesses für Allegra in einem Docker-Container mit einer PostgreSQL-Datenbank.

Vorbereitung#

Hardware-Anforderungen#

Stellen Sie sicher, dass die Voraussetzungen hinsichtlich der Laufzeitumgebung erfüllt sind.

Docker-Installation prüfen#

Stellen Sie sicher, dass Docker auf Ihrem Server installiert ist und der Docker-Daemon läuft.

/home/ubuntu$ docker ps --all

Hinweis

Möglicherweise müssen Sie sich als Superuser über sudo su anmelden anmelden oder den Befehl sudo für die restlichen hier beschriebenen Schritte nutzen.

Überblick über den Installationsprozess#

Der Installationsvorgang umfasst die folgenden Schritte:

  1. Erstellen Sie ein Arbeitsverzeichnis

  2. Laden Sie das Allegra Docker Installationspaket herunter

  3. Entpacken Sie Ihr Installationspaket

  4. Konfigurieren Sie Ihre Installation über die Konfigurationsdatei .env im Arbeitsverzeichnis

  5. Starten Sie die Installation mit dem Docker-Befehl compose.

Allegra Docker-Installationsprozess#

Schritt 1: Arbeitsverzeichnis erstellen#

Erstellen Sie ein Verzeichnis, das die Konfigurationsdaten, Indizes und Anhänge für Ihre Allegra-Instanz enthält. Es sollte zwischen 1 und 10 GByte Speicherplatz zur Verfügung stehen, je nach Nutzungsgrad und Anzahl der Benutzer. Stellen Sie sicher, dass das Arbeitsverzeichnis beschreibbar ist.

Im Folgenden werden wir dieses Verzeichnis $ALLEGRA_HOME nennen.

Schritt 2: Allegra Docker Composer-Paket herunterladen#

Laden Sie das Allegra Docker Composer-Paket von der Allegra Download-Seite und speichern Sie es in einem leeren Verzeichnis.

mkdir $HOME/allegra
cd $HOME/allegra
export WORKDIR="$HOME/allegra"
wget https://alltena.com/downloads/latest-dist/core/allegra-docker-latest.tar -O allegra-docker.tar

Schritt 3: Entpacken des Allegra-Docker-Pakets#

Entpacken Sie die Datei:

tar -xvf allegra-docker.tar
ls -al

Sie sollten unter anderem sehen:

  • eine Datei env

  • eine Docker-Kompositionsdatei docker-compose.yml

Schritt 4: Allegra Docker Composer-Konfiguration#

Sie konfigurieren Ihre Installation über die versteckte Konfigurationsdatei .env im Arbeitsverzeichnis. Dazu verschieben Sie die Datei env nach .env:

mv env .env

Die Konfigurationsdatei sieht zum Beispiel so aus:

CONTEXT=demo
ALLEGRA_HOME=/tmp/allegra
HTTP_PORT=8082
JAVA_OPTS=-Djava.awt.headless=true -Xmx1024m -Xms512m

Schritt 4.1 Allegra Arbeitsverzeichnis konfigurieren#

Öffnen Sie die Konfigurationsdatei .env und passen Sie die Variable ALLEGRA_HOME an Ihre Umgebung an. Stellen Sie sicher, dass das Arbeitsverzeichnis $ALLEGRA_HOME existiert und beschreibbar ist (siehe Schritt 1). Die endgültige Konfigurationsdatei könnte zum Beispiel so aussehen:

CONTEXT=allegra
ALLEGRA_HOME=/home/ubuntu/allegra
HTTP_PORT=80
JAVA_OPTS=-Djava.awt.headless=true -Xmx1024m -Xms512m

Schritt 4.2. HTTP-Port konfigurieren#

In der Datei .env setzen Sie die Variable HTTP_PORT auf den gewünschten Wert. Dies ist der Port unter dem unter dem Ihre Allegra-Instanz erreichbar sein wird.

Schritt 4.3. JAVA_OPTS konfigurieren#

In der Datei .env setzen Sie die Variable JAVA_OPTS auf den gewünschten Wert. Hier können Sie insbesondere den verfügbaren Hauptspeicher (Minimum: 512 MB) einstellen.

Schritt 5: System starten#

Speichern Sie die Konfigurationsdatei .env und starten Sie das System mit

docker compose up -d

Hintergrund#

Die Installation wird über die Docker Composer Datei namens docker-compose.yml gesteuert. Diese Datei sieht wie folgt aus (die Versionsnummern können sich mit der Zeit ändern):

version: "3.9"
services:
    db:
        image: postgres:13-bullseye
        restart: always
        container_name: allegra-${CONTEXT}-db
        volumes:
            - ${ALLEGRA_HOME}/dbdata:/var/lib/postgresql/data
        environment:
            - POSTGRES_DB=allegra-${CONTEXT}
            - POSTGRES_USER=allegra
            - POSTGRES_PASSWORD=tissi189
        ports:
            - "8001:5432"
        healthcheck:
            test: ["CMD-SHELL", "pg_isready -U allegra -d allegra-${CONTEXT}"]
            interval: 10s
            timeout: 5s
            retries: 2
    allegra:
        image: allegrapm/core:7.2
        restart: always
        container_name: allegra-${CONTEXT}
        volumes:
            - ${ALLEGRA_HOME}:/home/allegra
        environment:
            JAVA_OPTS: ${JAVA_OPTS}
            CONTEXT: ${CONTEXT}
            DB_URL: jdbc:postgresql://db/allegra-${CONTEXT}
            DB_USER: allegra
            DB_PASSWD: tissi189
        ports:
            - "${HTTP_PORT}:8080"
            - "8089:8009"
        depends_on:
            db:
                condition: service_healthy

Allegra-Image-Umgebungsvariablen#

Das Allegra-Image verwendet mehrere Umgebungsvariablen, um eine Datenbankverbindung und einen Dateispeicherort für die Speicherung von Anhängen und Konfigurationsdateien bereitzustellen.

Hinweis

Die im folgenden beschriebenen Umgebungsvariablen beziehen sich auf das Allegra Image und haben keinen direkten Bezug zu den Eintragungen in der Datei .env für den Docker Composer. Ein Bezug wird wenn überhaupt erst über die Datei docker-compose.yml hergestellt.

CONTEXT#

Die Umgebungsvariable CONTEXT bestimmt die URL, unter der die Allegra-Instanz sichtbar sein wird. Die URL wird wie http://<yourmachine>:8080/$CONTEXT aussehen, vorausgesetzt Sie haben den Port 8080 des Containers auf 8080 außerhalb Ihres Containers abgebildet. Der Standardwert ist allegra.

DB_URL#

Dies definiert die JDBC-Treiber-URL, unter der Allegra die Datenbank finden kann. Diese Datenbank muss existieren, bevor Sie Allegra starten. Der durch DB_USER definierte Benutzer und das Passwort DB_PASSWD sollten alle Rechte auf diese Datenbank erhalten haben.

Hier sind einige DB_URL Beispiele:

  • PostgreSQL: jdbc:postgresql://yourdbserver/allegra

  • MySQL: jdbc:mysql://localhost:3306/allegra?useSSL=false&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC

  • Oracle: jdbc:oracle:thin:@80.96.67.62:1521:orcl

  • Microsoft SQLServer: jdbc:jtds:sqlserver://localhost/allegra

  • Firebird: jdbc:firebirdsql://localhost/home/allegra/dbase/ALLEGRA.GDB?charSet=UTF-8

  • DB2: jdbc:db2:ALLEGRA

DB_ADAPTER#

Um sich mit einer Datenbank zu verbinden, muss Allegra deren Typ kennen. Die folgenden Typen werden von diesem Image unterstützt:

  • postgresql

  • mysql

  • mssql

  • oracle (mit zusätzlicher Bibliothek)

  • firebird

  • db2app (mit zusätzlicher Bibliothek)

Hinweis

Oracle- und DB2-Datenbanken benötigen zusätzliche JDBC-Treiber, die aus lizenzrechtlichen Gründen nicht in diesem Image enthalten sind. Siehe Hinzufügen von JDBC-Treibern für weitere Informationen.

Das standardmäßig verwendete Datenbanksystem ist PostgreSQL.

DB_DRIVER#

Mit dieser Variable definieren Sie die zu verwendende JDBC-Treiberklasse. Sie hängt von der Art der Datenbank ab, die Sie verwenden wollen (DB_ADAPTER).

Die Voreinstellung ist org.postgresql.Driver für eine PostgreSQL Datenbank.

Andere Beispiele sind:

  • MySQL: org.gjt.mm.mysql.Driver

  • Oracle: oracle.jdbc.driver.OracleDriver

  • Microsoft SQLServer: net.sourceforge.jtds.jdbc.Driver

  • Firebird: org.firebirdsql.jdbc.FBDriver

  • DB2: com.ibm.db2.jdbc.app.DB2Driver

DB_USER#

DB_USER definiert den Benutzer, unter dem Allegra auf die Datenbank zugreift. Der Standardwert ist allegra.

DB_PASSWD#

DB_PASSWD definiert das Passwort für den Benutzer, unter dem Allegra auf die Datenbank zugreift.

Der Standardwert ist Tissi189.

JAVA_OPTS#

Die JAVA_OPTS werden an die virtuelle Maschine von Allegra/Tomcat weitergegeben. Hier können Sie den für Ihre Allegra-Instanz verfügbaren Speicher einstellen. Beispiel und Vorgabe:

-Djava.awt.headless=true -Xmx2048m -Xms512m -XX:MaxRAM=2500m -Duser.timezone=Europe/Berlin

Hinzufügen von JDBC-Treibern#

Wir empfehlen, zusätzliche JDBC-Treiber hinzuzufügen, indem Sie ein neues Docker Image zu erstellen, das auf dem Allegra Image basiert. Die Bibliotheken sollten in dem Verzeichnis /usr/local/tomcat/lib abgelegt werden.

Zur Sicherheit#

Wenn Sie den Allegra-Server produktiv betreiben möchten, sollten Sie ihn hinter einen nginx oder Apache Proxy-Server legen. So stellen Sie sicher, dass nur SSL-gesicherte Verbindungen genutzt werden und exponieren den Tomcat nicht im Internet.

Anleitungen dazu gibt es z.B. hier: