Advertisement
kiwijunglist

paperless-ngx stack with local AI containers

Jun 22nd, 2025 (edited)
771
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 7.87 KB | None | 0 0
  1. #
  2. # DOCKER COMPOSE STACK FOR DOCKER COMPOSE MANAGER PLUGIN FOR UNRAID
  3. #
  4. #
  5. # 1 EDIT THIS COMPOSE FILE AND CHANGE THE DEFAULT PASSWORD FOR THE DATABASE (optional)
  6. #
  7. # Replace the 3 instances of "password123"
  8. #
  9. #
  10. # 2 CREATE THE EXPECTED DIRECTORIES IN APPDATA BEFORE CREATING THE CONTAINERS
  11. #
  12. # sudo mkdir -p /mnt/user/appdata/paperless/{consume,export,redis,mariadb,paperless-ai,ollama}
  13. # sudo mkdir -p /mnt/user/appdata/paperless/paperless/{data,media}
  14. # sudo mkdir -p /mnt/user/appdata/paperless/paperless-gpt/{prompts,hocr,pdf}
  15. # sudo chown 999:999 /mnt/user/appdata/paperless/mariadb
  16. #
  17. #
  18. # 3 YOU CAN CHECK THE PERMISSIONS FOR APPDATA ARE CORRECT WITH THE ls -l COMMAND
  19. #
  20. # ls -l /mnt/user/appdata/paperless
  21. #
  22. # drwxr-xr-x 1 root root    6 Jun 22 17:00 consume/
  23. # drwxr-xr-x 1 root root    6 Jun 22 17:00 export/
  24. # drwxr-xr-x 1  999  999 4096 Jun 22 17:01 mariadb/
  25. # drwxr-xr-x 1 root root   60 Jun 22 17:01 ollama/
  26. # drwxr-xr-x 1 root root   31 Jun 22 17:00 paperless/
  27. # drwxr-xr-x 1 root root  12      7 Jun 22 17:26 paperless-ai/
  28. # drwxr-xr-x 1 root root   44 Jun 22 17:00 paperless-gpt/
  29. # drwxr-xr-x 1 root root   22 Jun 22 18:26 redis/
  30. #
  31. #
  32. # 4. YOU CAN NOW CLICK DOCKER-COMPOSE UP AND START UP ALL THE COTNTAINERS
  33. #
  34. #
  35. # 5. AFTER RUNNING OLLAMA CONTAINER YOU NEED TO PULL THE AI MODELS
  36. #
  37. # docker exec -it paperless-ollama ollama pull llama3
  38. # docker exec -it paperless-ollama ollama pull minicpm-v
  39. #
  40. #
  41. # 6. PAPERLESS-NGX SETUP (WEB GUI)
  42. #
  43. # you need to generate an API key in paperless-ngx
  44. # Point your web-browser to paperless-ngx http://xxx.xxx.xxx.xxx:8000
  45. # Do the basic setup and then click edit my profile in top right had corner to generate a token
  46. #
  47. #
  48. # 7. PAPERLESS-AI SETUP (WEB GUI)
  49. #
  50. # Point your web-browser to paperless-ai http://xxx.xxx.xxx.xxx:3000
  51. # API Token = the token generated by paperless-ngx in step 6.
  52. # Ollama API URL = http://paperless-ollama:11434
  53. # Ollama model = llama3
  54. #
  55. # 8. PAPERLESS-GPT SETUP (EDIT docker-compose file)
  56. #
  57. # Edit this compose file and insert the API token you generated in step 6.
  58. #
  59. # Example:
  60. #
  61. #   paperless-gpt:
  62. #     container_name: paperless-gpt
  63. #     image: icereed/paperless-gpt:latest
  64. #     restart: unless-stopped
  65. #     environment:
  66. #       PAPERLESS_BASE_URL: "http://paperless:8000"
  67. #       PAPERLESS_API_TOKEN: e3087dd8e058aebfc522fb91426d48d8b4a53a72
  68. #
  69. #
  70. # EXTERNAL PORTS OPENED BY THIS DOCKER STACK
  71. #
  72. # 8000 = paperless-ngx
  73. # 3000 = paperless-ai
  74. # 8082 = paperless-gpt
  75. #
  76.  
  77.  
  78. services:
  79.   paperless:
  80.     container_name: paperless
  81.     image: ghcr.io/paperless-ngx/paperless-ngx:latest
  82.     restart: unless-stopped
  83.     depends_on:
  84.      - paperless-mariadb
  85.       - paperless-redis
  86.       - paperless-gotenberg
  87.       - paperless-tika
  88.     ports:
  89.      - "8000:8000"
  90.     volumes:
  91.      - /mnt/user/appdata/paperless/paperless/data:/usr/src/paperless/data
  92.       - /mnt/user/appdata/paperless/paperless/media:/usr/src/paperless/media
  93.       # - /mnt/user/appdata/paperless/consume:/usr/src/paperless/consume
  94.       # - /mnt/user/appdata/paperless/export:/usr/src/paperless/export
  95.     environment:
  96.       USERMAP_UID: 99
  97.       USERMAP_GID: 100
  98.       PAPERLESS_REDIS: redis://paperless-redis:6379
  99.       PAPERLESS_DBENGINE: mariadb
  100.       PAPERLESS_DBHOST: paperless-mariadb
  101.       PAPERLESS_DBPORT: 3306
  102.       PAPERLESS_DBUSER: paperless
  103.       PAPERLESS_DBPASS: password123 # Password here
  104.       PAPERLESS_TIME_ZONE: Pacific/Auckland
  105.       PAPERLESS_OCR_LANGUAGE: eng
  106.       PAPERLESS_TIKA_ENABLED: 1
  107.       PAPERLESS_TIKA_ENDPOINT: http://paperless-tika:9998
  108.       PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://paperless-gotenberg:3000
  109.       PAPERLESS_TASK_WORKERS: 6
  110.       PAPERLESS_ENABLE_WEBSERVER: true
  111.       PAPERLESS_PRE_CONSUME_SCRIPT: ""
  112.       PAPERLESS_POST_CONSUME_SCRIPT: ""
  113.     labels:
  114.       net.unraid.docker.icon: "https://libs.websoft9.com/Websoft9/logo/product/paperlessngx-websoft9.png"
  115.       net.unraid.docker.webui: "http://[IP]:8000"
  116.     networks:
  117.      - paperless-net
  118.  
  119.  
  120.   paperless-redis:
  121.     container_name: paperless-redis
  122.     image: docker.io/library/redis:8
  123.     restart: unless-stopped
  124.     volumes:
  125.      - /mnt/user/appdata/paperless/redis:/data
  126.     cap_drop:
  127.      - ALL
  128.     security_opt:
  129.      - no-new-privileges=true
  130.     networks:
  131.      - paperless-net
  132.  
  133.  
  134.   paperless-mariadb:
  135.     container_name: paperless-mariadb
  136.     image: docker.io/library/mariadb:11
  137.     restart: unless-stopped
  138.     volumes:
  139.      - /mnt/user/appdata/paperless/mariadb:/var/lib/mysql
  140.     environment:
  141.       MARIADB_HOST: paperless
  142.       MARIADB_DATABASE: paperless
  143.       MARIADB_USER: paperless
  144.       MARIADB_PASSWORD: password123 # Password here
  145.       MARIADB_ROOT_PASSWORD: password123 # Password here
  146.     networks:
  147.      - paperless-net
  148.  
  149.  
  150.   paperless-gotenberg:
  151.     container_name: paperless-gotenberg
  152.     image: docker.io/gotenberg/gotenberg:8.20
  153.     restart: unless-stopped
  154.     command:
  155.      - "gotenberg"
  156.       - "--chromium-disable-javascript=true"
  157.       - "--chromium-allow-list=file:///tmp/.*"
  158.     cap_drop:
  159.      - ALL
  160.     security_opt:
  161.      - no-new-privileges=true
  162.     networks:
  163.      - paperless-net
  164.  
  165.  
  166.   paperless-tika:
  167.     container_name: paperless-tika
  168.     image: docker.io/apache/tika:latest
  169.     restart: unless-stopped
  170.     cap_drop:
  171.      - ALL
  172.     networks:
  173.      - paperless-net
  174.  
  175.  
  176.   paperless-ai:
  177.     container_name: paperless-ai
  178.     image: clusterzx/paperless-ai
  179.     restart: unless-stopped
  180.     environment:
  181.      - PAPERLESS_AI_PORT=3000
  182.       - RAG_SERVICE_URL=http://paperless:8000
  183.       - RAG_SERVICE_ENABLED=true
  184.     ports:
  185.      - "3000:3000"
  186.     volumes:
  187.      - /mnt/user/appdata/paperless/paperless-ai:/app/data
  188.     cap_drop:
  189.      - ALL
  190.     security_opt:
  191.      - no-new-privileges=true
  192.     labels:
  193.       net.unraid.docker.webui: "http://[IP]:3000"
  194.     networks:
  195.      - paperless-net
  196.  
  197.  
  198.   paperless-gpt:
  199.     container_name: paperless-gpt
  200.     image: icereed/paperless-gpt:latest
  201.     restart: unless-stopped
  202.     environment:
  203.       PAPERLESS_BASE_URL: "http://paperless:8000"
  204.       PAPERLESS_API_TOKEN: e3087dd8e058aebfc522fb91426d48d8b4a53a72 # API TOKEN FROM PAPERLESS-NGX GOES HERE
  205.       LLM_PROVIDER: "ollama"
  206.       LLM_MODEL: "llama3"
  207.       OLLAMA_HOST: "http://paperless-ollama:11434"
  208.       TOKEN_LIMIT: 1000
  209.       OCR_PROVIDER: "llm"
  210.       VISION_LLM_PROVIDER: "ollama"
  211.       VISION_LLM_MODEL: "minicpm-v"
  212.       OCR_PROCESS_MODE: "image"
  213.       PDF_SKIP_EXISTING_OCR: "false"
  214.       CREATE_LOCAL_HOCR: "false"
  215.       LOCAL_HOCR_PATH: "/app/hocr"
  216.       CREATE_LOCAL_PDF: "false"
  217.       LOCAL_PDF_PATH: "/app/pdf"
  218.       PDF_UPLOAD: "false"
  219.       PDF_REPLACE: "false"
  220.       PDF_COPY_METADATA: "true"
  221.       PDF_OCR_TAGGING: "true"
  222.       OCR_LIMIT_PAGES: "0"
  223.       LOG_LEVEL: "info"
  224.       MANUAL_TAG: "paperless-gpt"
  225.       AUTO_TAG: "paperless-gpt-auto"
  226.       AUTO_OCR_TAG: "paperless-gpt-ocr-auto"
  227.       PDF_OCR_COMPLETE_TAG: "paperless-gpt-ocr-complete"
  228.       AUTO_GENERATE_TAGS: "true"
  229.       AUTO_GENERATE_TITLE: "true"
  230.     volumes:
  231.      - /mnt/user/appdata/paperless/paperless-gpt/prompts:/app/prompts
  232.       - /mnt/user/appdata/paperless/paperless-gpt/hocr:/app/hocr
  233.       - /mnt/user/appdata/paperless/paperless-gpt/pdf:/app/pdf
  234.       # - ${HOME}/.config/gcloud/application_default_credentials.json:/app/credentials.json
  235.     ports:
  236.      - "8082:8080"
  237.     depends_on:
  238.      - paperless
  239.     cap_drop:
  240.      - ALL
  241.     security_opt:
  242.      - no-new-privileges=true
  243.     labels:
  244.       net.unraid.docker.webui: "http://[IP]:8082"
  245.     networks:
  246.      - paperless-net
  247.  
  248.  
  249.   paperless-ollama:
  250.     container_name: paperless-ollama
  251.     image: ollama/ollama
  252.     restart: unless-stopped
  253.     volumes:
  254.      - /mnt/user/appdata/paperless/ollama:/root/.ollama      
  255.     cap_drop:
  256.      - ALL
  257.     security_opt:
  258.      - no-new-privileges=true
  259.     networks:
  260.      - paperless-net
  261.  
  262. networks:
  263.   paperless-net:
  264.     driver: bridge
  265.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement