Get started with Quellery

All you need is Docker. Quellery runs as a single container using either SQLite (zero-config, file-based) or PostgreSQL (shared-server deployments) for its own persistence. The example below uses SQLite — see Configuration to switch to PostgreSQL.

Download the compose file

Save this docker-compose.yml to an empty directory, or download it directly.

services:
  quellery:
    image: lancewalton/quellery:latest
    ports:
      - "8080:8080"
    volumes:
      - quellery-data:/data
    environment:
      - DATABASE_URL=jdbc:sqlite:/data/quellery.sqlite
      - ENCRYPTION_KEY=change-me-to-a-secure-key
      - SESSION_SECRET=change-me-to-a-session-secret

volumes:
  quellery-data:

Replace ENCRYPTION_KEY and SESSION_SECRET with your own random strings. These encrypt stored database credentials and sign session tokens respectively.

Download docker-compose.yml

Start Quellery

docker compose up -d

Then open http://localhost:8080 in your browser.

Alternative: Run without Docker

If you prefer not to use Docker, you can download the fat JAR and run Quellery directly with Java. Like Docker, you can use either SQLite or PostgreSQL — the example below uses SQLite.

Prerequisites

Java 21 or later. Check with java -version.

Download

Download the latest release:

Download quellery.jar 0.0.6

Run

DATABASE_URL=jdbc:sqlite:./data/quellery.sqlite \
ENCRYPTION_KEY=change-me-to-a-secure-key \
SESSION_SECRET=change-me-to-a-session-secret \
java -jar quellery.jar

Then open http://localhost:8080 in your browser.

DATABASE_URL is the JDBC URL for Quellery's own database. Use jdbc:sqlite:<path> for SQLite or jdbc:postgresql://host:port/dbname for PostgreSQL.

Configuration

VariableRequiredDefaultDescription
DATABASE_URLYesJDBC URL for Quellery's database (jdbc:sqlite:... or jdbc:postgresql://...)
DATABASE_USERNAMENoDatabase username (PostgreSQL only)
DATABASE_PASSWORDNoDatabase password (PostgreSQL only)
ENCRYPTION_KEYYesEncrypts stored database credentials
SESSION_SECRETYesSigns session tokens
SESSION_EXPIRY_HOURSNo24Login session duration (hours)
PROMOTE_ADMIN_EMAILNoPromote an existing user to admin on startup

Data storage

By default Quellery uses SQLite, storing its database at the path specified in DATABASE_URL. The Docker compose file mounts /data as a named volume so your data persists across restarts. Alternatively, set DATABASE_URL to a PostgreSQL JDBC URL with DATABASE_USERNAME and DATABASE_PASSWORD for shared-server deployments.

Emergency admin recovery

If all admin accounts are locked out, set PROMOTE_ADMIN_EMAIL to an existing user's email. On the next startup that user will be promoted to administrator. Remove the variable afterwards.

Updating

Pull the latest image and restart:

docker compose pull
docker compose up -d

Your data is preserved in the quellery-data volume.

Using Quellery

Now that Quellery is running, open http://localhost:8080 in your browser.

Create your administrator account

On first launch you'll see a welcome screen. Enter a display name, email address, and password (minimum 8 characters). This becomes the first administrator account — more users can be added later.

Quellery welcome screen with fields for display name, email, and password

The dashboard

After logging in you see the main dashboard. Use the dropdowns along the top to select a database, schema, and model. The left panel lists tables, types, and queries for the selected schema.

Quellery dashboard with database, schema, and model dropdowns along the top and a left panel for tables, types, and queries

Add a database connection

Go to Admin in the navigation bar to create your first connection. Give it a name, choose the database type (PostgreSQL, MySQL, or H2), and enter the credentials. You can also configure the connection pool size and a refresh interval.

Database connection form with fields for name, type, host, port, database name, credentials, pool size, and refresh interval

Database on the same machine

If your database runs on the same machine as Docker, use host.docker.internal as the hostname. This is Docker's special name for reaching the host machine from inside a container.

Database on a remote machine

Use the IP address or hostname of the remote machine directly.

Database in another container

Put the database container on the same Docker network as Quellery, then use the container name as the hostname.