Este repositório contém o homeserver Matrix descontinuado escrito em Rust, Ruma.
Para obter detalhes sobre a morte do projeto, consulte esta postagem do blog.
Abaixo, você pode encontrar o conteúdo anterior deste leia-me. Para o restante dos arquivos, vá para o branch master.
Ruma é um homeserver Matrix escrito em Rust.
Se você estiver interessado no projeto, dê uma olhada no site da Ruma, siga ruma_io no Twitter e converse conosco em #ruma:matrix.org no Matrix (também acessível via #ruma na rede IRC freenode).
O objetivo do Ruma como projeto é fornecer uma implementação completa de um homeserver Matrix, um servidor de identidade Matrix, uma biblioteca cliente Matrix e serviços de aplicativos Matrix. Este repositório em particular visa implementar um homeserver Matrix. O homeserver Ruma será empacotado como um único executável para implantações de pequena escala e como vários executáveis para implantações grandes que precisam escalar diferentes partes do homeserver de forma independente. Bibliotecas Matrix adicionais usadas por Ruma podem ser encontradas na organização Ruma no GitHub.
Para uma visão detalhada de quais APIs Matrix são suportadas pelo Ruma até o momento, consulte o documento STATUS.
Ruma inclui uma configuração de desenvolvimento usando Docker. Para instalar o Docker, consulte as instruções de instalação para OS X, Linux ou Windows. (Observe que o Docker e o Docker Compose são necessários, mas as formas padrão de instalação incluem ambos.)
Nota : docker-compose
versão 1.6 ou superior e docker-engine
versão 1.10.0 ou superior são necessários.
A carga é a principal porta de entrada para o desenvolvimento. Use o script de shell script/cargo
como você normalmente usaria cargo
simples. Isso executará o comando Cargo dentro de um contêiner Docker que já possui Rust e outras dependências instaladas. Ele também iniciará automaticamente um banco de dados PostgreSQL dentro de um contêiner. Na primeira vez que você executar um comando com script/cargo
, levará algum tempo para baixar as imagens do Docker.
Para construir Ruma, execute script/cargo build --bin ruma
. O aplicativo será gravado em target/debug/ruma
. Você também pode construir e executar o Ruma em uma única etapa com script/cargo run --bin ruma
. (Quando executado via Cargo, os argumentos para o próprio ruma
devem vir depois de dois travessões, por exemplo script/cargo run --bin ruma -- run
.)
Ruma requer Rust 1.34 ou posterior.
O Docker é usado para facilitar a vida de todos, incluindo o empacotamento do Rust junto com outras dependências do Ruma e o gerenciamento de bancos de dados PostgreSQL de teste, tudo sem assumir nada sobre o sistema host. Se você realmente deseja evitar o Docker, cabe a você configurar seu ambiente de desenvolvimento para corresponder às suposições feitas pelo código em Ruma. Em particular, isso significa pelo menos a versão mínima do Rust, todas as dependências de nível de sistema, como libsodium, e uma instalação do PostgreSQL com permissões adequadas disponíveis no endereço e porta usados em src/test.rs
.
Para gerar documentação de API para Ruma, execute script/cargo doc
. Em seguida, abra target/doc/ruma/index.html
em seu navegador. Observe que esta documentação é para o código Rust interno de Ruma, não para a API Matrix voltada ao público. A documentação voltada ao usuário estará disponível no site da Ruma.
Ruma inclui um conjunto de testes de integração. Depois que o Docker estiver instalado, execute script/cargo test
para executar o conjunto de testes.
Ruma requer um arquivo de configuração chamado ruma.json
, ruma.toml
ou ruma.yaml
/ ruma.yml
escrito em JSON, TOML ou YAML, respectivamente. Este arquivo deve estar no diretório de trabalho a partir do qual ruma
é executado. Ruma tentará carregar o arquivo de configuração na mesma ordem, parando no primeiro que encontrar. Um arquivo de configuração seria parecido com isto, no formato JSON:
{
"version" : " 1 " ,
"domain" : " example.com " ,
"macaroon_secret_key" : " qbnabRiFu5fWzoijGmc6Kk2tRox3qJSWvL3VRl4Vhl8= " ,
"postgres_url" : " postgres://username:[email protected]:5432/ruma "
}
A lista completa de atributos na configuração é a seguinte:
ruma 0.1.0
A Matrix homeserver .
USAGE:
ruma [FLAGS] [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
help Prints this message or the help message of the given subcommand(s)
run Runs the Ruma server
secret Generates a random value to be used as a macaroon secret key
Antes de executar ruma run
, certifique-se de ter um arquivo de configuração no diretório de trabalho chamado ruma.json
e de que um servidor PostgreSQL esteja em execução e disponível no local especificado no arquivo de configuração. Ruma criará automaticamente o banco de dados (se ainda não existir) e gerenciará o esquema do banco de dados. Você é responsável por fornecer à Ruma uma URL de servidor PostgreSQL válida e uma função que possa executar essas operações.
Ruma inclui um endpoint HTTP para servir dados Swagger em http://example.com/ruma/swagger.json (substituindo o host e a porta do seu servidor Ruma por example.com, é claro.) Aponte uma cópia da UI do Swagger para este URL para ver a documentação completa da API do cliente Matrix. Observe que Ruma ainda não implementa todos esses endpoints de API.
Veja o documento CONTRIBUINDO.
Ruma é dedicada à minha melhor amiga, Tamara Boyens, que faleceu em janeiro de 2017. Ela e eu conversamos online durante horas todos os dias. Ela foi uma grande parte da minha motivação para começar a Ruma, porque nossa comunicação on-line era onde passávamos mais tempo juntos depois que ambos nos mudamos da cidade onde nos conhecemos, e estávamos sempre procurando um sistema que resolvesse nossas queixas com todas as opções abaixo da média que tínhamos para conversar.
-Jimmy Cuadra
MIT