Matrix Secure Chat Setup

Matrix ist ein dezentrales, offenes Protokoll für sichere, Echtzeit-Kommunikation. Es ermöglicht dir, deinen eigenen Chat-Server zu betreiben, der vollständig unter deiner Kontrolle steht und mit anderen Matrix-Servern kommunizieren kann (Federation). In diesem ausführlichen Tutorial zeige ich dir, wie du einen vollständigen Matrix-Server mit Docker Compose aufsetzt, inklusive Synapse (der Referenz-Server), Element (Web-Client), Traefik (Reverse-Proxy), TURN-Server für Voice/Video und optional WhatsApp-Bridge.

Was ist Matrix?

Matrix ist ein offenes Protokoll für dezentrale, Echtzeit-Kommunikation. Die wichtigsten Vorteile:

Architektur-Übersicht

Dieses Setup umfasst folgende Komponenten:

  1. Synapse: Der Matrix-Homeserver (Hauptkomponente)
  2. PostgreSQL: Datenbank für Synapse
  3. Element Web: Web-basierter Chat-Client
  4. Traefik: Reverse-Proxy mit automatischem SSL
  5. Coturn: TURN-Server für Voice/Video-Calls
  6. LiveKit: Moderne WebRTC-Infrastruktur für Video-Calls
  7. Synapse Admin: Web-Interface zur Server-Verwaltung
  8. Mautrix WhatsApp (optional): Bridge zu WhatsApp

Voraussetzungen

Bevor wir mit der Installation beginnen, stelle sicher, dass du folgende Voraussetzungen erfüllst:

Systemanforderungen

Installation prüfen

Überprüfe, ob Docker und Docker Compose installiert sind:

docker --version
docker compose version

DNS-Konfiguration

Du benötigst eine Domain mit folgenden DNS-Einträgen:

Wichtig: Stelle sicher, dass diese DNS-Einträge aktiv sind, bevor du mit dem Setup beginnst, da Let’s Encrypt die Domain-Validierung durchführt.

Schritt 1: Projekt-Verzeichnis erstellen

Erstelle ein neues Verzeichnis für dein Matrix-Setup:

mkdir matrix-server
cd matrix-server

Schritt 2: Umgebungsvariablen konfigurieren

Erstelle eine .env Datei mit allen notwendigen Konfigurationswerten:

nano .env

Füge folgende Variablen ein und passe sie an deine Umgebung an:

# Synapse Konfiguration
SYNAPSE_SERVER_NAME=matrix.deine-domain.de
SYNAPSE_REPORT_STATS=true

# PostgreSQL
POSTGRES_PASSWORD=dein_sicheres_datenbank_passwort

# AWS S3 für Media Storage (optional, aber empfohlen)
AWS_ACCESS_KEY_ID=dein_aws_access_key
AWS_SECRET_ACCESS_KEY=dein_aws_secret_key
AWS_DEFAULT_REGION=eu-central-1
AWS_S3_ADDRESSING_STYLE=path

# TURN Server Konfiguration
TURN_DOMAIN=rtc.deine-domain.de
TURN_REALM=rtc.deine-domain.de
TURN_STATIC_AUTH_SECRET=generiere_ein_langes_zufaelliges_secret
EXTERNAL_IP=deine_oeffentliche_ip_adresse
RELAY_IP=deine_oeffentliche_ip_adresse

# LiveKit Konfiguration
LIVEKIT_API_KEY=generiere_einen_api_key
LIVEKIT_API_SECRET=generiere_ein_langes_secret

# Mautrix WhatsApp Bridge (optional)
MW_POSTGRES_PASSWORD=dein_whatsapp_bridge_datenbank_passwort

Wichtige Konfigurationsoptionen im Detail

SYNAPSE_SERVER_NAME:

SYNAPSE_REPORT_STATS:

POSTGRES_PASSWORD:

TURN_STATIC_AUTH_SECRET:

LIVEKIT_API_KEY und LIVEKIT_API_SECRET:

Sicherheitshinweis: Bewahre deine .env Datei sicher auf und teile sie niemals öffentlich!

Schritt 3: Verzeichnisstruktur erstellen

Erstelle die notwendigen Verzeichnisse für Konfigurationen und Daten:

mkdir -p synapse element/config.json traefik well-known/matrix/server whatsapp certs

Schritt 4: Traefik ACME-Datei erstellen

Erstelle die Datei für Let’s Encrypt-Zertifikate:

touch traefik/acme.json
chmod 600 traefik/acme.json

Die Berechtigung 600 ist wichtig, damit nur der Besitzer die Datei lesen/schreiben kann.

Schritt 5: Synapse-Konfiguration generieren

Synapse benötigt eine initiale Konfigurationsdatei. Wir generieren sie mit dem offiziellen Synapse-Image:

docker run -it --rm \
  -v $(pwd)/synapse:/data \
  -e SYNAPSE_SERVER_NAME=matrix.deine-domain.de \
  -e SYNAPSE_REPORT_STATS=true \
  matrixdotorg/synapse:latest generate

Wichtig: Ersetze matrix.deine-domain.de mit deinem tatsächlichen Domain-Namen!

Dies erstellt die Datei synapse/homeserver.yaml. Wir werden diese später anpassen.

Schritt 6: Synapse-Konfiguration anpassen

Öffne die generierte synapse/homeserver.yaml und passe folgende Einstellungen an:

nano synapse/homeserver.yaml

Wichtige Konfigurationen:

Datenbank-Verbindung (bereits konfiguriert durch Umgebungsvariablen):

database:
  name: psycopg2
  args:
    user: synapse
    password: ${POSTGRES_PASSWORD}
    database: synapse
    host: db
    cp_min: 5
    cp_max: 10

Media Storage (für S3, optional):

media_store_path: "/data/media_store"
s3:
  enabled: true
  bucket_name: "dein-s3-bucket-name"
  region_name: "eu-central-1"
  access_key_id: "${AWS_ACCESS_KEY_ID}"
  secret_access_key: "${AWS_SECRET_ACCESS_KEY}"
  addressing_style: "path"

TURN-Server Konfiguration:

turn_uris:
  - "turn:rtc.deine-domain.de:3478?transport=udp"
  - "turn:rtc.deine-domain.de:3478?transport=tcp"
  - "turns:rtc.deine-domain.de:5349?transport=udp"
  - "turns:rtc.deine-domain.de:5349?transport=tcp"

turn_shared_secret: "${TURN_STATIC_AUTH_SECRET}"
turn_user_lifetime: 86400000
turn_allow_guests: true

LiveKit Integration (für moderne Video-Calls):

