Zum Inhalt

Detailierte Installation am Beispiel Ubuntu 22.04-LTS

Systemvorbereitung

Unter https://ubuntu.com/download/server finden Sie die passenden Images, bitte verwenden Sie ein Server-Image. Installieren Sie die Maschine entsprechend der Anleitung unter Ubuntu und legen Sie einen Standardnutzer detectan.

Richten Sie in ihrem Netzwerk die Namensauflösung für diesen Rechner ein, in diesem Beispiel detect.klinik.de

Wir verbinden uns nun zu der neuen Maschine und melden uns als Benutzer detectan.

Falls in Ihrem System einen Proxy genutzt wird, müssen wir diesen entsprechend konfigurieren:

$ sudo nano /etc/environment
http_proxy="http:/proxy.klinik.de:80"
https_proxy="http:/proxy.klinik.de:80"
no_proxy="localhost,127.0.0.1,klinik.de"

Bringen wir erst mal das System auf den neuesten Stand:

$ sudo apt update && apt dist-upgrade
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Nun folgen wir im wesentlichen der Installationseite von docker:
Zuerst deaktivieren und deinstallieren wir eventuell bereits vorinstallierte Software. Falls diese nicht installiert ist, wird sicherlich ein Fehler gemeldet, diesen können wir dann ignorieren.

$ sudo snap remove docker
$ sudo systemctl stop snapd.service
$ sudo systemctl stop dockerd.service
$ sudo systemctl stop containerd.service
$ sudo apt remove snapd docker docker-engine docker.io containerd runc
$ sudo apt autoremove --purge

Anschließend starten wir das System neu und melden uns wieder als Benutzer detect an:

$ reboot

Installation Docker

Docker stellt seine Pakete für die meisten Distributionen selber sehr aktuell zur Verfügung. Damit wir an diese Pakete kommen, fügen wir das Repository den Paketquellen hinzu:

$ sudo mkdir -m 0755 -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update

Sollte ein GPG-Fehler auftreten, wenn wir apt update ausführen, müssen die Rechte korrigiert werden:

$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
$ sudo apt-get update

Jetzt können wir docker in der aktuellen Version installieren:

$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Es empfiehlt sich noch einige Einstellungen zu setzen:

$ sudo nano /etc/docker/daemon.json
{
    # Daten an eigene umgebung anpassen
    "default-address-pools": [ {"base":"172.16.0.0/12","size":24} ],
    "dns": ["ip-dns1", "ip-dns2"],
    "dns-search":[ "klinik.de" ]
}

$ sudo nano /etc/environment
COMPOSE_COMPATIBILITY=true

$ nano ~/.docker/config.json
{
    "proxies": {
        "default": {
            "httpProxy": "http:/proxy.klinik.de:80",
            "httpsProxy": "https:/proxy.klinik.de:80",
            "noProxy": "localhost, 127.0.0.1,klinik.de"             
        }
    }
}

Damit wir auch als Benutzer detect auf docker zugreifen können, muss dieser der Gruppe docker hinzugefügt werden:

$ sudo groupadd docker
$ sudo usermod -aG docker $USER
$ newgrp docker
$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service

Jetzt sollten wir auch als detectdocker Container starten können

$ docker -v
$ docker compose -v
$ docker run hello-world

Testen der Docker Konfiguration

Es ist über Docker und diverse Container relativ einfach, die Konfiguration von Docker zu testen.

# Ping auf die IP Adresse 9.9.9.9 aus dem Dockernetzwerk heraus
$ docker run -it --rm busybox:latest ping -c 4 9.9.9.9

# Ping und DNS aus dem Dockernetzwerk heraus
$ docker run -it --rm busybox:latest ping -c 4 gitlab.ukdd.de

# Testen der Email-Konfiguration
$ docker run -it --rm freinet/swaks \
    -h detect.klinik.de \
    -s mailserver.klinik.de \
    -t empfaenger@klinik.de  \
    -f absender@klinik.de \
    --port 587 -tls \
    --auth --auth-user smtp_user --auth-password 'smtp_pass' 

