Skip to main content
This page takes about ten minutes, plus the time Docker needs to build the two images the first time.

Before you start

  • Docker with Docker Compose. Give Docker at least 6 GB of memory: the app build needs it, and 60 GB of disk: the images and the build cache take about 40.
  • Node.js 22, for npx supabase and the setup check.
  • Git.
  • On a server: a domain for the app, one for the engine, and a reverse proxy for HTTPS. See On a server.
  • An OpenRouter key from openrouter.ai/keys. It runs the Foreman and the default models of every coworker.

1. Get the code

Every command below runs from this folder.

2. Set up Supabase

Pick one. The first is simpler to keep running, the second is the full open source stack on your own server, the third is for trying Rerun on your own computer.

3. Fill the rest of .env

Three more lines:
.env
NEXT_PUBLIC_APP_URL is the address people type in their browser, without a trailing slash. Keep http://localhost:3000 to try Rerun on this machine. For a team, use the address they will reach it at, for example https://rerun.example.com. ADMIN_EMAILS is baked in by the build, so set it now. Every other variable is optional: see Configuration.

4. Run the check

It generates the three secrets left empty (RERUN_ENGINE_API_KEY, FOREMAN_HUB_TOKEN_SECRET, BOARD_IMAGE_SECRET), checks the required values, and prints the exact command to start. It stops with a plain message on anything only you can fill, and warns when OPENROUTER_API_KEY is empty.

5. Start Rerun

The first build takes several minutes. Later starts take seconds.

6. Check it runs

When something is off, read the logs first:

On a server

On your own computer, skip this section. On a server, people reach Rerun over HTTPS and nothing else stays open. Set the engine’s address in .env, before the build:
.env
The engine needs its own domain: a browser connects to it directly to show a coworker’s screen. Point the domains at the server, then put a reverse proxy in front. With Caddy, which gets its certificates on its own and forwards WebSockets:
Caddyfile
docker compose publishes the app on port 3000 and the engine on port 3001, and open source Supabase publishes Postgres on 5432 and 6543 and its gateway on 8000. Docker opens these ports past ufw, so Postgres ends up on the internet. Close them in your provider’s firewall, and keep only 22, 80 and 443 open.
Without a firewall at your provider, this nftables rule does the same. Replace eth0 with your network interface:
/etc/nftables.conf
Then nft -f /etc/nftables.conf and systemctl enable nftables.

7. Sign in

Open http://localhost:3000, or your NEXT_PUBLIC_APP_URL. You land on the board with a sign-in dialog on top. Enter your email. A 6-digit code arrives, in your inbox or in Mailpit, and you type it in. There is no phone sign-in, and no Google or Apple button unless you configure them. The emails in ADMIN_EMAILS see the admin switches in the app. See Administration.

8. Meet your first coworker

The Foreman, Rerun’s guide, greets you and asks what you need done. Answer in plain words: it plans a team and builds it. You can also click the board to create a coworker yourself and describe its job in the chat. The first coworker you place on the board needs a machine to run on. Your first workspace takes the engine that docker compose started, with nothing to configure. The second workspace, and every one after it, needs a server of its own. From here, the coworker works exactly as on Rerun Cloud: see the Quickstart from step 4.

Updating

The engine migrates its data-dir on start. When a release adds database migrations, apply them too: npx supabase db push for a project on supabase.com, the same command with --yes --db-url and the address from Install for open source Supabase, or npx supabase migration up for the local stack.
The values starting with NEXT_PUBLIC_ are baked into the app when it is built. So is ADMIN_EMAILS. After changing one, rebuild with docker compose up -d --build. Other values only need docker compose up -d.

Next steps

Deploy on Dokploy

Connect your AI

Add a server

Troubleshooting