DEEN

ZooDesk Handbuch

Installation, erste Schritte und Antworten auf häufige Fragen – alles, was du für den Start mit ZooDesk brauchst.

🐘 PHP 7.4+ / MySQL🌐 Deutsch & English⏱️ Installation in ca. 5 Minuten

✨Willkommen bei ZooDesk

ZooDesk ist eine Webanwendung zur Verwaltung eines Tierbestands – vom einzelnen Tier über Gehege und Zucht bis zur Jahresinventur. Diese Anleitung führt dich durch die Installation, die ersten Schritte und beantwortet häufige Fragen.

🦓

Tierarten & Tiere

Bestand je Tierart mit Geschlecht, Geburtsdatum, Markierung/Chip, Foto und Status (lebt, verstorben, abgegeben, verfüttert).

🩺

Gesundheit

Gewichtsverlauf mit Diagramm, Behandlungen nach Kategorien, Notizen und Dokumente (z. B. Befunde als PDF).

🌳

Stammbaum & Zucht

Stammbaum, Nachwuchs erfassen, Paarungsvorschläge und automatische Inzuchtprüfung.

🏠

Gehege

Gehege mit Fläche, Foto, Beschreibung und technischen Notizen; Tierarten zuordnen.

⏰

Ereignis-Timer

Zucht-, Gesundheits- und Haltungsereignisse mit Fälligkeit; fällige Ereignisse werden auf der Startseite markiert.

📋

Inventur

Jahresinventur je Tierart, Gesamtinventur, chronologische Inventur mit CSV-Export und Druckansichten.

👥

Benutzer & Rechte

Vier Standardgruppen, eigene Gruppen und fein einstellbare Rechte; Aktivitätsprotokoll.

🌐

Deutsch & Englisch

Sprache bei der Installation wählen und jederzeit in den Einstellungen umstellen.

💾

Backups

Datenbank-Backups per Klick erstellen, einspielen und löschen.

🧰Voraussetzungen

  • Webserver mit PHP 7.4 oder höher (z. B. Apache), empfohlen wird PHP 8.x.
  • MySQL-Datenbank (oder kompatibel, z. B. MariaDB) und ein Datenbankbenutzer mit Rechten zum Anlegen von Tabellen.
  • Schreibrechte für die Verzeichnisse uploads/, documents/, enclosure_photos/ und backups/.
  • Empfohlen: HTTPS (SSL-Zertifikat) – wird u. a. für die Links in „Passwort vergessen“-E-Mails verwendet.
  • Für „Passwort vergessen“: ein SMTP-Postfach oder eine funktionierende PHP-mail()-Funktion.
  • Ein aktueller Browser (z. B. Chrome, Firefox, Edge, Safari).

🚀Installation

  1. Dateien hochladen

    Lade alle Dateien und Ordner des ZooDesk-Systems in ein Verzeichnis auf deinem Webserver hoch (z. B. /var/www/zoo oder public_html/zoo). Achte darauf, dass auch die versteckten .htaccess-Dateien in den Unterordnern mit hochgeladen werden.

  2. config.php anpassen

    Öffne die Datei config.php und trage deine Datenbank-Zugangsdaten ein:

    $db_host = 'localhost';      // Dein Datenbank-Host
    $db_user = 'dein_benutzer';  // Dein Datenbank-Benutzername
    $db_pass = 'dein_passwort';  // Dein Datenbank-Passwort
    $db_name = 'datenbank_name'; // Name der Datenbank

    Optional (für „Passwort vergessen“) im selben File die SMTP-Daten:

    define('SMTP_HOST', 'smtp.dein-provider.de');
    define('SMTP_PORT', 587);
    define('SMTP_USER', 'noreply@deine-domain.de');
    define('SMTP_PASS', 'dein-smtp-passwort');
    define('SMTP_ENCRYPTION', 'tls'); // 'tls', 'ssl' oder ''
    define('MAIL_FROM', 'noreply@deine-domain.de');
    define('MAIL_FROM_NAME', 'ZooDesk');
    💡

    Bleibt SMTP_HOST auf dem Platzhalter smtp.dein-provider.de, versendet ZooDesk E-Mails über die PHP-Funktion mail() des Servers.

    Stelle sicher, dass der Webserver in uploads/, documents/, enclosure_photos/ und backups/ schreiben darf (z. B. chmod 775 uploads).

  3. Installer aufrufen und Sprache wählen

    Öffne install.php im Browser (z. B. https://deinserver.de/zoo/install.php). Wähle ganz oben die Sprache (Deutsch oder English) – der Installer wechselt sofort in die gewählte Sprache und ZooDesk wird in dieser Sprache eingerichtet, inklusive Beispieldaten wie Ereignistypen und Behandlungskategorien.

    install.php
    Der Installer mit Sprachauswahl
    Der Installer mit Sprachauswahl
  4. Seitennamen und Konten festlegen

    • Seitenname, z. B. „Tierpark Sonnental“ (max. 100 Zeichen).
    • Admin-Konto und Leser-Konto: jeweils Benutzername (max. 50 Zeichen), E-Mail-Adresse und Passwort. Die beiden Benutzernamen müssen sich unterscheiden.
    • Passwörter: mindestens 8 Zeichen, mindestens ein Großbuchstabe und ein Sonderzeichen.

    Klicke auf „Installation starten“. Der Installer legt alle Tabellen an (Einstellungen, Benutzer, Gruppen/Rechte, Tierarten, Tiere, Notizen, Gewichte, Behandlungen, Dokumente, Gehege, Ereignisse …), erstellt deine beiden Konten und fügt Testdaten hinzu (Tierarten Zebra und Elefant mit je drei Tieren).

  5. install.php löschen

    🔒

    Lösche die Datei install.php nach der Installation, damit niemand den Installer erneut aufrufen kann.

    Es gibt keine Standard-Zugangsdaten – du hast sie im Installer selbst vergeben. Bewahre sie sicher auf, besonders die des Kontos admin: dieser Benutzer kann nicht gelöscht werden.

👣Erste Schritte

Nach der Installation hilft dir dieser Rundgang, ZooDesk in wenigen Minuten produktiv zu nutzen. Die Screenshots stammen aus einer Demo-Installation mit Beispieldaten.

  1. Anmelden

    Öffne login.php (z. B. https://deinserver.de/zoo/login.php) und melde dich mit deinem Admin-Konto an. Nach 5 Fehlversuchen wird die Anmeldung für 15 Minuten gesperrt; inaktive Sitzungen enden nach 2 Stunden.

    login.php
    Die Anmeldeseite
    Die Anmeldeseite
  2. Einstellungen & Sprache

    Unter Einstellungen → Allgemeine Einstellungen änderst du den Seitennamen, die Sprache (gilt für alle Benutzer), die Tierarten-Ansicht (alphabetisch oder nach Gehege) und verwaltest Backups.

    settings.php
    Allgemeine Einstellungen mit Sprachauswahl
    Allgemeine Einstellungen mit Sprachauswahl
  3. Tierart anlegen

    Auf der Startseite klickst du unter Aktionen auf Neue Tierart. Über die Symbole neben einer Tierart kannst du sie bearbeiten, die Inventur öffnen oder sie löschen. Rechts oben findest du die Suche nach Tierart oder Tiername.

    index.php
    Startseite mit Tierarten, Aktionen und letzten Aktivitäten
    Startseite mit Tierarten, Aktionen und letzten Aktivitäten
  4. Tiere hinzufügen

    Öffne eine Tierart und wähle Tier hinzufügen. Die Liste lässt sich nach Name, Geburtsdatum oder Geschlecht sortieren. Mehrere Tiere kannst du per Massenaktion gleichzeitig als verstorben, abgegeben oder verfüttert markieren oder löschen. Verstorbene, abgegebene und verfütterte Tiere bleiben unten in eigenen Listen erhalten.

    animal_type.php
    Tierart mit lebenden Tieren, gruppiert nach Gehege
    Tierart mit lebenden Tieren, gruppiert nach Gehege
  5. Tierprofil

    Ein Klick auf ein Tier öffnet das Profil mit Foto, Markierung/Chip, Geburtsdatum, Geschlecht, Status, letztem Gewicht, Nachwuchs und Notizen. Über Bearbeiten änderst du die Stammdaten und den Status.

    animal_profile.php
    Tierprofil mit Notizen
    Tierprofil mit Notizen
  6. Gewichte, Behandlungen & Dokumente

    Im Profil unter Aktionen: Gewichte zeigt einen Verlauf als Diagramm, Behandlungen werden in Kategorien (z. B. Entwurmungen, Impfungen) geführt, die für die ganze Tierart gelten, und unter Dokumente lädst du Dateien hoch (PDF, Bilder, Word, Excel, TXT, CSV; max. 50 MB).

    animal_weights.php
    Gewichtsverlauf
    Gewichtsverlauf
    animal_treatments.php
    Behandlungen nach Kategorie
    Behandlungen nach Kategorie
  7. Gehege verwalten

    Über Gehege auf der Startseite legst du Gehege mit Fläche, Beschreibung, Foto und technischen Notizen an und ordnest ihnen Tiere bzw. Tierarten zu. Stellst du in den Einstellungen die Ansicht auf „Nach Gehege“, wird die Startseite danach gruppiert.

    enclosures.php
    Gehegeübersicht
    Gehegeübersicht
  8. Stammbaum & Inzuchtprüfung

    Im Tierprofil öffnet Stammbaum die Abstammung des Tieres. Dort kannst du Nachwuchs hinzufügen, Paarungsvorschläge ansehen und den Stammbaum speichern. Bei der Auswahl von Vater und Mutter prüft ZooDesk automatisch auf Inzucht und blockiert das Speichern, bis du es ausdrücklich erlaubst.

    family_tree.php
    Stammbaum mit Eltern und Nachwuchs
    Stammbaum mit Eltern und Nachwuchs
  9. Ereignisse planen

    Der Ereignis Kalender verwaltet Termine wie Verpaarung, Trächtigkeit, Quarantäne oder Winterschlaf – für einzelne Tiere oder eine ganze Tierart – mit Erinnerungsfrist. Fällige Ereignisse werden rot markiert und als Zähler auf der Startseite angezeigt. Ereignistypen kannst du selbst anlegen.

    manage.php
    Ereignis-Timer mit Filtern und Übersicht
    Ereignis-Timer mit Filtern und Übersicht
  10. Inventur, Druck & CSV

    Inventur zeigt pro Tierart und Jahr Anfangsbestand, Zugänge, Geburten, Abgänge und den aktuellen Bestand nach Geschlecht. Die Gesamt Inventur fasst alle Tierarten zusammen, die chronologische Inventur listet jede Bewegung und bietet einen CSV-Download. Die meisten Seiten haben eine eigene Druckansicht.

    inventory.php
    Jahresinventur einer Tierart
    Jahresinventur einer Tierart
  11. Benutzer & Gruppen

    Unter Einstellungen → Benutzerverwaltung legst du Kolleginnen und Kollegen an und ordnest sie einer Gruppe zu. Unter Benutzergruppen & Rechte passt du die Rechte der Gruppen an oder legst eigene Gruppen an (siehe Benutzergruppen & Rechte).

  12. Backup erstellen

    Klicke unter Einstellungen → Backup-Verwaltung auf Neues Backup. Mach das regelmäßig und vor jedem Update (siehe Backups).

👥Benutzergruppen & Rechte

ZooDesk enthält vier Standardgruppen. Bei der Installation werden ein Admin- und ein Leser-Konto angelegt; weitere Benutzer ordnest du unter Einstellungen einer Gruppe zu. Die Standardrechte im Überblick:

RechtAdminsTeamleitungPflegerLeser
Tiere hinzufügen / bearbeiten✓✓✓–
Tiere löschen✓✓––
Notizen, Dokumente, Gewichte, Behandlungen✓✓✓–
Zucht / Nachwuchs✓✓✓–
Tierarten, Gehege, Ereignisse verwalten✓✓––
Benutzer, Gruppen & Rechte✓–––
Seiteneinstellungen, Backups, Aktivitätslogs✓–––
Alles ansehen✓✓✓✓
💡

Die Rechte jeder Gruppe lassen sich unter Einstellungen → Benutzergruppen & Rechte einzeln anpassen, und du kannst eigene Gruppen anlegen. Die Gruppe Admins hat immer alle Rechte; der letzte Administrator kann nicht gelöscht werden.

🌐Sprache ändern

Die Sprache der Oberfläche (Deutsch oder English) kann jederzeit unter Einstellungen → Allgemeine Einstellungen → Sprache geändert werden. Die Einstellung gilt für alle Benutzer und wird in der Datenbank gespeichert – auch E-Mails, Druckansichten und CSV-Exporte erscheinen in der gewählten Sprache.

💡

Die Texte liegen im Ordner lang/: lang/en.php enthält die englischen Übersetzungen. Bereits erfasste Daten (z. B. Tierarten- oder Ereignistypnamen) werden beim Umstellen nicht übersetzt.

💾Backups

Unter Einstellungen → Backup-Verwaltung erstellst du mit Neues Backup eine vollständige Sicherung der Datenbank als SQL-Datei im Ordner backups/. Über die Auswahlliste kannst du ein Backup einspielen oder löschen.

⚠️

Das Backup enthält nur die Datenbank. Tierfotos (uploads/), Dokumente (documents/) und Gehegefotos (enclosure_photos/) sicherst du zusätzlich per FTP oder über dein Hosting. Beim Einspielen wird der aktuelle Datenbankstand überschrieben.

🔒Sicherheit

  • install.php löschen, sobald die Installation abgeschlossen ist.
  • HTTPS verwenden. ZooDesk erkennt HTTPS (auch hinter Reverse-Proxys), setzt dann sichere Cookies und HSTS.
  • .htaccess-Dateien behalten: backups/ ist komplett gesperrt, in uploads/, documents/ und enclosure_photos/ wird das Ausführen von PHP-Dateien verhindert. Unter nginx musst du gleichwertige Regeln selbst anlegen.
  • Starke Passwörter vergeben und Rechte nach dem Prinzip „so wenig wie nötig“ verteilen.
  • Regelmäßig Backups erstellen und außerhalb des Servers aufbewahren.
✅

Eingebaut: CSRF-Schutz für alle Formulare, Sperre nach Fehlanmeldungen, Prüfung von Datei-Uploads nach Typ und Größe sowie Sicherheits-Header (z. B. X-Frame-Options).

❓Häufige Fragen (FAQ)

Wie setze ich ein vergessenes Passwort zurück?

Auf der Anmeldeseite auf „Passwort vergessen?“ klicken und Benutzername oder E-Mail eingeben. ZooDesk schickt einen Link, der 1 Stunde gültig ist. Voraussetzung ist ein funktionierender E-Mail-Versand (SMTP in config.php oder PHP mail()). Der Link wird immer mit https:// erzeugt – ZooDesk sollte also per HTTPS erreichbar sein. Alternativ kann ein Admin das Passwort unter Einstellungen → Benutzerverwaltung neu setzen.

Es kommt keine E-Mail an – was tun?

Prüfe die SMTP-Daten in config.php (Host, Port, Benutzer, Passwort, Verschlüsselung tls/ssl) und ob MAIL_FROM zu deinem Postfach passt. Schau auch im Spam-Ordner und im PHP-Fehlerlog nach („SMTP-Verbindung fehlgeschlagen“). Aus Sicherheitsgründen zeigt die Seite immer dieselbe Meldung, auch wenn der Benutzer nicht existiert. Nach 3 Anfragen wird die Funktion für 15 Minuten gesperrt.

Kann jeder Benutzer seine eigene Sprache wählen?

Nein. Die Sprache ist eine globale Einstellung unter Einstellungen → Allgemeine Einstellungen und gilt für alle Benutzer. Ändern dürfen sie Benutzer mit dem Recht „Seiteneinstellungen ändern“.

Ein Benutzer sieht bestimmte Buttons nicht.

Buttons erscheinen nur, wenn die Gruppe des Benutzers das passende Recht hat. Leser sehen alle Daten, können aber nichts ändern. Passe die Rechte unter Einstellungen → Benutzergruppen & Rechte an oder ordne den Benutzer einer anderen Gruppe zu.

Ich kann keine Fotos oder Dokumente hochladen.

Meist fehlen Schreibrechte: Der Webserver muss in uploads/, documents/ und enclosure_photos/ schreiben dürfen (z. B. chmod 775, Eigentümer = Webserver-Benutzer). Limits: Tierfotos max. 10 MB (JPG, PNG, WebP, GIF), Gehegefotos max. 5 MB, Dokumente max. 50 MB. Prüfe außerdem upload_max_filesize und post_max_size deines PHP.

Wie spiele ich ein Backup wieder ein?

Unter Einstellungen → Backup-Verwaltung das Backup in der Liste auswählen und auf Einspielen klicken. Achtung: der aktuelle Datenbankstand wird dabei ersetzt. Erstelle im Zweifel vorher ein neues Backup.

Wie ziehe ich auf einen neuen Server um?

1. Neues Backup erstellen. 2. Alle Dateien inkl. backups/, uploads/, documents/ und enclosure_photos/ auf den neuen Server kopieren. 3. Dort eine leere Datenbank anlegen und das SQL-Backup z. B. mit phpMyAdmin importieren. 4. Die Zugangsdaten in config.php anpassen. install.php wird dafür nicht benötigt.

Welche PHP-Version sollte ich verwenden?

Mindestens PHP 7.4, empfohlen ist eine aktuelle PHP-8-Version. Unter PHP 8.4 und neuer kann beim CSV-Export ein „Deprecated“-Hinweis zu fputcsv() erscheinen, wenn display_errors aktiv ist – das ist nur ein Hinweis. Schalte display_errors auf Produktivsystemen ab.

Ich bin ausgesperrt („zu viele Versuche“).

Nach 5 fehlgeschlagenen Anmeldungen wird die Kombination aus IP-Adresse und Benutzername für 15 Minuten gesperrt. Warte die Zeit ab und versuche es erneut oder setze das Passwort zurück.

Kann ich die Testdaten löschen?

Ja. Die Tierarten Zebra und Elefant sind nur Beispiele und können auf der Startseite über das Papierkorb-Symbol gelöscht werden.

Was bedeuten die Status „abgegeben“ und „verfüttert“?

Neben „lebt“ und „verstorben“ kann ein Tier als abgegeben (z. B. an einen anderen Zoo) oder verfüttert (Futtertiere) markiert werden. Diese Tiere zählen nicht mehr zum Bestand, erscheinen aber weiterhin in eigenen Listen und in der Inventur.

🛠️Problembehandlung

ProblemLösung
„Datenbankverbindung fehlgeschlagen“Datenbankdaten in config.php prüfen (Host, Benutzer, Passwort, Datenbankname). Bei manchen Hostern ist der Host nicht localhost.
Weiße Seite / Fehler 500PHP-Fehlerlog des Servers prüfen; PHP-Version und Erweiterungen (mysqli, mbstring, fileinfo) kontrollieren.
Upload schlägt fehlSchreibrechte für uploads/, documents/, enclosure_photos/ und backups/ prüfen, ebenso Dateigröße und -typ.
Backup lässt sich nicht erstellenSchreibrechte für backups/ prüfen.
Ständig abgemeldetSitzungen enden nach 2 Stunden Inaktivität. Bei HTTPS hinter einem Proxy muss der Header X-Forwarded-Proto korrekt gesetzt sein; Cookies im Browser zulassen.
Fehlende Testdateninstall.php erneut ausführen (vorher Datenbank leeren).
Oberfläche in falscher SpracheSprache unter Einstellungen → Allgemeine Einstellungen umstellen; sicherstellen, dass der Ordner lang/ vollständig hochgeladen wurde.

🗂️Ordnerstruktur

zoo/ ├── config.php Datenbank- & SMTP-Einstellungen ├── install.php Installer – nach der Installation löschen ├── login.php · index.php · settings.php · … ├── lang/ Sprachdateien (de.php, en.php, i18n.php) ├── uploads/ Tierfotos (beschreibbar) ├── documents/ Tier-Dokumente (beschreibbar) ├── enclosure_photos/ Gehegefotos (beschreibbar) ├── backups/ Datenbank-Backups (beschreibbar, gesperrt) ├── readme_assets/ Screenshots dieser Anleitung ├── readme.html diese Anleitung (Deutsch) └── readme_en.html English guide
💡

Die Ordner readme_assets/ sowie readme.html und readme_en.html werden für den Betrieb nicht benötigt und müssen nicht auf den Server hochgeladen werden.