16 releases (7 stable)
1.4.0 | Aug 31, 2024 |
---|---|
1.3.1 | Aug 31, 2024 |
1.3.0 | Jun 24, 2024 |
1.3.0-a | Mar 12, 2024 |
0.0.5 | Feb 19, 2024 |
#89 in HTTP server
2,054 downloads per month
200KB
4K
SLoC
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
username
as key andpassword
as 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 MB
Input 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 tofalse
If
secure_session
is to set totrue
, the cookiesession_token
will only be sent via HTTPS
This means that the server can ONLY be hosted viaHTTPS
orlocalhost
Checkout GitHub Wiki for more information about environment variables and
dotenv
usage.
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
Dependencies
~23–37MB
~674K SLoC