Configuration
On first run the server writes config.yaml into the data directory with secure
defaults. Edit it and restart, or override individual values with the environment variables shown
in brackets — handy for Docker. Command-line flags set the data dir and ffprobe path:
audiosilo --data ./data --ffprobe ffprobe.
# Written to <data-dir>/config.yaml on first run with secure defaults.
# Edit and restart, or override selected values with the [ENV_VAR] shown.
bind: "0.0.0.0:8080" # listen address [AUDIOSILO_BIND]
public_url: "" # external base URL for QR/invite [AUDIOSILO_PUBLIC_URL]
tls:
mode: "selfsigned" # off | selfsigned | autocert [AUDIOSILO_TLS_MODE]
hosts: [] # autocert hostnames [AUDIOSILO_TLS_HOSTS]
trusted_proxies: [] # CIDRs whose X-Forwarded-For is trusted [AUDIOSILO_TRUSTED_PROXIES]
cors_origins: [] # allowed browser origins ("*" disables the check) [AUDIOSILO_CORS_ORIGINS]
max_upload_bytes: 2147483648 # 2 GiB [AUDIOSILO_MAX_UPLOAD_BYTES]
web_dir: "" # web player dir; Docker bakes /app/web [AUDIOSILO_WEB_DIR]
libraries: [] # declare libraries to sync + scan on startup
# - name: "Main"
# root: "/srv/audiobooks"
demo:
enabled: false # public throwaway demo accounts [AUDIOSILO_DEMO_ENABLED]
library: "" # library granted to demo users [AUDIOSILO_DEMO_LIBRARY]
idle_ttl: "24h" # reap demo users idle longer than this [AUDIOSILO_DEMO_IDLE_TTL]
app_links: # native deep-linking (iOS/Android), YAML only
apple_app_ids: []
android_package: ""
android_sha256: [] Networking
-
bind— the address to listen on. Default0.0.0.0:8080. -
public_url— the externally reachable base URL, used to build QR pairing payloads and copy-invite links. If empty it's derived from the incoming request; set it explicitly behind a reverse proxy. -
trusted_proxies— CIDRs whoseX-Forwarded-Forheader is trusted. Set this behind a proxy so client IPs (used for rate limiting) are accurate, e.g.["127.0.0.1/32", "10.0.0.0/8"]. -
cors_origins— allowed browser origins. Empty grants no cross-origin headers (native apps and same-origin web clients still work);"*"disables the check.
TLS
The tls.mode key takes one of three values:
selfsigned(default) — generates and persists a self-signed cert. Good for a LAN; clients must accept it.autocert— automatic Let's Encrypt certificates (settls.hosts). Needs a public hostname reachable on :443.off— plain HTTP for use behind a reverse proxy that terminates TLS. See reverse proxy & TLS.
Libraries
Declaring libraries here syncs them into the database and scans them on startup; you
can also create libraries at runtime from the admin console. There's no folder layout to
configure — the scanner classifies each folder on its own (a directory of audio is one
book; loose files at the root are single-file books), and any folder it gets wrong is fixed with a
per-folder override (book | collection).
Public demo mode
With demo.enabled, an unauthenticated visitor can mint a throwaway account that's
granted the named library; idle demo accounts and their data are reaped automatically after
idle_ttl. Intended for a public demo instance such as
demo.audiosilo.app.
Native deep links
Set app_links so the server publishes
/.well-known/apple-app-site-association and /.well-known/assetlinks.json,
letting a phone open the installed app straight from a pairing/invite link (iOS Universal Links /
Android App Links). Leave it empty to fall back to the web player.