Last year my mom spent a ton of time (and money!) to organize and digitize an archive of old family videos.
Some of these were quite old, going back to the 1950's. Really beautiful, classic stuff.
We wanted to privately share these with family, but not with big tech.
Going with "free" video hosting from a major provider was off the table.
What we were looking for:
Self-hosted, but totally hands-off easy to run and maintain
Supported the latest (or at least recently decent) video streaming formats, including adaptive bitrate
Videos play on any device, desktop or mobile
With a high-bandwidth connection, video quality is awesome; as good as it gets
Even with a crappy connection, playback is decent quality and doesn't skip or buffer
Encrypted storage, thus able to use public cloud storage solutions with some confidence
Stateless server: persist anything important to storage that is highly resilient (perhaps S3?)
I don't want to worry about backups!
This was a nice to have. As it turns out nothing out there has anything like this. Yuebing does!
After running a beefy instance to transcode everything, tear it down and run something cheaper for the long-run
You can run Yuebing for under $10/month; and hopefully even less down the road as we optimize Yuebing's footprint
I took a couple of weeks to survey what was out there. I started to greatly relax my requirements, and still
could find nothing decent. I looked at several open source projects, I'm not saying which because they all had
multiple glaring flaws.
So, I decided, how hard could it be? You wire up S3 to ffmpeg, put a decently modern frontend on it, and you're done,
right?
.... uh, OK, I'm about a month in at this point, but it's too much fun! I hope you enjoy it too!
# install globally with npm
npm i -g yuebing
# install globally with yarn
yarn global add yuebing
# Now the 'yuebing' command should be on your PATH
yuebing
To run from source, you'll need nodejs v16+ and yarn
# Clone source and install dependencies
git clone https://github.com/cobbzilla/yuebing.git
cd yuebing
yarn install
# Use the 'yuebing' command from the git repo
./yuebing
# Or, since you have the source, run any of the yarn scripts
yarn docker-run-dev # Fastest build & startup, dev docker image
yarn docker-run # Faster at runtime, production docker image
To play around with Yuebing, it's fine to start it without configuring anything.
Run yuebing and you'll be prompted to enter the minimal config when it starts.
If you plan on running Yuebing for a while, see the configuration docs for
more info on how to set things up.
Oolong the rabbit was an adorable and famous
early internet meme. Oolong died in 2003,
two years before a certain massively popular video service even existed!
Oolong's successor was named Yuebing. Yuebing wasn't nearly as famous as Oolong, but did that even matter?
Yuebing succeeded nonetheless.
Perhaps more interestingly, yuebing means mooncake
(Chinese: 月饼,
Japanese: 月餅); mooncakes are very tasty and can be found in
a wide variety of flavors and styles. Enjoy a time-honored regional style, or try an exotic cake from contemporary
bakers who are exploring deliciously uncharted territory! There is truly a yuebing for everyone!