# Real-ESRGAN (ncnn-vulkan) para el reescalado HD. Solo se guardan los modelos de anime ×2 (capítulos) y ×4 (recortes). FROM debian:trixie-slim AS esrgan ARG ESRGAN_URL=https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesrgan-ncnn-vulkan-20220424-ubuntu.zip ARG ESRGAN_SHA256=e5aa6eb131234b87c0c51f82b89390f5e3e642b7b70f2b9bbe95b6a285a40c96 RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl unzip && rm -rf /var/lib/apt/lists/* RUN curl -fsSL -o /tmp/esr.zip "$ESRGAN_URL" \ && echo "$ESRGAN_SHA256 /tmp/esr.zip" | sha256sum -c - \ && mkdir -p /opt/realesrgan/models && cd /tmp && unzip -q esr.zip -d esr \ && install -m 755 esr/realesrgan-ncnn-vulkan /opt/realesrgan/ \ && cp esr/models/realesr-animevideov3-x2.* esr/models/realesr-animevideov3-x4.* /opt/realesrgan/models/ # Versión fijada: node:sqlite aún es experimental y una actualización silenciosa podría romperlo. # Debian (no Alpine): Real-ESRGAN necesita glibc y los controladores Vulkan de Mesa. FROM node:24.22.2-trixie-slim ENV NODE_ENV=production NODE_NO_WARNINGS=1 \ UPSCALER_BIN=/opt/realesrgan/realesrgan-ncnn-vulkan \ MESA_SHADER_CACHE_DIR=/tmp/mesa-cache RUN apt-get update && apt-get install -y --no-install-recommends tzdata libvulkan1 mesa-vulkan-drivers libgomp1 webp \ && rm -rf /var/lib/apt/lists/* COPY --from=esrgan /opt/realesrgan /opt/realesrgan WORKDIR /app COPY app/ ./ # Usuario por defecto; docker-compose.yml lo sustituye por PUID:PGID. USER node EXPOSE 3352 HEALTHCHECK --interval=60s --timeout=5s --start-period=20s CMD node -e "fetch('http://127.0.0.1:3352/api/me').then(r=>process.exit(r.status<500?0:1),()=>process.exit(1))" CMD ["node", "server.js"]