Furious-Industries adds a 9-service Docker Compose stack for bare-metal self-hosting
One commit turns Mike into a fully self-contained local stack: Supabase Postgres + GoTrue + PostgREST + Kong, MinIO for storage, one-shot setup containers, and the Mike backend and frontend -- all driven by a single `.env.example` where `SERVER_HOST` is the only value you change. Two application-layer fixes come along for the ride and are worth pulling regardless.
The Compose file defines 9 services. Supabase runs self-hosted (Postgres, GoTrue, PostgREST, Kong 2.8.1); MinIO replaces Cloudflare R2; a minio-setup container creates the bucket on first boot; a migrate container waits for GoTrue readiness before applying the schema. The Mike backend is Node 22 with LibreOffice installed for DOC/DOCX-to-PDF conversion, and the frontend uses output: "standalone" for a slim image. One SERVER_HOST value in .env.example drives everything else.
The file ships with Supabase's public development JWT keys and says so clearly, with instructions to regenerate before internet exposure. Worth double-checking before use: a SUPABASE_SECRET_KEY line appears under the frontend build args section, which would bake a service role key into the Next.js bundle at build time. That looks like a copy-paste error.
Two application changes in this commit are worth pulling on their own. backend/src/lib/storage.ts adds forcePathStyle: true to the S3 client (required by MinIO, harmless for R2) and adds a S3_PUBLIC_ENDPOINT_URL override so presigned download URLs reference a browser-reachable host rather than the docker-internal minio hostname. That second fix resolves a real bug class for any non-R2 storage backend. The next.config.ts change to output: "standalone" is a clean addition for Docker deployments generally.
The fork's intent is clear: on-prem or homelab self-hosting as a deliberate product direction, with local development as a secondary benefit.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?