# 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\\Storage" } ], "archiveRoots": [ { "label": "Archive E", "path": "E:\\Milestone\\Archive" } ], "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: # nur nötig, wenn bereits ein Token gesetzt ist Content-Type: application/json { "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" } ``` ## 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: ```