Download

Download the Free edition.

Core + Console in Docker containers, with PostgreSQL in the sample compose. Up to 10 registered agents, no cost and no credit card.

Available now

Lucerta Free

Container images for the free edition. The Docker Hub mirror is shown below.

1. Pull the images

Images being published. The container packages are not yet published to the registries: the commands below will be active from the release.
docker pull ghcr.io/lucerta/core:free
docker pull ghcr.io/lucerta/console:free

# optional Docker Hub mirror:
docker pull docker.io/lucerta/core:free

2. Start the stack

Save this compose.yaml and start it with docker compose up -d. It's a minimal example: for production, read the guide at docs.lucerta.io.

services:
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: lucerta
      POSTGRES_USER: lucerta
      POSTGRES_PASSWORD: change-this-password
    volumes:
      - lucerta-db:/var/lib/postgresql/data

  core:
    image: ghcr.io/lucerta/core:free
    depends_on:
      - db
    environment:
      SPRING_PROFILES_ACTIVE: postgres
      LUCERTA_DB_URL: jdbc:postgresql://db:5432/lucerta
      LUCERTA_DB_USERNAME: lucerta
      LUCERTA_DB_PASSWORD: change-this-password
      LUCERTA_JWT_SECRET: change-this-secret
      LUCERTA_SECRET_MASTER_KEY: change-this-key
      # First admin bootstrap (optional). If you set the password here, no password
      # is printed to the logs; if you omit it, the Core generates one and shows it
      # once in the logs (see step 3).
      # LUCERTA_ADMIN_USERNAME: admin
      # LUCERTA_ADMIN_PASSWORD: change-this-password
      # LUCERTA_ADMIN_EMAIL: admin@example.com
    ports:
      - "8080:8080"

  console:
    image: ghcr.io/lucerta/console:free
    depends_on:
      - core
    environment:
      LUCERTA_CONSOLE_CORE_URL: http://core:8080
      LUCERTA_CONSOLE_SECRET: change-this-secret
    ports:
      - "8000:8000"

volumes:
  lucerta-db:

3. First start and credentials

On first start, Flyway migrations are applied. If the database does not contain any users yet, the Core runs the first-start bootstrap and creates a superadmin user (LUCERTA_ADMIN_USERNAME, default admin).

If you do not set LUCERTA_ADMIN_PASSWORD, a random password is generated and printed only once in the Core logs, in a prominent banner:

=== LUCERTA — PRIMA CONFIGURAZIONE ===
Utente amministratore creato: admin
Password generata: …
Conservala e cambiala al primo accesso.

Retrieve it with docker compose logs core | grep -A4 "PRIMA CONFIGURAZIONE". The password change on first login is mandatory: the Console redirects to the Account page and blocks every other action (the Core returns 403 PASSWORD_CHANGE_REQUIRED) until you set a new password.

Alternatively, set before the first start LUCERTA_ADMIN_USERNAME, LUCERTA_ADMIN_PASSWORD and LUCERTA_ADMIN_EMAIL: in that case no password is printed to the logs. On subsequent restarts the bootstrap does not recreate anything and does not overwrite the credentials. There is no default password. The up-to-date procedure is also at docs.lucerta.io.

What you get

Everything you need to start

  • Core (Java 21 + Spring Boot) and Console (FastAPI + HTMX)
  • Inventory, renewal policies and job scheduler with retry/backoff
  • ACME (Let's Encrypt and compatible CAs), Cloudflare DNS, AWS Route 53
  • Full audit trail, 4-role RBAC and mTLS agent channel
  • Choice of database: PostgreSQL, MariaDB or OracleDB
Free edition limit: up to 10 registered agents. It is a fixed limit in the code (LicenseService.FREE_MAX_AGENTS = 10), not overridable via environment variable or database. Edge management is not available in Free.

Full installation and configuration: docs.lucerta.io.

Enterprise

Coming in Q3 2027.

Signed licence, Edge management, SSO/LDAP and support. Much cheaper than today's enterprise platforms.

Stay in touch about Enterprise

We'll let you know when it's available. No price published at this stage.