I think it's possible to produce a moonfire-nvr Linux binary that has no dependencies except tzdata and any remotely recent version of glibc. (Or we could try going absolutely statically linked with musl, but then we might also need to bring in jemalloc for decent performance, etc.)
We'd likely still use Docker for the build but have install instructions that don't require either Docker or compilation.
[x] Stop using ffmpeg entirely. (#37 Retina is working for me but we should work out some more camera compatibility problems before removing ffmpeg.)
[x] Avoid ncurses, either by completing the web interface (#35) or by using an alternate cursive backend (some success with this at #149)
[x] Likely compile the UI into the binary, although continue to support --ui-dir for development.
[x] Update release procedure to create binaries on GitHub release instead of / in addition to Docker images.
Caveat: on-NVR analytics support will likely be a separate binary that won't be so easy to make zero-dependency. We need to continue using ffmpeg or some other library for H.264 decoding, we'll likely depend on TensorFlow Lite, etc. But I think there's still value anyway in having the core system be super easy to install. Docker is its own pile of complexity for users to deal with.
I think it's possible to produce a
moonfire-nvr
Linux binary that has no dependencies except tzdata and any remotely recent version of glibc. (Or we could try going absolutely statically linked with musl, but then we might also need to bring in jemalloc for decent performance, etc.)We'd likely still use Docker for the build but have install instructions that don't require either Docker or compilation.
cross
also supports using an old CentOS / glibc 2.17 container or possibly linking with zig.]--ui-dir
for development.Caveat: on-NVR analytics support will likely be a separate binary that won't be so easy to make zero-dependency. We need to continue using ffmpeg or some other library for H.264 decoding, we'll likely depend on TensorFlow Lite, etc. But I think there's still value anyway in having the core system be super easy to install. Docker is its own pile of complexity for users to deal with.