Wartung

Im laufenden Betrieb braucht der Vogelschlagmelder wenig Pflege. Wichtig sind regelmäßige Sicherungen und das Einspielen neuer Versionen. Die Befehle auf dieser Seite werden auf dem Server im Arbeitsordner der Installation ausgeführt, in der Installationsanleitung also unter /srv/docker/vogelschlagmelder.

Installation ohne Docker

Ohne Docker liegt der Ordner data unter /srv/vogelschlagmelder/data. Statt docker compose stop und start wird der Dienst mit sudo systemctl stop vogelschlagmelder bzw. start angehalten, und das Protokoll zeigt journalctl -u vogelschlagmelder.

Was wo gespeichert ist

Ort

Inhalt

./data/vogelschlagmelder.db

Datenbank mit allen Meldungen, historischen Daten, Accounts und Einstellungen

./data/uploads/

Fotos der Meldungen, Logo, Favicon

.env

Zugangsdaten der Systemkonten, Mailserver und Schlüssel (CSRF_SECRET, SETTINGS_SECRET)

docker-compose.yaml

Aufbau der Container

Der Speicherbedarf wächst fast nur mit den Fotos. Jedes Foto wird beim Hochladen in JPEG umgewandelt und auf höchstens 4000 Pixel Kantenlänge verkleinert; ein Handyfoto belegt danach meist wenige Megabyte. Als Faustregel: Anzahl der Meldungen × Fotos je Meldung × 2 MB. Wie viel Platz noch frei ist, zeigt auf dem Server df -h.

Sicherung

Vollständige Sicherung

Eine vollständige Sicherung besteht aus dem Ordner ./data und der Datei .env. Damit lässt sich der Vogelschlagmelder auf einem neuen Server vollständig wiederherstellen.

cd /srv/docker/vogelschlagmelder
docker compose stop vogelschlagmelder
tar czf ~/vogelschlagmelder-$(date +%F).tar.gz data
docker compose start vogelschlagmelder

Der kurze Stopp sorgt dafür, dass die Datenbank während des Kopierens nicht verändert wird. Die Datei aus dem Heimatverzeichnis sollte anschließend auf einen anderen Rechner oder in einen Cloud-Speicher kopiert werden – eine Sicherung auf demselben Server hilft nicht, wenn dieser ausfällt.

SETTINGS_SECRET getrennt aufbewahren

SMTP-Passwort und Matrix-Access-Token liegen verschlüsselt in der Datenbank. Der Schlüssel dazu ist der Wert SETTINGS_SECRET aus der .env. Er sollte getrennt von der Sicherung des Ordners ./data aufbewahrt werden, etwa in einem Passwortmanager der Gruppe. Eine gestohlene Sicherung der Datenbank allein verrät diese Zugangsdaten dann nicht.

Geht der Wert verloren, sind alle übrigen Daten weiterhin lesbar. Nur SMTP-Passwort und Matrix-Token müssen im Adminbereich neu eingetragen werden.

Wiederherstellen

  1. Docker und die Dateien docker-compose.yaml und .env wie in der Installation einrichten.

  2. Die Sicherung in den Arbeitsordner entpacken: tar xzf vogelschlagmelder-JJJJ-MM-TT.tar.gz

  3. Rechte setzen: chown -R 1001:1001 data

  4. Starten: docker compose up -d --build

Einstellungen exportieren

Abschnitt „Export & Import“ unter Anpassungen

Zusätzlich lassen sich alle Einstellungen ohne Zugang zum Server sichern: Unter Anpassungen → Export & Import lädt Einstellungen exportieren eine ZIP-Datei herunter. Das eignet sich als Sicherung vor größeren Änderungen und um eine zweite Instanz – etwa für eine Nachbarregion – mit denselben Einstellungen zu starten.

Im Export enthalten

Nicht enthalten

Texte, Farben, Links, Header-Buttons, Footer

Meldungen und ihre Fotos

Logo, zweites Logo und Favicon

Bilder und Videos der Individuellen Seite

Einstellungen des Meldeformulars

Historische Daten

Vogelarten und Abdruckgrößen

Accounts

Meldebereich mit Landkreisen bzw. Polygon

gespeicherte Filter

Gefahrenkarte mit Info- und Link-Boxen

SMTP-Passwort

Individuelle Seite (Texte und Aufbau)

Matrix-Access-Token

E-Mail-Empfänger, Inhalt der Benachrichtigungen

Matrix-Server und Raum, SMTP-Einstellungen ohne Passwort

API-Schlüssel (nur als Hash)

API-Schlüssel sind nur als Hash enthalten. Die Datei verrät die Schlüssel also nicht, nach einer Wiederherstellung funktionieren sie trotzdem weiter.

