Zum Hauptinhalt springen

Standort-Installation

End-to-End-Anleitung für die erstmalige Inbetriebnahme eines ProfiPOS- Standorts. Dauer realistisch: 2–4 Stunden für einen kleinen Standort, ein Tag für einen größeren Standort mit mehreren Kassen, Küchendisplay und Bondrucker pro Bereich.

Inhalt

  1. Hardware-Voraussetzungen
  2. Netzwerk-Voraussetzungen
  3. Bondrucker-Verkabelung
  4. EC-Terminal-Anschluss
  5. TSE-Anschluss
  6. MQTT-Broker-Setup
  7. Server-Installer-Schritte
  8. Smoke-Test nach Installation

Hardware-Voraussetzungen

Standort-Server

KomponenteMinimumEmpfohlen
CPU2 Cores4 Cores
RAM4 GB8 GB
SSD64 GB128 GB NVMe
Netzwerk1× Gigabit-LAN2× Gigabit-LAN (Bond/LACP)
USB2× USB-A (TSE-Stick + Reserve)4× USB-A
Stromversorgung230 V230 V + USV

OS-Empfehlung: Debian 12 oder Ubuntu 24.04 LTS für Linux, Windows Server 2022 oder Windows 11 IoT Enterprise für Windows.

Hinweis Standort-Server vs. Cloud: Der Standort-Server hält ausschließlich Standort-eigene Daten (Bestellungen, Sessions, TSE-Log). Stammdaten kommen aus der Cloud. Bei Ausfall der Cloud arbeitet der Standort autark weiter und synchronisiert nach Wiederverbindung.

Kasse (Windows-Thin-Client)

KomponenteMinimum
OSWindows 10/11 Pro 64-Bit
RAM4 GB
SSD32 GB
Touchscreen15" oder 21" kapazitiv
Schnittstellen1× LAN, 2× USB (TSE + Drucker), Kassenlade RJ12

Bondrucker

  • ESC/POS-kompatibel (Epson TM-T20, TM-T88, Star TSP-Reihe)
  • LAN-Anbindung (TCP 9100) — empfohlen
  • USB direkt an Kasse — Fallback
  • Bonbreite 80 mm Standard, 58 mm möglich

EC-Terminal (optional, falls Kartenzahlung)

  • ZVT-Protokoll über TCP/IP (Standard Port 22000)
  • Verax VX 520, Ingenico Move/5000, CCV A35 — getestet
  • Aktiviertes ZVT-Subset auf dem Terminal

TSE (Pflicht ab Sprint AX!)

  • Swissbit USB-TSE (Standard, BSI-zertifiziert bis 2032)
  • Ein Stick pro physikalischer Kasse
  • USB-A direkt an der Kasse (nicht am Hub!)

