diff --git a/Paperless-stack/docker-compose.yml b/Paperless-stack/docker-compose.yml new file mode 100644 index 0000000..c8327fa --- /dev/null +++ b/Paperless-stack/docker-compose.yml @@ -0,0 +1,137 @@ +services: + # paperless-ngx main service + paperless: + image: ghcr.io/paperless-ngx/paperless-ngx:latest + container_name: paperless-ngx + restart: unless-stopped + env_file: + - ./paperless/.env + depends_on: + - postgres + - redis + - gotenberg + - tika + ports: + - "8000:8000" + 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 + + # postgres database for paperless-ngx + postgres: + image: postgres:18 + restart: unless-stopped + container_name: postgres + env_file: + - ./postgres/.env + volumes: + - ./postgres/data:/var/lib/postgresql + + # redis database for paperless-ngx + redis: + image: docker.io/library/redis:8 + container_name: redis + restart: unless-stopped + env_file: + - ./redis/.env + volumes: + - ./redis/data:/data + + # gotenberg service that paperless uses for document conversion + gotenberg: + image: docker.io/gotenberg/gotenberg:8.25 + container_name: gotenberg + env_file: + - ./gotenberg/.env + restart: unless-stopped + command: + - "gotenberg" + - "--chromium-disable-javascript=true" + - "--chromium-allow-list=file:///tmp/.*" + + # tika service that paperless uses for document text extraction + tika: + image: docker.io/apache/tika:latest + container_name: tika + restart: unless-stopped + env_file: ./tika/.env + + + # open-webui service for LLM interaction + open-webui: + image: ghcr.io/open-webui/open-webui:latest + container_name: open-webui + restart: unless-stopped + env_file: + - ./open-webui/.env + depends_on: + - ollama + ports: + - "3001:8080" + volumes: + - ./open-webui/data:/app/backend/data + + # ollama service for local LLMs + ollama: + image: ollama/ollama:latest + container_name: ollama + env_file: + - ./ollama/.env + volumes: + - ./ollama/data/:/root/.ollama + - ./ollama/models:/ollama-models + restart: unless-stopped + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] + + # paperless-ai service + paperless-ai: + image: clusterzx/paperless-ai:latest + container_name: paperless-ai + restart: unless-stopped + depends_on: + - ollama + - paperless + ports: + - "3000:3000" + env_file: + - ./paperless-ai/.env + volumes: + - ./paperless-ai/data:/app/data + + + # paperless-gpt service + paperless-gpt: + image: icereed/paperless-gpt:latest + container_name: paperless-gpt + restart: unless-stopped + depends_on: + - ollama + - paperless + ports: + - "3002:8080" + env_file: + - ./paperless-gpt/.env + volumes: + - ./paperless-gpt/prompts:/app/prompts # Mount the prompts directory + + + # optional but helpful log viewer + dozzle: + image: amir20/dozzle:latest + restart: unless-stopped + container_name: dozzle + env_file: + - ./dozzle/.env + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./dozzle/data:/data + ports: + - "8080:8080" \ No newline at end of file