MinIO Console: Mobile-responsive CSS via nginx sidecar injection #346
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ldraney/pal-e-platform#346
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
Standalone -- discovered during SSO wiring session (2026-05-05). Phase 2.5: mobile access for SSO'd services.
Repo
ldraney/pal-e-platformUser Story
As a platform admin on mobile,
I want MinIO Console to be usable on my phone
So that I can browse buckets and manage storage without a laptop.
Context
MinIO Console's React app is compiled and embedded into the Go binary via
go:embed. No loose static files exist in the container -- volume mounts cannot override CSS.How the fix works: Since MinIO has no nginx to modify, we add an nginx sidecar container in the same pod. The browser talks to the sidecar instead of directly to MinIO Console. The sidecar proxies requests to
localhost:9090(Console port), intercepts the HTML response, and usessub_filterto inject<link rel="stylesheet" href="/custom/mobile.css">before</head>. Our CSS loads on top of MinIO's existing styles. Requiresproxy_set_header Accept-Encoding ""because sub_filter can't search gzipped responses. CSP default already permits'unsafe-inline'and'self'origins, so self-hosted CSS loads without CSP modification.Operator tenant CRD supports
sideCars.containers,sideCars.volumes,initContainers,env. No theming API, no CSS env vars.File Targets
Files the agent should modify or create:
terraform/modules/storage/main.tf-- add sidecar container config and ConfigMap to Operator tenant Helm valuesterraform/modules/storage/variables.tf-- new variables if neededFiles the agent should NOT touch:
terraform/modules/harbor/main.tf-- Harbor is a separate ticketterraform/modules/forgejo/main.tf-- Forgejo is a separate ticketAcceptance Criteria
@media (min-width: 600px)for desktopTest Expectations
tofu validatepassestofu plan -lock=falseshows expected changes to MinIO tenantConstraints
terraform/modules/storage/proxy_set_header Accept-Encoding ""required for sub_filter to workChecklist
tofu validatepassesRelated
project-pal-e-platform-- platform project#339-- SSO: Wire MinIO OIDC (completed)