Optionale Zusatzgeräte

  • Kundendisplay (WPF auf Mini-PC oder Touch-PC seitlich an Kasse)
  • Küchendisplay (Tablet 10–13" wandmontiert mit Bumper)
  • Selfservice-Terminal (kapazitiver Touch ≥ 21", Bondrucker integriert)
  • Werbedisplay (TV mit Android-Stick, HDMI-CEC für Standby-Steuerung)
  • MDB-Terminal (Vending-Adapter mit MDB-Bus, RS485-Anschluss)
  • LED-Modul (ESP32 mit WS2812-LEDs + 4× Relais, Ethernet W5500)

Netzwerk-Voraussetzungen

LAN-Topologie

                  Internet (Provider)

┌────┴────┐
│ Router │
└────┬────┘

┌────┴────┐
│ Switch │ Managed L2 (VLAN-fähig empfohlen)
└─┬─┬─┬─┬─┘
│ │ │ │
┌───────────┘ │ │ └───────────┐
│ │ │ │
Standort- Kassen + Bondrucker +
Server Kunden-Display EC-Terminal +
(statisch (DHCP-Reser- Küchendisplay +
192.168.1.10) vierung) LED-Modul

IP-Schema (Empfehlung)

BereichIP-RangeZweck
Server.10Standort-Server (statisch)
Drucker.20–.29Bondrucker (statisch oder DHCP-Reservierung)
Kassen.30–.59Windows-Kassen (DHCP-Reservierung anhand MAC)
Displays.60–.79Kundendisplay, Küchendisplay
Mobil.80–.149goapp, Lieferapp, Selfservice (DHCP)
Hardware.150–.199EC-Terminal, TSE, LED-Modul

Pflicht-Ports (Standort-LAN)

PortProtokollZweck
80, 443TCPCloud-Sync HTTPS
1883TCPMQTT
8883TCPMQTT TLS (optional)
8080TCPStandort-Server REST
9100TCPBondrucker (ESC/POS)
22000TCPEC-Terminal (ZVT)
34567UDPGeräte-Discovery (Broadcast)
34568TCPGeräte-Pairing

Firewall

  • Cloud-Verbindung: ausgehend nur HTTPS-443 zu *.profipos.de und api.esrv.center (Telegram-Proxy).
  • Eingehend: alle oben genannten Ports nur im LAN, NIEMALS WAN.
  • VPN: Wartungs-VPN auf den Standort-Server (Wireguard empfohlen, Anesda-Wartungs-VPN-Profil per Telegram).

Bondrucker-Verkabelung

LAN-Variante (empfohlen)

  1. Drucker per Patchkabel an Switch.
  2. IP per DHCP-Reservierung oder manuell über die Drucker-Konsole.
  3. Standort-Server scannt beim ersten Start via arp-scan und meldet neue Drucker im Backoffice unter „Geräte → Bondrucker (unzugeordnet)".
  4. Backoffice: Drucker auswählen, Bereich (Theke/Küche/Bar) zuordnen, Bonbreite (58/80) und Auto-Cut konfigurieren.

USB-Variante

  1. Drucker per USB an Windows-Kasse.
  2. Windows installiert generischen ESC/POS-Treiber.
  3. In der ProfiPOS-Kasse unter „Einstellungen → Drucker" das Gerät wählen und einen Testbon drucken.

Kassenlade

  • Per RJ12-Kabel an den Drucker.
  • Trigger über ESC/POS ESC p 0 50 50 (Pin 2, 50 ms).
  • Konfiguration im Backoffice unter dem jeweiligen Drucker.

EC-Terminal-Anschluss

  1. Terminal per LAN an Switch.
  2. Statische IP oder DHCP-Reservierung.
  3. ZVT-Port (Standard 22000) auf dem Terminal aktivieren — siehe Hersteller-Doku (z. B. Verifone Konfig-Menü 3-3-2-1).
  4. Im Backoffice unter „Geräte → EC-Terminals" hinzufügen: IP, Port, Passwort (Default 000000), Provider (Concardis, PaymentLink, …).
  5. Testtransaktion über die Kasse („Einstellungen → EC-Test").

Achtung: Das Terminal muss vom Provider auf ZVT-Subset freigeschaltet sein. Reine VAS-Geräte sprechen kein ZVT.


TSE-Anschluss

Swissbit USB-TSE

  1. Stick vor dem ersten Start in eine USB-A-Buchse der Kasse stecken.
  2. ProfiPOS-Kasse startet, erkennt den Stick und fragt nach der Admin-PIN (Default 12345).
  3. Kasse initialisiert die TSE mit Mandanten-ID + Standort-Kürzel.
  4. Backoffice zeigt unter „Geräte → TSE" Seriennummer + Zertifikats- Gültigkeit (Pflicht-Erinnerung 90 Tage vor Ablauf).

Mehrere Kassen — ein TSE pro Kasse?

Empfehlung: Ja, eine TSE pro Kasse. Cloud-TSE (Fiskaly) als Fallback ist geplant, aber USB-TSE ist offline-fähig und billiger.

TSE-Ausfall

  • Kasse blockt nach 24 h neue Verkäufe.
  • Bons werden mit [TSE AUSFALL] gedruckt.
  • Backoffice + Telegram-Alert sofort.
  • Nach Wiederinbetriebnahme werden gepufferte Transaktionen nachsigniert.

MQTT-Broker-Setup (Mosquitto)

Wird vom Server-Installer automatisch installiert. Manuelle Konfiguration nur falls externer Broker gewünscht.

Linux (apt)

sudo apt install mosquitto mosquitto-clients
sudo systemctl enable --now mosquitto

Windows

Wird vom Server-Installer als Service mosquitto registriert.

Konfiguration

Datei /etc/mosquitto/conf.d/profipos.conf (Linux) bzw. C:\Program Files\Mosquitto\conf\profipos.conf (Windows):

listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd
acl_file /etc/mosquitto/acl
log_dest file /var/log/mosquitto/mosquitto.log
log_type error
log_type warning
persistence true
persistence_location /var/lib/mosquitto/

Benutzer + ACL legt der Standort-Server beim Pairing der Geräte automatisch an.


Server-Installer-Schritte

Linux

curl -L https://github.com/freezweb/de.profipos.server/releases/latest/download/install.sh | sudo bash

Das Skript:

  • Installiert dotnet-runtime-8.0, mosquitto, mariadb-server
  • Legt User profipos an
  • Kopiert Binaries nach /opt/profipos/server
  • Erstellt systemd-Unit profipos-server.service
  • Öffnet Ports in ufw
  • Druckt am Ende den Pairing-Code zur Cloud-Freischaltung

Windows

  1. ProfiPOS-Server-Setup-6.x.x.exe als Administrator ausführen.
  2. Standard-Pfad C:\Program Files\ProfiPOS\Server.
  3. Installer richtet ein:
    • .NET 8 self-contained (im Installer enthalten)
    • Mosquitto-Service (1883)
    • MariaDB (separate Installation empfohlen)
    • Windows-Service ProfiposServer (Auto-Start + Restart-Policy)
    • Firewall-Regeln (UDP/34567, TCP/34568, TCP/8080, TCP/1883)
  4. Beim ersten Service-Start steht im Log der Pairing-Code für die Cloud-Freischaltung.

appsettings.json — Defaults und manueller Overlay

Der Installer legt eine appsettings.json mit sicheren Defaults an. Folgende Module sind standardmäßig deaktiviert und müssen pro Standort explizit eingeschaltet werden:

  • Tse.Aktiv = false — TSE-Provider hochfahren
  • Ec.Aktiv = false — ZVT-Terminal aktivieren
  • Reservierfix.Aktiv = false — Reservierfix-Bridge aktivieren

Standardmäßig aktiv (für Vending-/Schank-Standorte):

  • Schank.Aktiv = true — WMF-E-Protokoll-Listener
  • MobilePay.Aktiv = true — TWINT/Bluecode/Apple Pay über Webhook
  • AutoUpdate.Aktiv = true — Backoffice-gesteuertes Rollout

Werte werden im Backoffice unter „Standorte → {Standort} → Server-Config" zentral verwaltet und beim nächsten Cloud-Poll auf den Server gepusht.


Smoke-Test nach Installation

  1. https://{server-ip}:8080/api/v1/health{"status":"ok"}
  2. Backoffice „Standorte → {Standort}" zeigt Heartbeat ≤ 60 s alt
  3. Pairing-Code in Backoffice eingeben → Standort-Server bekommt Initial-Snapshot (Artikel, Steuern, Mandant-Konfig)
  4. Erste Kasse paaren über Discovery (UDP 34567)
  5. Testbon drucken
  6. Test-EC-Transaktion (1 € → sofort stornieren)
  7. TSE-Status grün im Backoffice
  8. Telegram-Test über Backoffice „Benachrichtigungen"

Wenn alles grün ist → Standort produktiv. Sonst siehe Inbetriebnahme.