TCMSOFT – Inhalt

TCMSOFT einrichten

Von Hand eingerichtet wird nur der Update-Dienst (Container tcmsoft-updater), und das genau einmal. Er legt im Datenordner die Einstellungsdatei tcmsoft.env an, lädt TCMSOFT von downloads.tcmsoft.de, prüft die Signatur des Herstellers und startet TCMSOFT (Container tcmsoft). Danach aktualisiert er TCMSOFT jede Nacht selbst, mit Sicherung der Datenbank und automatischem Rückfall, und er aktualisiert auch sich selbst. Alle Daten der Praxis liegen im Datenordner auf dem Gerät; ein Update tauscht nur den Container aus.

Vorher muss Docker laufen (Docker installieren) und das Gerät die Voraussetzungen erfüllen. Alle Befehle auf dieser Seite führen Sie per SSH als Administrator aus (sudo -i).

Stand dieser Seite: TCMSOFT 2026.10.8.1, Update-Dienst 2026.10.7.1.

Die Schritte im Überblick

  1. Architektur feststellen.
  2. Datenordner anlegen.
    • Nur für Salvia Software (Heilpraktiker-Praxis): tcmsoft.env mit der Zeile Produkt=Salvia vorher anlegen (Abschnitt nach Schritt 2).
  3. Update-Dienst laden.
  4. Update-Dienst starten.
  5. Ersten Start verfolgen und den Erfolg prüfen.

Danach geht es weiter mit Netzwerk und HTTPS und der Ersteinrichtung der Praxis.

Für den Umstieg eines Mikroservers von der bisherigen Installation gibt es unten einen eigenen Abschnitt.

Schritt 1: Architektur feststellen

Wozu: Den Update-Dienst gibt es für zwei Prozessorarten. Beim ersten Laden müssen Sie die passende Datei wählen. Danach erkennt der Dienst die Architektur selbst und lädt TCMSOFT und alle Updates passend.

uname -m
Ausgabe Architektur Datei des Update-Dienstes
x86_64 x64 (Intel, AMD) tcmsoft-updater-x64.tar
aarch64 ARM64 tcmsoft-updater-arm64.tar

Schritt 2: Datenordner anlegen

Wozu: In diesem Ordner liegt alles, was die Praxis ausmacht: Datenbank, Schlüssel, Einstellungen, Druckerkonfiguration. Im Container heißt er /data. Was in den Unterordnern liegt, steht unter Datenordner und tcmsoft.env.

Gerät Datenordner (Vorschlag) So anlegen
Synology /volume1/docker/tcmsoft In der File Station im Ordner docker einen Ordner tcmsoft anlegen.
UGREEN z. B. /mnt/data/docker/tcmsoft Mit der Dateiverwaltung der NAS oder per SSH mit mkdir -p und dem Pfad.
Linux-Server, Mikroserver /var/lib/tcmsoft mkdir -p /var/lib/tcmsoft

Im Folgenden steht <Datenordner> für diesen vollständigen Pfad.

Anforderungen an den Ordner:

Erfolg prüfen:

ls -la <Datenordner>

Der Ordner existiert und enthält bei einer neuen Praxis noch nichts von TCMSOFT, vor allem keinen Ordner mongodb/.

Nur für Salvia Software: tcmsoft.env vorher anlegen

Wozu: Aus demselben Image entsteht TCMSOFT (Arztpraxis, GOÄ) oder Salvia Software (Heilpraktiker-Praxis, GebüH). Salvia Software legen Sie fest, bevor TCMSOFT zum ersten Mal startet: mit der Zeile Produkt=Salvia in tcmsoft.env. Der Update-Dienst legt tcmsoft.env nur an, wenn sie fehlt, und ergänzt eine vorhandene Datei nie. Deshalb legen Sie die Datei hier selbst an, mit dem vollständigen Standardinhalt und der zusätzlichen Zeile. Ohne die Zeile ASPNETCORE_URLS=http://+:8085 liefe TCMSOFT auf Port 8080 statt 8085.

Für TCMSOFT überspringen Sie diesen Abschnitt.

