A self-hosted media server for films, series, audiobooks, ebooks, podcasts, and manga.
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.
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.
|
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. |
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" >> .envSet MEDIA_ROOT in .env to the absolute path of your media, then:
docker compose up -dOpen 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.
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.
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.
- User manual — installing, configuring, and running Silo
- Development guide — source setup, builds, tests, migrations
- Settings API, Downloads API, and Apple Push Display Token — client contracts
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.
Silo is free and open source, and it will stay that way. It's built in spare time and paid for out of pocket.
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:
- Report bugs with steps to reproduce on GitHub Issues.
- Help other users on Discord.
- Improve the docs at siloserver.org.
- Contribute code by following CONTRIBUTING.md.
Code review is supported by Macroscope through its open source program.
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."