Self-hosting Paperless-ngx on k3s with GitOps
Описание и применение
Paperless‑ngx развернут на k3s на мини‑ПК Beelink с внешним HDD, конфигурация управляется через Flux, а сканирование выполняется с мобильных устройств.
Задача
Need a local document archive that OCRs, tags, and stores scans from a phone without relying on cloud services.
Результат
Paperless-ngx successfully runs on a single Beelink mini PC, storing documents on an external HDD, with automated deployment via Flux and mobile scanning via community apps.
Рабочий процесс
- Format external HDD as ext4 and mount it by UUID
- Create /mnt/hdd/paperless/media and export folders and set ownership
- Configure k3s to wait for mount via systemd unit
- Define StorageClass hdd-local with no provisioner
- Create PersistentVolume for media folder with nodeAffinity
- Bind PVC to PV using storageClassName and volumeName
- Deploy Paperless-ngx stack with PostgreSQL, Redis, Tika, Gotenberg
- Configure Traefik ingress and nip.io hostname
- Set PAPERLESS_URL and PAPERLESS_CSRF_TRUSTED_ORIGINS
- Enable Flux to sync manifests from GitHub
- Apply day‑to‑day settings via SOPS‑encrypted secrets
Доказательства
I ended up with Paperless-ngx running on k3s on a Beelink mini PC. Documents live on an external HDD, and Flux deploys every config change I push to GitHub.
The trick is a static local PersistentVolume pointing at a folder on the HDD.
Paperless crash‑looping: 'tcp://10.43.x.x:8000' is not a valid integer
- Дата записи: 2026-10-26T11:26:13.476Z