Skip to content

Command Line and Signals

DatanoiseTV edited this page Jun 18, 2026 · 1 revision

Command Line and Signals

Invocation:

./tinyice [flags]
./tinyice <subcommand> [args]

Flags

Flag Default Description
-host 0.0.0.0 Network interface to bind.
-port 8000 HTTP / Icecast port.
-https-port 443 HTTPS port.
-use-https false Enable HTTPS.
-auto-https false Automatic TLS via ACME (Let's Encrypt).
-domains Comma-separated domains for the ACME certificate.
-config tinyice.json Config file path.
-log-file Log output file (stdout if unset).
-auth-log-file Separate auth/audit log.
-log-level info debug · info · warn · error.
-json-logs false Structured JSON logging.
-daemon false Run in the background.
-pid-file Write the PID to this file.

Flags are a convenience layer over tinyice.json; the config file is the durable source of truth (Configuration).

Subcommands

Command Effect
dump-config Pretty-print the effective configuration (after defaults/migrations).
get <key> Read one config key.
set <key> <value> Write one config key and save.
reload Find the running instance (via the PID file) and send it SIGHUP.
help Usage.

get/set understand the common scalar keys — host/bind_host, port, hostname, use_https, auto_https, https_port, page_title, page_subtitle, acme_email, acme_directory_url, domains, location, admin_email, base_url, low_latency_mode, max_listeners, directory_listing, directory_server, cert_file, key_file. For anything structured (mounts, AutoDJs, transcoders, webhooks), edit tinyice.json or use the admin UI / HTTP API.

./tinyice set base_url https://radio.example.com
./tinyice get max_listeners
./tinyice dump-config | less

Signals

Signal Effect
SIGHUP Reload config from disk without dropping listeners — re-reads mounts, passwords, relays, and UI settings, and re-syncs relays (start new, stop deleted).
SIGINT / SIGTERM Graceful shutdown — stops accepting, closes live publisher connections (so Ctrl+C quits within seconds even mid-RTMP-stream), drains, exits.
kill -HUP  $(cat /run/tinyice.pid)     # reload  (same as ./tinyice reload)
kill -TERM $(cat /run/tinyice.pid)     # graceful stop

Under systemd, systemctl reload tinyice and systemctl stop tinyice map to these.

Zero-downtime binary swap

The listening sockets use SO_REUSEADDR + SO_REUSEPORT, so a new build can bind the same port while the old process is still serving:

  1. Start the new binary on the same -port. Both processes share incoming connections.
  2. Once the new one is healthy, SIGTERM the old one — it drains and exits.

The admin UI's hot-swap action triggers the same handoff. See Deployment.


Next: Configuration · Deployment · Troubleshooting and FAQ

Clone this wiki locally