Docker
Run Localess locally using Docker Compose — no cloud account required.
Docker is the quickest way to run Localess on your machine for personal use or to preview features without setting up a Firebase project.
For a production deployment, use Firebase instead.
Prerequisites
- Docker v24 or later
- Docker Compose v2.20 or later (bundled with Docker Desktop)
Docker tags
Localess publishes the following image tags on ghcr.io/lessify/localess:
| Tag | Description |
|---|---|
edge | Latest commit on the main branch |
latest | Latest stable release |
{{major}}.{{minor}}.{{patch}} | Specific patch release (e.g. 1.2.3) |
{{major}}.{{minor}} | Latest patch for a minor version (e.g. 1.2) |
{{major}} | Latest release for a major version (e.g. 1) |
Docker Compose
Create a compose.yaml file with the following content:
services:
localess:
image: ghcr.io/lessify/localess:latest # replace with desired tag
ports:
- "4000:4000" # emulator ui
- "5001:5001" # functions
- "8080:8080" # firestore
- "9099:9099" # auth
- "9199:9199" # storage
- "5000:5000" # hosting (localess)
volumes:
- ./firebase-export:/app/firebase-exportThe firebase-export volume is optional. Mount a local directory here to persist emulator data between container restarts, or to pre-load seed data exported from another Localess instance.
Start Localess
docker compose upOnce the container is running, the following services are available:
| Service | Port |
|---|---|
| Localess (Hosting) | 5000 |
| Emulator UI | 4000 |
| Functions | 5001 |
| Firestore | 8080 |
| Auth | 9099 |
| Storage | 9199 |
First start
There is no setup page. Create your first admin once, in the Firebase Emulator UI:
- Open http://localhost:4000 and go to Authentication.
- Add user with an email and password.
- Edit the user and set its custom claims to
{"role":"admin"}.
Sign in to Localess at http://localhost:5000 with that account, then create your first space. The emulator exports its state to the mounted firebase-export volume on exit, so the account survives container restarts — as long as the volume is mounted.
Stop Localess
docker compose down