Agora

Install with Docker (install.sh)

A single command installs Agora and its PostgreSQL database on a Linux machine with Docker: you have no database to prepare.

Updated on Oct 5, 2026, 1:36 p.m.

On this page
  1. Before you start
  2. Steps
  3. You know it worked when…
  4. If it does not work
  5. Going further
  6. What the script does
  7. Running the script again
  8. The port open directly on the Internet
  9. Folder diagram
  10. Variant: writing the compose file by hand

In short. On a Linux machine where Docker is installed, a single command sets everything up: Agora's container, its database and your license key. You have no database to create: the script provides it and picks its password. Agora downloads itself on the first start, then you finish in the browser.

Before you start #

  • A Linux machine that you manage: a VPS (a server rented from a host), a NAS (a network storage box) or a dedicated computer. If you are unsure between this route, a panel or a Node.js server, read Choose between Docker, the panel egg and a Node.js server.

  • Docker and its Compose version 2 plugin (the command is written docker compose, with a space and no hyphen). To check, type docker --version then docker compose version: both must answer with a version number. Docker missing? The official installation script is explained at https://get.docker.com. Both words are defined in the glossary.

    <!-- CAPTURE C-004 -->

  • Administrator rights: sign in as root, or put sudo in front of the command.

  • Your license key (it starts with AGORA-). It is on the Install on my panel page of your space on agorapanel.com (My account → Install on my panel), despite the page's name: your Docker files are there too. No key yet? Click Get my free trial key: see The 14-day free trial.

  • An outgoing HTTPS connection to the Internet from the machine (the full list is in Requirements).

