Skip to content

matrix-easy-mode/mem-deploy

MatrixEasyMode

Self-hosted team communication you control.

MatrixEasyMode is open source communication software for teams that want privacy, operator control, and a deployment story they can actually reason about.

This repository contains the operator-facing deployment pack for running MatrixEasyMode with Docker Compose. It is written for Linux-first operators who are comfortable with domains, DNS, reverse proxies, certificates, container networking, and reading logs when something goes wrong.

Product screenshot

MatrixEasyMode provides a practical operator UI for creating, provisioning, and opening private chat instances.

MatrixEasyMode stack ready screen

Official documentation

The canonical documentation lives on the official website:


Quick start

This is the shortest correct path for most operators.

1. Clone the deployment pack

git clone https://github.com/matrix-easy-mode/mem-deploy
cd mem-deploy

If you already have a checkout:

git pull --ff-only

2. Make the helper scripts executable

chmod +x install.sh stack.sh tools.sh

3. Run the installer

./install.sh

The installer will:

  • create .env
  • generate required secrets
  • prompt for runtime configuration
  • prompt for image source (registry or local)
  • validate the Docker Compose configuration
  • optionally start infrastructure for you

4. Start infrastructure first

./stack.sh up infra

This starts:

  • postgres
  • npm

5. Complete Nginx Proxy Manager setup

Before starting the app layer, you must:

  • open Nginx Proxy Manager
  • log in with the credentials you configured during install
  • create or confirm the wildcard certificate referenced by INGRESS_CERTIFICATE_NAME
  • confirm your public DNS is pointing at the correct host

NPM admin UI:

http://<your-server>:81

6. Start the application layer

./stack.sh up app

This starts:

  • api
  • web

7. Verify the stack

./stack.sh status
./stack.sh logs app

Typical public URLs:

  • https://admin.your-domain.com
  • https://api.your-domain.com

For the full operator install guide, use:


Before you start

You should already be comfortable with:

  • Linux shell access
  • Docker Engine and Docker Compose
  • public hostnames and DNS
  • HTTPS and certificate management
  • reverse proxies, especially Nginx Proxy Manager
  • reading logs and troubleshooting service startup issues

You should also already have:

  • a Linux host
  • Docker Engine installed
  • Docker Compose plugin installed
  • a domain you control
  • DNS records you can manage
  • a plan for HTTPS certificates in Nginx Proxy Manager

MatrixEasyMode is not currently positioned as a beginner or one-click product. The current deployment model is intentionally operator-first.


What this repository contains

This repository includes:

  • docker-compose.yml for the main MatrixEasyMode stack
  • docker-compose.local.yml for local developer image builds
  • docker-compose.pgadmin.yml for optional pgAdmin access
  • install.sh for guided environment setup and staged startup preparation
  • stack.sh for starting, stopping, restarting, building, updating, and viewing logs
  • tools.sh for optional operator tooling such as pgAdmin and Portainer
  • .env.example as a reference template

This repository does not contain the MatrixEasyMode application source code itself. It is the deployment pack for operators.

The application source code is published separately in the mem-api and mem-web repositories.


Application source code

This repository is the operator-facing deployment pack.

The open-source MatrixEasyMode application source code lives in separate repositories:

Use those repositories if you want to:

  • review the application code
  • build locally for development
  • contribute changes
  • understand API or frontend implementation details

If you are deploying MatrixEasyMode as an operator, stay in this repository and use the official docs:

Runtime model

The standard stack includes:

  • PostgreSQL
  • Nginx Proxy Manager
  • MatrixEasyMode API
  • MatrixEasyMode web frontend

MatrixEasyMode uses a staged startup model.

Infrastructure first

Infrastructure services:

  • postgres
  • npm

Application second

Application services:

  • api
  • web

This separation is intentional. The MatrixEasyMode API bootstraps platform ingress routes into Nginx Proxy Manager, so NPM must already be running and the wildcard certificate must already exist before the application layer is started.


Image modes

MatrixEasyMode supports two application image modes.

Registry mode

Use published images from a registry.

This is the normal path for operators evaluating or running MatrixEasyMode from release images.

Relevant settings include:

MEM_IMAGE_SOURCE=registry
MEM_REGISTRY
MEM_VERSION

Local mode

Use locally built application images.

This is intended for contributors and internal developers who want to build and run MatrixEasyMode locally.

Relevant settings include:

MEM_IMAGE_SOURCE=local
MEM_API_IMAGE
MEM_WEB_IMAGE

When local mode is enabled, stack.sh automatically includes docker-compose.local.yml.

Typical local-mode flow:

./install.sh
./stack.sh build app
./stack.sh up infra
./stack.sh up app

Core commands

Start infrastructure only

./stack.sh up infra

Start app only

./stack.sh up app

Start everything

./stack.sh up all

Check current status

./stack.sh status

View application logs

./stack.sh logs app

View infrastructure logs

./stack.sh logs infra

View logs for a specific service

./stack.sh logs api
./stack.sh logs web
./stack.sh logs postgres
./stack.sh logs npm

Build local app images

./stack.sh build app

Restart the app layer

./stack.sh restart app

Stop the app layer

./stack.sh down app

Stop infrastructure

./stack.sh down infra

Stop everything

./stack.sh down all

Official documentation

The website is the canonical documentation source.

Start here

Installation

  • Installation Guide
  • Advanced Install

Operations

  • Configuration
  • Operations Guide
  • Troubleshooting
  • Upgrading
  • Network Behavior

Architecture

  • Architecture

Releases

  • Release notes

Tools

  • Tools
  • Optional pgAdmin
  • Optional Portainer

If a long-form operational document exists both here and on the website, prefer the website version.


Optional tooling

MatrixEasyMode also includes optional operator helpers through tools.sh.

pgAdmin

./tools.sh pgadmin start
./tools.sh pgadmin stop
./tools.sh pgadmin status
./tools.sh pgadmin logs

Portainer

./tools.sh portainer start
./tools.sh portainer stop
./tools.sh portainer status
./tools.sh portainer logs

These tools are optional conveniences and are not part of the core MatrixEasyMode runtime.


Troubleshooting first steps

If something looks wrong, start here:

./stack.sh status
./stack.sh logs infra
./stack.sh logs app
cat .env

Common causes of trouble are:

  • the app layer was started before Nginx Proxy Manager was ready
  • the wildcard certificate does not exist in NPM
  • .env values do not match the intended deployment
  • public URLs or DNS are wrong
  • local-mode images were not built or build contexts are wrong

For the full troubleshooting guide, use the official docs:


Security and releases

  • Security policy: SECURITY.md
  • Change history: CHANGELOG.md
  • Release notes: releases/

For the latest project overview and official docs, see:


Project posture

MatrixEasyMode is intentionally documented and packaged as operator software in this phase.

That means the workflow is explicit:

  • infrastructure first
  • application second
  • environment-driven configuration
  • certificate-aware ingress
  • observable runtime behavior
  • operator-controlled deployment

If that is the kind of self-hosted system you want, start here:

About

Main Deployment Package

Resources

License

AGPL-3.0, AGPL-3.0 licenses found

Licenses found

AGPL-3.0
LICENSE
AGPL-3.0
LICENSE.txt

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages