Puppeteer
Puppeteer Server Configuration
This article details the configuration of the "Puppeteer" server, a dedicated machine used for automated browser testing and web scraping tasks within our infrastructure. Understanding this setup is crucial for developers utilizing the Automated Testing Framework and the Web Data Collection Tools. This documentation is aimed at newcomers to the system and assumes a basic understanding of Linux Server Administration and Node.js.
Overview
The Puppeteer server runs a headless Chrome or Chromium instance, controlled via the Puppeteer Node.js library. This allows us to programmatically interact with websites, take screenshots, generate PDFs, and perform other browser-based tasks without requiring a graphical user interface. It's a vital component of our Continuous Integration/Continuous Deployment Pipeline. The server is designed for high availability and scalability, utilizing Docker for containerization and NGINX as a reverse proxy.
Hardware Specifications
The following table details the hardware specifications of the Puppeteer server:
Component | Specification |
---|---|
CPU | Intel Xeon Silver 4210R (10 cores) |
RAM | 32GB DDR4 ECC |
Storage | 500GB NVMe SSD |
Network Interface | 10 Gigabit Ethernet |
Power Supply | 750W Redundant Power Supply |
These specifications are chosen to ensure the server can handle multiple concurrent Puppeteer instances without performance degradation. Regular monitoring of Server Resource Usage is performed to identify potential bottlenecks.
Software Configuration
The Puppeteer server utilizes a specific software stack to provide a stable and reliable testing environment. Key components include:
- Operating System: Ubuntu Server 22.04 LTS
- Containerization: Docker 20.10.17
- Reverse Proxy: NGINX 1.21.6
- Node.js: 16.17.0
- Puppeteer: 19.7.0
- Process Manager: PM2 5.1.6
Docker Configuration
The Puppeteer application is containerized using Docker. The `Dockerfile` is located in the Puppeteer Docker Repository. A simplified example of the `Dockerfile` is shown below:
Instruction | Description |
---|---|
FROM node:16 | Base image using Node.js 16 |
WORKDIR /app | Sets the working directory inside the container |
COPY package*.json ./ | Copies package.json and package-lock.json |
RUN npm install | Installs Node.js dependencies |
COPY . . | Copies the rest of the application code |
CMD [ "npm", "start" ] | Command to start the application |
The `docker-compose.yml` file defines the container's configuration, including port mappings, environment variables, and resource limits. It's crucial to understand this file for Debugging Docker Containers.
NGINX Configuration
NGINX acts as a reverse proxy, forwarding requests to the Puppeteer container and handling SSL termination. The NGINX configuration file is located at `/etc/nginx/sites-available/puppeteer`. A simplified configuration snippet is presented below:
Configuration | Description |
---|---|
server { ... } | Defines a server block for Puppeteer |
listen 80; | Listens on port 80 |
server_name puppeteer.example.com; | Server name for the Puppeteer service |
location / { ... } | Defines the location block for routing requests |
proxy_pass http://localhost:3000; | Forwards requests to the Puppeteer container |
This configuration allows us to access the Puppeteer service through a domain name (puppeteer.example.com) and ensures secure communication via SSL. Proper NGINX Configuration Management is essential for security and performance.
Security Considerations
Several security measures are in place to protect the Puppeteer server:
- Firewall: A Firewall Configuration restricts access to the server to authorized IP addresses.
- SSL/TLS: SSL/TLS encryption is used to secure communication between clients and the server. See SSL Certificate Management.
- Regular Updates: The operating system and software packages are regularly updated to patch security vulnerabilities. Follow the Server Patching Schedule.
- Container Security: Docker containers are isolated from the host system, limiting the impact of potential security breaches.
- Input Validation: All user inputs are thoroughly validated to prevent injection attacks. See the Input Validation Guidelines.
Monitoring and Logging
The Puppeteer server is monitored using Nagios and Prometheus. Key metrics such as CPU usage, memory usage, disk I/O, and network traffic are tracked. Logs are collected using ELK Stack (Elasticsearch, Logstash, Kibana) for analysis and troubleshooting. Detailed logs are crucial for Troubleshooting Application Errors.
Server Backup Policy is followed to ensure data integrity and availability.
Contact the System Administrators for assistance with the Puppeteer server.
Intel-Based Server Configurations
Configuration | Specifications | Benchmark |
---|---|---|
Core i7-6700K/7700 Server | 64 GB DDR4, NVMe SSD 2 x 512 GB | CPU Benchmark: 8046 |
Core i7-8700 Server | 64 GB DDR4, NVMe SSD 2x1 TB | CPU Benchmark: 13124 |
Core i9-9900K Server | 128 GB DDR4, NVMe SSD 2 x 1 TB | CPU Benchmark: 49969 |
Core i9-13900 Server (64GB) | 64 GB RAM, 2x2 TB NVMe SSD | |
Core i9-13900 Server (128GB) | 128 GB RAM, 2x2 TB NVMe SSD | |
Core i5-13500 Server (64GB) | 64 GB RAM, 2x500 GB NVMe SSD | |
Core i5-13500 Server (128GB) | 128 GB RAM, 2x500 GB NVMe SSD | |
Core i5-13500 Workstation | 64 GB DDR5 RAM, 2 NVMe SSD, NVIDIA RTX 4000 |
AMD-Based Server Configurations
Configuration | Specifications | Benchmark |
---|---|---|
Ryzen 5 3600 Server | 64 GB RAM, 2x480 GB NVMe | CPU Benchmark: 17849 |
Ryzen 7 7700 Server | 64 GB DDR5 RAM, 2x1 TB NVMe | CPU Benchmark: 35224 |
Ryzen 9 5950X Server | 128 GB RAM, 2x4 TB NVMe | CPU Benchmark: 46045 |
Ryzen 9 7950X Server | 128 GB DDR5 ECC, 2x2 TB NVMe | CPU Benchmark: 63561 |
EPYC 7502P Server (128GB/1TB) | 128 GB RAM, 1 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (128GB/2TB) | 128 GB RAM, 2 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (128GB/4TB) | 128 GB RAM, 2x2 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (256GB/1TB) | 256 GB RAM, 1 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (256GB/4TB) | 256 GB RAM, 2x2 TB NVMe | CPU Benchmark: 48021 |
EPYC 9454P Server | 256 GB RAM, 2x2 TB NVMe |
Order Your Dedicated Server
Configure and order your ideal server configuration
Need Assistance?
- Telegram: @powervps Servers at a discounted price
⚠️ *Note: All benchmark scores are approximate and may vary based on configuration. Server availability subject to stock.* ⚠️