Introduction

This guide walks you through the installation of Mattermost on a Windows VPS using Nginx as a reverse proxy and securing it with a free SSL certificate from Let’s Encrypt.

Prerequisites

  • A Windows VPS with administrative access.
  • A registered domain name pointed to your VPS IP address.
  • The Windows Subsystem for Linux (WSL) installed, or use a Linux virtual machine. Follow Microsoft’s guide here.
  • Basic knowledge of command-line operations.

Step 1: Install Required Software in WSL

Open your WSL terminal and run the following commands:

sudo apt update
sudo apt install curl wget gnupg2 software-properties-common

Step 2: Install Mattermost

You can install Mattermost using Docker for a simple setup. First, install Docker if you haven’t done so:

sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker

Now, create a directory for Mattermost:

mkdir ~/mattermost
cd ~/mattermost

Next, create a docker-compose.yml file:

nano docker-compose.yml

And add the following content:

version: '3'

services:
  mattermost:
    image: mattermost/mattermost-team-edition:latest
    restart: unless-stopped
    ports:
      - "8065:8065"
    volumes:
      - mattermost_data:/mattermost/data

volumes:
  mattermost_data:

Now, run Mattermost with Docker:

sudo docker-compose up -d

Step 3: Install Nginx

To install Nginx, run the following command:

sudo apt install nginx

Start Nginx and enable it to run at boot:

sudo systemctl start nginx
sudo systemctl enable nginx

Step 4: Configure Nginx as a Reverse Proxy

Create a new Nginx configuration file for Mattermost:

sudo nano /etc/nginx/sites-available/mattermost

Add the following configuration, replacing your_domain.com with your actual domain:

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;
    }
}

Link the configuration file to the `sites-enabled` directory:

sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/

Test the Nginx configuration for syntax errors:

sudo nginx -t

If there are no errors, restart Nginx:

sudo systemctl restart nginx

Step 5: Install Certbot for Let’s Encrypt SSL

To install Certbot, run the following commands:

sudo apt install certbot python3-certbot-nginx

Step 6: Obtain a Free SSL Certificate

Run the following command to obtain a SSL certificate:

sudo certbot --nginx -d your_domain.com

Follow the prompts during the certificate issuance process. If successful, Certbot will automatically configure Nginx to use SSL.

Step 7: Set Up Automatic Renewal of SSL Certificates

Certbot sets up a cron job by default for automatic renewal, but you can test it using:

sudo certbot renew --dry-run

Step 8: Access Mattermost

Now you should be able to access your Mattermost instance by visiting https://your_domain.com in your web browser.

Conclusion

You have successfully installed Mattermost on a Windows VPS using WSL, configured Nginx as a reverse proxy, and secured it with Let’s Encrypt SSL.

Resources