livekit:
  url: "wss://rtc.deine-domain.de/livekit/sfu"
  api_key: "${LIVEKIT_API_KEY}"
  api_secret: "${LIVEKIT_API_SECRET}"

Federation (wichtig für Kommunikation mit anderen Servern):

federation_domain_whitelist: []
# Leer lassen = alle Domains erlauben
# Oder spezifische Domains auflisten

Registrierung (für neue Benutzer):

enable_registration: true
enable_registration_without_verification: false
registration_shared_secret: "generiere_ein_langes_secret_hier"

Schritt 7: Element-Konfiguration erstellen

Erstelle die Konfigurationsdatei für Element Web:

nano element/config.json

Füge folgende Konfiguration ein:

{
  "default_server_config": {
    "m.homeserver": {
      "base_url": "https://matrix.deine-domain.de",
      "server_name": "matrix.deine-domain.de"
    },
    "m.identity_server": {
      "base_url": "https://vector.im"
    }
  },
  "default_server_name": "matrix.deine-domain.de",
  "brand": "Dein Chat",
  "integrations_ui_url": "https://scalar.vector.im/",
  "integrations_rest_url": "https://scalar.vector.im/api",
  "integrations_widgets_urls": [
    "https://scalar.vector.im/_matrix/integrations/v1",
    "https://scalar.vector.im/_matrix/integrations/v2",
    "https://scalar-staging.vector.im/_matrix/integrations/v1",
    "https://scalar-staging.vector.im/_matrix/integrations/v2",
    "https://scalar-staging.riot.im/scalar/api"
  ],
  "bug_report_endpoint_url": "https://element.io/bugreports/submit",
  "defaultCountryCode": "DE",
  "showLabsSettings": true,
  "features": {
    "feature_new_spinner": true,
    "feature_pinning": true,
    "feature_custom_status": true,
    "feature_custom_tags": true,
    "feature_state_resolver": true,
    "feature_mjolnir": true,
    "feature_dnd": true,
    "feature_bridge_state": true,
    "feature_presence_in_room_list": true,
    "feature_cross_signing": true,
    "feature_new_device_manager": true,
    "feature_video_rooms": true,
    "feature_element_call": true,
    "feature_livekit": true
  },
  "default_federate": true,
  "default_theme": "light",
  "roomDirectory": {
    "servers": [
      "matrix.deine-domain.de",
      "matrix.org"
    ]
  },
  "settingDefaults": {
    "breadcrumbs": true
  },
  "jitsi": {
    "preferredDomain": "meet.jit.si"
  },
  "livekit": {
    "url": "wss://rtc.deine-domain.de/livekit/sfu",
    "jwt_service_url": "https://jwt.deine-domain.de"
  }
}

Wichtig: Ersetze alle deine-domain.de Einträge mit deiner tatsächlichen Domain!

Schritt 8: Well-Known Konfiguration

Erstelle die Well-Known-Dateien für Matrix-Discovery:

mkdir -p well-known/matrix

Erstelle well-known/matrix/server:

nano well-known/matrix/server

Füge folgendes ein (ersetze mit deiner Domain):

{
  "m.server": "matrix.deine-domain.de:443"
}

Erstelle well-known/matrix/client:

nano well-known/matrix/client
{
  "m.homeserver": {
    "base_url": "https://matrix.deine-domain.de"
  },
  "m.identity_server": {
    "base_url": "https://vector.im"
  }
}

Schritt 9: Docker Compose Datei erstellen

Erstelle die docker-compose.yml Datei:

nano docker-compose.yml

Füge die vollständige docker-compose.yml ein (siehe unten im Dokument).

Schritt 10: Container starten

Starte alle Container:

docker compose up -d

Der -d Flag startet die Container im Hintergrund. Du kannst den Status überprüfen mit:

docker compose ps

Die Container sollten jetzt starten. Der erste Start kann einige Minuten dauern, da:

Schritt 11: Logs überwachen

Überwache die Logs, um sicherzustellen, dass alles korrekt startet:

# Alle Container
docker compose logs -f

# Nur Synapse
docker compose logs -f synapse

# Nur Traefik (für SSL-Status)
docker compose logs -f traefik

Wichtige Log-Meldungen

Synapse:

Traefik:

Schritt 12: Ersten Benutzer erstellen

Nachdem Synapse gestartet ist, erstelle den ersten Admin-Benutzer:

docker compose exec synapse register_new_matrix_user -c /data/homeserver.yaml -a -u admin -p dein_admin_passwort

Wichtig:

Schritt 13: Auf den Server zugreifen

Nach erfolgreichem Start kannst du auf folgende URLs zugreifen:

Schritt 14: Erste Anmeldung

  1. Öffne https://chat.deine-domain.de in deinem Browser
  2. Klicke auf “Sign In”
  3. Wähle “Edit” neben dem Server-Namen
  4. Gib https://matrix.deine-domain.de ein
  5. Melde dich mit deinem Admin-Account an

Erweiterte Konfiguration

Media Storage mit S3

Für Production-Umgebungen wird empfohlen, Media-Dateien in S3 zu speichern:

  1. Erstelle einen S3-Bucket bei AWS (oder kompatiblem Service)
  2. Konfiguriere die AWS-Credentials in der .env Datei
  3. Aktiviere S3 in der homeserver.yaml (siehe Schritt 6)

WhatsApp-Bridge einrichten

Die Mautrix WhatsApp Bridge ermöglicht es, WhatsApp-Nachrichten über Matrix zu empfangen/senden:

  1. Starte die Bridge: docker compose up -d mautrix-whatsapp
  2. Öffne http://deine-server-ip:29318 im Browser
  3. Folge der Anleitung zum QR-Code-Scan
  4. Die Bridge wird automatisch als AppService in Synapse registriert

Backup-Strategie

Datenbank-Backup:

docker compose exec db pg_dump -U synapse synapse > backup_$(date +%Y%m%d).sql

Synapse-Daten-Backup:

tar -czf synapse_backup_$(date +%Y%m%d).tar.gz synapse/

Automatische Backups (mit Cron):

# Füge zu crontab hinzu (crontab -e)
0 2 * * * cd /pfad/zum/matrix-server && docker compose exec -T db pg_dump -U synapse synapse > backups/db_$(date +\%Y\%m\%d).sql

Häufige Probleme und Lösungen

Problem: SSL-Zertifikat wird nicht erstellt

Symptome: Traefik-Logs zeigen ACME-Fehler

Lösungen:

Problem: Synapse startet nicht

Symptome: Container stoppt sofort oder Logs zeigen Fehler

Lösungen:

Problem: Federation funktioniert nicht

Symptome: Kann nicht mit anderen Matrix-Servern kommunizieren

Lösungen:

Problem: TURN-Server funktioniert nicht

