Pop!_OS Docker Services

GPU-accelerated document processing services on the workstation.

Services on Pop!_OS

ServicePurposeWhy here?
Paperless-ngxDocument managementGPU OCR acceleration
Stirling-PDFPDF toolsHeavy PDF processing
PlexMedia serverAlready running

Directory Setup

mkdir -p ~/docker-services/{paperless,stirling-pdf}
mkdir -p ~/docker-services/paperless/{data,media,export,consume}
cd ~/docker-services

Docker Compose

Create ~/docker-services/docker-compose.yml:

version: "3.8"
 
services:
  # ===================
  # PAPERLESS-NGX - Document Management (GPU)
  # ===================
  paperless-redis:
    image: redis:7
    container_name: paperless-redis
    restart: unless-stopped
    volumes:
      - ./paperless/redis:/data
 
  paperless:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    container_name: paperless
    restart: unless-stopped
    depends_on:
      - paperless-redis
    ports:
      - "8000:8000"
    environment:
      - PAPERLESS_REDIS=redis://paperless-redis:6379
      - PAPERLESS_TIME_ZONE=America/Chicago
      - PAPERLESS_OCR_LANGUAGE=eng
      - PAPERLESS_SECRET_KEY=CHANGE_ME_GENERATE_RANDOM_KEY
      - PAPERLESS_ADMIN_USER=admin
      - PAPERLESS_ADMIN_PASSWORD=CHANGE_ME
    volumes:
      - ./paperless/data:/usr/src/paperless/data
      - ./paperless/media:/usr/src/paperless/media
      - ./paperless/export:/usr/src/paperless/export
      - ./paperless/consume:/usr/src/paperless/consume
    # GPU support (uncomment if needed)
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - capabilities: [gpu]
 
  # ===================
  # STIRLING-PDF - PDF Tools
  # ===================
  stirling-pdf:
    image: frooodle/s-pdf:latest
    container_name: stirling-pdf
    restart: unless-stopped
    ports:
      - "8081:8080"
    environment:
      - DOCKER_ENABLE_SECURITY=false
    volumes:
      - ./stirling-pdf/trainingData:/usr/share/tessdata
      - ./stirling-pdf/extraConfigs:/configs
      - ./stirling-pdf/logs:/logs

Deploy

cd ~/docker-services
 
# Pull images
docker compose pull
 
# Start
docker compose up -d
 
# Verify
docker compose ps

Access URLs


NVIDIA GPU Setup (if not already done)

# Install NVIDIA Container Toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
 
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
 
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
 
# Test GPU in Docker
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi

Document Workflow

Paperless Consume Folder

Drop files into ~/docker-services/paperless/consume/ and Paperless auto-imports them:

# Quick import
cp ~/Downloads/document.pdf ~/docker-services/paperless/consume/

Mobile Upload

Set up email or web upload in Paperless settings for phone scanning.