Este repositorio contiene el homeserver Matrix descontinuado escrito en Rust, Ruma.
Para obtener detalles sobre la muerte del proyecto, consulte esta publicación de blog.
A continuación, puede encontrar el contenido anterior de este archivo Léame. Para el resto de archivos, vaya a la rama master.
Ruma es un homeserver de Matrix escrito en Rust.
Si está interesado en el proyecto, eche un vistazo al sitio web de Ruma, siga a ruma_io en Twitter y charle con nosotros en #ruma:matrix.org en Matrix (también accesible a través de #ruma en la red IRC de freenode).
El objetivo de Ruma como proyecto es proporcionar una implementación completa de un homeserver Matrix, un servidor de identidad Matrix, una biblioteca cliente Matrix y servicios de aplicaciones Matrix. Este repositorio en particular tiene como objetivo implementar un homeserver Matrix. El homeserver Ruma se empaquetará como un único ejecutable para implementaciones de pequeña escala y como ejecutables múltiples para implementaciones grandes que necesiten escalar diferentes partes del homeserver de forma independiente. Se pueden encontrar bibliotecas Matrix adicionales utilizadas por Ruma en la organización Ruma en GitHub.
Para obtener una vista detallada de qué API de Matrix son compatibles con Ruma hasta el momento, consulte el documento ESTADO.
Ruma incluye una configuración de desarrollo utilizando Docker. Para instalar Docker, consulte las instrucciones de instalación para OS X, Linux o Windows. (Tenga en cuenta que se necesitan Docker y Docker Compose, pero las formas estándar de instalación incluyen ambos).
Nota : Se requieren docker-compose
versión 1.6 o superior y docker-engine
versión 1.10.0 o superior.
La carga es el principal punto de entrada al desarrollo. Utilice el script script/cargo
shell como lo haría normalmente con cargo
simple. Esto ejecutará el comando Cargo dentro de un contenedor Docker que ya tiene Rust y otras dependencias instaladas. También iniciará automáticamente una base de datos PostgreSQL dentro de un contenedor. La primera vez que ejecute un comando con script/cargo
, tardará algún tiempo en descargar las imágenes de Docker.
Para construir Ruma, ejecute script/cargo build --bin ruma
. La aplicación se escribirá en target/debug/ruma
. También puede compilar y ejecutar Ruma en un solo paso con script/cargo run --bin ruma
. (Cuando se ejecuta a través de Cargo, los argumentos para ruma
deben venir después de dos guiones, por ejemplo, script/cargo run --bin ruma -- run
.)
Ruma requiere Rust 1.34 o posterior.
Docker se utiliza para hacer la vida de todos más fácil, incluido el empaquetado de Rust junto con otras dependencias de Ruma y la administración de bases de datos PostgreSQL de prueba, todo sin asumir nada sobre el sistema host. Si realmente desea evitar Docker, depende de usted configurar su entorno de desarrollo para que coincida con las suposiciones hechas por el código en Ruma. En particular, esto significa al menos la versión mínima de Rust, todas las dependencias a nivel del sistema, como libsodium, y una instalación de PostgreSQL con los permisos adecuados disponibles en la dirección y el puerto utilizados en src/test.rs
.
Para generar documentación API para Ruma, ejecute script/cargo doc
. Luego abra target/doc/ruma/index.html
en su navegador. Tenga en cuenta que esta documentación es para el código Rust interno de Ruma, no para la API Matrix pública. La documentación de cara al usuario estará disponible en el sitio web de Ruma.
Ruma incluye un conjunto de pruebas de integración. Una vez que Docker esté instalado, ejecute script/cargo test
para ejecutar el conjunto de pruebas.
Ruma requiere un archivo de configuración llamado ruma.json
, ruma.toml
o ruma.yaml
/ ruma.yml
escrito en JSON, TOML o YAML, respectivamente. Este archivo debe estar en el directorio de trabajo desde donde se ejecuta ruma
. Ruma intentará cargar el archivo de configuración en ese mismo orden, deteniéndose en el primero que encuentre. Un archivo de configuración se vería así, en formato JSON:
{
"version" : " 1 " ,
"domain" : " example.com " ,
"macaroon_secret_key" : " qbnabRiFu5fWzoijGmc6Kk2tRox3qJSWvL3VRl4Vhl8= " ,
"postgres_url" : " postgres://username:[email protected]:5432/ruma "
}
La lista completa de atributos en la configuración es la siguiente:
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 ejecutar ruma run
, asegúrese de tener un archivo de configuración en el directorio de trabajo llamado ruma.json
y de que un servidor PostgreSQL esté ejecutándose y disponible en la ubicación especificada en el archivo de configuración. Ruma creará automáticamente la base de datos (si aún no existe) y administrará el esquema de la base de datos. Usted es responsable de proporcionarle a Ruma una URL válida del servidor PostgreSQL y una función que pueda realizar estas operaciones.
Ruma incluye un punto final HTTP para servir datos de Swagger en http://example.com/ruma/swagger.json (sustituyendo el host y el puerto de su servidor Ruma por ejemplo.com, por supuesto). Apunte una copia de la interfaz de usuario de Swagger a este URL para ver la documentación completa de la API del cliente Matrix. Tenga en cuenta que Ruma aún no implementa todos estos puntos finales de API.
Ver el documento CONTRIBUYENTE.
Ruma está dedicada a mi mejor amiga, Tamara Boyens, quien falleció en enero de 2017. Ella y yo hablábamos en línea durante horas todos los días. Ella fue una gran parte de mi motivación para iniciar Ruma, porque nuestra comunicación en línea fue donde pasamos la mayor parte del tiempo juntos después de que ambos nos mudamos lejos de la ciudad donde nos conocimos, y siempre estábamos buscando un sistema que solucionara nuestras quejas con todas las opciones mediocres que teníamos para charlar.
-Jimmy Cuadra
MIT