Ce référentiel contient le homeserver Matrix abandonné, écrit en Rust, Ruma.
Pour plus de détails sur la mort du projet, consultez cet article de blog.
Ci-dessous, vous pouvez retrouver le contenu précédent de ce fichier readme. Pour le reste des fichiers, rendez-vous dans la branche master.
Ruma est un homeserver Matrix écrit en Rust.
Si le projet vous intéresse, veuillez consulter le site Web de Ruma, suivez ruma_io sur Twitter et discutez avec nous sur #ruma:matrix.org sur Matrix (également accessible via #ruma sur le réseau IRC freenode.)
L'objectif de Ruma en tant que projet est de fournir une implémentation complète d'un homeserver Matrix, d'un serveur d'identité Matrix, d'une bibliothèque client Matrix et de services d'application Matrix. Ce référentiel vise notamment à implémenter un homeserver Matrix. Le homeserver Ruma sera présenté sous la forme d'un seul exécutable pour les déploiements à petite échelle, et sous forme de plusieurs exécutables pour les déploiements à grande échelle qui doivent faire évoluer différentes parties du homeserver de manière indépendante. Des bibliothèques Matrix supplémentaires utilisées par Ruma peuvent être trouvées dans l'organisation Ruma sur GitHub.
Pour une vue détaillée des API Matrix prises en charge par Ruma jusqu'à présent, consultez le document STATUS.
Ruma inclut une configuration de développement utilisant Docker. Pour installer Docker, consultez les instructions d'installation pour OS X, Linux ou Windows. (Notez que Docker et Docker Compose sont nécessaires, mais les méthodes d'installation standard incluent les deux.)
Remarque : docker-compose
version 1.6 ou supérieure et docker-engine
version 1.10.0 ou supérieure sont requis.
Le cargo est le principal point d’entrée du développement. Utilisez le script/cargo
shell script comme vous utiliseriez normalement plain cargo
. Cela exécutera la commande Cargo dans un conteneur Docker sur lequel Rust et d'autres dépendances sont déjà installées. Il démarrera également automatiquement une base de données PostgreSQL dans un conteneur. La première fois que vous exécutez une commande avec script/cargo
, le téléchargement des images Docker prendra un certain temps.
Pour construire Ruma, exécutez script/cargo build --bin ruma
. L'application sera écrite dans target/debug/ruma
. Vous pouvez également créer et exécuter Ruma en une seule étape avec script/cargo run --bin ruma
. (Lorsqu'ils sont exécutés via Cargo, les arguments de ruma
lui-même doivent être placés après deux tirets, par exemple script/cargo run --bin ruma -- run
.)
Ruma nécessite Rust 1.34 ou version ultérieure.
Docker est utilisé pour faciliter la vie de chacun, notamment en empaquetant Rust avec les autres dépendances de Ruma et en gérant les bases de données de test PostgreSQL, le tout sans rien supposer du système hôte. Si vous voulez vraiment éviter Docker, c'est à vous de configurer votre environnement de développement pour qu'il corresponde aux hypothèses formulées par le code dans Ruma. En particulier, cela signifie au moins la version minimale de Rust, toutes les dépendances au niveau du système telles que libsodium et une installation PostgreSQL avec les autorisations appropriées disponibles à l'adresse et au port utilisés dans src/test.rs
.
Pour générer la documentation API pour Ruma, exécutez script/cargo doc
. Ensuite, ouvrez target/doc/ruma/index.html
dans votre navigateur. Notez que cette documentation concerne le code Rust interne de Ruma, et non l'API Matrix publique. La documentation destinée aux utilisateurs sera disponible sur le site Web de Ruma.
Ruma comprend une suite de tests d'intégration. Une fois Docker installé, exécutez script/cargo test
pour exécuter la suite de tests.
Ruma nécessite un fichier de configuration nommé ruma.json
, ruma.toml
ou ruma.yaml
/ ruma.yml
écrit respectivement en JSON, TOML ou YAML. Ce fichier doit se trouver dans le répertoire de travail à partir duquel ruma
est exécuté. Ruma tentera de charger le fichier de configuration dans le même ordre, en s'arrêtant au premier qu'il trouvera. Un fichier de configuration ressemblerait à ceci, au format JSON :
{
"version" : " 1 " ,
"domain" : " example.com " ,
"macaroon_secret_key" : " qbnabRiFu5fWzoijGmc6Kk2tRox3qJSWvL3VRl4Vhl8= " ,
"postgres_url" : " postgres://username:[email protected]:5432/ruma "
}
La liste complète des attributs dans la configuration est la suivante :
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
Avant d'exécuter ruma run
, assurez-vous d'avoir un fichier de configuration dans le répertoire de travail nommé ruma.json
et qu'un serveur PostgreSQL est en cours d'exécution et disponible à l'emplacement spécifié dans le fichier de configuration. Ruma créera automatiquement la base de données (si elle n'existe pas déjà) et gérera le schéma de la base de données. Vous êtes responsable de fournir à Ruma une URL de serveur PostgreSQL valide et un rôle pouvant effectuer ces opérations.
Ruma inclut un point de terminaison HTTP pour servir les données Swagger sur http://example.com/ruma/swagger.json (en remplaçant l'hôte et le port de votre serveur Ruma par exemple.com, bien sûr.) Pointez une copie de l'interface utilisateur Swagger vers ce URL pour consulter la documentation complète de l'API du client Matrix. Notez que Ruma n’implémente pas encore tous ces points de terminaison d’API.
Voir le document CONTRIBUANT.
Ruma est dédiée à ma meilleure amie, Tamara Boyens, décédée en janvier 2017. Elle et moi avons parlé en ligne pendant des heures chaque jour. Elle a été une grande partie de ma motivation dans la création de Ruma, car notre communication en ligne était l'endroit où nous passions le plus de temps ensemble après avoir quitté la ville où nous nous sommes rencontrés, et nous étions toujours à la recherche d'un système qui réglerait nos griefs avec tous les choix médiocres que nous avions pour discuter.
—Jimmy Cuadra
MIT