Symptome: Voice/Video-Calls funktionieren nicht

Lösungen:

Problem: Element lädt nicht

Symptome: Weißer Bildschirm oder Fehler beim Laden

Lösungen:

Performance-Optimierung

Datenbank-Optimierung

Füge in homeserver.yaml hinzu:

database:
  args:
    cp_min: 5
    cp_max: 10
    cp_reconnect: true

Synapse-Optimierung

Für größere Installationen:

media_store_path: "/data/media_store"
max_upload_size: "50M"
max_image_pixels: "32M"

Ressourcen-Limits

Füge in docker-compose.yml Ressourcen-Limits hinzu:

synapse:
  deploy:
    resources:
      limits:
        cpus: '2'
        memory: 2G
      reservations:
        cpus: '1'
        memory: 1G

Sicherheits-Best-Practices

  1. Firewall konfigurieren:

    • Öffne nur Ports 80, 443, 8448
    • Blockiere alle anderen Ports
  2. Regelmäßige Updates:

    docker compose pull
    docker compose up -d
  3. Starke Passwörter:

    • Verwende Passwort-Manager
    • Aktiviere 2FA für Admin-Accounts
  4. Backups:

    • Tägliche Datenbank-Backups
    • Wöchentliche Voll-Backups
    • Teste die Wiederherstellung regelmäßig
  5. Monitoring:

    • Überwache Container-Logs
    • Setze Alerts für kritische Fehler
    • Überwache Ressourcen-Nutzung

Nächste Schritte

Nach erfolgreicher Installation kannst du:

  1. Weitere Benutzer einladen: Erstelle Accounts für deine Community
  2. Räume erstellen: Organisiere deine Kommunikation in Räumen
  3. Bridges einrichten: Verbinde mit anderen Chat-Services
  4. Bots hinzufügen: Automatisiere Aufgaben mit Matrix-Bots
  5. Custom Branding: Passe Element an dein Branding an

Fazit

Mit diesem Setup hast du einen vollständig funktionsfähigen Matrix-Server mit:

Für weitere Informationen und fortgeschrittene Konfigurationen schaue in die offizielle Synapse-Dokumentation.

Viel Erfolg mit deinem Matrix-Server! 💬🔐


Docker Compose Konfiguration

Hier ist die vollständige docker-compose.yml Datei:

