Self-hosted

One product, two ways to run it.

Use our managed service or deploy LakehouseBox on your own infrastructure. The managed service runs in Nuremberg, Germany, operated by NewCo SL. The self-hosted version is the same containers on your servers. The surface your agents see is identical: the API, the CLI, the MCP server and the connection recipes.

01What you operate

Five containers and an init job. One state directory.

The compose file the managed service runs, plus a production override. Every hostname comes from .env; nothing in the containers calls a cloud API or needs one provider's service.

State is one directory, /data, which is also the backup set. Account mail (the set-password link at signup, sign-in and recovery mail, invitations) goes out through any SMTP sender (AL_SMTP_*). Placement is whatever you set (AL_PROVIDER, AL_REGION).

ContainerImageRole
weed-initSeaweedFSOne-shot init job: generates the store's admin key pair and STS signing key on the data volume, then exits before weed starts
weedSeaweedFS (our build)Object store, Iceberg REST catalog, IAM and STS, credential vending, table maintenance
control-planeLakehouseBoxThe API: accounts, email + password login (or your OpenID Connect issuer via AL_OIDC_ISSUERS), organisations, catalogs, connection recipes, quotas
mcpLakehouseBoxThe remote MCP server on mcp.; forwards the caller's token to the control plane
sink-rollerLakehouseBoxThe ingest sink's roller: appends due batches to sink tables; idle unless AL_SINKS_ENABLED is on
gatewayCaddyTLS on api., catalog., s3., *.s3., mcp.

02What you need

A host, a domain, a mail sender.

RequirementDetail
Linux hostDocker with Compose, and a data disk mounted at /data. Any disk works.
DomainRecords at your DNS for api., catalog., s3., mcp. and a wildcard *.s3. (one hostname per bucket). Certificates come from Let's Encrypt through the gateway.
Mail senderAny SMTP account, for the account mail (set-password links, sign-in and recovery codes, invitations). Without one the links and codes are read from the control plane's log.
IdentityThe control plane's own email + password login, or your OpenID Connect issuer via AL_OIDC_ISSUERS (Okta, Entra, Keycloak, Authentik).

03The path, as it exists today

Four steps, and a test you can run.

1. Host. A machine with Docker and a disk at /data. deploy/host_setup.sh does it for a Hetzner Volume.

2. Configuration. deploy/render_env.sh writes the server's .env; AL_DOMAIN=lake.example.com gives the real hostnames.

3. Deploy. deploy/push.sh from a laptop over SSH: rsync, start, bootstrap, TLS health check. Or copy .env.example, edit it, and start the stack on the host itself.

4. Acceptance. scripts/test.sh phase1 against your hostnames is the suite we run against ours. Each check prints PASS or FAIL with the real response.

# 1 · host: Docker and a data disk at /data
$ bash deploy/host_setup.sh

# 2 · configuration: hostnames from your domain
$ AL_DOMAIN=lake.example.com bash deploy/render_env.sh lake1

# 3 · deploy from a laptop over SSH ...
$ bash deploy/push.sh lake1
# ... or on the host itself
$ cp .env.example .env
$ ./al up && ./al bootstrap

# 4 · the acceptance test, against your hostnames
$ bash scripts/test.sh phase1

04Status

What to expect from a self-hosted install today.

  • Install path: the compose file and the deploy scripts. No packaged installer yet.
    beta
  • Topology: one node per install. High availability is planned for the managed service first; the self-hosted shape follows.
    planned
  • Licence and support terms for self-hosting are being decided. Talk to us if you want to run it now.
    ask

05Upgrades and backups

The same images, the same scripts, a backup first.

A self-hosted LakehouseBox runs the images and compose files the managed service runs; a new release is redeployed with the same script that installed it. Back up before you upgrade: the nightly backup archives the whole state directory to an S3-compatible store of your choice, and the restore script rebuilds a host from that archive. We rehearse that restore on our own hosts. Details, including what each script guarantees on a single host: the self-hosting docs.

Recovery point with the shipped timers: minutes for accounts and grants, an hour for table metadata, up to 24 hours for data files. Each is one timer you can run more often.

06Managed or self-hosted?

Who operates, where, and what it costs.

ManagedSelf-hosted
Who operatesNewCo SLYou
WhereHetzner, Nuremberg, GermanyWherever you run it
IdentitySign in at the account page in the browser; the CLI connects with a link you approve thereThe control plane's own email + password login, or your OpenID Connect issuer via AL_OIDC_ISSUERS
Off-host copiesControl-plane state every 5 minutes, store metadata hourly, data files nightly, all in Germany; restore rehearsed in about 35 minutesThe same scripts, to an S3-compatible store of your choice
PriceFree: 5 GB stored, no card. Paid plans not yetYour infrastructure cost. Software licence fee: to be decided
SupportEmail; no SLA during the betaEmail; terms being decided

Both hold Apache Iceberg tables in open formats. Your tables leave with you either way.

Next.

Or create a catalog on the managed service: 5 GB, no card.