Skip to content

francoism90/stry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,487 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 stry

Video-on-Demand Platform

Tests License Laravel Inertia PostgreSQL FrankenPHP Podman

Demo β€’ Documentation β€’ Installation


Introduction

stry is a video-on-demand (VOD) media distribution system that allows users to access videos, television shows and movies with streaming capabilities.

Key Features

  • πŸŽ₯ DASH Streaming - Built-in DASH playlist generation
  • 🎚️ Transcoding - Generate multiple renditions and bitrates on demand
  • πŸ” Stream Encryption - Secure video content with encryption for both HLS and DASH
  • πŸ‘€ Profiles & Content Controls - Profile-based viewing with optional content hiding
  • πŸ“² Installable PWA - Install stry on mobile and desktop
  • πŸ–₯️ Responsive UI - Modern interface powered by Inertia.js and NuxtUI
  • πŸš€ High Performance - Powered by Laravel Octane and PostgreSQL
  • πŸ” Fast Search - Lightning-fast search with Typesense
  • 🐳 Container-Ready - Fully containerized with Podman/Quadlet support

Warning

Always follow 3-2-1 backup plan to protect your media library.

Demo

For WIP screenshots, please check out: https://github.com/francoism90/.github/tree/main/stry

Note

A hosted demo is planned, but not yet available.


Jellyfin / Plex vs stry

Jellyfin/Plex are media servers first, while stry is a streaming delivery platform first. That means stry focuses on repackaging/transcoding and adaptive streaming workflows (DASH-first, HLS-ready), which gives more control but requires a more advanced setup.

Topic Jellyfin / Plex stry
Primary focus Personal media server Streaming delivery platform
Typical setup effort Faster and simpler More advanced and pipeline-oriented
Playback model Direct library playback plus optional transcoding Prepared renditions and adaptive streaming delivery
Packaging Usually less packaging-centric Repackaging/transcoding for streaming-first output
Best fit Home library convenience Netflix/YouTube-style streaming workflows

Tech Stack

Category Technology
Backend Laravel 13.x
Frontend Inertia 3.x with NuxtUI
Database PostgreSQL 18.x
Containers Podman 5.x
Search Typesense 30.x
Video Processing Laravel FFmpeg
Video Streaming Laravel Shaka (DASH)
Video Encoding Laravel Streamer (DASH)
Video Transcoding Laravel ab-av1 (beta)
PWA Laravel PWA (installable on mobile/desktop)

Prerequisites

You need a basic knowledge of Laravel, Inertia.js, and containerization concepts. Familiarity with video streaming technologies (DASH, HLS) and encoding (FFmpeg) is a plus.

System Requirements:

  • Linux (Debian, Fedora, Arch, CentOS, Ubuntu, etc.)
  • Podman 5.3+ with Quadlet (systemd) support, or Docker (best-effort)
  • Basic tools: git, bash

Note

Docker is not officially supported, but a best-effort Docker Compose setup is available and can be made to work with minor adjustments.

For hardware acceleration: install VAAPI drivers (Intel), mesa packages, or NVENC (Nvidia) dependencies. See hardware encoding docs.


Documentation

Comprehensive guides are available in the docs/ folder:

Guide Description
Production Setup Deploy to production
Development Guide Local development setup
Configuration Configuration options
System Setup System requirements
Podman Guide Container management
Docker Compose Docker Compose setup
Proxy Setup Reverse proxy configuration
S3 Storage Object storage setup
Interaction CLI usage and commands

Tip

Quick start: Choose between Production or Development setup.


Usage

Starting the Instance

systemctl --user start stry proxy

The instance will be available at: https://stry.test

Seed Database

stry a db:seed --force

Creating an Admin User

For testing purposes only, seed a super-admin user:

stry a db:seed --class=AdminSeeder

Warning

Only seed admins for testing! Never use the seeder in production.

Tip

See the Interaction Guide for a Laravel Sail-style shell utility approach.

Admin Services

The following services are only accessible when logged in as super-admin:

Service URL Description
Horizon https://stry.test/horizon Queue monitoring and management
Telescope https://stry.test/telescope Debugging assistant (dev only)

License

This project is open-sourced software licensed under the MIT license.

AI Statement

This project is developed with AI assistance, primarily using GitHub Copilot and Claude Sonnet.

AI is used for suggestions and acceleration, but all final implementation decisions and adjustments are made by the developers.

AI-assisted pull requests are welcome, as long as an actual person or developer is actively involved in the implementation and review.

Support

If you find this project useful, please consider giving it a star!

Releases

No releases published

Packages

 
 
 

Contributors