# Install {#install}


Every path to a running `icey-server`. Pick the one that fits your environment.







**Docker**

The fastest path. No build tools, no system dependencies.

```bash
docker run --rm --network host 0state/icey-server:latest
```

Open `http://localhost:4500`.

For production, pin the version:

```bash
docker run --rm --network host 0state/icey-server:0.1.1
```

If you need to override the mode or source in Docker, use environment variables:

```bash
docker run --rm --network host \
  -e ICEY_SOURCE=rtsp://camera.local/stream1 \
  -e ICEY_LOOP=0 \
  0state/icey-server:0.1.1
```

For config-file-driven bring-up or direct `icey-server` flags, use a native `icey-server` install or the repo-backed `auscaster/icey-server` source path.







**Release Binary**

Download a prebuilt binary from the [GitHub releases](https://github.com/auscaster/icey-server/releases) page.

Linux x86_64:

```bash
curl -L https://github.com/auscaster/icey-server/releases/latest/download/icey-server-Linux-x86_64.tar.gz \
  | tar xz
cd icey-server-*
./bin/icey-server --source /path/to/video.mp4
```



> [!WARNING]
> The release binary requires OpenSSL and FFmpeg libraries on the host. If you get missing library errors, install them first or use the Docker path.









**Homebrew**

```bash
brew install auscaster/tap/icey-server
icey-server --source /path/to/video.mp4
```







**APT (Debian/Ubuntu)**

```bash
curl -fsSL https://apt.0state.com/icey/icey-archive-keyring.gpg \
  | sudo tee /usr/share/keyrings/icey-archive-keyring.gpg >/dev/null
curl -fsSL https://apt.0state.com/icey/icey-server.list \
  | sudo tee /etc/apt/sources.list.d/icey-server.list >/dev/null
sudo apt update
sudo apt install icey-server
```

```bash
icey-server --source /path/to/video.mp4
```







**AUR (Arch)**

```bash
yay -S icey-server
icey-server --source /path/to/video.mp4
```







**Nix**

```bash
nix run github:auscaster/icey-server -- --source /path/to/video.mp4
```







**Build From Source**

Build `icey-server` against a local icey checkout:



1. **Clone both repos**

   ```bash
   git clone https://github.com/auscaster/icey.git
   git clone https://github.com/auscaster/icey-server.git
   ```

2. **Build the server**

   ```bash
   cd icey-server
   cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DICEY_SOURCE_DIR=../icey
   cmake --build build --target icey-server
   ```

3. **Build the web UI**

   ```bash
   cd web
   npm install
   npm run build
   cd ..
   ```

4. **Run it**

   ```bash
   ./build/src/server/icey-server --web-root web/dist --source /path/to/video.mp4
   ```



Prerequisites: CMake 3.21+, a C++20 compiler, OpenSSL 3.x, FFmpeg 5+/6+/7+, Node.js (for the web UI build). libdatachannel is fetched automatically.






## What You Get {#what-you-get}


Regardless of install method, you get a single `icey-server` binary. It serves the web UI, runs Symple signalling, handles WebRTC sessions, and optionally runs an embedded TURN relay. No external services required.

Release tarballs and Debian packages bundle the web UI under `share/icey-server/web`. `icey-server` will auto-discover that packaged path when `./web/dist` is not present, so the packaged binary can run without an extra `--web-root` flag.

Default ports:

| Service | Port |
| --- | --- |
| HTTP / WebSocket | 4500 |
| TURN relay | 3478 |

Both are configurable via CLI flags or config file. See the [CLI reference](https://auscaster.com/icey/docs/guides/run/cli.md) and [config guide](https://auscaster.com/icey/docs/guides/operate/config.md).


## Library (For C++ Developers) {#library-for-c-developers}


If you want to use icey as a library in your own C++ project rather than running the server, the [HTTP Server recipe](https://auscaster.com/icey/docs/guides/recipes/http-server.md) is the shortest end-to-end example. It covers FetchContent, CMake targets, and linking individual modules. The repository [README](https://github.com/auscaster/icey#quick-start) has the full library quick-start.
