Skip to main content

Browser and streaming interface for local media files

Project description

Home Stream

Test suites REUSE status The latest version of this application can be found on PyPI. Information on what versions of Python this application supports can be found on PyPI.

A web-based browser and streaming interface for local media files. Supports in-browser playback, HTTP Basic Auth streaming (e.g. VLC), and user-based login with permanent stream URLs.

Features

  • Browse local folders and media files
  • Secure user login
  • In-browser audio/video player (if supported by your browser)
  • HTTP Basic Auth fallback for external players (VLC, mpv, etc.) using authenticated links
  • Lightweight and dependency-minimal Python Flask app

Installation

Minimum Python version: 3.10

Install and run via pipx (Recommended)

pipx makes installing and running Python programs easier and avoids conflicts with other packages. Install it with

pip3 install pipx

The following one-liner both installs and runs this program from PyPI:

pipx run home-stream

If you want to be able to use the application without prepending it with pipx run every time, install it globally like so:

pipx install home-stream

The application will then be available in ~/.local/bin, which must be added to your $PATH. So make sure that ~/.local/bin is in your $PATH. On Windows, the required path for your environment may look like %USERPROFILE%\AppData\Roaming\Python\Python310\Scripts, depending on the Python version you have installed. Recent pipx versions allow you to do this via pipx ensurepath.

To upgrade the application to the newest available version, run this command:

pipx upgrade home-stream

Other installation methods

You may also use pure pip or poetry to install this package.

Configuration

Create a config.yaml file in the project root. You can derive your configuration from config.sample.yaml.

Passwords must be bcrypt-hashed. You can generate them using Python:

import bcrypt
print(bcrypt.hashpw(b"your-password", bcrypt.gensalt()).decode())

or by using online tools like bcrypt-generator.com, although not recommended for production passwords.

Usage

Start the app (session login + streaming):

home-stream -c config.yaml  # uses Flask development server

Log in via browser, by default on localhost:8000. Browse and play media, or copy permanent stream URLs.

Production Webserver

For productive use, you should use a proper webserver. Streaming many and large chunks of files may trigger issues with apps like gunicorn, so uWSGI is officially supported.

For a quick start, run uv run uwsgi --ini uwsgi.ini. Using the docker image ghcr.io/mxmehl/home-stream you would have everything contained into one container, ready to be use locally or behind a reverse proxy. Note that depending on your use-cases, you may want to reconfigure some uwsgi settings. This currently would need to be done manually.

Usage Scenarios

The application is mainly designed with the use-case of running it on a NAS or home server with direct media access to allow accessing your media files remotely.

For this, you may put this application behind a reverse proxy or make it accessible via a VPN connection.

Of course, you can also use it purely locally, although there are probably better tools to administrate your media files.

License

This project is licensed under the terms of the GPL-3.0-only license, but contains elements under different licenses.

The project is REUSE compliant, so licensing and copyright information is available for every single file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

home_stream-1.5.4.tar.gz (32.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

home_stream-1.5.4-py3-none-any.whl (35.7 kB view details)

Uploaded Python 3

File details

Details for the file home_stream-1.5.4.tar.gz.

File metadata

  • Download URL: home_stream-1.5.4.tar.gz
  • Upload date:
  • Size: 32.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for home_stream-1.5.4.tar.gz
Algorithm Hash digest
SHA256 60c599b69930cea4dae75878f73a99d92556f6efd4a883308f88ce3820aab1cb
MD5 8868e07a9461b70f820e0452042da78f
BLAKE2b-256 b09ab99df82d0d819d4cc68f5ccf2673434ae91de834c1dff41620790b9eef12

See more details on using hashes here.

Provenance

The following attestation bundles were made for home_stream-1.5.4.tar.gz:

Publisher: publish.yaml on mxmehl/home-stream

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file home_stream-1.5.4-py3-none-any.whl.

File metadata

  • Download URL: home_stream-1.5.4-py3-none-any.whl
  • Upload date:
  • Size: 35.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for home_stream-1.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 420b99ae6ad0623551fdfcbf2fb3bad0496d0791f82c54a46551c97c80389466
MD5 6556b3cf9f07c3c601c40ba83c1257bf
BLAKE2b-256 18aac08fb310a9631ea7cea1b5e4fd98cb40927c20cd9d035311437a7ecad3ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for home_stream-1.5.4-py3-none-any.whl:

Publisher: publish.yaml on mxmehl/home-stream

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page