Этот репозиторий содержит снятый с производства homeserver Matrix, написанный на Rust, Ruma.
Подробную информацию о смерти проекта можно найти в этом сообщении в блоге.
Ниже вы можете найти предыдущее содержимое этого файла readme. Для остальных файлов перейдите в ветку master.
Ruma — homeserver Matrix, написанный на Rust.
Если вы заинтересованы в проекте, загляните на сайт Ruma, подпишитесь на ruma_io в Твиттере и пообщайтесь с нами на #ruma:matrix.org в Matrix (также доступно через #ruma в сети IRC freenode).
Целью Ruma как проекта является предоставление полной реализации homeserver Matrix, сервера идентификации Matrix, клиентской библиотеки Matrix и сервисов приложений Matrix. Этот репозиторий, в частности, предназначен для реализации homeserver Matrix. homeserver Ruma будет упакован в виде одного исполняемого файла для небольших развертываний и в виде нескольких исполняемых файлов для крупных развертываний, которые требуют независимого масштабирования различных частей homeserver . Дополнительные библиотеки Matrix, используемые Ruma, можно найти в организации Ruma на GitHub.
Подробное описание того, какие Matrix API на данный момент поддерживаются Ruma, см. в документе STATUS.
Ruma включает в себя настройку разработки с использованием Docker. Чтобы установить Docker, ознакомьтесь с инструкциями по установке для OS X, Linux или Windows. (Обратите внимание, что необходимы как Docker, так и Docker Compose, но стандартные способы установки включают оба.)
Примечание . Требуются docker-compose
версии 1.6 или выше и docker-engine
версии 1.10.0 или выше.
Груз является основной отправной точкой для развития. Используйте сценарий оболочки script/cargo
так же, как вы обычно используете Plain cargo
. Это запустит команду Cargo внутри контейнера Docker, в котором уже установлен Rust и другие зависимости. Он также автоматически запустит базу данных PostgreSQL внутри контейнера. При первом запуске команды с помощью script/cargo
загрузка образов Docker займет некоторое время.
Чтобы собрать Руму, запустите script/cargo build --bin ruma
. Приложение будет записано в target/debug/ruma
. Вы также можете собрать и запустить Ruma за один шаг с помощью script/cargo run --bin ruma
. (При запуске через Cargo аргументы самой ruma
должны идти после двух дефисов, например, script/cargo run --bin ruma -- run
.)
Для Румы требуется Rust 1.34 или новее.
Docker используется, чтобы облегчить жизнь каждому, включая упаковку Rust вместе с другими зависимостями Ruma и управление тестовыми базами данных PostgreSQL, и все это без каких-либо предположений о хост-системе. Если вы действительно хотите избежать Docker, вам придется настроить свою среду разработки так, чтобы она соответствовала предположениям, сделанным в коде Ruma. В частности, это означает как минимум минимальную версию Rust, все зависимости системного уровня, такие как libsodium, и установку PostgreSQL с соответствующими разрешениями, доступными по адресу и порту, используемым в src/test.rs
.
Чтобы создать документацию по API для Ruma, запустите script/cargo doc
. Затем откройте target/doc/ruma/index.html
в своем браузере. Обратите внимание, что эта документация предназначена для внутреннего кода Ruma на Rust, а не для общедоступного Matrix API. Документация для пользователей будет размещена на веб-сайте Ruma.
Ruma включает набор интеграционных тестов. После установки Docker запустите script/cargo test
чтобы запустить набор тестов.
Для Ruma требуется файл конфигурации с именем ruma.json
, ruma.toml
или ruma.yaml
/ ruma.yml
написанный в формате JSON, TOML или YAML соответственно. Этот файл должен находиться в рабочем каталоге, из которого выполняется ruma
. Ruma попытается загрузить файл конфигурации в том же порядке, остановившись на первом найденном файле. Файл конфигурации в формате JSON будет выглядеть примерно так:
{
"version" : " 1 " ,
"domain" : " example.com " ,
"macaroon_secret_key" : " qbnabRiFu5fWzoijGmc6Kk2tRox3qJSWvL3VRl4Vhl8= " ,
"postgres_url" : " postgres://username:[email protected]:5432/ruma "
}
Полный список атрибутов в конфигурации выглядит следующим образом:
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
Прежде чем запускать ruma run
, убедитесь, что в рабочем каталоге есть файл конфигурации с именем ruma.json
и что сервер PostgreSQL запущен и доступен в расположении, указанном в файле конфигурации. Ruma автоматически создаст базу данных (если она еще не существует) и будет управлять схемой базы данных. Вы несете ответственность за предоставление Ruma действительного URL-адреса сервера PostgreSQL и роли, которая может выполнять эти операции.
Ruma включает конечную точку HTTP для обслуживания данных Swagger по адресу http://example.com/ruma/swagger.json (конечно, заменяя хост и порт вашего сервера Ruma на example.com). Наведите на нее копию пользовательского интерфейса Swagger. URL-адрес для просмотра полной документации по клиентскому API Matrix. Обратите внимание, что Ruma еще не реализует все эти конечные точки API.
См. документ «ВКЛАД».
Рума посвящается моей лучшей подруге Тамаре Бойенс, которая скончалась в январе 2017 года. Мы с ней часами общались онлайн каждый день. Она была значительной частью моей мотивации при создании Ruma, потому что наше онлайн-общение было тем местом, где мы проводили больше всего времени вместе после того, как оба уехали из города, где мы встретились, и мы всегда искали систему, которая могла бы решить наши обиды с помощью все некачественные варианты, которые у нас были для общения.
— Джимми Куадра
Массачусетский технологический институт