Dateien teilen auf die smarte Art: Plik selbst hosten mit Docker
82 % der Menschen verwenden unsichere File-Sharing-Tools.
Dabei geht’s auch anders – schnell, modern, selbstbestimmt.
Wenn du Plik nutzt, behältst du die Kontrolle – ohne auf Komfort verzichten zu müssen.
Ich zeige dir heute, wie du Plik ganz einfach mit Docker selbst betreibst – inklusive Web-Upload, curl-Support und sogar Streaming ohne Zwischenspeicherung.
Ob für dich selbst, dein Team oder im Internet.
🔍 Was ist Plik – und warum solltest du es nutzen?
Plik ist ein Open-Source-Dateiübertragungsdienst, den du selbst hosten kannst.
Er bietet eine schöne Web-Oberfläche, aber auch eine einfache API und curl-Support. Perfekt also für Power-User und Endanwender zugleich.
Was Plik besonders macht:
- Keine Anmeldung nötig (optional möglich)
- Dateien laufen über deinen eigenen Server
- Lebensdauer, Passwortschutz, Streaming – alles mit an Bord
- Der Dienst kann Dateien auch direkt von A nach B streamen, ohne sie zu speichern!
Wenn du bisher auf Tools wie WeTransfer oder File.io angewiesen warst, dann ist Plik eine super Alternative.
🐳 Schritt 1: Plik via Docker bereitstellen
Du brauchst nichts weiter als eine funktionierende Docker-Umgebung.
Erstelle dir z. B. folgende docker-compose.yaml:
services:
plik:
image: rootgg/plik:latest
container_name: plik-app
hostname: plik-app
user: "1000:1000"
ports:
- "3000:3000"
volumes:
- ./data/files:/home/plik/server/files
- ./data/plikd.cfg:/home/plik/server/plikd.cfg:ro
- ./data/background1.jpg:/home/plik/webapp/dist/img/background.jpg:ro
environment:
- PLAK_DISABLE_AUTHENTICATION=false
- PLAK_DEBUG=true
- PLAK_DEFAULT_TTL=30d
restart: unless-stopped
- ./data/background1.jpg:/home/plik/webapp/dist/img/background.jpg:ro
Optional: Mit dieser Zeile bindest du ein eigenes Hintergrundbild für das Webinterface von Plik ein.
Das Bild (background1.jpg) ersetzt den Standardhintergrund und sorgt für einen individuellen Look deiner File-Sharing-Seite.
So kannst du z. B. dein Logo, CI-Farben oder ein dezentes Design hinterlegen.
🔧 Tipp: Das Bild sollte im Format JPG oder PNG vorliegen und ca. 1920×1080 px groß sein.
Wenn du das nicht brauchst, kannst du diese Zeile einfach weglassen – Plik verwendet dann den Standardhintergrund.
⚙️ Schritt 2: Konfiguration
Die Konfigurationsdatei (plikd.cfg) ist das Herzstück.
Hier legst du Dinge wie Logging, Features, Download-Domain und Limits fest.
Erstelle die Konfigurationsdatei unter ./data/plikd.cfg und bearbeite sie:
# ─── Logging ───────────────────────────────────────────
Debug = true
DebugRequests = true
LogLevel = "INFO"
# ─── Netzwerk ──────────────────────────────────────────
ListenPort = 3000
ListenAddress = "0.0.0.0"
MetricsPort = 0
MetricsAddress = "0.0.0.0"
Path = ""
# SSL im Reverse Proxy, daher hier aus
SslEnabled = false
EnhancedWebSecurity = true
TlsVersion = "tlsv12"
# ─── Web Interface ─────────────────────────────────────
NoWebInterface = false
DownloadDomain = "https://share.domain.com"
DownloadDomainAlias = ["https://share.domain.com"]
WebappDirectory = "../webapp/dist"
AbuseContact = "abuse@domain.com"
SessionTimeout = "365d"
# ─── Upload Einschränkungen ───────────────────────────
UploadWhitelist = []
MaxFileSizeStr = "10GB"
MaxUserSizeStr = "unlimited"
MaxFilePerUpload = 100
DefaultTTLStr = "30d"
MaxTTLStr = "90d"
# ─── Feature Flags ─────────────────────────────────────
FeatureAuthentication = "disabled"
FeatureOneShot = "enabled"
FeatureRemovable = "enabled"
FeatureStream = "enabled"
FeaturePassword = "enabled"
FeatureComments = "enabled"
FeatureSetTTL = "enabled"
FeatureExtendTTL = "disabled"
FeatureClients = "enabled"
FeatureGithub = "enabled"
FeatureText = "enabled"
# ─── Daten-Backend ─────────────────────────────────────
DataBackend = "file"
[DataBackendConfig]
Directory = "files"
# ─── Metadaten-Backend (lokal, ohne Server-DB) ────────
[MetadataBackendConfig]
Driver = "sqlite3"
ConnectionString = "plik.db"
Debug = false
Die Datei landet im Container unter /home/plik/server/plikd.cfg.
Du kannst sie einfach im Volume mounten.
🌐 Schritt 3: Reverse Proxy mit NGINX – auch für Streaming
Damit alles sauber über https://share.domain.com läuft, brauchst du einen NGINX als Reverse Proxy.
Wichtig ist hier: Der Streaming-Endpunkt muss eigene Parameter bekommen!
location / {
proxy_pass http://plik-app:3000;
proxy_http_version 1.1;
proxy_request_buffering on;
client_max_body_size 10G;
proxy_read_timeout 300s;
send_timeout 300s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /stream/ {
proxy_pass http://plik-app:3000;
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 600s;
send_timeout 600s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Mit dieser Konfiguration funktioniert das Webinterface perfekt, und Streaming-Downloads laufen reibungslos – selbst bei schwankender Verbindung.
🟢 Plik starten und loslegen
Wenn deine Konfiguration steht, startest du deinen Container ganz einfach mit:
docker-compose up -d
Der Parameter -d sorgt dafür, dass der Container im Hintergrund läuft.
Falls du Änderungen an deiner docker-compose.yaml oder an plikd.cfg vorgenommen hast, kannst du den Container auch wie folgt neu starten:
docker-compose down && docker-compose up -d
Nach dem Start erreichst du dein Webinterface unter der von dir konfigurierten Adresse – z. B.:

💻 Das Webinterface im Überblick
Das Webinterface von Plik ist bewusst einfach und übersichtlich gehalten. Du kannst direkt loslegen, ohne dich anmelden zu müssen.
Das kannst du tun:
- ✅ Dateien hochladen – per Drag & Drop oder Dateiauswahl
- ⚙️ Optionen pro Upload setzen, z. B.:
- Einmal-Download („Destruct after first download“)
- Streaming-Modus
- Passwortschutz
- Löschrechte („Removable“)
- Kommentar (Markdown-fähig)
- Ablaufdatum ändern
- 🔗 Freigabelinks generieren
- 📱 QR-Code für schnellen Zugriff von mobilen Geräten
- 📦 Nach dem Upload:
- Direkt einzelne Dateien herunterladen
- ZIP-Download für alles
- Admin-Link für die nachträgliche Administration
Optional kannst du auch leere Uploads erstellen, um anderen Personen zu erlauben, selbst Dateien hochzuladen.

🚀 Bonus: Datei-Upload per Curl
Wer keine Lust aufs Webinterface hat, kann einfach curl nutzen:
curl --form 'file=@/pfad/zur/deiner_datei.txt' https://share.domain.com
Plik gibt dir sofort den Download-Link zurück – ganz ohne Login oder Passwort.
Einfacher geht’s nicht!
📡 Streaming
Der Streaming-Modus ist ein echtes Highlight.
Du bereitest den Upload vor, bekommst deinen Freigabe-Link, und erst wenn der Empfänger ihn aufruft, startet der Upload automatisch.
Das heißt:
- Der Sender hält die Datei bereit
- Der Empfänger klickt → Upload und Download beginnen gleichzeitig
- Kein Speicherplatzverbrauch
Ideal für einmalige Übertragungen – z. B. große ISO-Dateien oder sensible Inhalte.
✅ Fazit: Plik macht’s einfach
Plik ist schnell, elegant und verdammt effizient.
Mit ein paar Zeilen YAML und einer durchdachten Konfiguration hast du in kürzester Zeit einen eigenen File-Sharing-Dienst, der sich nicht hinter kommerziellen Plattformen verstecken muss.
Ob für dich selbst, dein Team oder dein gesamtes Netzwerk – Plik ist die unkomplizierte Lösung, wenn du die Kontrolle behalten möchtest.
Plik wird auf GitHub zu Verfügung gestellt – ein Open-Source-Projekt von root-gg, das mit durchdachten Features und klarer Ausrichtung auf Selbsthosting überzeugt. Ein echtes Tool von Admins – für Admins.
👥 Techniverse Community
Matrix, Selfhosting, smarte IT-Lösungen und jede Menge Nerd-Talk – das findest du in der Techniverse Community.
Komm vorbei, tausch dich aus und werde ein Teil von uns.
👉 Unsere Gruppe auf Matrix: #community:techniverse.net
Wir freuen uns auf dich!


