Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk11 min

How to Self-Host Mattermost on a VPS: A Complete Ubuntu/Debian Deployment Guide

A practical Mattermost VPS guide covering package installation, PostgreSQL, NGINX and TLS, storage, SMTP, firewalling, backups, upgrades, sizing, and production troubleshooting.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The most straightforward small Mattermost deployment is a supported 64-bit Ubuntu 22.04/24.04 LTS or current Debian stable VPS, with at least 1 vCPU and 2 GB of RAM, PostgreSQL 14 or newer, NGINX terminating HTTPS, persistent file storage, SMTP, DNS, and tested backups. Install the signed Ubuntu/Debian package, keep the application ports private, and expose only the reverse proxy to users.

That baseline is suitable for a small installation and is documented by Mattermost as supporting approximately 1,000 users under its stated conditions. It is not a universal performance guarantee: files, concurrent activity, calls, search, integrations, and retention can all require more capacity.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What a production Mattermost VPS needs

A VPS is only one part of the service. Before inviting users, have these components designed and assigned:

  • Operating system: a supported 64-bit Ubuntu 22.04/24.04 LTS or current Debian stable server.
  • Application: Mattermost installed as a managed service, normally from the signed Ubuntu/Debian package.
  • Database: PostgreSQL 14 or newer, running locally, on another host, or as a managed service.
  • Reverse proxy and TLS: NGINX receives public HTTP(S) traffic and forwards it to Mattermost.
  • Persistent files: local disk for a simple installation, or S3-compatible object storage or network storage when durability and scale justify it.
  • Mail delivery: an SMTP service or relay if users need email notifications, invitations, password resets, or other outbound messages.
  • DNS: a hostname pointing to the VPS, with a plan for certificate issuance and renewal.
  • Backups: PostgreSQL and Mattermost data, configuration, logs, and required plugins, stored off the VPS and periodically restored in a test environment.

For production, Mattermost specifically requires a reverse proxy and TLS before users connect. Do not publish the application directly on its internal listening ports.

#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter | 4Pack Type C Female to A Male Cable Converter for Apple Duo 17 16 15 14 Plus,iWatch Watch 12 11 10,iPad 9 8 Air,Airpods 5 4
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

Choose the deployment model before provisioning

Deployment model Best fit What you take on
Ubuntu/Debian APT package One conventional VPS or a small private deployment Simple systemd management and package updates, while you still operate PostgreSQL, proxying, storage, mail, and backups.
Manual Linux tarball Administrators who need distribution flexibility or an air-gapped installation More manual work for systemd units, file ownership, upgrades, and ongoing maintenance.
Docker Compose Evaluation, testing, and development Convenient isolation, but the official deployment guidance does not support Docker deployments for production clustering or high availability.
Kubernetes Operator Production high availability and rolling operations More infrastructure, shared-service design, operational expertise, and plan or licensing considerations.

Compare choices on production support, upgrade method, high-availability behavior, database and file-storage topology, TLS integration, backup and recovery, and the skills available to operate the system. For a single VPS, the package route avoids adding a container or cluster control plane while still giving you a standard service manager.

Size the VPS without treating the minimum as a promise

Mattermost documents a minimum baseline of 1 vCPU and 2 GB of RAM, supporting approximately 1,000 users under the documented baseline. Use that as an entry point for a small deployment, not as a capacity guarantee.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Workload factor Why it changes sizing What to plan
Concurrent use Many active sessions and message events increase application and database work. More CPU and memory, plus monitoring during busy periods.
Files and retention Uploads consume disk or object-storage capacity and create backup volume. Persistent storage with growth headroom and a retention policy.
Search Indexing and queries add CPU, memory, and storage pressure. Measure index growth and reserve resources separately from the minimum.
Calls and integrations Real-time features and external connectors add sustained work and network traffic. Additional CPU, memory, bandwidth, and service limits as usage grows.
Availability goals A single VPS is a single failure domain. Separate database or storage, redundancy, and an HA architecture when downtime is unacceptable.

