이 저장소에는 Rust, Ruma로 작성된 단종된 Matrix homeserver 포함되어 있습니다.
프로젝트 중단에 대한 자세한 내용은 이 블로그 게시물을 참조하세요.
아래에서 이 Readme의 이전 내용을 찾을 수 있습니다. 나머지 파일은 마스터 브랜치로 이동하세요.
Ruma는 Rust로 작성된 Matrix homeserver 입니다.
프로젝트에 관심이 있다면 Ruma 웹사이트를 살펴보고 Twitter에서 ruma_io를 팔로우하고 Matrix의 #ruma:matrix.org에서 채팅해 보세요(프리노드 IRC 네트워크의 #ruma를 통해서도 접속 가능).
프로젝트로서 Ruma의 목표는 Matrix homeserver , Matrix ID 서버, Matrix 클라이언트 라이브러리 및 Matrix 애플리케이션 서비스의 완전한 구현을 제공하는 것입니다. 특히 이 저장소는 Matrix homeserver 구현하는 것을 목표로 합니다. Ruma homeserver 소규모 배포의 경우 단일 실행 파일로 패키지되고, homeserver 의 여러 부분을 독립적으로 확장해야 하는 대규모 배포의 경우 여러 실행 파일로 패키지됩니다. Ruma에서 사용하는 추가 Matrix 라이브러리는 GitHub의 Ruma 조직에서 찾을 수 있습니다.
지금까지 Ruma가 지원하는 Matrix API에 대한 자세한 내용은 STATUS 문서를 참조하세요.
Ruma에는 Docker를 사용한 개발 설정이 포함되어 있습니다. Docker를 설치하려면 OS X, Linux 또는 Windows용 설치 지침을 참조하세요. (Docker와 Docker Compose가 모두 필요하지만 표준 설치 방법에는 둘 다 포함됩니다.)
참고 : docker-compose
버전 1.6 이상 및 docker-engine
버전 1.10.0 이상이 필요합니다.
화물은 개발의 주요 진입점입니다. 일반적으로 일반 cargo
사용하는 것처럼 script/cargo
쉘 스크립트를 사용하십시오. 그러면 Rust 및 기타 종속성이 이미 설치된 Docker 컨테이너 내에서 Cargo 명령이 실행됩니다. 컨테이너 내에서도 PostgreSQL 데이터베이스가 자동으로 시작됩니다. script/cargo
사용하여 처음으로 명령을 실행하면 Docker 이미지를 다운로드하는 데 시간이 걸립니다.
Ruma를 빌드하려면 script/cargo build --bin ruma
실행하세요. 애플리케이션은 target/debug/ruma
에 기록됩니다. script/cargo run --bin ruma
사용하여 한 단계로 Ruma를 빌드하고 실행할 수도 있습니다. (Cargo를 통해 실행하는 경우 ruma
자체에 대한 인수는 두 개의 대시 뒤에 와야 합니다(예: script/cargo run --bin ruma -- run
).
Ruma에는 Rust 1.34 이상이 필요합니다.
Docker는 호스트 시스템에 대해 아무것도 가정하지 않고 Ruma의 다른 종속성과 함께 Rust를 패키징하고 테스트 PostgreSQL 데이터베이스를 관리하는 것을 포함하여 모든 사람의 삶을 더 쉽게 만드는 데 사용됩니다. 정말로 Docker를 피하고 싶다면 Ruma의 코드에서 가정한 것과 일치하도록 개발 환경을 구성하는 것은 사용자의 몫입니다. 특히 이는 최소한 Rust의 최소 버전, libsodium과 같은 모든 시스템 수준 종속성, src/test.rs
에서 사용되는 주소와 포트에서 사용 가능한 적절한 권한이 있는 PostgreSQL 설치를 의미합니다.
Ruma용 API 문서를 생성하려면 script/cargo doc
실행하세요. 그런 다음 브라우저에서 target/doc/ruma/index.html
엽니다. 이 문서는 공개용 Matrix API가 아닌 Ruma의 내부 Rust 코드에 대한 것입니다. 사용자용 문서는 Ruma 웹사이트에 게시됩니다.
Ruma에는 통합 테스트 스위트가 포함되어 있습니다. Docker가 설치되면 script/cargo test
실행하여 테스트 스위트를 실행하십시오.
Ruma에는 각각 JSON, TOML 또는 YAML로 작성된 ruma.json
, ruma.toml
또는 ruma.yaml
/ ruma.yml
이라는 구성 파일이 필요합니다. 이 파일은 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는 자동으로 데이터베이스를 생성하고(아직 존재하지 않는 경우) 데이터베이스 스키마를 관리합니다. 귀하는 이러한 작업을 수행할 수 있는 유효한 PostgreSQL 서버 URL과 역할을 Ruma에 제공할 책임이 있습니다.
Ruma에는 http://example.com/ruma/swagger.json에 Swagger 데이터를 제공하기 위한 HTTP 엔드포인트가 포함되어 있습니다(물론 example.com을 Ruma 서버의 호스트 및 포트로 대체). 여기에 Swagger UI 사본을 지정하세요. Matrix 클라이언트 API에 대한 전체 문서를 볼 수 있는 URL입니다. Ruma는 아직 이러한 모든 API 엔드포인트를 실제로 구현하지 않습니다.
CONTRIBUTING 문서를 참고하세요.
Ruma는 2017년 1월에 세상을 떠난 나의 가장 친한 친구 Tamara Boyens에게 바칩니다. 그녀와 저는 매일 몇 시간 동안 온라인으로 대화를 나눴습니다. 그녀는 내가 Ruma를 시작하게 된 동기의 큰 부분을 차지했습니다. 왜냐하면 우리 둘 다 우리가 만난 도시를 떠난 후 온라인 커뮤니케이션은 우리가 가장 많은 시간을 함께 보내는 곳이었고 우리는 항상 우리의 불만을 해결할 시스템을 찾고 있었기 때문입니다. 우리가 채팅을 위해 가졌던 모든 하위 선택.
— 지미 쿠아드라
MIT