TCMSOFT – Inhalt

Datenordner und tcmsoft.env

Alles, was eine Praxis ausmacht, liegt in einem Ordner auf dem Gerät: Datenbank, Schlüssel, Einstellungen, Druckerkonfiguration. Der Container tcmsoft selbst enthält keine Daten. Ein Update tauscht nur den Container aus, der Datenordner bleibt. Die Einstellungen des Containers stehen in der Datei tcmsoft.env in diesem Ordner.

Diese Seite erklärt die Unterordner, alle Einstellungen in tcmsoft.env und wie Sie eine geänderte Einstellung wirksam machen.

Der Datenordner

Den Pfad legen Sie bei der Einrichtung fest (TCMSOFT einrichten), z. B. /volume1/docker/tcmsoft auf einer Synology oder /var/lib/tcmsoft auf dem Mikroserver. Im Container tcmsoft heißt derselbe Ordner /data; der Update-Dienst sieht ihn unter dem Pfad des Geräts. Im Folgenden steht <Datenordner> für den Pfad auf dem Gerät.

Beim ersten Start legt der Update-Dienst tcmsoft.env und updater/ an. Die Ordner mongodb/, keys/, cups/, treiber/, schriften/, printagent/, bibliothek/, pharmindex/ und tmp/ legt TCMSOFT bei jedem Start an, falls sie fehlen. vor-update/ legt der Update-Dienst erst während eines Updates an.

Unterordner und Dateien

Eintrag Inhalt und Zweck Mit der NAS sichern?
tcmsoft.env Einstellungen des Containers (Port, HTTPS usw.), siehe unten. ja
mongodb/ Die Datenbank: Patienten, Akten, Bilder, Dokumente, Benutzerkonten. über die Sicherung von TCMSOFT (Stammdaten › Backup), nicht als Dateikopie im laufenden Betrieb
keys/ Schlüssel für die Anmeldung und für die Kürzel der DICOM-Bilder, dazu mongo-passwort: das Datenbank-Passwort dieser Installation, beim ersten Start zufällig erzeugt. ja – ohne mongo-passwort startet TCMSOFT mit einer bestehenden Datenbank nicht
cups/ Druckerkonfiguration des Drucksystems im Container (Warteschlangen der eingerichteten Drucker). Beim ersten Start mit Grundeinstellungen angelegt. ja – sonst die Drucker neu einrichten
treiber/ Eigene Druckertreiber der Praxis: PPD-Dateien und .deb-Pakete der Hersteller. Bleibt leer, solange keine gebraucht werden. ja, falls genutzt
schriften/ Eigene Schriften (TTF, OTF, TTC), z. B. die Hausschrift des Briefkopfs. ja, falls genutzt
printagent/ Kopplung und Kennung des PrintAgents im Container. ja – sonst koppelt TCMSOFT ihn beim Start neu
bibliothek/ TCM-Bibliothek, beim ersten Start heruntergeladen. nein, wird neu geladen
pharmindex/ Suchindex für Arzneimittel, wird heruntergeladen und alle 12 Stunden aktualisiert. nein, wird neu geladen
tmp/ Zwischendateien: Export der Sicherung, laufende Uploads (tmp/App_Data). Hier muss Platz für eine Sicherungsdatei sein. nein
updater/ Status, Protokolle und Downloads des Update-Dienstes (unten). nein
vor-update/ Sicherung von mongodb/ während eines Updates, danach wieder leer. Kein Backup. nein
mongodb-datenversion Merkt, seit wann eine neuere MongoDB noch im alten Datenformat läuft (damit nach einem Update der Rückweg offen bleibt). –

Wie Sie die Datenbank und die übrigen Dateien sichern, steht unter Datensicherung und Umzug.

Was Sie im Datenordner selbst tun

Alles andere ändern Sie nicht von Hand:

Der Ordner updater/

Über diesen Ordner sprechen TCMSOFT und der Update-Dienst miteinander.

Eintrag Inhalt
status.json Stand für TCMSOFT und den Support: Version des Update-Dienstes (UpdaterVersion), zuletzt gelaufene TCMSOFT-Version (TcmsoftVersion), Uhrzeit der nächtlichen Prüfung, letzte Prüfung, verfügbare Version, laufender Schritt, letzter Fehler, Zeitpunkt der letzten Meldung (Stand) und die letzten 20 Ergebnisse. Der Dienst schreibt die Datei mindestens jede Minute.
anforderung „Jetzt prüfen“ bzw. „Jetzt aktualisieren“ von der Backup-Seite.
sperre Liegt vor, solange eine Datenübernahme läuft; dann spielt der Dienst nichts ein.
gemeldet Ergebnisse, die TCMSOFT schon in den Nachrichten gezeigt hat.
vorgang.json Stand eines laufenden Updates, damit der Dienst nach einem Neustart an der richtigen Stelle weitermacht.
fehlgeschlagen-tcmsoft.txt, fehlgeschlagen-updater.txt Versionen, die auf diesem Gerät gescheitert sind. Sie werden nicht erneut eingespielt.
download/ Heruntergeladene Image-Dateien, nach dem Laden gelöscht.
protokoll/ Protokolle gescheiterter Versionen (tcmsoft-<Version>.log, updater-<Version>.log) für den Hersteller.

Welche Version der Update-Dienst hat:

grep UpdaterVersion <Datenordner>/updater/status.json

Mehr zu Updates unter Updates von TCMSOFT, zu den Protokollen unter Protokolle und Diagnose.

tcmsoft.env

Wozu: In tcmsoft.env stehen die Einstellungen des Containers tcmsoft. Der Update-Dienst übergibt die Datei beim Anlegen von TCMSOFT an Docker (--env-file <Datenordner>/tcmsoft.env).

Aufbau: Jede Einstellung steht auf einer eigenen Zeile in der Form NAME=Wert. Zeilen, die mit # beginnen, sind Kommentare und wirken nicht. Eine Einstellung „einschalten“ heißt also: das # am Zeilenanfang entfernen.

So legt der Update-Dienst die Datei an

Fehlt tcmsoft.env, legt der Update-Dienst sie mit diesem Inhalt an. Eine vorhandene Datei überschreibt er nie. Der Inhalt zum Kopieren, Zeichen für Zeichen wie im Update-Dienst:

# Einstellungen des TCMSOFT-Containers - der Updater legt TCMSOFT mit diesen Werten an.
# Nach einer Änderung den Container entfernen (docker rm -f tcmsoft); der Updater legt ihn mit derselben Version neu an.

# Web-Port (auf Synology sind 5000/5001 vom System belegt). Mikroserver hinter Caddy: http://127.0.0.1:5000
ASPNETCORE_URLS=http://+:8085

# Erst einschalten, wenn TCMSOFT über HTTPS aufgerufen wird (Reverse-Proxy der NAS, Caddy):
# Server__SichereCookies=true

# Nur einschalten, wenn die Datenbank auf einem Linux-Kernel ab 6.19 nicht startet (z. B. Ubuntu 26.04 mit Kernel 7.0;
# im Protokoll „MongoDB cannot start: Linux kernel versions 6.19 and newer …“). Notlösung, MongoDB läuft dann etwas langsamer.
# GLIBC_TUNABLES=glibc.pthread.rseq=1

Die letzten drei Zeilen legt erst ein Update-Dienst nach Version 2026.10.7.1 an. In einer älteren Datei die Zeile bei Bedarf von Hand ergänzen.

Auf dem Mikroserver entsteht die Datei bei der Einrichtung vorab mit den zwei Zeilen ASPNETCORE_URLS=http://127.0.0.1:5000 und Server__SichereCookies=true, dazu auskommentiert # GLIBC_TUNABLES=glibc.pthread.rseq=1 (siehe unten); für Salvia Software kommt Produkt=Salvia dazu.

Die Datei selbst anlegen

Wozu: Für Salvia Software muss die Zeile Produkt=Salvia schon beim ersten Start in tcmsoft.env stehen. Sie legen die Datei deshalb vor dem ersten Start des Update-Dienstes selbst an.

Die Datei muss vollständig sein. Der Update-Dienst übernimmt eine vorhandene Datei unverändert und ergänzt nichts. Fehlt die Zeile ASPNETCORE_URLS=http://+:8085, gilt der Standard des Images, Port 8080 statt 8085. Auch die kommentierten Zeilen (Server__SichereCookies, GLIBC_TUNABLES) gehören hinein, damit sie sich später einfach einschalten lassen. Übernehmen Sie deshalb den ganzen Standardinhalt von oben und hängen Sie Ihre Zeilen an.

Als ein Befehl für Salvia Software, Beispiel Synology (in der ersten Zeile Ihren Datenordner einsetzen; den ganzen Block von cat bis EOF auf einmal einfügen):

cat > /volume1/docker/tcmsoft/tcmsoft.env <<'EOF'
# Einstellungen des TCMSOFT-Containers - der Updater legt TCMSOFT mit diesen Werten an.
# Nach einer Änderung den Container entfernen (docker rm -f tcmsoft); der Updater legt ihn mit derselben Version neu an.

# Web-Port (auf Synology sind 5000/5001 vom System belegt). Mikroserver hinter Caddy: http://127.0.0.1:5000
ASPNETCORE_URLS=http://+:8085

# Erst einschalten, wenn TCMSOFT über HTTPS aufgerufen wird (Reverse-Proxy der NAS, Caddy):
# Server__SichereCookies=true

# Nur einschalten, wenn die Datenbank auf einem Linux-Kernel ab 6.19 nicht startet (z. B. Ubuntu 26.04 mit Kernel 7.0;
# im Protokoll „MongoDB cannot start: Linux kernel versions 6.19 and newer …“). Notlösung, MongoDB läuft dann etwas langsamer.
# GLIBC_TUNABLES=glibc.pthread.rseq=1

Produkt=Salvia
EOF

cat > … überschreibt eine vorhandene Datei. Den Befehl deshalb nur in einem neuen, leeren Datenordner ausführen. Den Ablauf im Zusammenhang beschreibt TCMSOFT einrichten im Abschnitt „Nur für Salvia Software: tcmsoft.env vorher anlegen“, für den Mikroserver dort im Abschnitt zum Mikroserver.

Einstellungen für den Installateur

Zeile Standard Wirkung
ASPNETCORE_URLS=http://+:8085 in der Datei http://+:8085; fehlt die Zeile, gilt http://+:8080 aus dem Image Adresse und Port der Weboberfläche (HTTP). + heißt: auf allen Netzwerkadressen des Geräts. Mikroserver hinter Caddy: http://127.0.0.1:5000 (nur auf dem Gerät selbst erreichbar). Ist der Port belegt, einen freien wählen, z. B. http://+:8086. Nach einem Portwechsel die Arbeitsplätze auf die neue Adresse umstellen und die Print Agents neu koppeln (Print Agent); bei HTTPS auch das Ziel des Reverse-Proxys anpassen.
Server__SichereCookies=true aus Anmelde-Cookies nur über HTTPS. Erst einschalten, wenn TCMSOFT über HTTPS aufgerufen wird (Netzwerk und HTTPS). Ohne HTTPS gelingt die Anmeldung scheinbar, hält aber nicht: Die Seite springt immer wieder zur Anmeldung zurück.
Produkt=Salvia fehlt (TCMSOFT) Nur für Salvia Software, die Heilpraktiker-Praxis mit Abrechnung nach GebüH; für TCMSOFT weglassen. Vor dem ersten Start von TCMSOFT eintragen. Beim Start wirkt die Zeile nur auf einer frischen Installation ohne Patienten, Rechnungen und Abrechnungsfälle mit Leistungen; bei einer Installation mit Daten vermerkt TCMSOFT sie nur im Protokoll. Legen Sie tcmsoft.env dafür selbst an, übernimmt der Update-Dienst die Datei unverändert: dann auch die übrigen Zeilen des Standardinhalts eintragen (oben, „Die Datei selbst anlegen“). Danach steht das Produkt in der Datenbank; die Zeile zu entfernen stellt nichts zurück. Die Zeile wirkt außerdem beim Neu-Initialisieren im Servermanagement (Datenbank neu initialisieren, Demodaten installieren): Die neue Datenbank bekommt das Produkt aus der Zeile, mit Produkt=TCMSOFT wieder TCMSOFT. Das ist der Rückweg, wenn eine Arztpraxis versehentlich als Salvia Software eingerichtet wurde, und löscht alle Daten (Servermanagement). Einzelheiten: Produkt und Praxisart.
TZ=Europe/Berlin Europe/Berlin (steht im Image) Zeitzone von TCMSOFT. Nur für eine andere Zeitzone eintragen. Die Zeitzone des Update-Dienstes stellen Sie getrennt ein (TCMSOFT einrichten).
GLIBC_TUNABLES=glibc.pthread.rseq=1 aus (das Mongo-Basisimage setzt glibc.pthread.rseq=0) Nur für Linux-Kernel ab 6.19, z. B. Ubuntu 26.04 mit Kernel 7.0 (uname -r). MongoDB 8 verweigert dort den Start; im Protokoll steht „MongoDB cannot start: Linux kernel versions 6.19 and newer has a known incompatibility with this version of MongoDB“, danach „MongoDB konnte nicht gestartet werden …“ mit dem Kernel und diesem Hinweis. Die Zeile lässt die Speicherverwaltung von MongoDB (TCMalloc) auf eine Beschleunigung verzichten, die mit diesen Kernels nicht zusammenpasst; die Datenbank läuft etwas langsamer. Vom Hersteller der Datenbank nur als Notlösung genannt: wieder auskommentieren, sobald ein TCMSOFT-Update eine passende MongoDB mitbringt. Beim Start steht im Protokoll „GLIBC_TUNABLES=… aus tcmsoft.env: MongoDB läuft ohne die schnellere Speicherverwaltung …“.
Mongo__Port=27018 27017 Port der Datenbank im Container. Nur ändern, wenn 27017 auf dem Gerät schon belegt ist; TCMSOFT meldet das beim Start mit „Port 27017 ist auf diesem Gerät schon belegt …“. Die Datenbank bleibt in jedem Fall nur auf 127.0.0.1 erreichbar.
Agent__HoechsteVersion=<Version> leer (keine Bremse) Notbremse für das Selbst-Update der Prismamed Agents an den Arbeitsplätzen, Windows und Mac gemeinsam: Sie spielen nichts Neueres als diese Version ein und verwerfen ein schon geladenes neueres Update, sobald sie sich bei TCMSOFT melden. Version dreiteilig wie im Feed angeben, z. B. 2026.10.701. Zum Aufheben die Zeile wieder entfernen. Einzelheiten: Updates der Agenten.
PrintAgent__HoechsteVersion=<Version> leer (keine Bremse) Dasselbe für die Print Agents, Windows und Mac gemeinsam.
Agent__DownloadBasis=<Adresse> https://downloads.tcmsoft.de/agent/ Ordner, aus dem Stammdaten › Agenten › Agent herunterladen… die Downloads anbietet. Nur für einen anderen Download-Server ändern.
PrintAgent__DownloadBasis=<Adresse> https://downloads.tcmsoft.de/printagent/ Dasselbe für Print Agent herunterladen… unter Stammdaten › Agenten und Print Agent herunterladen unter Stammdaten › Drucker.
Laborparameter__KatalogUrl= https://verwaltung.tcmsoft.cloud/api/Laborparameter/katalog Abruf des zentral gepflegten Laborparameter-Katalogs. Ein leerer Wert schaltet den Abruf aus.
Laborparameter__MeldungUrl= https://verwaltung.tcmsoft.cloud/api/Laborparameter/unbekannt Meldung unbekannter Laborkürzel an den Hersteller, ohne Patientendaten und ohne Kennung der Praxis. Ein leerer Wert schaltet die Meldung aus.

Zur Notbremse: Ein ausgeschalteter Arbeitsplatz kann ein schon geladenes Update beim nächsten Start noch einspielen, bevor er die Bremse erfährt. Bei einer fehlerhaften Agent-Version deshalb zusätzlich den TCMSOFT-Support informieren.

Stellschrauben nur nach Rücksprache mit dem Support

Zeile Standard Wirkung
TCMSOFT_FRUEHER_ABSTURZ=<Sekunden> 120 Bricht TCMSOFT dreimal hintereinander so kurz nach dem Start ab, beendet sich der Container. So erkennt der Update-Dienst einen missglückten Start.
TCMSOFT_FCV_TAGE=<Tage> 7 So viele Tage läuft eine neue MongoDB-Version im alten Datenformat, damit der Rückweg auf die vorige Version offen bleibt. Danach hebt TCMSOFT das Format an.
TCMSOFT_STOP_APP=<Sekunden> 6 Zeit für das saubere Beenden des Programms, bevor die Datenbank ihr Stoppsignal bekommt.

Nicht eintragen

Diese Werte setzt das Image passend zum Aufbau des Containers. Eine Änderung bricht den Betrieb:

Mongo__Host, Mongo__Benutzer, Mongo__PasswortDatei, Bibliothek__Pfad, DataProtection__Pfad, Updater__Pfad, Pharmindex__Pfad, Server__HttpsRedirect, CUPS_SERVER, LANG, LC_ALL, TCMSOFT_VERSION.

Weitere Einträge nur auf Anweisung des TCMSOFT-Supports. Die Einstellungen des Update-Dienstes (TCMSOFT_DATEN, UPDATE_UHRZEIT und seine Zeitzone) gehören nicht in tcmsoft.env, sondern in seinen docker run (TCMSOFT einrichten).

Einstellungen wirksam machen

Wozu: Docker liest tcmsoft.env nur, wenn der Container angelegt wird. docker restart tcmsoft übernimmt eine Änderung deshalb nicht. Stattdessen entfernen Sie den Container; der Update-Dienst legt ihn mit derselben Version und den neuen Einstellungen wieder an. Daten, Anmeldungen und Drucker bleiben erhalten.

TCMSOFT ist dabei einige Minuten nicht erreichbar. Machen Sie das außerhalb der Sprechzeiten und bitten Sie die Praxis, vorher ihre Arbeit zu speichern.

1. Datei bearbeiten

Als Administrator (sudo -i), denn die Datei gehört dem Benutzer root. Aktuellen Inhalt anzeigen:

cat <Datenordner>/tcmsoft.env

Bearbeiten Sie die Datei mit einem Editor auf dem Gerät (z. B. vi) oder mit diesen Befehlen:

