pokerogue Docker & Self-Hosted Deployment

GitHub

A browser based PokΓ©mon fangame heavily inspired by the roguelite genre.

5,794 stars TypeScript TypeScript 1 file Β· ~12,099 tokens #indie-game#open-source#pokemon#pokerogue#typescript
1. Pull Image (DOCKERHUB) docker pull pagefaultgames/pokerogue:latest
2. Docker Run (1-Click Launch) docker run -d --name pokerogue --restart always pagefaultgames/pokerogue:latest
3. Podman Run podman run -d --name pokerogue --restart always pagefaultgames/pokerogue:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/pagefaultgames/pokerogue:latest
5. ORAS Pull (OCI Artifact) oras pull pagefaultgames/pokerogue:latest
Dockerfile
# syntax=docker/dockerfile:1
# SPDX-FileCopyrightText: 2025 Pagefault Games
# SPDX-FileContributor: domagoj03
#
# SPDX-License-Identifier: AGPL-3.0-only
ARG NODE_VERSION=24.9
ARG OS=alpine

FROM node:${NODE_VERSION}-${OS}

# Create non-root user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# Install git (for potential runtime needs)
RUN apk add --no-cache git

# Set working directory
WORKDIR /app

# Enable and prepare pnpm
RUN corepack enable && corepack prepare [email protected] --activate

COPY . .

# Copy package files
COPY package.json pnpm-lock.yaml ./

# Install all dependencies
RUN --mount=type=cache,target=/home/appuser/.pnpm-store \
    pnpm install --frozen-lockfile && \
    rm -rf /home/appuser/.pnpm-store/*

# Change ownership
RUN chown -R appuser:appgroup /app

# Switch to non-root user
USER appuser

# Set environment variables
ENV VITE_BYPASS_LOGIN=1 \
    VITE_BYPASS_TUTORIAL=0 \
    NEXT_TELEMETRY_DISABLED=1 \
    PNP_HOME=/home/appuser/.shrc \
    NODE_ENV=development \
    PORT=8000

# Expose port
EXPOSE $PORT

# Start the app in development mode
CMD ["pnpm", "run", "start:podman"]