Snipe-IT on Debian 12 (Nginx + PHP-FPM + MariaDB + SSL)

Snipe-IT is a free, open-source IT asset management system (ITAM) designed to help organizations keep track of hardware, software licenses, accessories, and users in a structured and auditable way. It provides a modern web interface built on Laravel (PHP framework) and offers features like check-in/check-out tracking, user assignment, depreciation management, and REST API integration.

Running Snipe-IT on Debian 12 (Bookworm) provides a stable, secure, and long-term supported base for enterprise asset management. With PHP 8.2, MariaDB 10.11, and Nginx, Debian 12 ensures excellent performance, security, and compatibility — making it a perfect choice for production environments requiring reliability and control.


Architecture Overview

LayerComponentRole
OSDebian 12 (Bookworm)Stable, long-term supported Linux base for production systems
Web ServerNginxHandles HTTP/HTTPS requests, compression, and caching
Backend RuntimePHP 8.2 + PHP-FPMExecutes Snipe-IT’s Laravel application code
DatabaseMariaDB 10.11 / MySQL 8Stores assets, users, and system configuration
App FrameworkLaravel (PHP)Provides routing, authentication, and ORM logic
TLSLet’s Encrypt / PKISecures the web interface and API access

Why Use Snipe-IT?

  • Centralized IT asset management – track everything from laptops to licenses.
  • Flexible role-based access control – assign permissions by team or department.
  • Audit trails and check-out history – maintain full accountability of all assets.
  • REST API – integrate Snipe-IT with ticketing systems or automation tools.
  • Free and open-source – deploy on your infrastructure without vendor lock-in.
  • Multi-language support – ideal for global or distributed teams.

Snipe-IT vs Other IT Asset Management Platforms

Feature/CapabilitySnipe-IT (Self-hosted)GLPI (Self-hosted)Odoo (IT Module)ManageEngine (Cloud)
HostingSelf-hostedSelf-hostedCloud/Self-hostedCloud only
CostFree, open-sourceFree, open-sourceSubscriptionSubscription
BackendPHP + MariaDBPHP + MySQLPython + PostgreSQLProprietary stack
REST API✅ Yes✅ Yes✅ Yes✅ Yes
CustomizationHighHighMediumLow

Snipe-IT excels in simplicity and control, providing all core ITAM features without the complexity or cost of commercial solutions.


Security & Best Practices

  • Deploy behind Nginx with HTTPS (Let’s Encrypt or PKI certificates).
  • Store database credentials and app keys in a secure .env file.
  • Limit MariaDB connections to localhost or private networks only.
  • Keep PHP, Composer, and Laravel dependencies updated regularly.
  • Use Debian’s UFW or nftables to allow only ports 80 and 443.
  • Configure automatic database backups and test restore procedures.
  • Use strong passwords and 2FA for admin accounts.
  • Harden file permissions under /var/www/snipe-it (only www-data should have write access).

Typical Use Cases

  • Corporate IT departments managing laptops, phones, and accessories.
  • Universities and schools tracking shared lab equipment.
  • MSPs and IT service providers managing multiple client inventories.
  • Startups and SMEs implementing organized asset management.
  • Nonprofits needing a transparent, free asset tracking system.

Deploying Snipe-IT on Debian 12 with Nginx, PHP-FPM, and MariaDB gives you a secure, efficient, and fully customizable IT asset management platform — ideal for organizations of all sizes looking for open-source transparency and reliability in asset tracking.


Step 1: Create a Cloud Instance on Shape.Host

Log in to your Shape.Host account.

Click Create → Instance.

Shape.host Resources dashboard with Create > Instance highlighted.

Choose a server location close to your users.

Shape.host instance form with the data center location selector highlighted.

Select a plan with at least 2 CPUs, 4 GB RAM, and 30 GB SSD.

Choose Debian 12 (64-bit) as the operating system.

Shape.host instance form with the operating system image selector highlighted.

Click Create Instance.

Shape.host instance form with the Create Instance button highlighted.

Copy your public IP address from the Resources section.

