selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

gomuks logo

Self-host gomuks

v0.2610.0

Matrix client with backend/frontend architecture in Go

ReleaseOpen SourceAGPL-3.0
Updatedlast week
LanguageGo
Setup difficultyModerate
MobileNative app
Stars
1 728
Port
29325 (web interface)
Requires
Ffmpeg, Ffprobe
Docker
dock.mau.dev/gomuks/gomuks
Install with Docker
gomuks web frontend preview showing chat interface

What is gomuks?

A Go-based Matrix client that separates the protocol backend from multiple frontends. The backend can run embedded in the client or as a standalone server similar to an IRC bouncer. Frontends include a production-ready web interface, an experimental terminal UI, an Electron desktop wrapper, a GeckoView Android app, and a Flutter-based Nexus client. Users can install via prebuilt binaries, Docker, or compile from source. The web UI defaults to port 29325 and uses basic auth for access. Video sending requires ffmpeg/ffprobe; end-to-end encryption uses libolm (or the pure-Go goolm alternative). Data lives in OS-standard directories or a custom GOMUKS_ROOT. Licensed under AGPL-3.0 with monthly releases.

Should you self-host gomuks?

gomuks scores 59/100 on selfhost.directory (how scoring works) and ranks #22 of 110 in Chat. It has 1 728 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v0.2610.0, came out on 16 October 2026. New versions land roughly every 4 weeks.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is Zulip (82/100, 26 125 stars). It scores higher overall, so compare the two before you pick. See gomuks vs Zulip side by side.

Features

  • Basic AuthenticationCredentials created on first run
  • Custom user styles
  • End-to-end encryptionRequires libolm-dev on Linux, libolm on macOS
  • Matrix Protocol Support
  • Multiple account support via multiple instancesElectron wrapper has built-in backend manager for switching
  • Remote backend mode
  • Reverse Proxy Support
  • Terminal frontendExperimental, lacks many features and Matrix login
  • WASM web versionPerformance significantly worse than native backend
  • Web frontend

gomuks README

How to install gomuks

Install gomuks with Docker

Docker engine
Environment variables
GOMUKS_ROOT=/data (default in Docker)

docker run -it -v /host/data:/data -p 29325:29325 dock.mau.dev/gomuks/gomuks On first run, gomuks will interactively ask for basic auth credentials, so you have to either run it with the -it flags, or create the config file yourself.

Persist /data directory; defaults to GOMUKS_ROOT=/data

gomuks releases & version history

FAQ

Where does gomuks store data?

By default in OS-specific config/cache/data directories. Use GOMUKS_ROOT to set a custom root, or GOMUKS_THING_HOME for individual directories.

Can I use gomuks with multiple accounts?

Only one account per instance, but you can run multiple instances with different data directories. The Electron wrapper includes a backend manager for switching between accounts.

Can I run the backend behind a reverse proxy?

Yes, configure origin_patterns to match the client URL and adjust listen_address if the proxy cannot connect via localhost.

Can I connect to a remote gomuks backend?

Yes, run the backend behind a reverse proxy with TLS. Direct connections without TLS require setting insecure_cookies and adjusting listen_address and origin_patterns.

More in Communication

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…