FROM ubuntu:26.04

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        krb5-kdc \
        krb5-admin-server \
        krb5-config \
        libcap2-bin \
        tini && \
    rm -rf /var/lib/apt/lists/*

RUN groupadd -r krb5 && useradd -r -g krb5 -s /sbin/nologin krb5

# Allow binding to privileged ports without root
RUN setcap cap_net_bind_service=+ep /usr/sbin/krb5kdc && \
    setcap cap_net_bind_service=+ep /usr/sbin/kadmind

# Pre-create files the entrypoint writes to outside the volume
RUN mkdir -p /etc/krb5kdc && \
    touch /etc/krb5.conf && \
    chown -R krb5:krb5 /etc/krb5kdc /etc/krb5.conf /var/lib/krb5kdc

COPY --chown=krb5:krb5 entrypoint.sh /entrypoint

RUN chmod +x /entrypoint

USER krb5

EXPOSE 88/tcp 88/udp 464/tcp 464/udp 749/tcp

ENTRYPOINT ["tini", "--", "/entrypoint"]
