FROM ubuntu:26.04 LABEL maintainer="Penpot " ENV LANG=en_US.UTF-8 \ LC_ALL=en_US.UTF-8 \ NODE_VERSION=v24.18.0 \ DEBIAN_FRONTEND=noninteractive \ PATH=/opt/node/bin:$PATH RUN set -ex; \ useradd -U -M -u 1001 -s /bin/false -d /opt/penpot penpot; \ mkdir -p /etc/resolvconf/resolv.conf.d; \ echo "nameserver 127.0.0.11" > /etc/resolvconf/resolv.conf.d/tail; \ apt-get -qq update; \ apt-get -qq dist-upgrade; \ apt-get -qqy --no-install-recommends install \ curl \ tzdata \ locales \ ca-certificates \ ; \ apt-get clean; \ rm -rf /var/lib/apt/lists/*; \ echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \ locale-gen; \ find /usr/share/i18n/locales/ -type f ! -name "en_US" ! -name "POSIX" ! -name "C" -delete; RUN set -ex; \ apt-get -qq update; \ apt-get -qqy --no-install-recommends install \ fontforge \ woff-tools \ woff2 \ \ libgomp1 \ libheif1 \ libjpeg-turbo8 \ liblcms2-2 \ libopenexr-3-1-30 \ libopenjp2-7 \ libpng16-16 \ librsvg2-2 \ libtiff6 \ libwebp7 \ libwebpdemux2 \ libwebpmux3 \ libxml2-16 \ libzip5 \ libzstd1 \ ; \ apt-get clean; \ rm -rf /var/lib/apt/lists/*; RUN set -eux; \ ARCH="$(dpkg --print-architecture)"; \ case "${ARCH}" in \ aarch64|arm64) \ BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-arm64.tar.gz"; \ ;; \ amd64|x86_64) \ BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.gz"; \ ;; \ *) \ echo "Unsupported arch: ${ARCH}"; \ exit 1; \ ;; \ esac; \ curl -LfsSo /tmp/nodejs.tar.gz ${BINARY_URL}; \ mkdir -p /opt/node; \ cd /opt/node; \ tar -xf /tmp/nodejs.tar.gz --strip-components=1; \ chown -R root /opt/node; \ rm -rf /tmp/nodejs.tar.gz; \ corepack enable; \ mkdir -p /opt/penpot; \ chown -R penpot:penpot /opt/penpot; ARG BUNDLE_PATH="./bundle-media-processor/" COPY --chown=penpot:penpot $BUNDLE_PATH /opt/penpot/media-processor/ WORKDIR /opt/penpot/media-processor USER penpot:penpot RUN ./setup CMD ["node", "dist/index.js"]