[[Uebersicht|← Zurück zur Homepage]] # PaperSafe – Installation > **Ist-Stand nach abgeschlossener Umsetzung (18.07.2026).** Diese Notiz beschreibt, was tatsächlich installiert wurde – nicht mehr die Planung. Der chronologische Verlauf inklusive Fehlversuchen steht in [[06-Umsetzungsprotokoll]]. ## Überblick | Wert | Ergebnis | |---|---| | Host | Proxmox VE 9.2.0, 192.168.2.146 | | CTID / Hostname | **110** / `papersafe` | | IP | **192.168.2.35** (DHCP-Reservierung im Router, MAC `BC:24:11:E0:81:A8`) | | Weboberfläche | `http://192.168.2.35:8000` | | Betriebssystem | Debian 12 (`debian-12-standard_12.12-1_amd64`), unprivilegierter LXC | | Ressourcen | 2 Kerne (`cpuunits 50`), 4096 MB RAM, 512 MB Swap | | Root-Disk | 20 GB auf `local-lvm` | | Daten-Volume | `mp0`, 200 GB auf `local-lvm`, gemountet auf `/opt/paperless/data`, `backup=1` | | IPv6 | deaktiviert | ## 1. Container Angelegt mit: ``` pct create 110 local:vztmpl/debian-12-standard_12.12-1_amd64.tar.zst \ --hostname papersafe --unprivileged 1 --ostype debian \ --cores 2 --cpuunits 50 --memory 4096 --swap 512 \ --rootfs local-lvm:20 \ --net0 name=eth0,bridge=vmbr0,ip=dhcp,type=veth \ --features nesting=1,keyctl=1 --onboot 1 ``` Daten-Volume nachträglich ergänzt: ``` pct set 110 --mp0 local-lvm:200,mp=/opt/paperless/data,backup=1 ``` **Wichtige Punkte:** - **`nesting=1,keyctl=1` sind zwingend** – ohne sie startet der Docker-Daemon im unprivilegierten Container nicht - **`cpuunits 50`** (Standard 100) gibt Home Assistant (VM 109) bei CPU-Konflikten Vorrang, damit OCR-Lastspitzen das Smart Home nicht ausbremsen - **`local-lvm` statt `nvme-thin`** – bewusst gewählt, um die I/O von Home Assistant zu entkoppeln, das auf `nvme-thin` liegt - **`ip=dhcp`** statt fester Container-IP – konsistent mit allen anderen Gästen, die feste Adresse kommt aus der Router-Reservierung ## 2. IPv6 deaktiviert `ip6=none` existiert in Proxmox 9 **nicht** (gültig: `IPv6/CIDR|auto|dhcp|manual`). Gesetzt wurde `ip6=manual`. Das allein verhindert allerdings kein SLAAC im Gast – der Container zog sich trotzdem eine öffentliche IPv6-Adresse. Zusätzlich im Container: ``` /etc/sysctl.d/99-disable-ipv6.conf net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 ``` ## 3. Grundsystem - `apt update && apt full-upgrade` - Locale `de_DE.UTF-8`, Zeitzone `Europe/Berlin` - `unattended-upgrades` installiert und aktiv (Debian-Security-Origins standardmäßig aktiviert) - Basiswerkzeuge: `curl`, `ca-certificates`, `gnupg` **Beobachtung, kein Fehler:** Über `pct exec` aufgerufene Befehle zeigen weiterhin `en_US.UTF-8`, weil `lxc-attach` kein PAM durchläuft. Bei einem echten Login (SSH/Konsole) greift die gesetzte Locale korrekt. ## 4. Docker Aus dem **offiziellen Docker-APT-Repository** (kein `get.docker.com`-Skript). Die aktuelle Doku nutzt das Deb822-Format: ``` install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc /etc/apt/sources.list.d/docker.sources: Types: deb URIs: https://download.docker.com/linux/debian Suites: bookworm Components: stable Architectures: amd64 Signed-By: /etc/apt/keyrings/docker.asc ``` Installierte Versionen (Stand 18.07.2026): | Komponente | Version | |---|---| | Docker Engine / CLI | 29.6.2 | | containerd | v2.2.6 | | runc | 1.3.6 | | Compose-Plugin | v5.3.1 | | Buildx-Plugin | 0.35.0 | `docker run --rm hello-world` lief auf Anhieb durch – keine Probleme mit `nesting`/`keyctl`. ## 5. Paperless-ngx Compose-Stack unter `/opt/paperless/`, fünf Dienste, **alle Images auf feste Versionen gepinnt**: | Dienst | Image | |---|---| | webserver | `ghcr.io/paperless-ngx/paperless-ngx:2.20.15` | | db | `postgres:18.4-bookworm` | | broker | `redis:8.8.0` | | gotenberg | `gotenberg/gotenberg:8.25` | | tika | `apache/tika:3.3.1.0` | Die offizielle Vorlage verwendet für Paperless und Tika `latest` – das wurde bewusst durch feste Versionen ersetzt, damit Rollback und Nachvollziehbarkeit möglich sind. `postgres:18` und `redis:8` sind Major-Tags und wurden aus demselben Grund auf Patch-Versionen festgelegt. **Datenverzeichnisse als Bind-Mounts** (keine benannten Docker-Volumes), alle unterhalb des 200-GB-Volumes: ``` ./data/data -> /usr/src/paperless/data ./data/media -> /usr/src/paperless/media ./data/export -> /usr/src/paperless/export ./data/consume -> /usr/src/paperless/consume ``` Zusätzlich `./data/pgdata` und `./data/redisdata` für Datenbank und Broker. **Hinweis zur Doku-Quelle:** `docs.paperless-ngx.com` lieferte durchgehend HTTP 403 (vermutlich Bot-Schutz). Als Quelle diente stattdessen das GitHub-Release zum Tag `v2.20.15`. ## 6. Dateien und Rechte | Datei | Inhalt | Rechte | |---|---|---| | `/opt/paperless/docker-compose.yml` | Stack-Definition | 644 | | `/opt/paperless/docker-compose.env` | Paperless-Variablen | 600 | | `/opt/paperless/.env` | `POSTGRES_PASSWORD`, Projektname | 600 | Passwörter und `PAPERLESS_SECRET_KEY` liegen **nicht im Vault**, sondern im Passwortmanager. `PAPERLESS_ADMIN_USER`/`_PASSWORD`/`_MAIL` wurden nach der Inbetriebnahme aus `docker-compose.env` entfernt – sie werden nur beim ersten Start gebraucht, und das Passwort soll nicht dauerhaft im Klartext liegen und in jedes Backup wandern. ## Nacharbeiten / offen - [ ] Scanner-Anbindung (Gerät noch nicht festgelegt) – siehe [[03-Konfiguration]] - [ ] Tag-Schema festlegen, bevor größere Mengen eingespielt werden - [ ] Snapshot `snap_vm-110-disk-1_Basis20260718` aufräumen, falls nicht mehr benötigt ## Quellen - Paperless-ngx – GitHub-Release v2.20.15, `docker/compose/docker-compose.postgres-tika.yml` und `docs/advanced_usage.md` – Zugriff 18.07.2026 - Docker – Install Docker Engine on Debian, docs.docker.com – Zugriff 18.07.2026 - Proxmox VE – `man pct.conf` auf dem Host (Version 9.2.0) – Zugriff 18.07.2026 --- **Status:** Abgeschlossen – installiert und in Betrieb **Version:** 2.0 **Letzte Aktualisierung:** 18.07.2026 17:35 Uhr ### Änderungshistorie | Version | Datum | Uhrzeit | Änderung | |---|---|---|---| | 1.0 | 18.07.2026 | 13:44 | Erstfassung – Gerüst für Installation nach Variante A, Voraussetzungen, Variablenübersicht, Erstprüfung | | 1.1 | 18.07.2026 | 13:52 | Variante A als verbindlich gesetzt, LXC-Eckdaten konkretisiert inkl. Feature-Konfiguration `nesting`/`keyctl`, Backup-Voraussetzung auf NAS `dsobe2023` ergänzt | | 2.0 | 18.07.2026 | 17:35 | **Von Planung auf Ist-Stand umgestellt** (Phase 7): tatsächlich ausgeführte Befehle, CTID 110, IP 192.168.2.35, Daten-Volume, IPv6-Deaktivierung, Docker- und Paperless-Versionen, Bind-Mount-Struktur, Rechte und Secrets-Handhabung dokumentiert | --- [[Impressum|Impressum]] | [[Datenschutzerklärung|Datenschutz]]