Register Now


Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Snipe-IT installation on Ubuntu Server

Snipe-IT installation on Ubuntu Server

This post is refined version of original LinkedIn post Snipe-IT Configuration On Ubuntu in which we installed step by step Snipe-IT on Ubuntu Server. You would be able to copy all the commands much easier through this post.

Last updated on 23rd of Feb 2021

Requirements for this guide to follow

  1. Ubuntu server up and running
  2. Static IP assigned to the server
  3. Internet connectivity
  4. Logged in with user account created during Ubuntu server installation or Root user (logging in as root not recommended)

1. Connect to Ubuntu server

Highly recommend to use a SSH client for connectivity and it will make easy to copy/paste commands as compare to directly interacting with your Ubuntu server console.
I will be using Putty as SSH client. Here is the direct link to download Putty or you could use your preferred SSH client.

OpenSSH server status/installation

  • OpenSSH is already installed. You can check SSH server status
sudo service ssh status

  • If Open SSH server is not installed, you can install it by using the following commands:
sudo apt install OpenSSH-Server
  • Verify Open SSH server status
sudo service ssh status

  • Open SSH server’s configuration file is located here, file name is sshd_config. Open SSH should work out of the box, however, you can edit it if needed with your preferred choice of editor
cd /etc/ssh

2. Update/Upgrade installed packages

Update and upgrade installed packages on Ubuntu server. You will need to run this command as sudo and enter ‘y’ when prompted to confirm.

sudo apt update && sudo apt upgrade

3. Install Apache, MySQL and PHP

You can use a repository like tasksel to install LAMP server components. Otherwise, you can install individual components.
Install Apache, MySQL and PHP using tasksel

sudo apt install tasksel
sudo tasksel install lamp-server

Check versions

  • MySQL server version
    sudo mysql -V
  • Apache version
    sudo apache2 -V
  • PHP Version
    sudo php --version

 Test Installation

  • Apache: Browse to IP address of your server and you should see Apache generic web page

  • MySQL: Run the following command to see the status of MySQL Server
    sudo service mysql status
  • PHP: Create a simple PHP page and browse to IP_Address/phpinfo.php
    sudo bash -c "echo -e '<?php\nphpinfo();\n?>' > /var/www/html/phpinfo.php" 

4. Download Snipe-IT

Clone recent version of Snipe-IT from GIT into a local folder snipeit.

  • Working directory is /var/www
    cd /var/www/
  • Clone Snipe-IT to local folder snipeit
    sudo git clone snipeit
  • Make a copy of .env environmental file
    cd /var/www/snipeit
    sudo cp .env.example .env
  • If you like, you can have a quick look inside the .env file with nano editor. We will come back to this file later on. Don’t make any changes to the file and use Ctrl + X to exit
    sudo nano .env

5. Configure MySQL Server

Run MySQL secure installation command line wizard and secure the installation.

sudo mysql_secure_installation
  • yes or no, if you would like to install Validate Password Plugin (I selected no for this in my lab environment)
  • The next part offers you to change the password for the root of MySQL and enter password twice
  • The next option to remove anonymous users, I will choose Yes 
  • The next option to stop root login remotely, I would go for no 
  • Reload privileges table: Yes 
  • You will see, “All done”, once it is all done 

6. Create an initial database and a user

In this step, we will create database, user and grant specific privileges to new user.

  • Login to MySQL server, provide password for MySQL root user when it prompts
    sudo mysql -u root -p
  • Create new database snipeit
    CREATE DATABASE snipeit;
  • Create new user mysqlclient
    CREATE USER 'mysqlsnipeit'@'localhost' IDENTIFIED BY 'snipeit'; 
  • Grant permissions to mysqlsnipeit on database snipeit
    GRANT ALL PRIVILEGES ON snipeit.* TO 'mysqlsnipeit'@'localhost';
  • Verify permissions
    Show GRANTS FOR 'mysqlsnipeit'@'localhost'; 

  • Flush privileges
    flush privileges;
  • Quit
  • Restart MySQL service
    sudo service mysql restart
  • Check MySQL service status
    sudo service mysql status

7. Update .env file

Let’s update .env file with the required information. 

cd /var/www/snipeit
sudo nano .env

