Neukunde: Unterschied zwischen den Versionen

Clawtronics (Diskussion | Beiträge)
Zentrale Checkliste für neue Kunden und Projekte angelegt
 
Clawtronics (Diskussion | Beiträge)
Seite als geführten, praxisnahen Ablauf für neue Projekte überarbeitet
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
= Neukunde / neues Projekt =
= Neukunde / neues Projekt =


Diese Seite beschreibt den vollständigen Ablauf zur Einrichtung eines neuen MegBes-Kunden beziehungsweise eines neuen Projekts. Projektspezifische Werte werden zunächst gesammelt und anschließend in den jeweils maßgeblichen Systemen eingetragen.
Diese Seite ist der rote Faden für die Einrichtung eines neuen MegBes-Projekts. Sie führt von den ersten Angaben bis zur Übergabe. Technische Einzelheiten stehen auf den jeweils verlinkten Fachseiten – hier geht es vor allem darum, '''was als Nächstes zu tun ist''' und woran du erkennst, dass eine Etappe abgeschlossen ist.


'''Wichtig:''' Passwörter, Tokens, private Schlüssel und geheime Update-URLs dürfen nicht auf dieser Seite oder einer Projektseite gespeichert werden. Dafür ist ausschließlich der vorgesehene Passwortmanager zu verwenden.
Nicht jedes Projekt benötigt alle hier genannten Bausteine. Wenn beispielsweise kein lokaler MegBes-Server vorgesehen ist, können die entsprechenden Schritte übersprungen werden.


== 1. Projekt festlegen ==
== Der Weg zum fertigen Projekt ==


Vor Beginn sind mindestens zu bestimmen:
# Projekt und Ansprechpartner erfassen
# Betriebsart und benötigte Komponenten festlegen
# Öffentliche MegBes-Seite bereitstellen
# Technik am Standort vorbereiten
# Stationen anbinden
# Gesamtsystem abnehmen und dokumentieren


* vollständiger Projekt- und Kundenname
== 1. Projekt beginnen ==
* eindeutiges technisches Projektkürzel
* zuständige Personen bei tinetronics
* gewünschte Bedienoberfläche
* Art der Anmeldung:
** Anmeldung über Ticket-Monitor
** direkter Zugriff ohne Ticket-Monitor, wie beim Subprojekt MiQua Guide
** gegebenenfalls weitere projektspezifische Variante
* Anzahl und Art der Medienstationen
* Stationsnummern und benötigte UDP-Befehle
* lokales Subnetz und gewünschter UDP-Port
* projektspezifischer Stations-Timer


Anschließend eine neue Seite in der [[Projektübersicht]] anlegen.
'''Ziel dieser Etappe:''' Alle Beteiligten sprechen über dasselbe Projekt, und die wichtigsten Ansprechpartner sind bekannt.


== 2. Domains und Erreichbarkeit ==
Lege zunächst in der [[Projektübersicht]] eine eigene Projektseite an. Verwende dafür den Namen, unter dem das Projekt später auch intern wiedergefunden werden soll.


Im Regelfall werden zwei Adressen benötigt:
Auf der Projektseite sollten mindestens diese Angaben stehen:


; Externe Adresse
{| class="wikitable"
: Subdomain für `megbes-external`, beispielsweise `<projekt>.megbes.de`.
! Angabe
! Beispiel oder Erläuterung
|-
| Kunde und Projektname
| Museum Beispielstadt – Dauerausstellung
|-
| Technischer Projektschlüssel
| Kurzer, eindeutiger Name ohne Leerzeichen, z. B. <code>beispielstadt</code>
|-
| Zuständige Personen
| Projektleitung, technische Betreuung und Ansprechpartner vor Ort
|-
| Geplanter Betriebsbeginn
| Eröffnung, Testbetrieb oder Übergabetermin
|-
| Anzahl der Stationen
| Einschließlich Reserve- oder Teststationen
|-
| Aktueller Stand
| Planung, Einrichtung, Test oder Betrieb
|}


; Interne Erreichbarkeit
Der technische Projektschlüssel wird später unter anderem für Container, Konfigurationsdateien und Adressen verwendet. Er sollte deshalb früh festgelegt und danach nicht mehr geändert werden.
: DynDNS-Adresse oder eine andere dauerhaft erreichbare Adresse für `megbes-internal`, beispielsweise `<projekt>-dyndns.megbes.de`.


Für die externe Subdomain ist der DNS-Eintrag auf den zentralen Plesk-Server zu richten. Die konkrete Zieladresse muss vor der Einrichtung anhand der aktuellen IONOS-/Plesk-Konfiguration geprüft werden und wird nicht als allgemeiner Festwert im Wiki hinterlegt.
'''Weiter, wenn …''' eine Projektseite vorhanden ist, der Projektschlüssel feststeht und mindestens je ein organisatorischer und technischer Ansprechpartner bekannt ist.


Für die interne Seite wird bevorzugt IONOS DynDNS eingesetzt. Alternative Anbieter sind nur zu verwenden, wenn dies technisch erforderlich ist.
== 2. Gemeinsam festlegen, wie das Projekt funktionieren soll ==


== 3. Projektkonfiguration in GitHub ==
'''Ziel dieser Etappe:''' Die grundlegenden Entscheidungen sind getroffen, bevor Server oder Container eingerichtet werden.


Im privaten Repository `tinetronics/megbes-config` sind die produktiven Konfigurationen anzupassen.
=== Was sollen Besucherinnen und Besucher sehen? ===


=== megbes-external-config.json ===
Kläre, welche Informationen auf der MegBes-Seite erscheinen sollen, zum Beispiel:


Für das Projekt werden mindestens gepflegt:
* aktuelle Verfügbarkeit oder Zustände der Stationen,
* Hinweise zu einzelnen Angeboten,
* eine für das Projekt gestaltete Oberfläche,
* mehrere Sprachen.


* technischer Projektschlüssel
Halte Gestaltungswünsche, Sprachen und besondere Inhalte auf der Projektseite fest.
* Kommunikationsprotokoll zum internen Server
* Adresse von `megbes-internal`
* Port von `megbes-internal`
* bei Projekten mit zentraler Anmeldung: initialer Administratorname und verschlüsseltes Administratorpasswort


Das Administratorpasswort darf niemals im Klartext eingetragen werden. Die Verschlüsselung erfolgt mit dem vorgesehenen Werkzeug des Status-Monitors.
=== Wie wird die Seite aufgerufen? ===


=== megbes-status-config.json ===
Entscheide zwischen den üblichen Betriebsarten:


Das Projekt wird zusätzlich mit seiner internen und externen Adresse in die Status-Konfiguration aufgenommen.
* '''Direkter Zugriff:''' Die Seite ist ohne vorherige Prüfung erreichbar.
* '''Zugriff über Ticket-Monitor:''' Der Aufruf wird anhand der vorgesehenen Berechtigung freigegeben.


=== Prüfung ===
Eine verständliche Gegenüberstellung steht unter [[Bedienung und Authentifizierung]].


# JSON-Syntax prüfen.
=== Welche Technik wird benötigt? ===
# Änderungen nachvollziehbar committen.
# Änderungen über den vereinbarten Git-Prozess bereitstellen.
# Nach der Übernahme die betroffenen Dienste kontrolliert neu laden.


Siehe auch [[Konfiguration]].
Prüfe gemeinsam mit der technischen Betreuung:


== 4. megbes-external unter Plesk ==
* Wird nur die öffentliche MegBes-Seite benötigt?
* Gibt es vor Ort einen lokalen MegBes-Server?
* Wie melden die Stationen ihren Zustand – insbesondere per UDP oder über einen anderen vorgesehenen Weg?
* Wird für den Standort DynDNS oder eine feste öffentliche Adresse benötigt?
* Wer kann Änderungen an Router, Firewall und Standortnetz freigeben?


Für jedes Projekt wird auf dem zentralen IONOS-Server ein eigener Docker-Container betrieben.
'''Weiter, wenn …''' Betriebsart, benötigte Komponenten, Stationenzahl und Verantwortlichkeiten für das Standortnetz feststehen.