Wie: Den ganzen Block auf einmal kopieren und in die SSH-Sitzung einfügen, von cat bis einschließlich EOF. Beispiel Synology mit dem Datenordner /volume1/docker/tcmsoft; auf einem anderen Gerät setzen Sie in der ersten Zeile Ihren Datenordner ein (z. B. /mnt/data/docker/tcmsoft auf einer UGREEN oder /var/lib/tcmsoft auf einem Linux-Server). Für den Mikroserver hinter Caddy gilt ein eigener Befehl, siehe den Abschnitt zum Mikroserver unten.

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

Der Datenordner ist zu diesem Zeitpunkt noch leer. Liegt darin schon eine tcmsoft.env, den Befehl nicht ausführen: cat > überschreibt die vorhandene Datei. Dann lief der Update-Dienst bereits, und es gilt „Zeile vergessen“ unter Produkt und Praxisart.

Erfolg prüfen:

cat /volume1/docker/tcmsoft/tcmsoft.env

Die Datei zeigt den Inhalt von oben, die letzte Zeile ist Produkt=Salvia. Was die Zeile bewirkt und wann sie nicht wirkt, steht unter Produkt und Praxisart.

Schritt 3: Update-Dienst laden

Wozu: Der Update-Dienst kommt als Image-Datei von downloads.tcmsoft.de. Eine Registry oder Docker Hub braucht es nicht.

x64:

curl -fsSL https://downloads.tcmsoft.de/docker/tcmsoft-updater-x64.tar | docker load

ARM64:

curl -fsSL https://downloads.tcmsoft.de/docker/tcmsoft-updater-arm64.tar | docker load

curl lädt die Datei, docker load übernimmt das Image direkt in Docker. Es wird nichts im Datenordner abgelegt.

Erfolg: Am Ende stehen zwei Zeilen dieser Art (die Versionsnummer ist die des aktuellen Update-Dienstes):

Loaded image: tcmsoft-updater:2026.10.7.1
Loaded image: tcmsoft-updater:latest

Wenn nicht: Meldet curl einen Fehler (z. B. „Could not resolve host“), erreicht das Gerät downloads.tcmsoft.de nicht. Internetverbindung und DNS des Geräts prüfen oder ohne Internet einrichten (Abschnitt „Ohne Internet einrichten“ unten).

Schritt 4: Update-Dienst starten

Wozu: Dieser Befehl legt den Container tcmsoft-updater an. Er ist der einzige docker run, den Sie für TCMSOFT selbst ausführen.

Allgemein:

docker run -d --name tcmsoft-updater --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v <Datenordner>:<Datenordner> -e TCMSOFT_DATEN=<Datenordner> tcmsoft-updater

Beispiel Synology mit dem Datenordner /volume1/docker/tcmsoft:

docker run -d --name tcmsoft-updater --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/tcmsoft:/volume1/docker/tcmsoft -e TCMSOFT_DATEN=/volume1/docker/tcmsoft tcmsoft-updater

Der Datenordner steht dreimal mit genau demselben Pfad im Befehl: links und rechts vom Doppelpunkt und in TCMSOFT_DATEN.

Die Teile des Befehls

Teil Bedeutung
docker run -d Legt einen neuen Container an und startet ihn im Hintergrund.
--name tcmsoft-updater Fester Name. Unter diesem Namen löst ein neuer Update-Dienst bei seinem Selbst-Update den alten ab. Alle Befehle in diesem Handbuch verwenden ihn. Nicht ändern.
--restart unless-stopped Docker startet den Dienst nach einem Absturz und nach einem Neustart des Geräts wieder, außer er wurde von Hand angehalten (docker stop tcmsoft-updater).
-v /var/run/docker.sock:/var/run/docker.sock Gibt dem Dienst Zugriff auf Docker des Geräts. Damit legt er TCMSOFT an und tauscht es bei Updates aus. Er lädt ausschließlich vom Hersteller signierte Images.
-v <Datenordner>:<Datenordner> Bindet den Datenordner in den Dienst ein, links und rechts vom Doppelpunkt mit demselben Pfad. Grund: Der Dienst legt TCMSOFT über Docker des Geräts an und gibt dabei diesen Pfad weiter. Docker versteht nur Pfade des Geräts.
-e TCMSOFT_DATEN=<Datenordner> Sagt dem Dienst, wo der Datenordner liegt. Pflicht; ein vollständiger Pfad, der mit / beginnt.
tcmsoft-updater Das in Schritt 3 geladene Image. Ohne Versionsangabe nimmt Docker tcmsoft-updater:latest.

