dorfteich/docs/self-hosting/legal-template.md
Claude Fable 5 0c9d44e9c9
All checks were successful
CD / Build and push images (push) Successful in 1m18s
CD / Deploy to Test (push) Successful in 12s
CD / Smoke tests against Test (push) Successful in 1m20s
CD / Promote to Int (push) Successful in 11s
CI / Lint, typecheck, test (push) Successful in 4m7s
CI / Build container images (push) Has been skipped
CI / Auth e2e pack (push) Successful in 5m37s
CI / Import/export fidelity gate (push) Successful in 47s
Legal texts for dorfteich.online; legal template covers the newer processing
- deploy/legal/dorfteich-online-{impressum,datenschutz}.md: ready-to-
  paste Markdown for the flagship instance (Admin → Legal pages after
  the wizard) — operator standard texts (§5 DDG, §18(2) MStV, VSBG
  no-participation, UGC/liability/copyright notices) plus a privacy
  policy grounded in what THIS instance actually does: Hetzner hosting
  with DPA, session cookie only (no banner), rate-limit IPs, proxy logs
  ≤30d, transactional + digest mail with unsubscribe, plaintext content
  with versions/comments and public pages, hashed API tokens with
  audited writes, nightly backups incl. the encrypted-tunnel mirror to
  the operator's private server, self-service export,
  deletion/pseudonymization, LfDI BaWü.
- docs/self-hosting/legal-template.md: review checklist and both
  language templates extended for the processing added since #82 —
  comments/version history, notifications/digest mails, API tokens,
  off-host backup copies.

No legal advice; texts follow the operator's standard building blocks
and should get a final human read before publishing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1
2026-07-12 19:00:05 +02:00

12 KiB

Legal page templates (imprint & privacy policy)