services:
  traefik:
    image: traefik:v3.0
    restart: unless-stopped
    command:
      # Providers
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false

      # Entrypoints
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --entrypoints.federation.address=:8448
      #- --entrypoints.turn-udp.address=:3478/udp
      #- --entrypoints.turn-tcp.address=:3478/tcp
      #- --entrypoints.turns-udp.address=:5349/udp
      #- --entrypoints.turns-tcp.address=:5349/tcp

      # HTTP -> HTTPS redirect
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --entrypoints.web.http.redirections.entrypoint.scheme=https

      # ACME/Let's Encrypt
      - --certificatesresolvers.le.acme.tlschallenge=true
      - --certificatesresolvers.le.acme.email=deine-email@deine-domain.de
      - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json

      # Optional: set to DEBUG if you need ACME diagnostics
      # - --log.level=DEBUG

      # Optional: dashboard on internal socket only (no port published)
      - --api.dashboard=true
    ports:
      - "80:80"
      - "443:443"
      - "8448:8448"
      #- "3478:3478/udp"
      #- "3478:3478/tcp"
      #- "5349:5349/udp"
      #- "5349:5349/tcp"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik/acme.json:/letsencrypt/acme.json

  db:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: synapse
      # Ensure C collation for Synapse
      POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=C --lc-ctype=C"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U synapse"]
      interval: 10s
      timeout: 5s
      retries: 10
    volumes:
      - dbdata:/var/lib/postgresql/data

  synapse:
    image: matrixdotorg/synapse:latest
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      # Keep this aligned with homeserver.yaml server_name
      SYNAPSE_SERVER_NAME: ${SYNAPSE_SERVER_NAME}
      SYNAPSE_REPORT_STATS: ${SYNAPSE_REPORT_STATS}
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION}
      AWS_S3_ADDRESSING_STYLE: ${AWS_S3_ADDRESSING_STYLE}
    volumes:
      - ./synapse:/data
      - ./whatsapp/:/whatsapp/
      #- mw_data:/data
    ports:
      - "8008:8008"
    labels:
      - traefik.enable=true

      # Client API via 443
      - traefik.http.routers.synapse-web.rule=Host(`matrix.deine-domain.de`) && (PathPrefix(`/_matrix`) || PathPrefix(`/_synapse`))
      - traefik.http.routers.synapse-web.entrypoints=websecure
      - traefik.http.routers.synapse-web.tls.certresolver=le
      - traefik.http.routers.synapse-web.service=synapse-web
      - traefik.http.services.synapse-web.loadbalancer.server.port=8008
      - traefik.http.middlewares.synapse-buf.buffering.maxRequestBodyBytes=0
      - traefik.http.routers.synapse-web.middlewares=synapse-buf

      # Federation via 8448
      - traefik.http.routers.synapse-fed.rule=Host(`matrix.deine-domain.de`) && PathPrefix(`/_matrix`)
      - traefik.http.routers.synapse-fed.entrypoints=federation
      - traefik.http.routers.synapse-fed.tls.certresolver=le
      - traefik.http.routers.synapse-fed.service=synapse-fed
      - traefik.http.services.synapse-fed.loadbalancer.server.port=8008

  element:
    image: vectorim/element-web:latest
    restart: unless-stopped
    depends_on:
      - synapse
    volumes:
      # Provide your Element config
      - ./element/config.json:/app/config.json:ro
    labels:
      - traefik.enable=true
      - traefik.http.routers.element.rule=Host(`chat.deine-domain.de`)
      - traefik.http.routers.element.entrypoints=websecure
      - traefik.http.routers.element.tls.certresolver=le
      - traefik.http.routers.element.service=element
      - traefik.http.services.element.loadbalancer.server.port=80

  admin:
    image: etkecc/synapse-admin
    container_name: admin
    environment:
      REACT_APP_SERVER: https://matrix.deine-domain.de
      TZ: Europe/Berlin
    ports:
      - "8081:80"
    restart: unless-stopped

  certs-dumper:
    image: ldez/traefik-certs-dumper:latest
    restart: unless-stopped
    depends_on:
      - traefik
    volumes:
      - ./traefik/acme.json:/acme.json:ro
      - ./certs:/out
    env_file:
      - .env
    environment:
      # Export-Modus: directory mit fullchain.pem und privkey.pem pro Domain
      - DOMAIN=${TURN_DOMAIN}
    entrypoint:
      - sh
      - -c
      - |
        set -e
        while true; do
          traefik-certs-dumper file --version v2 --watch=false --source /acme.json --domain-subdir --dest /out
          if [ -f "${CERTS_PATH}/certificate.crt" ]; then
            chown 0:65534 "${CERTS_PATH}/certificate.crt" || true
            chmod 0640 "${CERTS_PATH}/certificate.crt" || true
          fi
          if [ -f "${CERTS_PATH}/privatekey.key" ]; then
            chown 0:65534 "${CERTS_PATH}/privatekey.key" || true
            chmod 0640 "${CERTS_PATH}/privatekey.key" || true
          fi
          sleep 3600
        done

  coturn:
    image: coturn/coturn:latest
    container_name: coturn
    restart: unless-stopped
    depends_on:
      - certs-dumper
    user: "root:root"
    entrypoint:
      - sh
      - -c
      - |
        set -e
        #echo "Waiting for $${CERTS_PATH}/certificate.crt and $${CERTS_PATH}/privatekey.key ..."
        #for i in $$(seq 1 180); do
        #  [ -f "$${CERTS_PATH}/certificate.crt" ] && [ -f "$${CERTS_PATH}/privatekey.key" ] && break
        #  sleep 1
        #done
        #[ -f "$${CERTS_PATH}/certificate.crt" ] && [ -f "$${CERTS_PATH}/privatekey.key" ] || { echo "Certs missing after 180s"; exit 1; }

        exec turnserver \
          --log-file=stdout \
          --no-cli \
          --fingerprint \
          --listening-port=3478 \
          --tls-listening-port=5349 \
          --use-auth-secret \
          --static-auth-secret="$${TURN_STATIC_AUTH_SECRET}" \
          --realm="$${TURN_REALM}" \
          --min-port=49160 \
          --max-port=49200 \
          --cert="$${CERTS_PATH}/certificate.crt" \
          --pkey="$${CERTS_PATH}/privatekey.key" \
          --no-tlsv1 \
          --stale-nonce=600 \
          --total-quota=100 \
          --no-multicast-peers \
          --no-tcp-relay \
          $${EXTERNAL_IP:+--external-ip=$${EXTERNAL_IP}} \
          $${RELAY_IP:+--relay-ip=$${RELAY_IP}}
    environment:
      - CERTS_PATH="/certs/${TURN_DOMAIN}"
      - TURN_REALM=${TURN_REALM}
      - TURN_STATIC_AUTH_SECRET=${TURN_STATIC_AUTH_SECRET}
      - TURN_DOMAIN=${TURN_DOMAIN}
      - EXTERNAL_IP=${EXTERNAL_IP}
      - RELAY_IP=${RELAY_IP}
    network_mode: host
    #ports:
    #  - "3478:3478/tcp"
    #  - "3478:3478/udp"
    #  - "5349:5349/tcp"
    #  - "5349:5349/udp"
    #  - "49160-49200:49160-49200/udp"
    volumes:
      - ./certs:/certs:ro
    healthcheck:
      test: ["CMD-SHELL", "timeout 2 bash -c '</dev/tcp/127.0.0.1/3478' || exit 1"]
      interval: 30s
      timeout: 5s
      retries: 5
    labels:
      - traefik.enable=true
      - traefik.tcp.routers.turn-udp.rule=HostSNI(`*`)
      - traefik.tcp.routers.turn-udp.entrypoints=turn-udp
      - traefik.tcp.routers.turn-udp.service=turn-udp
      - traefik.tcp.services.turn-udp.loadbalancer.server.port=3478
      - traefik.tcp.routers.turn-tcp.rule=HostSNI(`*`)
      - traefik.tcp.routers.turn-tcp.entrypoints=turn-tcp
      - traefik.tcp.routers.turn-tcp.service=turn-tcp
      - traefik.tcp.services.turn-tcp.loadbalancer.server.port=3478
      - traefik.tcp.routers.turns-udp.rule=HostSNI(`*`)
      - traefik.tcp.routers.turns-udp.entrypoints=turns-udp
      - traefik.tcp.routers.turns-udp.service=turns-udp
      - traefik.tcp.services.turns-udp.loadbalancer.server.port=5349
      - traefik.tcp.routers.turns-tcp.rule=HostSNI(`*`)
      - traefik.tcp.routers.turns-tcp.entrypoints=turns-tcp
      - traefik.tcp.routers.turns-tcp.service=turns-tcp
      - traefik.tcp.services.turns-tcp.loadbalancer.server.port=5349

  livekit:
    image: livekit/livekit-server:latest
    restart: unless-stopped
    environment:
      LIVEKIT_PORT: "7880"
      LIVEKIT_RTC_TCP_PORT: "7881"
      LIVEKIT_RTC_UDP_PORT: "7882"        # alternativ Port-Range 50000-60000/udp
      LIVEKIT_KEYS: "${LIVEKIT_API_KEY}: ${LIVEKIT_API_SECRET}"
      LIVEKIT_WEBRTC_USE_EXTERNAL_IP: "true"
    command: >
      --bind 0.0.0.0
      --node-ip 0.0.0.0
      --port 7880
      #--rtc.tcp_port 7881
      #--rtc.udp_port 7882
    labels:
      - traefik.enable=true
      - traefik.http.routers.livekit.rule=Host(`rtc.deine-domain.de`)
      - traefik.http.routers.livekit.entrypoints=websecure
      - traefik.http.routers.livekit.tls.certresolver=le
      - traefik.http.middlewares.livekit-strip.stripprefix.prefixes=/livekit/sfu
      - traefik.http.routers.livekit.middlewares=livekit-strip
      - traefik.http.services.livekit.loadbalancer.server.port=7880
    ports:
      - "7881:7881/tcp"     # WebRTC TCP fallback
      - "7882:7882/udp"     # WebRTC UDP (UDP-Mux)
      # Falls du statt UDP-Mux lieber Range nutzt: 50000-60000/udp publishen

  lk-jwt:
    image: ghcr.io/element-hq/lk-jwt-service:latest
    restart: unless-stopped
    environment:
      LIVEKIT_URL: "wss://rtc.deine-domain.de/livekit/sfu"   # via Traefik auf 7880
      LIVEKIT_KEY: "${LIVEKIT_API_KEY}"
      LIVEKIT_SECRET: "${LIVEKIT_API_SECRET}"
      # optional: RATE_LIMIT, LOG_LEVEL usw.
    labels:
      - traefik.enable=true
      # Route: Host + Pfadpräfix
      - traefik.http.routers.lkjwt.rule=Host(`jwt.deine-domain.de`)
      - traefik.http.routers.lkjwt.entrypoints=websecure
      - traefik.http.routers.lkjwt.tls.certresolver=le
      - traefik.http.services.lkjwt.loadbalancer.server.port=8080

      # CORS freischalten (sonst blockt der Browser die JWT-Anfrage)
      - traefik.http.middlewares.lkjwt-cors.headers.accesscontrolallowmethods=GET,OPTIONS
      - traefik.http.middlewares.lkjwt-cors.headers.accesscontrolallowheaders=*
      - traefik.http.middlewares.lkjwt-cors.headers.accesscontrolalloworiginlist=*
      - traefik.http.middlewares.lkjwt-cors.headers.addvaryheader=true

      # Middlewares anwenden (Reihenfolge egal)
      - traefik.http.routers.lkjwt.middlewares=lkjwt-cors

  wellknown:
    image: nginx:alpine
    volumes:
      - ./well-known:/usr/share/nginx/html/.well-known:ro
    labels:
      - traefik.enable=true
      - traefik.http.routers.wellknown.rule=Host(`matrix.deine-domain.de`) && PathPrefix(`/.well-known/matrix`)
      - traefik.http.routers.wellknown.entrypoints=websecure
      - traefik.http.routers.wellknown.tls.certresolver=le
      - traefik.http.services.wellknown.loadbalancer.server.port=80

  mw-db:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_DB: mautrix_whatsapp
      POSTGRES_USER: mautrix
      POSTGRES_PASSWORD: ${MW_POSTGRES_PASSWORD:-change_me}
    volumes:
      - mw_db:/var/lib/postgresql/data

  mautrix-whatsapp:
    image: dock.mau.dev/mautrix/whatsapp:latest
    restart: unless-stopped
    depends_on:
      - mw-db
    volumes:
      - ./whatsapp/:/data/
    ports:
      - "29318:29318"    # AppService-Callback Port für Synapse
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:29318/health"]
      interval: 30s
      timeout: 5s
      retries: 5

