Self-hosting Paperless-ngx on k3s with GitOps
说明与用途
在 k3s 上使用 GitOps 自托管 Paperless-ngx:将文档存储在外部 HDD 上,支持 OCR 和标签,手机扫描上传,Flux 自动化部署。
问题
Need a local document archive that can OCR, tag, and be accessed from a phone without relying on cloud storage.
结果
A fully self-hosted, GitOps-managed Paperless-ngx instance on a single-node k3s cluster, with documents stored on an external HDD and accessible from a phone via OCR-enabled scanning.
工作流
- Format external HDD as ext4 and mount it by UUID
- Create directories and set ownership for Paperless
- Configure k3s to wait for mount via systemd unit
- Define StorageClass and PersistentVolume for HDD media
- Bind PVC to PV
- Deploy Paperless-ngx stack via Kubernetes manifests
- Resolve k3s errors (port conflict, IP registration, missing folders, service link env var, CSRF origins)
- Set up Flux bootstrap and GitOps repo layout
- Encrypt secrets with SOPS + age and configure Flux decryption
- Annotate resources to prevent prune deletion
- Push configuration changes to GitHub to trigger deployments
证据
I ended up with Paperless-ngx running on k3s on a Beelink mini PC.
enableServiceLinks: false
PAPERLESS_CSRF_TRUSTED_ORIGINS=http://paperless.192.168.1.50.nip.io,https://paperless.192.168.1.50.nip.io
- 记录日期: 2026-10-27T10:26:49.908Z