This task encompasses the work to stand up the Chromium render service in production and staging.
name: chromium-render
description: a MediaWiki service for rendering wiki pages as PDFs using headless Chromium. This service replaces the Electron rendering service (which replaced OCG). Additional (but outdated) background is available on MW.org.
timeline: as soon as possible; the service as a whole is slated for completion by the end of the quarter.
point person: @pmiazga, @Niedzielski, @phuedx
technologies: a Node.js service that uses Chromium via Puppeteer bindings.
request flow diagram:
Requests flow downwards, responses flow upwards:
[ MobileFrontend ] | [ chromium-render ] | [ MediaWiki (desktop/mobile pages) ]
Additionally, an internal flow description is available in the project readme.
project repos:
- chromium-render (source code repo)
- chromium-render/deploy (deployment repo)
additional concerns:
- Chromium, a dependency of the project, must be provided by the system. The environment variable, PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1, must be set prior to executing npm install.
- The target OS must be Debian Stretch per T180037. Debian Stretch has the most up-to-date version of Chromium and there's no community-maintained new-ish Chromium build for Debian Jessie (and we don't want to build and maintain our own!).
note: I (@Niedzielski) am new to this project, it's changed hands and plans a number of times, and I haven't worked to deploy a service previously so please be wary of incorrect details in this task description. My apologies in advance for any confusion this ticket creates.
Acceptance criteria
- Instance OS is Debian Stretch.
- Chromium is installed as a Debian package (e.g., sudo apt install chromium-browser) on the instance.
- npm install does not download Chromium.
- Service is available for production and staging deployments.