Steps #

  1. Connect to your machine over SSH (a secure connection to the machine's terminal). From Windows 10 or 11, open PowerShell and type ssh root@YOUR-MACHINE-ADDRESS; your host gives you the address and the login. You then see the machine's prompt (root@…).

    <!-- CAPTURE C-030 -->

  2. Start the installation. Paste this command, replacing the key with yours:

    curl -fsSL https://agorapanel.com/install.sh | sh -s -- AGORA-XXXXX-XXXXX-XXXXX-XXXXX

    The script prints its steps (▸ Installation dans /opt/agora, ▸ Démarrage…) and gives you the prompt back within seconds.

    <!-- CAPTURE C-031 -->

  3. Check that both containers are running.

    docker ps

    You must see two lines, agora and agora-db, with the status Up.

    <!-- CAPTURE C-032 -->

  4. Follow the first start. On the very first launch, Agora downloads itself, which takes a few minutes:

    docker logs -f agora

    To leave the log view without stopping Agora, type Ctrl+C. Wait for the ✓ Ready in … line.

    <!-- CAPTURE C-033 -->

  5. Open the site. In your browser, go to http://YOUR-MACHINE-ADDRESS:3000. If the page does not open from another computer, open port 3000 in your host's firewall (the firewall is the filter that allows or blocks ports: see Requirements).

    <!-- CAPTURE C-036 -->

  6. Do the setup. The screen that appears guides you through three steps: see First start and setup.

You know it worked when… #

  • docker ps lists agora and agora-db with the status Up.
  • The console shows ✓ Ready in ….
  • Your browser shows the Mise en route (setup) screen, or the address http://YOUR-MACHINE-ADDRESS:3000/api/health answers "ok": true.

If it does not work #

Message or symptomCauseWhat to do
Docker n'est pas installéDocker is missingInstall Docker (https://get.docker.com), then run the command again
Le plugin « docker compose » manque.Compose version 2 is missingInstall the Compose v2 plugin, then run again
Lance ce script en root (ou avec sudo).Not enough rightsRun the command again with sudo in front
Clé de licence manquante : relance avec ta cléYou ran the script without a key on a first installationRun it again with your key at the end of the command
The log mentions a missing or refused keyThe key in /opt/agora/.env is empty or wrongCheck AGORA_KEY in that file, then cd /opt/agora && docker compose up -d; see License errors
The browser opens nothingThe port is closed, or the address is localOpen port 3000 in the firewall; a browser outside your local network cannot see a 192.168… address
agora-db is not listed in docker psThe database container is not runningcd /opt/agora && docker compose up -d, then read The two Agora databases and the FAQ
La clé de licence ne doit contenir que des lettres, chiffres et tirets (the key may only contain letters, digits and dashes)The key was copied with an extra character (quote, #, $, space)Copy it again from your account, adding nothing around it
AGORA_DIR doit être un chemin absolu (must be an absolute path)The installation folder is written without a leading /, or with spacesWrite it in full, for example AGORA_DIR=/opt/agora, with only letters, digits and / . _ -
Vérification de l'amorçage IMPOSSIBLE (verification IMPOSSIBLE)Docker could not run the check (image node:22-alpine cannot be downloaded, disk full, Docker stopped)Nothing was replaced: fix the problem (network, disk space, Docker), then run again
Amorçage REFUSÉ : signature absente ou invalide (bootstrap REFUSED)The check did run and the signature is not goodNothing was replaced. If the site has just been updated, run again in a minute; otherwise open a ticket
… est incomplet (POSTGRES_PASSWORD absent …) (incomplete)A truncated .env (interrupted installation, full disk)If Agora never started here, delete that file (rm /opt/agora/.env) and run again; otherwise restore it from your backup. The script never overwrites an existing .env
Le démarrage a échoué (start failed, port taken)Port 3000 (or 40121, the txAdmin tab) is already in use, or an agora container from another folder exists, or the disk is fullIn /opt/agora/.env, change AGORA_PORT (and if needed add AGORA_TXADMIN_PORT=<other port>), then cd /opt/agora && docker compose up -d
The installation stopped halfwayNetwork cut, disk fullIf /opt/agora/.env is empty, delete it, then run the command again; otherwise just run again (safe)

Going further #

What the script does #

ItemWhere
Installation folder/opt/agora (change it with AGORA_DIR)
Configuration/opt/agora/.env: database password, session secret and key, drawn at random and kept between updates. File readable by root only
Compose/opt/agora/compose.yml: a PostgreSQL 17 (agora-db) and a public Node image (agora)
DataThree Docker volumes: agora_db (the database), agora_app (application, attachments, backups), agora_data (installation identity)
Port3000 for the site (change it with AGORA_PORT before running the script), plus 40121 for the txAdmin tab: see txAdmin in Agora

The application never runs as root in the container: it runs as user 1000, with no Linux capability. The script is public and contains no product code: the boot.mjs bootstrap downloads Agora, checking the signature and the fingerprint (the short summary that proves a file has not been modified).

Running the script again #

Running the same command again is safe: your .env and volumes are kept. The bootstrap and the compose file are refreshed. A key passed as an argument is ignored if a .env already exists (the script says so: "Clé passée en argument IGNORÉE"): change AGORA_KEY in /opt/agora/.env, then docker compose up -d. Likewise, the port announced at the end is always the one in the existing .env: if you pass a different AGORA_PORT, it is ignored and the script tells you; to change port, edit AGORA_PORT in the .env. The script's downloads have a timeout and two retries: a frozen connection no longer leaves the installation hanging.

The port open directly on the Internet #

A new installation writes AGORA_TRUSTED_PROXIES=none in .env: no visitor can pick their IP address to get around rate limits. If you later put a reverse proxy on the same machine, read Behind a proxy.

Folder diagram #

<!-- CAPTURE C-034 -->

Variant: writing the compose file by hand #

Prefer to place the files yourself?

  1. On the Install on my panel page, click Download my .env (Docker Compose): your key and randomly drawn secrets are already in it. Because the file contains your key, the site first asks you to verify your session (see Activate or change a license key).

    <!-- CAPTURE C-035 -->

  2. Get Agora's docker-compose.yml file. <!-- À CONFIRMER : DOC-4, aucun lien public vers le docker-compose.yml manuel (absent de public/ du site) ; le compose.yml écrit par install.sh en tient lieu -->

  3. In the same folder, download the bootstrap: curl -fsSL https://agorapanel.com/boot.mjs -o boot.mjs

  4. Run docker compose up -d.

Do not mix the two ways. The .env downloaded from the site (variant above) goes with the hand-written compose file; install.sh writes its own .env and compose file. Putting the site's .env in /opt/agora before running install.sh gives an empty key and a bootstrap message that mentions AGORA_LICENSE_KEY. Pick one or the other.

This compose file also offers a Caddy profile for automatic HTTPS (see Behind a proxy). In that case the key is called AGORA_LICENSE_KEY in the .env: see Environment variables.

Was this article helpful?