1
Fork 0
mirror of https://github.com/maelstrom-rs/maelstrom.git synced 2025-12-07 13:45:44 +00:00
[Pull Mirror] High performance Matrix Home Server in rust.
Find a file
Aiden McClelland da6e6cbe6a
Merge pull request #132 from edwardvear/get-display-name
Add getDisplayName endpoint
2020-08-13 15:36:14 -06:00
.github adds logo 2020-04-06 16:26:00 +02:00
schema Added route for get displayname, as well as a dummy handler and associated response type. Also added a profile table to the postgres schema. 2020-05-25 18:19:50 -05:00
src Added test case 2020-05-25 22:11:29 -05:00
.gitignore Change from TOML to YML 2020-05-01 23:15:40 +02:00
Cargo.lock Change query decoding and add jti logout check todo 2020-05-06 23:08:58 +02:00
Cargo.toml Change query decoding and add jti logout check todo 2020-05-06 23:08:58 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2020-04-04 13:53:41 +02:00
LICENSE-APACHE Create LICENSE-APACHE 2020-04-04 13:48:03 +02:00
LICENSE-MIT Create LICENSE-MIT 2020-04-04 13:46:47 +02:00
README.md Change from TOML to YML 2020-05-01 23:15:40 +02:00
sample-private.pem interactive auth 2020-04-20 15:02:37 -06:00
Settings-example.yml Change from TOML to YML 2020-05-01 23:15:40 +02:00
Settings-test.yml Change from TOML to YML 2020-05-01 23:15:40 +02:00

Maelstrom

A high-performance Matrix Home-Server written in Rust designed to have a plugable storage engine, scalable, and light on resources.

General discussion for development is at #maelstrom-server:matrix.org

Project Status

This is a brand new project under daily active development. It is not currently in usable form yet.

Completed Features

You can review the Closed matrix-spec Issues in the issue tracker for a list of completed features.

Project Goals

  1. Performance, both in terms of scale and minimal resources.
  2. From scratch design, no legacy architecture decisions.
  3. Support for embedded (Raspi, Jetson Nano, etc.) or clustered deployment with configurable storage engine (e.g. Postgres, Sqlite, Sled, etc.).
  4. First-class e2e encryption and p2p support (as Matrix.org works towards a direction).
  5. Designed for not only chat, but decentralized IoT use cases as well.
  6. SOCKS5 Proxy support to enable .onion homeservers (Relevant Synapse Issue)

Why

This project started due to a strong interest/support of Web 3.0 (decentralized web applications). Additionally, having a performant embeddable home server can enable a stronger usecase for decentralized IoT applications in addition to chat.

Building & Running

Using Rust

# install rust if needed
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# clone repo and cd
git clone https://github.com/maelstrom-rs/maelstrom.git && cd maelstrom

# copy .env-example and set with your specific settings
cp Settings-example.yml Settings.yml

# build & run
cargo run --release

Generating the AUTH_KEY

openssl ecparam -genkey -name prime256v1 | openssl pkcs8 -topk8 -nocrypt -out ec_private.pem

Make sure you set AUTH_KEY_FILE to path/to/ec_private.pem

Technologies Used

  • Actix-web A high performance webserver written in Rust
  • sqlx A rust version of the popular sqlx db library
  • jwt
  • Ruma

Similar Projects

The following are some other Rust based Home Server projects worth looking at:

  • Ruma The server isn't maintained, but he client libraries appear so.
  • Conduit A new Rust based Home Server under development.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Maelstrom by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.