# Neue externe Subdomain in Plesk anlegen.
'''Noch nicht weitermachen, wenn …''' unklar ist, ob ein lokaler Server benötigt wird oder wer Router- und Firewall-Änderungen genehmigen darf. Diese Entscheidungen beeinflussen den gesamten weiteren Aufbau.
# TLS-Zertifikat für die Subdomain einrichten.
# Docker-Container aus dem freigegebenen `megbes-external`-Image erstellen.
# Container eindeutig nach dem Projekt benennen.
# automatischen Start nach einem Serverneustart aktivieren.
# erforderliche Umgebungsvariablen anhand der aktuellen freigegebenen Vorlage setzen.
# Zertifikatsdateien beziehungsweise Volumes korrekt einbinden.
# automatische Portzuordnung nach der initialen Einrichtung deaktivieren.
# Docker-Proxy-Regel von der Subdomain auf den Container einrichten.
# Container starten und Protokoll auf Fehler prüfen.


Der einzusetzende Release wird bewusst festgelegt. Ein neuer Kunde erhält grundsätzlich den aktuell freigegebenen Release, sofern kein bekannter projektspezifischer Grund dagegenspricht.
== 3. Die öffentliche Seite vorbereiten ==


== 5. Zertifikate ==
'''Ziel dieser Etappe:''' Das Projekt ist über seine spätere öffentliche Adresse erreichbar und zeigt die richtige Konfiguration.


Projektbezogene Zertifikate werden über den Status-Monitor erstellt und entsprechend der dortigen Anleitung installiert.
Gehe in dieser Reihenfolge vor:


Zu prüfen sind:
# Lege die gewünschte Adresse fest, normalerweise <code>&lt;projekt&gt;.megbes.de</code>.
# Erstelle die Projektkonfiguration im Repository <code>tinetronics/megbes-config</code>. Die benötigten Felder sind unter [[Konfiguration]] beschrieben.
# Stelle unter Plesk einen eigenen <code>megbes-external</code>-Container für das Projekt bereit. Die technische Anleitung steht unter [[Megbes-external unter Plesk]].
# Verknüpfe Domain, Zertifikat und Container.
# Öffne die Adresse im Browser und kontrolliere Inhalt, Gestaltung und Verhalten.


* Zertifikat gehört zum richtigen Projekt und zur richtigen Adresse.
Verwende grundsätzlich eine freigegebene Release-Version. Zugangsdaten, Tokens, private Schlüssel und vollständige DynDNS-Aktualisierungsadressen gehören '''nicht''' ins Wiki oder in die Projektkonfiguration, sondern in den vorgesehenen Passwortmanager.
* Zertifikatsdateien liegen am vorgesehenen Ablageort.
* Container-Volume zeigt auf den korrekten Ordner.
* Kennwörter sind ausschließlich im Passwortmanager und in der geschützten Laufzeitkonfiguration hinterlegt.
* Verbindung wird nach dem Neustart erfolgreich getestet.


== 6. Interner Server beim Kunden ==
'''Weiter, wenn …'''


Für jedes Projekt wird beim Kunden ein eigener Server für `megbes-internal` eingerichtet.
* die öffentliche Adresse per HTTPS ohne Zertifikatswarnung erreichbar ist,
* die richtige Projektoberfläche erscheint,
* die vereinbarte Zugriffsart funktioniert,
* keine Zugangsdaten in Wiki, Repository oder Containerbeschreibung abgelegt wurden.


# aktuelle Ubuntu-LTS-Version installieren.
== 4. Den Standort vorbereiten ==
# administrativen Benutzer einrichten; nicht dauerhaft als `root` arbeiten.
# System vollständig aktualisieren.
# feste lokale IP-Adresse passend zum Kundennetz konfigurieren.
# Docker installieren und Funktion prüfen.
# projektbezogene Umgebungsdatei erstellen.
# Zertifikate in einen eindeutig benannten, geschützten Ordner kopieren.
# freigegebenes `megbes-internal`-Image laden.
# Container mit automatischem Neustart, korrekten Ports und Volumes starten.
# Container-Protokoll prüfen.


Die Umgebungsdatei enthält nur projektspezifische Werte. Eine Konfiguration aus einem anderen Kundenprojekt darf nicht ungeprüft kopiert werden.
'''Ziel dieser Etappe:''' Der lokale MegBes-Server ist zuverlässig erreichbar und kann mit den Stationen sowie der öffentlichen Seite kommunizieren.


== 7. Router, DynDNS und Portfreigabe ==
Dieser Abschnitt entfällt, wenn das Projekt keinen lokalen MegBes-Server benötigt.


