Rouille, Rust web server middleware
moonfire-nvr
Our great sponsors
Rouille, Rust web server middleware | moonfire-nvr | |
---|---|---|
15 | 31 | |
1,071 | 1,114 | |
- | - | |
1.0 | 8.6 | |
28 days ago | 11 days ago | |
Rust | Rust | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Rouille, Rust web server middleware
- Rouille, a Rust web micro-framework
-
Async rust – are we doing it all wrong?
Your CRUD web application server almost certainly doesn't need async Rust. Using a blocking HTTP server is not "might be a good idea", it simply is a good idea.
I recommend Rouille for this: https://github.com/tomaka/rouille. In case you are worried about performance, check the benchmark. Blocking Rouille is faster than builtin async server in Node.js.
-
Best backend web frameworks with blocking io (i.e. not async)?
As you say, the majority of the web ecosystem in Rust has moved to async - but if you’re happy to stray a bit from the beaten path then rouille might do the trick.
-
An Express-inspired web framework for Rust
In strongly typed languages like Rust, composing smaller libraries is usually quite painless, so you don't need a large framework.
Personally for backend Rust I use rouille[0] for the server (it's very simple and async-free), askama[1] for compile-time HTML templates and (if a SPA is unavoidable, as that is of course always to be avoided if at all possible) yew[2] for client-side WASM.
Now this stack is what I like personally, but there are many options that you can combine, some more full-featured than others. Check out https://www.arewewebyet.org/ for a partial overview.
[0]: https://github.com/tomaka/rouille
[1]: https://github.com/djc/askama
[2]: https://yew.rs/
-
Which Rust web framework to choose in 2022 (with code examples)
rouille
I'd like to put in a word for a simple, sync framework such as rouille. The compile times are much, much better, the number of dependencies is much smaller, the stuff it's built on (the standard library) is extensively tested and extremely reliable. Kernel context switches are slower than userspace thread scheduling, but not much slower, and as long as your services aren't just shoving bytes from one place to another (i.e. actually doing some computation) the time taken for a context switch vanishes into noise. A lot of benchmarks test how quickly a web service can move bytes, which (if your business logic is non-trivial) actually isn't the most critical factor.
-
Hey rustaceans, which web framework you guys suggest for a small application?
I don't have any Rust-relevant experience here, but if I wanted to build a web server in Rust and was okay with "reasonable" performance, I'd probably give rouille a try first.
-
The Rustacean way to build a complete web app?
Rouille is fairly solid in my experience. Save the pain of async and spend it building software that works. Honestly with Rust's lack of GC you get predictable response times already.
- Des avis sur mon cadeau?
-
vial: a really tiny web framework
How would you differentiate it from let's say Rouille ?
moonfire-nvr
-
Mock Service Worker(msw) releases 2.0
How do folks test timing-related stuff with MSW? AFAIK, MSW doesn't get along with jest.useFakeTimers. It drives me nuts; I have a bunch of disabled tests in an open-source project and at least one that is flaky because it uses real timers where I'd like to be using fake timers. [1, 2]
I've been thinking about ripping out MSW from my tests in favor of my own API-level mock for this reason. But it seems like many other folks are happy with MSW. I have to assume there's something I'm not getting. I'm a fish out of water with frontend stuff in general...
[1] https://github.com/scottlamb/moonfire-nvr/blob/5ea5d27908f1a...
[2] https://github.com/scottlamb/moonfire-nvr/blob/5ea5d27908f1a...
-
Alternative open firmware for your IP camera
> I wonder how hard it would be to run your own streamer pipeline or whatnot on these things?
Agree with the_biot: The actual streaming component is not too hard. If this were the biggest problem, I'd be thrilled to contribute to an open source streaming server to complement my open source NVR. [1] The driver situation is indeed a bit harder—these things don't just have mainline Linux support with v4l2 for the video input and encoder. Or open source drivers of any kind to crib from AFAIK.
The biggest problem IMHO is that there just aren't any good cameras to buy, even completely ignoring the software aspect. I want a camera that:
1. doesn't support genocide. Nothing that involves Dahua, Hikvision, or Huawei. See IPVM articles on the subject. And a lot of available cameras are relabeled Dahua/Hikvision stuff and/or use Huawei components.
2. is legal for sale / authorized for use in the US. (See the Secure Equipment Act of 2021.)
3. has good night mode performance: IR/day switch, a sensor that is at least 1/1.8", reasonable resolution (somewhere from HD to 4k).
4. has an "eyeball" or "turret" form factor rather than "bullet". The latter seems to really attract spiders, so you end up with a really nice video of a web...
5. supports PoE.
6. is weatherized (IP66 or so).
7. is reasonably priced.
If you ignore #1 and #2, there's some nice hardware out there, but I'm not willing to do that. If you ignore #3, there are a few options (GeoVision, maybe Reolink, maybe Hanwha.) If you ignore #4 and #7, there might be a couple (Axis, maybe Hanwha.) Nothing that ticks all the boxes.
Hard to get excited about investing a lot in the software when the hardware isn't there.
[1] https://github.com/scottlamb/moonfire-nvr
-
NVR in Rust
saw one nvr project in rust - https://github.com/scottlamb/moonfire-nvr - maybe you can find answer there
-
IP Camera stream - simple recording - no resize/detection/etc - is it possible?
Moonfire NVR does basically that. No decoding at all. The configuration process could be smoother, but there's a decent setup guide to follow.
-
Surveillance system, how low can you go?
This is exactly what you're looking for: https://github.com/scottlamb/moonfire-nvr
-
Installing Rust in a Raspberry Pi 3A+
But I would definitely avoid compiling Rust on the Raspberry Pi 3 if you can avoid it. I set up a Docker cross-compile environment for this reason.
- Self Hosted CCTV/Home Security
-
NVR Suggestions & Experience...Any decent alternatives for MotionEye?
Moonfire may be what you're looking for otherwise.
-
What's everyone working on this week (50/2022)?
That last bit's not quite true: another option is to just use the cameras as a dumb stream source and do all the fanciness in an open source NVR. I've been slowly working on moonfire-nvr. Help welcome!
-
surveillance station
Moonfire
What are some alternatives?
actix-web - Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
Shinobi - :peace_symbol: :palestinian_territories: Shinobi CE - The Free Open Source CCTV platform written in Node.JS (Camera Recorder - Security Surveillance Software - Restreamer
tiny-http - Low level HTTP server library in Rust
frigate - NVR with realtime local object detection for IP cameras
Rocket - A web framework for Rust.
motioneyeos - A Video Surveillance OS For Single-board Computers
Nickel - An expressjs inspired web framework for Rust
viseron - Self-hosted, local only NVR and AI Computer Vision software. With features such as object detection, motion detection, face recognition and more, it gives you the power to keep an eye on your home, office or any other place you want to monitor.
Rustless - REST-like API micro-framework for Rust. Works with Iron.
jupyter-rust - a docker container for jupyter notebooks for rust
handlebars-iron - Handlebars middleware for Iron web framework
neolink - An RTSP bridge to Reolink IP cameras