Skip to content

Stirling PDF

Purpose: This is a powerful locally hosted web based PDF manipulation tool using docker that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application started as a 100% ChatGPT-made application and has evolved to include a wide range of features to handle all your PDF needs.

Docker Configuration

docker-compose.yml
version: "3.8"
services:
  app:
    image: frooodle/s-pdf:latest
    container_name: stirling-pdf
    environment:
      - TZ=America/Denver
      - DOCKER_ENABLE_SECURITY=false
    volumes:
      - /srv/containers/stirling-pdf/datastore:/datastore
      - /srv/containers/stirling-pdf/trainingData:/usr/share/tesseract-ocr/5/tessdata #Required for extra OCR languages
      - /srv/containers/stirling-pdf/extraConfigs:/configs
      - /srv/containers/stirling-pdf/customFiles:/customFiles/
      - /srv/containers/stirling-pdf/logs:/logs/
    ports:
      - 8080:8080
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.stirling-pdf.rule=Host(`pdf.bunny-lab.io`)"
      - "traefik.http.routers.stirling-pdf.entrypoints=websecure"
      - "traefik.http.routers.stirling-pdf.tls.certresolver=letsencrypt"
      - "traefik.http.services.stirling-pdf.loadbalancer.server.port=8080"
    restart: always
    networks:
        docker_network:
          ipv4_address: 192.168.5.54

networks:
  default:
    external:
      name: docker_network
  docker_network:
    external: true
.env
N/A

Traefik Reverse Proxy Configuration

If the container does not run on the same host as Traefik, you will need to manually add configuration to Traefik's dynamic config file, outlined below.

http:
  routers:
    stirling-pdf:
      entryPoints:
        - websecure
      tls:
        certResolver: letsencrypt
      http2:
      service: stirling-pdf
      rule: Host(`pdf.bunny-lab.io`)

  services:
    stirling-pdf:
      loadBalancer:
        servers:
          - url: http://192.168.5.54:8080
        passHostHeader: true