docker.recipes

Stirling PDF Tools

beginner

Self-hosted PDF manipulation tool for merging, splitting, converting, and more.

Overview

Stirling PDF Tools is a powerful, self-hosted web application that provides comprehensive PDF manipulation capabilities without requiring users to upload sensitive documents to third-party services. Developed as a privacy-focused alternative to online PDF tools, Stirling PDF offers an extensive suite of features including document merging, splitting, rotation, watermarking, OCR processing, and format conversion. The application runs entirely within your infrastructure, ensuring complete data sovereignty and compliance with strict privacy requirements. This deployment combines Stirling PDF with NGINX to create a production-ready document processing platform. NGINX serves as a reverse proxy, handling SSL termination, static file caching, and providing enhanced security features like rate limiting and request filtering. This architecture allows you to expose Stirling PDF to multiple users or teams while maintaining performance and security standards. The setup isolates PDF processing workloads behind NGINX's battle-tested web server capabilities. This stack is ideal for organizations that regularly handle confidential documents, legal firms processing sensitive contracts, educational institutions managing student records, or any business requiring reliable PDF manipulation tools without cloud dependencies. Small businesses and home users will appreciate the comprehensive feature set that rivals expensive desktop applications, while enterprises benefit from the scalable, containerized deployment that integrates with existing infrastructure monitoring and backup systems.

Key Features

  • Complete PDF manipulation suite with merge, split, rotate, crop, and page extraction capabilities
  • Advanced OCR processing using Tesseract with support for multiple languages and custom training data
  • Format conversion between PDF, Word, Excel, PowerPoint, and various image formats
  • Security features including password protection, digital signatures, and watermark application
  • NGINX reverse proxy with SSL/TLS termination and HTTP/2 support for improved performance
  • Batch processing capabilities for handling multiple documents simultaneously
  • Image extraction and manipulation tools for extracting graphics from PDF documents
  • Form filling and PDF annotation tools for interactive document processing

Common Use Cases

  • 1Legal firms processing confidential contracts and court documents without cloud exposure
  • 2Educational institutions batch-processing student transcripts and administrative documents
  • 3Small businesses combining invoices, contracts, and reports for client deliverables
  • 4Government agencies requiring air-gapped document processing for classified materials
  • 5Healthcare organizations processing patient records while maintaining HIPAA compliance
  • 6Real estate companies combining property documents, contracts, and disclosure forms
  • 7Corporate document management for merging quarterly reports and financial statements

Prerequisites

  • Minimum 1GB RAM for basic PDF operations, 2GB+ recommended for OCR processing
  • Docker and Docker Compose installed with sufficient storage for document processing
  • Ports 80 and 443 available for NGINX web server access
  • Understanding of NGINX configuration for SSL certificate setup and custom domains
  • Basic knowledge of PDF processing workflows and document security requirements

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 stirling-pdf:
3 image: frooodle/s-pdf:latest
4 ports:
5 - "8080:8080"
6 volumes:
7 - stirling_training:/usr/share/tessdata
8 - stirling_configs:/configs
9 - stirling_logs:/logs
10 environment:
11 DOCKER_ENABLE_SECURITY: "false"
12 networks:
13 - stirling-net
14 restart: unless-stopped
15
16 nginx:
17 image: nginx:alpine
18 ports:
19 - "80:80"
20 - "443:443"
21 volumes:
22 - ./nginx.conf:/etc/nginx/nginx.conf:ro
23 depends_on:
24 - stirling-pdf
25 networks:
26 - stirling-net
27 restart: unless-stopped
28
29volumes:
30 stirling_training:
31 stirling_configs:
32 stirling_logs:
33
34networks:
35 stirling-net:
36 driver: bridge

.env Template

.env
1# Stirling PDF Configuration
2DOCKER_ENABLE_SECURITY=false

Usage Notes

  1. 1Web UI at http://localhost:8080
  2. 2Merge, split, rotate, watermark PDFs
  3. 3OCR and image extraction
  4. 4No data leaves your server

Individual Services(2 services)

Copy individual services to mix and match with your existing compose files.

stirling-pdf
stirling-pdf:
  image: frooodle/s-pdf:latest
  ports:
    - "8080:8080"
  volumes:
    - stirling_training:/usr/share/tessdata
    - stirling_configs:/configs
    - stirling_logs:/logs
  environment:
    DOCKER_ENABLE_SECURITY: "false"
  networks:
    - stirling-net
  restart: unless-stopped
nginx
nginx:
  image: nginx:alpine
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf:ro
  depends_on:
    - stirling-pdf
  networks:
    - stirling-net
  restart: unless-stopped

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 stirling-pdf:
5 image: frooodle/s-pdf:latest
6 ports:
7 - "8080:8080"
8 volumes:
9 - stirling_training:/usr/share/tessdata
10 - stirling_configs:/configs
11 - stirling_logs:/logs
12 environment:
13 DOCKER_ENABLE_SECURITY: "false"
14 networks:
15 - stirling-net
16 restart: unless-stopped
17
18 nginx:
19 image: nginx:alpine
20 ports:
21 - "80:80"
22 - "443:443"
23 volumes:
24 - ./nginx.conf:/etc/nginx/nginx.conf:ro
25 depends_on:
26 - stirling-pdf
27 networks:
28 - stirling-net
29 restart: unless-stopped
30
31volumes:
32 stirling_training:
33 stirling_configs:
34 stirling_logs:
35
36networks:
37 stirling-net:
38 driver: bridge
39EOF
40
41# 2. Create the .env file
42cat > .env << 'EOF'
43# Stirling PDF Configuration
44DOCKER_ENABLE_SECURITY=false
45EOF
46
47# 3. Start the services
48docker compose up -d
49
50# 4. View logs
51docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/stirling-pdf-tools/run | bash

Troubleshooting

  • OCR processing fails with 'Tesseract not found': Ensure stirling_training volume is properly mounted and Tesseract language packs are downloaded
  • Large PDF uploads timeout: Increase NGINX client_max_body_size directive and proxy timeout values in nginx.conf
  • Memory errors during PDF processing: Increase container memory limits and ensure sufficient host system RAM
  • NGINX 502 Bad Gateway errors: Verify stirling-pdf container is running and accessible on port 8080 within the Docker network
  • PDF conversion fails for Office documents: Check that LibreOffice components are properly installed in the stirling-pdf container

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space