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

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

Jonas Scholz - Co-Founder von sliplane.ioJonas Scholz
8 min

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.

paperless-ngx login

Nach dem Login kannst Du damit beginnen, Deine Dokumente hochzuladen und zu organisieren:

paperless-ngx dashboard

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.

ProvidervCPUsRAMDiskKosten/Monat
Render.com12 GB40 GB~$25–35
Fly.io22 GB40 GB~$15–25
Railway22 GB40 GB~$15–30
Sliplane.io22 GB40 GB~€9.50 flat
Hetzner Cloud (self-hosted)22 GB40 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:

  1. Richte automatische Backups ein
  2. Konfiguriere die Dokumentenscan-Automatisierung
  3. Erstelle eigene Tags und Dokumentenkategorien
  4. 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:

  1. Self-hosted: Folge dieser Anleitung, um Deine eigene Instanz einzurichten (Setup-Zeit ca. 2-3 Stunden)
  2. 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.

Willkommen in der Container-Cloud

Sliplane macht es einfach, Container in der Cloud zu deployen und bei Bedarf zu skalieren. Probier es jetzt aus!