Self-hosted video-hosting website and video archival manager for Niconico, Bilibili, and Youtube
Note: this project is no longer maintained. The successor is: https://github.com/horahoradev/PrometheusTube
Please contact me if you'd like to be involved.
Horahora Locally archive, browse, and share videos from nearly any site
It allows you to:
Join our Discord: https://discord.gg/pckSgBzmtH
Archival capabilities are provided by yt-dlp (a fork of youtube-dl).
A word of warning: this application is pretty heavy, and setup can be complicated. If you're looking for something simpler, check out: https://github.com/tubearchivist/tubearchivist
Usage Instructions (START HERE)
That's it for basic usage, and should work. If that doesn't work, bug me on Discord.
Contributing
Contributions are always welcome. Please see CONTRIBUTING.md for details, including an architectural rundown.
Designs
Designs are listed here: https://github.com/horahoradev/horahora-designs
More Detailed Feature List
Advanced Use Cases Other Storage Backends (s3, backblaze, anything s3-compatible)
By default, Horahora will store videos locally using Minio.
If you don't want videos to be stored locally, modify .env, adding the relevant values for your use case.
- ORIGIN_FQDN: this will be the public URL of your Backblaze bucket WITH NO TRAILING SLASH. E.g. for me it's: https://f002.backblazeb2.com/file/otomads for backblaze, or https://horahora-dev-otomads.s3-us-west-1.amazonaws.com for s3.
- STORAGE_BACKEND: 'b2' or 's3' (depending on which you want to use)
- STORAGE_API_ID: the API ID for your Backblaze account if using backblaze, otherwise blank
- STORAGE_API_KEY: The API key for your Backblaze account, otherwise blank
- BUCKET_NAME: the storage bucket name for b2 or s3
If you want to use S3, you need to include your aws credentials and config in $HOME/.aws. The config and credentials will be mounted into the relevant services at runtime. See https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html for more information.
Tunneling yt-dlp TrafficHorahora comes with Gluetun support out of the box. To enable it, you'll need to set the proper values in the "vpn config" section of the secrets.env.template file. This will enable your yt-dlp traffic to be tunneled through your VPN provider via a local Gluetun HTTP proxy.
Backup Restoration(this currently isn't functioning, I'll fix it later)
Backup_service writes psql dumps of the three databases (userservice, videoservice, scheduler) to backblaze. To restore, place the three latest dumps in the sql dir, docker-compose up
, run migrations, then run restore.sh from within the container.
This repository is dedicated to my friend Zihao of otomads.com (defunct). I hope you're still alive...
Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.
We'll never share your email with anyone else.