In dieser Anleitung zeige ich euch, wie ihr Planka mittels Docker und Traefik bereitstellen könnt. Bei Planka handelt es sich um ein open source Kanban Board.
Datum | Änderungen |
---|---|
24.11.2022 | Erstellung dieser Anleitung |
26.11.2022 | Änderung des Ports in der Docker Compose Datei |
03.12.2022 | Ordner Rechte angepasst. Danke an @julian-kiedaisch |
01.06.2023 | Anpassung an neue Traefik Labels |
26.09.2024 | Docker-Compose.yaml angepasst + Backup und Restore Script |
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- Traefik v2 + 3 – Reverse-Proxy mit CrowdSec im Stack einrichten
2. Verzeichnis anlegen
Im ersten Schritt legen wir uns ein Verzeichnis an.
mkdir -p /opt/containers/planka/{attachments,project-background-images,user-avatars}
Nun passen wir noch die Rechte der Verzeichnisse an. Dazu gebt ihr folgendes ein:
cd /opt/containers/planka/ chown 1000:1000 attachments/ user-avatars/ project-background-images/
Bei diesem Inhalt handelt es sich um exklusiven Content für Community Plus Mitglieder und Supporter.
Bitte logge dich mit deinem Account ein um den Inhalt zu sehen.
4. Planka starten
Dazu gebt ihr einfach folgenden Befehl ein:
docker compose -f /opt/containers/planka/docker-compose.yml up -d
Geht anschließend auf eure Homepage planka.euredomain.de
Dort solltet ihr folgendes sehen:
Die Login Daten lauten:
- Benutzer: demo@demo.demo
- Passwort: demo
Nun seht ihr folgendes:
5. Backup und Restore
Wir erstellen zunächst (wenn noch nicht automatisch erstellt) zwei Dateien und einen neuen Backup Ordner.
mkdir -p /opt/containers/planka/backup && touch /opt/containers/planka/backup/docker-backup.sh && touch /opt/containers/planka/backup/docker-restore.sh
Öffnet docker-backup.sh & docker-restore.sh
nano /opt/containers/planka/docker-backup.sh
nano /opt/containers/planka/docker-restore.sh
# Curl von Offiziellen Planka Repository curl -L https://raw.githubusercontent.com/plankanban/planka/master/docker-backup.sh -o /opt/containers/planka/backup/backup.sh curl -L https://raw.githubusercontent.com/plankanban/planka/master/docker-restore.sh -o /opt/containers/planka/backup/restore.sh
Kopiert folgendes dort hinein
#!/bin/bash # Stop on Error set -e # Configure those to match your Planka Docker container names PLANKA_DOCKER_CONTAINER_POSTGRES="planka_postgres_1" PLANKA_DOCKER_CONTAINER_PLANKA="planka_planka_1" # Create Temporary folder BACKUP_DATETIME=$(date --utc +%FT%H-%M-%SZ) mkdir -p $BACKUP_DATETIME-backup # Dump DB into SQL File echo -n "Exporting postgres database ... " docker exec -t $PLANKA_DOCKER_CONTAINER_POSTGRES pg_dumpall -c -U postgres > $BACKUP_DATETIME-backup/postgres.sql echo "Success!" # Export Docker Voumes echo -n "Exporting user-avatars ... " docker run --rm --volumes-from $PLANKA_DOCKER_CONTAINER_PLANKA -v $(pwd)/$BACKUP_DATETIME-backup:/backup ubuntu cp -r /app/public/user-avatars /backup/user-avatars echo "Success!" echo -n "Exporting project-background-images ... " docker run --rm --volumes-from $PLANKA_DOCKER_CONTAINER_PLANKA -v $(pwd)/$BACKUP_DATETIME-backup:/backup ubuntu cp -r /app/public/project-background-images /backup/project-background-images echo "Success!" echo -n "Exporting attachments ... " docker run --rm --volumes-from $PLANKA_DOCKER_CONTAINER_PLANKA -v $(pwd)/$BACKUP_DATETIME-backup:/backup ubuntu cp -r /app/private/attachments /backup/attachments echo "Success!" # Create tgz echo -n "Creating final tarball $BACKUP_DATETIME-backup.tgz ... " tar -czf $BACKUP_DATETIME-backup.tgz \ $BACKUP_DATETIME-backup/postgres.sql \ $BACKUP_DATETIME-backup/user-avatars \ $BACKUP_DATETIME-backup/project-background-images \ $BACKUP_DATETIME-backup/attachments echo "Success!" #Remove source files echo -n "Cleaning up temporary files and folders ... " rm -rf $BACKUP_DATETIME-backup echo "Success!" echo "Backup Complete!"
#!/bin/bash # Stop on Error set -e # Configure those to match your Planka Docker container names PLANKA_DOCKER_CONTAINER_POSTGRES="planka_postgres_1" PLANKA_DOCKER_CONTAINER_PLANKA="planka_planka_1" # Extract tgz archive PLANKA_BACKUP_ARCHIVE_TGZ=$1 PLANKA_BACKUP_ARCHIVE=$(basename $PLANKA_BACKUP_ARCHIVE_TGZ .tgz) echo -n "Extracting tarball $PLANKA_BACKUP_ARCHIVE_TGZ ... " tar -xzf $PLANKA_BACKUP_ARCHIVE_TGZ echo "Success!" # Import Database echo -n "Importing postgres database ... " cat $PLANKA_BACKUP_ARCHIVE/postgres.sql | docker exec -i $PLANKA_DOCKER_CONTAINER_POSTGRES psql -U postgres echo "Success!" # Restore Docker Volumes echo -n "Importing user-avatars ... " docker run --rm --volumes-from $PLANKA_DOCKER_CONTAINER_PLANKA -v $(pwd)/$PLANKA_BACKUP_ARCHIVE:/backup ubuntu cp -rf /backup/user-avatars /app/public/ echo "Success!" echo -n "Importing project-background-images ... " docker run --rm --volumes-from $PLANKA_DOCKER_CONTAINER_PLANKA -v $(pwd)/$PLANKA_BACKUP_ARCHIVE:/backup ubuntu cp -rf /backup/project-background-images /app/public/ echo "Success!" echo -n "Importing attachments ... " docker run --rm --volumes-from $PLANKA_DOCKER_CONTAINER_PLANKA -v $(pwd)/$PLANKA_BACKUP_ARCHIVE:/backup ubuntu cp -rf /backup/attachments /app/private/ echo "Success!" echo -n "Cleaning up temporary files and folders ... " rm -r $PLANKA_BACKUP_ARCHIVE echo "Success!" echo "Restore complete!"
Mache die Scripte ausführbar
cd /opt/containers/planka && chmod +x docker-restore.sh docker-backup.sh
5.1 Backup ausführen
crontab -e
# Erstellt jede Nacht um 2 Uhr ein Backup 0 2 * * * cd /opt/planka/backup && bash /opt/planka/backup/backup.sh > /dev/null 2>&1 # Löscht Backups, die älter als 14 Tage sind 0 2 * * * find /opt/containers/planka/backup/*.tgz -mindepth 1 -mtime +14 -delete > /dev/null 2>&1
5.2 Restore
Öffnet den Backup-Ordner
cd /opt/planka/backup
ls *.tgz
# Kopiere den Namen des gewünschten Restore Punktes und füge diesen hier ein: "names-des-backups" bash restore.sh names-des-backups.tgz
Vielen Dank für die Anleitung. Ich habe allerdings das Problem, dass die Uploads nicht funktionieren. Sowohl bei Dateianhängen, als auch bei den Backgrounds. Fehlermeldung:
Hallo Christian,
wenn ich im Browser die Seite aufrufe steht da: