Self-hosting Paperless-ngx on k3s with GitOps
说明与用途
Paperless‑ngx 在 Beelink mini PC 上运行 k3s,使用外部 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