volumes:
  dbdata:
  mw_db:
  mw_data:

Wichtig: Ersetze alle deine-domain.de Einträge in der docker-compose.yml mit deiner tatsächlichen Domain!

Datenschutzerklärung

1. Datenschutz auf einen Blick

Allgemeine Hinweise

Die folgenden Hinweise geben einen einfachen Überblick darüber, was mit Ihren personenbezogenen Daten passiert, wenn Sie diese Website besuchen. Personenbezogene Daten sind alle Daten, mit denen Sie persönlich identifiziert werden können. Ausführliche Informationen zum Thema Datenschutz entnehmen Sie unserer unter diesem Text aufgeführten Datenschutzerklärung.

Datenerfassung auf dieser Website

Wer ist verantwortlich für die Datenerfassung auf dieser Website?

Die Datenverarbeitung auf dieser Website erfolgt durch den Websitebetreiber. Dessen Kontaktdaten können Sie dem Abschnitt „Hinweis zur Verantwortlichen Stelle" in dieser Datenschutzerklärung entnehmen.

Wie erfassen wir Ihre Daten?

Ihre Daten werden zum einen dadurch erhoben, dass Sie uns diese mitteilen. Hierbei kann es sich z. B. um Daten handeln, die Sie in ein Kontaktformular eingeben.

Andere Daten werden automatisch oder nach Ihrer Einwilligung beim Besuch der Website durch unsere IT-Systeme erfasst. Das sind vor allem technische Daten (z. B. Internetbrowser, Betriebssystem oder Uhrzeit des Seitenaufrufs). Die Erfassung dieser Daten erfolgt automatisch, sobald Sie diese Website betreten.

Wofür nutzen wir Ihre Daten?

Ein Teil der Daten wird erhoben, um eine fehlerfreie Bereitstellung der Website zu gewährleisten. Andere Daten können zur Analyse Ihres Nutzerverhaltens verwendet werden.

Welche Rechte haben Sie bezüglich Ihrer Daten?

Sie haben jederzeit das Recht, unentgeltlich Auskunft über Herkunft, Empfänger und Zweck Ihrer gespeicherten personenbezogenen Daten zu erhalten. Sie haben außerdem ein Recht, die Berichtigung oder Löschung dieser Daten zu verlangen. Wenn Sie eine Einwilligung zur Datenverarbeitung erteilt haben, können Sie diese Einwilligung jederzeit für die Zukunft widerrufen. Außerdem haben Sie das Recht, unter bestimmten Umständen die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen. Des Weiteren steht Ihnen ein Beschwerderecht bei der zuständigen Aufsichtsbehörde zu.

Hierzu sowie zu weiteren Fragen zum Thema Datenschutz können Sie sich jederzeit an uns wenden.

2. Hosting

Wir hosten die Inhalte unserer Website bei folgendem Anbieter:

Die von uns in Anspruch genommenen Hosting-Leistungen dienen der Zurverfügungstellung der folgenden Leistungen: Infrastruktur- und Plattformdienstleistungen, Rechenkapazität, Speicherplatz und Datenbankdienste, Sicherheitsleistungen sowie technische Wartungsleistungen, die wir zum Zwecke des Betriebs dieser Website einsetzen.

Hierbei verarbeiten wir, bzw. unser Hostinganbieter Bestandsdaten, Kontaktdaten, Inhaltsdaten, Vertragsdaten, Nutzungsdaten, Meta- und Kommunikationsdaten von Kunden, Interessenten und Besuchern dieser Website auf Grundlage unserer berechtigten Interessen an einer effizienten und sicheren Zurverfügungstellung dieser Website gem. Art. 6 Abs. 1 lit. f DSGVO i.V.m. Art. 28 DSGVO.

3. Allgemeine Hinweise und Pflichtinformationen

Datenschutz

Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend den gesetzlichen Datenschutzbestimmungen sowie dieser Datenschutzerklärung.

Wenn Sie diese Website benutzen, werden verschiedene personenbezogene Daten erhoben. Personenbezogene Daten sind Daten, mit denen Sie persönlich identifiziert werden können. Die vorliegende Datenschutzerklärung erläutert, welche Daten wir erheben und wofür wir sie nutzen. Sie erläutert auch, wie und zu welchem Zweck das geschieht.

