Continuwuity (Matrix)
A fast, lightweight Matrix homeserver written in Rust
- forgejo.ellis.link/continuwuation/continuwuity:v26.9.1
- port 6146
- Social

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
- Before you install, set
CONTINUWUITY_SERVER_NAMEto your Matrix domain. It can not be changed later. - To talk to other Matrix servers, point that domain at your server and put an HTTPS reverse proxy in front of port 6146.
- Start the app and open its logs. Find the one-time registration token printed on first start.
- Open a Matrix app (Element, Cinny, FluffyChat), choose your server, and register the first account with that token.
- 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
| Variable | Default value | Description |
|---|---|---|
TZ | $TZ | Your time zone. It is filled in from your ZimaOS time zone. Leave it unless you need another. |
CONTINUWUITY_ | CHANGEME.example.com | 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. |
CONTINUWUITY_ | /var/lib/continuwuity | Where the database is kept inside the container. Leave it as /var/lib/continuwuity. |
CONTINUWUITY_ | 0.0.0.0 | The address the server listens on inside the container. Leave it as 0.0.0.0. |
CONTINUWUITY_ | 8008 | The port the server listens on inside the container. Leave it as 8008. |
Sign-up and accounts
| Variable | Default value | Description |
|---|---|---|
CONTINUWUITY_ | true | Set to false so nobody new can register. Even when true, people need a registration token. |
CONTINUWUITY_ | — | A fixed token new people must type to register. You can also make tokens in the admin room with !admin token. |
CONTINUWUITY_ | false | Set to true so new accounts (after the first admin) are read-only until an admin lets them in. |
CONTINUWUITY_ | 🏳️⚧️ | Text added after every new user's display name. Set it to an empty value to add nothing. |
CONTINUWUITY_ | [] | Rooms new users join on their own, like ["#welcome:matrix.example.com"]. |
CONTINUWUITY_ | true | Set to false so users cannot delete their own accounts. |
CONTINUWUITY_ | — | 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
| Variable | Default value | Description |
|---|---|---|
CONTINUWUITY_ | — | The HTTPS address Matrix apps should use, like https://matrix.example.com. Served at /.well-known/matrix/client. |
CONTINUWUITY_ | — | Where other servers reach you, with a port, like matrix.example.com:443. Served at /.well-known/matrix/server. |
CONTINUWUITY_ | — | A contact email shown at /.well-known/matrix/support. |
CONTINUWUITY_ | — | A contact Matrix user shown at /.well-known/matrix/support, like @admin:matrix.example.com. |
CONTINUWUITY_ | 20971520 | The biggest upload in bytes. 20971520 is 20 MB. |
Federation and rooms
| Variable | Default value | Description |
|---|---|---|
CONTINUWUITY_ | true | Set to false to keep the server private, with no contact with other Matrix servers. |
CONTINUWUITY_ | ["matrix.org"] | Servers trusted to share other servers' signing keys. |
CONTINUWUITY_ | true | Set to false to stop new encrypted rooms. |
CONTINUWUITY_ | true | Set to false so only admins can make rooms. |
CONTINUWUITY_ | false | Set to true to let other servers see your public room list. |
CONTINUWUITY_ | false | Set to true so only admins can add rooms to the public room list. |
CONTINUWUITY_ | [] | Servers to block completely, like ["badserver.example"]. |
CONTINUWUITY_ | false | Set to true to share online status with other servers. |
CONTINUWUITY_ | [] | Sites allowed to make link previews, like ["*"] for all. Empty means no link previews. |
Voice and video
| Variable | Default value | Description |
|---|---|---|
CONTINUWUITY_ | [] | Your TURN server for calls, like ["turn:turn.example.com:3478?transport=udp"]. |
CONTINUWUITY_ | — | The shared secret of your TURN server. |
Email (SMTP)
| Variable | Default value | Description |
|---|---|---|
CONTINUWUITY_ | — | Your mail server, like smtps://user:[email protected]:465 (write @ in the user name as %40). Turns on password-reset emails. |
CONTINUWUITY_ | — | The sender on emails, like Matrix <[email protected]>. |
CONTINUWUITY_ | false | Set to true to let anyone register with just an email address. |
CONTINUWUITY_ | false | Set to true so people who register with a token must also give an email. |
Sign in with OIDC
| Variable | Default value | Description |
|---|---|---|
CONTINUWUITY_ | — | 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_ | — | The Client ID of the app you made for Continuwuity in your provider. |
CONTINUWUITY_ | — | The Client Secret of that app. |
CONTINUWUITY_ | — | The provider's name shown to users, like Pocket ID. |
Logs
| Variable | Default value | Description |
|---|---|---|
CONTINUWUITY_ | info | How much to log: error, warn, info, debug or trace. |
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"