Erfolg: Docker antwortet mit einer langen Kennung (der Container-ID) und kehrt zurück.

Optionale Angaben

Nur bei Bedarf, jeweils vor dem letzten Wort tcmsoft-updater einfügen:

Angabe Wirkung Standard
-e UPDATE_UHRZEIT=04:30 Uhrzeit der nächtlichen Prüfung, Format H:mm oder HH:mm. Automatisch eingespielt wird nur in den 3 Stunden ab dieser Uhrzeit. Ein ungültiger Wert fällt ohne Meldung auf 03:00 zurück; prüfen Sie deshalb die erste Zeile im Protokoll. 03:00
-e TZ=<Zeitzone> Zeitzone des Update-Dienstes, z. B. Europe/Berlin. Nur für eine andere Zeitzone angeben. Europe/Berlin

Setzen Sie keine weiteren Variablen. Bei seinem Selbst-Update gibt der Dienst nur TCMSOFT_DATEN, UPDATE_UHRZEIT, TZ, MANIFEST_BASIS und TCMSOFT_INSTANZ an seinen Nachfolger weiter; andere Angaben gingen dabei verloren. MANIFEST_BASIS dient nur Proben des Herstellers, TCMSOFT_INSTANZ nur dem Demo-Server des Herstellers. Beide gehören nicht in eine Praxis.

Schritt 5: Ersten Start verfolgen

Wozu: Der Dienst lädt jetzt TCMSOFT (rund 1 GB) und startet es. Je nach Internetverbindung dauert das einige Minuten. Beim ersten Start lädt TCMSOFT außerdem die TCM-Bibliothek, das dauert noch einmal einige Minuten. Der Dienst wartet bis zu 30 Minuten, bis TCMSOFT betriebsbereit meldet.

docker logs -f tcmsoft-updater

Strg+C beendet nur die Anzeige, der Dienst läuft weiter.

So sieht ein erfolgreicher erster Start aus (Beispiel Synology, x64; Uhrzeiten und Dauer sind Beispiele):

[updater] 2026-10-08 14:02:11 TCMSOFT-Updater 2026.10.7.1 startet: Datenordner /volume1/docker/tcmsoft, Prüfung täglich um 03:00.
[updater] 2026-10-08 14:02:12 Einstellungen für TCMSOFT angelegt: /volume1/docker/tcmsoft/tcmsoft.env
[updater] 2026-10-08 14:02:12 TCMSOFT wird eingerichtet …
[updater] 2026-10-08 14:02:13 TCMSOFT 2026.10.8.1 wird heruntergeladen …
[updater] 2026-10-08 14:02:40 Download tcmsoft-2026.10.8.1-x64.tar: 10 %
…
[updater] 2026-10-08 14:06:05 Download tcmsoft-2026.10.8.1-x64.tar: 100 %
[updater] 2026-10-08 14:06:20 TCMSOFT 2026.10.8.1 wird geladen …
[updater] 2026-10-08 14:07:30 TCMSOFT 2026.10.8.1 wird gestartet …
[updater] 2026-10-08 14:12:45 TCMSOFT 2026.10.8.1 eingerichtet: TCMSOFT ist eingerichtet und aktualisiert sich ab jetzt jede Nacht selbst.

Die erste Zeile zeigt Version, Datenordner und die Uhrzeit der nächtlichen Prüfung. Lag tcmsoft.env schon im Datenordner (z. B. beim Mikroserver oder bei Salvia Software), fehlt die Zeile „Einstellungen für TCMSOFT angelegt“; eine vorhandene Datei überschreibt der Dienst nie. Auch bei Salvia Software spricht das Protokoll des Update-Dienstes von TCMSOFT.

Sobald der Container tcmsoft angelegt ist, zeigt dieser Befehl in einer zweiten SSH-Sitzung, was TCMSOFT selbst tut:

docker logs -f tcmsoft

Die Zeilen des Startablaufs beginnen mit [tcmsoft], dazwischen stehen Zeilen des Programms und des Drucksystems. Wichtig sind diese (in dieser Reihenfolge):

