Skip to content

feat: container metrics breakdown (#4571) + bulk invites/org mgmt (#4481) + IDOR fix#9

Open
BSalaeddin wants to merge 3 commits into
canaryfrom
feat/container-metrics-org-mgmt
Open

feat: container metrics breakdown (#4571) + bulk invites/org mgmt (#4481) + IDOR fix#9
BSalaeddin wants to merge 3 commits into
canaryfrom
feat/container-metrics-org-mgmt

Conversation

@BSalaeddin

Copy link
Copy Markdown
Collaborator

Ports two upstream Dokploy PRs into the community fork, both verified E2E on the test instance. Do not merge to canary yet — up for review.

Features

1. Container resource breakdown in Monitoring — upstream Dokploy#4571

Adds a per-container resource table to the Dokploy web-server monitoring page (/dashboard/monitoring): CPU / Memory / Disk Size / Disk I/O / Network tabs, summary cards, and an expandable per-container Processes view (docker top, top 20 by CPU). Refreshes every 5s.

  • New tRPC queries server.getContainerResourceStats / server.getContainerProcesses, both withPermission("monitoring","read")-gated.
  • containerId is regex-validated before interpolation into docker top (no shell injection); getAllContainerStats uses fixed format strings.
  • Ships its own unit suite (__test__/monitoring/container-resource-usage.test.ts, 4 tests) — passes.

2. Bulk invitations, org description, move-member-to-team — upstream Dokploy#4481

  • Bulk Invite Members dialog (up to 50, duplicates/existing skipped) on /dashboard/settings/users.
  • Organization Description card.
  • Move member to team action.

Security fix on top of Dokploy#4481 (not in upstream)

Upstream organization.updateDescription trusted input.organizationId for the write while checkPermission only authorizes against ctx.session.activeOrganizationId — a cross-tenant IDOR (an org admin could overwrite any other org's metadata). Fixed by scoping the read/write to the active org and rejecting mismatched ids with FORBIDDEN. Worth reporting upstream.

Notes

  • No DB migrations in either PR → additive, reversible deploy.
  • apps/dokploy typecheck: clean (exit 0).

Verified E2E (test instance, image :metrics-org, host 178.105.34.146)

  • Metrics: breakdown table with real data for all containers; per-container docker top process expansion works.
  • Bulk invite: fresh email → invited; existing owner → Already a member / skipped; invitation persisted then cleaned up.
  • Org description: save + survives reload.
  • IDOR fix: updateDescription with a bogus organizationIdHTTP 403 FORBIDDEN; legitimate active-org save succeeds.

agentHits and others added 3 commits July 2, 2026 08:21
- Add bulkInviteMembers endpoint to organization router (up to 50 at once,
  skips duplicates/existing members with per-email status report)
- Add updateDescription endpoint storing description in org metadata field
- Add moveMemberToTeam endpoint to assign members to a teamId
- New BulkInvite dialog component with dynamic rows and result summary
- New UpdateOrgDescription card component on the users settings page
- New MoveToTeam dialog in the member actions dropdown
- Wire all three into dashboard/settings/users page

Closes Dokploy#1413
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants