Skip to content

About

Self-hosted media streaming server with a Go backend, React web UI, Docker deployment, transcoding, and Jellyfin-compatible APIs.

Topics

Resources

Contributing

Stars

916 stars

Watchers

4 watching

Forks

Latest commit

 

History

4,092 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Silo logo

Silo

A self-hosted media server for films, series, audiobooks, ebooks, podcasts, and manga.

Latest GitHub release Container image on GHCR Continuous integration Go 1.26 React 19 AGPL-3.0-or-later license

Quick start · Documentation · Builds & releases · Discord · Support Silo · Contributing


Warning

Silo is pre-release. APIs, configuration, and database migrations may change before the first stable release. Back up your deployment before updating.

1.0 release scope

The 1.0 milestone covers movies and series. Audiobooks, ebooks, and Audiobookshelf compatibility keep working as they do today and are labeled beta: they are outside the 1.0 support promise and will be replaced by a consolidated Books effort with no assigned release date. The broader capabilities below include those beta implementations, not a promise that every media type is supported in 1.0. Existing library data is preserved when upgrading.

What Silo does

Play

Direct play when possible, remux when needed, transcode otherwise, with VA-API, Quick Sync, and NVENC hardware acceleration.
Organize

One catalog for films, series, audiobooks, ebooks, podcasts, and manga, matched through metadata plugins such as TMDB and TVDB.
Connect

Use the included web app, or the Jellyfin/Emby-compatible API with clients such as VidHub, Findroid, and Infuse. Client coverage varies.
Share

Household profiles with their own watch state, library access, and parental controls.
Manage

Libraries, users, providers, storage, search, and playback are configured in the admin interface, not in config files.
Scale

Start with one integrated server; split proxy and transcode roles across shared PostgreSQL and Redis when you need to.

Quick start

Requires Docker Compose 2.24 or newer. The default Compose file runs the omnibus image: Silo with a bundled PostgreSQL (with pgvector) and Redis, plus Meilisearch when you turn it on.

git clone https://github.com/Silo-Server/silo-server.git
cd silo-server
cp .env.example .env
chmod 600 .env
key="$(openssl rand -base64 48)" && printf '\nSECRET_KEY=%s\n' "$key" >> .env

Set MEDIA_ROOT in .env to the absolute path of your media, then:

docker compose up -d

Open http://localhost:8090 and complete onboarding.

Hardware transcoding (VA-API or NVIDIA) and access for proxy or transcode nodes on other hosts are commented out in docker-compose.yml; uncomment the lines you need.

Updating an install from before the omnibus image

An install that runs Silo, PostgreSQL, and Redis in separate containers keeps that layout when its .env sets COMPOSE_FILE=docker-compose.advanced.yml; set it before updating. docker-compose.yml is an example of a new install and does not look for an earlier one: started on that data folder, it replaces the old silo container and comes up on a new, empty database with setup open, while the earlier PostgreSQL and Redis keep running with their data untouched. Moving into the single container is a separate step. The separate GPU and node Compose files are gone, so a COMPOSE_FILE that names one fails until it names only the deployment file you use, with the matching lines in it uncommented. See Moving from the multi-container stack.

The user manual covers the rest, starting with installation: backing up SECRET_KEY, storage, GPU acceleration, Meilisearch, external PostgreSQL and Redis, transcode nodes, PostgreSQL tuning, backups, and updates.

Builds and releases

Until the first release, default-branch images carry an ordered build-N tag and the full commit SHA alongside latest. Build numbers order published images; they are not release versions. Release versioning defines each tag and the SemVer contract.

Documentation

Community and contributions

Questions and discussion: Discord. Bugs, install problems, and performance issues: the GitHub issue forms, which ask for reproduction steps and raw logs.

Native clients are developed in silo-apple and silo-android. Client-visible API, authentication, playback, or metadata changes should consider both.

Right now, the most helpful way to contribute is a clear, accurate issue. We implement and review changes through our own workflow, and pull request volume has outgrown what we can review carefully, so a good issue usually helps us more than a pull request.

Feature ideas go in Discussions → Ideas, not issues.

Pull requests are still welcome from contributors who've had one merged in a Silo repository, or when a maintainer asks for one; a feature pull request also needs an issue in this repository that a maintainer has labeled accepted. Other pull requests are closed automatically without review; when a maintainer asked for one, they reopen it. CONTRIBUTING.md explains what makes an issue useful.

Supporting Silo

Silo is free and open source, and it will stay that way. It's built in spare time and paid for out of pocket.

Sponsor Silo on GitHub

Sponsorship pays for AI development tooling (Claude, Codex), the push-notification relay, and future project costs. You can help just as much without spending anything:

Sponsors

Sponsored by Macroscope
Code review is supported by Macroscope through its open source program.

License and trademarks

Silo's source code is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later), with an additional permission to combine it with platform SDKs such as the Windows App SDK. See LICENSE and PLATFORM-EXCEPTION.md.

The Silo name, logo, and wordmark are trademarks of Silo Media L.L.C. and are not covered by the AGPL. Forks and redistributions may use the code but must not use the Silo brand as their identity and must remove or replace the brand assets. Publishing a Silo-branded app to an app store requires written permission. See TRADEMARK.md for permitted referential use, including phrases such as "compatible with Silo."

About

Self-hosted media streaming server with a Go backend, React web UI, Docker deployment, transcoding, and Jellyfin-compatible APIs.

Topics

Resources

Contributing

Stars

916 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages