# Any Linux computer with Docker

At the end, Loopgate's runner is running on your box and on your org's Devices page.

## At a glance

**Time:** 5 minutes.

**What you need:**

- A Linux box with Docker, 2 GB of free memory and 5 GB of free disk, plus room for your code. If the cloud asks x86 or Arm, pick x86; every cloud guide here does
- A Terminal on it (a cloud guide gives you both)
- Your Loopgate sign-in as an owner or admin of your org

**Steps:**

1. Check Docker
2. Get the command from the portal
3. Paste it on the box

## Steps

1. **Check that Docker Compose is there.**

   ```sh
   docker compose version
   ```

   You should see: `Docker Compose version v2.` followed by more numbers. With no Docker, `curl -fsSL https://get.docker.com | sh` installs it.

2. **On your laptop, open the portal's Devices page and press Add a runner**, then **Copy**.

   You should see: a line starting `curl -fsSL https://loopgate.dev/runner/install.sh`, `Expires in 59 min` and `Waiting for the box…`.

   > The line holds a token that works once, for an hour. Press Add a runner again for a fresh one.

3. **Paste the line on the box and press Enter.**

   You should see: the image download (about 170 MB the first time), `Waiting for the runner to start and register…`, then `Runner connected. Open the portal's Devices page: …`. The portal says `Connected · <the box's name>`, with an address ending `trycloudflare.com` marked `temporary`.

   > The runner gets that address by itself, through a free Cloudflare quick tunnel. It changes when the box restarts; [a permanent address](address-cloudflare.md) keeps it. The line made a `loopgate` folder in your home folder, readable only by you.

## Check

The runner says it is registered:

```sh
cd ~/loopgate && docker compose logs runner
```

You should see: a line `Registered as <name> with <your org>` and a line `Runner ready at https://….trycloudflare.com (temporary address)`.

## Next

Press **Open** on the runner's row in the portal's Devices page, then [sign in to your engines, set GitHub and add a workspace](sign-in.md).

## If something is off

- **The script says the token was already used, or expired.** Press Add a runner again and paste the new line.
- **The script says `The runner did not register within two minutes.`** The lines under it are the runner's. `The install token was refused: …` says why and retries each minute; paste a fresh line from the portal.
- **Docker says permission denied.** Your user cannot run Docker yet; the cloud guide's last steps fix that.
- **Anything else.** [Update, back up, fix](care.md) says what each line means.

## Doing it by hand

[By hand](by-hand.md) downloads the files, writes `runner.env` and signs the runner in with a device code.