Shape.host Resources dashboard with the server IP address highlighted.

Step 2: Connect to the Server

Use SSH to access your instance:

ssh root@your_server_ip

Step 3: Update System Packages

Before installing any software, update your package list:

apt update
Terminal showing APT package management commands and output.

Step 4: Install Nginx, MariaDB, and PHP

Install the Nginx web server, MariaDB database server, and all required PHP extensions for Snipe-IT:

apt install nginx mariadb-server php-fpm php-bcmath php-common php-ctype php-curl php-fileinfo php-gd php-iconv php-intl php-mbstring php-mysql php-soap php-xml php-xsl php-zip git
Terminal showing PM2 application process management output.

Install Composer, the PHP dependency manager:

apt install composer
Terminal showing APT package management commands and output.

Step 5: Configure the Database

Access the MariaDB shell:

mysql

Create the Snipe-IT database and user:

CREATE DATABASE snipeit;
GRANT ALL ON snipeit.* TO 'snipeit'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
\q

⚠️ Replace 'password' with a strong password for security.

Terminal showing SQL database and user configuration commands.

Step 6: Download and Configure Snipe-IT

Move to the web directory:

cd /var/www/html

Clone the Snipe-IT repository:

git clone https://github.com/snipe/snipe-it
cd snipe-it
Terminal showing Git repository cloning output.

Copy the example environment file:

cp .env.example .env

Edit the configuration file:

nano .env

Update the following values:

APP_URL=http://snipeit.example.com
APP_TIMEZONE='UTC'

DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=password

Save and close (CTRL + O, ENTER, CTRL + X).

Terminal showing the GNU nano editor and configuration text.

Step 7: Set Permissions

Assign ownership and set proper permissions for the web directory:

chown -R www-data: /var/www/html/snipe-it
chmod -R 755 /var/www/html/snipe-it
Terminal showing file ownership or permission commands.

Step 8: Install PHP Dependencies

Run Composer to install the required Laravel dependencies:

composer update --no-plugins --no-scripts
composer install --no-dev --prefer-source --no-plugins --no-scripts
Terminal showing composer commands or output during Install PHP Dependencies.

Generate the Laravel application key:

php artisan key:generate

This creates a unique key required for encryption and security.

Terminal showing php commands or output during Install PHP Dependencies.

Step 9: Configure Nginx

Create a new Nginx virtual host configuration file:

nano /etc/nginx/conf.d/snipeit.conf

Paste the following configuration:

server {
    listen 80;
    server_name snipeit.example.com;
    root /var/www/html/snipe-it/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Replace snipeit.example.com with your real domain or server IP.

Save and exit the file.

Terminal showing the GNU nano editor and configuration text.

Step 10: Adjust Global Nginx Settings

Edit the main Nginx configuration file:

nano /etc/nginx/nginx.conf

Inside the http block, add the following line:

server_names_hash_bucket_size 64;

Save and exit the file.

Terminal showing the GNU nano editor and configuration text.

Test the configuration:

nginx -t

If you see syntax is ok, restart Nginx:

systemctl restart nginx
Terminal showing systemd service management commands or output.

Step 11: Access Snipe-IT Web Interface

Now open your browser and go to:

http://YOUR_SERVER_IP

or, if you’ve set up a domain:

http://snipeit.example.com

You’ll be greeted with the Snipe-IT installation wizard.
Follow the steps to configure the admin account, mail settings, and organization details.

Snipe-IT setup interface.

Ensure all required dependencies are installed, then click the Next: Create Database Table. You will see the following page.

Snipe-IT installer confirmation that database tables were created.

Define your site name, email, user, and password, then click Next: Save User. You will see the Snipe-IT dashboard.

Snipe-IT account creation form.
Snipe-IT dashboard.

Congratulations! You installed Snipe-IT on Debian 12 with Nginx, PHP 8.2, and MariaDB.
You can now manage all your company’s IT assets securely from a single web-based dashboard.

For reliable performance and uptime, host your Snipe-IT instance on a Shape.Host Cloud VPS — optimized for business applications with root access and SSD storage.