Commit graph

483 commits

Author SHA1 Message Date
Michael Mayer
79a3d36334 AI: Drop ROCm support from the llama.cpp install script
Only Vulkan and CPU (plus Intel SYCL) builds are installed now. Benchmarks
show Vulkan generally matches or beats the ROCm build for llama.cpp (except
some prompt-processing cases), while ROCm is far more complex to provision:
the prebuilt HIP backend needs a matching ROCm runtime, and consumer/iGPU
architectures such as gfx1150 additionally require HSA_OVERRIDE_GFX_VERSION
because rocBLAS ships no kernels for them. Vulkan drives NVIDIA, AMD, and
Intel GPUs on Linux with none of that setup, so auto-detection now selects
the Vulkan build for any supported GPU and the CPU build otherwise.
2026-07-10 10:40:58 +02:00
Michael Mayer
98aa4d24ea AI: Add install-llamacpp.sh for llama.cpp Linux binaries
Installs prebuilt llama.cpp binaries from GitHub releases on AMD64/ARM64,
defaulting to the latest release or an explicit tag. Auto-detects the GPU
(sysfs PCI vendor IDs, lspci/nvidia-smi fallback) and picks ROCm, Vulkan,
or a plain CPU build, with a graceful fallback chain; NVIDIA GPUs get the
Vulkan build since upstream ships no CUDA build for Linux. Extracts into
<destdir>/lib/llama.cpp and symlinks the executables into <destdir>/bin
(the binaries carry RUNPATH "$ORIGIN"). Accelerator overridable via flags
or PHOTOPRISM_LLAMA_ACCEL; optional LLAMA_SHA256 verification.
2026-07-10 10:02:56 +02:00
Michael Mayer
c9362a6720 Docker: Refine smaller-skeleton bashrc setup for all images #5154 #5155
Follow-up to the contributor change that moves shell customization out of
per-user home directories:

- Migrate the resolute, trixie, and questing (+ slim) dev images to the
  shared install-bashrc.sh; the shared create-users.sh now hands users a
  minimal skeleton, so images still writing to /etc/skel/.bashrc would
  otherwise lose their aliases and prompt.
- Restore export PATH="$PATH:$HOME/.local/bin" (needed for claude/gh) in
  the full dev images by writing it to /etc/bash.bashrc; kept out of the
  slim and production images, which never had it.
- Guard the /etc/skel/.config copy in create-users.sh so production images
  without it don't emit a spurious error, and use rm -f /root/.bashrc.
- Fix the install-bashrc.sh header reference and silence an intentional
  SC2016 on the runtime-expanded PS1.