The official material does not publish a universal VPS price or a general performance benchmark. Your cost depends on the region and provider, storage and backup volume, database placement, SMTP, and the availability target.

Prepare the server and network

1. Provision a clean supported host

Create a 64-bit VPS running Ubuntu 22.04 LTS, Ubuntu 24.04 LTS, or the current Debian stable release. Assign a static public IP if your provider offers one, set the server hostname, and keep the system clock synchronized. Log in with an administrative account that can use sudo; avoid operating the application as root.

sudo apt update
sudo apt upgrade -y

Reboot when the operating-system upgrade requires it, then reconnect and verify that the expected distribution and kernel are running.

2. Define the firewall boundary

The public firewall should allow SSH only from the administration networks you need, TCP 80 for HTTP certificate and redirect traffic, and TCP 443 for user traffic. Do not open Mattermost’s application ports to the Internet.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keep these ports on the private interface or localhost unless your topology requires otherwise:

Rank #2
Sale
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter | USB C Dongle with 90W Max Power Delivery, 3×5Gbps USB A Data Ports, for MacBook, Dell, and More (Charger Not Included)
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Port Use Exposure
80/tcp NGINX HTTP listener, commonly used for certificate validation and redirecting to HTTPS Public
443/tcp NGINX HTTPS listener Public
8065/tcp Mattermost web application listener Private
8067/tcp Internal Mattermost service endpoint Private
8074/tcp Internal Mattermost service endpoint Private
10025/tcp Outbound connection for the documented SMTP relay path when that path is used Outbound only when required

Apply both the VPS provider’s network rules and the operating-system firewall. Restrict database access to the Mattermost host or the private application network.

Prepare PostgreSQL 14 or newer

Mattermost needs PostgreSQL 14 or later. You can run it on the same VPS for a small installation, place it on a separate private host, or use a managed PostgreSQL service. A separate database reduces contention and makes independent recovery easier, but adds network, access-control, and service costs.

Create a dedicated database and login

Use a database account dedicated to Mattermost rather than a superuser. The following is a pattern to adapt to your security policy; replace the password with a long, randomly generated value and do not put it in shell history or public documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo -u postgres psql

CREATE DATABASE mattermost;
CREATE USER mmuser WITH PASSWORD 'replace-with-a-long-random-password';
GRANT ALL PRIVILEGES ON DATABASE mattermost TO mmuser;
q

Record the database name, username, password, host, port, and SSL requirements in your secret store. If PostgreSQL is remote, allow connections only from the Mattermost server’s private address and verify the server certificate or other configured transport protection.

Check the connection before installing the application

Confirm that the database is reachable from the application host, that the credentials work, and that the selected PostgreSQL version is 14 or newer. A failed database connection at this stage is easier to diagnose than one discovered after the web service starts.

Install Mattermost from the signed Ubuntu/Debian package

The package path installs Mattermost under /opt/mattermost, creates a mattermost user and group, and supplies a systemd unit. Follow the current Mattermost instructions to add its signed APT repository and key; repository details can change, so do not copy an old key or distribution entry from an unrelated tutorial.

Install and inspect the service

sudo apt update
sudo apt install mattermost
sudo systemctl status mattermost

Configure the database connection and the public site URL in Mattermost’s configuration. The site URL should be the final HTTPS hostname users will visit, not an internal address or the port 8065 URL. Set the database type to PostgreSQL and enter the connection details prepared earlier.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter | 85W Max PD, 2 USB 3.0 & 1 USBC Data Ports, SD/TF Card Reader, for Laptops/Mac and Other Type C Devices (Charger Not Included)
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

Start locally before adding the proxy

Start the service and verify it from the server itself:

sudo systemctl start mattermost
curl -I http://127.0.0.1:8065
sudo systemctl enable mattermost

A successful local response proves that the application process is listening. It does not prove that DNS, NGINX, certificates, WebSockets, SMTP, or file storage are correct. Keep the service bound to its private interface while you complete those layers.

Upgrade safely

