Skip to content

Latest commit

 

History

History
309 lines (226 loc) · 6.56 KB

File metadata and controls

309 lines (226 loc) · 6.56 KB

🚀 Open Browser Rendering

License: MIT Node.js Version Docker GitHub

Alternatif Open Source untuk Cloudflare Browser Rendering API
Dibuat dengan ❤️ oleh DEVMODE Community

Solusi self-hosted yang powerful untuk rendering halaman web, screenshot, PDF generation, dan JavaScript evaluation menggunakan Hono + Playwright.


📚 Dokumentasi


Dokumentasi Indonesia

🌟 Fitur Utama

  • 📸 Screenshot API - Tangkap screenshot dalam format PNG/JPEG
  • 📄 PDF Generation - Konversi halaman web ke PDF
  • 🔧 JavaScript Evaluation - Jalankan JavaScript di browser
  • 🔐 Autentikasi Aman - Bearer token authentication
  • Kontrol Konkurensi - Pembatasan request otomatis
  • 🌐 Multi-Browser - Chromium, Firefox, WebKit
  • 🐳 Docker Ready - Deploy mudah dengan Docker
  • 🔒 Production Ready - Security hardening included

🚀 Quick Start

Opsi 1: Docker (Direkomendasikan)

# Clone repository
git clone https://github.com/devmode-id/OpenBrowserRendering.git
cd OpenBrowserRendering

# Setup environment
cp .env.example .env
# Edit .env dan ganti RENDERER_API_KEY

# Jalankan dengan Docker Compose
docker-compose up -d

# Test
curl http://localhost:3000/health

Opsi 2: Node.js

# Clone repository
git clone https://github.com/devmode-id/OpenBrowserRendering.git
cd OpenBrowserRendering

# Install dependencies
npm install

# Install browser
npx playwright install --with-deps

# Setup environment
cp .env.example .env

# Jalankan server
npm start

📖 Contoh Penggunaan

Screenshot

curl -X POST http://localhost:3000/screenshot \
  -H "Authorization: Bearer supersecret123" \
  -H "Content-Type: application/json" \
  -o screenshot.png \
  -d '{
    "url": "https://example.com",
    "viewport": {"width": 1920, "height": 1080},
    "screenshotOptions": {"fullPage": true}
  }'

PDF

curl -X POST http://localhost:3000/pdf \
  -H "Authorization: Bearer supersecret123" \
  -H "Content-Type: application/json" \
  -o page.pdf \
  -d '{
    "url": "https://example.com",
    "format": "A4"
  }'

🚢 Deploy ke VPS

Menggunakan Script Otomatis

# SSH ke VPS
ssh user@your-vps-ip

# Download dan jalankan script deployment
curl -fsSL https://raw.githubusercontent.com/devmode-id/OpenBrowserRendering/main/scripts/deploy-vps.sh -o deploy.sh
chmod +x deploy.sh
sudo ./deploy.sh

Manual dengan Docker

# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Install Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# Clone dan setup
git clone https://github.com/devmode-id/OpenBrowserRendering.git
cd OpenBrowserRendering
cp .env.example .env
nano .env  # Edit konfigurasi

# Jalankan
docker-compose up -d

Setup Nginx + SSL

# Install Nginx
sudo apt install nginx

# Buat konfigurasi
sudo nano /etc/nginx/sites-available/renderer

# Paste konfigurasi:
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 60s;
    }
}

# Aktifkan site
sudo ln -s /etc/nginx/sites-available/renderer /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

# Install SSL
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com

⚙️ Konfigurasi

Edit file .env:

# Port server
PORT=3000

# API Key (GANTI INI!)
RENDERER_API_KEY=your-secret-key-here

# Browser engine: chromium, firefox, webkit
BROWSER_ENGINE=chromium

# Maksimum request bersamaan
# 2GB RAM = 2, 4GB RAM = 4, 8GB RAM = 8
MAX_CONCURRENCY=2

# CORS origins (pisahkan dengan koma)
ALLOWED_ORIGINS=*

📚 Dokumentasi Lengkap

🔒 Keamanan

⚠️ PENTING untuk Production:

  1. Ganti API Key Default

    # Generate key yang aman
    openssl rand -base64 32
  2. Gunakan HTTPS

    • Deploy di belakang Nginx dengan SSL
    • Gunakan Let's Encrypt untuk sertifikat gratis
  3. Batasi CORS

    ALLOWED_ORIGINS=https://yourdomain.com
  4. Setup Firewall

    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
  5. Rate Limiting

    • Implementasi di Nginx atau Cloudflare
    • Monitor penggunaan resource

📊 Monitoring

Docker

# Status container
docker ps

# Lihat logs
docker-compose logs -f

# Resource usage
docker stats

PM2

# Status
pm2 status

# Logs
pm2 logs

# Monitoring
pm2 monit

🛠️ Troubleshooting

Port sudah digunakan

# Ganti port di .env
PORT=3001

Container restart terus

# Cek logs
docker-compose logs -f

# Cek resource
docker stats

Screenshot kosong

# Gunakan waitUntil: networkidle
{
  "url": "https://example.com",
  "gotoOptions": {"waitUntil": "networkidle"}
}

🤝 Kontribusi

Kami menerima kontribusi! Lihat CONTRIBUTING.id.md untuk panduan.

📄 Lisensi

MIT License - Bebas digunakan, dimodifikasi, dan didistribusikan.

🙏 Terima Kasih

  • Hono - Web framework
  • Playwright - Browser automation
  • Komunitas open source

📞 Dukungan


Dibuat dengan ❤️ oleh DEVMODE Community
Komunitas Developer Indonesia untuk Ekosistem Open Source