Zum Hauptinhalt springen

Installation und Einrichtung

In diesem Beispiel wird die Software auf einem dedizierten Rechner installiert, der als Server fungieren soll. Um die Software auf einem anderen Docker-Fähigen Host zu Installieren, springen Sie zu diesem Kapitel

Installieren des Betriebssystems

Wählen Sie Ihre Version

Ich verwende Ubuntu-Server 22.04.1 LTS, und diese Anleitung ist speziell für diese Version. Auf anderen Versionen kann es zu Abweichungen kommen.

Betriebssystem installieren

Ich gehe nicht im Detail darauf ein, wie Ubuntu auf einem Server installiert wird, aber hier eine kurze Zusammenfassung:

  1. Erstellen Sie einen Bootstick
  2. Starten Sie vom Bootstick
  3. Folgen Sie der Installationsanleitung des Betriebssystems.

Installieren von Docker und Docker-Compose

Folgen Sie einfach dieser Anleitung für Details, aber ich gebe Ihnen hier alle notwendigen Befehle an.

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt install docker-ce docker-compose

Nach der Installation können Sie überprüfen, ob Docker läuft:

sudo systemctl status docker

Falls Sie Docker ohne Root-Rechte verwenden möchten, fügen Sie Ihren Benutzer zur docker-Gruppe hinzu, die während der Installation erstellt wurde, und melden Sie sich dann ab und wieder an:

sudo usermod -aG docker ${USER}
su - ${USER}

Überprüfen Sie nun, ob Docker korrekt läuft, indem Sie den hello-world-Container ausführen:

docker run hello-world

Installieren des TiBoLi-Server-Bundles

Klonen Sie das TiBoLi-Docker-Repository:

git clone git@gitlab.com:tiboli2/tiboli-docker.git
git clone https://gitlab.com/tiboli2/tiboli-docker.git

Erstellen Sie eine .env-Datei mit folgendem Inhalt:

ACCESS_TOKEN_SECRET=[Zufällige Zeichenfolge]
REFRESH_TOKEN_SECRET=[Zufällige Zeichenfolge]
MAILER_TOKEN=[Zufällige Zeichenfolge]

DATABASE_NAME=[z.B. tiboli]
DATABASE_PASSWORD=[PASSWÖRTER NORMALERWEISE GEHEIM HALTEN]

SERVER_PORT=3005
HOST_NAME=[Ihre Domain / Hostname / IP-Adresse]
PROTOCOL=http

SMTP_SERVER=
SMTP_PORT=
SMTP_USER=
SMTP_PASS=

mDNS einrichten

Um die Software lokal über eine Domain und nicht über die IP-Adresse zugänglich zu machen, verwenden wir das mDNS-Protokoll.

Das Multicast DNS (mDNS)-Protokoll ermöglicht es Geräten in einem lokalen Netzwerk, sich gegenseitig zu entdecken und zu kommunizieren, ohne einen zentralen DNS-Server zu benötigen. Es verwendet die gleichen Programmierschnittstellen, Paketformate und Betriebsverfahren wie das traditionelle unicast DNS, aber anstatt Anfragen an einen zentralen DNS-Server zu senden, senden mDNS-fähige Geräte ihre Anfragen an alle Geräte im Netzwerk über die reservierte IP-Multicast-Adresse.

Installieren Sie einen mDNS-Server mit folgendem Befehl:

sudo apt-get install avahi-daemon

Überprüfen Sie, ob der Dienst läuft, mit:

systemctl status avahi-daemon

Der Server ist nun unter der Domain [HOSTNAME].local verfügbar.

Um die Software über diese Domain zugänglich zu machen, setzen Sie die Einstellung HOST_NAME in der .env-Datei auf Ihre .local-Domain.

Software starten

Um die Anwendung zu starten, verwenden Sie einfach die docker-compose.yml-Datei mit:

docker-compose --env-file .env up -d

Die Docker-Container sind so konfiguriert, dass sie immer neu gestartet werden. Um sie zu stoppen, verwenden Sie:

docker-compose down

Beim ersten Start der Anwendung kann es sein, dass der Datenbank-Container einige Zeit benötigt, um sich zu initialisieren. Dadurch kann es sein, dass der Healthcheck des API-Containers fehlschlägt, und die API nicht startet. Sollte dieser Fehler auftreten, lassen Sie die Container ohne die API laufen und starten Sie docker-compose nach einigen Minuten erneut mit dem gleichen Befehl. Es wird dann angezeigt, dass die Datenbank, das Frontend und Traefik bereits laufen, aber die API wird nun gestartet. Sobald die Datenbank initialisiert ist, sollte der Healthcheck beim nächsten Start nicht mehr fehlschlagen, und alle Server werden wie vorgesehen gestartet.

Software aktualisieren

Um die Software zu aktualisieren, führen sie das "update.sh" script aus, welches sich in dem Repository befindet. Dieses stoppt die Container, Läd die neuen Images herunter und startet die Container anschließend neu.