# System Requirements for Snipe-IT: Complete Hardware and Software Specifications

> Discover the system requirements for Snipe-IT. Learn the necessary PHP, MySQL, Apache or Nginx versions to successfully deploy this asset management platform.

- Repository: [Grokability, Inc./snipe-it](https://github.com/grokability/snipe-it)
- Tags: getting-started
- Published: 2026-07-31

---

**Snipe-IT requires PHP 8.2 or higher, MySQL 8.0+ or MariaDB 10.5+, and Apache 2.4+ (with mod_rewrite) or Nginx 1.14+ to run the Laravel 12-based asset management platform.**

Snipe-IT is an open-source IT asset management system built on Laravel 12. Understanding the system requirements for Snipe-IT is essential before installation to ensure compatibility, security, and optimal performance in production environments.

## PHP Version and Extensions

The application mandates **PHP 8.2 or higher**, enforced through the [`composer.json`](https://github.com/grokability/snipe-it/blob/main/composer.json) file which declares the constraint `"php": ">=8.2"`. The bundled [`upgrade.php`](https://github.com/grokability/snipe-it/blob/main/upgrade.php) script explicitly checks for this version and will terminate execution if the environment runs an older release.

### Required PHP Extensions

Snipe-IT requires the following PHP extensions to be installed and enabled:

- **mbstring** – for multibyte string handling
- **openssl** – for encryption and security functions
- **pdo** – for database connectivity
- **tokenizer** – for Laravel's code generation
- **xml** – for XML parsing
- **ctype** – for character type checking
- **json** – for JSON encoding/decoding
- **bcmath** – for arbitrary precision mathematics
- **fileinfo** – for file type detection

As implemented in [`upgrade.php`](https://github.com/grokability/snipe-it/blob/main/upgrade.php) (lines 121-125), the installation process validates these extensions before proceeding. Missing any of these will prevent the application from running.

### Recommended Extensions

For optimal functionality, you should also install:

- **gd** or **imagick** – for image processing and barcode generation
- **zip** – for archive handling during imports/exports
- **intl** – for internationalization and localization features

## Database Requirements

Snipe-IT supports **MySQL 8.0+** or **MariaDB 10.5+**. The database must meet the following specifications:

- **Storage engine**: InnoDB (required for foreign key constraints)
- **Character set**: UTF-8 encoding (utf8mb4)
- **Memory**: Minimum 2 GB RAM allocated for production workloads
- **Connection**: PDO MySQL driver enabled in PHP

The [`snipeit.sh`](https://github.com/grokability/snipe-it/blob/main/snipeit.sh) installation helper script automates the configuration of these database requirements, ensuring proper InnoDB support and character encoding during setup.

## Web Server Configuration

You can run Snipe-IT on either **Apache 2.4+** or **Nginx 1.14+**.

For **Apache**, you must enable `mod_rewrite` to support Laravel's URL rewriting:

```bash
sudo a2enmod rewrite
sudo systemctl restart apache2

```

For **Nginx**, configure the server block to point to the `public/` directory and handle Laravel's front controller pattern.

## Optional Dependencies

While not required for core functionality, these tools enhance the deployment process:

**Node.js ≥ 16** – Required only if compiling front-end assets locally using Laravel Mix:

```bash

# Install Node.js 18.x (recommended)

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
npm install
npm run prod

```

**Composer** – Essential for PHP dependency management. The installation process uses Composer to install Laravel and third-party packages defined in [`composer.json`](https://github.com/grokability/snipe-it/blob/main/composer.json).

## Verifying Your Environment

Before installing Snipe-IT, verify your server meets the minimum requirements using these checks:

```php
// Check PHP version and required extensions
if (version_compare(PHP_VERSION, '8.2.0', '<')) {
    exit('Error: PHP 8.2 or higher is required.');
}

$required = ['mbstring','openssl','pdo','tokenizer','xml','ctype','json','bcmath','fileinfo'];
foreach ($required as $ext) {
    if (!extension_loaded($ext)) {
        exit("Error: PHP extension $ext is missing.");
    }
}

```

Verify your database version:

```bash
mysql -u root -p -e "SELECT VERSION();"

# Expect 8.0.x for MySQL or 10.5.x for MariaDB

```

## Automated Installation Checks

The [`upgrade.php`](https://github.com/grokability/snipe-it/blob/main/upgrade.php) script in the repository root performs comprehensive environment validation. According to the source code in `grokability/snipe-it`, this script checks PHP version compatibility and extension availability before allowing database migrations or updates to proceed.

The [`snipeit.sh`](https://github.com/grokability/snipe-it/blob/main/snipeit.sh) helper script further automates environment preparation by installing Apache, PHP, MariaDB, and all required PHP extensions on supported Linux distributions.

## Summary

- **PHP**: Version 8.2+ with mbstring, openssl, pdo, tokenizer, xml, ctype, json, bcmath, and fileinfo extensions
- **Database**: MySQL 8.0+ or MariaDB 10.5+ with InnoDB support and 2 GB RAM minimum
- **Web Server**: Apache 2.4+ (with mod_rewrite) or Nginx 1.14+
- **Tools**: Composer (required), Node.js ≥ 16 (optional for asset compilation)
- **Validation**: Use [`upgrade.php`](https://github.com/grokability/snipe-it/blob/main/upgrade.php) to verify requirements before installation

## Frequently Asked Questions

### Does Snipe-IT work with PHP 8.1 or older versions?

No. According to the [`composer.json`](https://github.com/grokability/snipe-it/blob/main/composer.json) in the `grokability/snipe-it` repository, the framework requires PHP 8.2 or higher. The [`upgrade.php`](https://github.com/grokability/snipe-it/blob/main/upgrade.php) script enforces this minimum version and will block installation on older PHP releases.

### Can I use PostgreSQL instead of MySQL/MariaDB?

No. Snipe-IT requires either MySQL 8.0+ or MariaDB 10.5+ with InnoDB support. The database configuration and migrations are specifically designed for these MySQL-compatible engines.

### Is Node.js required for production deployments?

No. Node.js is only necessary if you plan to modify and recompile front-end assets using Laravel Mix. Production instances can run without Node.js installed, using the pre-compiled assets included in the repository.

### How much RAM does Snipe-IT require?

The database server requires a minimum of 2 GB RAM for production workloads. The web server running PHP needs sufficient memory to handle concurrent requests, typically 512 MB to 1 GB depending on your asset volume and user count.