Expand description
§RuStream
§Summary
RuStream is a self-hosted streaming engine, that can render videos via authenticated sessions.
§Installation
cargo add RuStream
§Usage
use rustream;
#[actix_rt::main]
async fn main() {
match rustream::start().await {
Ok(_) => {
println!("RuStream session terminated")
}
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. - video_source: Source path for video files.
Files starting with
_(underscore) and.(dot) will be ignored
Optional
- video_host: IP address to host the video. Defaults to
127.0.0.1/localhost - video_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 video file formats. Defaults to
[mp4, mov] - 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 - 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 tofalse
If
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 to load all the static values and required structs during startup.
- routes 🔒Module for all the API entry points.
- squire 🔒Module to store all the helper functions.
- Module to load all the templates for the UI.
Functions§
- Contains entrypoint and initializer settings to trigger the asynchronous
HTTPServer