2tap2b

WeTransfer alternativen selber hosten

Inhaltsverzeichnis

Passend zum kommenden Digital Independence Day (di.day) habe ich mich mal auf die Suche nach gescheiten Alternativen zu WeTransfer gemacht.

Wieso das Ganze?

Das Motto vom di.day ist ganz klar:

Digitale Unabhängigkeit und die volle Kontrolle über die eigenen Daten zurückerobern. WeTransfer fällt da leider komplett durchs Raster, da sie sich mittlerweile vorbehalten, Nutzerdaten für KI-Training zu scrapen. Ein absolutes No-Go, wenn man sensible oder geschäftliche Files durch den Äther jagt.

Wer Daten teilt, sollte zu 100 % die Oberhand darüber behalten. Deshalb habe ich mir drei Open Source File-Sharing-Alternativen geschnappt, im Homelab installiert und ausführlich getestet.

Voraussetzungen

Bevor wir starten, stellt sicher, dass folgende Voraussetzungen erfüllt sind:


1. Plik

Plik auf GitHub

Plik ist eine sehr aufgeräumte und funktionale Lösung. Was mir als besonders gefällt, ist das mitgelieferte CLI-Tool – damit lassen sich Dateien direkt aus dem Terminal hochladen, ohne extra den Browser öffnen zu müssen. Zusammen mit dem nativen OIDC-Support und ein paar Themes ist Plik eine sehr starke Alternative.

Kern-Features:

  • Modernes Interface: Vue 3 basiert, inklusive Light, Dark und Custom Themes.
  • Flexible Storage-Backends: Die Daten können lokal auf der Platte liegen, oder direkt in S3, Google Cloud Storage oder OpenStack Swift gespeichert werden.
  • Sicherheit: End-to-End-Verschlüsselung mit Age ist nativ integriert (kompatibel zwischen Web und CLI). Optional lassen sich Uploads über BasicAuth per Passwort sichern.
  • OneShot & Streaming: Sehr praktisch ist der OneShot-Modus (die Datei wird nach dem ersten Download serverseitig gelöscht) oder der Stream-Mode, bei dem die Daten gar nicht erst auf die Festplatte geschrieben, sondern direkt durchgereicht werden.
  • File Previews: Syntax-Highlighting für Code, Markdown-Rendering und ein integrierter Media-Player im Browser.

Ein kleiner Kritikpunkt ist die Reverse-Share-Funktion (also das Erlauben von Gast-Uploads). Das ist aktuell noch etwas umständlich gelöst. Hier würde ich mir wünschen, spontan Custom-URLs für temporäre Uploads generieren zu können. Dennoch ist Plik ein sehr solides Projekt und absolut zu empfehlen.

Installation

Wirf das hier direkt in deine docker-compose.yaml:

services:
  plik:
    image: rootgg/plik:latest
    container_name: plik
    networks:
      - frontend
    volumes:
      - ./plikd.cfg:/home/plik/server/plikd.cfg
      - ./plik-data:/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.plik.entrypoints=websecure"
      - "traefik.http.routers.plik.rule=(Host(`plik.deine.cloud`))"
      - "traefik.http.routers.plik.tls=true"
      - "traefik.http.routers.plik.tls.certresolver=cloudflare"
      - "traefik.http.routers.plik.service=plik"
      - "traefik.http.services.plik.loadbalancer.server.port=8080"
      - "traefik.http.routers.plik.middlewares=geoblock-de@file,crowdsec-bouncer@file"
      - "traefik.docker.network=frontend"
    restart: "unless-stopped"

networks:
  frontend:
    external: true

2. Erugo

Erugo auf GitHub

Erugo bringt im Grunde alles mit, was man für den Alltag braucht. Es bietet nativen OIDC-Support, ansprechende Themes und ein sehr aufgeräumtes Admin-Backend, das sich gut bedienen lässt.

