Fix cache storage landing in ephemeral /tmp

Upstream joins STORAGE_PATH onto os.tmpdir() unless
STORAGE_PATH_USE_TMP_FOLDER=false, even for absolute paths, so the
container wrote artifacts to /tmp/app/cache instead of the bind mount
and lost them on every restart. Set the flag in both config.env
(native service) and the quadlet, and chown the host cache dir to the
container user via the :U volume option.
This commit is contained in:
2026-08-02 16:16:14 +02:00
parent cecbed79ea
commit 37962b2ba8
3 changed files with 21 additions and 3 deletions
+5
View File
@@ -20,6 +20,11 @@ STORAGE_PROVIDER=local
# /var/cache/turborepo-remote-cache from the host to this path. # /var/cache/turborepo-remote-cache from the host to this path.
STORAGE_PATH=/var/cache/turborepo-remote-cache STORAGE_PATH=/var/cache/turborepo-remote-cache
# Use STORAGE_PATH as-is. Without this the server joins STORAGE_PATH
# onto os.tmpdir() (even when absolute) and the cache lands in /tmp,
# which is wiped on every restart.
STORAGE_PATH_USE_TMP_FOLDER=false
# Listen address and port. Bound to localhost by default — runners # Listen address and port. Bound to localhost by default — runners
# reach the host via host.containers.internal (Podman) on this port. # reach the host via host.containers.internal (Podman) on this port.
HOST=127.0.0.1 HOST=127.0.0.1
+7 -2
View File
@@ -10,9 +10,14 @@ Image=docker.io/ducktors/turborepo-remote-cache:2.11.5
EnvironmentFile=/etc/turborepo-remote-cache/config.env EnvironmentFile=/etc/turborepo-remote-cache/config.env
# Bind to loopback on the host; runners reach via host.containers.internal # Bind to loopback on the host; runners reach via host.containers.internal
PublishPort=127.0.0.1:3128:3000 PublishPort=127.0.0.1:3128:3000
Volume=/var/cache/turborepo-remote-cache:/app/cache:Z # :U chowns the host dir to the container's "app" user on start
# Override STORAGE_PATH inside the container to match the bind mount Volume=/var/cache/turborepo-remote-cache:/app/cache:Z,U
# Override STORAGE_PATH inside the container to match the bind mount.
# STORAGE_PATH_USE_TMP_FOLDER=false is required: by default the server
# joins STORAGE_PATH onto os.tmpdir() (even absolute paths) and writes
# to the ephemeral /tmp/app/cache instead of the bind mount.
Environment=STORAGE_PATH=/app/cache Environment=STORAGE_PATH=/app/cache
Environment=STORAGE_PATH_USE_TMP_FOLDER=false
Environment=PORT=3000 Environment=PORT=3000
Environment=HOST=0.0.0.0 Environment=HOST=0.0.0.0
+9 -1
View File
@@ -10,7 +10,7 @@
Name: turborepo-remote-cache Name: turborepo-remote-cache
Version: 2.11.5 Version: 2.11.5
Release: 1%{?dist} Release: 2%{?dist}
Summary: Self-hosted Turborepo remote cache server Summary: Self-hosted Turborepo remote cache server
License: MIT License: MIT
Group: Development/Tools Group: Development/Tools
@@ -157,6 +157,14 @@ install -p -D -m 644 %{SOURCE12} \
%{_datadir}/containers/systemd/%{name}.container %{_datadir}/containers/systemd/%{name}.container
%changelog %changelog
* Sun Aug 02 2026 Zoran Pericic <zpericic@netst.org> - 2.11.5-2
- Set STORAGE_PATH_USE_TMP_FOLDER=false in config.env and quadlet:
upstream joins STORAGE_PATH onto os.tmpdir() by default (even for
absolute paths), so artifacts were written to ephemeral /tmp instead
of /var/cache/turborepo-remote-cache and lost on restart
- Add :U to the quadlet volume so the host cache dir is chowned to the
container's app user
* Sun Aug 02 2026 Zoran Pericic <zpericic@netst.org> - 2.11.5-1 * Sun Aug 02 2026 Zoran Pericic <zpericic@netst.org> - 2.11.5-1
- Update to 2.11.5 - Update to 2.11.5
- Adds local cache cleanup endpoint (2.9.0) and read-only mode (2.10.0) - Adds local cache cleanup endpoint (2.9.0) and read-only mode (2.10.0)