Mirror of conduit for easier access.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Go to file
Jonathan de Jong e1b89c1248 apply lint suggestions and version bump 3 years ago
.gitea Change license to Apache-2.0 4 years ago
.gitlab/issue_templates Chore: Add Issue Template 3 years ago
.vscode add settings.json 3 years ago
debian Sqlite 3 years ago
docker Change default port in docker to the new 3 years ago
src apply lint suggestions and version bump 3 years ago
tests Merge remote-tracking branch 'famedly/master' into develop 3 years ago
.dockerignore Update dockerignore 4 years ago
.gitignore Sqlite 3 years ago
.gitlab-ci.yml Use thin-lto [1] for "better" release builds. 3 years ago
APPSERVICES.md docs: APPSERVICES setup guide 3 years ago
CROSS_COMPILE.md Merge branch 'tls-name' into 'master' 3 years ago
Cargo.lock update rocket and lock 3 years ago
Cargo.toml update rocket and lock 3 years ago
DEPLOY.md Sqlite 3 years ago
Dockerfile Change default port in docker to the new 3 years ago
LICENSE Change license to Apache-2.0 4 years ago
README.md Move the link to cross-compiling guide to DEPLOY.md 3 years ago
conduit-example.toml Sqlite 3 years ago
docker-compose.yml Sqlite 3 years ago
rust-toolchain apply lint suggestions and version bump 3 years ago
rustfmt.toml chore: get rid of warnings 3 years ago

README.md

Conduit

A Matrix homeserver written in Rust

What is the goal?

A fast Matrix homeserver that's easy to set up and just works. You can install it on a mini-computer like the Raspberry Pi to host Matrix for your family, friends or company.

Can I try it out?

Yes! Just open a Matrix client (https://app.element.io or Element Android for example) and register on the https://conduit.koesters.xyz homeserver.

What is it built on?

  • Ruma: Useful structures for endpoint requests and responses that can be (de)serialized
  • Sled: A simple (key, value) database with good performance
  • Rocket: A flexible web framework

What is the current status?

Conduit can already be used chat with other users on Conduit, chat with users from other Matrix servers and even to chat with users on other platforms using appservices. When chatting with users on the same Conduit server, everything should work assuming you use a compatible client.

You should not join Matrix rooms without asking the admins first. We do not know whether Conduit is safe for general use yet, so you should assume there is some chance that it breaks rooms permanently for all participating users. We are not aware of such a bug today, but we would like to do more testing.

There are still a few important features missing:

  • Database stability (currently you might have to do manual upgrades or even wipe the db for new versions)
  • End-to-end encrypted chats over federation
  • Typing, presence, read receipts etc. over federation
  • Lots of testing

Check out the Conduit 1.0 Release Milestone.

How can I deploy my own?

Deploy

Download or compile a Conduit binary, set up the config and call it from somewhere like a systemd script. Read more

If you want to connect an Appservice to Conduit, take a look at the Appservice Guide.

Deploy using a Debian package

You need to have the deb helper command installed that creates Debian packages from Cargo projects (see cargo-deb for more info):

$ cargo install cargo-deb

Then, you can create and install a Debian package at a whim:

$ cargo deb
$ dpkg -i target/debian/matrix-conduit_0.1.0_amd64.deb

This will build, package, install, configure and start Conduit. Read more.

Note that cargo deb supports cross-compilation too! Official Debian packages will follow once Conduit starts to have stable releases.

Deploy using Docker

Pull and run the docker image with

docker pull matrixconduit/matrix-conduit:latest
docker run -d -p 8448:8000 -v ~/conduit.toml:/srv/conduit/conduit.toml -v db:/srv/conduit/.local/share/conduit matrixconduit/matrix-conduit:latest

Note: You also need to supply a conduit.toml config file, you can find an example here. Or you can pass in -e CONDUIT_CONFIG="" and configure Conduit purely with env vars.

Or build and run it with docker or docker-compose. Read more

How can I contribute?

  1. Look for an issue you would like to work on and make sure it's not assigned to other users
  2. Ask someone to assign the issue to you (comment on the issue or chat in #conduit:nordgedanken.dev)
  3. Fork the repo and work on the issue. #conduit:nordgedanken.dev is happy to help :)
  4. Submit a MR

Donate

Liberapay: https://liberapay.com/timokoesters/
Bitcoin: bc1qnnykf986tw49ur7wx9rpw2tevpsztvar5x8w4n

Lightning Bolt Logo: https://github.com/mozilla/fxemoji/blob/gh-pages/svgs/nature/u26A1-bolt.svg
Logo License: https://github.com/mozilla/fxemoji/blob/gh-pages/LICENSE.md