# Verbindung zum SMB-Share testen
$ docker run --rm -it burstears/smbclient smbclient \
    -U samba_user%samba_password \
    -W workgroup_klinik \
    //SHARE/FOLDER -c 'ls'    

Sollten diese Befehle fehlschlagen, prüfen Sie bitte Konfiguration für Docker, insbesondere die Einstellungen für den Proxy, etc. Die E-Mail sollte versandt werden, bitte schauen Sie auch im Spam-Ordner nach.

Ansible installieren

$ sudo apt install ansible

Download DETECT

Auf der Seite https://gitlab.ukdd.de/pub/detect/-/packages finden wir alle verfügbaren Versionen von DETECT. Es spricht in der Regel nichts dagegen, die aktuelle Version zu installieren.
Wenn wir auf der Homepage auf den Link 'detect-deployment.tar.gz' der Version klicken, die wir installieren möchten, werden wir auf die Seite mit dem Download weitergeleitet.
Dort kopieren wir den Link zur Datei 'detect-deployment.tar.gz' und verwenden diesen in dem Befehl

$ export detectURL=https://gitlab.ukdd.de/pub/detect/-/package_files/13968/download
$ echo $detectURL

Nun legen wir ein Verzeichnis detect_install mit der aktuellen Version an, laden unsere Datei herunter und entpacken diese

$ mkdir detect_install_v2.0.0
$ cd detect_install_v2.0.0
$ curl -L -o - $detectURL | tar xfvz -

Konfiguration DETECT

Das Verzeichnis sollte nun folgende Struktur haben:

$ ls
playbook.yml  readme.md  roles  sample-extra-variables.yml  sample-variables.yml

Um DETECT zu konfigurieren, benötigen wir eine Datei variables.yml. Dafür kopieren wir die sample-variables.yml und passen diese enstprechend an:

$ cp sample-variables.yml variables.yml
$ nano variables.yml

Für Fragen rund um die Benutzer, und wofür die Einstellungen verwendet werden, können wir auf die Hilfeseiten für Benutzer und Dienste zurückgreifen.

Der Pfad zur Installation sollte vorhanden und für den User 'detect' schreibbar sein. Für den Standardpfad aus der Datei (sample-)variables.yml zum Beispiel:

$ sudo mkdir /opt/docker-deploy
$ sudo chown root:docker /opt/docker-deploy
$ sudo chmod 771 /opt/docker-deploy

Ausrollen und Starten von DETECT

Ist die Konfigurationsdatei fertig angepasst, kann DETECT ausgerollt und gestartet werden. Es gibt dazu auch Informationen in der readme.md Datei im Verzeichnis detect_install.
Der Befehl

$ ansible-playbook playbook.yml -i localhost, --connection=local -e "@variables.yml" -v

erstellt die Konfigurationsdateien, lädt die benötigten Container-Images herunter und kopiert alle notwendigen Daten in das konfigurierte Verzeichnis, im Standardfall nach /opt/docker-deploy/detect.

Wir wechseln in das Verzeichnis und sollten folgende Struktur vorfinden:

$ cd /opt/docker-deploy/detect
$ ls
backend docker-compose.yml  frontend  grafana  keycloak  prometheus  secrets  traefik

In den Ordnern liegen Konfigurationsdaten für die einzelnen Container, unter dem Ordner secrets liegen alle konfigurierten Benutzer und Passwörter. Diese können hier für den laufenden Betrieb geändert werden, sollten dann aber dringend in der Datei variables.yml korrigiert werden, um nach einem Update gleich zu bleiben. Andernfalls werden die Passwörter nach einem Update wieder auf den Stand der variables.yml zurückgesetzt.

Zur Prüfung der Installation kann mit den docker Befehlen überprüft werden, ob die Container laufen und in die Logs geschaut werden. Dazu empfehlen wir die Dokumentation von docker zu Rate zu ziehen, speziell zu den Optionen von docker logs und docker compose logs.

Testen der Installation

Zum testen der Installation und einrichten einer Beispielstation, eines Mapping und dem Import einer Testdatei folgen wir der Anleitung Einrichten und Testen der Applikation