
Service PDF avec Puppeteer, Docker, Nginx et AWS EC2
Auteur
Vincent Audette
Software Developer
- Technique
- Docker
- AWS
- Node.js
- Puppeteer
- DevOps
Configurer un Service de Génération de PDF Sécurisé avec Puppeteer, Docker, et Nginx sur AWS
Pourquoi utiliser Puppeteer pour générer des PDF ? Puppeteer est une bibliothèque Node.js qui permet de contrôler Chrome ou Chromium via une API de haut niveau. Nous l'utiliserons pour générer des PDF à partir de pages Web.
Dans l'infrastructure défini sur la photo ci-haut nous avons utilisé Docker pour containeriser l'application Node.js qui s'appuie sur Puppeteer pour générer des PDF. Nginx sera utilisé comme proxy inverse pour gérer le chiffrement SSL/TLS et acheminer les requêtes vers le conteneur Docker.
La section identifié par Netlify correspond à l'hébergement de l'application Next.js qui contient la page web dont nous allons générer des PDF. Cette page web utilise la bibliothèque tailwindcss pour stylé la page. Note que cet article n'est pas un tutoriel sur la mise en place d'un site web Next.js, mais plutôt une présentation de la configuration de l'infrastructure pour générer des PDF à partir de pages Web.
1. Configuration de l'Instance EC2
La première étape consiste à lancer une instance EC2 sur AWS pour héberger le service.
- Lancer une instance EC2 : Lors de la configuration des groupes de sécurité, assurez-vous de permettre le trafic sur les ports 22 (SSH), 80 (HTTP), et 443 (HTTPS).
- Se connecter à l'instance EC2 :
ssh -i "votre-clé.pem" ec2-user@votre-ip-publique
2. Installation de Docker
Docker est l’outil utilisé pour containeriser l'application Node.js qui s'appuie sur Puppeteer pour générer des PDF.
-
Installer Docker sur Amazon Linux 2 :
sudo yum update -y sudo amazon-linux-extras install docker sudo service docker start sudo usermod -a -G docker ec2-user
-
Vérifier l'installation de Docker :
docker --version
3. Configuration de l'Application Node.js avec Puppeteer
Puppeteer est une bibliothèque Node.js qui permet de contrôler Chrome ou Chromium via une API de haut niveau. Nous l'utiliserons pour générer des PDF à partir de pages Web.
-
Créer l'application Node.js :
mkdir service-pdf cd service-pdf npm init -y npm install express puppeteer
-
Exemple de code Node.js (
index.js
) :const express = require('express'); const puppeteer = require('puppeteer'); const app = express(); const PORT = 3000; app.get('/generate-pdf', async (req, res) => { const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'], }); const page = await browser.newPage(); await page.goto('https://example.com', { waitUntil: 'networkidle2' }); const pdfBuffer = await page.pdf({ format: 'Letter', printBackground: true }); await browser.close(); res.set({ 'Content-Type': 'application/pdf', 'Content-Disposition': `attachment; filename="output.pdf"`, }); res.send(pdfBuffer); }); app.listen(PORT, '0.0.0.0', () => { console.log(`
Articles similaires

Découvrez React Joyride : Créez des visites guidées interactives pour votre application
React Joyride est une bibliothèque puissante pour React qui permet d'implémenter des tours guidés interactifs dans vos applications. Ce guide pour débutants explique ce qu'est React Joyride, pourquoi elle est essentielle pour améliorer l'expérience utilisateur, et des étapes simples pour l'intégrer, en s'appuyant sur des pratiques de développement React pour aider votre app à onboarder les utilisateurs de manière engageante et intuitive.
- Technique
- React
- UX

Comprendre Cursor : l'éditeur de code propulsé par l'IA
Cursor est un éditeur de code moderne propulsé par l'IA qui révolutionne la manière dont les développeurs écrivent et interagissent avec leur code. Bâti sur VS Code, il allie la familiarité d'un IDE traditionnel à des capacités d'IA de pointe pour booster la productivité et fluidifier le développement.
- Technique
- IA
- Développement