Einstellungen importieren spielt eine solche Datei wieder ein. Dabei werden die vorhandenen Einstellungen überschrieben. Vogelarten, Abdruckgrößen, Landkreise und API-Schlüssel werden vollständig durch den Inhalt der Datei ersetzt. Nach dem Import müssen das SMTP-Passwort und der Matrix-Access-Token neu eingetragen werden (siehe Kommunikation). Bis dahin ist die Matrix-Integration abgeschaltet.

Bilder der Individuellen Seite

Hochgeladene Bilder und Videos der Individuellen Seite liegen im Ordner ./data/uploads/cms/ und sind nur in der vollständigen Sicherung enthalten. Wer die Einstellungen auf eine andere Instanz überträgt, lädt sie dort neu hoch oder kopiert den Ordner mit.

Aktualisieren

Neue Versionen erscheinen im Changelog. Vor jedem Update:

  1. den Changelog der neuen Version lesen – manche Versionen brauchen neue Einträge in der .env oder eine neue docker-compose.yaml,

  2. eine vollständige Sicherung anlegen.

Danach wird der Container neu gebaut:

cd /srv/docker/vogelschlagmelder
docker compose up -d --build

Bei der Installation mit Docker holt dieser Befehl den aktuellen Stand direkt aus dem Repository auf Codeberg. Bei der Installation ohne Docker gilt der dort beschriebene Weg. Änderungen an der Datenbank nimmt der Vogelschlagmelder beim Start selbst vor.

Welche Version läuft, steht unten in der Seitenleiste des Adminbereichs. Liegt der Vogelschlagmelder als App auf einem Smartphone, meldet die App die neue Version beim nächsten Öffnen selbst (siehe App auf dem Smartphone).

Protokolle ansehen

Fehler beim E-Mail-Versand, bei Matrix-Nachrichten oder beim Start stehen im Protokoll des Containers:

docker compose logs --tail 100 vogelschlagmelder

Mit -f statt --tail 100 läuft die Ausgabe weiter mit, bis sie mit Strg+C beendet wird. Ältere Einträge werden automatisch gelöscht; es bleiben höchstens fünf Dateien mit je 10 MB.

Fehlerbehebung

Problem

Ursache und Lösung

Der Container startet nicht, im Protokoll steht … muss gesetzt werden.

In der .env fehlt eine Pflichtvariable, seit Version 1.4.0 etwa PUBLIC_BASE_URL oder SETTINGS_SECRET. Variable ergänzen und docker compose up -d ausführen.

Fotos werden nicht gespeichert oder der Start bricht mit „Permission denied“ ab.

Der Ordner ./data gehört nicht dem Container-User. chown -R 1001:1001 data ausführen.

Es kommen keine E-Mails an.

SMTP-Einstellungen unter Kommunikation prüfen, Empfänger eingetragen? Fehlermeldung im Protokoll suchen. Auch den Spam-Ordner prüfen.

Matrix-Nachrichten bleiben aus.

Ist die Integration aktiviert und ein Raum ausgewählt? Test senden verwenden. Ein abgemeldeter Token muss neu eingetragen werden.

Links in Benachrichtigungen zeigen auf eine falsche Adresse.

PUBLIC_BASE_URL in der .env korrigieren und den Container neu starten.

Meldende sehen „Außerhalb des erlaubten Bereichs“.

Der Fundort liegt außerhalb des Meldebereichs. Bereich unter Karte prüfen (siehe Meldebereich).

Meldende sehen „Der Spamschutz konnte nicht überprüft werden“.

Die Seite war sehr lange geöffnet oder JavaScript ist abgeschaltet. Seite neu laden und erneut senden.

Meldende sehen „Es wurden zu viele Meldungen von diesem Anschluss gesendet“.

Mehr als 20 Meldungen in einer Stunde vom selben Internetanschluss, etwa bei einer Sammelaktion über ein gemeinsames WLAN. Nach Ablauf der angezeigten Zeit geht es weiter.

Die Anmeldung ist gesperrt.

Zu viele Fehlversuche. 15 Minuten warten (siehe Accounts).

Das Widget auf der eigenen Webseite bleibt leer.

Die Webseite fehlt unter Widgets → Erlaubte Domains (siehe Widgets).

Besucher sehen unter /gefahrenkarte „Seite nicht gefunden“.

Die Karte ist nicht öffentlich geschaltet (siehe Gefahrenkarte). Angemeldete Admins sehen sie trotzdem.

Auf dem Smartphone erscheint eine alte Version.

Siehe App auf dem Smartphone.

Lässt sich ein Fehler so nicht beheben, kann er im Issue-Tracker auf Codeberg gemeldet werden (siehe FAQ).