[tcmsoft] … MongoDB wird gestartet (Daten in /data/mongodb)
[tcmsoft] … Datenbank-Konto angelegt (neue Installation)
[tcmsoft] … MongoDB läuft (nur lokal, mit Anmeldung)
[tcmsoft] … CUPS und PrintAgent gestartet
[tcmsoft] … TCMSOFT 2026.10.8.1 wird gestartet (erreichbar über Port 8085)
[tcmsoft] … TCMSOFT läuft

Woran Sie den Erfolg erkennen

  1. Im Protokoll des Update-Dienstes steht „TCMSOFT 2026.10.8.1 eingerichtet: TCMSOFT ist eingerichtet und aktualisiert sich ab jetzt jede Nacht selbst.“

  2. Beide Container laufen, TCMSOFT ist „healthy“:

    docker ps --format '{{.Names}}: {{.Status}}'
    

    Erwartet (Laufzeiten sind Beispiele):

    tcmsoft: Up 6 minutes (healthy)
    tcmsoft-updater: Up 12 minutes
    

    „(health: starting)“ heißt: TCMSOFT startet noch. Abwarten.

  3. Im Browser eines Arbeitsplatzes öffnet http://<NAS-Adresse>:8085 die Ersteinrichtung („Willkommen!“), in der das erste Konto angelegt wird. Erscheint stattdessen die Seite Anmelden mit dem Hinweis „Noch kein Konto eingerichtet“, führt die Schaltfläche Zur Ersteinrichtung dorthin. Wie es weitergeht, steht unter Ersteinrichtung der Praxis.

  4. Im Datenordner liegen jetzt tcmsoft.env und die Unterordner mongodb/, keys/, updater/ usw.

  5. Nach der Anmeldung zeigt Stammdaten › Backup die Karte Programmversion und Updates: im Feld Installierte Version steht 2026.10.8.1, unter Prüfung täglich um 03:00.

  6. Nur Salvia Software: Die Anmeldeseite zeigt die Salvia-Bildmarke (ein Blatt) und „Salvia Software“ statt „TCMSOFT“, nach der Anmeldung steht oben in der Seitenleiste „Salvia“, und nach der Praxisart wird nicht gefragt. In docker logs tcmsoft steht „Neue Installation als Salvia eingerichtet (Parameter Produkt in tcmsoft.env).“ Zeigt die Anmeldeseite „TCMSOFT“, hat der erste Start die Zeile nicht übernommen (gefehlt oder Tippfehler): siehe „Wenn nicht“ und „Zeile vergessen“ unter Produkt und Praxisart.

Wenn es nicht klappt

Meldungen des Update-Dienstes

Die Meldungen stehen in docker logs tcmsoft-updater. Bei den ersten fünf Meldungen der Tabelle beendet sich der Dienst nach 30 Sekunden; Docker startet ihn neu, und die Meldung wiederholt sich, bis der Befehl korrigiert ist. Die beiden letzten Meldungen erscheinen, während der Dienst läuft.

Meldung im Protokoll Ursache Was tun
„TCMSOFT_DATEN fehlt: beim Anlegen des Updaters den Datenordner angeben, …“ -e TCMSOFT_DATEN=… fehlt. Befehl mit der Angabe neu ausführen (siehe unten).
„TCMSOFT_DATEN muss ein vollständiger Pfad sein (beginnt mit /), nicht „…“.“ Pfad ohne / am Anfang. Vollständigen Pfad angeben.
„Der Datenordner … ist im Updater nicht eingebunden - beim Anlegen „-v …:…“ angeben.“ -v <Datenordner>:<Datenordner> fehlt oder nennt einen anderen Pfad als TCMSOFT_DATEN. Alle drei Pfade gleich schreiben.
„Der Datenordner muss im Updater unter demselben Pfad eingebunden sein wie auf dem Server: -v …:…“ Links und rechts vom Doppelpunkt stehen verschiedene Pfade. Links und rechts denselben Pfad angeben.
„Der Updater erreicht Docker nicht: … - ist beim Anlegen „-v /var/run/docker.sock:/var/run/docker.sock“ angegeben?“ Die Socket-Einbindung fehlt, oder Docker legt seinen Socket woanders an. Angabe ergänzen; sonst Docker installieren prüfen.
„TCMSOFT konnte nicht eingerichtet werden: … - neuer Versuch in 10 Minuten.“ Der Grund steht in der Meldung, z. B. „Es ist noch kein TCMSOFT-Image vorhanden, und downloads.tcmsoft.de ist nicht erreichbar …“. Internetverbindung des Geräts prüfen. Der Dienst versucht es alle 10 Minuten neu. Sonst den TCMSOFT-Support informieren.
„TCMSOFT startet nicht: …“ TCMSOFT wurde angelegt, wird aber nicht betriebsbereit. docker logs tcmsoft lesen (nächste Tabelle).

