7a0da7932b
Backwards Compatibility / Verify Encryption Constants (push) Waiting to run
Backwards Compatibility / PyPI Version Compatibility (push) Waiting to run
Backwards Compatibility / Database Migration Tests (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
CodeQL Advanced / Analyze (python) (push) Waiting to run
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-form] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-metrics] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-workflow] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-core] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-pages] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [history-news] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [library] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [link-analytics] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [mobile] (push) Blocked by required conditions
Docker Tests (Consolidated) / detect-changes (push) Waiting to run
Docker Tests (Consolidated) / Build Test Image (push) Waiting to run
Docker Tests (Consolidated) / All Pytest Tests + Coverage (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [accessibility] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [api-crud] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-login] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-pages] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-register] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-core] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-lifecycle] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [error-benchmark] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) (push) Blocked by required conditions
Docker Tests (Consolidated) / Accessibility Tests (push) Blocked by required conditions
Docker Tests (Consolidated) / LLM Unit Tests (push) Blocked by required conditions
Docker Tests (Consolidated) / LLM Example Tests (push) Blocked by required conditions
Docker Tests (Consolidated) / Production Image Smoke Test (push) Blocked by required conditions
Docker Tests (Consolidated) / Infrastructure Tests (push) Blocked by required conditions
OSSF Scorecard / OSSF Security Scorecard Analysis (push) Waiting to run
OSV-Scanner (Scheduled) / scan-scheduled (push) Failing after 0s
Create Release / test-gate (push) Has been cancelled
Create Release / release-gate (push) Has been cancelled
Create Release / ci-gate (push) Has been cancelled
Create Release / version-check (push) Has been cancelled
Create Release / e2e-test-gate (push) Has been cancelled
Create Release / responsive-test-gate (push) Has been cancelled
Create Release / compat-test-gate (push) Has been cancelled
Create Release / compose-integration-gate (push) Has been cancelled
Create Release / vulture-gate (push) Has been cancelled
Create Release / build (push) Has been cancelled
Create Release / provenance (push) Has been cancelled
Create Release / prerelease-docker (push) Has been cancelled
Create Release / publish-docker (push) Has been cancelled
Create Release / create-release (push) Has been cancelled
Create Release / cleanup-changelog (push) Has been cancelled
Create Release / trigger-pypi (push) Has been cancelled
Create Release / monitor-pypi (push) Has been cancelled
Create Release / Clean up orphan prerelease tags and signatures (push) Has been cancelled
58 lines
2.1 KiB
Bash
Executable File
58 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# This entrypoint handles volume permissions for the LDR container.
|
|
# Docker volumes are created with root ownership, but we need them
|
|
# accessible to the ldruser (UID 1000) that runs the application.
|
|
|
|
echo "Setting up /data directory permissions..."
|
|
|
|
# Create required subdirectories under /data if they don't exist
|
|
mkdir -p /data/logs
|
|
mkdir -p /data/cache
|
|
mkdir -p /data/cache/rag_indices
|
|
mkdir -p /data/research_outputs
|
|
mkdir -p /data/encrypted_databases
|
|
|
|
# Set permissions to 700 (owner-only access for security)
|
|
chmod 700 /data/logs
|
|
chmod 700 /data/cache
|
|
chmod 700 /data/cache/rag_indices
|
|
chmod 700 /data/research_outputs
|
|
chmod 700 /data/encrypted_databases
|
|
|
|
# Fix ownership of /data and all subdirectories
|
|
# This is safe because we're still root at this point (before USER directive takes effect)
|
|
chown -R ldruser:ldruser /data
|
|
|
|
# Create matplotlib cache directory for ldruser
|
|
echo "Setting up matplotlib cache directory..."
|
|
mkdir -p /home/ldruser/.config/matplotlib
|
|
chown -R ldruser:ldruser /home/ldruser/.config
|
|
chmod -R 700 /home/ldruser/.config
|
|
|
|
echo "Starting LDR application as ldruser..."
|
|
|
|
# Switch to ldruser and execute the command.
|
|
# setpriv needs CAP_SETUID and CAP_SETGID to call setuid()/setgid() syscalls.
|
|
# These are granted via cap_add in docker-compose.yml, but in restricted
|
|
# environments (e.g. Proxmox LXC) the outer container may block them.
|
|
if ! setpriv --reuid=ldruser --regid=ldruser --init-groups -- true 2>/dev/null; then
|
|
echo ""
|
|
echo "ERROR: Failed to switch to non-root user 'ldruser'."
|
|
echo ""
|
|
echo " setpriv requires CAP_SETUID and CAP_SETGID Linux capabilities."
|
|
echo " This typically happens in LXC containers (e.g. Proxmox) that"
|
|
echo " restrict these capabilities."
|
|
echo ""
|
|
echo " To fix, ensure your LXC container allows SETUID/SETGID:"
|
|
echo " - Proxmox: check 'Features' -> 'Nesting' is enabled"
|
|
echo " - Or add to LXC config: lxc.cap.keep = setuid setgid"
|
|
echo ""
|
|
echo " See: https://github.com/LearningCircuit/local-deep-research/issues"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
export HOME=/home/ldruser
|
|
exec setpriv --reuid=ldruser --regid=ldruser --init-groups -- "$@"
|