---
title: Install
description: Install Agora on Ubuntu or Debian with one command, or build it from source.
sidebar:
  icon: download
---

## Requirements

- **Ubuntu or Debian**, x86_64 or arm64, with systemd.
- **Google Chrome or Chromium.**
- **Xvfb.**
- Root access (`sudo`) to install the binary, the `agora` system user and the service.

The installer takes care of Xvfb and the system user. If Chrome or Chromium is missing it tells you how to install it.

## One-line install

```bash
curl -fsSL https://agora.olimpia.dev/install.sh | sh
```

It downloads the latest release for your architecture, installs `/usr/local/bin/agora`, creates the unprivileged `agora` user that runs apps and browsers, and enables the `agora` systemd service. Read the script first if you prefer: [agora.olimpia.dev/install.sh](https://agora.olimpia.dev/install.sh).

Check that the daemon is up and print your admin token:

```bash
systemctl status agora
curl -s http://127.0.0.1:7788/v1/health
sudo agora token
```

:::warning
The admin token gives full control over every workspace. Keep it out of shell history, logs and chats, and hand agents [cursor tokens](/concepts#cursors) instead.
:::

## Open the dashboard

The daemon listens on `127.0.0.1:7788` only. Open `http://127.0.0.1:7788` on the same machine and paste the admin token. From another machine, use an SSH tunnel:

```bash
ssh -L 7788:127.0.0.1:7788 you@your-server
```

For permanent remote access, put Agora behind an authenticated tunnel such as Cloudflare Tunnel with Access. See the [security model](/security).

## Build from source

You need Go, a C toolchain and the x264 headers (Agora encodes H.264 through cgo).

```bash
sudo apt install xvfb libx264-dev pkg-config build-essential
git clone https://github.com/olimpiacloud/agora && cd agora
go build -o agora ./cmd/agora
sudo install -m 0755 agora /usr/local/bin/agora
sudo useradd --system --create-home --home-dir /var/lib/agora-apps --shell /usr/sbin/nologin agora
sudo cp deploy/agora.service /etc/systemd/system/
sudo systemctl daemon-reload && sudo systemctl enable --now agora
```

## Run without systemd

`agora serve` runs in the foreground. As root it keeps state in `/var/lib/agora`; as a normal user, in `~/.agora`.

```bash
agora serve --listen 127.0.0.1:7788 --home ~/.agora
```

| Flag | Default | What it does |
| --- | --- | --- |
| `--listen` | `127.0.0.1:7788` | HTTP address. Non-loopback addresses are refused unless `AGORA_ALLOW_PUBLIC=1`. |
| `--home` | `/var/lib/agora` or `~/.agora` | State directory (also `AGORA_HOME`). |
| `--apps-user` | `agora` | Unprivileged user for apps and browsers when running as root. |
| `--chrome` | auto-detected | Chrome or Chromium binary. |
| `--rtc-port` | `0` | Single UDP port for WebRTC (`0` picks ephemeral ports). |
| `--rtc-interfaces` | all | Comma-separated interfaces for WebRTC candidates. |
| `--rtc-loopback` | `true` | Offer loopback ICE candidates. |
| `--idle-after` | `5m` | Mark a workspace idle after this long without activity. |
| `--suspend-after` | `0` | Suspend idle workspaces after this long (`0` means never by default). |

Next: the [quickstart](/quickstart).
