Skip to content
MCP server built inHow that works

Operating Compose: installation, maintenance and backup

The lavalake reference deployment runs on one machine with Docker Compose. This page covers installation and updates through Ansible and the operational features through v0.48.0.

On this page

Installation and updates through Ansible

The playbook under deploy/ansible prepares a Debian/Ubuntu VM with SSH access: install Docker, fetch a pinned release, generate missing secrets, build images sequentially and start Compose. It waits for a healthy agent and an existing backup. Enter the target host and SSH user in your inventory and set lavalake_version to the desired release tag.

From the product repository
cd deploy/ansible
cp inventar.beispiel.ini inventar.ini
# Set target host, SSH user and lavalake_version in inventar.ini
ansible-playbook -i inventar.ini install.yml

For an update, change the release tag and run the same playbook. Existing keys are preserved; database migrations run at startup. Images are built one at a time to limit peak memory use on smaller machines.

Installation acceptance

The playbook was written against the reference structure and YAML-validated. A full first run on a fresh VM remains outstanding. It does not configure a public hostname or TLS — since v0.40.0 that is a separate, documented step (see below).

Schedules and Iceberg maintenance

Regeltermine offers reports, threshold alerts and maintenance. Choose a schedule, inspect run history or trigger a run manually. Background runs use the stored offline authorization and permissions of their owner.

The “Wartung” type compacts small files, expires old snapshots, removes orphan files and finally refreshes table statistics (ANALYZE) — without them Trino's cost-based optimizer plans join order and distribution blind. Retention ranges from 7 to 365 days, with a default of 7. No automatic cleanup runs until a maintenance schedule has been configured. A table error is recorded in the result while processing continues for the remaining tables.

Retention determines time travel

Expired snapshots are no longer available for time-travel queries. Set retention to cover the historical dates you will need. A maintenance schedule is not a backup.

What the daily backup contains

A dedicated backup service runs at startup and then daily. Backups are retained for 14 days by default; retention cleanup always preserves the latest backup. Betrieb → Überwachung shows its age and size and warns when it is missing or overdue.

ComponentIncluded in the backup
Platform databaseYes: including chats, policies, schedules, registrations and usage.
Keycloak and NessieYes: users and roles, catalog and reference history.
Configuration (.env)Yes, including the key for encrypted credentials.
Iceberg/Parquet files im ObjektspeicherNo, back up separately.
WORM audit archive im ObjektspeicherNo, back up separately.

A backup on the same machine is not enough

The backup volume initially lives on the same machine. Copy it to another system regularly and protect the included keys as credentials. Stored credentials cannot be recovered without the original encryption key.

Prepare for recovery

The procedure is documented in docs/betrieb/WIEDERHERSTELLUNG.md in the product repository. Recovery requires compatible database backups, configuration and object storage data. A database backup alone does not restore the lakehouse data. Automatic site replication of the object store is not yet part of the delivered operational setup. Rehearse recovery on a separate test installation.

Query workload classes

In Compose, roles assign queries to a Trino resource group. Limits apply to the combined queries of a class, not as an individual allowance per user. Memory percentages are soft limits for admitting further queries, not reserved memory shares.

Class / roleConcurrent queriesSoft memory limit
S / leistung-s110 %
M / leistung-m225 %
L / leistung-l450 %
No assignment225 %
Platform administrator1080 %

Assign the role under Verwaltung → Nutzer & Rollen. If multiple workload roles apply, L takes precedence over M, then S; platform administrators use their own class. Selection takes effect through the role-to-group file. This does not provision additional machines, auto-suspend or automatically growing clusters.

Usage and limits

Monitoring shows compute time and data read by user and purpose, together with daily quotas. AI usage, model prices and daily token budgets appear in “KI-Kosten”. The AI backend guide covers providers, price synchronization and budget limits in detail.

Public access over HTTPS

Since v0.40.0 a single variable (PUBLIC_BASE_URL) switches the whole installation to a public hostname: the token issuer, issuer validation in the agent and the query engine, the sign-in address baked into the console and the permitted login redirects all move in lockstep. A TLS overlay for the gateway with HSTS and frame protection comes with it; local access over 127.0.0.1 remains available so SSH tunnels and operational scripts keep working. See docs/betrieb/OEFFENTLICHER-ZUGANG.md in the product repository.

Scaling out with more compute nodes

Since v0.42.0 the query engine can be extended with workers — locally through a Compose profile for trying it out, and in production on additional machines through a separate Compose file. Each worker brings its own cores and memory and registers with the coordinator within seconds; workload classes continue to apply unchanged. Details in docs/betrieb/WORKER.md. Since v0.195.0 the console shows the connected compute nodes under Administration → Operations → System health and reports a missing node after five minutes. What a worker on a second machine gains is measured under Sizing.

What the console shows for operations

Operations → Analytics bundles queries and their failures, data processed, compute time, AI cost in euros plus backup and license status, switchable across 7, 14 or 30 days. Operations → Load shows the state for humans: overall status and four traffic lights (running queries, queue, error rate, p90 response time over the last 15 minutes), calibrated against an overload test. The analytics board also lists tables without a physical layout and can apply the recommendation to all of them in sequence.

Scope

The backup service and workload classes here apply to Compose. Recovery and offline operation have dedicated documented procedures. Helm provides separate profiles for data permissions, TLS and high availability; live-cluster and failure acceptance for the HA profile remain outstanding.

Applies to: This page describes lavalake 0.48.0. Product and documentation live in separate repositories — when in doubt, what the console shows is authoritative.

Something missing?

If these pages do not answer your question, we will walk through the platform against your own case in half an hour.

Book a demo