Delete the old Python+React mule-image stack (backend/, frontend/,
docker-compose.yml, mulita.yml, .env*) plus the one-shot migration and
sample dirs (migrate/, photos-sample/, photovault-app-prompt.md). Only
the PhotoPrism + Go sidecar + SvelteKit web stack remains, so drop the
".photoprism." qualifier from the compose+env filenames.
Bind PhotoPrism's port to 127.0.0.1 so the user-facing surface is just
the SvelteKit web/ app; admin reaches PP's UI via SSH tunnel. Flatten
PHOTOPRISM_INDEX_WORKERS' nested default (podman-compose's interpolator
doesn't expand ${A:-${B:-…}}). Rewrite README for the current stack.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
35 lines
1.4 KiB
YAML
35 lines
1.4 KiB
YAML
# Podman-rootless overlay for the PhotoPrism stack.
|
|
#
|
|
# Apply alongside the base compose file:
|
|
# podman-compose --env-file .env \
|
|
# -f docker-compose.yml \
|
|
# -f docker-compose.podman.yml \
|
|
# up -d
|
|
#
|
|
# Adds the podman-specific bits that would break a vanilla docker compose run:
|
|
# - userns_mode: keep-id maps container UID to the invoking host UID, so
|
|
# PhotoPrism (running as PP_UID:PP_GID inside) can actually read the
|
|
# bind-mounted originals volume on the host (which is owned by the host
|
|
# user, not by uid 1000-in-the-container-namespace).
|
|
# - the explicit security_opt entries on the base file work in podman as-is.
|
|
|
|
services:
|
|
# MariaDB writes to a named volume managed by podman; its in-container
|
|
# `mysql` user expects to own that volume. keep-id breaks this by mapping
|
|
# in-container UID 999 to a podman-subuid that doesn't own the volume,
|
|
# so let mariadb use the default userns mapping (root-in-namespace).
|
|
mariadb:
|
|
# No userns_mode override — use podman defaults.
|
|
init: true
|
|
|
|
# PhotoPrism does need keep-id, so its container UID maps back to the
|
|
# host UID that owns the bind-mounted originals/.
|
|
photoprism:
|
|
userns_mode: keep-id
|
|
|
|
# Sidecar mutates the originals tree (rename / folder ops / heap
|
|
# convert / .duplicates archive) — same keep-id mapping so its writes
|
|
# land as the host user, not as a podman-subuid the host doesn't own.
|
|
sidecar:
|
|
userns_mode: keep-id
|