Den Befehl korrigieren: Entfernen Sie den falsch angelegten Update-Dienst und führen Sie Schritt 4 mit dem korrigierten Befehl erneut aus. Der Datenordner und ein schon angelegter Container tcmsoft bleiben dabei unberührt.

docker rm -f tcmsoft-updater

TCMSOFT startet nicht

Die Meldungen stehen in docker logs tcmsoft.

Meldung im Protokoll Was tun
„Dieser Prozessor unterstützt kein AVX - MongoDB 8.3 läuft auf diesem Gerät nicht. …“ Das Gerät ist zu alt für TCMSOFT. Ein anderes Gerät ist nötig.
„Port 8085 ist auf diesem Gerät schon belegt, …“ In tcmsoft.env einen freien Port eintragen, z. B. ASPNETCORE_URLS=http://+:8086, dann docker rm -f tcmsoft (siehe Datenordner und tcmsoft.env).
„Port 27017 ist auf diesem Gerät schon belegt - vermutlich läuft dort eine andere MongoDB …“ Die andere Datenbank beenden (Mikroserver: systemctl disable --now mongod) oder in tcmsoft.env die Zeile Mongo__Port=27018 eintragen, dann docker rm -f tcmsoft.
„Der Datenordner /data ist nicht beschreibbar. …“ Einen lokalen, beschreibbaren Datenordner verwenden (siehe Schritt 2).
„Warnung: Port 9632 ist auf diesem Gerät schon belegt - läuft dort noch der PrintAgent einer früheren Installation? …“ Den alten PrintAgent beenden (Mikroserver: systemctl disable --now printagent), dann docker restart tcmsoft.

Nach einer Änderung in tcmsoft.env legt der Update-Dienst TCMSOFT nach docker rm -f tcmsoft mit derselben Version neu an. Weitere Meldungen und ihre Bedeutung stehen unter Meldungen und ihre Bedeutung.

Ohne Internet einrichten (vom USB-Stick)

Wozu: Hat das Gerät bei der Einrichtung noch kein Internet, laden Sie beide Images von Dateien.

  1. An einem Rechner mit Internet die beiden Dateien der aktuellen Version herunterladen (x64, Stand 2026.10.8.1):

    • https://downloads.tcmsoft.de/docker/tcmsoft-updater-x64.tar
    • https://downloads.tcmsoft.de/docker/tcmsoft-2026.10.8.1-x64.tar

    Für ARM64 heißen sie tcmsoft-updater-arm64.tar und tcmsoft-2026.10.8.1-arm64.tar (siehe Schritt 1).

  2. Die Dateien auf das Gerät bringen, z. B. per USB-Stick, und beide laden:

    docker load -i <Ordner mit den Dateien>/tcmsoft-updater-x64.tar
    
    docker load -i <Ordner mit den Dateien>/tcmsoft-2026.10.8.1-x64.tar
    
  3. Datenordner anlegen und den Update-Dienst starten wie in Schritt 2 und 4. Für Salvia Software dazwischen tcmsoft.env anlegen wie unter „Nur für Salvia Software: tcmsoft.env vorher anlegen“.

Der Dienst nimmt dann das vorhandene TCMSOFT-Image. Im Protokoll steht statt des Downloads: „TCMSOFT wird mit dem vorhandenen Image 2026.10.8.1 angelegt (zuletzt gelaufen: unbekannt) - neue Versionen kommen nur über das Update mit Sicherung.“ Neuere Versionen holt er über das nächtliche Update, sobald das Gerät ins Internet kommt.

Mikroserver: Umstieg von der bisherigen Installation