Wir weisen darauf hin, dass die Datenübertragung im Internet (z. B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.

Hinweis zur verantwortlichen Stelle

Die verantwortliche Stelle für die Datenverarbeitung auf dieser Website ist:

Van de Everest UG (haftungsbeschränkt)
Frankenstraße 152
90461 Nürnberg
Deutschland

Vertreten durch: Kai Pazdzewicz

Telefon: +49 (0) 911 14895050
E-Mail: info@pazdzewicz.de

Registergericht: Nürnberg
Registernummer: HRB 43972

Umsatzsteuer-ID: DE340033340

Verantwortliche Stelle ist die natürliche oder juristische Person, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten (z. B. Namen, E-Mail-Adressen o. Ä.) entscheidet.

Speicherdauer

Soweit innerhalb dieser Datenschutzerklärung keine speziellere Speicherdauer genannt wurde, verbleiben Ihre personenbezogenen Daten bei uns, bis der Zweck für die Datenverarbeitung entfällt. Wenn Sie ein berechtigtes Löschersuchen geltend machen oder eine Einwilligung zur Datenverarbeitung widerrufen, werden Ihre Daten gelöscht, sofern wir keine anderen rechtlich zulässigen Gründe für die Speicherung Ihrer personenbezogenen Daten haben (z. B. steuer- oder handelsrechtliche Aufbewahrungsfristen); im letztgenannten Fall erfolgt die Löschung nach Fortfall dieser Gründe.

Allgemeine Hinweise zu den Rechtsgrundlagen der Datenverarbeitung auf dieser Website

Sofern Sie in die Datenverarbeitung eingewilligt haben, verarbeiten wir Ihre personenbezogenen Daten auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO bzw. Art. 9 Abs. 2 lit. a DSGVO, sofern besondere Datenkategorien nach Art. 9 Abs. 1 DSGVO verarbeitet werden. Im Falle einer ausdrücklichen Einwilligung in die Übertragung personenbezogener Daten in Drittstaaten erfolgt die Datenverarbeitung außerdem auf Grundlage von Art. 49 Abs. 1 lit. a DSGVO.

Sofern Sie in die Speicherung von Cookies oder in den Zugriff auf Informationen in Ihr Endgerät (z. B. via Device-Fingerprinting) eingewilligt haben, erfolgt die Datenverarbeitung zusätzlich auf Grundlage von § 25 Abs. 1 TTDSG. Die Einwilligung ist jederzeit widerrufbar. Sind Ihre Daten zur Vertragserfüllung oder zur Durchführung vorvertraglicher Maßnahmen erforderlich, verarbeiten wir Ihre Daten auf Grundlage des Art. 6 Abs. 1 lit. b DSGVO.

Des Weiteren verarbeiten wir Ihre Daten, sofern diese zur Erfüllung einer rechtlichen Verpflichtung erforderlich sind auf Grundlage von Art. 6 Abs. 1 lit. c DSGVO. Die Datenverarbeitung kann ferner auf Grundlage unseres berechtigten Interesses nach Art. 6 Abs. 1 lit. f DSGVO erfolgen. Über die jeweils im Einzelfall einschlägigen Rechtsgrundlagen wird in den folgenden Absätzen dieser Datenschutzerklärung informiert.

Hinweis zur Datenweitergabe in die USA und sonstige Drittstaaten

Wir verwenden unter anderem Tools von Unternehmen mit Sitz in den USA oder sonstigen datenschutzrechtlich nicht sicheren Drittstaaten. Wenn diese Tools aktiv sind, können Ihre personenbezogenen Daten in diese Drittstaaten übertragen und dort verarbeitet werden. Wir weisen darauf hin, dass in diesen Ländern kein mit der EU vergleichbares Datenschutzniveau garantiert werden kann. Beispielsweise sind US-Unternehmen dazu verpflichtet, personenbezogene Daten an Sicherheitsbehörden herauszugeben, ohne dass Sie als Betroffener hiergegen gerichtlich vorgehen könnten. Es kann daher nicht ausgeschlossen werden, dass US-Behrden (z. B. Geheimdienste) Ihre auf US-Servern befindlichen Daten zu Überwachungszwecken verarbeiten, auswerten und dauerhaft speichern. Wir haben auf diese Verarbeitungstätigkeiten keinen Einfluss.

Widerruf Ihrer Einwilligung zur Datenverarbeitung

Viele Datenverarbeitungsvorgänge sind nur mit Ihrer ausdrücklichen Einwilligung möglich. Sie können eine bereits erteilte Einwilligung jederzeit widerrufen. Die Rechtmäßigkeit der bis zum Widerruf erfolgten Datenverarbeitung bleibt vom Widerruf unberührt.

Widerspruchsrecht gegen die Datenerfassung in besonderen Fällen sowie gegen Direktwerbung (Art. 21 DSGVO)

WERDEN DIE DATENVERARBEITUNG AUF GRUNDLAGE VON ART. 6 ABS. 1 LIT. E ODER F DSGVO ERFOLGT, HABEN SIE JEDERZEIT DAS RECHT, AUS GRÜNDEN, DIE SICH AUS IHRER BESONDEREN SITUATION ERGEBEN, GEGEN DIE VERARBEITUNG IHRER PERSONENBEZOGENEN DATEN WIDERSPRUCH EINZULEGEN; DIES GILT AUCH FÜR EIN AUF DIESE BESTIMMUNGEN GESTÜTZTES PROFILING. DIE JEWEILIGE RECHTSGRUNDLAGE, AUF DENEN EINE VERARBEITUNG BERUHT, ENTNEHMEN SIE DIESER DATENSCHUTZERKLÄRUNG. WENN SIE WIDERSPRUCH EINLEGEN, WERDEN WIR IHRE BETROFFENEN PERSONENBEZOGENEN DATEN NICHT MEHR VERARBEITEN, ES SEI DENN, WIR KÖNNEN ZWINGENDE SCHUTZWÜRDIGE GRÜNDE FÜR DIE VERARBEITUNG NACHWEISEN, DIE IHRE INTERESSEN, RECHTE UND FREIHEITEN ÜBERWIEGEN ODER DIE VERARBEITUNG DIENT DER GELTENDMACHUNG, AUSÜBUNG ODER VERTEIDIGUNG VON RECHTSANSPRÜCHEN (WIDERSPRUCH NACH ART. 21 ABS. 1 DSGVO).

WERDEN IHRE PERSONENBEZOGENEN DATEN VERARBEITET, UM DIREKTWERBUNG ZU BETREIBEN, SO HABEN SIE DAS RECHT, JEDERZEIT WIDERSPRUCH GEGEN DIE VERARBEITUNG SIE BETREFFENDER PERSONENBEZOGENER DATEN ZUM ZWECKE DERARTIGER WERBUNG EINZULEGEN; DIES GILT AUCH FÜR DAS PROFILING, SOWEIT ES MIT SOLCHER DIREKTWERBUNG IN VERBINDUNG STEHT. WENN SIE WIDERSPRECHEN, WERDEN IHRE PERSONENBEZOGENEN DATEN ANSCHLIESSEND NICHT MEHR ZUM ZWECKE DER DIREKTWERBUNG VERWENDET (WIDERSPRUCH NACH ART. 21 ABS. 2 DSGVO).

Beschwerderecht bei der zuständigen Aufsichtsbehörde

Im Falle von Verstößen gegen die DSGVO steht den Betroffenen ein Beschwerderecht bei einer Aufsichtsbehörde, insbesondere in dem Mitgliedstaat ihres gewöhnlichen Aufenthalts, ihres Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes zu. Das Beschwerderecht besteht unbeschadet anderweitiger verwaltungsrechtlicher oder gerichtlicher Rechtsbehelfe.

Recht auf Datenübertragbarkeit

Sie haben das Recht, Daten, die wir auf Grundlage Ihrer Einwilligung oder in Erfüllung eines Vertrags automatisiert verarbeiten, an sich oder an einen Dritten in einem gängigen, maschinenlesbaren Format aushändigen zu lassen. Sofern Sie die direkte Übertragung der Daten an einen anderen Verantwortlichen verlangen, erfolgt dies nur, soweit es technisch machbar ist.

SSL- bzw. TLS-Verschlüsselung

Diese Seite nutzt aus Sicherheitsgründen und zum Schutz der Übertragung vertraulicher Inhalte, wie zum Beispiel Bestellungen oder Anfragen, die Sie an uns als Seitenbetreiber senden, eine SSL- bzw. TLS-Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie daran, dass die Adresszeile des Browsers von „http://" auf „https://" wechselt und an dem Schloss-Symbol in Ihrer Browserzeile.

Wenn die SSL- bzw. TLS-Verschlüsselung aktiviert ist, können die Daten, die Sie an uns übermitteln, nicht von Dritten mitgelesen werden.

Auskunft, Löschung und Berichtigung

Sie haben im Rahmen der geltenden gesetzlichen Bestimmungen jederzeit das Recht auf unentgeltliche Auskunft über Ihre gespeicherten personenbezogenen Daten, deren Herkunft und Empfänger und den Zweck der Datenverarbeitung und ggf. ein Recht auf Berichtigung oder Löschung dieser Daten. Hierzu sowie zu weiteren Fragen zum Thema personenbezogene Daten können Sie sich jederzeit an uns wenden.

Recht auf Einschränkung der Verarbeitung

Sie haben das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen. Hierzu können Sie sich jederzeit an uns wenden. Das Recht auf Einschränkung der Verarbeitung besteht in folgenden Fällen:

  • Wenn Sie die Richtigkeit Ihrer bei uns gespeicherten personenbezogenen Daten bestreiten, benötigen wir in der Regel Zeit, um dies zu überprüfen. Für die Dauer der Prüfung haben Sie das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.
  • Wenn die Verarbeitung Ihrer personenbezogenen Daten unrechtmäßig geschah/geschieht, können Sie statt der Löschung die Einschränkung der Datenverarbeitung verlangen.
  • Wenn wir Ihre personenbezogenen Daten nicht mehr benötigen, Sie sie jedoch zur Ausübung, Verteidigung oder Geltendmachung von Rechtsansprüchen benötigen, haben Sie das Recht, statt der Löschung die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.
  • Wenn Sie einen Widerspruch nach Art. 21 Abs. 1 DSGVO eingelegt haben, muss eine Abwägung zwischen Ihren und unseren Interessen vorgenommen werden. Solange noch nicht feststeht, wessen Interessen überwiegen, haben Sie das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.

Wenn Sie die Verarbeitung Ihrer personenbezogenen Daten eingeschränkt haben, dürfen diese Daten – von ihrer Speicherung abgesehen – nur mit Ihrer Einwilligung oder zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen oder zum Schutz der Rechte einer anderen natürlichen oder juristischen Person oder aus Gründen eines wichtigen öffentlichen Interesses der Europäischen Union oder eines Mitgliedstaats verarbeitet werden.

4. Datenerfassung auf dieser Website

Server-Log-Dateien

Der Provider der Seiten erhebt und speichert automatisch Informationen in so genannten Server-Log-Dateien, die Ihr Browser automatisch an uns übermittelt. Dies sind:

  • Browsertyp und Browserversion
  • verwendetes Betriebssystem
  • Referrer URL
  • Hostname des zugreifenden Rechners
  • Uhrzeit der Serveranfrage
  • IP-Adresse

Eine Zusammenführung dieser Daten mit anderen Datenquellen wird nicht vorgenommen. Die Erfassung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO. Der Websitebetreiber hat ein berechtigtes Interesse an der technisch fehlerfreien Darstellung und der Optimierung seiner Website – hierzu müssen die Server-Log-Files erfasst werden.

Kontaktformular

Wenn Sie uns per Kontaktformular Anfragen zukommen lassen, werden Ihre Angaben aus dem Anfrageformular inklusive der von Ihnen dort angegebenen Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen bei uns gespeichert. Diese Daten geben wir nicht ohne Ihre Einwilligung weiter.

Die Verarbeitung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO, sofern Ihre Anfrage mit der Erfüllung eines Vertrags zusammenhängt oder zur Durchführung vorvertraglicher Maßnahmen erforderlich ist. In allen übrigen Fällen beruht die Verarbeitung auf unserem berechtigten Interesse an der effektiven Bearbeitung der an uns gerichteten Anfragen (Art. 6 Abs. 1 lit. f DSGVO) oder auf Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), sofern diese abgefragt wurde.

