Continuwuity (Matrix)

A fast, lightweight Matrix homeserver written in Rust

  • forgejo.ellis.link/continuwuation/continuwuity:v26.9.1
  • port 6146
  • Social
Continuwuity (Matrix) screenshot 1: Chatting in a Matrix app

Matrix API

/
http://localhost:6146/

Continuwuity is a community-run Matrix homeserver written in Rust, a lean and actively maintained alternative to Synapse that runs well on small hardware. Chat with your own people, or with anyone on the Matrix network, from any Matrix app.

Features

  • Fast, memory-safe Rust server for small and medium homeservers
  • Federates with the whole Matrix network, or keep it private
  • Bridges (appservices) to Discord, Telegram and more
  • Built-in RocksDB database, no second container
  • Manage users and rooms from an admin room inside Matrix, no web dashboard needed

How to use

  1. Before you install, set CONTINUWUITY_SERVER_NAME to your Matrix domain. It can not be changed later.
  2. To talk to other Matrix servers, point that domain at your server and put an HTTPS reverse proxy in front of port 6146.
  3. Start the app and open its logs. Find the one-time registration token printed on first start.
  4. Open a Matrix app (Element, Cinny, FluffyChat), choose your server, and register the first account with that token.
  5. The first account is the admin and is invited to the admin room. Manage the server from there.

Before you install

Set CONTINUWUITY_SERVER_NAME to your Matrix domain, like matrix.example.com, or for home use only to your ZimaOS IP and port, like 192.168.1.20:6146. It can never be changed without deleting all data. If your domain is served from another host or port, add CONTINUWUITY_WELL_KNOWN__CLIENT and CONTINUWUITY_WELL_KNOWN__SERVER from the Variables tab. The server starts in a few seconds; the one-time registration token for the first account is in the app logs. More settings, like sign-up rules, federation and email, are in the Variables tab; add them in the app settings. List settings are written like ["matrix.org"].

The settings in the first table are already in the app settings. To use any other one, open the app settings, add the variable with your value, save, and the app restarts with it. A setting you leave out uses its default.

In the app settings

VariableDefault valueDescription
TZ$TZYour time zone. It is filled in from your ZimaOS time zone. Leave it unless you need another.
CONTINUWUITY_SERVER_NAMECHANGEME.example.comYour Matrix server's name, like matrix.example.com. It becomes part of every user name (@you:matrix.example.com) and can never be changed without deleting all data, so set it before the first start. For use at home only, your ZimaOS IP and port work too, like 192.168.1.20:6146.
CONTINUWUITY_DATABASE_PATH/var/lib/continuwuityWhere the database is kept inside the container. Leave it as /var/lib/continuwuity.
CONTINUWUITY_ADDRESS0.0.0.0The address the server listens on inside the container. Leave it as 0.0.0.0.
CONTINUWUITY_PORT8008The port the server listens on inside the container. Leave it as 8008.

Sign-up and accounts

VariableDefault valueDescription
CONTINUWUITY_ALLOW_REGISTRATIONtrueSet to false so nobody new can register. Even when true, people need a registration token.
CONTINUWUITY_REGISTRATION_TOKEN—A fixed token new people must type to register. You can also make tokens in the admin room with !admin token.
CONTINUWUITY_SUSPEND_ON_REGISTERfalseSet to true so new accounts (after the first admin) are read-only until an admin lets them in.
CONTINUWUITY_NEW_USER_DISPLAYNAME_SUFFIX🏳️‍⚧️Text added after every new user's display name. Set it to an empty value to add nothing.
CONTINUWUITY_AUTO_JOIN_ROOMS[]Rooms new users join on their own, like ["#welcome:matrix.example.com"].
CONTINUWUITY_ALLOW_DEACTIVATIONtrueSet to false so users cannot delete their own accounts.
CONTINUWUITY_EMERGENCY_PASSWORD—Lets you sign in as the server's own bot account to fix a locked-out admin. Remove it again when you are done.

Server and delegation

VariableDefault valueDescription
CONTINUWUITY_WELL_KNOWN__CLIENT—The HTTPS address Matrix apps should use, like https://matrix.example.com. Served at /.well-known/matrix/client.
CONTINUWUITY_WELL_KNOWN__SERVER—Where other servers reach you, with a port, like matrix.example.com:443. Served at /.well-known/matrix/server.
CONTINUWUITY_WELL_KNOWN__SUPPORT_EMAIL—A contact email shown at /.well-known/matrix/support.
CONTINUWUITY_WELL_KNOWN__SUPPORT_MXID—A contact Matrix user shown at /.well-known/matrix/support, like @admin:matrix.example.com.
CONTINUWUITY_MAX_REQUEST_SIZE20971520The biggest upload in bytes. 20971520 is 20 MB.

Federation and rooms

VariableDefault valueDescription
CONTINUWUITY_ALLOW_FEDERATIONtrueSet to false to keep the server private, with no contact with other Matrix servers.
CONTINUWUITY_TRUSTED_SERVERS["matrix.org"]Servers trusted to share other servers' signing keys.
CONTINUWUITY_ALLOW_ENCRYPTIONtrueSet to false to stop new encrypted rooms.
CONTINUWUITY_ALLOW_ROOM_CREATIONtrueSet to false so only admins can make rooms.
CONTINUWUITY_ALLOW_PUBLIC_ROOM_DIRECTORY_OVER_FEDERATIONfalseSet to true to let other servers see your public room list.
CONTINUWUITY_LOCKDOWN_PUBLIC_ROOM_DIRECTORYfalseSet to true so only admins can add rooms to the public room list.
CONTINUWUITY_FORBIDDEN_REMOTE_SERVER_NAMES[]Servers to block completely, like ["badserver.example"].
CONTINUWUITY_ALLOW_OUTGOING_PRESENCEfalseSet to true to share online status with other servers.
CONTINUWUITY_URL_PREVIEW_DOMAIN_EXPLICIT_ALLOWLIST[]Sites allowed to make link previews, like ["*"] for all. Empty means no link previews.

Voice and video

VariableDefault valueDescription
CONTINUWUITY_TURN_URIS[]Your TURN server for calls, like ["turn:turn.example.com:3478?transport=udp"].
CONTINUWUITY_TURN_SECRET—The shared secret of your TURN server.

Email (SMTP)

VariableDefault valueDescription
CONTINUWUITY_SMTP__CONNECTION_URI—Your mail server, like smtps://user:[email protected]:465 (write @ in the user name as %40). Turns on password-reset emails.
CONTINUWUITY_SMTP__SENDER—The sender on emails, like Matrix <[email protected]>.
CONTINUWUITY_SMTP__REQUIRE_EMAIL_FOR_REGISTRATIONfalseSet to true to let anyone register with just an email address.
CONTINUWUITY_SMTP__REQUIRE_EMAIL_FOR_TOKEN_REGISTRATIONfalseSet to true so people who register with a token must also give an email.

Sign in with OIDC

VariableDefault valueDescription
CONTINUWUITY_OAUTH__OIDC__DISCOVERY_URL—Your sign-in provider's address, like https://pocketid.example.com. When set, only Matrix apps with the new OAuth login can sign in.
CONTINUWUITY_OAUTH__OIDC__CLIENT_ID—The Client ID of the app you made for Continuwuity in your provider.
CONTINUWUITY_OAUTH__OIDC__CLIENT_SECRET—The Client Secret of that app.
CONTINUWUITY_OAUTH__OIDC__PROVIDER_NAME—The provider's name shown to users, like Pocket ID.

Logs

VariableDefault valueDescription
CONTINUWUITY_LOGinfoHow much to log: error, warn, info, debug or trace.
docker-compose.yml
name: continuwuity

