- 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
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 |
Imprint template (fill in and paste into Administration → Legal pages)
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.]