Improve Docker setup with deprecation fixes and security hardening #9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Addresses #7
npm ci --only=productionwithnpm ci --omit=devversionfield from compose filesCapabilities Explanation
We use
cap_drop: ALLto remove all Linux capabilities, then add back only what's required:SETUID,SETGIDsu-execdrops from root tonodejsuser at runtimeCHOWN,SETUID,SETGIDWhy this is still a security win
Default Docker containers have ~14 capabilities. With this change:
Removed (no longer available to containers):
NET_RAW- Raw packet craftingSYS_CHROOT- Chroot jail creationMKNOD- Device node creationAUDIT_WRITE- Kernel audit log writesDAC_OVERRIDE- Bypass file permission checksFOWNER- Bypass ownership checksFSETID- Set file SUID/SGID bitsKILL- Send signals to any processNET_BIND_SERVICE- Bind to privileged portsSETFCAP- Set file capabilitiesSETPCAP- Modify process capabilitiesRetained (minimum required):
SETUID/SETGID- User switching (both containers)CHOWN- Ownership changes (frontend only)