teg/backend/external/README.md
2026-06-25 20:08:45 +02:00

134 lines
3.1 KiB
Markdown

# Server Folders Agent per JSON
## Agent starten
Lege `server-folders-agent.json` neben die `server-folders-agent.exe` und starte den Agent ohne weitere Parameter:
```powershell
.\server-folders-agent.exe
```
Beispiel:
```json
{
"listenAddr": ":8099",
"storageRoots": [
{
"label": "Storage D",
"path": "D:/Milestone-Speicher"
}
],
"archiveRoots": [
{
"label": "Archive E",
"path": "E:/"
}
],
"token": ""
}
```
Alternativ kann die Config explizit angegeben werden:
```powershell
.\server-folders-agent.exe -config "C:\Milestone\server-folders-agent.json"
```
Oder per ENV:
```powershell
$env:SERVER_FOLDER_AGENT_CONFIG="C:\Milestone\server-folders-agent.json"
.\server-folders-agent.exe
```
## Token-Handling
Der Agent kann ohne initialen Token gestartet werden. Das Backend erzeugt beim Speichern der Milestone-Einstellungen automatisch einen zufälligen Token und überträgt ihn per `PUT /agent-token` an den Agent.
Wenn keine `tokenFile` in der JSON gesetzt ist, schreibt der Agent den aktuellen Token direkt ins Feld `token` der JSON-Datei. Damit überlebt der Token einen Neustart und alle Einstellungen liegen in einer Datei.
```http
PUT /agent-token
X-Server-Folders-Token: <aktueller-token> # nur nötig, wenn bereits ein Token gesetzt ist
Content-Type: application/json
{ "token": "<neuer-token>" }
```
Solange noch kein Token gesetzt ist, akzeptiert der Agent `PUT /agent-token` auch ohne Header. Betreibe den Agent daher in einem vertrauenswürdigen Netzwerk und speichere die Einstellungen nach dem Start zeitnah.
Falls du den Token weiterhin getrennt speichern möchtest, kannst du in der JSON `tokenFile` setzen:
```json
{
"listenAddr": ":8099",
"storageRoots": [
{
"label": "Storage D",
"path": "D:/Milestone/Storage"
}
],
"tokenFile": "C:/Milestone/server-folders-agent.token"
}
```
## Root-Pfade per API aktualisieren
Das Backend kann die Storage- und Archive-Roots zur Laufzeit an den Agent schicken. Der Agent aktualisiert die laufende Konfiguration und schreibt die Werte in `server-folders-agent.json`:
```http
PUT /agent-config
X-Server-Folders-Token: <aktueller-token>
Content-Type: application/json
{
"storageRoots": [
{
"label": "Storage D",
"path": "D:/Milestone-Speicher"
}
],
"archiveRoots": [
{
"label": "Archive E",
"path": "E:/"
}
]
}
```
## Kompatibilität
Die bisherigen Parameter und ENV-Variablen funktionieren weiter und überschreiben Werte aus der JSON:
```powershell
.\server-folders-agent.exe -port 8099 -storage-root "Storage D=D:/Milestone/Storage" -archive-root "Archive E=E:/Milestone/Archive"
```
Unterstützte ENV-Variablen:
- `SERVER_FOLDER_AGENT_CONFIG`
- `LISTEN_ADDR`
- `SERVER_FOLDER_AGENT_PORT`
- `SERVER_STORAGE_ROOTS`
- `SERVER_ARCHIVE_ROOTS`
- `SERVER_FOLDER_ROOTS`
- `SERVER_FOLDER_AGENT_TOKEN`
- `SERVER_FOLDER_AGENT_TOKEN_FILE`
## Backend-Proxy
Der bestehende Frontend-Endpunkt bleibt:
```http
GET /admin/server-folders?path=D:/Milestone
POST /admin/server-folders
```
Der Proxy gibt den Token als Header an den Agent weiter:
```http
X-Server-Folders-Token: <token>
```