> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interaone.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy to AWS

> Deploy InteraOne's Compose stack to an EC2 instance with DNS, security groups, persistent storage, and backups.

The simplest AWS deployment is one EC2 Linux instance running the production Compose stack. For higher availability, externalize MongoDB, Redis, object storage, and vector storage before adding stateless replicas.

<Steps>
  <Step title="Create the instance">
    Choose a current Ubuntu or Amazon Linux image, attach an encrypted volume sized for databases and uploads, require an SSH key, and enable detailed monitoring as needed.
  </Step>

  <Step title="Create a security group">
    Allow `80` and `443` publicly. Restrict `22` to trusted administrative sources. Do not allow MongoDB, Redis, MinIO, Qdrant, gateway, or console ports from the internet. AWS documents security groups as the instance's virtual firewall in its [EC2 guide](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html).
  </Step>

  <Step title="Assign DNS">
    Attach a stable public address if required and point the API, web, CDN, and logs records in Route 53 or your DNS provider.
  </Step>

  <Step title="Install and deploy">
    Install Docker/Compose, clone a release, complete `docker/.env`, validate the Compose model, and start the stack using the [installation guide](/self-hosting/installation).
  </Step>

  <Step title="Back up and monitor">
    Snapshot the host volume and take application-consistent MongoDB/object-storage backups. Send host/container metrics and logs to your approved monitoring destination.
  </Step>
</Steps>

<Tip>
  If you use SES for email, prefer an instance role or narrowly scoped workload credentials over long-lived access keys where the adapter/deployment supports the AWS credential chain.
</Tip>