Am Kundenrouter sind – abhängig vom Projekt – folgende Punkte einzurichten:
=== Vor dem Aufbau klären ===


* feste Zuordnung für den internen Server
Besorge oder bestätige zunächst:
* DynDNS-Konfiguration
* erforderliche TCP-Portfreigabe zu `megbes-internal`
* gegebenenfalls kundenspezifische Firewall-Regeln


Der externe Port, der interne Port und die in `megbes-external-config.json` eingetragene Portnummer müssen zueinander passen.
* Standort und Hardware des Servers,
* feste interne IP-Adresse,
* DNS- und Gateway-Angaben,
* Zugang zum Router beziehungsweise eine zuständige Kontaktperson,
* DynDNS-Name, falls erforderlich,
* Liste der Stationen mit Namen und IP-Adressen,
* geplante Sicherung und verantwortliche Person.


Router-Zugangsdaten und geheime DynDNS-Update-URLs gehören ausschließlich in den Passwortmanager.
=== Server in sinnvollen Etappen einrichten ===


== 8. Medienstationen ==
# Ubuntu installieren und aktualisieren: [[Ubuntu installieren]] und [[Ubuntu aktualisieren]]
# Eine feste interne Adresse einrichten: [[Feste IP-Adresse unter Ubuntu]]
# Docker installieren und prüfen: [[Docker installieren]]
# <code>megbes-internal</code> mit der Projektkonfiguration starten: [[Megbes-internal]]
# Router, DynDNS und erforderliche Weiterleitungen einrichten: [[DynDNS und Router]]
# Zertifikate einrichten oder übertragen: [[Zertifikate]]


Für jede Station sind zu erfassen:
Führe nach jeder Etappe einen kurzen Funktionstest durch. So ist bei einem Fehler sofort klar, in welchem Abschnitt er entstanden ist.


* Stationsnummer
'''Weiter, wenn …'''
* Gerätetyp
* lokale IP-Adresse
* unterstützte UDP-Befehle
* verwendeter UDP-Port
* Art der Bedienung und Anmeldung
* Verhalten bei `IDLE`, `TOUCHSCREEN`, `REMOTE` und gegebenenfalls `OPEN`
* erwartete Init-/Statusmeldung


Siehe [[UDP und Stationszustände]].
* der Server nach einem Neustart wieder erreichbar ist,
* der interne Container selbstständig startet,
* die Projektkonfiguration geladen wird,
* die benötigte Verbindung zwischen Standort und öffentlicher Seite funktioniert,
* keine unnötigen Dienste oder Ports aus dem Internet erreichbar sind.


== 9. Abnahme und Funktionstest ==
== 5. Stationen Schritt für Schritt anbinden ==


Vor Übergabe müssen mindestens folgende Prüfungen erfolgreich sein:
'''Ziel dieser Etappe:''' Jede Station erscheint eindeutig und mit dem richtigen Zustand im System.


# externe Projektadresse ist per HTTPS erreichbar.
Beginne nicht sofort mit allen Stationen. Nimm zuerst eine gut erreichbare Teststation:
# vorgesehene Anmeldung beziehungsweise der direkte Zugriff funktioniert.
# `megbes-external` erreicht `megbes-internal`.
# Befehle erreichen die richtige Station.
# Start, Stopp und weitere projektspezifische Befehle funktionieren.
# Stationszustände und Timer verhalten sich wie vereinbart.
# Neustart von externem und internem Container wurde getestet.
# Neustart des internen Servers wurde getestet.
# Status-Monitor erkennt die Projektinstanzen.
# Status-/Init-Meldungen erreichen den vorgesehenen Empfänger.
# Fehler und Besonderheiten sind auf der Projektseite dokumentiert.


== 10. Projektdokumentation abschließen ==
# Vergib oder bestätige Namen und IP-Adresse der Station.
# Trage sie in der Projektkonfiguration ein.
# Richte die vorgesehene Zustandsmeldung ein.
# Prüfe den Signalweg vom Gerät bis zur Anzeige. Hilfestellung: [[UDP und Stationszustände]] und [[Routing und Signalweg]].
# Simuliere mindestens einen Zustandswechsel und kontrolliere die Anzeige.


Auf der Projektseite werden anschließend mindestens eingetragen:
Wenn die Teststation zuverlässig funktioniert, übertrage das Vorgehen auf die übrigen Stationen. Arbeite die Stationsliste einzeln ab und markiere jede geprüfte Station auf der Projektseite.


