FROM docker.io/louislam/uptime-kuma:1.23.16-debian@sha256:431fee3be822b04861cf0e35daf4beef6b7cb37391c5f26c3ad6e12ce280fe18 AS app-donor FROM docker.io/library/node:20.19.1-bookworm-slim@sha256:9513b8d4c59c7c35e76934765add45efb89102d639f945341d7948b168237633 ARG UID=3310 ARG GID=3310 # renovate: datasource=pypi depName=apprise versioning=pep440 ARG APPRISE_VERSION=1.9.3 # renovate: datasource=github-releases depName=cloudflare/cloudflared ARG CLOUDFLARED_VERSION=2025.4.0 COPY --from=app-donor /app /app RUN apt-get update -qqy \ # Install Uptime-Kuma dependencies && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -qqy \ python3 \ python3-pip \ python3-cryptography \ python3-six \ python3-yaml \ python3-click \ python3-markdown \ python3-requests \ python3-requests-oauthlib \ sqlite3 \ iputils-ping \ util-linux \ dumb-init \ curl \ ca-certificates \ bash \ && pip --no-cache-dir install --break-system-packages apprise==${APPRISE_VERSION} \ && setcap -r /usr/bin/ping \ && rm -rf /var/lib/apt/lists/* \ \ # Download and install cloudflared && ARCH= && dpkgArch="$(dpkg --print-architecture)" \ && case "${dpkgArch##*-}" in \ amd64) ARCH='amd64';; \ arm64) ARCH='arm64';; \ armhf) ARCH='arm';; \ *) echo "unsupported architecture"; exit 1 ;; \ esac \ && curl -fsSLo /usr/local/bin/cloudflared https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-${ARCH} \ && chmod +x /usr/local/bin/cloudflared \ \ # Setup non-root system account + group && addgroup --system --gid ${GID} uptime-kuma || true \ && adduser --system --disabled-login --ingroup uptime-kuma --no-create-home --home /nonexistent --gecos "uptime-kuma" --shell /bin/false --uid ${UID} uptime-kuma || true \ && mkdir -p /app/data \ && chown -R uptime-kuma:0 /app \ && chmod -R g=u /app \ \ # Smoke Tests && set -ex || exit $?; \ cloudflared version; \ apprise --version; ENV HOME=/app WORKDIR /app USER uptime-kuma EXPOSE 3001 VOLUME ["/app/data"] CMD ["/usr/bin/dumb-init", "--", "node", "server/server.js"]