1
0
Fork 1
mirror of https://github.com/matrix-construct/tuwunel.git synced 2026-02-15 17:26:59 +01:00
Official successor to conduwuit https://tuwunel.chat
  • Rust 94.9%
  • HCL 2.9%
  • Nix 1.6%
  • Shell 0.6%
Find a file
cornerot 6c91aa1ddc
Update docker-compose.with-traefik.yml (#308)
/etc/conduit.toml -> /etc/tuwunel.toml
2026-02-13 18:31:23 -05:00
.cargo audit: Ignore unmaintained rustls-pemfile. (RUSTSEC-2025-0134) 2025-12-17 06:53:06 +00:00
.github/workflows ci: Add specific nightly toolchain override. 2026-02-12 02:06:17 +00:00
.gitlab docs: build docs using mdBook, build in CI, deploy to gitlab pages 2024-03-19 00:17:41 -04:00
arch set ManagedOOMPreference=avoid to default systemd unit 2026-02-02 18:17:21 -05:00
debian set ManagedOOMPreference=avoid to default systemd unit 2026-02-02 18:17:21 -05:00
docker ci: Add specific nightly toolchain override. 2026-02-12 02:06:17 +00:00
docs Update docker-compose.with-traefik.yml (#308) 2026-02-13 18:31:23 -05:00
nix/pkgs Format all nix files with new nixfmt 2026-01-30 16:56:39 -05:00
rpm set ManagedOOMPreference=avoid to default systemd unit 2026-02-02 18:17:21 -05:00
src Include "preview" in url preview user agent string. (fixes #303) 2026-02-12 13:15:41 +00:00
tests/complement bump ruma to fix join_rule being omitted on default value in /publicRooms 2025-12-20 22:22:40 -05:00
.dockerignore Docker Bake Harness 2025-05-01 07:03:51 +00:00
.editorconfig apply new rustfmt.toml changes, fix some clippy lints 2024-12-15 01:00:41 -05:00
.envrc load .env file before initializing flake to use DIRENV_DEVSHELL in .env 2024-06-03 00:10:28 -04:00
.git-blame-ignore-revs fix git blame ignore revs 2024-03-26 22:24:24 -04:00
.gitattributes Adds .gitattributes to the projects to prevent LN and CLRF conflicts. (#681) 2025-02-04 16:46:00 -05:00
.gitignore docker: Move complement logs into tests directory. 2025-11-18 19:29:21 +00:00
.markdownlintignore add markdownlint and run lychee in documentation CI workflow 2024-07-03 11:30:16 -04:00
.typos.toml Bump dependencies. 2026-02-04 09:43:30 +00:00
book.toml Remove unknown multilingual directive from book.toml. 2025-11-18 19:46:25 +00:00
Cargo.lock Bump Ruma for case-insensitive ACL. 2026-02-12 13:15:41 +00:00
Cargo.toml Bump Ruma for case-insensitive ACL. 2026-02-12 13:15:41 +00:00
clippy.toml Unbox and pin database streams. 2025-11-26 06:49:57 +00:00
CODE_OF_CONDUCT.md Replace various contact data; dependency migration. (#25) 2025-04-22 02:32:18 +00:00
CONTRIBUTING.md docker: Fix target mount cache paths; relax locks on cargo home. 2025-06-02 02:49:14 +00:00
default.nix Format all nix files with new nixfmt 2026-01-30 16:56:39 -05:00
development.md docs: add some more conduwuit development info 2024-09-06 20:33:02 -04:00
flake.lock Bump RocksDB to 10.7.5-tuwunel. 2025-11-23 03:36:17 +00:00
flake.nix Format all nix files with new nixfmt 2026-01-30 16:56:39 -05:00
LICENSE remove nightly only feature, small housekeeping stuff 2023-11-29 21:59:18 -05:00
README.md docs(readme): add Alpine package 2025-12-27 18:22:48 +03:00
RELEASE.md Bump 1.5.0 2026-02-01 07:42:17 +00:00
renovate.json renovate: exclude rust deps we forked / cant easily bump or upgrade 2024-08-30 12:57:50 -04:00
rust-toolchain.toml bump MSRV to 1.91.1 2026-01-30 16:56:39 -05:00
rustfmt.toml attr_fn_like_width to 60 2025-04-24 02:00:00 +00:00
tuwunel-example.toml Implement local redaction blocking 2026-02-12 13:15:41 +00:00

Tuwunel💕

GitHub License GitHub Created At GitHub Commit Activity Docker Pulls GitHub Repo Stars CI/CD

High Performance Matrix Homeserver in Rust!

Documentation Demo Server Support Chat

Tuwunel is a featureful Matrix homeserver you can use instead of Synapse with your favorite client, bridge or bot. It is written entirely in Rust to be a scalable, low-cost, enterprise-ready, community-driven alternative, fully implementing the Matrix Specification for all but the most niche uses.

This project is the official successor to conduwuit after it reached stability. Tuwunel is now used by many companies with a vested interest in its continued development by full-time staff. It is primarily sponsored by the government of Switzerland 🇨🇭 where it is currently deployed for citizens.

Getting Started

1. Configure by copying and editing the tuwunel-example.toml. The server_name and database_path must be configured. Most users deploy via docker or a distribution package and should follow the appropriate guide instead. This is just a summary for the impatient. See the full documentation.

Tip

Avoid using a sub-domain for your server_name. You can always delegate later with a .well-known file, but you can never change your server_name.

2. Setup TLS certificates. Most users enjoy the Caddy reverse-proxy which automates their certificate renewal. Advanced users can load their own TLS certificates using the configuration and Tuwunel can be deployed without a reverse proxy. Example /etc/caddy/Caddyfile configuration with Element unzipped to /var/www/element:

tuwunel.me, tuwunel.me:8448 {
    reverse_proxy localhost:8008
}
web.tuwunel.me {
    root * /var/www/element/
    file_server
}

caddy reload --config /etc/caddy/Caddyfile

3. Start the server, connect your client and register your username. The first registration is granted server admin.

Tip

Configure a secret registration_token and set allow_registration = true

🤗 Did you find this and other documentation helpful? We would love to hear feedback about setting up Tuwunel.

Migrating to Tuwunel

Can I migrate from
conduwuit? Yes. This will be supported at a minimum for one year, but likely indefinitely.
Synapse? Not yet, but this is planned and an important issue. Subscribe to #2.
Conduit? Not right now, but this is planned for the near future. Subscribe to #41.
Any other fork of Conduit? No. The migration must be explicitly listed in this table.

Caution

Never switch between different forks of Conduit or you will corrupt your database. All derivatives of Conduit share the same linear database version without any awareness of other forks. The database will permanently corrupt and we will not be able to help you.

Migrating from conduwuit

Migrating from conduwuit to Tuwunel just works. In technical parlance it is a "binary swap." All you have to do is update to the latest Tuwunel and change the path to the executable from conduwuit to tuwunel.

Anything else named "conduwuit" is still recognized, this includes environment variables with prefixes such as CONDUWUIT_. In fact, CONDUIT_ is still recognized for our legacy users. You may have noticed that various configs, yamls, services, users, and other items were renamed, but if you were a conduwuit user we recommend against changing anything at all. This will keep things simple. If you are not sure please ask. If you found out that something did in fact need to be changed please open an issue immediately.

Upgrading & Downgrading Tuwunel

We strive to make moving between versions of Tuwunel safe and easy. Downgrading Tuwunel is always safe but often prevented by a guard. An error will indicate the downgrade is not possible and a newer version which does not error must be sought.

Branches

The main branch is always reasonably safe to run. We understand the propensity for users to simply clone the main branch to get up and running, and we're obliged to ensure it's always viable. Nevertheless, only tagged releases are true releases.

Container Tracking

Important

We strongly advise tracking the :latest tag when automatically updating.

Tracking :latest gives us the necessary discretion to keep you on the appropriate stable version. We discourage tracking the main branch unless frequent restarts are acceptable. Alternatively, tracking the :preview tag provides the latest release-candidate becoming equivalent to :latest after a release. Tracking the :preview tag is a worthy alternative to the main branch, with turbulence limited to release-time.

Getting Help & Support

If you are opposed to using github, or if private discussion is required such as for security disclosures, or for any other reason, I would be happy to receive your DM at @jason:tuwunel.me. This will not be bothering me as it would be my pleasure to help you when possible. As an emergency contact you can send an email to jasonzemos@gmail.com.

Tuwunel Fanclub

We have an unofficial community-run chat which is publicly accessible at #tuwunel:matrix.org. The members, content, or moderation decisions of this room are not in any way related or endorsed by this project or its sponsors, and not all project staff will be present there. There will be at least some presence by staff to offer assistance so long as the room remains in minimally good standing.

Tuwunel💕

Tuwunel's theme is empathy in communication defined by the works of Edith Stein. Empathy is the basis for how we approach every message and our responsibility to the other in every conversation.