FROM alpine:3.24 LABEL maintainer="Felipe Martin " LABEL org.opencontainers.image.source="https://git.nakama.town/fmartingr/hako" # yt-dlp solves JS challenges with yt-dlp-ejs and a JS runtime. Alpine ships no # deno for armv7, so that image uses nodejs, which yt-dlp only runs when enabled. ARG TARGETARCH RUN if [ "$TARGETARCH" = "arm" ]; then js_runtime="nodejs yt-dlp-ejs-rt-nodejs"; else js_runtime="deno yt-dlp-ejs-rt-deno"; fi \ && apk add --no-cache \ poppler-utils \ ca-certificates \ tzdata \ && apk add --no-cache --repository https://dl-cdn.alpinelinux.org/alpine/v3.24/community yt-dlp yt-dlp-ejs ffmpeg $js_runtime \ && if [ "$TARGETARCH" = "arm" ]; then echo "--js-runtimes node" > /etc/yt-dlp.conf; fi RUN addgroup -g 1000 hako && adduser -u 1000 -G hako -s /bin/sh -D hako WORKDIR /app # goreleaser lays the build context out as /[/]/hako ARG TARGETPLATFORM COPY $TARGETPLATFORM/hako /usr/local/bin/hako RUN chown -R hako:hako /app USER hako EXPOSE 8080 ENTRYPOINT ["/usr/local/bin/hako"] CMD ["server", "--config", "/app/config/config.yaml"]