{"id":16135630,"url":"https://github.com/thevickypedia/rustream","last_synced_at":"2025-03-18T15:31:32.429Z","repository":{"id":220020702,"uuid":"750548636","full_name":"thevickypedia/RuStream","owner":"thevickypedia","description":"Self hosted streaming media server written in Rust","archived":false,"fork":false,"pushed_at":"2025-02-13T03:18:36.000Z","size":4372,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-28T10:35:49.323Z","etag":null,"topics":["actix-web","asynchronous-http-server","fernet-cryptography","jinja2-templates","pyo3-rust-bindings","rendering-engine","rust","sha256-hash","streaming-video","symmetric-encryption-algorithm"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thevickypedia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-30T21:07:29.000Z","updated_at":"2025-02-13T03:18:39.000Z","dependencies_parsed_at":"2024-02-09T00:48:37.723Z","dependency_job_id":"399ab977-e632-4b7e-bdfa-b85872443685","html_url":"https://github.com/thevickypedia/RuStream","commit_stats":{"total_commits":188,"total_committers":2,"mean_commits":94.0,"dds":0.02659574468085102,"last_synced_commit":"67e29727a844c14ee089e5f52c1d48ffc742f995"},"previous_names":["thevickypedia/pystream-rustic"],"tags_count":119,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevickypedia%2FRuStream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevickypedia%2FRuStream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevickypedia%2FRuStream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevickypedia%2FRuStream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thevickypedia","download_url":"https://codeload.github.com/thevickypedia/RuStream/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243936385,"owners_count":20371505,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actix-web","asynchronous-http-server","fernet-cryptography","jinja2-templates","pyo3-rust-bindings","rendering-engine","rust","sha256-hash","streaming-video","symmetric-encryption-algorithm"],"created_at":"2024-10-09T23:08:48.073Z","updated_at":"2025-03-18T15:31:32.150Z","avatar_url":"https://github.com/thevickypedia.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RuStream\n\n[![made-with-rust][rust-logo]][rust-src-page]\n\n[![crates.io][crates-logo]][crate]\n\n[![build][gh-logo]][build]\n[![none-shall-pass][nsp-logo]][nsp]\n\n#### Summary\n[`RuStream`][repo] is a self-hosted streaming engine, that can render media files via authenticated sessions.\n\n### Installation\n\n```shell\ncargo add RuStream\n```\n\n### Usage\n```rust\nuse rustream;\n\n#[actix_rt::main]\nasync fn main() {\n    match rustream::start().await {\n        Ok(_) =\u003e {\n            println!(\"RuStream session has ended\")\n        }\n        Err(err) =\u003e {\n            eprintln!(\"Error starting RuStream: {}\", err)\n        }\n    }\n}\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDownload OS specific Executable\u003c/strong\u003e\u003c/summary\u003e\n\n###### macOS\n```shell\ncurl -o RuStream-Darwin-x86_64.tar.gz -LH \"Accept: application/octet-stream\" \"https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-Darwin-x86_64.tar.gz\"\n```\n\n###### Linux\n```shell\ncurl -o RuStream-Linux-x86_64.tar.gz -LH \"Accept: application/octet-stream\" \"https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-Linux-x86_64.tar.gz\"\n```\n\n###### RaspberryPi\n```shell\ncurl -o RuStream-RaspberryPi.tar.gz -LH \"Accept: application/octet-stream\" \"https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-RaspberryPi.tar.gz\"\n```\n\n###### Windows\n```shell\ncurl -o RuStream-Windows-x86_64.zip -LH \"Accept: application/octet-stream\" \"https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-Windows-x86_64.zip\"\n```\n\u003c/details\u003e\n\n#### Environment Variables\n\n**Mandatory**\n- **authorization**: Dictionary of key-value pairs with `username` as key and `password` as value.\n- **media_source**: Source path for the files to be streamed.\n  \u003e Files starting/ending with `_` _(underscore)_ and `.` _(dot)_ will be ignored\n\n**Optional**\n- **debug**: Boolean flag to enable debug level logging. Defaults to `false`\n- **utc_logging**: Boolean flag to set timezone to UTC in the output logs. Defaults to `true`\n- **media_host**: IP address to host the server. Defaults to `127.0.0.1` / `localhost`\n- **media_port**: Port number to host the application. Defaults to `8000`\n- **session_duration**: Time _(in seconds)_ each authenticated session should last. Defaults to `3600`\n- **file_formats**: Vector of supported file formats. Defaults to `[mp4, mov, jpg, jpeg]`\n- **workers**: Number of workers to spin up for the server. Defaults to the number of physical cores.\n- **max_connections**: Maximum number of concurrent connections per worker. Defaults to `3`\n- **max_payload_size**: Maximum size of files that can be uploaded from the UI. Defaults to `100 MB`\n  \u003e Input should be in the format, `10 MB`, `3 GB` - _inputs are case insensitive_\n- **websites**: Vector of websites (_supports regex_) to add to CORS configuration. _Required only if tunneled via CDN_\n- **key_file**: Path to the private key file for SSL certificate. Defaults to `None`\n- **cert_file**: Path to the full chain file for SSL certificate. Defaults to `None`\n- **secure_session**: Boolean flag to secure the cookie `session_token`. Defaults to `false`\n  \u003e If `secure_session` is to set to `true`, the cookie `session_token` will only be sent via HTTPS\u003cbr\u003e\n  \u003e This means that the server can **ONLY** be hosted via `HTTPS` or `localhost`\n\n\u003e Checkout [GitHub Wiki][gh-wiki-env] for more information about environment variables and `dotenv` usage.\n\n## Crate\n[https://crates.io/crates/RuStream][crate]\n\n### Cargo Docs - Official Runbook\n[https://docs.rs/RuStream/latest/rustream/][docs]\n\n**Generator**\n```shell\ncargo doc --document-private-items --no-deps\n```\n\n## Linting\n### Requirement\n```shell\nrustup component add clippy\n```\n### Usage\n```shell\ncargo clippy --no-deps --fix\n```\n\n## GitHub Wiki - Project Insights\n[https://github.com/thevickypedia/RuStream/wiki][gh-wiki]\n\n## License \u0026 copyright\n\n\u0026copy; Vignesh Rao\n\nLicensed under the [MIT License][license]\n\n[repo]: https://github.com/thevickypedia/RuStream\n[license]: https://github.com/thevickypedia/RuStream/blob/main/LICENSE\n[build]: https://github.com/thevickypedia/RuStream/actions/workflows/rust.yml\n[rust-src-page]: https://www.rust-lang.org/\n[rust-logo]: https://img.shields.io/badge/Made%20with-Rust-black?style=for-the-badge\u0026logo=Rust\n[gh-logo]: https://github.com/thevickypedia/RuStream/actions/workflows/rust.yml/badge.svg\n[nsp-logo]: https://github.com/thevickypedia/RuStream/actions/workflows/none.yml/badge.svg\n[nsp]: https://github.com/thevickypedia/RuStream/actions/workflows/none.yml\n[crate]: https://crates.io/crates/RuStream\n[gh-checks]: https://github.com/thevickypedia/RuStream/actions/workflows/rust.yml\n[crates-logo]: https://img.shields.io/crates/v/RuStream.svg\n[gh-wiki]: https://github.com/thevickypedia/RuStream/wiki\n[gh-wiki-env]: https://github.com/thevickypedia/RuStream/wiki/Environment-Variables\n[docs]: https://docs.rs/RuStream/latest/rustream/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthevickypedia%2Frustream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthevickypedia%2Frustream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthevickypedia%2Frustream/lists"}