<aside> ❓ Das voize Gateway ist ein Synchronisierungs-Service der zwischen die voize Endgeräte und den Vivendi VX Server geschalten wird:

Vorteile und Nachteile auf einen Blick:

👍  Die Last auf den Vivendi VX Server wird reduziert.

👍  voize Endgeräte können sich schneller und öfter aktualisieren.

👎  voize Endgeräte können nur die Daten laden, die das voize Gateway bereits abgerufen hat.

</aside>


Inhaltsverzeichnis


Systemanforderungen

<aside> <img src="/icons/server_blue.svg" alt="/icons/server_blue.svg" width="40px" /> Die Hardware Anforderungen für das voize Gateway sind:

Pro Bewohner, für den Daten geladen werden, empfehlen wir mind. 100 MB Festplattenspeicher vorzuhalten.

</aside>

System-Übersicht

Einrichtung

image.png

  1. Erstelle eine Linux VM in deiner Netzwerk Infrastruktur (vorzugsweise Ubuntu)

    1. Linux VM benötigt eine container runtime wie z.B. Docker
  2. Konfiguration

    1. Erstelle einen Ordner für Konfigurations-Dateien mkdir voize-senior-care-gateway
    2. Wechsle in das soeben erstellte Verzeichnis cd voize-senior-care-gateway
    3. Erstelle eine compose.yaml mit folgendem Inhalt:

    Lege in voize Admin ein voize Gateway an und gib diesem einen beliebigen Namen und die URL, unter der das Gateway erreichbar sein soll:

    Ubuntu / Debian

    # Alte/conflicting Pakete entfernen
    for pkgin docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc;do
    sudo apt-get remove-y$pkg
    done
    
    # Paketquellen vorbereiten
    sudo apt-get update
    sudo apt-get install-y ca-certificatescurl gnupg
    
    sudo install-m0755-d /etc/apt/keyrings
    curl-fsSL https://download.docker.com/linux/ubuntu/gpg |sudo gpg--dearmor-o /etc/apt/keyrings/docker.gpg
    sudochmod a+r /etc/apt/keyrings/docker.gpg
    
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
      https://download.docker.com/linux/ubuntu \
    $(. /etc/os-release && echo${UBUNTU_CODENAME:-$VERSION_CODENAME}) stable" |tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    # Docker + Compose Plugin installieren
    sudo apt-get update
    sudo apt-get install-y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
    # Docker starten
    sudo systemctl enable--now docker
    
    services:
      voize-senior-care-gateway:
        image: voize/senior-care-gateway:latest
        container_name: voize-senior-care-gateway
        ports:
          # if port 8080 is already in use on host: change to e.g. 8181:8080
          - "8080:8080"
        env_file:
          - .env
        environment:
          TZ: "Europe/Berlin"
          # unless OTEL collector is set up, disable it:
          OTEL_SDK_DISABLED: "true"
          INTEGRATION_ROOT_BASE_PATH: /data
        networks:
          - voize-senior-care-gateway-network
        volumes:
          - ${PWD}/data:/data
        restart: always
        # Required: cap log file size so container logs cannot fill the host disk
        logging:
          driver: json-file
          options:
            max-size: "128m"
            max-file: "3"
        ulimits:
          nofile: 65535
          
      proxy:
        image: nginx:latest
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - ./nginx.conf:/etc/nginx/nginx.conf:ro
          - ./certs:/etc/nginx/certs:ro
        networks:
          - voize-senior-care-gateway-network
        restart: always
    
      # Updates the container automatically to the latest version (every 15m).
      # Keep the --cleanup flag: it removes old images, which otherwise accumulate and fill the host disk.
      auto-updater:
        image: nickfedor/watchtower
        restart: always
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        command: --interval 900 --cleanup voize-senior-care-gateway
    
    networks:
      voize-senior-care-gateway-network: {}
    

    Screenshot 2025-08-15 at 13.44.10.png

    Erstelle eine .env Datei mit den Werten aus voize Admin:

    Screenshot 2025-08-15 at 13.44.32.png

    Erstelle ein neues Directory data, in dem geladene Daten gespeichert werden. In diesem Directory dürfen Dateien nicht manuell geändert werden, da es sich um die geschützten Datenbank-Daten handelt.

    Nach diesen Schritten existieren folgende Dateien:

    voize-senior-care-gateway/
    ├─ data/
    ├─ .env
    ├─ compose.yaml
    
  3. Starten des Services

    1. docker compose up -d
    2. Logs können via dockdocker compose logs -ft abgerufen werden
    3. Zum exportieren der logs als Dateien kann folgender Befehl benutzt werden: docker compose logs --no-color -t >& logs.txt
  4. Verbinde das neue voize Gateway mit der entsprechenden bereichsbasierten Konfiguration in voize Admin. Öffne dafür die Bereichs-Konfigurationen in der Bearbeitungsansicht und verbinde sie einzeln mit dem Gateway:

