Skip to content

Self-hosting the full stack outside Cloudflare — working Miniflare-based deployment, offering fixes upstream #352

Description

@tlvenn

We run Maple fully self-hosted (no Cloudflare, no Tinybird): vanilla ClickHouse per docs/self-hosted-clickhouse.md with the prebuilt collector, plus the three workers (api, alerting, electric-sync) running under Miniflare in a single container, Hyperdrive bound to a local Postgres 17, Electric fronted by the electric-sync worker, drizzle migrations on boot, chat/AI-triage on the OpenRouter fallback. It's validated end-to-end (auth → Electric shapes → ClickHouse queries) and lives at tlvenn/maple (deploy/workerd/).

Along the way we found the in-repo Docker path has drifted: apps/api/Dockerfile runs bun run start which no longer exists, docker-compose.yml references apps/alerting/apps/electric-sync Dockerfiles that aren't in the tree, and apps/web/Dockerfile can't build because .dockerignore excludes packages/browser/packages/effect-sdk and @maple-dev/clickhouse-builder's dist is never built (also @maple-dev/browser is imported by the web app but not declared, so it only resolves via hoisting).

If there's interest, I'd like to upstream this in pieces:

  1. the web Dockerfile/.dockerignore fixes — happy to open that PR immediately;
  2. cleaning up or fixing the stale api/compose Docker references — your call whether those should be fixed or removed;
  3. the Miniflare runtime as an official self-host deployment path, with docs.

No hard feelings if (3) isn't the direction you want — even just (1)+(2) would help other self-hosters.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions