How to install Snipe-IT on Ubuntu on AWS Free Tier

To install Snipe-IT on Ubuntu on an AWS Free Tier EC2 instance, set up Apache, MySQL and PHP 8.2 or newer, clone Snipe-IT from GitHub into /var/www/snipeit, create a database, fill in .env, run composer install --no-dev --prefer-source and php artisan key:generate, then point an Apache virtual host at the public folder.

AWS changed its Free Tier on July 15, 2025. New accounts get USD $100 in credits, plus up to $100 more, on a free plan that ends after 6 months or when the credits run out. Free tier eligible instance types now include t3.micro and t3.small. Accounts created before that date keep the old 12-month Free Tier with t2.micro or t3.micro.

Short version

Terminalbash
sudo apt install -y apache2 mysql-server libapache2-mod-php composer git unzip php php-bcmath php-curl php-gd php-ldap php-mbstring php-mysql php-xml php-zip
cd /var/www && sudo git clone https://github.com/grokability/snipe-it snipeit
cd snipeit && sudo cp .env.example .env   # then set APP_URL, APP_TIMEZONE and DB_* in .env
sudo chown -R www-data:www-data storage public/uploads bootstrap/cache
sudo composer install --no-dev --prefer-source
sudo php artisan key:generate

After struggling through at least 5 or 6 incomplete “tutorials” on how to install Snipe-IT on Ubuntu, I gave up and scrapped the official documentation for you, bringing together the most complete Snipe-IT tutorial out there.

Alright, without further ado, let’s get to work.

Table of Contents

Step 1 - Install LAMP

First, we need to install LAMP, that is, Linux, Apache2, MySQL, and PHP.

Go ahead and install LAMP following my guide. Use a current Ubuntu LTS release: Ubuntu 24.04 LTS ships PHP 8.3, and Snipe-IT needs PHP 8.2 or newer (below 8.6). Ubuntu 22.04 ships PHP 8.1, which is too old for current Snipe-IT releases.

Make sure to write down your MySQL root credentials while running through the MySQL installation.

Step 2 - Updating Ubuntu and installing prerequisites

We start with assuming you have a freshly installed Ubuntu Server in front of you or you followed the video above and created a fresh Ubuntu instance on AWS EC2.

Updates first:

Terminalbash
sudo apt-get update
sudo apt-get upgrade -y

Then we are going to log in with root by typing:

Snippettext
sudo -i

Next, we are going to download the composer:

Terminalbash
curl -sS https://getcomposer.org/installer | php
SnipeIT Ubuntu 16.04
Downloading Composer

Then we are going to move the composer to another folder:

Terminalbash
mv composer.phar /usr/local/bin/composer
cd /var/www/

Alright, time to download snipe-it:

Terminalbash
git clone https://github.com/grokability/snipe-it snipeit
cd snipeit/

Finally, we replace .env.example with .env:

Terminalbash
cp .env.example .env

More on that later.

Step 3 - Configuring the MySQL Database

Time to create our MySQL Database:

Terminalbash
mysql -u root -p

Now you need to run a couple of commands, make sure to use the EXACT commands like in the box below, replace “your username” and “yourpw” with your own username and password:

Snippettext
    mysql> create database snipeit;
    mysql> CREATE USER 'yourusername'@'localhost' IDENTIFIED BY 'yourpw';
    mysql> GRANT ALL PRIVILEGES ON snipeit.* TO 'yourusername'@'localhost';
    mysql> flush privileges;
    mysql> exit
SnipeIT Ubuntu 16.04
Configuring MySQL

Of course, remember your credentials.

Step 4 - Editing the .env file

Now we are going to edit the .env config file.

Terminalbash
nano .env

You need to adjust the values according to your server and the database we created earlier. Remember to enter your username and password that you set in step 3.

