Skip to content

Instantly share code, notes, and snippets.

@chimmelb
Last active April 4, 2024 16:07
Show Gist options
  • Star 23 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save chimmelb/6342504893b2b9fce0f4a8efd096ae60 to your computer and use it in GitHub Desktop.
Save chimmelb/6342504893b2b9fce0f4a8efd096ae60 to your computer and use it in GitHub Desktop.
.ebextensions config file to load NodeJS EB instance with packages needed for Puppeteer/Chromium
# This is for ElasticBeanstalk with Amazon Linux 2023. For previous Linux 2 or Linux 1, see revisions for ideas
packages:
yum:
cups-libs: []
libdrm: []
libXdamage: []
libXfixes: []
libXrandr: []
mesa-libgbm: []
libxkbcommon: []
dbus-glib: []
libXrandr: []
libXcursor: []
libXinerama: []
cairo: []
cairo-gobject: []
pango: []
liberation-sans-fonts: []
libwayland-client: []
libwayland-cursor: []
gtk3: []
gdk-pixbuf2: []
libxkbcommon: []
libXScrnSaver: []
libpkgconf: []
atk: []
at-spi2-atk: []
at-spi2-core: []
alsa-lib: []
commands:
refresh-fonts:
command: |
fc-cache-64 -f -v
@chimmelb
Copy link
Author

We recently moved to Amazon Linux 2 and the upgrade had some changes for this config. (Revision 4)
Available Yum libs made it all a lot easier. I added the comments (prefixed with #) live in this gist, so if they break, remove them!
Linux (1) ideas are in the prior revisions.

@samueuh
Copy link

samueuh commented Jun 29, 2022

You are my hero! Thank you so much!

@raphaelsetin
Copy link

This worked with Node.js 16 running on 64bit Amazon Linux 2/5.5.6 🎉

Thank you!!

@falco467
Copy link

falco467 commented Dec 1, 2022

I found an easy way on Amazon Linux 2 is just:

packages: 
  yum:
    google-chrome-stable: []

This will install all required libraries with google chrome, even if you use the local installation from puppeteer afterwards.

Additionally I needed to configure the cache directory of puppeteer to a local directory, because how staging of new versions works on Elastic Beanstalk. Just put a .puppeteerrc.cjs in your project root:

const {join} = require('path');

/**
 * @type {import("puppeteer").Configuration}
 */
module.exports = {
  // Changes the cache location for Puppeteer.
  cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
};

@SFaraji
Copy link

SFaraji commented Dec 8, 2022

@falco467 I'm facing the similar issue with Playwright package which cannot use due to dependencies issue. Please see my latest log which I raised in StackOverflow and if you can point me what I'm doing wrong. Thanks
https://stackoverflow.com/questions/74696909/error-in-aws-elastic-beanstalk-for-using-playwrightcrawler-package

@wojtekKrol
Copy link

And how do you install puppeter (in my case playwright)?

I tried with command

npx playwright install chromium but it throws error

@falco467
Copy link

@wojtekKrol
Exactly as @SFaraji wrote in his StackOverflow answer. You need to install playwright with EBCONFIG file:

 command: PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npx playwright install

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment