Pop!_OS Docker Services
GPU-accelerated document processing services on the workstation.
Services on Pop!_OS
| Service | Purpose | Why here? |
|---|---|---|
| Paperless-ngx | Document management | GPU OCR acceleration |
| Stirling-PDF | PDF tools | Heavy PDF processing |
| Plex | Media server | Already running |
Directory Setup
mkdir -p ~/docker-services/{paperless,stirling-pdf}
mkdir -p ~/docker-services/paperless/{data,media,export,consume}
cd ~/docker-servicesDocker 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:/logsDeploy
cd ~/docker-services
# Pull images
docker compose pull
# Start
docker compose up -d
# Verify
docker compose psAccess URLs
| Service | URL |
|---|---|
| Paperless | http://192.168.1.156:8000 |
| Stirling-PDF | http://192.168.1.156:8081 |
| Plex | http://192.168.1.156:32400 |
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-smiDocument 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.