services:
  broker:
    container_name: paperless-broker
    image: docker.io/library/redis:8
    restart: unless-stopped
    volumes:
      - redisdata:/data
    environment:
      - PUID=3000
      - PGID=3000
  db:
    container_name: paperless-db
    image: docker.io/library/postgres:17
    restart: unless-stopped
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=paperless
      - POSTGRES_USER=paperless
      - POSTGRES_PASSWORD=paperless
      - PUID=3000
      - PGID=3000
  webserver:
    container_name: paperless-webserver
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - "8010:8000"
    volumes:
      - data:/usr/src/paperless/data
      - paperless_media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - paperless_consume:/usr/src/paperless/consume
    environment:
      - PAPERLESS_REDIS=redis://broker:6379
      - PAPERLESS_DBHOST=db
      - PUID=3000
      - PGID=3000
    env_file:
      - stack.env
volumes:
  data:
  paperless_media:
   external: true
  paperless_consume:
   external: true
  pgdata:
  redisdata: