> ## Documentation Index
> Fetch the complete documentation index at: https://docs.varios-ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# VARIOS AI Server-Ordner einrichten

> Docker-Volumes, Netzwerk-Shares (SMB/NFS) und Fehlerbehebung für die Datenquelle VARIOS AI Server Ordner

<Tip>
  Diese Seite beschreibt die technische Einrichtung der Datenquelle **Lokaler
  Ordner**. Die allgemeine Beschreibung der Quellentypen finden Sie unter
  [Wissensdatenbanken](./index#lokaler-ordner).
</Tip>

<Note>
  Für die Einrichtung eines VARIOS AI Server-Ordners, den Sie nicht selbst hosten, wenden Sie sich bitte an Ihren Hosting-Administrator.
</Note>

## Wie funktioniert der Pfad?

Intern nutzt VARIOS AI das Basisverzeichnis `/data/Data/KnowledgebaseDocuments` im Container. Der **Freigabeordner**, den Sie in der UI angeben, ist ein **relativer Unterordner** innerhalb dieses Basisverzeichnisses. Der tatsächliche Pfad wird wie folgt zusammengesetzt:

```
/data/Data/KnowledgebaseDocuments + <Freigabeordner>
```

Beispiel: Wenn Sie als Freigabeordner `/rechtstexte` eintragen, sucht die Anwendung im Container unter:

```
/data/Data/KnowledgebaseDocuments/rechtstexte
```

<Note>
  Versteckte Dateien (mit `.` oder `~` beginnend) sowie Symlinks werden
  automatisch übersprungen. Die Pfadangabe `..` (relative Pfade nach oben) ist
  aus Sicherheitsgründen nicht erlaubt.
</Note>

## Docker-Compose-Konfiguration

Damit der Container auf Ihre lokalen Dateien zugreifen kann, muss ein **Volume** in der `docker-compose.yml` konfiguriert werden. In der On-Premise-Konfiguration sieht das standardmäßig so aus:

```yaml theme={null}
services:
  php:
    volumes:
      # ... andere Volumes ...
      - "./KnowledgebaseDocuments:/data/Data/KnowledgebaseDocuments"
```

Das bedeutet: Der Ordner `./KnowledgebaseDocuments` auf dem **Host** (relativ zum Verzeichnis der `docker-compose.yml`) wird im Container unter `/data/Data/KnowledgebaseDocuments` eingebunden.

<Steps>
  <Step title="Ordner auf dem Host erstellen">
    Erstellen Sie den Ordner, der als Volume eingebunden werden soll, und legen Sie darin bei Bedarf Unterordner an.

    ```bash theme={null}
    mkdir -p ./KnowledgebaseDocuments/rechtstexte
    ```
  </Step>

  <Step title="Dokumente ablegen">
    Kopieren oder verschieben Sie die gewünschten Dokumente in den Ordner.

    ```bash theme={null}
    cp /pfad/zu/dokument.pdf ./KnowledgebaseDocuments/rechtstexte/
    ```
  </Step>

  <Step title="Freigabeordner in der UI konfigurieren">
    Geben Sie in der Quelle als Freigabeordner den **Unterordner** an, z. B. `/rechtstexte`. Klicken Sie auf **Verbindung testen**, um zu prüfen, ob der Ordner erreichbar ist.
  </Step>

  <Step title="Synchronisierung einrichten">
    Wählen Sie ein **Intervall** (Manuell, jede Stunde, jeden Tag etc.) oder klicken Sie auf **Jetzt synchronisieren**, um die Dokumente sofort einzulesen.
  </Step>
</Steps>

<Warning>
  **Berechtigungen prüfen:** Der Prozess im Container muss Lesezugriff auf die
  eingebundenen Dateien haben. Achten Sie auf die Dateirechte (insbesondere bei
  Linux-Systemen).
</Warning>

## Eigene Ordner per Volume einbinden

Sie können auch einen **anderen Host-Pfad** als Volume einbinden, z. B. einen Netzwerk-Share oder ein beliebiges Verzeichnis auf dem Server:

```yaml theme={null}
services:
  php:
    volumes:
      # ... andere Volumes ...
      - "./KnowledgebaseDocuments:/data/Data/KnowledgebaseDocuments"
      # Eigenes Verzeichnis zusätzlich einbinden:
      - "/srv/firmen-dokumente:/data/Data/KnowledgebaseDocuments/firmen-dokumente:ro"
```

In diesem Beispiel wird `/srv/firmen-dokumente` auf dem Host unter `/data/Data/KnowledgebaseDocuments/firmen-dokumente` im Container verfügbar (read-only `:ro`). In der UI tragen Sie dann als Freigabeordner `/firmen-dokumente` ein.

<Tip>
  Wenn Sie mit der Quelle nur lesen möchten, empfiehlt es sich, das Volume als
  **read-only** (`:ro`) einzubinden. So verhindern Sie versehentliche Änderungen
  durch den Container.
</Tip>

## Netzwerk-Shares einbinden (SMB / NFS)

Häufig sollen Dokumente von einem **Netzlaufwerk** (z. B. Windows-Freigabe oder NAS) gelesen werden. Dafür mounten Sie den Netzwerk-Share zunächst auf dem **Host** und binden ihn dann per Volume in den Container ein.

<Tabs>
  <Tab title="SMB / CIFS (Windows-Freigaben)">
    **1. Paket installieren**

    ```bash theme={null}
    sudo apt update && sudo apt install -y cifs-utils
    ```

    **2. Mount-Punkt erstellen**

    ```bash theme={null}
    sudo mkdir -p /mnt/smb-dokumente
    ```

    **3. Credentials-Datei anlegen** (empfohlen, damit Passwörter nicht in `/etc/fstab` stehen)

    ```bash theme={null}
    sudo nano /etc/smbcredentials
    ```

    Inhalt:

    ```
    username=mein-benutzer
    password=mein-passwort
    domain=WORKGROUP
    ```

    Rechte einschränken:

    ```bash theme={null}
    sudo chmod 600 /etc/smbcredentials
    ```

    **4. Dauerhaften Mount in `/etc/fstab` eintragen**

    ```bash theme={null}
    //192.168.1.100/Dokumente /mnt/smb-dokumente cifs credentials=/etc/smbcredentials,uid=1000,gid=1000,file_mode=0644,dir_mode=0755,iocharset=utf8 0 0
    ```

    **5. Mounten und prüfen**

    ```bash theme={null}
    sudo mount -a
    ls /mnt/smb-dokumente
    ```

    **6. In `docker-compose.yml` einbinden**

    ```yaml theme={null}
    services:
      php:
        volumes:
          # ... andere Volumes ...
          - "./KnowledgebaseDocuments:/data/Data/KnowledgebaseDocuments"
          - "/mnt/smb-dokumente:/data/Data/KnowledgebaseDocuments/smb-dokumente:ro"
    ```

    In der UI als Freigabeordner `/smb-dokumente` eintragen.
  </Tab>

  <Tab title="NFS (Linux / NAS)">
    **1. Paket installieren**

    ```bash theme={null}
    sudo apt update && sudo apt install -y nfs-common
    ```

    **2. Mount-Punkt erstellen**

    ```bash theme={null}
    sudo mkdir -p /mnt/nfs-dokumente
    ```

    **3. Dauerhaften Mount in `/etc/fstab` eintragen**

    ```bash theme={null}
    192.168.1.100:/export/dokumente /mnt/nfs-dokumente nfs defaults,_netdev 0 0
    ```

    **4. Mounten und prüfen**

    ```bash theme={null}
    sudo mount -a
    ls /mnt/nfs-dokumente
    ```

    **5. In `docker-compose.yml` einbinden**

    ```yaml theme={null}
    services:
      php:
        volumes:
          # ... andere Volumes ...
          - "./KnowledgebaseDocuments:/data/Data/KnowledgebaseDocuments"
          - "/mnt/nfs-dokumente:/data/Data/KnowledgebaseDocuments/nfs-dokumente:ro"
    ```

    In der UI als Freigabeordner `/nfs-dokumente` eintragen.
  </Tab>
</Tabs>

<Warning>
  Stellen Sie sicher, dass der Netzwerk-Share **vor dem Start der
  Docker-Container** gemountet ist. Andernfalls wird ein leerer Ordner in den
  Container eingebunden. Mit dem Eintrag in `/etc/fstab` geschieht das
  automatisch beim Systemstart.
</Warning>

<Note>
  Testen Sie nach dem Mount immer mit **Verbindung testen** in der UI, ob der
  Freigabeordner im Container erreichbar und lesbar ist.
</Note>

## Typische Fehler und Lösungen

| Fehlermeldung                                 | Ursache                                           | Lösung                                                                                                             |
| --------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| „Freigabeordner konnte nicht gefunden werden" | Ordner existiert nicht im Container               | Volume prüfen: Ist der Host-Pfad korrekt? Wurde der Ordner angelegt? Stimmt der Freigabeordner-Name?               |
| „Freigabeordner konnte nicht gelesen werden"  | Fehlende Leseberechtigungen                       | Dateirechte auf dem Host prüfen (`chmod`/`chown`). Der Container-Prozess läuft typischerweise als bestimmter User. |
| Pfad mit `..` wird abgelehnt                  | Sicherheitsprüfung verhindert relative Pfade      | Nur einfache Unterordnernamen verwenden (z. B. `/docs`), keine `../`-Konstrukte.                                   |
| SMB-Share wird nach Neustart nicht gemountet  | Eintrag in `/etc/fstab` fehlt oder ist fehlerhaft | `/etc/fstab` prüfen und mit `sudo mount -a` testen.                                                                |
| NFS-Mount hängt beim Booten                   | Netzwerk ist beim Mount noch nicht bereit         | Option `_netdev` in `/etc/fstab` sicherstellen, damit der Mount erst nach Netzwerk-Initialisierung erfolgt.        |