2026-07-10 00:56:15 +02:00
Alexis Lefebvre
44e7ed3f7e feat: use a smaller skeleton when calling useradd
# Conflicts:
#	docker/develop/armv7/Dockerfile
#	docker/develop/bookworm/Dockerfile
#	docker/develop/bullseye/Dockerfile
#	docker/develop/buster/Dockerfile
#	docker/develop/jammy/Dockerfile
#	docker/develop/lunar/Dockerfile
#	docker/develop/mantic/Dockerfile
#	docker/develop/noble/Dockerfile
#	docker/develop/oracular/Dockerfile
#	docker/develop/plucky/Dockerfile
2026-07-10 00:48:46 +02:00
Cathie Integra
d5fb43f3d8 Translations: Add gettext placeholder and whitespace lint script 2026-07-09 13:17:46 +02:00
Ömer Duran
4b33d3bd1a
PWA: Add maskable icons, lang/dir, and install screenshots #5696 2026-06-30 19:53:52 +02:00
Michael Mayer
b1a7a5d147 HEIC: Allow install-libheif.sh to upgrade held package #5708 2026-06-29 22:30:23 +00:00
Cathie Integra
fd02897278 HEIC: Default install-libheif.sh to v1.23.1 #5708 2026-06-29 23:29:22 +02:00
Cathie Integra
75e08934b8 AI: Add GPU/CUDA option to ONNX Runtime install script #5703 2026-06-28 15:53:46 +02:00
Cathie Integra
d78966141a Build: Add tag-release.sh and tag-release Makefile target 2026-06-16 07:45:40 +02:00
Cathie Integra
5aae042e2b Docker: Skip "cgroupfs-mount" when no apt install candidate exists 2026-06-13 17:08:46 +02:00
Cathie Integra
3930bc7f4b HEIC: Default install-libheif.sh to v1.23.0 #5653 2026-06-11 13:37:57 +02:00
Cathie Integra
81eccd7647 Build: Install distribution libvips-dev when recent enough, gate PPA 2026-06-11 09:57:46 +02:00
Michael Mayer
e232ea7de7 Build: Verify SHA-256 checksums when installing s6-overlay & yt-dlp
Stage each download in a temporary file and verify it against the SHA-256 published by the upstream release (s6-overlay per-asset .sha256, yt-dlp SHA2-256SUMS) before installing. Abort on mismatch and warn when no manifest is published so older pinned tags still install.
2026-06-10 18:25:05 +00:00
Michael Mayer
1fad248031 ONNX: Upgrade onnxruntime_go to v1.31.0 and runtime to 1.26.0 2026-06-10 03:24:26 +00:00
Michael Mayer
a230e60d4f FFmpeg: Add vulkan init target and provision Vulkan drivers #5631
Add a vulkan target to scripts/dist/Makefile so PHOTOPRISM_INIT="vulkan"
installs mesa-vulkan-drivers and vulkan-tools directly, and extend
install-gpu.sh to provision the Mesa Vulkan drivers for detected Intel and AMD
GPUs plus vulkan-tools for NVIDIA verification.
2026-05-30 20:14:14 +00:00
Cathie Integra
9b2313ede0 HEIC: Hold photoprism-libheif on Resolute and warn against apt libheif1 #5621 2026-05-27 10:41:38 +02:00
Cathie Integra
2da791be8d HEIC: Install equivs stub to supersede apt's libheif* packages #5621 2026-05-27 08:29:29 +02:00
Cathie Integra
04f90575f8 HEIC: Build and install libheif as a real .deb on Resolute #5621 2026-05-27 08:24:56 +02:00
Cathie Integra
83fbca10c2 HEIC: Default install-libheif.sh to v1.22.2 and switch Resolute base #5621 2026-05-27 04:17:19 +02:00
Cathie Integra
de799b1456 HEIC: Add libyuv-dev to libheif build dependencies #5621 2026-05-27 04:00:48 +02:00
Cathie Integra
551d1978d7 HEIC: Install aom-tools as a libheif build dependency #5621 2026-05-27 03:57:28 +02:00
Michael Mayer
57a56e8572 HEIC: Refresh libheif install/build script comments for v1.21 #5543
libheif 1.21 renamed the CLI binaries: heif-convert is now a symlink to
heif-dec and heif-thumbnailer is no longer shipped at all. Updating the
header and inline comments in install-libheif.sh and build-libheif.sh
to match what the scripts actually produce on current libheif releases.
2026-05-20 15:01:40 +00:00
Michael Mayer
073261ce8d Scripts: Compact check-file comment in check-api-request-limits 2026-05-15 17:53:40 +00:00
Cathie Integra
1858490de0 Develop: Add install-doctl.sh and install-hcloud.sh scripts 2026-05-09 09:57:38 +02:00
Michael Mayer
346d56bdb0 Develop: Update Makefile and scripts/dist/install-codex.sh
The current version of Codex does not have a "general_analytics" flag.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-05-08 09:05:46 +02:00
Cathie Integra
b0d6f94416 Setup: List chromium-common explicitly in install-chrome.sh package set 2026-05-05 14:56:27 +02:00
Cathie Integra
6609b709d6 Setup: Document chromium runtime dependencies in install-chrome.sh 2026-05-05 12:50:26 +02:00
Cathie Integra
369edd3556 Setup: Install chromium from PhotoPrism's internal mirror with XtraDeb fallback 2026-05-05 12:47:25 +02:00
Michael Mayer
d92d5c6739 ONNX: Upgrade runtime from v1.25.0 to v1.25.1 #5555 2026-05-04 11:48:50 +00:00
Cathie Integra
6c5095f5dc Build: Propagate docker buildx exit code from buildx-multi.sh #5553 2026-05-04 12:46:50 +02:00
Cathie Integra
84491de31b Build: Switch Ubuntu ARM64 chromium source from Bookworm to XtraDeb PPA #5553 2026-05-04 11:10:54 +02:00
Cathie Integra
597cec8e75 Build: Make Bookworm chromium lib whitelist conditional on Jammy #5553 2026-05-04 10:47:41 +02:00
Cathie Integra
a32b6da645 Build: Whitelist chromium runtime libs from Bookworm on Ubuntu ARM64 #5553 2026-05-04 10:18:14 +02:00
Cathie Integra
b8fb5374f0 HEIC: Default install-libheif.sh to v1.21.2 #5553 2026-05-04 08:49:14 +02:00
Cathie Integra
91099333b4 Build: Skip dav1d plugin on Jammy + fail libheif build loudly #5553 2026-05-04 08:39:16 +02:00
Cathie Integra
976e48796b HEIC: Keep install-libheif.sh on v1.20.2 until v1.21.2 archives ship #5553 2026-05-04 07:56:12 +02:00
Cathie Integra
88feed0d55 HEIC: Upgrade libheif from v1.20.2 to v1.21.2 #5553 2026-05-04 07:55:56 +02:00
Cathie Integra
7f4b9ad668 Scripts: Use absolute "/root/.cache/npm" path in install-nodejs.sh
When invoked as "sudo bash install-nodejs.sh" by an unprivileged user, "~"
expanded to the calling user's home before sudo elevated, so root's
".npmrc" ended up with "cache=/home/<user>/.cache/npm" and subsequent
"sudo npm install -g" runs left root-owned cache dirs inside the user's
home. Hardcode the path so the cache always lands under root.
2026-04-28 14:47:38 +02:00
Michael Mayer
6cb5684ed2 Build: Fix resolute ARM64 chromium libjpeg, use apt libheif #5543
install-chrome.sh now pins Debian Bookworm to apt priority 100 with
chromium-* elevated to 990, preventing apt from "upgrading" unrelated
Ubuntu packages like libjpeg-dev to Bookworm's higher-versioned one
(which would pull libjpeg62-turbo-dev and collide with Ubuntu's
libjpeg-turbo8-dev). The conflict affected all Ubuntu+Bookworm-
chromium ARM64 builds; Resolute happened to surface it first.