Auf dem Mikroserver bleibt Caddy der Webserver. TCMSOFT lauscht im Container nur auf 127.0.0.1:5000, von außen geht es nur über Caddy. Die vorhandene Caddy-Konfiguration (reverse_proxy :5000) bleibt unverändert.

  1. Sicherung herunterladen: In der bisherigen Installation das Verschlüsselungspasswort der Sicherung notieren und die Sicherung herunterladen. Den Ablauf beschreibt Datensicherung und Umzug.

  2. Docker Engine installieren: siehe Docker installieren.

  3. Alte Dienste anhalten. Sie belegen sonst dieselben Ports wie TCMSOFT im Container:

    systemctl disable --now tcmsoft printagent mongod
    
  4. Datenordner und Einstellungen anlegen. Die Datei tcmsoft.env entsteht hier vorab, damit TCMSOFT nur auf 127.0.0.1:5000 lauscht. Eine vorhandene Datei überschreibt der Update-Dienst nicht.

    mkdir -p /var/lib/tcmsoft && printf 'ASPNETCORE_URLS=http://127.0.0.1:5000\nServer__SichereCookies=true\n\n# Nur einschalten, wenn MongoDB auf Linux-Kernel ab 6.19 nicht startet (z. B. Ubuntu 26.04):\n# GLIBC_TUNABLES=glibc.pthread.rseq=1\n' > /var/lib/tcmsoft/tcmsoft.env
    

    Auf Ubuntu 26.04 (Kernel 7.0, uname -r) startet die Datenbank nur mit eingeschalteter letzter Zeile: dort das # entfernen (siehe Datenordner und tcmsoft.env).

    Salvia Software (Heilpraktiker-Praxis): Statt des Befehls oben diesen ausführen. Er legt dieselbe Datei mit der zusätzlichen Zeile Produkt=Salvia an; Port 5000 und Server__SichereCookies=true bleiben.

    mkdir -p /var/lib/tcmsoft && printf 'ASPNETCORE_URLS=http://127.0.0.1:5000\nServer__SichereCookies=true\nProdukt=Salvia\n\n# Nur einschalten, wenn MongoDB auf Linux-Kernel ab 6.19 nicht startet (z. B. Ubuntu 26.04):\n# GLIBC_TUNABLES=glibc.pthread.rseq=1\n' > /var/lib/tcmsoft/tcmsoft.env
    

    Für Salvia Software wird in Schritt 8 keine Sicherung aus TCMSOFT wiederhergestellt: Das Produkt kommt mit der Sicherung, die Installation wäre danach wieder TCMSOFT. Die Mikroserver-Provisionierung der früheren Installation (ohne Docker) taugt nicht für Salvia Software: Sie legt eine Arztpraxis an.

  5. Update-Dienst laden:

    curl -fsSL https://downloads.tcmsoft.de/docker/tcmsoft-updater-x64.tar | docker load
    
  6. Update-Dienst starten:

    docker run -d --name tcmsoft-updater --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/tcmsoft:/var/lib/tcmsoft -e TCMSOFT_DATEN=/var/lib/tcmsoft tcmsoft-updater
    
  7. Ersten Start verfolgen wie in Schritt 5. Im Protokoll von TCMSOFT steht dann „TCMSOFT 2026.10.8.1 wird gestartet (erreichbar über Port 5000)“.

  8. TCMSOFT unter der bisherigen Adresse des Mikroservers aufrufen, das erste Konto anlegen und die Sicherung wiederherstellen (Datensicherung und Umzug).

Server__SichereCookies=true setzt voraus, dass Caddy TCMSOFT über HTTPS ausliefert. Wird TCMSOFT über http:// aufgerufen, gelingt die Anmeldung scheinbar, hält aber nicht: Die Seite springt immer wieder zur Anmeldung zurück. Dann HTTPS einrichten (Netzwerk und HTTPS) oder die Zeile in tcmsoft.env mit # auskommentieren und TCMSOFT neu anlegen lassen (Datenordner und tcmsoft.env).

Zeitzone und Uhrzeit

Zeitzone: Beide Container arbeiten mit der Zeitzone Europe/Berlin; sie steht schon in den Images. Für Praxen in Deutschland ist nichts einzustellen.

