> ## 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.

# Production installation

> Install InteraOne on a Linux host with Docker Compose, DNS, production secrets, health checks, and a first-login test.

Use a supported 64-bit Linux host with Docker Engine, the Compose plugin, Git, DNS control, and enough memory/disk for five applications plus MongoDB, Redis, Qdrant, and MinIO.

<Steps>
  <Step title="Provision and secure the host">
    Create a non-root administrative user, use SSH keys, apply OS updates, enable a firewall, and allow inbound `80`/`443`. Restrict SSH to trusted sources when possible.
  </Step>

  <Step title="Clone a reviewed release">
    ```bash theme={null}
    git clone https://github.com/InteraOne/InteraOne.git
    cd InteraOne
    git checkout RELEASE_TAG
    ```

    Prefer a release tag or commit SHA over a moving branch.
  </Step>

  <Step title="Create production configuration">
    ```bash theme={null}
    cp docker/.env.example docker/.env
    ```

    Fill every credential, hostname, public URL, provider key, and shared secret. Review [environment variables](/self-hosting/environment-variables).
  </Step>

  <Step title="Create DNS records">
    Point the API, web, CDN, and log hostnames to the server. Restrict the log hostname through identity-aware access, VPN, or trusted IPs.
  </Step>

  <Step title="Validate and start">
    ```bash theme={null}
    docker compose --env-file docker/.env -f docker/docker-compose.yml config
    docker compose --env-file docker/.env -f docker/docker-compose.yml pull
    docker compose --env-file docker/.env -f docker/docker-compose.yml up -d
    ```
  </Step>

  <Step title="Verify">
    ```bash theme={null}
    docker compose --env-file docker/.env -f docker/docker-compose.yml ps
    curl https://YOUR_API_HOST/api/v1/health
    ```

    Open the web host, create the first account/organization, configure a model provider, add a small knowledge source, and test a widget conversation.
  </Step>
</Steps>

<Warning>
  Never commit `.env` files, provider keys, JWT secrets, database credentials, or
  `AI_TOOL_SECRET`. Use different credentials in every environment and keep
  MongoDB, Redis, Qdrant, and MinIO private behind the application network.
</Warning>

<Note>
  Size recommendations depend heavily on concurrent conversations, model hosting, crawl volume, and knowledge size. Start with observed load testing rather than a universal VM size.
</Note>
