📂 Paperless NGX: Dokumente synchronisieren mit OneDrive, Nextcloud, WebDAV & mehr! 🔄☁️

In diesem Video zeige ich dir, wie du gescannte Dokumente direkt in die Cloud schicken und mit Paperless NGX automatisch verarbeiten lassen kannst. Dafür stelle ich ein Tool für Linux vor, mit dem du die Synchronisation mit OneDrive, Nextcloud, WebDAV & viele andere Dienste einrichtest. 🖨️➡️📂 🔹 Themen im Video:

✔️ Installation und Einrichtung des Synchronisationstools unter Linux 🐧

✔️ Automatisches „Herunterladen“ gescannter Dokumente 📤

✔️ Effiziente Dokumentenverwaltung mit Paperless NGX 📑

Das Video zur Installation von paperless ngx: https://youtu.be/WRyBPMH9zf0

Blogbeitrag zum Video: https://blog.smarthomeundmore.de/paperless-ngx-komplett-einrichten-mit-rest-api-home-assistant-sensor/

Das Tool kannst du aber auch unter Linux für viele weitere Aufgaben verwenden.

Im Video habe ich ein paar Befehle verwendet. Damit ihr die Syntax nicht „kompliziert“ aus dem Video ablesen müsst, habe ich euch die wichtigsten Kommandos in diesem Blog Beitrag zusammengefasst.

Installation von rclone unter Linux ( getestet mit Ubuntu 24.10)

sudo apt-get install rclone

Die wichtigsten rclone Befehle kurz zusammengefasst. Im Video habe ich für „remote:“ den Namen onedrive verwendet.

Grundlegende Befehle

  • rclone config – Konfiguration von Remotes (z. B. OneDrive,Google Drive, Dropbox).
  • rclone listremotes – Zeigt alle konfigurierten Remotes.
  • rclone lsd remote: – Listet die Verzeichnisse im Root des Remotes auf.
  • rclone ls remote: – Zeigt alle Dateien und Verzeichnisse im Remote an.
  • rclone copy Quelle Ziel – Kopiert Dateien/Ordner von einer Quelle zu einem Ziel.
  • rclone sync Quelle Ziel – Synchronisiert Quelle mit Ziel (Achtung: Ziel wird überschrieben!).
  • rclone move Quelle Ziel – Verschiebt Dateien von Quelle nach Ziel.
  • rclone delete remote:Ordner – Löscht alle Dateien in einem Remote-Ordner.
  • rclone rmdir remote:Ordner – Löscht einen leeren Remote-Ordner.

Erweiterte Befehle

  • rclone check Quelle Ziel – Vergleicht Dateien zwischen Quelle und Ziel.
  • rclone mount remote: /lokaler/pfad – Mountet ein Remote-Laufwerk als lokales Verzeichnis.
  • rclone dedupe remote: – Findet und entfernt doppelte Dateien.
  • rclone about remote: – Zeigt Speicherinformationen des Remotes an.
  • rclone size remote: – Zeigt die Größe aller Dateien im Remote an.

Hinweis: rclone mount wird in einem unpriviligierten Container nicht funktionieren. Wenn ihr ein smb/cifs Laufwerk mounten möchtet, so empfehle ich euch eine „echte“ virtuelle Maschine zu verwenden. Alle „grundlegenden Befehle“ können hingegen ohne Einschränkungen verwendet werden.

Um einen Scheduler ( Zeitplan ) für einen „Kopiervorgang“ zu definieren müsst ihr zunächst einen „crontab“ Eintrag erstellen.

Ein Crontab (kurz für Cron Table) ist eine Datei, die geplante Aufgaben (Cron-Jobs) für das cron-Daemon unter Linux und Unix-basierten Systemen speichert. Diese Jobs werden zu festgelegten Zeiten oder in bestimmten Intervallen automatisch ausgeführt.

Wichtige Befehle für Crontab

  • crontab -e – Bearbeitet die Crontab-Datei des aktuellen Benutzers.
  • crontab -l – Listet alle aktuell gesetzten Cron-Jobs auf.
  • crontab -r – Löscht alle Cron-Jobs des aktuellen Benutzers.

Crontab-Syntax

Eine Crontab-Zeile besteht aus fünf Zeitfeldern und dem auszuführenden Befehl:

* * * * * /pfad/zum/befehl.sh
- - - - -
| | | | |
| | | | +---- Wochentag (0 - Sonntag, 6 - Samstag)
| | | +------ Monat (1-12)
| | +-------- Tag des Monats (1-31)
| +---------- Stunde (0-23)
+------------ Minute (0-59)

Wir öffnen also den „Crontab Editor“ mit

crontab -e

und wählen „nano“ als Editor aus.

Dann fügen wir folgende Zeile im Crontab Editor ein.

*/5 * * * * /usr/bin/rclone move onedrive:scans /data/paperless/consume --progress

Mit Strg++X speichern wir diesen Vorgang. Denkt daran den Namen eures Remote Laufwerks anzupassen.

Jetzt wird alle 5 Minuten auf dem Cloud Laufwerk geschaut, ob sich Daten im Verzeichnis „scans“ befinden. Ist das der Fall, werden diese Daten in den „consume“ Ordner von paperless verschoben.

🔧🚀 Immich – Komplette Installationsanleitung! So richtest du deine eigene Foto-Cloud ein 📸💾

YouTube player

Heute möchte ich euch eine Software vorstellen, dir mir im Alltag viel Zeit einspart. Heutzutage haben wir tausende Bilder und Videos zu verwalten. Man dokumentiert den Wachstum der Kinder , will besondere Momente festhalten, oder nimmt einfach nur gerne Fotos von der Natur auf. Fotos und Videos gehören einfach zum heutigen Alltag. Lange Zeit habe ich mit Cloud Diensten gearbeitet. Ich will hier gar keine Namen nennen, aber die machen alle, mehr oder weniger gut, was ihre Aufgabe ist, nämlich Bilder verwalten. Irgendwie hat es mir nur nie gefallen, meine Bilder in die Cloud zu stellen. Deshalb möchte ich heute eine Software vorstellen, die mir aus meiner Sicht mindestens den gleichen Komfort bietet, aber lokal betrieben werden kann.

Um euch die Arbeit zu erleichtern, habe ich ein Installationsskript erstellt, welches euch den Einstieg in diese Software hoffentlich vereinfacht. Es kann als LXC Container unter Proxmox, VM oder direkt auf einer Hardware installiert werden.

Seht es mir nach, dass ich nicht alle Varianten durchtesten konnte. Voraussetzung ist ein 64 Bit basiertes Linux Betriebssystem ( mit Ubuntu getestet) . Auch solltet ihr ein wenig RAM mitbringen, da auch KI basierte Verfahren zum Einsatz kommen. Mehr dazu findet ihr im Video.

Immich ist kostenlos, bietet aber in der Software die Möglichkeit eine Lizenz zu erwerben. Damit erweitert ihr nicht den Funktionsumfang, aber ihr unterstützt damit die Entwickler. Die Pflege und Entwicklung einer Software ist immer mit sehr viel Aufwand verbunden. Wenn euch die Software also gefällt, lege ich es jeden ans Herz , hier ggf. auch tätig zu werden 🙂

Home | Immich

Um das Skript zu installieren, führt folgenden Befehl aus:

wget https://blog.smarthomeundmore.de/wp-content/uploads/install_immich.sh

danach muss das Skript noch ausführbar gemacht werden.

chmod +x install_immich.sh

Um jetzt die Installation auszuführen, müsst ihr nur noch das Skript aufrufen.

./install_immich.sh

Jetzt könnt ihr die bei der Installation angezeigte Adresse im Browser eingeben und loslegen.

Falls ihr euch das Skript manuell anlegen wollt, hier noch die Inhalte des Skriptes

