Themen auswählen

Self-Hosted v1.0.1 · Textanleitung

Pfotenweb selbst betreiben

Technischer Einstieg für Betreiber: Installation, E-Mail, Datenübernahme, Updates und Wiederherstellung der öffentlichen Edition v1.0.1.

Wer kann das?
Betreiber mit Linux-, Docker- und Domainkenntnissen
Tarif
Self-Hosted v1.0.1: ein Verein, MIT-Lizenz, kein Pfotenweb-Abo; eigene Betriebs- und Hostingkosten

Bevor Sie beginnen

  • Geprüfte Grundlage: öffentliches Release v1.0.1 vom 09.09.2026, Dokumentationsabgleich am 21.09.2026. Das öffentliche README dieser Version bleibt die installationsnahe Referenz.
  • Eigener Linux-Server, Docker mit Compose und eine Domain. Diese Edition enthält Tiere/Bilder, Neuigkeiten, Kontaktanfragen, Vereinsgestaltung und Teamzugänge, aber keine Cloud-Plattformverwaltung oder Abrechnung.
  • Sie verantworten Updates, Erreichbarkeit und Sicherungen. Veröffentlichen Sie niemals Ihre .env-Datei oder Archive mit Vereinsdaten.

Geprüfte öffentliche Grundlage

So geht’s

  1. 1Installation und Ersteinrichtung

    Klonen Sie das öffentliche Repository und wählen Sie ausdrücklich v1.0.1. Kopieren Sie .env.example nach .env. Erzeugen Sie mit openssl rand -hex 32 ein frisches Datenbankpasswort; verwenden Sie den Hex-Wert ohne Sonderzeichen in der Datenbank-URL. Tragen Sie zusätzlich ein eigenes Adminpasswort mit mindestens 16 Zeichen, Vereinsname, DOMAIN, SITE_URL und Zertifikatskontakt ein. Starten Sie nach der Domainprüfung unten Docker Compose. PostgreSQL bleibt im internen Netz, Port 3000 ist nur lokal erreichbar.

    git clone https://github.com/Livvux/pfotenweb.git
    cd pfotenweb
    git checkout v1.0.1
    cp .env.example .env
    openssl rand -hex 32
  2. 2Domain und HTTPS prüfen

    A- und AAAA-Einträge müssen auf Ihren eigenen Server zeigen; Ports 80 und 443 müssen frei und erreichbar sein. Mit dem Profil https übernimmt Caddy die Zertifikate. Bei einem vorhandenen Reverse Proxy starten Sie ohne --profile https und leiten an 127.0.0.1:3000 weiter. Der Proxy muss X-Forwarded-For und X-Forwarded-Host überschreiben, damit Besucher diese Werte nicht vortäuschen können. Öffnen Sie anschließend https://IHRE-DOMAIN/admin, melden Sie sich an und ergänzen Sie unter „Verein“ Anschrift, Kontakt und Rechtstexte. Es werden keine Tiere oder Demoinhalte erzeugt. Spätere Starts ändern vorhandene Zugangsdaten nicht; nach erfolgreicher Einrichtung können die INITIAL_ADMIN_*-Werte aus .env entfernt werden.

    docker compose --profile https up -d --build
  3. 3E-Mail über SMTP einrichten

    SMTP ist optional. Übernehmen Sie die Angaben Ihres Mailanbieters in SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASS und SMTP_FROM der .env. Die veröffentlichte Vorlage nutzt Port 465 und SMTP_SECURE=true; wählen Sie die zusammenpassenden Werte Ihres Anbieters. Hinterlegen Sie im Verein eine erreichbare Kontaktadresse als Empfänger. Richten Sie die geforderten SPF-/DKIM-Einträge ein und starten Sie die App mit der aktualisierten Konfiguration. Prüfen Sie mit einer eigenen Testanfrage sowohl den Eingang unter /admin/anfragen als auch im vorgesehenen Postfach. Ohne SMTP bleiben Anfragen in der Verwaltung lesbar. Eine fehlende Benachrichtigung bedeutet nicht, dass die Anfrage verloren ist.

  4. 4Datenübernahme vorab auf Kompatibilität prüfen

    Achtung: v1.0.1 akzeptiert ausschließlich Exportformat 1. Aktuelle Cloud-Exporte (im geprüften Cloud-Stand Format 15) sind damit nicht direkt kompatibel. Ändern Sie keine Versionsnummern im Archiv und beginnen Sie keinen Umzug ohne kompatible Zielversion. Für ein tatsächlich kompatibles Archiv beschreibt das README den Import in eine frisch eingerichtete Installation, bevor Tiere, Beiträge oder Bilder angelegt wurden: Archiv als transfer/pfotenweb-export.tar.gz ablegen, App stoppen, Import ausführen, App wieder starten. Teamkonten neu einrichten; Abrechnung, Passwörter und Sitzungen werden nicht übertragen. Der Import prüft Format, Pfade, Größen, Prüfsummen und Referenzen und rollt importierte Daten/Dateien bei Fehlern zurück. Prüfen Sie Inhalte und Bilder nach dem Import und entfernen Sie das Archiv danach vom Server. Es enthält personenbezogene Daten.

  5. 5Datenbank und Uploads gemeinsam sichern

    Erstellen Sie tägliche Sicherungen auf einem getrennten, verschlüsselten Speichermedium. Datenbank und Uploads gehören zusammen. Stoppen Sie die App während der Sicherung für einen konsistenten Stand. Die folgenden Befehle entsprechen dem README; kontrollieren Sie den Erfolg jeder Sicherungsdatei und starten Sie die App danach wieder. Ein vorhandenes Archiv allein beweist keine Wiederherstellbarkeit.

    mkdir -p backup
    docker compose stop app
    docker compose exec -T db pg_dump -U pfotenweb -d pfotenweb -Fc > backup/database.dump
    docker compose run -T --rm --no-deps --entrypoint tar app -czf - -C /data/uploads . > backup/uploads.tar.gz
    docker compose start app
  6. 6Wiederherstellung getrennt testen

    Verwenden Sie eine passende, leere Installation und eine gestoppte App. Achtung: --clean ersetzt vorhandene Daten; erstellen Sie vorher eine weitere Sicherung. Stellen Sie Datenbank und Uploads aus demselben Sicherungsstand wieder her. Starten Sie die App und prüfen Sie Anmeldung, Vereinsdaten, Tiere, Fotos, Beiträge und Anfragen. Wiederholen Sie diesen Test regelmäßig auf einem getrennten System. Die Befehle sind kein sicherer Weg, eine bestehende produktive Installation ungeprüft zu überschreiben.

    docker compose stop app
    docker compose exec -T db pg_restore -U pfotenweb -d pfotenweb --clean --if-exists < backup/database.dump
    docker compose run -T --rm --no-deps --entrypoint tar app -xzf - -C /data/uploads < backup/uploads.tar.gz
    docker compose start app
  7. 7Updates vorbereiten und prüfen

    Sichern Sie vor einem Update Datenbank und Uploads, lesen Sie die Release-Hinweise und committen Sie eigene Anpassungen. Laden Sie Tags mit git fetch --tags und wählen Sie gezielt das geprüfte Zielrelease. Bauen und starten Sie erneut mit docker compose --profile https up -d --build beziehungsweise Ihrer bestehenden Proxy-Variante. Migrationen laufen vor dem App-Start; bei Fehlern startet die neue App nicht. Prüfen Sie danach Anmeldung, Inhalte und Medien. Ein Rollback nach Schemaänderungen kann die Wiederherstellung der Sicherung erfordern: Starten Sie nicht einfach ein älteres Image gegen die veränderte Datenbank.

Das ist das Ergebnis

Die Installation ist über HTTPS erreichbar, Ihr Zugang funktioniert und Inhalte sowie Sicherungswiederherstellung wurden geprüft. Dieser Einstieg dokumentiert v1.0.1; er behauptet keine Kompatibilität mit späteren Releases oder aktuellen Cloud-Exporten.

Wenn etwas nicht klappt

HTTPS ist nicht erreichbar

Prüfen Sie A-/AAAA-Einträge, freie und erreichbare Ports 80/443 sowie Caddy beziehungsweise Ihren eigenen Reverse Proxy. Folgen Sie den Voraussetzungen im verlinkten README.

Benachrichtigung kommt nicht an

Lesen Sie zuerst /admin/anfragen. Prüfen Sie SMTP-Werte, Vereins-Empfänger, Spamordner und SPF/DKIM. Nur der kontrollierte Eingang im Postfach bestätigt die Zustellung.

Import oder Migration schlägt fehl

Prüfen Sie unterstützte Formate beziehungsweise die Release-Hinweise. Umgehen Sie keine Prüfungen. Bewahren Sie Sicherung und bisherigen Stand auf; vor einem Rückweg nach Schemaänderungen kann eine vollständige Wiederherstellung nötig sein.

Fehlerberichte und Wünsche: öffentliche GitHub-Issues (keine garantierte Antwortzeit). Keine privaten Daten veröffentlichen. Sicherheitsprobleme vertraulich an lucas@lkmedia.net.

Noch eine Frage? Kontakt zu Pfotenweb