Uhrzeit: Container haben keine eigene Uhr, sie übernehmen die Uhrzeit des Geräts. Stellen Sie deshalb auf der NAS bzw. dem Server die automatische Zeitsynchronisierung (NTP) ein. Nach Uhrzeit und Zeitzone richten sich:

Prüfen:

date
docker exec tcmsoft date

Beide Befehle zeigen die aktuelle Uhrzeit, der zweite in deutscher Zeit (Zeitzone CET bzw. CEST).

Andere Zeitzone: für TCMSOFT die Zeile TZ=<Zeitzone> in tcmsoft.env (siehe Datenordner und tcmsoft.env), für den Update-Dienst -e TZ=<Zeitzone> beim Anlegen (wie unten).

Uhrzeit der nächtlichen Prüfung ändern: Die Uhrzeit gehört zum Update-Dienst, nicht zu tcmsoft.env.

  1. Auf der Backup-Seite nachsehen, dass gerade kein Update läuft (dann steht dort ein Hinweis mit dem aktuellen Schritt).

  2. Den Update-Dienst entfernen. TCMSOFT läuft dabei weiter, der Datenordner bleibt unberührt.

    docker rm -f tcmsoft-updater
    
  3. Den Befehl aus Schritt 4 mit der zusätzlichen Angabe ausführen, z. B. für 04:30:

    docker run -d --name tcmsoft-updater --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v <Datenordner>:<Datenordner> -e TCMSOFT_DATEN=<Datenordner> -e UPDATE_UHRZEIT=04:30 tcmsoft-updater
    
  4. Erfolg: Die erste Zeile in docker logs tcmsoft-updater endet mit „Prüfung täglich um 04:30.“, und die Backup-Seite zeigt unter Prüfung täglich um die neue Uhrzeit.

Startet der Update-Dienst nach der eingestellten Uhrzeit neu, prüft er an diesem Tag nicht mehr. Die nächste Prüfung folgt in der kommenden Nacht.

Zur Kontrolle: So legt der Update-Dienst TCMSOFT an

Den Container tcmsoft legen Sie nie selbst an. Der Update-Dienst legt ihn mit diesen Angaben an; nachprüfen lassen sie sich mit docker inspect tcmsoft.

docker run -d --name tcmsoft --network host --restart unless-stopped --stop-timeout 120 --label de.tcmsoft.verwaltet=updater --env-file <Datenordner>/tcmsoft.env -v <Datenordner>:/data --log-opt max-size=20m --log-opt max-file=5 tcmsoft:<Version>
Teil Bedeutung
--network host Host-Netz. Nur so erreichen die Bonjour-Meldungen der Drucker den Container. Dafür teilt sich TCMSOFT alle Ports mit dem Gerät.
--restart unless-stopped Docker startet TCMSOFT nach einem Absturz und nach einem Neustart des Geräts wieder.
--stop-timeout 120 Beim Beenden hat TCMSOFT bis zu 120 Sekunden Zeit, damit die Datenbank sauber schließt.
--label de.tcmsoft.verwaltet=updater Kennzeichen für Container, die der Update-Dienst angelegt hat.
--env-file <Datenordner>/tcmsoft.env Die Einstellungen aus tcmsoft.env. Docker liest sie nur beim Anlegen.
-v <Datenordner>:/data Der Datenordner, im Container /data.
--log-opt max-size=20m --log-opt max-file=5 Begrenzt das Protokoll auf 5 Dateien zu je 20 MB. Kommt nur dazu, wenn Docker mit dem Protokolltreiber json-file oder local läuft.
tcmsoft:<Version> Das Image der Version, z. B. tcmsoft:2026.10.8.1.

Bei seinem Selbst-Update legt der Update-Dienst seinen Nachfolger selbst an. Dieser Container tcmsoft-updater trägt dann zusätzlich das Kennzeichen de.tcmsoft.verwaltet=updater, dieselbe Protokollbegrenzung und die Variablen UPDATER_UEBERGABE und UPDATER_VORGAENGER. Das ist so gewollt. Der erste, von Hand angelegte Update-Dienst hat keine Protokollbegrenzung, weil der Befehl in Schritt 4 keine setzt; das ändert sich mit dem ersten Selbst-Update.

Was danach von selbst passiert