FROM alpine:3.15 AS builder
ARG RTORRENT_VERSION=0.9.8
ARG LIBTORRENT_VERSION=0.13.8
RUN apk add --no-cache \
    alpine-sdk \
    autoconf \
    automake \
    curl-dev \
    libsigc++-dev \
    libtool \
    linux-headers \
    ncurses-dev \
    openssl-dev \
    xmlrpc-c-dev \
    zlib-dev

RUN git clone --branch v${RTORRENT_VERSION} --single-branch https://github.com/rakshasa/rtorrent.git /rtorrent
RUN git clone --branch v${LIBTORRENT_VERSION} --single-branch https://github.com/rakshasa/libtorrent.git /libtorrent

WORKDIR /libtorrent
RUN ./autogen.sh && \
    ./configure \
        --prefix=/usr \
        --disable-debug \
        --disable-instrumentation && \
    make -j$(nproc) && \
    mkdir -p /build && \
    DESTDIR=/build make install && \
    make install

WORKDIR /rtorrent
RUN ./autogen.sh && \
    ./configure \
        --prefix=/usr \
        --disable-debug \
        --with-xmlrpc-c && \
    make -j$(nproc) && \
    mkdir -p /build && \
    DESTDIR=/build make install

FROM alpine:3.15

RUN apk add --no-cache \
    curl \
    libgcc \
    libstdc++ \
    musl \
    ncurses-libs \
    xmlrpc-c

COPY --from=builder /build/usr/bin/rtorrent /usr/bin/rtorrent
COPY --from=builder /build/usr/lib/libtorrent.so* /usr/lib/

ENV RT_TRACKER_UDP="yes"
ENV RT_DHT_MODE="disable"
ENV RT_DHT_PORT=49160
ENV RT_PROTO_PEX="no"
ENV RT_MAX_UP=100
ENV RT_MAX_UP_GLOBAL=250
ENV RT_MIN_PEERS=20
ENV RT_MAX_PEERS=60
ENV RT_MIN_PEERS_SEED=30
ENV RT_MAX_PEERS_SEED=80
ENV RT_TRACKERS_WANT=80
ENV RT_MEMORY_MAX="1800M"
ENV RT_DAEMON="true"
ENV RT_XMLRPC_BIND="0.0.0.0"
ENV RT_XMLRPC_PORT="5000"

RUN adduser -u 1000 -D rtorrent && \
    addgroup rtorrent rtorrent && \
    mkdir /data && chown rtorrent /data && \
    mkdir /private && chown rtorrent /private

USER rtorrent

COPY src/rtorrent.conf /rtorrent.conf
COPY entrypoint.sh /entrypoint.sh

VOLUME ["/data"]
VOLUME ["/tmp"]

CMD ["/entrypoint.sh"]