Files
computer-playbook/roles/web-app-n8n/meta/volumes.yml
kevinveenbirkenbachandClaude Opus 4.8 c41343e8e2 fix(dr-drill): restore the volume subtree it proves and stop exhausting the disk
The marker discovery matched any .dr-drill-marker under files/, so
SRC_REL could resolve to a parent tree and step 8 restored the wrong
subtree into the live export as root, leaving n8n_data owned root:root
and n8n (uid 1000) crash-looping on EACCES. Scope both repo layouts to
the primary volume's own marker and declare uid/gid 1000 on the n8n
data volume so nfs_prep enforces ownership on every deploy instead of
relying on Docker's copy-on-first-use.

The drill also stacked four copies of the backup tree on shared space
(live export, pulled tree, fully-allocated LUKS image, final restore
into a tmpfs /tmp) and ENOSPCed on large apps. Restore to /var/tmp,
drop the pulled tree before the device recover, make the loop image
sparse and free it after the marker verify, and stage only the volume
generation instead of the whole machine tree.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 13:46:22 +02:00

20 lines
443 B
YAML

---
data:
type: volume
name: n8n_data
nfs:
uid: "1000"
gid: "1000"
mode: "0770"
mounts:
- service: n8n
target: /home/node/.n8n
hooks:
type: config
source: "{{ [lookup('container', 'web-app-n8n', 'directories.instance'), 'hooks.js'] | path_join }}"
mode: "0444"
mounts:
- service: n8n
target: /home/node/hooks.js
when: "{{ lookup('config', 'web-app-n8n', 'services.sso.enabled') | bool }}"