diff --git a/Dockerfile b/Dockerfile index 66bf33f..8f4d36e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,12 +16,15 @@ ENV PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 -# System deps: ffmpeg (transcode + thumbnails, used in FC-2), unar (archives, FC-2), -# libpq for psycopg, image libs. +# System deps: ffmpeg (transcode + thumbnails, FC-2), unar (archives, FC-2), +# libpq for psycopg, postgresql-client + zstd for FC-5 backup/restore +# (pg_dump + tar --zstd), image libs. RUN apt-get update && apt-get install -y --no-install-recommends \ ffmpeg \ unar \ libpq5 \ + postgresql-client \ + zstd \ libjpeg62-turbo \ libwebp7 \ libpng16-16 \ diff --git a/backend/app/__init__.py b/backend/app/__init__.py index a566a62..3298a3c 100644 --- a/backend/app/__init__.py +++ b/backend/app/__init__.py @@ -23,6 +23,12 @@ def create_app() -> Quart: app = Quart(__name__) app.secret_key = cfg.secret_key + # FC-5: legacy IR ingest JSON can run to tens of MB (hundreds of + # thousands of image_tag_associations). Werkzeug's default form + # memory cap is 500KB; raise both ceilings so the multipart upload + # for /api/migrate/ir_ingest doesn't 413. + app.config["MAX_CONTENT_LENGTH"] = 1024 * 1024 * 1024 # 1 GB + app.config["MAX_FORM_MEMORY_SIZE"] = 1024 * 1024 * 1024 # 1 GB for bp in all_blueprints(): app.register_blueprint(bp)