* Domains und technische Projektschlüssel
'''Weiter, wenn …''' jede Station eindeutig zugeordnet ist, Zustandsänderungen korrekt erscheinen und ein Neustart der Station beziehungsweise des lokalen Servers erfolgreich getestet wurde.
* Container-Namen
* Ports und Netzwerkbereiche
* installierte Releases von External und Internal
* Server- und Stationshardware
* Stations-Timer
* Datum und Ergebnis des letzten Funktionstests
* Besonderheiten und offene Aufgaben
* Verweis auf die zugehörigen Einträge im Passwortmanager – niemals die Geheimwerte selbst


[[Kategorie:MegBes]]
== 6. Gemeinsame Abnahme ==
[[Kategorie:Einrichtung]]
 
[[Kategorie:Checkliste]]
'''Ziel dieser Etappe:''' Das System funktioniert nicht nur technisch, sondern auch im vorgesehenen Arbeitsalltag.
 
Führe die Abnahme möglichst gemeinsam mit einer verantwortlichen Person des Projekts durch.
 
=== Besucheransicht ===
 
* Öffnet sich die richtige Seite auf Smartphone und einem normalen Rechner?
* Sind Texte, Logos, Farben und Sprachen korrekt?
* Ist die Bedienung verständlich?
* Funktioniert die vereinbarte Zugriffsart?
 
=== Technischer Betrieb ===
 
* Werden alle Stationen mit dem richtigen Namen und Zustand angezeigt?
* Werden Ausfall, Rückkehr und Neustart einer Teststation korrekt erkannt?
* Starten Server und Container nach einem Neustart automatisch?
* Sind HTTPS und Zertifikatskette fehlerfrei?
* Sind nur die tatsächlich benötigten Ports erreichbar?
 
=== Betrieb und Wiederherstellung ===
 
* Ist festgelegt, wer Störungen zuerst prüft?
* Sind Sicherung und Wiederherstellung beschrieben und mindestens einmal geprüft?
* Sind Zugangsdaten vollständig im Passwortmanager hinterlegt?
* Ist die eingesetzte Release-Version dokumentiert?
 
Für den späteren Betrieb dient [[Wartung, Backups und Fehlerdiagnose]] als zentrale Arbeitsseite. Der [[Status-Monitor]] hilft bei der laufenden Übersicht.
 
'''Das Projekt ist bereit zur Übergabe, wenn …''' alle Abnahmepunkte entweder bestätigt oder als bekannte Restpunkte mit Verantwortlichem und Termin dokumentiert sind.
 
== 7. Projekt sauber übergeben ==
 
Ergänze zum Abschluss die Projektseite um:
 
* öffentliche und interne Adressen ohne geheime Bestandteile,
* eingesetzte Container und Release-Versionen,
* Stationsliste,
* Betriebsart und besondere Konfiguration,
* zuständige Personen,
* Datum und Ergebnis der Abnahme,
* bekannte Restpunkte,
* Verweise auf Sicherung, Passwortmanager-Eintrag und weitere Betriebsdokumentation.
 
Setze den Projektstatus in der [[Projektübersicht]] anschließend auf '''Betrieb'''.
 
== Wenn etwas nicht wie erwartet funktioniert ==
 
Gehe vom letzten erfolgreichen Prüfpunkt aus zurück. Prüfe zunächst nur den betroffenen Abschnitt, statt mehrere Komponenten gleichzeitig zu ändern.
 
Eine hilfreiche Reihenfolge ist:
 
# Ist die betroffene Station oder der Server eingeschaltet und im Netz erreichbar?
# Läuft der zuständige Container?
# Ist die richtige Projektkonfiguration geladen?
# Funktioniert der Signalweg zwischen Station, lokalem Server und öffentlicher Seite?
# Gibt es aktuelle Meldungen in den Container-Protokollen oder im [[Status-Monitor]]?
 
Dokumentiere Ursache und Lösung auf der Projektseite, wenn der Fehler projektspezifisch war. Allgemein wiederverwendbare Erkenntnisse gehören nach [[Wartung, Backups und Fehlerdiagnose]].
 
[[Kategorie:Betrieb]]
[[Kategorie:Projekte]]