ARG PLAYWRIGHT_VERSION=1.61.1
FROM mcr.microsoft.com/playwright:v${PLAYWRIGHT_VERSION}-noble

ENV DEBIAN_FRONTEND=noninteractive \
    NODE_ENV=production \
    PLAYWRIGHT_BROWSERS_PATH=/ms-playwright

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        ca-certificates \
        curl \
        fluxbox \
        fonts-noto-cjk \
        novnc \
        websockify \
        x11-utils \
        x11vnc \
        xvfb \
        sudo \
    && arch="$(dpkg --print-architecture)" \
    && curl -fsSL "https://github.com/cloudflare/cloudflared/releases/download/2025.7.0/cloudflared-linux-${arch}" \
        -o /usr/local/bin/cloudflared \
    && chmod +x /usr/local/bin/cloudflared \
    && docker_arch="$(uname -m)" \
    && curl -fsSL "https://download.docker.com/linux/static/stable/${docker_arch}/docker-27.5.1.tgz" \
        | tar -xz -C /tmp \
    && mv /tmp/docker/docker /usr/local/bin/docker \
    && rm -rf /tmp/docker \
    && mkdir -p /usr/local/lib/docker/cli-plugins \
    && curl -fsSL "https://github.com/docker/compose/releases/download/v2.35.1/docker-compose-linux-${docker_arch}" \
        -o /usr/local/lib/docker/cli-plugins/docker-compose \
    && chmod +x /usr/local/bin/docker /usr/local/lib/docker/cli-plugins/docker-compose \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY package.json package-lock.json ./
RUN npm ci --omit=dev

COPY --chown=pwuser:pwuser src ./src
COPY --chown=pwuser:pwuser scripts ./scripts
COPY --chown=pwuser:pwuser docker-entrypoint.sh ./

RUN chmod +x /app/docker-entrypoint.sh \
    && mkdir -p /data/profiles /tmp/.X11-unix \
    && chmod 1777 /tmp/.X11-unix \
    && chown -R pwuser:pwuser /app /data

ENV DISPLAY=:99 \
    SCREEN_WIDTH=1920 \
    SCREEN_HEIGHT=1080 \
    SCREEN_DEPTH=24 \
    BROWSER_HEADLESS=false \
    BROWSER_START_MINIMIZED=false \
    DEVICE_CONFIG_PATH=/data/device.json \
    PROFILE_DIR=/data/profiles/yeogi \
    HOTELSTORY_PROFILE_DIR=/data/profiles/hotelstory \
    OTA_ALL_PROFILE_DIR=/data/profiles/ota-all \
    ENABLE_VNC=false

EXPOSE 5900 6080

ENTRYPOINT ["/app/docker-entrypoint.sh"]
CMD ["sync-daemon"]
