Getting started
Quick start
Bring up a full Omicron instance with one command and finish the short setup wizard.
You need a machine with a container engine — Docker with the Compose plugin, or Podman 4+. Nothing else. The database, queue, and TLS are all bundled.
Option A — one command
The installer detects your container engine, downloads the source, and brings the stack up:
curl -fsSL https://raw.githubusercontent.com/the-jk-labs/omicron/main/install.sh | sh
When it finishes it prints the URLs and the command to upgrade later.
Option B — clone and run it yourself
git clone https://github.com/the-jk-labs/omicron.git omicron
cd omicron
docker compose up -d --build
The first build compiles the images and can take a few minutes. Watch it with
docker compose logs -f.
Open the app
| Where | URL |
|---|---|
| Local | http://localhost |
| Public | https://your-domain (after pointing DNS — see Domain and HTTPS) |
You will land on the setup wizard. It has three short steps: instance identity, the admin account, and email.
Confirm it is healthy
curl localhost:8000/healthz # -> {"status":"ok"}
curl localhost:8000/version # -> name, version, federation flag
Those ports are published on 127.0.0.1 only — reachable on the host for
troubleshooting, never exposed to the internet. All public traffic goes through
Caddy on 80/443.
What is running
Five small containers, orchestrated by one docker-compose.yml:
| Service | Role |
|---|---|
caddy |
The public entrypoint. Terminates TLS, gets Let’s Encrypt certificates automatically. |
frontend |
The SvelteKit web app. |
backend |
The JSON API and ActivityPub server (Deno). |
postgres |
All content and accounts. |
redis |
Durable queues and shared rate limits (optional). |
Direct service URLs, for debugging only:
| Service | URL |
|---|---|
| Caddy | http://localhost |
| Frontend | http://localhost:5173 |
| Backend | http://localhost:8000 |
Next steps
- Point a domain at it and get HTTPS — one DNS record.
- Configure email — the one real decision.
- Turn on federation — off by default.
- Set up backups — before you have data worth losing.
Found a mistake?Edit this page on GitHub.