66 lines
4.0 KiB
Markdown
66 lines
4.0 KiB
Markdown
# Komposthaufen file browser
|
|
|
|
Copyparty replaces arschrock's host Apache directory listing at
|
|
`https://brunner.ninja/komposthaufen/`. The maintained community chart from
|
|
https://github.com/erNail/copyparty-chart owns the Deployment, configuration,
|
|
Service, ServiceAccount and index PVC. No separate homelab chart repository or
|
|
image build is needed. `bootstrap/copyparty.yaml` pins the published chart.
|
|
The temporary primary-image tag override in `values.yaml` follows the root
|
|
policy for a latest chart that trails its application. Remove it when the chart
|
|
catches up; keep its official image repository unchanged.
|
|
|
|
Anonymous users receive only `r` (read/list/download) permission. No account
|
|
has upload, move, delete or admin permission. The supported HTML-head hook
|
|
hides upload controls and the upload-shaped local-file hash search panel;
|
|
normal filename/path search remains available. This CSS is presentation only;
|
|
permissions and the filesystem mount enforce read-only access. The non-root container also mounts
|
|
`/komposthaufen` recursively read-only. Symlinks cannot escape the exported
|
|
volume. HTML is served as text and embedded directory prologues are disabled.
|
|
The Traefik-owned route keeps its name but moves from `default` to `copyparty`
|
|
to avoid enabling cross-namespace routing globally. It preserves the URL prefix; Copyparty's `rp-loc` handles it.
|
|
Direct downloads, HEAD and HTTP byte ranges retain their normal URL shape.
|
|
|
|
The writable RBD PVC contains rebuildable SQLite search indexes, thumbnails and
|
|
session state. Indexing scans on startup and hourly; file contents are not hashed
|
|
and media tag extraction is not enabled. Search covers path/name, size and date.
|
|
The authoritative files stay on the existing bcachefs bind mount; nothing is
|
|
copied, renamed, chowned or deleted. The current backup owner in `apps/backup`
|
|
does not cover this host library. **The library has an existing backup coverage
|
|
gap.** The disposable index needs no historical backup: recreate it and let
|
|
Copyparty rescan. Preserve the host data independently; Ceph replication and
|
|
its existing backup mirrors are not historical backups of this library.
|
|
|
|
## Host storage maintenance
|
|
|
|
`../../scripts/media-storage-{offline,online}.sh` are the shared Plex, Jellyfin,
|
|
Copyparty and Paper maintenance helpers. The existing scripts at
|
|
`~/kubernetes/media-storage-{offline,online}.sh` on arschrock forward to these
|
|
versioned helpers. `~/unmount.sh --stop` uses `bcachefs-maintenance.py` to cordon,
|
|
stop filesystem holders, invoke the offline helper and verify mount namespaces
|
|
before unmounting. `~/mount_binds.sh` restores and checks the bind mounts, calls
|
|
the online helper to recreate consumers and restore the storage-ready labels,
|
|
and restores scheduling. Copyparty uses the same component selector as Plex
|
|
and Jellyfin. Never tolerate the unschedulable taint or bypass the ready label.
|
|
|
|
After changing GitOps, update arschrock's checkout before storage maintenance:
|
|
`git -C ~/kubernetes/homelab-gitops pull --ff-only`.
|
|
|
|
The chart has readiness/liveness hooks but no startup-probe template; liveness
|
|
has a startup grace period and does not wait for the background index scan.
|
|
Configuration changes require a Deployment restart because this chart does not
|
|
hash its ConfigMap into the pod template.
|
|
|
|
## Recovery and legacy Apache
|
|
|
|
Reconcile the Argo Application and its retained PVC to recover the service.
|
|
For an index-only failure, stop Copyparty before rebuilding its disposable
|
|
index; never remove anything under `/komposthaufen` to repair search.
|
|
Apache's host unit is `httpd.service`; it is disabled/stopped after cutover.
|
|
Its configuration remains intact, but currently has a missing hiredis library
|
|
required by mod_auth_openidc. An Apache rollback would first require repairing
|
|
that dependency, then enabling the service and reverting only the komposthaufen
|
|
route to `legacy-apache-service`. The `youtube.brunner.ninja` route is intentionally
|
|
retained for a separate migration and remains unavailable while Apache is off.
|
|
No old dedicated source repository exists for this host Apache service; remote
|
|
repository archival is not applicable.
|