Server__SichereCookies einschalten (das # entfernen):

sed -i 's/^# *Server__SichereCookies=true/Server__SichereCookies=true/' <Datenordner>/tcmsoft.env

Server__SichereCookies wieder ausschalten (auskommentieren):

sed -i 's/^Server__SichereCookies=true/# Server__SichereCookies=true/' <Datenordner>/tcmsoft.env

Eine Zeile anfügen, z. B. einen anderen Datenbank-Port:

echo 'Mongo__Port=27018' >> <Datenordner>/tcmsoft.env

Jede Einstellung nur einmal eintragen: eine vorhandene Zeile ändern, statt eine zweite anzufügen. Danach den Inhalt noch einmal mit cat prüfen.

2. Version des Update-Dienstes prüfen

grep UpdaterVersion <Datenordner>/updater/status.json

Ab Version 2026.10.7.1 legt der Update-Dienst TCMSOFT nach docker rm -f tcmsoft mit der zuletzt gelaufenen Version neu an (Ausnahme: deren Image fehlt, siehe „Wenn das Image fehlt“ unten). Der Dienst aktualisiert sich nachts selbst und hat diese Version deshalb in der Regel schon. Zeigt die Zeile eine ältere Version, lesen Sie vorher den Abschnitt „Ältere Update-Dienste“ unten.

3. Container neu anlegen lassen

docker rm -f tcmsoft

Der Update-Dienst bemerkt den fehlenden Container und legt ihn neu an:

Der Update-Dienst muss dafür laufen. Haben Sie ihn angehalten, zuerst docker start tcmsoft-updater.

Verfolgen:

docker logs -f tcmsoft-updater

Erfolg (Uhrzeiten weggelassen):

[updater] … TCMSOFT wird eingerichtet …
[updater] … TCMSOFT wird mit dem vorhandenen Image 2026.10.7.1 angelegt (zuletzt gelaufen: 2026.10.7.1) - neue Versionen kommen nur über das Update mit Sicherung.
[updater] … TCMSOFT 2026.10.7.1 wird gestartet …
[updater] … TCMSOFT 2026.10.7.1 neu angelegt: Der TCMSOFT-Container wurde mit Version 2026.10.7.1 neu angelegt (z. B. nach geänderten Einstellungen). Neue Versionen spielt der Update-Dienst wie gewohnt nachts oder über „Jetzt aktualisieren“ ein - mit Sicherung der Datenbank.

In TCMSOFT erscheint die Nachricht „TCMSOFT 2026.10.7.1 neu angelegt“. Ob eine Einstellung angekommen ist, zeigt z. B.:

docker exec tcmsoft printenv ASPNETCORE_URLS

Wenn TCMSOFT danach nicht startet

Meldung „TCMSOFT startet nicht“ (im Protokoll des Update-Dienstes und in den Nachrichten): „TCMSOFT … wurde neu angelegt, startet aber nicht. Meist liegt es an der letzten Änderung in tcmsoft.env im Datenordner (z. B. ein schon belegter Port; Einzelheiten: docker logs tcmsoft). …“

  1. docker logs tcmsoft lesen. Typische Meldungen und ihre Abhilfe stehen unter TCMSOFT einrichten und Meldungen und ihre Bedeutung.
  2. Die Änderung in tcmsoft.env korrigieren.
  3. Erneut docker rm -f tcmsoft.

Wenn das Image fehlt

Fehlt das Image der zuletzt gelaufenen Version (z. B. von Hand gelöscht), lädt der Update-Dienst die aktuelle Version von downloads.tcmsoft.de und startet sie ohne die sonst übliche Sicherung der Datenbank – nie eine ältere und nie eine auf diesem Gerät gescheiterte. Er warnt dann sofort mit „TCMSOFT … neu geladen“.

Ältere Update-Dienste (vor 2026.10.7.1)

Ein Update-Dienst vor Version 2026.10.7.1 konnte nach docker rm -f tcmsoft eine neuere Version sofort einrichten, ohne Sicherung und ohne Rückfall. Gehen Sie dort so vor:

  1. In TCMSOFT unter Stammdaten › Backup in der Karte Programmversion und Updates auf Jetzt prüfen klicken.
  2. Liegt eine neue Version bereit, stattdessen Jetzt aktualisieren wählen. Das Update sichert vorher die Datenbank und legt den Container mit der neuen Einstellung an. docker rm -f tcmsoft ist dann nicht nötig.
  3. Sonst docker rm -f tcmsoft wie oben.

Ab 2026.10.7.1 schadet diese Prüfung nicht.

Nur neu starten

docker restart tcmsoft genügt, wenn sich an tcmsoft.env nichts geändert hat, z. B. nach neuen Dateien in treiber/ oder schriften/ oder nach dem Wiederherstellen einer Sicherung. Einen angehaltenen Container tcmsoft startet der Update-Dienst nicht von selbst; dafür docker start tcmsoft.