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

# Virtual Machine

> Deploy Noxus on a VM with Docker Compose, systemd, and supervisord

Noxus provides a robust, single-node deployment path using Docker Compose, managed by a system service for high availability and health monitoring.

## System Architecture

The VM deployment is built on three core layers:

1. **systemd**: A `systemctl` service manages the overall lifecycle of the Noxus stack.
2. **Docker Compose**: Orchestrates the containerized services (Frontend, Backend, Workers, etc.).
3. **supervisord**: Manages process-level execution, health checks, and automatic restarts within the environment.

## Hardware Guidelines

For a production-grade VM deployment, we recommend the following minimum specifications:

| Resource    | Recommended | Minimum     |
| :---------- | :---------- | :---------- |
| **vCPU**    | 8 vCPU      | 4 vCPU      |
| **RAM**     | 32 GiB      | 16 GiB      |
| **Storage** | 500 GiB SSD | 250 GiB SSD |

<Note>
  All dependencies are either included in the pre-built image or automatically downloaded and installed during the setup process.
</Note>

***

## Deployment Modes

You can deploy Noxus on a VM using two primary methods, both supported by our [noxus-infra](https://github.com/noxus-ai/noxus-infra) repository.

<Tabs>
  <Tab title="Noxus Installer (Recommended)">
    The easiest way to get started. Use the interactive shell script to provision your host and install all components.

    1. Clone the `noxus-infra` repository.
    2. Run the installer: `bash install.sh`.
    3. Follow the terminal wizard instructions to configure your environment.
  </Tab>

  <Tab title="Pre-built Image">
    Boot a VM using a pre-configured Noxus image provided by our team.

    1. Boot the VM image.
    2. Configure your environment variables in `/env.vm` (refer to the `noxus-infra` examples).
    3. Restart the system service: `systemctl restart noxus`.
  </Tab>
</Tabs>

***

## Component Configuration

### Optional Services

The VM stack is modular. You can choose to run the following services within the VM or connect to external managed instances:

* **PostgreSQL**: Optional (can use external RDS/Cloud SQL).
* **Redis**: Optional (can use external Elasticache/MemoryStore).
* **Nginx**: Optional, but **ideally runs directly on the host** for simplicity and better performance as a reverse proxy.

### Security Warning

<Warning>
  **Do not expose Redis to the outside world.** If you are running Redis inside the VM, ensure it is only accessible via the local bridge network or bound to `127.0.0.1`. Exposing Redis ports (default `6379`) to the public internet is a significant security risk.
</Warning>

## Operations & Maintenance

* **Service Management**: Use `systemctl status noxus` to check the health of the entire stack.
* **Logs**: Access service logs via `journalctl -u noxus` or through the Docker Compose logs.
* **Environment**: All core configuration is managed via the `/env.vm` file.

<CardGroup cols={2}>
  <Card title="Configuration Guide" icon="sliders" href="/deployment/configuration/environment">
    Detailed breakdown of environment variables and secrets.
  </Card>

  <Card title="noxus-infra Repo" icon="github" href="https://github.com/noxus-ai/noxus-infra">
    Access deployment scripts and example configurations.
  </Card>
</CardGroup>
