Skip to content

Tools Stack

Nota (2026-07-12): Stash está decomisionado (container Exited, sin uso; el puerto 9999 es ahora Dozzle).

Utilities and document management. On-demand (can be stopped to save resources).

Compose file tools/compose.yaml
Status On-demand
Dependencies NFS mount at /mnt/nfs_media

Services Overview

Document Management

Service Port Purpose Dependencies
Paperless-ngx 8000 Document OCR & organization paperless-db, paperless-redis
Immich 2283 Photo management (Google Photos alternative) immich-db, immich-redis, immich-ml

Media Tools

Service Port Purpose
Stirling-PDF 8088 PDF manipulation tools
Stash 9990 Media organizer
MeTube 8081 YouTube downloader (yt-dlp)
Pinchflat 8945 YouTube channel archiver
ydl_api_ng 5011 YouTube download API

Utilities

Service Port Purpose
Changedetection 5000 Website change monitoring
Karakeep 3333 AI-powered bookmarks (formerly Hoarder)
Dozzle 9999 Real-time Docker log viewer
Code-server 8443 VS Code in browser
PairDrop 3210 Local file sharing (AirDrop alternative)

Detailed Service Info

Paperless-ngx

Document management with OCR.

Turbo-boosted settings: - PAPERLESS_TASK_WORKERS=4 - PAPERLESS_THREADS_PER_WORKER=2 - PAPERLESS_CONSUMER_POLLING=30

Paths: - Consume folder: /mnt/nfs_media/documents/consume (drop files here) - Media storage: /mnt/nfs_media/documents/media - Config: /home/monxas/appdata/paperless/data

Database: PostgreSQL at /home/monxas/appdata/paperless/pgdata

Immich

Self-hosted Google Photos replacement with ML-powered search.

Components: - immich-server - Main API and web UI - immich-machine-learning - Face recognition, object detection - immich-redis - Caching - immich-db - PostgreSQL with pgvecto-rs

Turbo-boosted settings: - MACHINE_LEARNING_WORKERS=2 - MACHINE_LEARNING_WORKER_TIMEOUT=120

Paths: - Photos: /mnt/nfs_media/photos - External library (read-only): /mnt/nfs_media/pics - ML cache: /home/monxas/appdata/immich/model-cache

Stash

Media organizer with metadata scraping.

Turbo-boosted settings: - STASH_PARALLEL_TASKS=4 - STASH_PREVIEW_PRESET=fast

Paths: - Data: /mnt/nfs_media/nopor - Generated content: /home/monxas/appdata/stash/generated

Changedetection

Website monitoring with browser rendering.

Components: - changedetection - Main service - playwright-chrome - Headless browser for JS-heavy sites

Turbo-boosted settings: - MAX_CONCURRENT_CHROME_PROCESSES=15

Karakeep (formerly Hoarder)

AI-powered bookmark manager.

Components: - karakeep - Main service - karakeep-chrome - Screenshot capture - karakeep-meilisearch - Full-text search

Uses OpenAI API for automatic tagging (OPENAI_API_KEY from .env).

ydl_api_ng

YouTube download API backend.

Turbo-boosted settings: - NB_WORKERS=8

Uses Redis for job queue.

Resource Considerations

This stack can be resource-intensive when all services are running:

Service RAM (idle) RAM (active) Notes
Paperless ~200MB ~500MB+ OCR is CPU-heavy
Immich ~300MB ~2GB+ ML uses significant RAM
Stash ~100MB ~500MB+ Scanning/generating previews
Playwright ~100MB ~500MB+ Per-browser instance

Stop when not needed:

./docker-stack.sh stop tools

Troubleshooting

Paperless not OCRing?

# Check consumer
docker logs paperless --tail 50 | grep -i "consumer"

# Check language packs
docker exec paperless tesseract --list-langs

Immich ML not working?

# Check ML container
docker logs immich-machine-learning --tail 50

# Check model cache
ls -la /home/monxas/appdata/immich/model-cache/

Changedetection not rendering JavaScript?

# Check playwright
docker logs playwright-chrome --tail 20

# Test browser
docker exec changedetection curl -s http://playwright-chrome:3000/json/version

Karakeep not tagging?

# Check OpenAI key is set
grep OPENAI_API_KEY /home/monxas/.env

# Check service logs
docker logs karakeep --tail 50