Paperclip auf einem VPS selbst hosten (Schritt-für-Schritt 2026)
Paperclip ist eines der übersichtlichsten selbst gehosteten Dokumentenverwaltungssysteme. Es läuft als einzelner Docker-Container, speichert Dateien auf einem lokalen Volume und stellt eine Web-Oberfläche auf Port 8080 bereit. Diese Anleitung führt durch eine vollständige, produktionsreife Installation auf einem Linux-VPS — von der Serverbereitstellung bis zum ersten Dokument-Upload.
Voraussetzungen
- Ein VPS mit Ubuntu 22.04 LTS oder Debian 12 (empfohlen)
- Mindestens 1 vCPU, 1 GB RAM, 20 GB Speicher (2 GB RAM für OCR empfohlen)
- Root- oder Sudo-Zugriff per SSH
- Eine Domain oder Subdomain, die auf die VPS-IP zeigt (optional, aber für HTTPS empfohlen)
Empfohlene VPS-Optionen:
- Hetzner Cloud CX22 — 4,15 €/Monat, 2 vCPU, 4 GB RAM, 40 GB NVMe
- Contabo VPS S — 5,99 €/Monat, 4 vCPU, 8 GB RAM, 200 GB NVMe
Schritt 1: Server aktualisieren
apt update && apt upgrade -y
Schritt 2: Docker installieren
curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker
Docker-Installation prüfen:
docker --version
Schritt 3: Docker Compose installieren
apt install docker-compose-plugin -y
docker compose version
Schritt 4: Arbeitsverzeichnis erstellen
mkdir -p /opt/paperclip && cd /opt/paperclip
Schritt 5: docker-compose.yml erstellen
nano /opt/paperclip/docker-compose.yml
Folgende Konfiguration einfügen:
version: "3.8"
services:
paperclip:
image: paperclip/paperclip:latest
container_name: paperclip
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- paperclip_data:/data
environment:
- PAPERCLIP_SECRET_KEY=hier_einen_zufaelligen_schluessel_eintragen
- PAPERCLIP_OCR_ENABLED=true
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
paperclip_data:
Wichtig: hier_einen_zufaelligen_schluessel_eintragen durch einen zufälligen String ersetzen:
openssl rand -hex 32
Schritt 6: (Optional) PostgreSQL statt SQLite verwenden
Für Mehrbenutzer- oder Produktionsbetrieb die Compose-Datei erweitern:
version: "3.8"
services:
db:
image: postgres:16-alpine
container_name: paperclip_db
restart: unless-stopped
environment:
POSTGRES_DB: paperclip
POSTGRES_USER: paperclip
POSTGRES_PASSWORD: starkes_passwort
volumes:
- pg_data:/var/lib/postgresql/data
paperclip:
image: paperclip/paperclip:latest
container_name: paperclip
restart: unless-stopped
depends_on:
- db
ports:
- "8080:8080"
volumes:
- paperclip_data:/data
environment:
- PAPERCLIP_SECRET_KEY=zufaelliger_schluessel
- PAPERCLIP_DB_HOST=db
- PAPERCLIP_DB_NAME=paperclip
- PAPERCLIP_DB_USER=paperclip
- PAPERCLIP_DB_PASSWORD=starkes_passwort
- PAPERCLIP_OCR_ENABLED=true
volumes:
paperclip_data:
pg_data:
Schritt 7: Paperclip starten
cd /opt/paperclip
docker compose up -d
Container-Status prüfen:
docker compose ps
docker compose logs -f paperclip
Schritt 8: Firewall konfigurieren
ufw allow OpenSSH
ufw allow 80
ufw allow 443
ufw enable
Hinweis: Port 8080 wird bewusst nicht direkt freigegeben — der Zugriff erfolgt über Caddy/Nginx mit HTTPS.
Schritt 9: HTTPS mit Caddy einrichten
apt install caddy -y
Caddyfile bearbeiten:
nano /etc/caddy/Caddyfile
docs.ihredomain.de {
reverse_proxy localhost:8080
}
Caddy neu laden:
systemctl reload caddy
Caddy stellt automatisch ein Let’s-Encrypt-Zertifikat bereit.
Schritt 10: Erste Anmeldung
https://docs.ihredomain.deim Browser öffnen (oderhttp://IHRE_VPS_IP:8080ohne Domain)- Einrichtungsassistenten abschließen — Admin-E-Mail und Passwort festlegen
- Erstes Dokument hochladen
- OCR aktivieren, falls Volltextsuche für gescannte Dokumente gewünscht ist
Schritt 11: Backups einrichten
Das Docker-Volume lokal oder in einem S3-kompatiblen Bucket sichern:
# Backup in lokale Datei
docker run --rm \
-v paperclip_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/paperclip-backup-$(date +%Y%m%d).tar.gz /data
Per Cronjob automatisieren:
crontab -e
# Hinzufügen:
0 3 * * * /opt/paperclip/backup.sh
Fehlerbehebung
| Problem | Lösung |
|---|---|
| Container beendet sich sofort | Logs prüfen: docker compose logs paperclip |
| OCR funktioniert nicht | PAPERCLIP_OCR_ENABLED=true prüfen; ausreichend RAM vorhanden? |
| Web-Oberfläche nicht erreichbar | Port 8080 prüfen; docker compose ps ausführen |
| Langsame Dokumentverarbeitung | OCR ist CPU-intensiv — bei Bedarf auf 2+ vCPU upgraden |
VPS-Empfehlungen: Bester VPS für Paperclip oder vollständiger VPS-Vergleich.