The Resolute Dockerfiles now install libheif (1.21.2) from the
Resolute apt repo and explicitly pull the codec plugins, replacing
the older 1.20.2 archive previously fetched by install-libheif.sh.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-27 09:43:29 +02:00
Michael Mayer
8d0eeb012f Build: Add install scripts for Hadolint, OSV-Scanner, Gitleaks
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-26 14:26:10 +02:00
Cathie Integra
c489ea5b0b Build: Skip "cgroupfs-mount" when not in apt index (Ubuntu 26.04)
Ubuntu 26.04 ("resolute") and Debian trixie+ no longer ship the
"cgroupfs-mount" package — modern systemd handles cgroup v2 mounting
natively. With the package gone from the index, the existing
"apt-get install" line aborted with:

  E: Package 'cgroupfs-mount' has no installation candidate

before Docker itself was installed. Probe the index via "apt-cache show"
and include the package only when it is actually available; older
distros that still ship it are unaffected.
2026-04-25 14:45:39 +02:00
Cathie Integra
79a5192cf7 Build: Make install-chrome.sh safe to run via curl | sudo bash
Two issues prevented the script from running cleanly when piped into
sudo (the most reliable invocation over SSH):

1. The header recommended `bash <(curl …)`, but with sudo the process
   substitution opens /dev/fd/63 in the unprivileged parent shell and
   the elevated bash cannot read it — the script aborted with
   `bash: /dev/fd/63: No such file or directory`. Replace with the
   `curl -fsSL … | sudo bash` pattern (and keep an explicit
   download-then-run fallback). Also call out the broken sudo + process
   substitution form so users do not retry it.

2. With stdin piped to bash, `gpg --dearmor` tried to write status to
   /dev/tty and failed with `gpg: cannot open '/dev/tty'`, breaking the
   keyring import (and silently leaving an empty keyring on a fresh
   host). Pass `--no-tty --batch --yes` to both gpg calls.

Tested end-to-end on Ubuntu 26.04 ("resolute") via
`curl -fsSL …/install-chrome.sh | sudo bash` from a clean state
(no preexisting keyring or apt list): keyring valid OpenPGP file, deb
fetched and installed, `google-chrome --version` returns 147.0.7727.116.
2026-04-25 14:44:56 +02:00
Michael Mayer
452bdde31e ONNX: Upgrade runtime from v1.24.1 to v1.25.0 and bump onnxruntime_go
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-24 18:06:54 +02:00
Michael Mayer
5bda752118 Build: Add shared .telemetry file to opt out of CLI telemetry
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-24 16:42:21 +02:00
Michael Mayer
7d39b2d9fe API: Extend check-api-request-limits.sh for ServeHTTP and direct reads
- Flag <name>.ServeHTTP(<writer>, c.Request) calls without a nearby
  LimitRequestBodyBytes so SDK-delegated handlers (MCP today, future
  SDKs tomorrow) are held to the same body-cap contract as BindJSON.
- Also flag direct reads via io.ReadAll, io.LimitReader,
  json.NewDecoder, xml.NewDecoder, and yaml.NewDecoder on c.Request.Body

Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-20 13:55:29 +02:00
Cathie Integra
543d43ab6a Docker: Raise BuildKit step log size/speed limits in buildx-multi.sh
Set BUILDKIT_STEP_LOG_MAX_SIZE=5 MiB and BUILDKIT_STEP_LOG_MAX_SPEED=10 MiB/s
on both the local and remote ssh://arm multibuilder nodes so long apt-get
transcripts on unstable Ubuntu bases aren't truncated during preview builds.
2026-04-18 11:45:28 +02:00
Cathie Integra
8e5ece95a3 Scripts: Install Mermaid CLI and Chromium for ARM64 in dev images 2026-04-17 09:38:37 +02:00
Michael Mayer
ca4f063052 Frontend: Pin "axios" to v1.14.0 to mitigate supply chain attack
see https://socket.dev/blog/axios-npm-package-compromised

Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-31 08:52:23 +02:00
Michael Mayer
e9a714098d Security: Add API request-limit regression check script
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-08 15:12:32 +01:00