---
sidebar_position: 2
title: Docker (Linux)
---

# Running with Docker (Linux)

You can run the yeet daemon inside a Docker container on a Linux host. Because yeet reads from `/proc`, uses the BPF filesystem, and needs visibility into host processes, the container requires a few specific flags.

## Dockerfile

```dockerfile
FROM ubuntu:latest

RUN apt update && apt install -y \
  curl \
  libelf-dev

RUN curl -fsSL https://yeet.cx | sh

WORKDIR /yeet
ADD ./entrypoint.sh .
ENTRYPOINT ["./entrypoint.sh"]
```

`libelf-dev` is required for eBPF program loading.

## Entrypoint

The entrypoint starts the daemon and handles cleanup on exit:

```bash
#!/usr/bin/env bash
set -euo pipefail

goodbye() {
  yeet logout --delete-host
  kill -TERM "$yeetd_pid" 2>/dev/null
}

trap goodbye TERM
trap goodbye INT

setsid /usr/sbin/yeetd &
yeetd_pid="$!"

wait "$yeetd_pid"
exit "$?"
```

`setsid` gives the daemon its own session so it isn't killed when the shell exits. The `goodbye` trap logs out and cleans up the host entry before the container stops.

## Running the container

```sh
docker run \
  -e YEET_AUTH_KEY=<your-auth-key> \
  -v /proc:/proc \
  -v /sys/fs/bpf:/sys/fs/bpf \
  --pid=host \
  --privileged \
  -it yeet
```

| Flag | Why it's needed |
|---|---|
| `-e YEET_AUTH_KEY` | Authenticates the daemon without an interactive login. |
| `-v /proc:/proc` | Gives the daemon access to the host process tree and system stats. |
| `-v /sys/fs/bpf:/sys/fs/bpf` | Mounts the BPF filesystem, required for eBPF features. |
| `--pid=host` | Shares the host PID namespace so all processes are visible. |
| `--privileged` | Required for loading BPF programs. |

## Authentication

`YEET_AUTH_KEY` is a non-interactive auth token. You can generate one at [yeet.cx/settings](https://yeet.cx/settings).
