FROM docker.io/buildpack-deps:stable-scm AS builder LABEL org.opencontainers.image.title="BitlBee container" \ org.opencontainers.image.description="A containerized version of BitlBee with additional plugins." \ org.opencontainers.image.url="https://github.com/mbologna/docker-bitlbee" \ org.opencontainers.image.licenses="MIT" ARG DEBIAN_FRONTEND=noninteractive # e.g. "master" or "tags/3.6-1" ENV BITLBEE_VERSION="master" # Install necessary build packages RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \ autoconf automake \ build-essential \ cmake g++ gettext gcc git \ gperf \ imagemagick \ curl \ make \ cmake \ libtool \ pkg-config \ libglib2.0-dev \ libhttp-parser-dev \ libotr5-dev \ libpurple-dev \ libgnutls28-dev \ libjson-glib-dev libnss3-dev \ libolm-dev \ libqrencode-dev \ libssl-dev \ protobuf-compiler \ protobuf-c-compiler \ libprotobuf-c-dev \ libgcrypt20-dev \ libmarkdown2-dev \ librsvg2-bin \ libsqlite3-dev \ libwebp-dev \ libpng-dev \ libgdk-pixbuf-xlib-2.0-dev \ libopusfile-dev \ libtool-bin \ netcat-traditional \ && rm -fr /var/lib/apt/lists/* #sudo # Install Rust (for purple-presage) RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y # Add .cargo/bin to PATH ENV PATH="/root/.cargo/bin:${PATH}" RUN mkdir -p /build WORKDIR "/build" # Fetch sources of packages to be built RUN git clone https://github.com/bitlbee/bitlbee.git && \ git -C bitlbee checkout ${BITLBEE_VERSION} && \ git clone --recurse-submodules https://github.com/hoehermann/purple-presage.git #git clone https://github.com/matrix-org/purple-matrix && \ # Build Bitlbee WORKDIR /build/bitlbee RUN ./configure --verbose=1 --jabber=1 --otr=1 --purple=1 --strip=1 --prefix=/usr/local/ && \ make -j"$(nproc)" && \ make install && \ make install-bin && \ make install-doc && \ make install-dev && \ make install-etc && \ make install-plugin-otr # Build purple-presage (Signal) FROM builder as presage-builder WORKDIR /build/purple-presage RUN cmake -B build && \ cmake --build build --config Release && \ cmake --install build RUN libtool --mode=finish /usr/lib/x86_64-linux-gnu/purple-2 # Build purple-matrix # FROM builder as matrix-builder # WORKDIR /build/purple-matrix # RUN make -j"$(nproc)" && make install FROM docker.io/debian:stable-slim RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \ libpurple0 \ libotr5 \ adduser COPY --from=builder /usr/local/etc/bitlbee/ /usr/local/etc/bitlbee/ COPY --from=builder /usr/local/include/bitlbee/ /usr/local/include/bitlbee/ COPY --from=builder /usr/local/lib/pkgconfig/bitlbee.pc /usr/local/lib/pkgconfig/bitlbee.pc COPY --from=builder /usr/local/sbin/bitlbee /usr/local/sbin/bitlbee COPY --from=builder /usr/local/share/bitlbee/ /usr/local/share/bitlbee/ #COPY --from=builder /usr/local/share/locale/ /usr/local/share/locale/ #COPY --from=builder /usr/local/share/man/ /usr/local/share/man/ #COPY --from=builder /usr/local/share/metainfo/ /usr/local/share/metainfo/ COPY --from=presage-builder /usr/lib/x86_64-linux-gnu/purple-2/libpresage.so /usr/lib/x86_64-linux-gnu/purple-2/libpresage.so # COPY --from=builder /usr/lib/x86_64-linux-gnu/purple-2/libmatrix.so /usr/lib/x86_64-linux-gnu/purple-2/libmatrix.so RUN adduser --system --home /var/lib/bitlbee --disabled-password \ --disabled-login --shell /usr/sbin/nologin bitlbee RUN touch /var/run/bitlbee.pid && chown bitlbee:nogroup /var/run/bitlbee.pid # Cleanup RUN apt-get remove -y adduser && \ rm -fr /var/lib/apt/lists/* EXPOSE 6667 # Needed for VOLUME permissions COPY entrypoint.sh /entrypoint.sh RUN chmod +x entrypoint.sh # Define volumes for persistent data VOLUME ["/var/lib/bitlbee"] USER bitlbee ENTRYPOINT ["/entrypoint.sh"] CMD ["/usr/local/sbin/bitlbee", "-F", "-n", "-v", "-u", "bitlbee"]