-
Notifications
You must be signed in to change notification settings - Fork 17
Installation
TinyIce ships as a single static binary with everything embedded. Pick the
method that fits your environment; all of them land you at the same place — a
server you reach on port 8000 and configure through the JSON
config or the admin UI.
Requires nothing at runtime: no FFmpeg, no GCC, no separate database. The binary is self-contained.
# Latest release for your OS/arch
curl -LJO "https://github.com/DatanoiseTV/tinyice/releases/latest/download/tinyice-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m)"
chmod +x tinyice-*
mv tinyice-* tinyice
./tinyiceReleases are published for Linux, macOS, and Windows on amd64 and arm64. Pick a specific version from the releases page if you need to pin.
Pre-built images for linux/amd64 and linux/arm64 are published on every
release tag.
The image listens on 8080 inside the container and reads its config from
/data/config.json, so map the port as host:8080 and mount a volume at
/data:
docker run --rm -p 8000:8080 -v tinyice-data:/data \
ghcr.io/datanoisetv/tinyice:latest
# now reachable on http://localhost:8000| Tag | Points at |
|---|---|
:latest |
Newest stable release |
:beta |
Newest beta in the current pre-release line |
:vX.Y.Z |
An exact release (e.g. :v2.6.3) |
:X.Y / :X
|
Newest patch in a minor / major line |
The /data volume holds config.json, history.db, playlists, and ACME
certificates, so they survive container restarts. To stream video, also publish
the RTMP and/or SRT ports — see Streaming Sources. A ready-to-use Compose
file is in Examples and Recipes#docker-compose.
Per-arch packages are attached to every GitHub release (amd64/arm64 for
.deb, x86_64/aarch64 for .rpm). They install the binary at
/usr/bin/tinyice, create a dedicated tinyice system user, lay down
/etc/tinyice (config) and /var/lib/tinyice (state), and ship a hardened
systemd unit at /lib/systemd/system/tinyice.service.
# Debian / Ubuntu
sudo dpkg -i tinyice_2.6.3_amd64.deb
# RHEL / Fedora / openSUSE
sudo rpm -i tinyice-2.6.3-1.x86_64.rpmThe packaged binary is granted cap_net_bind_service so it can bind 80/443
without root.
The service is installed masked on purpose. A stray
systemctl start tinyiceor a distro auto-enable hook must not bring up an unconfigured daemon. The post-install message walks you through the safe sequence:sudo systemctl unmask tinyice sudo systemctl enable --now tinyice # then read the generated admin password from the journal: sudo journalctl -u tinyice | grep -A4 "FIRST RUN"
See Deployment for the full systemd story.
Requires Go 1.25+ and Node.js 20+ (Node is only needed to rebuild the frontend).
git clone https://github.com/DatanoiseTV/tinyice.git
cd tinyice
make build # rebuild frontend assets, then compile the Go binary
./tinyice| Target | Does |
|---|---|
make build |
Frontend (go generate) + Go binary |
make generate |
Frontend assets only |
make quick |
Go binary only (reuse existing dist/) |
make dev |
Vite frontend dev server with hot reload |
make clean |
Remove build artifacts |
More in Developing.
On Linux, grant the file capability instead of running as root:
sudo setcap 'cap_net_bind_service=+ep' ./tinyiceThe .deb/.rpm packages and the systemd unit already handle this.
There is no in-process self-updater — distributions own the binary. To update, replace the artifact you installed:
- Binary: download the new release and replace the file (use a hot-swap for zero-downtime).
-
Docker:
docker pullthe new tag and recreate the container. -
Package:
apt upgrade tinyice/dnf upgrade tinyice.
Next: Quick Start to get streaming, then Configuration for the details.
Repository · Releases · Issues · Security policy · Apache-2.0
Getting started
Streaming
Integrations
Operations
Internals
Help