services:
  continuwuity:
    image: forgejo.ellis.link/continuwuation/continuwuity:v26.9.1
    container_name: continuwuity
    restart: unless-stopped
    stop_grace_period: 60s
    network_mode: bridge
    environment:
      - TZ=$TZ
      - CONTINUWUITY_SERVER_NAME=CHANGEME.example.com
      - CONTINUWUITY_DATABASE_PATH=/var/lib/continuwuity
      - CONTINUWUITY_ADDRESS=0.0.0.0
      - CONTINUWUITY_PORT=8008
    ports:
      - target: 8008
        published: "6146"
        protocol: tcp
    volumes:
      - type: bind
        source: /DATA/AppData/$AppID/db
        target: /var/lib/continuwuity
        bind:
          create_host_path: true
    deploy:
      resources:
        limits:
          cpus: "2.00"
          memory: 1024M
        reservations:
          cpus: "0.25"
          memory: 256M
    labels:
      icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/continuwuity/icon.png
    x-casaos:
      id: com.icestore.continuwuity
      envs:
        - container: TZ
          description:
            en_US: >-
              Your time zone. It is filled in from your ZimaOS time zone.
              Leave it unless you need another.
        - container: CONTINUWUITY_SERVER_NAME
          description:
            en_US: >-
              Your Matrix server's name, like matrix.example.com. It becomes
              part of every user name (@you:matrix.example.com) and can never
              be changed without deleting all data, so set it before the
              first start. For use at home only, your ZimaOS IP and port
              work too, like 192.168.1.20:6146.
        - container: CONTINUWUITY_DATABASE_PATH
          description:
            en_US: >-
              Where the database is kept inside the container. Leave it as
              /var/lib/continuwuity.
        - container: CONTINUWUITY_ADDRESS
          description:
            en_US: >-
              The address the server listens on inside the container. Leave
              it as 0.0.0.0.
        - container: CONTINUWUITY_PORT
          description:
            en_US: >-
              The port the server listens on inside the container. Leave it
              as 8008.
      ports:
        - container: "8008"
          description:
            en_US: >-
              Matrix client and federation API, published on host as 6146.
              Put an HTTPS reverse proxy in front of it to federate with
              other servers.
      volumes:
        - container: /var/lib/continuwuity
          description:
            en_US: >-
              The RocksDB database: all rooms, messages, media and accounts.
              This is the only data the server has, so back it up.

x-casaos:
  id: com.icestore.continuwuity
  architectures:
    - amd64
    - arm64
  main: continuwuity
  author: HSinghHira
  category: Social
  developer: Continuwuity contributors
  icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/continuwuity/icon.png
  thumbnail: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/continuwuity/screenshot-1.png
  screenshot_link:
    - https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/continuwuity/screenshot-1.png
  title:
    en_US: Continuwuity (Matrix)
  tagline:
    en_US: A fast, lightweight Matrix homeserver written in Rust
  description:
    en_US: >-
      Continuwuity is a community-run Matrix homeserver written in Rust, a
      lean and actively maintained alternative to Synapse that runs well on
      small hardware. Chat with your own people, or with anyone on the
      Matrix network, from any Matrix app.


      **Features**


      - Fast, memory-safe Rust server for small and medium homeservers


      - Federates with the whole Matrix network, or keep it private


      - Bridges (appservices) to Discord, Telegram and more


      - Built-in RocksDB database, no second container


      - Manage users and rooms from an admin room inside Matrix, no web
        dashboard needed


      **How to use?**


      1. Before you install, set CONTINUWUITY_SERVER_NAME to your Matrix
         domain. It can not be changed later.


      2. To talk to other Matrix servers, point that domain at your server
         and put an HTTPS reverse proxy in front of port 6146.


      3. Start the app and open its logs. Find the one-time registration
         token printed on first start.


      4. Open a Matrix app (Element, Cinny, FluffyChat), choose your server,
         and register the first account with that token.


      5. The first account is the admin and is invited to the admin room.
         Manage the server from there.
  tips:
    before_install:
      en_US: >-
        1. Open the app settings before you install.


        2. Find CONTINUWUITY_SERVER_NAME. Replace CHANGEME.example.com with
           your Matrix domain, like matrix.example.com.


        3. Just for home use? You can use your ZimaOS IP and port instead,
           like 192.168.1.20:6146.


        4. Choose carefully. This name can never be changed later without
           deleting everything.


        5. To talk to other Matrix servers, you need HTTPS. Put a reverse
           proxy (like Caddy or Nginx Proxy Manager) in front of port 6146.


        6. More settings, like sign-up rules, federation and email, are
           listed on the Continuwuity page at
           https://icestore.hsinghhira.me/app/continuwuity/ (Variables
           tab). You can add them now or later in the app settings.


        7. Start the installation. It is ready in a few seconds.


        8. Open the app logs. Find the one-time registration token.


        9. Open a Matrix app like Element. Choose your server and register
           your first account with that token.


        10. That first account is the admin. You are invited to the admin
            room, where you manage the server.
  index: /
  port_map: "6146"
  scheme: http
  is_uncontrolled: false
  version: "v26.9.1"
  update_at: "2026-10-25"
  release_notes:
    en_US: |-
      - Moved to IceStore on port 6146
      - continuwuation/continuwuity v26.9.1
      - Well-known delegation, sign-up, federation and email settings are in the Variables tab
  repo: "https://forgejo.ellis.link/continuwuation/continuwuity"
  support: "https://forgejo.ellis.link/continuwuation/continuwuity/issues"
  docs: "https://continuwuity.org/introduction.html"