# Librespot (Spotify Connect) for ARM64 # Multi-stage: cross-compile Rust app on x86_64 builder, ship slim runtime. # Audio output: PulseAudio (connect to audio-bridge via TCP localhost:4713). FROM rust:1.85.1-bookworm AS builder # Cross-compile toolchain for aarch64 RUN rustup target add aarch64-unknown-linux-gnu RUN dpkg --add-architecture arm64 \ && apt-get update \ && apt-get install -y --no-install-recommends \ gcc-aarch64-linux-gnu \ libpulse-dev:arm64 \ libasound2-dev:arm64 \ libssl-dev:arm64 \ && rm -rf /var/lib/apt/lists/* # Build librespot. Pin to a known tag. ARG LIBRESPOT_VERSION=v0.8.0 RUN git clone --depth 1 --branch ${LIBRESPOT_VERSION} \ https://github.com/librespot-org/librespot.git /src WORKDIR /src ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc RUN cargo build --release --target aarch64-unknown-linux-gnu --no-default-features --features="pulseaudio-backend" FROM debian:bookworm-slim RUN dpkg --add-architecture arm64 \ && apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ libpulse0:arm64 \ libasound2:arm64 \ libssl3:arm64 \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /src/target/aarch64-unknown-linux-gnu/release/librespot /usr/local/bin/librespot # Cache dir for Spotify credentials VOLUME ["/var/cache/librespot"] # PulseAudio bridge is at localhost:4713 (audio-bridge) ENV PULSE_SERVER=tcp:127.0.0.1:4713 CMD ["librespot", \ "--name", "Klubhaus", \ "--backend", "pulseaudio", \ "--device", "alsa_output.default", \ "--bitrate", "320", \ "--enable-audio-cache", \ "--cache", "/var/cache/librespot"]