The values you need to set are APP_URL (the full address you use to open Snipe-IT, including http://, without a trailing slash), APP_TIMEZONE (for example 'Europe/Vienna'), DB_HOST (usually localhost), DB_DATABASE, DB_USERNAME and DB_PASSWORD. Use only the username for DB_USERNAME, without @localhost.

Don’t worry about the APP_KEY either, we are going to generate that later.

Nano editing the Snipe-IT .env file with app URL and database settings marked

Hit CTRL+O to write and CTRL+X to exit.

Step 5 - Adjusting permissions

Now we got to adjust a couple of permissions:

Terminalbash
chown -R www-data:www-data storage public/uploads bootstrap/cache
chmod -R 775 storage
chmod -R 775 public/uploads
chmod -R 775 bootstrap/cache

The web server writes caches, logs and uploaded files to these three folders.

Step 6 - Installing PHP dependencies

Installing PHP dependencies:

Terminalbash
apt-get install -y git unzip php php-bcmath php-curl php-mysql php-gd php-ldap php-zip php-mbstring php-xml
php -v
php -m

php -v must show PHP 8.2 or newer. Compare the php -m list with the extensions on the Snipe-IT requirements page. Current Snipe-IT no longer needs mcrypt.

Step 7 - Installing Composer & generating our App Key

Installing Composer, go get yourself a nice cup of coffee as this will take a while.

Terminalbash
composer install --no-dev --prefer-source

And generating our APP Key:

Terminalbash
php artisan key:generate

Type yes when you get asked if you really want to run that command. Copy the Key and save it somewhere safe: Snipe-IT uses it to encrypt stored data. The Key will automatically get pasted into your .env file.

Install snipeit ubuntu 16.04
Generating the APP_KEY

Step 8 - Editing configuration files and wrapping up

Almost done guys, hold tight.

Now we are going to enable our Virtual Host:

Terminalbash
sudo nano /etc/apache2/sites-available/snipeit.example.com.conf

And paste the text into the box below:

Snippettext
<VirtualHost *:80>
ServerAdmin webmaster@localhost
<Directory /var/www/snipeit/public>
        Require all granted
        AllowOverride All
   </Directory>
    DocumentRoot /var/www/snipeit/public
    ServerName YOURSERVERIP
   #Redirect permanent / https://snipeit.your-server-fqdn.com/
        ErrorLog /var/log/apache2/snipeIT.error.log
        CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Make sure to replace YOURSERVERIP with, well, your server IP.

Nano editing the Apache VirtualHost file with the ServerName set to the server IP

Press CTRL+O to save and CTRL+X to exit.

Now we are going to run a couple apache commands:

Terminalbash
sudo a2ensite snipeit.example.com.conf
sudo a2enmod rewrite
sudo systemctl restart apache2

And we are going to disable the default.conf

Snippettext
sudo a2dissite 000-default.conf
sudo service apache2 restart

Change directory

Terminalbash
cd /etc/apache2/sites-available

And we are going to rename the default.conf to keep it as a backup:

Terminalbash
sudo cp 000-default.conf 000-default.confTEMP

And finally, remove it:

Terminalbash
sudo rm 000-default.conf

Already and finally wrapping it up with:

Snippettext
sudo phpenmod mbstring
sudo a2enmod rewrite
sudo service apache2 restart

Step 9 - Setup with the Web Browser

Now you are as good as done. Open a Web Browser and enter your server IP. You should end up here:

Snipe-IT Pre-Flight configuration check with Next: Create Database Tables button highlighted

Ignore the File Owner warning, this seems to be a bug and will probably be fixed in an update. Click on Next: Create Database Tables.

You will likely get an error:

Browser error page reading Whoops, looks like something went wrong

Don’t panic; just refresh the page by hitting F5.

Click on Next: Create User

Finalize everything to your liking, click F5 if you get the error again.

Snipe-IT Pre-Flight Create a User form for the admin account

FAQ

Why do I get a 500 Server Error after installing Snipe-IT?

Check /var/log/apache2/snipeIT.error.log and storage/logs/laravel.log first. The most common causes are a PHP version below 8.2, for example the PHP 8.1 that Ubuntu 22.04 ships, wrong DB_* values in .env, or missing write permissions on storage, public/uploads and bootstrap/cache. A PHP Parse error: syntax error, unexpected '?' in the log also means your PHP version is too old.

Which PHP version does Snipe-IT need?

Current Snipe-IT releases (v8.8 as of November 2026) need PHP 8.2 or newer and below 8.6. Ubuntu 24.04 LTS ships PHP 8.3 and Ubuntu 26.04 LTS ships PHP 8.5, so both work with the default packages. You also need extensions such as BCMath, cURL, LDAP, Mbstring, MySQLi, XML, Zip and GD.

Is Snipe-IT free to run on AWS Free Tier?

Snipe-IT itself is free and open source. On AWS accounts created on or after July 15, 2025, the free plan gives you USD $100 in credits, with up to $100 more, for 6 months or until the credits run out. Pick a free tier eligible instance type such as t3.micro or t3.small and check the Billing console so you know when the plan ends.

Why does the browser show “The connection was reset” or nothing at all?

Your EC2 security group probably doesn’t allow web traffic. Add an inbound rule for HTTP on port 80 (and HTTPS on 443 if you set up TLS) to the security group of your instance. Then check that Apache is running with sudo systemctl status apache2.

And congratulations, you are now running a powerful, completely free cloud-based instance of the Snipe IT Asset Management Software on your free tier Amazon EC2 instance.

whoami

Stefan founded Ceos3c in 2016 and has spent a decade teaching cybersecurity, Linux, and web development through hands-on tutorials. He builds and ships real products while sharing his journey: ProofSwap.me, XPMetric.com, and EasyEarningsTracker.com.

More about me

7 thoughts on “How to install Snipe-IT on Ubuntu on AWS Free Tier”

  1. After completing all of the steps, I am getting 500 | SERVER ERROR page when i access the IP of my ec2 instance. I am using ubuntu 22.04 LTE with php 8.1.2. Can you help?

  2. Hi,
    Getting this error in snipeIT.error.log . any idea?

    PHP Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE) in /var/www/snipeit/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php on line 24

  3. after go throw with all steps, when try to open url using my public ip „The connection was reset“ i can’t open it , no page appears ? so please advice

  4. Actually never mind I figured it out. Small mistake, I didn't put the full username with @localhost for the database credentials ha

  5. Hey ceos3c,
    Great guides, love them so far. But currently I’m running into an issue at about step 9. I follow everything precisely with a fresh 16.04 linux install, up to here. But when I attempt to start up the web page with my ip address, instead of sending me to the pre-flight checkoff page, it sends me to the, „Whoops, looks like something went wrong“ page. Any suggestions?

Comments are closed. I keep the discussion here because the answers still help.