- FastAPI backend: admin bootstrap with forced credential change, admin-created users with one-time generated passwords, roles as permission sets - Games and versions with content-addressed blob storage; forks copy only the manifest, so mods share assets with the original - Worker: archive/RPA extraction, unrpyc for .rpyc, own .rpy parser, Python subset translated via ast, media converted to WebP/Opus/WebM - React panel (library search, game page, upload, users, roles) and a framework-free web player with saves, history, skip/auto, transitions - docker compose: postgres, backend, worker, nginx on a single HTTP port Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 lines
670 B
Docker
19 lines
670 B
Docker
FROM python:3.12-slim-bookworm
|
||
|
||
RUN apt-get update \
|
||
&& apt-get install -y --no-install-recommends ffmpeg 7zip git ca-certificates \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# unrpyc v2 decompiles .rpyc from Ren'Py 6.18 – 8 on Python 3
|
||
ARG UNRPYC_REF=master
|
||
RUN git clone --depth 1 --branch ${UNRPYC_REF} https://github.com/CensoredUsername/unrpyc /opt/unrpyc \
|
||
&& rm -rf /opt/unrpyc/.git
|
||
|
||
WORKDIR /app
|
||
COPY requirements.txt .
|
||
RUN pip install --no-cache-dir -r requirements.txt
|
||
COPY . .
|
||
|
||
ENV PYTHONUNBUFFERED=1 DATA_DIR=/data
|
||
CMD ["sh", "-c", "alembic upgrade head && exec uvicorn app.main:app --host 0.0.0.0 --port 8000 --proxy-headers --forwarded-allow-ips='*'"]
|