MCPcopy Index your code
hub / github.com/Awesome-Technologies/synapse-admin

github.com/Awesome-Technologies/synapse-admin @0.11.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.11.4 ↗ · + Follow
130 symbols 221 edges 37 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

GitHub license Build Status build-test 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.

yml 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

  • See https://yarnpkg.com/getting-started/editor-sdks how to setup your IDE
  • Use yarn lint to run all style and linter checks
  • Use yarn test to run all unit tests
  • Use yarn fix to fix the coding style

Extension points exported contracts — how you extend this code

AppContextType (Interface)
(no doc)
src/AppContext.tsx
ImportLine (Interface)
(no doc)
src/components/ImportFeature.tsx
Room (Interface)
(no doc)
src/synapse/dataProvider.ts
SynapseTranslationMessages (Interface)
(no doc)
src/i18n/index.d.ts
ChangeStats (Interface)
(no doc)
src/components/ImportFeature.tsx
RoomState (Interface)
(no doc)
src/synapse/dataProvider.ts
ImportResult (Interface)
(no doc)
src/components/ImportFeature.tsx
ForwardExtremity (Interface)
(no doc)
src/synapse/dataProvider.ts

Core symbols most depended-on inside this repo

jsonClient
called by 13
src/synapse/dataProvider.ts
isValidBaseUrl
called by 11
src/synapse/synapse.ts
splitMxid
called by 3
src/synapse/synapse.ts
mxcUrlToHttp
called by 2
src/synapse/dataProvider.ts
getSearchOrder
called by 2
src/synapse/dataProvider.ts
generateRandomMxId
called by 2
src/synapse/synapse.ts
useAppContext
called by 1
src/AppContext.tsx
verifyCsv
called by 1
src/components/ImportFeature.tsx

Shape

Function 102
Interface 25
Class 2
Method 1

Languages

TypeScript100%

Modules by API surface

src/synapse/dataProvider.ts24 symbols
src/components/ImportFeature.tsx15 symbols
src/components/media.tsx14 symbols
src/synapse/synapse.ts9 symbols
src/resources/destinations.tsx9 symbols
src/components/ServerNotices.tsx9 symbols
src/resources/users.tsx8 symbols
src/resources/room_directory.tsx8 symbols
src/resources/rooms.tsx7 symbols
src/pages/LoginPage.tsx6 symbols
src/resources/reports.tsx4 symbols
src/resources/user_media_statistics.tsx3 symbols

For agents

$ claude mcp add synapse-admin \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact