Skip to content
Omicron

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

  1. Point a domain at it and get HTTPS — one DNS record.
  2. Configure email — the one real decision.
  3. Turn on federation — off by default.
  4. Set up backups — before you have data worth losing.

Found a mistake?Edit this page on GitHub.