Logo der Plantafel

Hello. Die Plantafel

Aufträge planen wie mit Zetteln an der Wand — nur auf der eigenen NAS.

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

  1. Dateien kopieren. Den Ordner plantafel3/ in den Webroot legen, zum Beispiel nach …/web/plantafel/.
  2. Eine leere Datenbank anlegen — einmalig, über phpMyAdmin oder auf der Konsole:
    CREATE 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;
    Die Tabellen legt der nächste Schritt selbst an — die mitgelieferte schema.sql musst du nicht von Hand einspielen.
  3. Im Browser aufrufen: https://<nas>/plantafel/. Solange es keine config.php gibt, landet jeder Aufruf auf der Einrichtungsseite. Was dort gefragt wird, steht gleich unten.
  4. 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:

„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:

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.

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.

Ü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

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.