Introduction
Mattermost is an open-source platform for team communication. This guide will walk you through installing Mattermost with Nginx as a reverse proxy and securing it with a free SSL certificate from Let’s Encrypt on Ubuntu 24.04.
Prerequisites
- A server running Ubuntu 24.04
- Root access or a user with
sudo
privileges - Domain name pointing to your server’s IP address
Step 1: Update the System
Start by updating your package list and upgrading your installed packages:
sudo apt update
sudo apt upgrade -y
Step 2: Install Required Dependencies
Install dependencies required for Mattermost and Nginx:
sudo apt install -y nginx postgresql postgresql-contrib
Step 3: Install Mattermost
Download the latest Mattermost server from the official website:
wget https://releases.mattermost.com/$(wget -qO- https://api.github.com/repos/mattermost/mattermost-server/releases/latest | grep tag_name | cut -d '"' -f 2)/mattermost-server-*.tar.gz
Extract Mattermost:
tar -xvzf mattermost-server-*.tar.gz
Move the Mattermost folder to the appropriate location:
sudo mv mattermost /opt/
Step 4: Configure PostgreSQL Database
Log into PostgreSQL and create a new database and user for Mattermost:
sudo -u postgres psql
Run the following commands in the PostgreSQL shell:
CREATE DATABASE mattermost_db;
CREATE USER mattermost_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE mattermost_db TO mattermost_user;
\q
Step 5: Configure Mattermost
Edit the Mattermost configuration file:
sudo nano /opt/mattermost/config/config.json
Update the following settings:
"DriverName": "postgres",
"DataSource": "mattermost_user:your_password@tcp(localhost:5432)/mattermost_db?sslmode=disable",
Also set the SiteURL
to your domain:
"SiteURL": "https://your_domain.com",
Step 6: Start Mattermost
Start the Mattermost server:
cd /opt/mattermost/bin
sudo ./mattermost
To run Mattermost in the background, you can use screen
or set it up with a service file.
Step 7: Install Nginx
Start Nginx and enable it to run on boot:
sudo systemctl start nginx
sudo systemctl enable nginx
Step 8: Configure Nginx as a Reverse Proxy
Create a new Nginx configuration file for Mattermost:
sudo nano /etc/nginx/sites-available/mattermost
Enter the following configuration:
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:8065;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Enable the configuration:
sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
Test the Nginx configuration:
sudo nginx -t
Restart Nginx:
sudo systemctl restart nginx
Step 9: Install Certbot for Let’s Encrypt SSL
Install Certbot:
sudo apt install certbot python3-certbot-nginx
Step 10: Obtain a Free SSL Certificate
Run Certbot to get your SSL certificate:
sudo certbot --nginx -d your_domain.com
Follow the instructions to complete the SSL setup. Certbot will automatically configure Nginx to use the new certificate.
Step 11: Test HTTPS Access
Open your browser and navigate to https://your_domain.com
to verify that Mattermost is accessible over HTTPS.
Conclusion
You have successfully installed Mattermost with Nginx as a reverse proxy and secured it with a Let’s Encrypt SSL certificate on Ubuntu 24.04.
Resources
- Mattermost Official Website
- Mattermost Documentation
- Let’s Encrypt Official Website
- Nginx Official Website