Die von Ihnen im Kontaktformular eingegebenen Daten verbleiben bei uns, bis Sie uns zur Löschung auffordern, Ihre Einwilligung zur Speicherung widerrufen oder der Zweck für die Datenspeicherung entfällt (z. B. nach abgeschlossener Bearbeitung Ihrer Anfrage). Zwingende gesetzliche Bestimmungen – insbesondere Aufbewahrungsfristen – bleiben unberührt.

Anfrage per E-Mail, Telefon oder Telefax

Wenn Sie uns per E-Mail, Telefon oder Telefax kontaktieren, wird Ihre Anfrage inklusive aller daraus hervorgehenden personenbezogenen Daten (Name, Anfrage) zum Zwecke der Bearbeitung Ihres Anliegens bei uns gespeichert und verarbeitet. Diese Daten geben wir nicht ohne Ihre Einwilligung weiter.

Die Verarbeitung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO, sofern Ihre Anfrage mit der Erfüllung eines Vertrags zusammenhängt oder zur Durchführung vorvertraglicher Maßnahmen erforderlich ist. In allen übrigen Fällen beruht die Verarbeitung auf unserem berechtigten Interesse an der effektiven Bearbeitung der an uns gerichteten Anfragen (Art. 6 Abs. 1 lit. f DSGVO) oder auf Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), sofern diese abgefragt wurde.

