RuStream is a self-hosted streaming engine, that can render media files via authenticated sessions.
cargo add RuStreamuse rustream;
#[actix_rt::main]
async fn main() {
match rustream::start().await {
Ok(_) => {
println!("RuStream session has ended")
}
Err(err) => {
eprintln!("Error starting RuStream: {}", err)
}
}
}Download OS specific Executable
curl -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"curl -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"curl -o RuStream-RaspberryPi.tar.gz -LH "Accept: application/octet-stream" "https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-RaspberryPi.tar.gz"curl -o RuStream-Windows-x86_64.zip -LH "Accept: application/octet-stream" "https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-Windows-x86_64.zip"Mandatory
- authorization: Dictionary of key-value pairs with
usernameas key andpasswordas value. - media_source: Source path for the files to be streamed.
Files starting/ending with
_(underscore) and.(dot) will be ignored
Optional
- debug: Boolean flag to enable debug level logging. Defaults to
false - utc_logging: Boolean flag to set timezone to UTC in the output logs. Defaults to
true - media_host: IP address to host the server. Defaults to
127.0.0.1/localhost - media_port: Port number to host the application. Defaults to
8000 - session_duration: Time (in seconds) each authenticated session should last. Defaults to
3600 - file_formats: Vector of supported file formats. Defaults to
[mp4, mov, jpg, jpeg] - workers: Number of workers to spin up for the server. Defaults to the number of physical cores.
- max_connections: Maximum number of concurrent connections per worker. Defaults to
3 - max_payload_size: Maximum size of files that can be uploaded from the UI. Defaults to
100 MBInput should be in the format,
10 MB,3 GB- inputs are case insensitive - websites: Vector of websites (supports regex) to add to CORS configuration. Required only if tunneled via CDN
- key_file: Path to the private key file for SSL certificate. Defaults to
None - cert_file: Path to the full chain file for SSL certificate. Defaults to
None - secure_session: Boolean flag to secure the cookie
session_token. Defaults tofalseIf
secure_sessionis to set totrue, the cookiesession_tokenwill only be sent via HTTPS
This means that the server can ONLY be hosted viaHTTPSorlocalhost
Checkout GitHub Wiki for more information about environment variables and
dotenvusage.
https://crates.io/crates/RuStream
https://docs.rs/RuStream/latest/rustream/
Generator
cargo doc --document-private-items --no-depsrustup component add clippycargo clippy --no-deps --fixhttps://github.com/thevickypedia/RuStream/wiki
© Vignesh Rao
Licensed under the MIT License