Kanboard-Dokumentation
Für das Projekt DH2018
- Installation
- Installation in einem Docker - Container
- Installation ohne Docker
- Installation in der Infrastruktur via Docker
- Besonderheiten am DH2018-Kanboard
- SSH-Verbindung
- Datenbank-Backup
- Einladungs-Nachrichten für User
- Hinzufügen von Nutzern
- Schalter
- Ablauf
- Sonstiges
- Verschlüsselung von Passwörtern
Installation
Installation in einem Docker - Container
- Download folgender Dateien/Ordner aus dem Kanboard-Repository
- Dockerfile
- docker/
docker build -t kanboard /path/to/dockerfile --build-arg VERSION=master
docker run --name kanboard -p ServerPort:80 -p :443 -d kanboard
Erklärung für un-/genutzte Schalter
Schalter | Erklärung |
---|---|
-t /Path/To/Dockerfile/ | Pfad zur Dockerfile |
--build-arg VERSION=<version> | Gibt die zu nutzende Kanboard-Version an |
-p SERVER:CONTAINER | Portforwarding |
-d | Container wird im Hintergrund ausgeführt |
--name <name> | Containername |
-v /Server/Folder/:/Container/Folder | Bindet Ordner aus Serverstruktur in Containerstruktur ein |
Installation ohne Docker
Noch nicht genauer bekannt, da mit Docker gearbeitet wurde! Eine Installationsanleitung für einen Apache-Webserver findet man hier.
Installation in der Infrastruktur via Docker
Im Ordner Kanboard-Docker ist ist das createContainer-Skript vorhanden. Dieses erstellt den Container anhand der vorhandenen Dockerfile und dem docker/-Ordner. Dadurch wird außerdem ein SSH-Service und ein thedockeruser im Container erstellt.
Besonderheiten am DH2018-Kanboard
SSH-Verbindung
Um Nutzer direkt in die Datenbank einzufügen gibt es zwei Möglichkeiten.
- Direkt hinzufügen, in dem man sich von Turing aus via docker exec -it kanboard /bin/bash anmeldet und via sqlite3 Insert-Statements ausführt.
- Via SSH einloggen und dort per sqlite3 Insert-Statements ausführen.
Für beide Möglichkeiten benötigt man auf jedenfall das Tool sqlite3, welches man in der Dockerfile hinzufügen muss. Um dann auch anderen Nutzern die Möglichkeit zu geben, auf Knuth ein Skript auszuführen, welches dann die jeweiligen Statements ausführt, muss man sich via SSH im Container anmelden. Um SSH zu installieren müssen folgende Dinge geändert werden:
- Hinzufügen von openSSH in der Installationsroutine im Dockerfile
- Hinzufügen eines s6supervise-Skriptes, welches den SSH-Daemon startet.
- Hinzufügen von SSH-Zertifikaten im Entry-Point-Skript
- Hinzufügen eines Users (thedockeruser) und setzen seines Passwortes
- SSH-Keys der berechtigten Nutzer von Knuth in den Docker-Container kopieren.
Sobald der SSH-Key des berechtigten Nutzers im Container hinterlegt wurde, kann das Skript ordnungsgemäß vom Nutzer ausgeführt werden.
Datenbank-Backup
Da es sich bei der im Projekt genutzten Installation um einen Docker-Container handelt, kann es jederzeit vorkommen, dass der Container neu aufgesetzt wird. Um danach keinen Datenverlust zu erleiden, wurden folgende Maßnahmen getroffen:
- Einbinden eines Ordners aus der Infrastruktur in den Container
- Erstellen eines regelmäßigen Cron-Jobs
- Kopieren der aktuellen db.sqlite-File in den eingebundenen Ordner
Um das Backup bei Neustart eines Containers wieder zu laden, kann dies entweder im Entrypoint-Skript eingebunden werden, oder aber im bereits existierenden Cron-Job.
Einladungs-Nachricht an einen Nutzer
Nach einfügen eines Nutzers in die Datenbank wird eine Nachricht mit den Credentials generiert und in das Postfach des jeweiligen Nutzers umgeleitet. Dabei wird die Nachricht im Skript erzeugt und wird nicht in das Dateisystem geschrieben und später verschoben.
Der Transfer in das Postfach erfolgt mittels: echo $msg > /home/$user/postfach/Kanboard-Einladung zur Gruppe $group
Hinzufügen von Nutzern
Das Skript bietet zwei Möglichkeiten, um Nutzer hinzuzufügen. Zum einen ist ein Gruppen-Modus vorhanden. Die Alternative dazu ist der Nutzer-Modus, um einen einzelnen Nutzer hinzuzufügen.
Schalter
-g <group>
Sucht nach einer Gruppe in der vorhandenen Infrastruktur und erstellt für alle Nutzer dieser Gruppe Accounts.
-u <user> -a <0|1> -g <group>
Mit dieser Schalterkombination wird ein Nutzer mit den jeweiligen Adminrechten erstellt und der angegebenen Gruppe hinzugefügt.
Ablauf
Das unten angezeigte Diagramm zeigt Skript-Ablauf. Aktivitätsdiagramm
Sonstiges
Verschlüsselung von Passwörtern
Kanboard nutzt die PHP-Interne Verschlüsselungsmethode password_hash($password, PASSWORD_BCRYPT)
mit dem Verschlüsselungsalgorithmus bcrypt. Bcrypt gilt allerdings als gebrochen, da es mit einer ECB-Verschlüsselung und anschließender Komprimierung.