2020-04-09 18:39:45 +03:00
# Conduit
### A Matrix homeserver written in Rust
2020-04-03 18:53:06 +03:00
2020-08-12 22:17:53 +03:00
#### What is the goal?
2020-05-29 10:54:30 +03:00
2020-10-18 14:23:06 +03:00
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.
2020-05-21 18:36:07 +03:00
2021-03-04 17:28:28 +03:00
2020-05-29 10:54:30 +03:00
#### Can I try it out?
2020-04-03 18:53:06 +03:00
2020-10-18 14:23:06 +03:00
Yes! Just open a Matrix client (< https: / / app . element . io > or Element Android for
example) and register on the `https://conduit.koesters.xyz` homeserver.
2020-05-29 10:54:30 +03:00
2021-03-04 17:28:28 +03:00
2021-05-28 00:14:32 +03:00
#### What is it built on?
2021-03-04 17:28:28 +03:00
- [Ruma ](https://www.ruma.io ): Useful structures for endpoint requests and
responses that can be (de)serialized
- [Sled ](https://github.com/spacejam/sled ): A simple (key, value) database with
good performance
- [Rocket ](https://rocket.rs ): A flexible web framework
2021-04-20 13:53:20 +03:00
#### What is the current status?
2021-03-04 17:28:28 +03:00
2021-04-20 13:53:20 +03:00
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)
2021-07-20 22:18:37 +03:00
- Edge cases for end-to-end encryption over federation
- Typing and presence over federation
2021-03-04 17:28:28 +03:00
- Lots of testing
Check out the [Conduit 1.0 Release Milestone ](https://gitlab.com/famedly/conduit/-/milestones/3 ).
2020-05-29 10:54:30 +03:00
#### How can I deploy my own?
2020-10-20 15:18:20 +03:00
##### Deploy
2020-04-03 18:53:06 +03:00
2021-03-04 17:28:28 +03:00
Download or compile a Conduit binary, set up the config and call it from somewhere like a systemd script. [Read
2020-10-20 15:18:20 +03:00
more](DEPLOY.md)
2020-08-12 22:17:53 +03:00
2021-05-22 14:39:31 +03:00
If you want to connect an Appservice to Conduit, take a look at the [Appservice Guide ](APPSERVICES.md ).
2021-05-28 00:14:32 +03:00
##### Deploy using a Debian package
2021-04-23 20:11:42 +03:00
You need to have the `deb` helper command installed that creates Debian packages from Cargo projects (see [cargo-deb ](https://github.com/mmstick/cargo-deb/ ) for more info):
```shell
$ cargo install cargo-deb
```
Then, you can create and install a Debian package at a whim:
```shell
$ cargo deb
$ dpkg -i target/debian/matrix-conduit_0.1.0_amd64.deb
```
This will build, package, install, configure and start Conduit. [Read more ](debian/README.Debian ).
Note that `cargo deb` supports [cross-compilation ](https://github.com/mmstick/cargo-deb/#cross-compilation ) too!
Official Debian packages will follow once Conduit starts to have stable releases.
2020-10-20 15:18:20 +03:00
##### Deploy using Docker
2020-08-12 22:17:53 +03:00
2020-08-25 00:30:39 +03:00
Pull and run the docker image with
``` bash
docker pull matrixconduit/matrix-conduit:latest
2021-08-17 15:44:53 +03:00
docker run -d -p 8448:6167 -v ~/conduit.toml:/srv/conduit/conduit.toml -v db:/srv/conduit/.local/share/conduit matrixconduit/matrix-conduit:latest
2020-08-25 00:30:39 +03:00
```
2021-03-12 23:07:43 +03:00
> <b>Note:</b> You also need to supply a `conduit.toml` config file, you can find an example [here](./conduit-example.toml).
2021-03-16 11:14:11 +03:00
> Or you can pass in `-e CONDUIT_CONFIG=""` and configure Conduit purely with env vars.
2021-03-12 23:07:43 +03:00
2020-08-25 00:30:39 +03:00
Or build and run it with docker or docker-compose. [Read more ](docker/README.md )
2020-08-04 23:06:13 +03:00
2020-05-29 11:04:19 +03:00
2020-04-12 23:29:48 +03:00
#### How can I contribute?
2020-10-18 14:23:06 +03:00
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
2021-03-04 17:28:28 +03:00
#conduit:nordgedanken .dev)
3. Fork the repo and work on the issue. #conduit:nordgedanken .dev is happy to help :)
4. Submit a MR
2020-04-12 23:29:48 +03:00
2020-04-08 23:28:03 +03:00
#### Donate
2020-06-16 09:43:46 +03:00
Liberapay: < https: / / liberapay . com / timokoesters / > \
2020-06-16 09:21:06 +03:00
Bitcoin: `bc1qnnykf986tw49ur7wx9rpw2tevpsztvar5x8w4n`
2021-03-04 23:26:30 +03:00
#### Logo
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