Die von Ihnen an uns per Kontaktanfragen übersandten Daten verbleiben bei uns, bis Sie uns zur Löschung auffordern, Ihre Einwilligung zur Speicherung widerrufen oder der Zweck für die Datenspeicherung entfällt (z. B. nach abgeschlossener Bearbeitung Ihres Anliegens). Zwingende gesetzliche Bestimmungen – insbesondere gesetzliche Aufbewahrungsfristen – bleiben unberührt.

5. Plugins und Tools

Google Fonts (lokales Hosting)

Diese Seite nutzt zur einheitlichen Darstellung von Schriftarten so genannte Google Fonts, die von Google bereitgestellt werden. Die Google Fonts sind lokal auf diesem Server installiert. Eine Verbindung zu Servern von Google findet dabei nicht statt.

Weitere Informationen zu Google Fonts finden Sie unter https://developers.google.com/fonts/faq und in der Datenschutzerklärung von Google: https://policies.google.com/privacy?hl=de.

Google Maps

Diese Seite nutzt über eine API den Kartendienst Google Maps. Anbieter ist die Google Ireland Limited ("Google"), Gordon House, Barrow Street, Dublin 4, Irland.

Zur Nutzung der Funktionen von Google Maps ist es notwendig, Ihre IP-Adresse zu speichern. Diese Informationen werden in der Regel an einen Server von Google in den USA übertragen und dort gespeichert. Der Anbieter dieser Seite hat keinen Einfluss auf diese Datenübertragung.

Die Nutzung von Google Maps erfolgt im Interesse einer ansprechenden Darstellung unserer Online-Angebote und an einer leichten Auffindbarkeit der von uns auf der Website angegebenen Orte. Dies stellt ein berechtigtes Interesse im Sinne von Art. 6 Abs. 1 lit. f DSGVO dar. Sofern eine entsprechende Einwilligung abgefragt wurde, erfolgt die Verarbeitung ausschließlich auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO und § 25 Abs. 1 TTDSG, soweit die Einwilligung die Speicherung von Cookies oder den Zugriff auf Informationen im Endgerät des Nutzers (z. B. Device-Fingerprinting) im Sinne des TTDSG umfasst. Die Einwilligung ist jederzeit widerrufbar.

Mehr Informationen zum Umgang mit Nutzerdaten finden Sie in der Datenschutzerklärung von Google: https://policies.google.com/privacy?hl=de.

6. Eigene Dienste

Google Analytics

Diese Website nutzt Funktionen des Webanalysedienstes Google Analytics. Anbieter ist die Google Ireland Limited ("Google"), Gordon House, Barrow Street, Dublin 4, Irland.

Google Analytics ermöglicht es dem Websitebetreiber, das Verhalten der Websitebesucher zu analysieren. Hierbei erhält der Websitebetreiber verschiedene Nutzungsdaten, wie z. B. Seitenaufrufe, Verweildauer, verwendete Betriebssysteme und Herkunft des Nutzers. Diese Daten werden in einer User-ID zusammengefasst und dem jeweiligen Endgerät des Websitebesuchers zugeordnet.

Google Analytics verwendet Technologien, die die Wiedererkennung des Nutzers zum Zwecke der Analyse des Nutzerverhaltens ermöglichen (z. B. Cookies oder Device-Fingerprinting). Die von Google erfassten Informationen über die Nutzung dieser Website werden in der Regel an einen Server von Google in den USA übertragen und dort gespeichert.

Die Nutzung dieses Dienstes erfolgt auf Grundlage Ihrer Einwilligung nach Art. 6 Abs. 1 lit. a DSGVO und § 25 Abs. 1 TTDSG. Die Einwilligung ist jederzeit widerrufbar.

Die Datenübertragung in die USA wird auf die Standardvertragsklauseln der EU-Kommission gestützt. Details finden Sie hier: https://privacy.google.com/businesses/controllerterms/mccs/.

Mehr Informationen zum Umgang mit Nutzerdaten bei Google Analytics finden Sie in der Datenschutzerklärung von Google: https://support.google.com/analytics/answer/6004245?hl=de.

Google reCAPTCHA

Wir nutzen "Google reCAPTCHA" (im Folgenden "reCAPTCHA") auf dieser Website. Anbieter ist die Google Ireland Limited ("Google"), Gordon House, Barrow Street, Dublin 4, Irland.

Mit reCAPTCHA soll überprüft werden, ob die Dateneingabe auf dieser Website (z. B. in einem Kontaktformular) durch einen Menschen oder durch ein automatisiertes Programm erfolgt. Hierzu analysiert reCAPTCHA das Verhalten des Websitebesuchers anhand verschiedener Merkmale. Diese Analyse beginnt automatisch, sobald der Websitebesucher die Website betritt. Zur Analyse wertet reCAPTCHA verschiedene Informationen aus (z. B. IP-Adresse, Verweildauer des Websitebesuchers auf der Website oder vom Nutzer getätigte Mausbewegungen). Die bei der Analyse erfassten Daten werden an Google weitergeleitet.

Die reCAPTCHA-Analysen laufen vollständig im Hintergrund. Websitebesucher werden nicht darauf hingewiesen, dass eine Analyse stattfindet.

Die Speicherung und Analyse der Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO. Der Websitebetreiber hat ein berechtigtes Interesse daran, seine Website vor missbräuchlicher automatisierter Ausspähung und vor SPAM zu schützen. Sofern eine entsprechende Einwilligung abgefragt wurde, erfolgt die Verarbeitung ausschließlich auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO und § 25 Abs. 1 TTDSG, soweit die Einwilligung die Speicherung von Cookies oder den Zugriff auf Informationen im Endgerät des Nutzers (z. B. Device-Fingerprinting) im Sinne des TTDSG umfasst. Die Einwilligung ist jederzeit widerrufbar.

Weitere Informationen zu Google reCAPTCHA finden Sie in den Google-Datenschutzbestimmungen und den Google Nutzungsbedingungen unter folgenden Links: https://policies.google.com/privacy?hl=de und https://policies.google.com/terms?hl=de.

7. Änderungen dieser Datenschutzerklärung

Wir behalten uns vor, diese Datenschutzerklärung anzupassen, damit sie stets den aktuellen rechtlichen Anforderungen entspricht oder um Änderungen unserer Leistungen in der Datenschutzerklärung umzusetzen, z. B. bei der Einführung neuer Services. Für Ihren erneuten Besuch gilt dann die neue Datenschutzerklärung.

8. Fragen zum Datenschutz

Wenn Sie Fragen zum Datenschutz haben, schreiben Sie uns bitte eine E-Mail oder wenden Sie sich direkt an die für den Datenschutz verantwortliche Person in unserem Unternehmen:

info@pazdzewicz.de