
Self-hosting paperless-ngx mit SQLite auf einem Ubuntu Server

Möchtest Du Deine Dokumente digitalisieren, ohne ein kompliziertes Datenbank-Setup? Mit paperless-ngx und SQLite hast Du die perfekte Lösung, um Dein eigenes sicheres, selbstgehostetes Dokumentenverwaltungssystem aufzusetzen. Diese Anleitung zeigt Dir, wie Du es auf einem Ubuntu Server mit automatischer HTTPS-Verschlüsselung einrichtest – alles bequem über Docker Compose gesteuert.
In diesem Tutorial lernst Du, wie Du:
- Eine sichere Ubuntu-Serverumgebung aufsetzt
- Docker und Docker Compose installierst und konfigurierst
- paperless-ngx mit einer SQLite-Datenbank bereitstellst
- Deine Installation mit einem Caddy Reverse Proxy absicherst
- Die Kosten mit Managed-Lösungen vergleichst
Voraussetzungen
Bevor Du startest, vergewissere Dich, dass Du Folgendes hast:
- Einen Ubuntu Linux Server mit SSH-Zugang (wir empfehlen Hetzner Cloud)
- Grundlegende Kenntnisse in der Kommandozeile
- Einen Domainnamen (optional, aber für HTTPS empfohlen)
Schritt 1: Deinen Ubuntu Server aktualisieren
Zuerst sorgst Du dafür, dass Dein Ubuntu Server sicher und auf dem neuesten Stand ist:
sudo apt-get update
sudo apt-get upgrade -y
Jetzt ist Dein System up-to-date und bereit für die Einrichtung.
Schritt 2: UFW-Firewall konfigurieren und absichern
Sichern wir Deinen Server, indem wir die Ubuntu-Firewall (UFW) einrichten. Wir erlauben nur die Ports für HTTP (80), HTTPS (443) und SSH (22):
sudo apt install ufw -y
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
Überprüfe den Firewall-Status:
sudo ufw status verbose
Docker kann die UFW-Regeln umgehen – informiere Dich also über zusätzliche Schutzmaßnahmen, die in dieser StackOverflow-Antwort beschrieben werden.
Schritt 3: Docker Engine und Docker Compose installieren
Docker wird Deine Container verwalten. Um Docker und Docker Compose zu installieren, führe folgende Befehle aus:
Installiere Abhängigkeiten & das Docker GPG-Key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Füge das offizielle Docker-Repository hinzu:
echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Installiere Docker und das Docker Compose Plugin:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Teste die Docker-Installation:
sudo docker run hello-world
Wenn alles funktioniert, kannst Du mit Caddy weitermachen.
Schritt 4: Caddy Web Server mit automatischem HTTPS installieren
Caddy sorgt für die automatische Verwaltung von HTTPS-Zertifikaten und bietet einen sicheren Reverse Proxy. So wird sichergestellt, dass Deine paperless-ngx-Installation mit moderner Verschlüsselung geschützt ist.
Führe Folgendes aus, um Caddy zu installieren:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
| sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y
Konfiguriere nun den Reverse Proxy in Deiner Caddyfile:
sudo nano /etc/caddy/Caddyfile
Ersetze yourdomain.com
durch Deinen Domainnamen:
yourdomain.com {
reverse_proxy localhost:8000
}
Wenn Du noch keine Domain hast, nutze vorübergehend Port 80:
:80 {
reverse_proxy localhost:8000
}
Starte Caddy neu, damit die Änderungen geladen werden:
sudo systemctl restart caddy
Schritt 5: paperless-ngx mit SQLite und Docker Compose starten
Erstelle einen Arbeitsordner und die Docker-Compose-Konfiguration für paperless-ngx:
mkdir ~/paperless-ngx
cd ~/paperless-ngx
Erstelle eine Datei namens docker-compose.yml
mit folgendem Inhalt:
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- broker
ports:
- "8000:8000"
volumes:
- data:/usr/src/paperless/data
- media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_ADMIN_USER: admin
PAPERLESS_ADMIN_EMAIL: [email protected]
PAPERLESS_ADMIN_PASSWORD: adminpassword
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_URL: https://paperless.sliplane.io
PAPERLESS_SECRET_KEY: your-secure-random-secret
volumes:
data:
media:
redisdata:
Wähle einen sicheren Secret Key für die Umgebungsvariable PAPERLESS_SECRET_KEY
. Du kannst mit folgendem Befehl einen sicheren Key generieren:
openssl rand -base64 32
Dasselbe gilt für Deine PAPERLESS_ADMIN_PASSWORD
Umgebungsvariable!
Speichere die Datei und starte den paperless-ngx Container:
sudo docker compose up -d
paperless-ngx läuft jetzt auf Deinem Server!
Schritt 6: Zugriff auf Dein Paperless-Setup
Öffne Deinen Browser und gehe zu Deiner Webadresse, z. B. https://yourdomain.com
. Dort solltest Du die Login-Seite von paperless-ngx sehen – bereit für den Admin-User, den Du in der docker-compose.yml
definiert hast.
Nach dem Login kannst Du damit beginnen, Deine Dokumente hochzuladen und zu organisieren:
Sicherheitsempfehlungen
Damit Deine Dokumentenspeicherung und Serverintegrität sicher bleiben, empfehlen wir:
- Regelmäßige Backup-Routinen einrichten.
- SSH mit starken Passwörtern oder SSH-Keys absichern.
- Regelmäßig Client-Software aktualisieren und Sicherheits-Patches anwenden.
- Tools wie fail2ban für zusätzlichen Schutz in Betracht ziehen.
Aktualisierung Deiner paperless-ngx Installation
Du kannst Deine paperless-ngx Installation ganz einfach aktualisieren, indem Du folgende Befehle ausführst:
sudo docker compose pull
sudo docker compose up -d
Docker lädt dann die neuesten Images herunter und aktualisiert Deine Container automatisch.
Kostenvergleich (Self-Hosted vs. Managed)
Beim Self-Hosting sind die laufenden Kosten meist deutlich geringer, außerdem hast Du mehr Flexibilität im Vergleich zu Managed-Providern.
Provider | vCPUs | RAM | Disk | Kosten/Monat |
---|---|---|---|---|
Render.com | 1 | 2 GB | 40 GB | ~$25–35 |
Fly.io | 2 | 2 GB | 40 GB | ~$15–25 |
Railway | 2 | 2 GB | 40 GB | ~$15–30 |
Sliplane.io | 2 | 2 GB | 40 GB | ~€9.50 flat |
Hetzner Cloud (self-hosted) | 2 | 2 GB | 40 GB | ~€5–10/mo |
Obwohl Self-Hosting Kosten spart, erfordert es mehr technisches Know-how und kontinuierliche Wartung. Falls Du es lieber einfach und ohne Aufwand haben möchtest, schau Dir Managed-Hosting Optionen wie sliplane.io an.
Nächste Schritte
Jetzt, wo Deine paperless-ngx Instanz läuft:
- Richte automatische Backups ein
- Konfiguriere die Dokumentenscan-Automatisierung
- Erstelle eigene Tags und Dokumentenkategorien
- Installiere die mobile App für den einfachen Zugriff
Brauchst Du eine einfachere Lösung? Schau Dir unser Managed Hosting unter sliplane.io an und profitiere von einer sorgenfreien paperless-ngx Bereitstellung.
Häufig gestellte Fragen
Ist Self-Hosting von paperless-ngx für jeden die beste Option?
Self-Hosting gibt Dir zwar vollständige Kontrolle und kann kosteneffizient sein, ist aber mit technischem Know-how und fortlaufender Wartung verbunden. Falls Du eine sorgenfreie Erfahrung mit professionellem Support bevorzugst, bieten Managed-Lösungen wie Sliplane folgende Vorteile:
- Kein Wartungsaufwand
- Automatische Updates und Sicherheits-Patches
- 24/7 Monitoring und Support
- Enterprise-Backup-Systeme
Kann ich Sliplane kostenlos testen?
Ja, Du kannst Sliplane 2 Tage lang kostenlos ausprobieren. Melde Dich einfach unter sliplane.io an und starte paperless-ngx ohne jegliche Verpflichtung.
Wie starte ich mit paperless-ngx?
Du hast zwei Möglichkeiten:
- Self-hosted: Folge dieser Anleitung, um Deine eigene Instanz einzurichten (Setup-Zeit ca. 2-3 Stunden)
- Managed: Melde Dich bei Sliplane an und starte sofort (Setup-Zeit ca. 5 Minuten)
Beide Optionen bieten Dir das volle paperless-ngx Erlebnis – bei Sliplane entfallen jedoch technische Hürden, während zusätzliche Enterprise-Features und Support bereitgestellt werden.