Install
Install Aida Controller on a supported Linux host (Ubuntu or Debian recommended). The installer pulls images from ECR, lays out config under /opt/aida-controller by default, starts host-controller, and bootstraps the application stack.
You do not install the Platform on this host — only the edge controller. Register it to a Platform site with a one-time install code from the Platform UI.
Requirements
| Item | Guidance |
|---|---|
| OS | Ubuntu Server 22.04+ or Debian (amd64) |
| Resources | Roughly 4 GB RAM, 2 CPUs, ~50 GB disk (typical VM) |
| Access | sudo / root; outbound access to ECR and (for OTC) the Platform API |
| Docker | Installer can install Docker Engine + Compose v2 if missing |
Provision from Platform (recommended)
- In Aida Platform, open your site → Controllers (or Controllers with the site selected).
- Choose Provision install.
- Copy the install code and the suggested install command (single use; expires).
- On the appliance host, run the command as root.
Example:
curl -fsSL https://aida-platform.com/controller/install.sh | sudo bash -s -- \
--install-code=YOUR_CODE
What the one-time code does
--install-code redeems against the Platform API (not the SPA hostname) and:
- Registers the controller to the site that issued the code
- Delivers fleet IoT certificates into the install tree
- Writes ECR credentials (
.ecr-aws.env) so images can be pulled - Seeds the controller / contract id used by Platform and licensing
Optional:
# Explicit API host (defaults to https://api.aida-platform.com with OTC)
sudo bash install.sh --install-code=YOUR_CODE \
--platform-url=https://api.aida-platform.com
# Staging cloud profile + staging API host default
curl -fsSL https://staging.aida-platform.com/controller/install.sh | sudo bash -s -- \
--staging --install-code=YOUR_CODE
Reinstall while keeping the same identity
To reinstall on the same or a replacement host without creating a new Platform controller identity, pass the existing contract / controller UUID:
sudo bash install.sh --install-code=YOUR_CODE \
--id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
--id wins over any id already in .env or .aida/controller_id.
Without --id, a reinstall reuses an existing on-disk id when one is present.
You can also reinstall with only --id when IoT/ECR material is already on disk (or supplied another way); prefer OTC when you need fresh certs or ECR env from Platform.
Version pinning
There is no --version flag. Pin image tags with environment variables (written into .env on each install run):
| Variable | Default | Meaning |
|---|---|---|
RELEASE_TAG | latest | App stack images |
HOST_CONTROLLER_TAG | latest | Host-controller image |
curl -fsSL https://aida-platform.com/controller/install.sh | sudo env \
RELEASE_TAG=2.10.0 \
HOST_CONTROLLER_TAG=2.10.0 \
bash -s -- --install-code=YOUR_CODE
Use the same tags on both nodes of an HA pair.
Other useful options
| Flag / env | Purpose |
|---|---|
--staging / AIDA_STAGING | Staging MQTT / tunnel / platform profile |
--platform-url / AIDA_PLATFORM_URL | Platform API base for OTC redeem |
AIDA_INSTALL_DIR | Install root (default /opt/aida-controller) |
AIDA_SKIP_DOCKER_INSTALL=1 | Fail if Docker missing instead of auto-installing |
--secondary + --primary + --token | Join as HA standby — see HA redundancy |
After install
Under the install directory (default /opt/aida-controller):
| Script | Purpose |
|---|---|
start.sh | Start host-controller and reconcile the stack |
stop.sh | Stop app containers (host-controller may remain) |
uninstall.sh | Remove stack; optional --purge-volumes deletes DB/Redis data |
Open the controller UI at the host’s LAN address (HTTP/HTTPS as configured). Confirm the unit appears under the Platform site, then apply a license if it is not already entitled.