Matomo (Piwik) is a free/libre software project, and the source code is freely available on our Git repository.

It is not recommended to deploy Matomo in production directly from our Git repository for various reasons

To deploy and use Matomo the best practise and recommended way is to download the latest stable version.

It is not recommended to deploy Matomo in production directly from our Git repository for various reasons:
* The Matomo version from Git contains files that are only needed for development. Those files are not needed in production and could potentially cause harm, for example our test files.
* Some default settings are different which can cause Matomo to be slower. For example caches might be disabled by default.
* Deploying from Git into production can have serious security implications.

Setting up deploying from Git

In case you want to use the very latest bleeding edge Matomo nonetheless and understand the risks, you may use Matomo directly from our Git repository. To deploy Matomo from Git, run the following commands once:

cd path/to/piwik

# 1) Clone the Git repository 
git clone https://github.com/piwik/piwik.git .

# 2) Optional step when you want to deploy a particular stable release (eg. 2.15.0) and not use bleeding edge
git checkout 2.16.3
git submodule update --init --recursive

# 3) Setup composer libraries
curl -sS https://getcomposer.org/installer | php 
php composer.phar install --no-dev

# 4) Now install Matomo via the web interface: https://matomo.org/docs/installation/ 

# 5) Disable Matomo development mode
./console development:disable

Faster cloning

The Matomo repository is using Git LFS for all screenshots it contains for visual regression testing. This may cause the git clone to take a long time. If you are not using Matomo for development you can improve the time to clone the repository by setting an option to disable Git LFS:

git clone --config filter.lfs.smudge=true https://github.com/piwik/piwik.git

Deploying new versions from Git

Continuously deploying the bleeding edge code

To automatically deploy the latest bleeding edge code from our repository, setup a crontab or automated script with the following commands:

cd path/to/piwik

# Checkout piwik.js in case it was changed
git checkout -- piwik.js

# Pull the latest code from Matomo repositories
php console git:pull

# Upgrade the libraries in case there is any to be upgraded
php composer.phar self-update > /dev/null
php composer.phar install --no-dev > /dev/null

# Run the upgrade in case there was one
php console core:update --yes > /dev/null

# Re-generate the piwik.js 
php console custom-piwik-js:update > /dev/null

(Note: we do not recommend to do this on production server, as the latest code from Git may be unstable at times and could cause data loss.)

Deploying a specific release

Alternatively, to deploy a particular Matomo release (in this example 3.0.0), run the following commands:

cd path/to/piwik
git checkout 3.0.0
git submodule update --init --recursive
php composer.phar install --no-dev

Deploying Matomo in production correctly

When it is time to deploy To deploy Matomo in your production environment, download the latest stable version and install Matomo on your server (do not deploy from any Git repository in production!).