Eigener Server (Ersteinrichtung)
Dieser Abschnitt ist nur für den Betrieb über das Internet gedacht und setzt Grundkenntnisse mit Linux und Kommandozeile voraus. Wer alle Helfer beim Fest vor Ort im selben WLAN hat, bleibt beim Standardweg.
Wer jotti auch außerhalb des lokalen WLANs erreichen will, betreibt es auf einem eigenen kleinen Server, einem VPS. Das gilt für den Betrieb über das Internet, an mehreren Standorten oder ohne einen Rechner vor Ort.
Dann erreichen alle Helfer jotti über eine Internet-Adresse (Domain) mit Verschlüsselung (HTTPS).
jotti ist genügsam. Schon ein kleiner VPS (2 vCPU, 2 GB RAM, 20 GB SSD, Linux) reicht für ein durchschnittliches Vereinsfest.
Der Prozessor muss x86-64 sein (amd64). Die veröffentlichten Images gibt es nur für diese Architektur; auf ARM-Servern (etwa Raspberry Pi oder ARM-VPS) laufen sie nicht. Typisches Angebot: netcup VPS 500 G12 oder vergleichbar (ca. 6 €/Monat).
Zusätzlich braucht ihr eine Domain, die per DNS auf den Server zeigt, sowie ein TLS-Zertifikat. Das Zertifikat holt jotti automatisch.
Die Produktions-Konfiguration (docker-compose.prod.yml) bringt dafür einen
Caddy-Reverse-Proxy mit. Er fordert das Zertifikat beim ersten Start selbst bei
Let’s Encrypt an und erneuert es danach.
Ein gemieteter Server bedeutet auch: Der Hoster verarbeitet personenbezogene Daten für euren Verein. Denn jotti speichert unter anderem die Namen der Helfer.
Schließt deshalb mit dem Hoster eine Vereinbarung zur Auftragsverarbeitung ab (AVV, Art. 28 DSGVO). Die üblichen Anbieter stellen dafür kostenlos einen Generator im Kundenportal bereit, ausgefüllt ist er in wenigen Minuten.
Beim Standardweg im lokalen WLAN stellt sich die Frage nicht, dort ist kein Hoster beteiligt.
⚠️ Kein Betrieb ohne HTTPS. Ohne HTTPS dürft ihr jotti nicht über das offene Internet betreiben: Anmeldedaten und Bestellungen würden sonst unverschlüsselt übertragen.
Ersteinrichtung
-
Docker installieren. Auf dem Server Docker Engine samt Compose-Plugin einrichten (https://docs.docker.com/engine/install/).
-
Projektdateien holen. Das Repository klonen oder das Quellcode-Archiv des Releases („Source code (zip)” auf der Releases-Seite) entpacken, dann in den Projektordner wechseln. Nicht das
jotti-windows-ZIP verwenden: Es enthält nur den Windows-Starter, aber wederMakefile,scripts/nochdocker-compose.prod.yml. -
.envanlegen mitmake init(erzeugt sichere Zufallswerte für die Geheimnisse). -
Domain, E-Mail und Version eintragen in der
.env:Terminal-Fenster JOTTI_DOMAIN=kasse-musterverein.deLETSENCRYPT_EMAIL=vorstand@musterverein.deJOTTI_VERSION=v0.18.0Die aktuelle Versionsnummer übernehmt ihr von der GitHub-Releases-Seite — ein nicht existierendes Tag lässt den Image-Download fehlschlagen.
-
DNS auf den Server zeigen lassen. Beim Domain-Anbieter einen A-Record (und bei IPv6 einen AAAA-Record) auf die öffentliche IP des Servers setzen. Erst wenn die Domain auf den Server zeigt, kann Let’s Encrypt ein Zertifikat ausstellen.
-
Stack starten mit
make prod-init. Das Skript prüft Docker und die DNS-Auflösung und zieht die gepinnten Images. Dann startet es den Stack und wartet, bis Backend und HTTPS gesund antworten. -
Eigenen Benutzer mit SSH-Schlüssel anlegen. Der nächste Schritt sperrt die Anmeldung als
root. Legt deshalb vorher einen Benutzer mit sudo-Rechten an:Terminal-Fenster adduser vereinusermod -aG sudo vereinKopiert dann von eurem Rechner aus euren SSH-Schlüssel auf den Server, etwa mit
ssh-copy-id verein@<eure-domain>. Prüft, dass die Anmeldung alsvereinper Schlüssel klappt. -
Server absichern mit
make prod-harden. Die Firewall lässt dann nur SSH und die jotti-Ports 80 und 443 durch und bremst wiederholte SSH-Anmeldeversuche. Das Skript richtet automatische Sicherheitsupdates ein. Die SSH-Anmeldung klappt danach nur noch per Schlüssel und nicht mehr alsroot. Fehlt der Benutzer aus Schritt 7, bricht das Skript ab, ohne etwas zu ändern. Prüft vor dem Abmelden in einer zweiten SSH-Sitzung, dass ihr noch hineinkommt.
Danach ist jotti unter https://<eure-domain> erreichbar; HTTP leitet automatisch
auf HTTPS um.
Erster Login
make prod-init gibt beim ersten Start einen einmaligen, 6-stelligen
Anmelde-Code aus. Damit meldet ihr euch an wie unter
Installation und Start beschrieben:
- Benutzername
admin - „Neues Passwort festlegen”
- Code eingeben und ein eigenes Passwort setzen