FROM --platform=linux/amd64 ubuntu:24.04

ENV DEBIAN_FRONTEND=noninteractive
ENV PLAYWRIGHT_BROWSERS_PATH=/opt/ms-playwright
ENV PATH=/usr/local/go/bin:/usr/local/lib/nodejs/node-v26.10.0-linux-x64/bin:${PATH}

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        ca-certificates \
        curl \
        git \
        libatomic1 \
        make \
        openssh-server \
        sudo \
        xz-utils \
        software-properties-common \
    && add-apt-repository -y ppa:deadsnakes/ppa \
    && apt-get update \
    && apt-get install -y --no-install-recommends \
        python3.14 \
        python3.14-venv \
    && python3.14 -m ensurepip --upgrade \
    && ln -sf /usr/bin/python3.14 /usr/local/bin/python3 \
    && ln -sf /usr/bin/python3.14 /usr/local/bin/python \
    && rm -rf /var/lib/apt/lists/*

RUN curl -fsSL https://go.dev/dl/go1.27.1.linux-amd64.tar.gz -o /tmp/go1.27.1.linux-amd64.tar.gz \
    && rm -rf /usr/local/go \
    && tar -C /usr/local -xzf /tmp/go1.27.1.linux-amd64.tar.gz \
    && curl -fsSL https://nodejs.org/dist/v26.10.0/node-v26.10.0-linux-x64.tar.xz -o /tmp/node-v26.10.0-linux-x64.tar.xz \
    && mkdir -p /usr/local/lib/nodejs \
    && tar -C /usr/local/lib/nodejs -xJf /tmp/node-v26.10.0-linux-x64.tar.xz \
    && npx -y playwright@1.64.0 install --with-deps chromium \
    && rm -f /tmp/go1.27.1.linux-amd64.tar.gz /tmp/node-v26.10.0-linux-x64.tar.xz \
    && rm -rf /var/lib/apt/lists/*

RUN userdel -r ubuntu 2>/dev/null || true \
    && groupdel ubuntu 2>/dev/null || true \
    && groupadd --gid 1000 dev \
    && useradd --uid 1000 --gid 1000 --create-home --shell /bin/bash dev \
    && echo "dev ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/dev \
    && chmod 0440 /etc/sudoers.d/dev \
    && printf '\nPermitRootLogin no\nPasswordAuthentication no\nPubkeyAuthentication yes\n' >> /etc/ssh/sshd_config

COPY --chmod=755 entrypoint.sh /usr/local/bin/entrypoint.sh
COPY --chmod=755 verify-env.sh /usr/local/bin/verify-env.sh

EXPOSE 22
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
