Expand description
§RuStream
§Summary
RuStream is a self-hosted streaming engine, that can render media files via authenticated sessions.
§Installation
cargo add RuStream§Usage
use 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
§macOS
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"§Linux
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"§RaspberryPi
curl -o RuStream-RaspberryPi.tar.gz -LH "Accept: application/octet-stream" "https://github.com/thevickypedia/RuStream/releases/latest/download/RuStream-RaspberryPi.tar.gz"§Windows
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"§Environment Variables
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.
§Crate
https://crates.io/crates/RuStream
§Cargo Docs - Official Runbook
https://docs.rs/RuStream/latest/rustream/
Generator
cargo doc --document-private-items --no-deps§Linting
§Requirement
rustup component add clippy§Usage
cargo clippy --no-deps --fix§GitHub Wiki - Project Insights
https://github.com/thevickypedia/RuStream/wiki
§License & copyright
© Vignesh Rao
Licensed under the MIT License
Modules§
- constant 🔒
- Module for the structs and functions called during startup.
- routes 🔒
- Module for all the API entry points.
- squire 🔒
- Module to store all the helper functions.
- templates 🔒
- Module to load all the templates for the UI.
Functions§
- start
- Contains entrypoint and initializer settings to trigger the asynchronous
HTTPServer