Docker Compose stack for running Paperless-ngx with optional local AI capabilities.
-
Clone and configure
git clone git@github.com:timothystewart6/paperless-stack.git cd paperless-stack -
Edit environment files
Update passwords and secrets in each service's
.envfile:./paperless/.env- Paperless configuration./postgres/.env- Database credentials (must match Paperless config)- Other service
.envfiles as needed
-
Start the stack
docker compose up -d
-
Create admin account
Open http://localhost:8000 and create your Paperless admin account.
-
Optional: Configure AI services
For AI features, you'll need to:
- Open Open WebUI at http://localhost:3001 and pull models:
llama3.2:3b(lightweight, for metadata suggestions and document reasoning)minicpm-v:8b(vision model, for improved OCR)- These should match the models listed in
./paperless-ai/.envand `./paperless-gpt/.env
- In Paperless, go to Profile → API Tokens → Generate
- Copy the token and add it to
./paperless-ai/.envand./paperless-gpt/.env - Update
./paperless-ai/.envwith Paperless username - Restart services:
docker compose restart
- Open Open WebUI at http://localhost:3001 and pull models:
The AI components are entirely optional and can be disabled by commenting them out. Paperless works great without AI.
| Service | URL |
|---|---|
| Paperless-ngx | http://localhost:8000 |
| Open WebUI | http://localhost:3001 |
| Paperless-AI | http://localhost:3000 |
| Paperless-GPT | http://localhost:3002 |
| Dozzle (logs) | http://localhost:8080 |
- Pre-configured environment files for all services
- Paperless-ngx with OCR, tagging, and search capabilities
- PostgreSQL database and Redis cache
- Document conversion and text extraction (Gotenberg, Tika)
- Optional local AI features:
- Ollama for local LLM inference
- Open WebUI for model management
- Paperless-AI for metadata suggestions
- Paperless-GPT for vision-based OCR improvements and metadata suggestions
- Log viewer with Dozzle
- Add documents: Drop files in
./paperless/consume/folder - Search documents: Use the search bar in Paperless web interface
- View logs: Use Dozzle at http://localhost:8080
- Security: Use a VPN for remote access. Don't expose these services directly to the internet.
- Backups: Back up
./paperless/data/,./paperless/media/, and./postgres/data/ - Updates: Run
docker compose pull && docker compose up -d
- Detailed Guide: Self-Hosted Paperless-ngx + Optional Local AI
- Video Tutorial: Paperless-ngx + Local AI (Optional): Better OCR, Self-Hosted, No Cloud
- Check logs:
docker compose logs [service-name]or use Dozzle at http://localhost:8080 - Check service status:
docker compose ps - Verify database credentials match between paperless and postgres .env files
- For AI issues, ensure Ollama is running and models are downloaded
For detailed troubleshooting including AI setup, vision OCR, and workflows, see the guide above.
This stack is built using these awesome open-source projects:
- Paperless-ngx - Document management system with OCR and search
- Ollama - Local LLM inference
- Open WebUI - Web interface for Ollama
- Paperless-AI - AI-powered metadata suggestions
- Paperless-GPT - Vision OCR for Paperless
- PostgreSQL - Database system
- Redis - Cache and message broker
- Gotenberg - Document conversion API
- Apache Tika - Content detection and extraction
- Dozzle - Real-time log viewer for Docker
Special thanks to the maintainers and contributors of these projects for making self-hosted document management and local AI accessible.