Kern-Features:

  • Lesbare Links: Statt kryptischer Hashes generiert Erugo lesbare URLs für die Shares (z. B. you.com/shares/quiet-cloud-shrill-thunder).
  • Ordner-Uploads & Resume: Man kann komplette Ordnerstrukturen hochladen. Auch große Dateien werden gut bewältigt und abgebrochene Uploads lassen sich problemlos fortsetzen.
  • Custom Branding: Wer die Plattform im Firmenumfeld nutzen möchte, kann sie dank White-Labeling sehr einfach anpassen (Farben, Logos etc.).

Auch hier gibt es einen kleinen Haken bei den Reverse Shares: Aktuell funktioniert das nur über E-Mail-Einladungen. Man kann leider nicht einfach eine URL generieren und per Messenger teilen. Davon abgesehen handelt es sich aber um ein sehr nützliches Tool.

Installation

services:
  app:
    image: wardy784/erugo:latest
    restart: unless-stopped
    volumes:
      - ./share/erugo:/var/www/html/storage
    networks:
      - frontend
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.erugo.entrypoints=websecure"
      - "traefik.http.routers.erugo.rule=(Host(`upload.deine.cloud`))"
      - "traefik.http.routers.erugo.tls=true"
      - "traefik.http.routers.erugo.tls.certresolver=cloudflare"
      - "traefik.http.routers.erugo.service=erugo"
      - "traefik.http.services.erugo.loadbalancer.server.port=80"
      - "traefik.http.routers.erugo.middlewares=geoblock-de@file,crowdsec-bouncer@file"
      - "traefik.docker.network=frontend"

networks:
  frontend:
    external: true

3. Pingvin Share X

Pingvin Share X auf GitHub

Pingvin Share X ist ein Fork des nicht mehr gepflegten Pingvin Share Projekts und aktuell meine bevorzugte Lösung. Die Architektur ist gut durchdacht, das Backend läuft absolut stabil, und es werden S3-Buckets als Storage sowie OIDC für die Authentifizierung unterstützt.

Kern-Features:

  • Keine Limits: Es gibt standardmäßig keine Dateigrößenbeschränkung. Das Limit wird nur durch den Speicherplatz der eigenen Festplatte oder des S3-Buckets bestimmt.
  • ClamAV-Integration: Sehr praktisch für die Sicherheit: Jeder Upload lässt sich direkt an ClamAV weiterreichen und auf Schadsoftware prüfen.
  • Reverse Shares: Hier funktioniert das Feature, das mir bei den anderen Tools gefehlt hat, reibungslos. Man generiert einen einfachen Link, schickt ihn dem Gast-Nutzer, und dieser kann temporär Dateien hochladen.
  • Benachrichtigungen: Ein integriertes Mailsystem informiert Absender und Empfänger über Dateiaktivitäten.
  • Flexible Authentifizierung: Egal ob OIDC, LDAP oder Passkeys (z. B. zusammen mit Pocket ID) – das System ist in puncto Login sehr modern aufgestellt.

Die gute Umsetzung der Reverse Shares macht Pingvin Share X für mich aktuell zur besten Wahl. Außerdem ist der neue Maintainer des Forks sehr aktiv, fixt Bugs zeitnah und liefert regelmäßig neue Features.

Installation

Hier ist die fertige docker-compose.yaml. Ich habe direkt das passende Traefik-Routing und die verwendeten Middlewares eingebaut:

services:
  pingvin-share-x:
    container_name: pingvin-share-x
    image: smp46/pingvin-share-x
    restart: unless-stopped
    networks:
      - frontend
    environment:
      - TRUST_PROXY=true
    volumes:
      - "./data:/opt/app/backend/data:rw,z"
      - "./data/images:/opt/app/frontend/public/img:rw,z"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.pingvinshare.entrypoints=websecure"
      - "traefik.http.routers.pingvinshare.rule=(Host(`pingvin.deine.cloud`))"
      - "traefik.http.routers.pingvinshare.tls=true"
      - "traefik.http.routers.pingvinshare.tls.certresolver=cloudflare"
      - "traefik.http.routers.pingvinshare.service=pingvinshare"
      - "traefik.http.services.pingvinshare.loadbalancer.server.port=3000"
      - "traefik.http.routers.pingvinshare.middlewares=geoblock-de@file,crowdsec-bouncer@file"
      - "traefik.docker.network=frontend"

networks:
  frontend:
    external: true