Update the following:

  • App_URL
  • DB_Database
  • DB_USername
  • DB_Password

8. Update folder permissions

Update folder permissions in the Snipe-IT root directory

  • Working directory is /var/www/snipeit
    cd /var/www/snipeit
  • Update permissions
    sudo chown -R www-data:www-data storage public/uploads 
    sudo chmod -R 755 storage
    sudo chmod -R 755 public/uploads

9. Download Composer

Working directory is logged in user’s home directory. In my case it is /home/snipeit

sudo curl -sS | php
sudo mv composer.phar /usr/local/bin/composer

10. Install PHP dependencies

There are a number of PHP dependencies, ensure these all are successfully installed. 
Working directory: Home directory of logged in user 

sudo add-apt-repository universe
sudo apt-get install -y git unzip php php-curl php-mysql php-gd php-ldap php-zip php-mbstring php-xml php-bcmath php-tokenizer

11. Install Composer

Working directory: /var/www/snipeit

cd /var/www/snipeit
sudo composer install --no-dev --prefer-source

12. Generate App Key for .env file

Run the following command and enter yes when prompted

sudo php artisan key:generate

Verify the key generation

Open .env file and check APP_KEY value

sudo nano .env

13. Create a new site for Snipe-IT

In this step, we will create a new site for Snipe-IT, copy default site and remove it as well. Also, we will restart the relevant services.

  • Create new site with name, you can update this name if you like to something else
    sudo nano /etc/apache2/sites-available/
  • Add site content as follows, update Directory if you download Snipe-IT in a different folder and Server Name to your Ubuntu Server’s IP address
    <VirtualHost *:80>
    ServerAdmin webmaster@localhost
    <Directory /var/www/snipeit/public>
           Require all granted
           AllowOverride All
       DocumentRoot /var/www/snipeit/public
      #Redirect permanent /
           ErrorLog /var/log/apache2/snipeIT.error.log
           CustomLog /var/log/apache2/access.log combined
  • Enable new site
    sudo a2ensite
    sudo a2enmod rewrite
  • Restart Apache
    sudo service apache2 restart
  • Disable default site
    sudo a2dissite 000-default.conf
  • Reload Apache service
    sudo service apache2 reload
  • Copy default site and remove it
    cd /etc/apache2/sites-available
    sudo cp 000-default.conf 000-default.confTEMP
    sudo rm 000-default.conf
  • Reset associations
    sudo phpenmod mbstring
    sudo a2enmod rewrite
    service apache2 restart

14. Snipe-IT pre-flight setup

Browse to IP address of your Ubuntu server and you should see the pre-flight page. Follow the prompts and you are done!!

Your feedback is important for us and other users. Leave it in the comments how did you go with your setup 🙂

About Jay Singh

Follow Me
Notify of
Newest Most Voted
Inline Feedbacks
View all comments
Todd Avery
Todd Avery
1 year ago

This is a great outline. Do you have a how to for upgrading to the newest version if you already have it going with these instructions? Snipe-IT released their new version this past week.

1 year ago

great guide worked perfectly, thank you

1 year ago

great article, most of the installation guide has some missing points, I tried for 2 days, finally I found myself in your article, now everything working except then date settings. I configured date in env file and also php.ini file. Even that still I see wrong date in Localization menu, time is correct but date is wrong and not changing. Always 2020-11-25. How can I fix this?

1 year ago
Reply to  Jay Singh

Also if possible, could you clarify smtp settings, I tried almost all the options which adviced online articles, no luck. I use smtp settings for our exchange server 2016

9 months ago

Thanks for your great article.
After all of these steps, when i want to start setup it show me this error
Database D’oh! Looks like we can’t connect to your database. Please update your database settings in your .env file. Your database says: SQLSTATE[HY000] [2002] Connection refused (SQL: select 2 + 2)

How to fix this issue?

8 months ago

Really appreciate this outline. I was wondering if you could provide the command that will take down the test PHP page created by the “sudo bash -c “echo -e ‘<?phpnphpinfo();n?>’ > /var/www/html/phpinfo.php” command that you provide during the testing phase. It is helpful for testing, but certainly would be nice to take down once it has served its purpose. Thanks!

Would love your thoughts, please comment.x