version: '3.8' services: restserver: image: docspell/restserver:latest container_name: docspell-restserver restart: unless-stopped ports: - "7880:7880" environment: - TZ=Asia/Jerusalem - DOCSPELL_SERVER_INTERNAL__URL=http://docspell-restserver:7880 - DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET=admin123 - DOCSPELL_SERVER_AUTH_SERVER__SECRET= - DOCSPELL_SERVER_BACKEND_JDBC_PASSWORD=dbpass - DOCSPELL_SERVER_BACKEND_JDBC_URL=jdbc:postgresql://db:5432/dbname - DOCSPELL_SERVER_BACKEND_JDBC_USER=dbuser - DOCSPELL_SERVER_BIND_ADDRESS=0.0.0.0 - DOCSPELL_SERVER_FULL__TEXT__SEARCH_ENABLED=true - DOCSPELL_SERVER_FULL__TEXT__SEARCH_SOLR_URL=http://docspell-solr:8983/solr/docspell - DOCSPELL_SERVER_INTEGRATION__ENDPOINT_ENABLED=true - DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_ENABLED=true - DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE=integration-password123 - DOCSPELL_SERVER_BACKEND_SIGNUP_MODE=open - DOCSPELL_SERVER_BACKEND_SIGNUP_NEW__INVITE__PASSWORD= - DOCSPELL_SERVER_BACKEND_ADDONS_ENABLED=false depends_on: - solr - db networks: - network - internal labels: - "traefik.enable=true" - "traefik.docker.network=docspell_network" - "traefik.http.routers.docspell.entrypoints=websecure" - "traefik.http.services.docspell.loadbalancer.server.port=7880" - "traefik.http.routers.docspell.rule=Host(`docs.pukeko.xyz`)" - "traefik.http.routers.docspell.tls.certresolver=pukekoresolver" # - "traefik.http.routers.docspell.middlewares=authelia@docker" volumes: - ./config/docspell.conf:/opt/docspell.conf command: - /opt/docspell.conf joex: image: docspell/joex:latest container_name: docspell-joex ## For more memory add corresponding arguments, like below. Also see ## https://docspell.org/docs/configure/#jvm-options # command: # - -J-Xmx3G restart: unless-stopped environment: - TZ=Asia/Jerusalem - DOCSPELL_JOEX_APP__ID=joex1 - DOCSPELL_JOEX_PERIODIC__SCHEDULER_NAME=joex1 - DOCSPELL_JOEX_SCHEDULER_NAME=joex1 - DOCSPELL_JOEX_BASE__URL=http://docspell-joex:7878 - DOCSPELL_JOEX_BIND_ADDRESS=0.0.0.0 - DOCSPELL_JOEX_FULL__TEXT__SEARCH_ENABLED=true - DOCSPELL_JOEX_FULL__TEXT__SEARCH_SOLR_URL=http://docspell-solr:8983/solr/docspell - DOCSPELL_JOEX_JDBC_PASSWORD=dbpass - DOCSPELL_JOEX_JDBC_URL=jdbc:postgresql://db:5432/dbname - DOCSPELL_JOEX_JDBC_USER=dbuser - DOCSPELL_JOEX_ADDONS_EXECUTOR__CONFIG_RUNNER=docker,trivial - DOCSPELL_JOEX_CONVERT_HTML__CONVERTER=weasyprint ports: - "8880:7878" depends_on: - solr - db networks: - internal volumes: - ./config/docspell.conf:/opt/docspell.conf ## Uncomment when using the "docker" runner with addons # volumes: # - /var/run/docker.sock:/var/run/docker.sock # - /tmp:/tmp # The consumedir container watches a directory for files to upload # to docspell restserver. This uses the `dsc` tool. For information # on the available options, see `dsc --help`. # https://github.com/docspell/dsc # # The value after `Docspell-Integration` must match the secret # specified at the restserver via # DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE. # # The --not-matches "**/.*" option is to exclude hidden files. consumedir: image: docspell/dsc:latest container_name: docspell-consumedir command: - dsc - "-d" - "http://docspell-restserver:7880" - "watch" - "--delete" - "-ir" - "--not-matches" - "**/.*" - "--header" - "Docspell-Integration:integration-password123" - "/opt/docs" restart: unless-stopped volumes: - ./docs:/opt/docs depends_on: - restserver db: image: postgres:15.2 container_name: postgres_db restart: unless-stopped volumes: - ./docspell-postgres_data:/var/lib/postgresql/data/ environment: - POSTGRES_USER=dbuser - POSTGRES_PASSWORD=dbpass - POSTGRES_DB=dbname networks: - internal solr: image: solr:9 container_name: docspell-solr restart: unless-stopped volumes: - ./docspell-solr_data:/var/solr command: - solr-precreate - docspell healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8983/solr/docspell/admin/ping"] interval: 1m timeout: 10s retries: 2 start_period: 30s networks: - internal networks: network: driver: bridge internal: driver: bridge