#!/bin/bash

set -e  # Beende das Skript bei Fehlern

# Variablen definieren
INSTALL_DIR="/opt/immich-app"
IMMICH_USER="immich"
DOCKER_COMPOSE_YML_URL="https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml"
ENV_FILE_URL="https://github.com/immich-app/immich/releases/latest/download/example.env"

# Passwort f  r den Immich-Benutzer abfragen
echo "Bitte ein Passwort f  r den Benutzer '$IMMICH_USER' eingeben:"
read -s IMMICH_PASSWORD
echo "Bitte das Passwort erneut eingeben:"
read -s IMMICH_PASSWORD_CONFIRM

if [ "$IMMICH_PASSWORD" != "$IMMICH_PASSWORD_CONFIRM" ]; then
    echo "Passw  rter stimmen nicht   berein. Abbruch."
    exit 1
fi

# System aktualisieren
sudo apt update && sudo apt upgrade -y

# Notwendige Pakete installieren
sudo apt install -y curl wget apt-transport-https ca-certificates gnupg lsb-release pwgen

# Docker-Repository hinzuf  gen und Docker installieren
if ! command -v docker &> /dev/null; then
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io
    sudo usermod -aG docker $USER
    newgrp docker << END
    echo "Docker wurde installiert und ist sofort ohne Abmeldung nutzbar."
END
fi

# Docker Compose installieren
if ! command -v docker compose &> /dev/null; then
    sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
fi

# Benutzer f  r Immich erstellen
if ! id "$IMMICH_USER" &>/dev/null; then
    sudo useradd -m -s /bin/bash "$IMMICH_USER"
    echo "$IMMICH_USER:$IMMICH_PASSWORD" | sudo chpasswd
    echo "Benutzer $IMMICH_USER wurde erstellt."
fi

# Benutzer zur Docker-Gruppe hinzuf  gen
sudo usermod -aG docker "$IMMICH_USER"

# Docker-Socket-Berechtigungen setzen
sudo chmod 666 /var/run/docker.sock

# Installationsverzeichnis erstellen und Berechtigungen setzen
sudo mkdir -p "$INSTALL_DIR"
sudo chown -R "$IMMICH_USER:$IMMICH_USER" "$INSTALL_DIR"
cd "$INSTALL_DIR"

# docker-compose.yml und .env herunterladen
sudo -u "$IMMICH_USER" wget -O docker-compose.yml "$DOCKER_COMPOSE_YML_URL"
sudo -u "$IMMICH_USER" wget -O .env "$ENV_FILE_URL"

# Standardwerte in der .env Datei setzen
sudo -u "$IMMICH_USER" sed -i "s|UPLOAD_LOCATION=./library|UPLOAD_LOCATION=$INSTALL_DIR/library|g" .env
sudo -u "$IMMICH_USER" sed -i "s|DB_DATA_LOCATION=./postgres|DB_DATA_LOCATION=$INSTALL_DIR/postgres|g" .env
sudo -u "$IMMICH_USER" sed -i "s|DB_PASSWORD=postgres|DB_PASSWORD=$IMMICH_PASSWORD|g" .env

# Container starten mit neuem Benutzer
sudo su - "$IMMICH_USER" -c "cd $INSTALL_DIR && docker compose up -d"

# IP-Adresse und Port ausgeben
IP_ADDRESS=$(hostname -I | awk '{print $1}')
PORT=$(sudo grep -oP 'IMMICH_SERVER_PORT=\K\d+' .env || echo "2283")

# Abschlussmeldung
echo "Installation abgeschlossen! Immich l  uft nun im Hintergrund unter dem Benutzer $IMMICH_USER."
echo "Installationsverzeichnis: $INSTALL_DIR"
echo "Datenbank-Passwort: $IMMICH_PASSWORD"
echo "Immich kann unter folgender Adresse erreicht werden: http://$IP_ADDRESS:$PORT"