Stop Mattermost before a package upgrade so a running process is not using binaries that the package manager is replacing:

sudo systemctl stop mattermost
sudo apt update
sudo apt install --only-upgrade mattermost
sudo systemctl start mattermost
sudo systemctl status mattermost

Read the release notes for database migrations and compatibility requirements, take a fresh backup, and verify the application and integrations after every upgrade.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Configure persistent file storage

Messages and database records are not the same as uploaded files. Choose storage deliberately:

  • Local storage: simplest for a small, single-server setup. Put it on persistent disk, monitor free space, and include it in backups.
  • S3-compatible object storage: a better fit when files must survive a VPS replacement or grow independently of the application disk. Protect access keys and define lifecycle and retention rules.
  • Network storage: useful when several application nodes must see the same files, but latency, locking, availability, and backup behavior must be tested.

Whatever option you select, test uploading, downloading, permissions, and restoration. A database-only backup cannot restore files that were stored elsewhere.

Put NGINX and HTTPS in front

Users should connect to NGINX on ports 80 and 443. NGINX forwards requests to Mattermost on the private application listener, normally 127.0.0.1:8065. TLS terminates at NGINX, and the proxy passes the original host, client-forwarding information, scheme, and WebSocket upgrade headers.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray | Data transfer & Fast charging for MacBook, iPhone 17/16/15, iPad, Samsung Galaxy, Apple Watch
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft

Basic reverse-proxy shape

Create a dedicated NGINX server block for the Mattermost hostname. The exact certificate directives depend on your certificate client, but the proxy portion should have the following shape:

