Admin console for synapse Matrix homeserver https://awesome-technologies.github.io/synapse-admin/
  • TypeScript 96.9%
  • JavaScript 1.4%
  • HTML 1%
  • Shell 0.5%
  • Dockerfile 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dependabot[bot] b3925704ae Bump actions/checkout from 6 to 7
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-17 22:13:02 +02:00
.agents/skills Add agent skill for mui 2026-03-15 19:52:51 +01:00
.github Bump actions/checkout from 6 to 7 2026-09-17 22:13:02 +02:00
.vscode Update vscode settings 2026-03-07 22:32:15 +01:00
.yarn Patch TypeScript PnP resolution for VSCode SDK 2026-03-07 22:32:15 +01:00
e2e Add Synapse end-to-end test workflow 2026-03-15 18:49:43 +01:00
public Use vitejs instead of react-scripts 2024-04-23 11:56:39 +02:00
scripts Publish coverage badge via GitHub Pages 2026-03-15 20:03:50 +01:00
src fix: clear stale device_id on logout and retry login without it when revoked (#824) 2026-04-15 11:51:21 +02:00
.dockerignore Add BASE_PATH argument to Dockerfile 2024-04-24 17:02:42 +02:00
.editorconfig Update eslint for typescript 2024-05-06 08:33:32 +02:00
.gitattributes Migrate to yarn v4 2024-04-23 13:35:19 +02:00
.gitignore Add Synapse end-to-end test workflow 2026-03-15 18:49:43 +01:00
.prettierignore Update eslint for typescript 2024-05-06 08:33:32 +02:00
.yarnrc.yml Update yarn to 4.13.0 2026-03-07 22:32:15 +01:00
docker-compose.yml Add Synapse end-to-end test workflow 2026-03-15 18:49:43 +01:00
Dockerfile fix(Dockerfile): FROM and AS both in uppercase, FromAsCasing (#680) 2025-06-02 14:48:44 +02:00
index.html Transform code base to typescript 2024-04-26 11:48:52 +02:00
LICENSE Create a base react-admin application 2020-02-07 21:20:57 +01:00
package.json Bump vite from 8.0.1 to 8.0.2 2026-09-10 10:13:17 +02:00
playwright.config.ts Add Synapse end-to-end test workflow 2026-03-15 18:49:43 +01:00
README.md Publish coverage badge via GitHub Pages 2026-03-15 20:03:50 +01:00
screenshots.jpg Add screenshots and install instructions 2020-07-08 07:49:42 +00:00
tsconfig.eslint.json Transform code base to typescript 2024-04-26 11:48:52 +02:00
tsconfig.json Add typecheck quality gate (#814) 2026-03-19 22:31:16 +01:00
tsconfig.vite.json Transform code base to typescript 2024-04-26 11:48:52 +02:00
vite.config.ts Publish coverage badge via GitHub Pages 2026-03-15 20:03:50 +01:00
yarn.lock Bump yaml in the npm_and_yarn group across 1 directory 2026-09-10 10:14:10 +02:00

GitHub license Build Status build-test Coverage gh-pages docker-release github-release

Synapse admin ui

This project is built using react-admin.

Usage

Supported Synapse

It needs at least Synapse v1.93.0 for all functions to work as expected!

You get your server version with the request /_synapse/admin/v1/server_version. See also Synapse version API.

After entering the URL on the login page of synapse-admin the server version appears below the input field.

Prerequisites

You need access to the following endpoints:

  • /_matrix
  • /_synapse/admin

See also Synapse administration endpoints

Use without install

You can use the current version of Synapse Admin without own installation direct via GitHub Pages.

Note: If you want to use the deployment, you have to make sure that the admin endpoints (/_synapse/admin) are accessible for your browser. Remember: You have no need to expose these endpoints to the internet but to your network. If you want your own deployment, follow the Step-By-Step Install Guide below.

Step-By-Step install

You have three options:

  1. Download the tarball and serve with any webserver
  2. Download the source code from github and run using nodejs
  3. Run the Docker container

Steps for 1)

  • make sure you have a webserver installed that can serve static files (any webserver like nginx or apache will do)
  • configure a vhost for synapse admin on your webserver
  • download the .tar.gz from the latest release: https://github.com/Awesome-Technologies/synapse-admin/releases/latest
  • unpack the .tar.gz
  • move or symlink the synapse-admin-x.x.x into your vhosts root dir
  • open the url of the vhost in your browser

Steps for 2)

  • make sure you have installed the following: git, yarn, nodejs
  • download the source code: git clone https://github.com/Awesome-Technologies/synapse-admin.git
  • change into downloaded directory: cd synapse-admin
  • download dependencies: yarn install
  • start web server: yarn start

Steps for 3)

  • run the Docker container from the public docker registry: docker run -p 8080:80 awesometechnologies/synapse-admin or use the docker-compose.yml: docker-compose up -d

    note: if you're building on an architecture other than amd64 (for example a raspberry pi), make sure to define a maximum ram for node. otherwise the build will fail.

    services:
      synapse-admin:
        container_name: synapse-admin
        hostname: synapse-admin
        build:
          context: https://github.com/Awesome-Technologies/synapse-admin.git
          args:
            - BUILDKIT_CONTEXT_KEEP_GIT_DIR=1
          #   - NODE_OPTIONS="--max_old_space_size=1024"
          #   - BASE_PATH="/synapse-admin"
        ports:
          - "8080:80"
        restart: unless-stopped
    
  • browse to http://localhost:8080

Restricting available homeserver

You can restrict the homeserver(s), so that the user can no longer define it himself.

Edit config.json to restrict either to a single homeserver:

{
  "restrictBaseUrl": "https://your-matrixs-erver.example.com"
}

or to a list of homeservers:

{
  "restrictBaseUrl": ["https://your-first-matrix-server.example.com", "https://your-second-matrix-server.example.com"]
}

The config.json can be injected into a Docker container using a bind mount.

services:
  synapse-admin:
    ...
    volumes:
      - ./config.json:/app/config.json:ro
    ...

Serving Synapse-Admin on a different path

The path prefix where synapse-admin is served can only be changed during the build step.

If you downloaded the source code, use yarn build --base=/my-prefix to set a path prefix.

If you want to build your own Docker container, use the BASE_PATH argument.

We do not support directly changing the path where Synapse-Admin is served in the pre-built Docker container. Instead please use a reverse proxy if you need to move Synapse-Admin to a different base path. If you want to serve multiple applications with different paths on the same domain, you need a reverse proxy anyway.

Example for Traefik:

docker-compose.yml

services:
  traefik:
    image: traefik:mimolette
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

  synapse-admin:
    image: awesometechnologies/synapse-admin:latest
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.synapse-admin.rule=Host(`example.com`)&&PathPrefix(`/admin`)"
      - "traefik.http.routers.synapse-admin.middlewares=admin,admin_path"
      - "traefik.http.middlewares.admin.redirectregex.regex=^(.*)/admin/?"
      - "traefik.http.middlewares.admin.redirectregex.replacement=$${1}/admin/"
      - "traefik.http.middlewares.admin_path.stripprefix.prefixes=/admin"

Screenshots

Screenshots

Development