Dorfteich ships legal pages as a product feature (issue #82, security.md §Privacy): Site Admins paste Markdown into Administration → Legal pages, and the texts render publicly at /legal/imprint and /legal/privacy — linked from the footer on every view. This document provides starting templates whose privacy section matches what Dorfteich actually processes; keep it in sync when a change adds or removes a processing activity (review anchor: security.md §Privacy).

Not legal advice. These templates are a technically accurate starting point, not a substitute for a lawyer. Operator-specific parts (identity, hosting provider, log retention, backups) are marked with […] placeholders and MUST be filled in. dorfteich.online uses the operator's own standard texts, applied at go-live (#89) — not these templates.

What Dorfteich processes (review checklist)

The privacy templates below cover exactly these activities. When one of them changes, update the templates in the same change:

Activity Data Where implemented
Accounts username, e-mail, password hash, display name, locale users table; signup/verification (ADR 0007)
Sessions session cookie (dt_session), user agent, expiry sessions table
Rate limiting IP address in short-lived counters rate_limits table (short TTL, operations.md)
Reverse-proxy logs IP address, requested URL host level (Caddy/nginx), operator-managed rotation
Transactional e-mail recipient address, mail content SMTP relay (wizard/secret store, #80); verification, password reset
Content & uploads pages, attachments authored by users ponds/pages/files; server sees plaintext (no E2E, security.md §Out of scope)
Comments & versions comment threads; per-page version history incl. contributor names comments (#91), versions (ADR 0013)
Notifications & digests in-app notifications; digest mails with unsubscribe token notifications (#94), digests (#95)
API tokens token hash, scope, last use; writes audit-logged personal access tokens (#104), MCP (#105)
Off-host backup copies full backup sets on an operator-chosen target Nextcloud target (#103), private mirror (#84)
Data export self-service ZIP (profile + own ponds) POST /users/me/data-export (#68)
Deletion trash/purge for content; pseudonymized authorship ("deleted user") PseudonymizationService (#59), trash retention (ADR 0013)
No third-party requests fonts self-hosted, no CDNs, no analytics ADR 0016, CSP in nginx.conf

The legal pages render their own localized heading (Imprint/Impressum, Privacy policy/Datenschutzerklärung), so the templates start straight with the content — do not add a top-level # heading of your own.

**Operator of this instance**

[Name]
[Street and number]
[Postal code, city]
[Country]

**Contact**

E-mail: [address]
[Phone: optional]

[If applicable: register entries, VAT ID, persons responsible for content.]

German version:

**Betreiberin/Betreiber dieser Instanz**

[Name]
[Straße und Hausnummer]
[PLZ, Ort]
[Land]

**Kontakt**

E-Mail: [Adresse]
[Telefon: optional]

[Falls zutreffend: Registereinträge, USt-IdNr., inhaltlich Verantwortliche.]

Privacy policy template (English)

This instance of Dorfteich is operated by [operator, see imprint]. We
process personal data only as far as running this service requires
(Art. 6 (1) (b) GDPR for accounts, Art. 6 (1) (f) GDPR for abuse
protection and operational logs).

## Accounts

When you register, we store your username, e-mail address, a password
hash (never the password itself), your display name, and your language
preference. The e-mail address is used to verify your account and for
password resets. Accounts are visible to other members through the names
you choose.

## Sessions and cookies

After signing in, a session cookie (`dt_session`) keeps you signed in.
We store the session together with the browser identification (user
agent) your client sends and an expiry time. There are no tracking or
third-party cookies.

## Abuse protection and server logs

To protect the service against abuse, IP addresses are counted in
short-lived rate-limit records that expire automatically. The web server
in front of this instance additionally writes access logs containing IP
addresses; these are rotated and deleted after [retention, e.g. 14 days].

## E-mail

Transactional e-mails (account verification, password reset) are sent
through the SMTP relay [relay provider]. Your e-mail address and the
message content are transmitted to that relay for delivery.

## Content you create

Pages and uploaded files you create are stored on the server and are
visible to the people your ponds' permissions allow. Content is not
end-to-end encrypted — the server processes it in plaintext to provide
search, export, and rendering. Every page keeps a version history
including the names of its contributors; comments are stored with their
author. Deleted pages remain restorable from the
trash for [trash retention, default 30] days before they are permanently
removed.

## Notifications and digest mails

If you watch pages or ponds, notifications are collected in the app and
— depending on your settings — bundled into digest e-mails. Digests can
be disabled in the settings; every digest carries an unsubscribe link
that works without signing in.

## API tokens

If you create personal access tokens (for scripts or AI assistants),
only a hash of the token is stored. Token access is limited to your own
permissions; write operations are recorded in the administrative audit
log.

## No third-party requests

Your browser talks only to this instance: fonts are self-hosted, and
there are no CDNs, no analytics, and no embedded third-party services.

## Your rights

You can export your own data (profile and the ponds you own) as a ZIP
archive at any time from your account settings (right of access and data
portability). When your account is deleted, your personal pond and the
ponds you own are deleted through the trash process, and your authorship
on shared content is replaced with "deleted user" (pseudonymization).
You further have the right to rectification, erasure, restriction of
processing, and to lodge a complaint with a supervisory authority. To
exercise your rights, contact [address from the imprint].

## Hosting and backups

This instance is hosted at [provider, location]. Backups are kept for
[retention] and stored [location/provider]. [If configured: a copy of
each backup set is transferred to [target, e.g. a Nextcloud / a private
server] and kept there for [retention].]

Privacy policy template (Deutsch)

Diese Dorfteich-Instanz wird betrieben von [Betreiberin/Betreiber, siehe
Impressum]. Wir verarbeiten personenbezogene Daten nur, soweit der
Betrieb dieses Dienstes es erfordert (Art. 6 Abs. 1 lit. b DSGVO für
Konten, Art. 6 Abs. 1 lit. f DSGVO für Missbrauchsschutz und
Betriebs-Logs).

## Konten

Bei der Registrierung speichern wir Benutzername, E-Mail-Adresse, einen
Passwort-Hash (nie das Passwort selbst), den Anzeigenamen und die
Spracheinstellung. Die E-Mail-Adresse dient der Bestätigung des Kontos
und dem Zurücksetzen des Passworts. Konten sind für andere Mitglieder
unter den von dir gewählten Namen sichtbar.

## Sitzungen und Cookies

Nach der Anmeldung hält ein Sitzungs-Cookie (`dt_session`) dich
angemeldet. Wir speichern die Sitzung zusammen mit der von deinem
Browser übermittelten Kennung (User-Agent) und einem Ablaufzeitpunkt.
Es gibt keine Tracking- oder Drittanbieter-Cookies.

## Missbrauchsschutz und Server-Logs

Zum Schutz vor Missbrauch werden IP-Adressen in kurzlebigen
Rate-Limit-Einträgen gezählt, die automatisch verfallen. Der
vorgeschaltete Webserver schreibt zusätzlich Zugriffs-Logs mit
IP-Adressen; diese werden rotiert und nach [Aufbewahrung, z. B. 14
Tagen] gelöscht.

## E-Mail

Transaktions-E-Mails (Konto-Bestätigung, Passwort-Zurücksetzen) werden
über den SMTP-Server [Anbieter] versendet. Dafür werden deine
E-Mail-Adresse und der Nachrichteninhalt an diesen Server übermittelt.

## Von dir erstellte Inhalte

Von dir angelegte Seiten und hochgeladene Dateien liegen auf dem Server
und sind für die Personen sichtbar, die die Berechtigungen deiner Teiche
zulassen. Inhalte sind nicht Ende-zu-Ende-verschlüsselt — der Server
verarbeitet sie im Klartext, um Suche, Export und Darstellung
bereitzustellen. Zu jeder Seite wird eine Versionshistorie
einschließlich der beteiligten Autorinnen und Autoren geführt;
Kommentare werden mit ihrer Autorin/ihrem Autor gespeichert. Gelöschte
Seiten bleiben [Aufbewahrung, Standard 30]
Tage im Papierkorb wiederherstellbar, bevor sie endgültig entfernt
werden.

## Benachrichtigungen und Digest-Mails

Wenn du Seiten oder Teiche beobachtest, werden Benachrichtigungen in der
App gesammelt und — je nach Einstellung — als Sammel-E-Mails („Digests")
zugestellt. Digests lassen sich in den Einstellungen abschalten; jede
Digest-Mail enthält einen ohne Anmeldung funktionierenden Abmeldelink.

## API-Tokens

Wenn du persönliche API-Tokens anlegst (für Skripte oder
KI-Assistenten), wird nur ein Hash des Tokens gespeichert. Zugriffe über
Tokens unterliegen deinen eigenen Berechtigungen; schreibende Zugriffe
werden im Admin-Protokoll festgehalten.

## Keine Anfragen an Dritte

Dein Browser kommuniziert ausschließlich mit dieser Instanz: Schriften
sind selbst gehostet, es gibt keine CDNs, keine Analyse-Dienste und
keine eingebetteten Drittanbieter.

## Deine Rechte

Du kannst deine eigenen Daten (Profil und die dir gehörenden Teiche)
jederzeit in den Konto-Einstellungen als ZIP-Archiv exportieren
(Auskunft und Datenübertragbarkeit). Bei der Löschung deines Kontos
werden dein persönlicher Teich und die dir gehörenden Teiche über den
Papierkorb-Prozess gelöscht; deine Autorenschaft an geteilten Inhalten
wird durch „gelöschte Nutzerin/gelöschter Nutzer" ersetzt
(Pseudonymisierung). Darüber hinaus hast du das Recht auf Berichtigung,
Löschung, Einschränkung der Verarbeitung und auf Beschwerde bei einer
Aufsichtsbehörde. Wende dich dazu an [Kontakt aus dem Impressum].

## Hosting und Backups

Diese Instanz wird gehostet bei [Anbieter, Standort]. Backups werden
[Aufbewahrung] aufbewahrt und liegen [Ort/Anbieter]. [Falls
konfiguriert: Eine Kopie der Sicherungen wird zu [Ziel, z. B. eine
Nextcloud / ein privater Server] übertragen und dort [Aufbewahrung]
aufbewahrt.]