Skip to main content

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

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:

#!/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

docker run \
-e YEET_AUTH_KEY=<your-auth-key> \
-v /proc:/proc \
-v /sys/fs/bpf:/sys/fs/bpf \
--pid=host \
--privileged \
-it yeet
FlagWhy it's needed
-e YEET_AUTH_KEYAuthenticates the daemon without an interactive login.
-v /proc:/procGives the daemon access to the host process tree and system stats.
-v /sys/fs/bpf:/sys/fs/bpfMounts the BPF filesystem, required for eBPF features.
--pid=hostShares the host PID namespace so all processes are visible.
--privilegedRequired for loading BPF programs.

Authentication

YEET_AUTH_KEY is a non-interactive auth token. You can generate one at yeet.cx/settings.