docs: correct hardware requirements to match enforced container limits - #598
Conversation
The stated 4 GB minimum was below the default stack's own enforced deploy.resources.limits (~4.4 GB, ~5.4 GB with the auth overlay), so a 4 GB host cannot run TracePcap at default settings. - Raise the minimum to 6 GB (with SURICATA_ENABLED=false) and promote CPU into the minimum tier - Add a Comfortable tier (16 GB / 8 cores / 100 GB+ SSD) for Suricata enabled on large captures, with the .env overrides to match — the shipped APP_MEMORY_MB=2048 caps uploads at 512 MB, since max upload is 25% of the backend budget - State that all tiers size the stack only, with AI features disabled or LLM_BASE_URL pointed at another machine - Note that TracePcap never uses a GPU; packet dissection and threat detection are CPU-bound and no container requests a GPU device. A GPU is the LLM server's requirement, not TracePcap's - Cross-reference the per-service breakdown in production-hardening The per-service table in production-hardening.rst was verified against the compose files and needed no changes. Closes #597 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
📝 WalkthroughWalkthroughThe README and prerequisite documentation replace the former 4 GB guidance with tiered TracePcap hardware requirements, container memory and upload-limit details, Suricata-specific sizing, and clarifications about external or self-hosted LLM resources. ChangesHardware Requirements Documentation
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/getting-started/prerequisites.rst`:
- Around line 44-58: Add SURICATA_ENABLED=true to the Comfortable-tier override
blocks in docs/getting-started/prerequisites.rst lines 44-58 and README.md lines
89-98, ensuring users upgrading from the Minimum configuration explicitly enable
Suricata in both documented configurations.
- Around line 27-30: Update the LLM deployment wording in
docs/getting-started/prerequisites.rst lines 27-30 to explicitly allow only
local or LAN-hosted inference servers and exclude public or external endpoints.
Update README.md lines 80-81 to clarify that “another machine” means a server on
the local network; preserve the configurable LLM_BASE_URL guidance while stating
that the application must not make external API calls.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: ff292aa6-b255-4dd3-af3d-18038831c045
📒 Files selected for processing (2)
README.mddocs/getting-started/prerequisites.rst
Address PR review on #598: - Scope LLM_BASE_URL guidance to a self- or LAN-hosted inference server and state that it must not reference a public API, matching the offline-runtime requirement. Also drops "OpenAI" from the README prerequisites table, which contradicted that requirement. - Add SURICATA_ENABLED=true to both Comfortable-tier override blocks, so users arriving from the Minimum tier (which sets it false) get the configuration the tier is sized for. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Closes #597
Summary
The documented 4 GB minimum RAM sits below the default stack's own enforced
deploy.resources.limits(~4.4 GB, ~5.4 GB with the Keycloak auth overlay) — before host OS and Docker. A 4 GB host cannot start TracePcap at default settings.Changes to
README.mdanddocs/getting-started/prerequisites.rst:SURICATA_ENABLED=false), CPU promoted from Recommended into the minimum tier.envoverrides to match. The shippedAPP_MEMORY_MB=2048caps uploads at 512 MB, since max upload is 25% of the backend budget (backend/docker-entrypoint.sh:73)LLM_BASE_URLpointed at a self- or LAN-hosted inference serverproduction-hardening.rstReview follow-ups (
8cf6289)Two findings from the CodeRabbit review, both addressed:
LLM_BASE_URLmust not reference a public or internet-hosted API. Related and outside the flagged scope: the prerequisites table inREADME.mdlisted OpenAI as an example provider, contradicting the same requirement — removed, and the row now reads "self- or LAN-hosted".SURICATA_ENABLED=false. Anyone stepping up from Minimum would have carriedfalseforward. AddedSURICATA_ENABLED=trueto both blocks.Verification
docs/operations/production-hardening.rstchecked line-by-line againstdocker-compose.ymlanddocker-compose.prod.yml— every default matches. No changes needed there; the drift was confined to the two getting-started pagesbackend/docker-entrypoint.shandnginx/docker-entrypoint.shpython3 -m sphinx -b htmlbuilds with no warnings fromprerequisites.rstNote on the numbers
The corrected tiers are operational recommendations, not measured benchmarks. The 6 GB minimum is derived from ~4.4 GB of enforced limits plus host headroom; the Comfortable tier from the ops doc's own guidance (4 GB+ for the backend alone with Suricata on captures over 100 MB), with headroom for the rest of the stack. Neither has been validated by booting the stack on a host of that size — worth doing once if a defensible figure is wanted. The RST labels the Comfortable tier as such so the doc does not overclaim. LLM VRAM figures are standard quantised-model sizing, not measured against TracePcap's prompts.
Test plan
cd docs && python3 -m sphinx -b html . _build):doc:cross-reference to production-hardening resolvesSURICATA_ENABLED=falseto confirm the stated minimum🤖 Generated with Claude Code