# Prerequisites

> Hardware, operating system, database and network requirements for a production self-hosted deployment.

> For the complete documentation index, see [llms.txt](https://helpdesk.orangescrum.com/llms.txt).

Source: https://helpdesk.orangescrum.com/guide/self-hosted/get-started/prerequisites

---
Sizing below is for a production deployment supporting **100 or more concurrent
users**. Smaller teams can scale down; larger or unusual workloads should be
sized with Orangescrum directly.

> **These are starting points, not hard limits**
>
> The figures come from typical processing and operational requirements. For
> tailored sizing, contact <a href="mailto:sales@orangescrum.com">sales@orangescrum.com</a>.

## Servers

A production install is **three roles**. They can be separate machines or
co-located on fewer, larger ones — but the database should not share a disk with
attachment storage.

### Application server

| Specification | Requirement |
| --- | --- |
| Instances | 1 |
| Load balancer | 1 — required for high availability |
| CPU | 8 cores minimum |
| RAM | 32 GB or more |
| App install directory | ~100 GB |
| File attachments | 1 TB or more |
| Application logs | 1 GB minimum |
| **Total disk** | **500 GB or more** |

### Database server

| Specification | Requirement |
| --- | --- |
| Instances | 1 |
| CPU | 8 cores minimum |
| RAM | 32 GB or more |
| **Total disk** | **1 TB or more** |

### Auxiliary server — Advanced Dashboard & Wiki

| Specification | Requirement |
| --- | --- |
| Instances | 1 |
| CPU | 8 cores minimum |
| RAM | 32 GB or more |
| **Total disk** | **500 GB or more** |

> **Attachment storage grows without bound**
>
> A NAS can be mounted to extend attachment capacity beyond the initial disk
> allocation. Plan for this before the disk fills rather than after — it is the
> volume that fills first on every long-running install.

## Operating system

| Operating system | Version | Status |
| --- | --- | --- |
| Red Hat Enterprise Linux | 9.6 | Fully supported |
| CentOS Stream | 9 | Fully supported |
| Ubuntu LTS | 22.04 | Fully supported |

## Database

PostgreSQL is the only supported database — there is no MySQL option.

| Component | Version | Notes |
| --- | --- | --- |
| PostgreSQL Server | 16.10 or above | Latest stable |
| EDB Postgres Advanced Server (EPAS) or Community Edition | 16.10 or above | Either is supported |
| pgAdmin | 8.x | Administration and monitoring |
| PostGIS extension | 3.4 | Only if you need geospatial data |
| `psql` CLI client | 16.x | Bundled with the server |
| `libpq` | 16.x | Client connection library |
| `pg_dump` / `pg_restore` | 16.x | Backup and restore |
| cURL | Latest stable | Extension installs and integrations |

> **Version guidance differs by deployment model**
>
> The current prerequisites specify **PostgreSQL 16.10+**. Older Enterprise
> documentation states a floor of PostgreSQL 12 for traditional installs. Deploy
> against 16.x unless Orangescrum support tells you otherwise for your licence
> and version — see [Deployment options](https://helpdesk.orangescrum.com/guide/self-hosted/install/deployment-options).

## Application runtime

Required for a **traditional** (non-container) install. The Docker deployment
bundles all of this in the image.

| Component | Requirement |
| --- | --- |
| PHP | 8.2 or higher |
| PHP extensions | `pdo_pgsql`, `mbstring`, `intl`, `openssl`, `tokenizer`, `json`, `xml`, `ctype`, `curl`, `gd`, `zip` |
| Web server | Apache or Nginx |
| Composer | Latest |

Verify before you start:

```bash
php -v
php -m | grep -E "pdo_pgsql|mbstring|intl|openssl|tokenizer|json|xml|ctype|curl|gd|zip"
psql --version
composer --version
```

For the container deployment you need Docker instead:

| Component | Minimum |
| --- | --- |
| Docker Engine | 24.x |
| Docker Compose plugin | 2.x |

```bash
docker --version
docker compose version
```

## Network and connectivity

| Requirement | Detail |
| --- | --- |
| **Internet access** | Required during initial setup to download packages and images |
| **Domain name** | A valid domain pointed at the server |
| **SSL certificate** | TLS recommended — Let's Encrypt or a commercial certificate |
| **Firewall** | Open 80 (HTTP) and 443 (HTTPS); restrict 5432 (PostgreSQL) to the internal network |
| **Outbound SMTP** | Required for notifications and user invitations |

> **Never expose PostgreSQL publicly**
>
> Port 5432 must be reachable only from the application server. An internet-facing
> database is the single most damaging misconfiguration on a self-hosted install.

## Licence

A valid Orangescrum Enterprise **licence email** is verified during installation
and the key is stored with your instance. Have it to hand before you begin — see
[Licence and versions](https://helpdesk.orangescrum.com/guide/self-hosted/admin/licence).

## Before you begin

**Decide the hostname**

    It goes into configuration and every generated email link. Changing it later
    means editing config and clearing caches.

**Have SMTP details ready**

    Host, port, username, password and from-address. SMTP is set during
    installation.

**Plan the backup target**

    Somewhere off this machine. See [Backup](https://helpdesk.orangescrum.com/guide/self-hosted/operate/backup).

**Confirm your licence and add-ons**

    Which optional modules are covered determines whether you need the auxiliary
    server.

- [Next: architecture](https://helpdesk.orangescrum.com/guide/self-hosted/get-started/architecture): What actually runs once it is deployed.