server {
    listen 80;
    server_name chat.example.com;

    location / {
        proxy_pass http://127.0.0.1:8065;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Use your real hostname instead of chat.example.com. After adding the TLS-enabled server block, validate the configuration and reload NGINX. Redirect ordinary HTTP requests to HTTPS once certificate issuance and renewal are working.

Why the proxy must be complete

Forwarding only ordinary HTTP requests can make the login page appear functional while breaking real-time message delivery, calls, or other upgraded connections. The forwarded scheme also tells Mattermost whether the original request was secure. Test a fresh login, channel navigation, live messages, file upload, and logout through the public HTTPS hostname.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Set DNS, SMTP, and the first administrator

DNS

Create an A or AAAA record for the hostname used in the Mattermost site URL and point it to the VPS address. Wait for the record to resolve from outside the server before requesting a certificate. If you change addresses later, update DNS and certificate coverage together.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

SMTP

Configure an SMTP server or relay only if you need email notifications, invitations, password resets, or other outbound mail. Use authenticated transport and a sender address permitted by the relay. Confirm that the VPS provider allows the required outbound path; the documented relay path may require outbound TCP 10025.

Send a test message after enabling SMTP. Check both Mattermost’s event logs and the relay’s delivery or rejection records. A successful connection does not guarantee that recipient domains will accept the message.

Administrator and onboarding

Complete the initial administrator account through the HTTPS URL, then create teams and configure registration, authentication, and notification policies before inviting users. Do not treat the local port 8065 test page as the production entry point.

Best Value
Sale
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display | 85W Max PD, 1 Powered USB-C 5Gbps & 2 Powered USB-A 3.0 5Gbps Data Ports, for MacBook Pro, MacBook Air, Dell and More (Black)
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Backups and recovery are part of the deployment

A usable backup covers every state needed to rebuild the service:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • PostgreSQL databases, including roles or other connection metadata required to restore access.
  • Mattermost file data, whether on the VPS, object storage, or network storage.
  • Mattermost configuration and environment-specific secrets, stored securely.
  • Logs needed for incident investigation when your retention policy requires them.
  • Plugins and any custom assets on which the deployment depends.

Choose a recovery design

Decide the retention period, off-host destination, encryption, access controls, and recovery-time objective before cutover. A snapshot of one VPS is not enough when files or PostgreSQL live on separate services. Keep at least one copy outside the primary failure domain.

Test restoration

Restore PostgreSQL and the Mattermost data to an isolated host, point a test instance at the restored database, and verify login, channel history, file downloads, plugins, and outbound-mail behavior. Record the time and the commands required. Repeat after major upgrades or storage changes. Backups that have never been restored are an assumption, not a recovery plan.

Security and day-to-day operations

  • Apply operating-system and Mattermost security updates on a schedule, with a backup and rollback plan.
  • Use least-privilege accounts for SSH, PostgreSQL, object storage, SMTP, and administration.
  • Keep application ports 8065, 8067, and 8074 off the public firewall.
  • Protect database passwords, object-storage keys, SMTP credentials, and TLS private keys.
  • Monitor disk usage, memory, CPU, database health, certificate expiry, backup jobs, and service restarts.
  • Set log retention so diagnostics do not fill the VPS disk, while retaining the records required by your policy.
  • Document who can perform upgrades, restore backups, rotate secrets, and change DNS.

For higher assurance, place PostgreSQL and file storage on separate private services, restrict administrative access through a VPN or bastion, and alert on unexpected public-port changes.

When a single VPS is no longer enough

A single package installation is a sensible starting architecture, but it has one application host and usually one failure domain. Move toward a high-availability design when downtime, maintenance windows, or growth make that limitation unacceptable.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Production HA planning can require multiple Mattermost nodes, shared file storage, a highly available PostgreSQL topology, Redis caching, search services, load balancing, and the applicable Mattermost plan. The Kubernetes Operator is intended for production high availability and rolling operations, but it introduces substantial infrastructure and licensing or plan complexity. Do not add a cluster merely because it is fashionable; add it when a defined availability or scaling requirement pays for the operational cost.

Troubleshooting by symptom

The local check fails on port 8065

  • Inspect sudo systemctl status mattermost and the service logs.
  • Check the database host, port, database name, username, password, and PostgreSQL version.
  • Verify ownership and permissions under /opt/mattermost and on the configured file-storage path.
  • Confirm that the service is listening on the address and port expected by NGINX.

The site works locally but not through the hostname

  • Confirm DNS resolves to the current VPS address.
  • Check that the firewall allows 80 and 443 and that NGINX is listening on both.
  • Validate the NGINX configuration and certificate chain.
  • Verify that the proxy target is reachable from NGINX and that the site URL uses the same HTTPS hostname.

Messages or calls do not update in real time

  • Check the WebSocket upgrade headers and HTTP/1.1 proxy settings.
  • Ensure the public connection remains on HTTPS and that the forwarded scheme is correct.
  • Look for timeouts or connection limits in NGINX and any provider firewall between the client and VPS.

Uploads fail or disappear after a restore

  • Check the configured storage backend, credentials, available capacity, and write permissions.
  • Confirm that the backup included file data as well as PostgreSQL.
  • Restore the storage to the path or bucket expected by the application before starting the test instance.

Email is not delivered

  • Review Mattermost logs and the SMTP relay response.
  • Verify authentication, encryption, sender authorization, DNS records, and the permitted outbound port.
  • Test with more than one recipient domain to distinguish a local configuration error from recipient-side filtering.

Go-live checklist

  1. Run a supported 64-bit Ubuntu or Debian release with current security updates.
  2. Confirm the VPS has at least 1 vCPU and 2 GB RAM, then add headroom for files, search, calls, integrations, and concurrency.
  3. Use PostgreSQL 14 or newer with a dedicated Mattermost database account.
  4. Install the signed package and verify the service locally on port 8065.
  5. Configure persistent file storage and include it in the backup design.
  6. Point DNS to the VPS and issue a certificate for the production hostname.
  7. Expose only NGINX on 80/443; keep 8065, 8067, and 8074 private.
  8. Configure and test SMTP if email features are required.
  9. Create the administrator account through HTTPS and apply registration and authentication policies.
  10. Back up PostgreSQL, files, configuration, logs, and plugins to an off-host destination.
  11. Perform a documented restore before inviting users.
  12. Record upgrade, rollback, secret-rotation, and incident contacts.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.