A complete solution for installing Mattermost: Introducing Mattermost Omnibus
Tags: opensource, mattermost, devops, selfhosted
Published: 2020-09-01 16:32:13

---
title: A complete solution for installing Mattermost: Introducing Mattermost Omnibus
published: true
description: 
tags: opensource, mattermost, devops, selfhosted
//cover_image: https://direct_url_to_image.jpg
---

Some time ago, a group of Mattermost contributors sat down to think about how to improve the installation and maintenance flow of the platform. Managing a Mattermost install is quite straightforward already thanks to its binary distribution, but you still need to install and manage the different components that surround the application itself: the database, the web proxy, and the SSL certificate.

Inspired by the [Gitlab Omnibus](https://docs.gitlab.com/omnibus/) package distribution, we decided to create a proof of concept following a similar approach: a package that would be easy to install and that will configure everything you need automatically. The goal was to demo a complete install in our R&D meeting, from an empty Ubuntu server to a fully working Mattermost platform. 

The challenge? R&D demos are limited to three minutes, so we would have to squeeze the whole process into that timeframe.

Mattermost Omnibus works based on two principles: It’s a Debian package that leverages the `apt` package manager to install and keep the components of the platform updated, and it uses a custom CLI and [Ansible](https://www.ansible.com/) recipes to link those components together and configure them. Currently, it supports Ubuntu’s `bionic` and `focal` distributions, but we’re planning to extend it support to RedHat/CentOS distributions as well.

The install process has only three steps: First, we need to get an empty Ubuntu server to install Omnibus in and a domain name pointing to that server. Then, we need to run this cURL command to configure the Omnibus repositories:

```sh
curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash
```

And then, we just need to install the Omnibus package itself:

```sh
sudo apt install mattermost-omnibus
```

This will install and configure a `PostgreSQL` database, a `nginx` web server to act as a proxy, and `certbot` to issue and renew the SSL certificate. To be able to issue that certificate, the installer will request a domain name and an email address from us, and it will use them to generate the certificate and deliver any related communications respectively.

![Installer screen that asks the user to introduce a domain name for Omnibus](https://dev-to-uploads.s3.amazonaws.com/i/p1f2yrtbjey9idthak8b.png)

After all the packages are installed, Omnibus will run the Ansible scripts that configure all the platform components and will start the server. We just need to open our browser, navigate to our domain, and create the System Admin user to start using the platform.

And that’s how simple installing a Mattermost server is with Omnibus. Thanks to its integration with the OS’s package manager, updating it is easy as well; when a new version is released, you just need to run

```sh
sudo apt update && sudo apt upgrade
```

to download and update your Mattermost platform. 

In future posts, we will cover things like the `mmomni` CLI tool that manages the configuration of the platform, and we will take a look at how we designed the package itself and the decisions we made along the way.

As for that demo I mentioned earlier? Well, let’s say that the first attempt wasn’t perfect, but good enough to prove Omnibus’s simplicity and potential. Some iterations later, it is now ready to be released in Beta, so please take it for a spin. All you need is an empty Ubuntu server with a domain name pointing at it and three minutes of your time.

If you decide to try it and have any feedback, please let us know using [the Omnibus channel in the Mattermost Community Server](https://community.mattermost.com/core/channels/mattermost-omnibus). You can also find more about the installation process and how Omnibus works [in the documentation](https://docs.mattermost.com/install/mattermost-omnibus.html).