Screenshot 2025-08-28 at 10.37.00.png

Konfiguration der Aktualisierungsintervalle

Standardmäßig werden Ressourcen in folgenden im Interval FAST aktualisiert. Setze die Device Property INTEGRATION_SERVICE_REFRESH_INTERVAL_CONFIG_TEMPLATE, um die Intervalle nach einem Template auf MEDIUM oder SLOW anzupassen und die Serverlast zu reduzieren:

| Ressource | Ressource (Key für individuelle Config) | FAST Maximales Alter / Geplante Aktualisierung nach | MEDIUM Maximales Alter / Geplante Aktualisierung nach | SLOW Maximales Alter / Geplante Aktualisierung nach | | | --- | --- | --- | --- | --- | --- | | Konfiguration | | | | | | | Version des Bestandssystem | integrationVersion | 40m / 20m | 40m / 20m | 40m / 20m | | | Integrationseinstellungen | integrationInfo | 3h / 2h | 12h / 10h | 12h / 10h | | | Bereiche | areas | 3h / 2h | 12h / 10h | 12h / 10h | | | Bewohner (Stammdaten) | | | | | | | Klienten | residents | 60m / 30m | 3h / 2h | 12h / 10h | | | Klienten-abhängige Grenzwerte und Konfigurationen | residentConfigs | 12h / 10h | 12h / 10h | 12h / 10h | | | Klienten-Bilder | residentImages | 12h / 10h | 12h / 10h | 12h / 10h | | | Freiheitsbeschränkungen (Genehmigungen) | fixations | 12h / 10h | 12h / 10h | 12h / 10h | | | Bewohner (Doku) | | | | | | | Hygieneeinträge | hygiene | 40m / 20m | 60m / 30m | 3h / 2h | | | Vitalwerteeinträge | vitals | 40m / 20m | 60m / 30m | 3h / 2h | | | Körpergewichte und -größen | lowFrequencyVitals | 60m / 30m | 60m / 30m | 12h / 10h | | | Lagerungseinträge | positionings | 40m / 20m | 60m / 30m | 3h / 2h | | | Berichte | careReports | 40m / 20m | 60m / 30m | 60m / 30m | | | Bilanzierungen (Ausfuhr) | urinations | 40m / 20m | 60m / 30m | 3h / 2h | | | Bilanzierungen (Einfuhr) | fluidIntakes | 40m / 20m | 60m / 30m | 3h / 2h | | | Ärztl. Diagnosen | diagnoses | 40m / 20m | 60m / 30m | 3h / 2h | | | SIS | sis | 40m / 20m | 60m / 30m | 3h / 2h | | | Wunden und Wundverlaufseinträge | wounds | 40m / 20m | 60m / 30m | 3h / 2h | | | Medikamente (Verordnungen) | medications | 40m / 20m | 60m / 30m | 3h / 2h | | | Medikamente-Bilder | medicamentImages | 12h / 10h | 12h / 10h | 12h / 10h | | | Planung/Maßnahmen | | | | | | | Planung | measuresWithChecks | 3h / 2h | 12h / 10h | 12h / 10h | | | Durchführungen | measureChecks | 20m / 10m | 40m / 20m | 3h / 2h | | | (veraltet) Planung und Durchführungen | ~~measuresWithoutChecks~~ | 60m / 30m | 60m / 30m | 3h / 2h | | | Tourenplanung | tours | 3h / 2h | 12h / 10h | 12h / 10h | |

Individuelles Überschreiben der Intervalle: