Check logs:
docker compose logs lakefsCommon causes:
LAKEFS_AUTH_ENCRYPT_SECRET_KEYis empty — generate one:openssl rand -hex 32ONEBUCKET_ENDPOINTis missing or malformed (must includehttp://orhttps://)- Postgres not yet ready — lakeFS depends on the postgres healthcheck, but Docker Compose
health propagation can occasionally race. Try
make down && make up.
Set in .env:
ONEBUCKET_SKIP_VERIFY=true
This sets LAKEFS_BLOCKSTORE_S3_SKIP_VERIFY_HTTPS=true in the lakeFS container and
verify=False in the Python boto3 client.
Only use this if OneBucket uses a self-signed or private CA certificate.
- Verify
ONEBUCKET_ENDPOINTis reachable from your machine (not just inside Docker). - If the endpoint is only accessible from inside Docker, run the check inside a container:
docker compose run --rm lakefs wget -qO- ${ONEBUCKET_ENDPOINT} || true
- Ensure the URL scheme is present:
https://...notexample.onebucket.endpoint.
- Check
ONEBUCKET_BUCKET— make sure the bucket name is correct and does not include a path or the endpoint hostname. - Verify the bucket exists in OneBucket.
- Credentials lack permission on the bucket. Verify in OneBucket that the key has at
minimum:
s3:GetObject,s3:PutObject,s3:DeleteObject,s3:ListBucket,s3:HeadBucket.
- Check that
make upcompleted:docker compose ps - Watch startup:
make logs - The lakeFS container may be crashing — check:
docker compose logs lakefs
The lakeFS container bootstraps the admin user by running lakefs setup before
starting the server (see the command: block in docker-compose.yml). If
authentication still fails:
- Verify
LAKEFS_ACCESS_KEY_IDandLAKEFS_SECRET_ACCESS_KEYare set in.env. - Check whether setup reported an error:
docker compose logs lakefs | head -40 - Re-run setup by hand:
docker compose exec lakefs /app/lakefs setup \ --user-name admin \ --access-key-id YOUR_KEY \ --secret-access-key YOUR_SECRET - If lakeFS was previously initialised with different credentials (stale Postgres volume),
do a full reset:
make clean && make up && make init
Why not LAKEFS_INSTALLATION_*? Those variables only trigger auto-setup when
LAKEFS_DATABASE_TYPE=local. This example runs on PostgreSQL, where they are ignored
entirely — so the container calls lakefs setup explicitly instead.
failed to create repository: found lakeFS objects in the storage
namespace(s3://your-bucket/your-prefix/) key(_lakefs/dummy): storage namespace already in use
lakeFS refuses to create a repository over a prefix that already holds lakeFS data.
This usually means the repository was created before and its metadata is still in
OneBucket — most often after make clean, which removes the PostgreSQL volume but
does not touch the bucket.
Pick one:
- Point at a fresh prefix — change
LAKEFS_STORAGE_NAMESPACEin.env(for examples3://your-bucket/demo-2/) and re-runmake init. - Reuse the existing repository — if the repo still exists in lakeFS, set
CREATE_LAKEFS_REPO=falsein.envandmake initwill validate it instead of creating it. - Clear the prefix — delete the objects under that namespace in OneBucket,
then re-run
make init. This permanently destroys the repository's data.
- The
LAKEFS_REPOrepository may not exist yet. Runmake initfirst. - Ensure
LAKEFS_REPOcontains only lowercase letters, numbers, and hyphens.
boto3 1.35+ sends x-amz-checksum-* headers that some lakeFS versions reject.
The scripts already set:
Config(
request_checksum_calculation="when_required",
response_checksum_validation="when_required",
)If you still see checksum errors, downgrade boto3: pip install boto3==1.34.162.
Check docker compose logs lakefs for errors like failed to put object.
Common causes:
ONEBUCKET_FORCE_PATH_STYLE=false— set totruefor most S3-compatible stores.- Chunked transfer encoding rejected — already disabled via
LAKEFS_BLOCKSTORE_S3_STREAMINGCHUNKEDENCODING=falseindocker-compose.yml. - TLS verification failing inside the container — set
ONEBUCKET_SKIP_VERIFY=true. ONEBUCKET_REGIONmismatch — tryus-east-1or whatever the endpoint expects.
lakeFS writes blockstore objects under the path set in LAKEFS_STORAGE_NAMESPACE.
Check inside OneBucket that objects exist under that prefix.
Stop all containers first: docker compose down, then make clean.
Change the host port in docker-compose.yml:
ports:
- "8001:8080"Then update LAKEFS_ENDPOINT=http://localhost:8001 in .env.