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
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, typedocker --versionthendocker 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 putsudoin 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 #
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 -->
Start the installation. Paste this command, replacing the key with yours:
curl -fsSL https://agorapanel.com/install.sh | sh -s -- AGORA-XXXXX-XXXXX-XXXXX-XXXXXThe script prints its steps (
▸ Installation dans /opt/agora,▸ Démarrage…) and gives you the prompt back within seconds.<!-- CAPTURE C-031 -->
Check that both containers are running.
docker psYou must see two lines,
agoraandagora-db, with the status Up.<!-- CAPTURE C-032 -->
Follow the first start. On the very first launch, Agora downloads itself, which takes a few minutes:
docker logs -f agoraTo leave the log view without stopping Agora, type
Ctrl+C. Wait for the✓ Ready in …line.<!-- CAPTURE C-033 -->
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 -->
Do the setup. The screen that appears guides you through three steps: see First start and setup.
You know it worked when… #
docker pslistsagoraandagora-dbwith 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/healthanswers"ok": true.
If it does not work #
| Message or symptom | Cause | What to do |
|---|---|---|
Docker n'est pas installé | Docker is missing | Install Docker (https://get.docker.com), then run the command again |
Le plugin « docker compose » manque. | Compose version 2 is missing | Install the Compose v2 plugin, then run again |
Lance ce script en root (ou avec sudo). | Not enough rights | Run 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 installation | Run it again with your key at the end of the command |
| The log mentions a missing or refused key | The key in /opt/agora/.env is empty or wrong | Check AGORA_KEY in that file, then cd /opt/agora && docker compose up -d; see License errors |
| The browser opens nothing | The port is closed, or the address is local | Open port 3000 in the firewall; a browser outside your local network cannot see a 192.168… address |
agora-db is not listed in docker ps | The database container is not running | cd /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 spaces | Write 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 good | Nothing 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 full | In /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 halfway | Network cut, disk full | If /opt/agora/.env is empty, delete it, then run the command again; otherwise just run again (safe) |
Going further #
What the script does #
| Item | Where |
|---|---|
| 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) |
| Data | Three Docker volumes: agora_db (the database), agora_app (application, attachments, backups), agora_data (installation identity) |
| Port | 3000 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?
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 -->
Get Agora's
docker-compose.ymlfile. <!-- À 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 -->In the same folder, download the bootstrap:
curl -fsSL https://agorapanel.com/boot.mjs -o boot.mjsRun
docker compose up -d.
Do not mix the two ways. The
.envdownloaded from the site (variant above) goes with the hand-written compose file;install.shwrites its own.envand compose file. Putting the site's.envin/opt/agorabefore runninginstall.shgives an empty key and a bootstrap message that mentionsAGORA_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?
Related articles
- Check the requirements before installing AgoraA place to run Agora (Docker, a panel or a Node.js server), a license key, outbound HTTPS access and a Discord account; the game database only for the MDT.
- Choose between Docker, the panel egg and a Node.js serverDocker if you have a machine of your own, the Pterodactyl or Pelican egg if your host gives you a panel, an agora.mjs file if you only have a Node.js server: all three give the same product.
- The two Agora databases: the Hub's and the game'sYour installation uses two databases: the Hub's (PostgreSQL, provided and managed by Agora) and your game server's (MySQL or MariaDB, which you already have).
- Environment variablesWhere and how to change Agora's startup settings depending on your installation route (Docker, panel, Node.js server), and the list of the ones that matter.
- Behind a proxy: HTTPS, Cloudflare and visitor IP addressesGet HTTPS for your Hub (Caddy, Cloudflare, your host's proxy, Nginx), then set AGORA_TRUSTED_PROXIES and let live streams through.
- Do the getting-started setup: key, Discord application, administratorOn the first start, every address leads to the getting-started screen: license key, Discord application, then your account becomes administrator.
- Backups and restoreBack up Agora's database from the admin area, download it off the server and restore it. A panel's file copy is not a backup.