Protokolle und Diagnose
Diese Seite zeigt, wo TCMSOFT, der Update-Dienst und die Agenten mitschreiben, was sie tun, und wie Sie den Zustand prüfen. Sie brauchen sie, bevor Sie einen Fehler beheben oder an den TCMSOFT-Support weitergeben. Was eine einzelne Meldung bedeutet, steht unter Meldungen und ihre Bedeutung. Schrittfolgen für häufige Fehler stehen unter Typische Supportfälle.
In den Befehlen steht <Datenordner> für den Ordner auf dem Server, den Sie bei der Einrichtung angelegt haben,
-
/volume1/docker/tcmsoft(Synology) oder/var/lib/tcmsoft(Mikroserver).<Server>steht für die Adresse des Servers im Praxisnetz.
Welche Quelle wofür
| Frage | Erste Quelle | Wo |
|---|---|---|
| Läuft TCMSOFT überhaupt? | docker ps -a, Gesundheitsprüfung /health |
Server (SSH), Browser |
| Warum startet TCMSOFT nicht? | docker logs tcmsoft |
Server (SSH) |
| Was hat das letzte Update gemacht? | Glocke, Karte Programmversion und Updates, docker logs tcmsoft-updater |
TCMSOFT, Server |
| Warum ist ein Update gescheitert? | <Datenordner>/updater/protokoll/ |
Server (SSH) |
| Läuft gerade ein Update? | <Datenordner>/updater/vorgang.json, Karte Programmversion und Updates |
Server, TCMSOFT |
| Warum druckt ein Arbeitsplatz nicht? | Protokoll des Print Agent, Stammdaten › Drucker | Arbeitsplatz, TCMSOFT |
| Warum kommt ein Befund oder Scan nicht an? | Protokoll des Prismamed Agent, Stammdaten › Agenten | Arbeitsplatz, TCMSOFT |
| Warum druckt der Server-Drucker nicht? | docker logs tcmsoft, docker exec tcmsoft lpstat -v |
Server (SSH) |
| Ist die Installation TCMSOFT oder Salvia Software? | Anmeldeseite („TCMSOFT“ oder „Salvia Software“), docker logs tcmsoft; ob die Zeile Produkt im Container angekommen ist: docker exec tcmsoft printenv Produkt |
Browser, Server (SSH) |
Auf dem Server
Zugang
Alle Befehle auf dieser Seite laufen per SSH auf der NAS bzw. dem Server. Auf einer Synology melden Sie sich als
Administrator an und wechseln vorher mit sudo -i zum Benutzer root.
Woran Sie den Erfolg erkennen: docker ps -a listet die Container. Meldet der Befehl einen Fehler beim Zugriff auf
Docker, prüfen Sie, ob Sie mit sudo -i zu root gewechselt haben.
Zustand der Container
docker ps -a
Im Normalbetrieb gibt es die ersten beiden Container; die anderen beiden gibt es nur vorübergehend:
| Container | Bedeutung |
|---|---|
tcmsoft |
TCMSOFT mit Datenbank, Drucksystem und Print Agent des Servers |
tcmsoft-updater |
der Update-Dienst |
tcmsoft-vorher |
nur während eines Updates: die bisherige Version. Steht er außerhalb eines Updates da, räumt der Update-Dienst ihn bei seinem nächsten Start weg oder benennt ihn zurück. |
tcmsoft-updater-neu |
nur während der Update-Dienst sich selbst aktualisiert (höchstens 3 Minuten) |
Ob TCMSOFT „gesund“ ist (Anwendung und Datenbank antworten):
docker inspect --format '{{.State.Health.Status}}' tcmsoft
starting: TCMSOFT startet noch. Docker lässt dafür 10 Minuten Startphase.healthy: alles in Ordnung.unhealthy: die Gesundheitsprüfung schlug dreimal hintereinander fehl. Danndocker logs tcmsoftlesen.
Wie oft Docker den Container schon neu gestartet hat:
docker inspect --format '{{.RestartCount}}' tcmsoft
Genau diese beiden Werte wertet auch der Update-Dienst aus. Ab 3 Neustarts gilt eine neue Version als abgestürzt.
Welche Versionen als Image auf dem Server liegen:
docker image ls tcmsoft
docker image ls tcmsoft-updater
Der Update-Dienst behält die laufende und die vorige Version von TCMSOFT. Ältere entfernt er nach einem gelungenen Update selbst. Löschen Sie Images nicht von Hand (siehe Typische Supportfälle).
Protokoll des Update-Dienstes
docker logs --tail 200 tcmsoft-updater
Mit -f statt --tail 200 läuft die Anzeige mit; beenden mit Strg+C.
Jede Zeile beginnt mit [updater], Datum und Uhrzeit. Typische Zeilen:
| Zeile (Anfang) | Bedeutung |
|---|---|
| „TCMSOFT-Updater … startet: Datenordner …, Prüfung täglich um …“ | Der Dienst startet. Hier stehen seine Version, der Datenordner und die Uhrzeit der nächtlichen Prüfung. |
| „Einstellungen für TCMSOFT angelegt: …/tcmsoft.env“ | Die Datei tcmsoft.env fehlte und wurde mit Standardwerten angelegt. |
| „TCMSOFT … wird heruntergeladen …“ (Einrichtung) bzw. „Version … wird heruntergeladen …“ (Update), „Download …: 10 %“ | Ein Image wird geladen. |
| „Update auf Version … wird vorbereitet …“, „TCMSOFT wird für das Update beendet …“, „Datenbank wird gesichert …“, „Version … startet - die Datenbank wird bei Bedarf angepasst …“ | Die Schritte eines Updates. |
| „Vorherige Version wird wiederhergestellt …“, „Datenbank auf den Stand vor dem Update zurückgesetzt.“ | Ein Rückfall läuft. |
| „Das Update von … auf … wurde unterbrochen (Stand: …).“ | Beim Start fand der Dienst ein unterbrochenes Update und schließt es ab oder rollt zurück. |
| „Versionsprüfung fehlgeschlagen: …“ | Der Download-Server war nicht erreichbar. |
| „Prüfung auf einen neuen Update-Dienst fehlgeschlagen: …“ | Dasselbe für das Selbst-Update des Dienstes. |
| „Neuer Update-Dienst … gestartet - er löst diesen ab.“, „Neuer Update-Dienst … übernimmt.“ | Der Dienst aktualisiert sich selbst. |
| „Nach dem Update: … ist fehlgeschlagen (…) - wird beim nächsten Start bzw. Update nachgeholt.“ | Das Aufräumen nach einem gelungenen Update hat nicht geklappt. Die neue Version läuft trotzdem. |
Jedes Ergebnis, das in der Glocke erscheint, steht hier auch als Zeile „Titel: Text“, z. B. „Update auf Version …: TCMSOFT wurde auf Version … aktualisiert.“ Fehler beim Start des Dienstes stehen als letzte Zeile vor dem Neustart; Docker startet den Dienst nach 30 Sekunden neu. Die Bedeutung dieser Zeilen steht unter Meldungen und ihre Bedeutung.
Docker begrenzt das Protokoll eines Containers, den der Update-Dienst selbst anlegt, auf 5 Dateien zu je 20 MB. Das gilt nur, wenn Docker Protokolle als Datei führt (Protokolltreiber
json-fileoderlocal). Der von Hand angelegte erstetcmsoft-updaterhat diese Begrenzung nicht. Sie kommt erst mit seinem ersten Selbst-Update.
Protokoll von TCMSOFT
docker logs --tail 300 tcmsoft
Darin stehen mehrere Arten von Zeilen:
- Zeilen mit
[tcmsoft], Datum und Uhrzeit stammen vom Startskript des Containers: Datenbank, Druckersuche, Drucksystem, eigene Treiber und Schriften, Start und Neustarts der Anwendung. - Die übrigen Zeilen stammen von TCMSOFT selbst und vom Print Agent des Servers.
- Dazu kommen Meldungen der Datenbank MongoDB (als JSON-Zeilen, z. B. Abfragen, die länger als eine Sekunde dauern) und Fehlermeldungen des Drucksystems (CUPS).
Ein normaler Start sieht so aus (Auszug, in dieser Reihenfolge):
- „MongoDB wird gestartet (Daten in …)“
- „MongoDB läuft (nur lokal, mit Anmeldung)“
- „CUPS und PrintAgent gestartet“
- „TCMSOFT … wird gestartet (erreichbar über Port …)“
- bei großen Datenbeständen mehrmals „TCMSOFT startet noch (… s) - bei großen Datenbeständen dauert das Anpassen der Datenbank einige Minuten“
- „TCMSOFT läuft“
Produkt beim Start: Ob die Installation TCMSOFT oder Salvia Software ist, entscheidet der Start. Was er entschieden
hat, steht in den Zeilen der Anwendung, nicht in den [tcmsoft]-Zeilen. Eine neue Installation mit Produkt=Salvia
in tcmsoft.env zeigt beim ersten Start nacheinander:
- „Neue Installation als Salvia eingerichtet (Parameter Produkt in tcmsoft.env).“
- „Praxisart von Arzt auf Heilpraktiker gestellt von unbekannt: … angepasst.“
Eine TCMSOFT-Installation ohne die Zeile Produkt schreibt dazu nichts. Gezielt suchen:
docker logs tcmsoft 2>&1 | grep -E 'Produkt|Salvia|Praxisart'
Auch bei Salvia Software heißen Container, Datenordner und tcmsoft.env „tcmsoft“, und die übrigen Zeilen sprechen von
TCMSOFT. Alle Einträge zum Produkt, ihre Bedeutung und was zu tun ist:
Meldungen und ihre Bedeutung, Hintergrund und Rückweg unter
Produkt und Praxisart.
Welchen Treiber der Print Agent des Servers für einen Drucker gewählt hat, steht in den Zeilen „Printer … added with …“. Kopplungsversuche des Prismamed Agent stehen hier als „Kopplung fehlgeschlagen von …“ und „Agent-Schnittstelle: ungültiger Schlüssel von …“, jeweils mit der IP-Adresse des Arbeitsplatzes.
Der Ordner updater/ im Datenordner
TCMSOFT und der Update-Dienst verständigen sich nur über Dateien in <Datenordner>/updater/. Im TCMSOFT-Container
heißt derselbe Ordner /data/updater.
| Datei | Inhalt | Von Hand ändern? |
|---|---|---|
status.json |
Stand des Update-Dienstes, Versionen, letzter Fehler, die letzten 20 Ergebnisse | nein, nur lesen |
vorgang.json |
nur während eines Updates: von welcher auf welche Version und in welcher Phase | nie löschen |
anforderung |
„pruefen“ oder „aktualisieren“ von der Backup-Seite; der Dienst holt sie binnen Sekunden ab | nein |
sperre |
liegt da, solange eine Datenübernahme läuft; TCMSOFT erneuert sie alle 30 Sekunden, nach 5 Minuten ohne Erneuerung gilt sie als verwaist | nein |
gemeldet |
Kennungen der Ergebnisse, die schon in der Glocke standen | nein |
fehlgeschlagen-tcmsoft.txt |
TCMSOFT-Versionen, die hier gescheitert sind, eine je Zeile. Sie werden nie wieder eingespielt. | nur nach Absprache mit dem Support (siehe Typische Supportfälle) |
fehlgeschlagen-updater.txt |
dasselbe für Versionen des Update-Dienstes | nur nach Absprache mit dem Support |
download/ |
Image-Dateien während des Ladens; der Dienst löscht sie nach dem Laden | nein |
protokoll/tcmsoft-<Version>.log |
die letzten 500 Zeilen des Protokolls einer TCMSOFT-Version, die nach einem Update nicht anlief | für den Support kopieren |
protokoll/updater-<Version>.log |
die letzten 300 Zeilen eines neuen Update-Dienstes, der nicht übernommen hat | für den Support kopieren |
status.json lesen
cat <Datenordner>/updater/status.json
Die Datei ist lesbar formatiert, Umlaute stehen im Klartext.
| Feld | Bedeutung |
|---|---|
UpdaterVersion |
Version des Update-Dienstes |
TcmsoftVersion |
zuletzt gelaufene TCMSOFT-Version. Fehlt der Container, legt der Dienst ihn mit genau dieser Version neu an (ab Update-Dienst 2026.10.7.1). |
Uhrzeit |
Uhrzeit der nächtlichen Prüfung |
LetztePruefung |
wann zuletzt beim Download-Server nachgesehen wurde |
VerfuegbareVersion, Changelog |
eine neuere Version, die eingespielt werden kann, und ihr Kurztext |
LaeuftGerade, Schritt |
ob gerade etwas läuft und welcher Schritt |
LetzterFehler |
warum die letzte Prüfung nichts einspielen konnte; erscheint auch als Warnkarte auf der Backup-Seite |
Stand |
wann der Dienst die Datei zuletzt geschrieben hat |
Ergebnisse |
die letzten 20 Ergebnisse mit Id, Art (erfolg, warnung, fehler), Titel, Text und Zeit |
Im Leerlauf schreibt der Dienst die Datei mindestens einmal pro Minute. Ist Stand älter als 5 Minuten und steht
LaeuftGerade auf false, läuft er nicht. Die Backup-Seite zeigt dann „Der Update-Dienst meldet sich nicht …“.
Während eines langen Schritts (z. B. eines Downloads) schreibt der Dienst die Datei nur beim Wechsel des Schritts. Dann
kann dieselbe Warnung neben dem laufenden Schritt erscheinen, obwohl er arbeitet (aus dem Code abgeleitet, nicht
getestet).
Nur die Version des Update-Dienstes:
grep UpdaterVersion <Datenordner>/updater/status.json
vorgang.json lesen
Die Datei gibt es nur, solange ein Update läuft oder unterbrochen wurde. Sie enthält Von, Nach, Changelog, Beginn
und Phase als Zahl:
| Phase | Bedeutung | Was der Dienst nach einem Neustart tut |
|---|---|---|
| 0 | Neues Image geladen, am laufenden TCMSOFT noch nichts geändert | TCMSOFT läuft einfach weiter |
| 1 | Alte Version beendet und in tcmsoft-vorher umbenannt |
zurück zur alten Version |
| 2 | Datenbank gesichert | zurück zur alten Version |
| 3 | Neue Version angelegt | abwarten, ob sie gesund wird; sonst zurück |
Löschen Sie vorgang.json nie von Hand. Ohne sie weiß der Dienst nach einem Neustart nicht mehr, dass er zurückrollen
muss.
Gesundheitsprüfung im Browser
Rufen Sie im Browser auf:
http://<Server>:8085/health
Auf dem Mikroserver lauscht TCMSOFT nur auf 127.0.0.1:5000. Dort prüfen Sie per SSH mit
curl http://127.0.0.1:5000/health.
| Antwort | Bedeutung |
|---|---|
ok |
Anwendung und Datenbank antworten. |
Datenbank antwortet nicht |
Die Anwendung läuft, die Datenbank nicht. docker logs tcmsoft lesen. |
| keine Antwort | Die Anwendung läuft nicht (oder lauscht auf einem anderen Port). docker ps -a und docker logs tcmsoft lesen. |
Haben Sie den Port in tcmsoft.env geändert, verwenden Sie den neuen Port.
Programmprotokoll in TCMSOFT
TCMSOFT schreibt sein Programmprotokoll zusätzlich in die Datenbank der Praxis (patient) und löscht dort Einträge nach
90 Tagen, Debug-Einträge nach 7 Tagen. Angezeigt wird es im Reiter Logs des versteckten Servermanagements, das sich
nur mit dem Support-Konto öffnet (siehe Servermanagement). Ohne
Support-Konto lesen Sie das Protokoll mit docker logs tcmsoft.
Datenbank neu initialisieren, Demodaten installieren und die Datenübernahme löschen das Programmprotokoll mit, Backup wiederherstellen ersetzt es durch den Stand der Sicherung. Frühere Einträge stehen dann nur noch in
docker logs tcmsoft, und dort nur, bis der Container neu angelegt wird (bei jedem Update).
Bis TCMSOFT 2026.10.7.1 stand das Programmprotokoll in der Datenbank
tcmsoft. Diese alten Einträge zeigt der Reiter Logs nicht, und TCMSOFT räumt sie dort nicht auf.
Datenbank-Konsole
Für den Support gibt es im Container eine Konsole, die sich selbst mit dem Datenbank-Passwort dieser Installation anmeldet:
docker exec -it tcmsoft tcmsoft-mongosh
- Die Praxisdaten und das Programmprotokoll liegen in der Datenbank
patient, die Inhalte der Bibliothek in der Datenbanktcmsoft(dort auch das Programmprotokoll bis TCMSOFT 2026.10.7.1). - Die Größen der Datenbanken zeigt der mongosh-Befehl
show dbs. - Beenden mit
exit.
Die Konsole ist nur zum Lesen gedacht. Für Änderungen gibt es keine freigegebene Anleitung. Ändern Sie dort nichts ohne Absprache mit der TCMSOFT-Entwicklung. Lesen oder kopieren Sie nie die Datei
keys/mongo-passwort.
An den Arbeitsplätzen
Beide Agenten haben im Menü den Eintrag Protokoll öffnen. Er öffnet immer den richtigen Ordner. Das ist der einfachste Weg. Unter Windows öffnet die rechte Maustaste auf das Symbol im Infobereich das Menü, am Mac ein Klick auf das Symbol in der Menüleiste.
Je Tag entsteht eine Datei. Es bleiben die letzten 30 Dateien.
Prismamed Agent
| System | Protokoll | Zustand des Selbst-Updates |
|---|---|---|
| Windows | %ProgramData%\Prismamed\Agent\logs\agent-<JJJJMMTT>.txt (für alle Windows-Konten gemeinsam) |
%LocalAppData%\Prismamed\Agent\selbstupdate.json (je Windows-Konto) |
| Mac | ~/Library/Application Support/Prismamed/Agent/logs/agent-<JJJJMMTT>.txt (je Benutzerkonto) |
~/Library/Application Support/Prismamed/Agent/selbstupdate.json |
- Das Fenster des Agenten zeigt unten „Version … · Protokolle: …“ mit dem Pfad.
- Unter Windows öffnet ein Klick auf das Symbol das Fenster. Am Mac öffnen Sie es im Menü mit Einstellungen….
- Das Fenster hat ebenfalls Protokoll öffnen und Ordner jetzt prüfen.
- Die Scan-Übergabe (Aufruf durch die Scannersoftware) schreibt in dieselbe Datei.
Print Agent
| System | Protokoll |
|---|---|
| Windows | %ProgramData%\Prismamed\PrintAgent\logs\log<JJJJMMTT>.txt |
| Mac | ~/Library/Application Support/Prismamed/PrintAgent/logs/log<JJJJMMTT>.txt |
| Server (im TCMSOFT-Container) | <Datenordner>/printagent/logs/log<JJJJMMTT>.txt, dazu docker logs tcmsoft |
- Unter Windows weicht der Print Agent auf einen Ordner je Benutzer aus, wenn er
%ProgramData%\Prismamed\PrintAgentnicht verwenden kann. Protokoll öffnen im Menü zeigt immer den tatsächlich benutzten Ordner. - Datenordner öffnen im selben Menü zeigt Kennung und Kopplung des Agenten.
Was in den Agent-Protokollen steht
- Verbindung zu TCMSOFT, Aufträge, Dateien, Druckaufträge und deren Fehler.
- Das Selbst-Update, z. B. „Update auf Version … wird eingespielt (Neustart).“ und nach dem Neustart „Aktualisiert auf Version … (…)“.
- Meldungen des Update-Programms Velopack mit dem Vorsatz „Velopack: “. Wo Velopack selbst zusätzlich protokolliert, ist nicht dokumentiert.
- Die Notbremse für Updates: „Notbremse: Updates höchstens bis Version …“ bzw. „Notbremse für Updates aufgehoben.“
- Ein zurückgezogenes Update: „Update … wurde zurückgezogen oder ist gesperrt - es wird nicht eingespielt.“
Geben Sie die Dateien
agent.json(enthält den Schlüssel, mit dem sich der Prismamed Agent bei TCMSOFT ausweist) undpairings.json(Kopplung des Print Agent) nicht weiter. Für den Support genügen die Protokolle.
Im Browser
Der Browser am Arbeitsplatz ist oft das schnellste Prüfwerkzeug:
| Prüfung | Aufruf | Erwartet |
|---|---|---|
| Ist TCMSOFT erreichbar und gesund? | http://<Server>:8085/health |
ok |
| Vertraut der Arbeitsplatz dem Zertifikat? | die HTTPS-Adresse von TCMSOFT | keine Zertifikatswarnung des Browsers |
| Darf die Seite den Print Agent suchen? | Symbol links neben der Adresse › Website-Einstellungen | Zugriff auf Geräte im lokalen Netzwerk ist zugelassen |
| Läuft der Print Agent an diesem Rechner? | http://127.0.0.1:9632/api/print-agent/discover |
eine kurze JSON-Antwort mit agentId, machineName und isPaired (aus dem Code abgeleitet, als Prüfweg nicht getestet) |
| Welche TCMSOFT-Version wird angeboten? | https://downloads.tcmsoft.de/docker/tcmsoft-x64.json (ARM-Server: tcmsoft-arm64.json) |
JSON mit Version, Architektur, Datei, Sha256, Datum, Changelog, Signatur |
| Welche Version des Update-Dienstes wird angeboten? | https://downloads.tcmsoft.de/docker/tcmsoft-updater-x64.json |
wie oben |
| Welche Agent-Fassung steht zum Herunterladen bereit? | https://downloads.tcmsoft.de/agent/aktuell-windows.txt bzw. https://downloads.tcmsoft.de/printagent/aktuell-windows.txt |
der Dateiname des aktuellen Setups mit Versionsnummer |
Für Mac-Fassungen heißen die Zeigerdateien aktuell-mac-arm64.txt und aktuell-mac-x64.txt.
In TCMSOFT selbst
| Wo | Was Sie dort sehen |
|---|---|
| Glocke unten links | Ergebnisse von Updates und Backups, Fehler von Hintergrunddiensten. Die Nachrichten gelten für alle Benutzer. Alle löschen löscht sie für alle. |
| Stammdaten › Backup, Karte Programmversion und Updates | Installierte Version, Verfügbare Version, Letzte Prüfung, Prüfung täglich um, Neu in dieser Version, den letzten Fehler und den laufenden Schritt. Die Karte erscheint nur im Docker-Betrieb. |
| Stammdaten › Agenten (ab TCMSOFTpro) | je Prismamed Agent Version, Status und Letzte Meldung; die Liste lädt sich alle 30 Sekunden neu |
| Stammdaten › Drucker | je Print Agent Status („Online“, „Offline seit …“, „Nie verbunden“), Version, Update-Hinweis; Reiter Drucker und Druck-Warteschlange |
Was der TCMSOFT-Support braucht
Sammeln Sie vor dem Anruf:
- die Versionen: Installierte Version von der Backup-Seite und
UpdaterVersionausstatus.json, - die Ausgabe von
docker ps -a, - die letzten Zeilen von
docker logs tcmsoftunddocker logs tcmsoft-updater, - bei einem gescheiterten Update die Datei aus
<Datenordner>/updater/protokoll/, - bei einem Arbeitsplatzproblem das Agent-Protokoll des betreffenden Tages und den Text der Meldung.
Senden Sie nie den Ordner keys/, die Datei keys/mongo-passwort, agent.json oder pairings.json.