https://github.com/francoism90/hub
A video on demand (VOD) media distribution system
https://github.com/francoism90/hub
caddy dash hls laravel netflix nginx nginx-vod-module podman podman-quadlet streaming video video-streaming vod
Last synced: 9 months ago
JSON representation
A video on demand (VOD) media distribution system
- Host: GitHub
- URL: https://github.com/francoism90/hub
- Owner: francoism90
- License: mit
- Created: 2023-08-20T14:30:30.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-10-09T00:11:47.000Z (9 months ago)
- Last Synced: 2025-10-09T17:35:30.043Z (9 months ago)
- Topics: caddy, dash, hls, laravel, netflix, nginx, nginx-vod-module, podman, podman-quadlet, streaming, video, video-streaming, vod
- Language: PHP
- Homepage:
- Size: 4.41 MB
- Stars: 6
- Watchers: 2
- Forks: 2
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Hub
> **NOTICE**: My focus is currently on [stry](https://github.com/francoism90/stry). This project will likely no longer receive updates.
## Introduction
Hub is a video on demand (VOD) media distribution system that allows users to access to videos, television shows and films.
## Details
Hub uses the following stack:
- [nginx-vod-module](https://github.com/diogoazevedos/nginx-vod-module)
- [Laravel 12.x](https://laravel.com/)
- [Livewire 3.x](https://livewire.laravel.com/)
- [PostgreSQL 17.x](https://www.postgresql.org/)
- [Podman 5.x](https://podman.io/)
- [Meilisearch 1.x](https://www.meilisearch.com/)
This is the preferred stack, please submit a PR if you would like to support other solutions.
## Prerequisites
- Any modern hardware (AArch64 is untested).
- Linux (Debian, Ubuntu, SUSE, CentOS, Arch, ..). - WSLv2 is untested.
- [Podman 5.3 or higher](https://podman.io/) with Quadlet (systemd) and SELinux or AppArmor support.
> **NOTE:** Docker is unsupported, but should work with a `docker-compose.yml` file. PRs are welcome.
## Installation
### Clone repository
1. Clone the repository, for example to `~/projects`:
```bash
cd ~/projects
git https://github.com/francoism90/hub.git
```
1. Configure Hub with your favorite editor:
```bash
cd ~/projects/hub
cp .env.example .env
vi .env
```
1. See [Podman guide](docs/podman.md) to configure Podman Quadlet.
1. See [MinIO guide](docs/minio.md) to configure MinIO.
## Usage
The Hub instance should be available at , after running:
```bash
systemctl --user start proxy hub
systemctl --user status hub
```
> **NOTE**: Make sure MinIO is configured first.
Enter the `systemd-hub` container, and execute the followings commands:
```bash
$ podman exec -it systemd-hub /bin/bash # or hub shell
composer install
php artisan key:generate
php artisan storage:link
pnpm install && pnpm build
php artisan app:install
```
The following services are only accessible when being a super-admin (see `database/seeders/UserSeeder.php` for example):
- - Laravel Horizon
- - Laravel Telescope (disabled by default)
To seed an example super-admin user:
```bash
php artisan db:seed --class=UserSeeder:class
```
### Manage application
> **TIP**: Run `hub a` and `hub help` for all available commands.
To import videos:
```bash
chcon -Rv system_u:object_r:container_file_t:s0 /path/to/import/* # if running SELinux
hub a videos:import
```
To create a tag:
```bash
hub a tag:create
```
To create an user:
```bash
hub a user:create
```
To force the removal of deleted videos:
> **WARNING**: This will remove any soft-deleted videos!
```bash
hub a videos:clean
```
To force (re-)indexing of all models:
```bash
hub a scout:sync
```
## Upgrading
See [UPGRADING.md](UPGRADING.md)