Silo is a single self-contained process. Run it in the foreground and let Docker, systemd, or another supervisor own the process lifecycle, its restarts, and its output stream. TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/org-quicko/silo/llms.txt
Use this file to discover all available pages before exploring further.
--detach flag is for bare-metal and development use only — inside a container it exits the entrypoint at once and takes the container down with it. Leave [log] file unset in both cases so logs reach docker logs and journald rather than a file inside the container.
Docker
The fastest way to run Silo is with a singledocker run command:
| Registry | Image |
|---|---|
| Docker Hub | labsatquicko/silo |
| GitHub Container Registry | ghcr.io/org-quicko/silo |
labsatquicko/silo:1.3.0) and :latest points at the newest release. Every tag carries both an amd64 and an arm64 image; Docker pulls the one your machine needs automatically.
Image details
- Runs as the unprivileged
bunuser /datavolume holds the SQLite database, uploads under/data/media, andsilo.toml- A
HEALTHCHECKonGET /api/healthis built into the image SILO_CONFIG=/data/silo.tomlis set so Settings pages can write the config file
Verifying image signatures
Every release image is signed with Sigstore. Verify the signature before running an image in production:Building the image yourself
-dev. A released image reports the release version.
Docker Compose
systemd
Run Silo as a foreground process managed by systemd, with journald collecting the log:Keep the default
Type=simple. Silo stays in the foreground, so systemd tracks it directly without a pid file. Do not add --detach — the unit would treat the service as dead the moment the parent returned. Leave [log] file unset so journalctl -u silo captures everything.dnf, a systemd unit is included with the package:
dnf package adds a silo system user, a config file at /etc/silo/silo.toml, and a data directory at /var/lib/silo. Both packages and the repository index are signed and verified by dnf automatically.
Homebrew
brew services start silo runs Silo in the background and keeps it running across reboots. Data is kept in $(brew --prefix)/var/silo. To run in the foreground instead, use silo serve directly.
Reverse proxy
Silo listens on:8090 by default. To serve it under a domain or alongside other services, proxy requests from your web server to http://localhost:8090.
The key setting to watch is [http] idle_timeout. A reverse proxy such as nginx or Caddy will close a connection that stays quiet for longer than its own timeout, and report a 502 or 503. Silo’s log will show the request finishing normally while the proxy sees a closed upstream connection.
If you still need to raise the timeout, set it in silo.toml:
Multiple instances
Several Silo instances on one machine are fine. Give each its own data directory and its own port:instance_id values. Manage each with --data, the same flag you started it with.
Prebuilt binaries
Each GitHub release includes archives for macOS and Linux on bothx64 and arm64. Each archive holds one self-contained silo executable with the admin UI compiled inside it — the full installation is placing it on your PATH.
Releases carry a SHA256SUMS file with two signatures: Sigstore keyless and GPG.
Building from source
Requires Bun 1.3 or later../apps/admin/dist. Skip the admin build if you only need the API. A released binary has the UI compiled inside it and serves it from any working directory.