version: '3.8' networks: pubnet: external: false volumes: traefik_acme: traefik_logs: docs: docspell-postgres_data: docspell-solr_data: services: # The restserver and joex containers defined here are configured # using env variables. Both must connect to the same database and # solr instance. More information on configuring can be found here: # https://docspell.org/docs/configure # # Please replace the values of the following with a custom secret # string: # # - DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET # - DOCSPELL_SERVER_AUTH_SERVER__SECRET # - DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE # (use the same value at the consumedir container!) # # After creating an account, you may want to set signup mode to # "closed" or to "invite". When using invite, you must also set # DOCSPELL_SERVER_BACKEND_SIGNUP_NEW__INVITE__PASSWORD to some # secret. restserver: image: docspell/restserver:latest ports: - "7880:7880" environment: - TZ=Europe/Berlin - "DOCSPELL_SERVER_INTERNAL__URL=http://docspell-restserver:7880" - "DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET={{ vault_DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET }}" - "DOCSPELL_SERVER_AUTH_SERVER__SECRET={{ vault_DOCSPELL_SERVER_AUTH_SERVER__SECRET }}" - "DOCSPELL_SERVER_BACKEND_JDBC_PASSWORD={{ vault_DOCSPELL_SERVER_BACKEND_JDBC_PASSWORD }}" - "DOCSPELL_SERVER_BACKEND_JDBC_URL=jdbc:postgresql://db:5432/dbname" - "DOCSPELL_SERVER_BACKEND_JDBC_USER={{ vault_DOCSPELL_SERVER_BACKEND_JDBC_USER }}" - "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={{ vault_DOCSPELL_INTEGRATION_PASSWORD }}" - "DOCSPELL_SERVER_BACKEND_SIGNUP_MODE=open" - "DOCSPELL_SERVER_BACKEND_SIGNUP_NEW__INVITE__PASSWORD={{ vault_DOCSPELL_SERVER_BACKEND_INVITE_SIGNUP_PASSWORD }}" - "DOCSPELL_SERVER_BACKEND_ADDONS_ENABLED=false" depends_on: - solr - db joex: image: docspell/joex:latest ## For more memory add corresponding arguments, like below. Also see ## https://docspell.org/docs/configure/#jvm-options # command: # - -J-Xmx3G ports: - "7878:7878" environment: - TZ=Europe/Berlin - "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={{ vault_DOCSPELL_SERVER_BACKEND_JDBC_PASSWORD }}" - "DOCSPELL_JOEX_JDBC_URL=jdbc:postgresql://db:5432/dbname" - "DOCSPELL_JOEX_JDBC_USER={{ vault_DOCSPELL_SERVER_BACKEND_JDBC_USER }}" - "DOCSPELL_JOEX_ADDONS_EXECUTOR__CONFIG_RUNNER=docker,trivial" - "DOCSPELL_JOEX_CONVERT_HTML__CONVERTER=weasyprint" ports: - "7878:7878" depends_on: - solr - db ## 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 command: - dsc - "-d" - "http://docspell-restserver:7880" - "watch" - "--delete" - "-ir" - "--not-matches" - "**/.*" - "--header" - "Docspell-Integration:{{ vault_DOCSPELL_INTEGRATION_PASSWORD }}" - "/opt/docs" volumes: - "/home/josiah/apps/docspell/docs:/opt/docs" depends_on: - restserver db: image: postgres:15.2 volumes: - docspell-postgres_data:/var/lib/postgresql/data/ environment: - "POSTGRES_USER={{ vault_DOCSPELL_SERVER_BACKEND_JDBC_USER }}" - "POSTGRES_PASSWORD={{ vault_DOCSPELL_SERVER_BACKEND_JDBC_PASSWORD }}" - "POSTGRES_DB=dbname" solr: image: solr:9 volumes: - docspell-solr_data:/var/solr command: - bash - -c - 'precreate-core docspell; exec solr -f -Dsolr.modules=analysis-extras' healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8983/solr/docspell/admin/ping"] interval: 1m timeout: 10s retries: 2 start_period: 30s