Die Plantafel ist eine eigenständige PHP-Anwendung. Sie braucht einen Webserver mit PHP und eine leere MariaDB- oder MySQL-Datenbank — sonst nichts. Auf einer Synology genügt die Web Station.
In vier Schritten eingerichtet
-
Dateien kopieren. Den Ordner
plantafel3/in den Webroot legen, zum Beispiel nach…/web/plantafel/. -
Eine leere Datenbank anlegen — einmalig, über phpMyAdmin oder auf der Konsole:
Die Tabellen legt der nächste Schritt selbst an — die mitgelieferteCREATE DATABASE plantafel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'plantafel'@'localhost' IDENTIFIED BY 'EIN_PASSWORT'; GRANT ALL PRIVILEGES ON plantafel.* TO 'plantafel'@'localhost'; FLUSH PRIVILEGES;schema.sqlmusst du nicht von Hand einspielen. -
Im Browser aufrufen:
https://<nas>/plantafel/. Solange es keineconfig.phpgibt, landet jeder Aufruf auf der Einrichtungsseite. Was dort gefragt wird, steht gleich unten. - Die anderen einladen. Als Admin im Zahnrad-Bereich Name und E-Mail eintragen, „Anlegen" — jede Person setzt ihr Passwort selbst über den Link in der Einladung.
Die Einrichtungsseite
Die Seite fragt vier Dinge ab und prüft jede Angabe sofort:
- Datenbank — Server, Name, Benutzer, Passwort. Die Verbindung wird auf der Stelle getestet.
- Adresse der Tafel — diese Adresse steht später in den Einladungs- und Passwort-Mails. Sie muss also von außen stimmen, nicht nur im LAN. Dazu der Schalter HTTPS erzwingen.
- E-Mail-Versand (SMTP) — mit dem Button „Testmail senden". Wer das jetzt nicht einrichten will, kreuzt „E-Mail-Versand später einrichten" an und trägt es später im Admin-Bereich nach; bis dahin gibt es keine Einladungen.
- Das erste Admin-Konto — Name, E-Mail und Passwort, mindestens zehn Zeichen.
„Prüfen und einrichten" spielt dann das Schema ein, legt das Admin-Konto an und schreibt
die config.php. Danach sperrt sich die Einrichtungsseite selbst — sie
lässt sich später nicht noch einmal aufrufen.
Lässt sich die config.php nicht schreiben, weil die Rechte fehlen, zeigt
die Seite den fertigen Inhalt zum Kopieren an. Von Hand in den Ordner speichern, Seite
neu laden — fertig.
Welche Version läuft?
Die Versionsnummer steht oben im Admin-Bereich neben dem Titel und ebenso auf der Seite Farbetiketten. Sie zählt in der zweiten Stelle hoch: 3.0, 3.1, 3.2 und so weiter. Wer mehrere Tafeln betreut oder nach einem Update nachsehen will, ob die neuen Dateien wirklich auf der NAS angekommen sind, findet sie dort.
Wenn die Tafel von außen erreichbar sein soll
Sobald die Tafel nicht nur im eigenen Netz steht, gilt:
- HTTPS ist Pflicht. Auf der Synology den Reverse Proxy mit einem
Zertifikat (Let's Encrypt) vor die Tafel setzen und in der
config.phpFORCE_HTTPS = truestehen lassen. Die App erkennt eine über den Proxy verschlüsselte Verbindung am KopfX-Forwarded-Protound läuft deshalb nicht in eine Endlos-Umleitung. - Noch sicherer, wenn nur wenige feste Personen zugreifen: die NAS gar nicht öffnen und stattdessen ein VPN benutzen. Die Tafel funktioniert dann unverändert.
- Die mitgelieferte
.htaccessschütztconfig.phpund*.sqlvor direktem Abruf — aber nur unter Apache. Läuft die Web Station mit nginx, müssen dieselben Regeln dort eingetragen werden. - Regelmäßig ein Backup ziehen (Admin-Bereich → „Backup herunterladen").
Wenn die Arbeitsplätze nicht ins Internet kommen
Der Button Hilfe unten links auf der Tafel öffnet von Haus aus diese Anleitung im Netz. In einem Betrieb, dessen Rechner nur ins eigene Netz dürfen, läuft er damit ins Leere. Dann im Admin-Bereich unter Hilfe auf Eigene Hilfeseiten umstellen und die Adresse einer Anleitung im eigenen Netz eintragen.
- Liegt sie auf derselben NAS wie die Tafel, genügt der Pfad — etwa
/hilfe/. - Liegt sie woanders, die vollständige Adresse mit
http://oderhttps://.
Andere Adressen nimmt die Tafel nicht an. Weil der Eintrag als Link auf jeder Tafel
landet, sind javascript:, data: und Adressen ohne Schema
wie //server/ ausgeschlossen — damit lässt sich über das Feld weder
Code einschleusen noch unbemerkt auf einen fremden Server verweisen.
E-Mail-Versand
Server, Port, Verschlüsselung, Zugangsdaten und Absender stehen im Admin-Bereich und lassen sich dort jederzeit ändern — ein Dateizugriff auf die NAS ist dafür nicht nötig. „Testmail an mich" prüft die Angaben und nennt bei einem Fehlschlag den Grund: keine Verbindung, STARTTLS abgelehnt, Anmeldung abgelehnt oder Empfänger abgelehnt.
- Unterstützt werden STARTTLS (meist Port 587), SSL (465) und unverschlüsselt (25) sowie die Anmeldeverfahren AUTH LOGIN und AUTH PLAIN. Welches benutzt wird, handelt die Tafel mit dem Server aus. Damit laufen Strato, IONOS, GMX und Web.de, t-online und Gmail (mit App-Passwort).
- Nicht unterstützt wird OAuth2, das Microsoft 365 und Outlook.com inzwischen verlangen. Dafür braucht es einen anderen Postausgang.
- Das gespeicherte Passwort wird nie angezeigt. Das Feld bleibt leer, und nur ein ausgefülltes Feld überschreibt es. Benutzer leeren heißt: keine Anmeldung am Postausgang. SMTP-Server leeren heißt: Versand aus.
- „Zertifikat prüfen" sollte angehakt bleiben. Den Haken nimmst du nur weg, wenn der Postausgang ein selbst ausgestelltes Zertifikat benutzt und die Testmail genau daran scheitert — die Meldung sagt es dir.
Über dem Formular steht, woher die aktuellen Werte kommen: Frisch eingerichtete
Installationen speichern sie in der Datenbank; ältere benutzen weiter die
SMTP_*-Angaben aus der config.php, bis im Admin-Bereich
einmal gespeichert wurde.
Backup
Im Admin-Bereich erzeugt „Backup herunterladen" eine .sql-Datei mit dem
kompletten Inhalt. Sie wird in PHP erzeugt, mysqldump muss also nicht
vorhanden sein.
Achtung: In dieser Datei stehen die Passwort-Hashes aller Nutzer und — sobald der Mailversand im Admin-Bereich gespeichert wurde — das SMTP-Passwort im Klartext. Die Datei gehört an einen sicheren Ort, nicht in eine geteilte Cloud.
Eine Sicherung wieder einspielen
Im selben Abschnitt des Admin-Bereichs liest „Einspielen" eine solche Datei wieder ein — für den Umzug auf einen anderen Server oder wenn etwas schiefgegangen ist. Sie ersetzt den gesamten Inhalt: Boards, Spalten, Karten, Farbetiketten, Nutzer und Einstellungen.
Angenommen werden nur Dateien aus „Backup herunterladen". Die Plantafel liest die Datei
vorher einmal komplett durch und prüft jede einzelne Anweisung; alles außer
SET, DROP TABLE, CREATE TABLE und
INSERT INTO auf die bekannten Tabellen führt zum Abbruch —
bevor die Datenbank angefasst wird.
Der Grund für diese Reihenfolge: DROP TABLE und CREATE TABLE
beenden in MariaDB eine laufende Transaktion von selbst. Ein Abbruch mittendrin ließe
sich also nicht zurückrollen — die Datenbank wäre halb leer. Deshalb wird erst alles
geprüft und dann alles ausgeführt.
Eine Datei ganz ohne Nutzertabelle weist die Prüfung ebenfalls ab — danach käme niemand mehr hinein. Vor dem Einspielen lädt die Plantafel außerdem automatisch den aktuellen Stand herunter, damit es einen Weg zurück gibt.
Was sich dabei ändert: Offene Einladungs- und Rücksetz-Links verfallen. Und stammt die Datei von einer anderen Installation, meldest du dich anschließend mit dem dortigen Passwort an — die Nutzer kommen ja aus dieser Datei.
Das Archiv automatisch aufräumen
Im Admin-Bereich steht dafür „Aus" oder ein Zeitraum von 2 bis 10 Jahren; die Vorgabe ist „Aus". Gelöscht wird ausschließlich im Board ARCHIV, und zwar anhand der ersten beiden Ziffern der Auftragsnummer — die stehen für das Jahr. Das Aufräumen läuft serverseitig einmal am Tag beim Laden der Seite; ein Cron-Job ist nicht nötig. Das Löschen ist endgültig, zieh also vorher ein Backup.
Wenn niemand mehr hineinkommt
Der Fall, dass der letzte Admin nicht mehr an seine Mails kommt, lässt sich in phpMyAdmin
lösen: In der Tabelle users bei einem Konto is_admin = 1 setzen
und/oder pass_hash leeren und pass_changed_at auf
NULL. Danach über „Passwort vergessen" ein neues Passwort setzen. Denselben
Weg sieht WordPress ebenfalls vor.
Wie die Tafel abgesichert ist
- Passwörter werden mit
password_hash()gespeichert — nie im Klartext und nie per Mail verschickt. - Das Sitzungs-Cookie ist
HttpOnlyundSameSite=Lax, unter HTTPS zusätzlichSecure. - Jede schreibende Aktion braucht ein CSRF-Token, damit keine fremde Seite im Namen eines angemeldeten Nutzers Karten verschieben oder löschen kann.
- Anmeldungen und Passwort-Anfragen sind gedrosselt: zehn Fehlversuche, dann 15 Minuten Pause.
- Ohne Anmeldung gibt die Schnittstelle nichts heraus — auch keine Kartenliste. Konten mit Nur Lesen weist der Server bei jedem schreibenden Aufruf ab; das Ausblenden der Buttons ist nur die Oberfläche dazu.
- Eine eingespielte Sicherung wird Anweisung für Anweisung geprüft, bevor die erste davon ausgeführt wird.
Lokal ausprobieren, ohne NAS
Mit installiertem PHP und MariaDB reicht im Ordner plantafel3/:
php -S localhost:8000
Dann http://localhost:8000/ öffnen — die Einrichtungsseite kommt von selbst.
Dabei „HTTPS erzwingen" abwählen, sonst leitet die Tafel auf
https://localhost:8000 um und dort horcht niemand.