Unable to "get image" docker

Ubuntu Support Template

Ubuntu Version:
Example: 24.04.3

Desktop Environment (if applicable):
Example: na

Problem Description:
Trying to install paperless-ngx following these instructions: https://github.com/paperless-ngx/paperless-ngx but am getting this error message: unable to get image 'docker.io/apache/tika:latest': Error response from daemon: client version 1.43 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version

What I’ve Tried:
Updated OS to latest LTS version. Did an apt update-no more updates available.

docker version output:
`Client: Docker Engine - Community
Version: 29.1.3
API version: 1.52
Go version: go1.25.5
Git commit: f52814d
Built: Fri Dec 12 14:49:37 2025
OS/Arch: linux/amd64
Context: default

Server: Docker Engine - Community
Engine:
Version: 29.1.3
API version: 1.52 (minimum version 1.44)
Go version: go1.25.5
Git commit: fbf3ed2
Built: Fri Dec 12 14:49:37 2025
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v2.2.1
GitCommit: dea7da592f5d1d2b7755e3a161be07f43fad8f75
runc:
Version: 1.3.4
GitCommit: v1.3.4-0-gd6d73eb8
docker-init:
Version: 0.19.0
GitCommit: de40ad0`

Your Docker engine is fine and fully up to date.

The error is almost certainly caused by using docker-compose v1, which relies on an old Docker API (1.43).

Please check:

docker-compose version

If installed, remove it:

sudo apt remove docker-compose

Then use Docker Compose v2 (built into Docker):

docker compose up -d

Note the space instead of the dash. This should resolve the issue.

docker compose is already installed. docker-compose is not installed.

Thanks for confirming.

Since Docker Compose v2 is installed and docker-compose (v1) is not present, this error usually means that another tool or wrapper is using an old Docker API, not the Docker CLI you checked.

A few things to verify next:

  1. Check which Docker binary is actually being used
which docker
docker info

Make sure there is only one Docker installation and that it matches the version you posted.

  1. Confirm how Paperless is being started
    If you are using a script or Makefile, please share the exact command you run.
    Some setup scripts internally call an old Docker client or set a fixed API version.

  2. Check for a forced Docker API version
    Please run:

echo $DOCKER_API_VERSION

If this returns 1.43, unset it:

unset DOCKER_API_VERSION
  1. Try pulling the image manually
docker pull docker.io/apache/tika:latest

If this fails with the same error, it confirms an environment-level API mismatch.

  1. Verify no legacy Docker packages are present
dpkg -l | grep docker

At this point, your Docker versions look correct, so the most likely causes are:

  • A leftover environment variable forcing an old API version
  • A helper script using a legacy Docker client
  • Multiple Docker installations on the system

If you can paste the exact command you’re using to start Paperless (and whether it’s a script or manual docker compose), it should be possible to pinpoint the cause quickly.

Here is where the script is pulled from: https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh

echo $DOCKER_API_VERSION

This doesn’t return anything for me.

docker pull docker.io/apache/tika:latest

I was able to run this successfully.

dpkg -l | grep docker
ii  docker-buildx-plugin                   0.30.1-1~ubuntu.22.04~jammy       amd64        Docker Buildx plugin extends build capabilities with BuildKit.
ii  docker-ce                              5:29.1.3-1~ubuntu.22.04~jammy     amd64        Docker: the open-source application container engine
ii  docker-ce-cli                          5:29.1.3-1~ubuntu.22.04~jammy     amd64        Docker CLI: the open-source application container engine
ii  docker-ce-rootless-extras              5:29.1.3-1~ubuntu.22.04~jammy     amd64        Rootless support for Docker.
ii  docker-compose-plugin                  5.0.0-1~ubuntu.22.04~jammy        amd64        Docker Compose (V2) plugin for the Docker CLI.
  • docker pull docker.io/apache/tika:latest works
  • Docker Engine and Compose v2 are up to date
  • No legacy Docker packages are installed

The issue is very likely how the install script runs Docker, not Docker itself.

The script uses sudo, and in that context an old Docker API is often picked up.

Please try the following:

  1. Run the script without sudo (recommended):
groups

If docker is not listed:

sudo usermod -aG docker $USER
newgrp docker

Then run:

bash install-paperless-ngx.sh
  1. If you must use sudo, try:
sudo -E bash install-paperless-ngx.sh
  1. Quick check:
sudo docker version

and compare it with:

docker version

If these differ, that explains the API mismatch.

This looks like an installer/sudo environment issue and would be worth reporting upstream if confirmed.

When I run as sudo, I get this error:
Do not run this script as root.
The user I’m running as is already part of the docker group.
The versions match up.

Can you just run the script and show us the whole output please?

I just grabbed the script and ran it on my laptop, and it’s fine. But I’m keen to see how you’re running it and what errors occur. Note that I replied “no” to requiring apache tika.

It works:

docker ps
CONTAINER ID  IMAGE                                       COMMAND       CREATED             STATUS             PORTS                   NAMES
de4ddc1320b0  docker.io/library/postgres:18               postgres      3 minutes ago       Up 2 minutes                               paperless-ngx_db_1
cb8700018cd2  docker.io/library/redis:8                   redis-server  2 minutes ago       Up 2 minutes                               paperless-ngx_broker_1
1b5791455ffe  ghcr.io/paperless-ngx/paperless-ngx:latest                About a minute ago  Up About a minute  0.0.0.0:8000->8000/tcp  paperless-ngx_webserver_1

Here’s what it looks like during the install:

This is long
$ wget https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh
--2025-12-23 19:21:18--  https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.111.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12089 (12K) [text/plain]
Saving to: ‘install-paperless-ngx.sh’

install-paperless-ngx.sh                        100%[=============================================>]  11.81K  --.-KB/s    in 0.002s

2025-12-23 19:21:18 (7.11 MB/s) - ‘install-paperless-ngx.sh’ saved [12089/12089]

$ chmod +x install-paperless-ngx.sh
$ ./install-paperless-ngx.sh

#############################################
###   paperless-ngx docker installation   ###
#############################################

This script will download, configure and start paperless-ngx.

1. Application configuration
============================

The URL paperless will be available at. This is required if the
installation will be accessible via the web, otherwise can be left blank.
Example: https://paperless.example.com

URL []:

The port on which the paperless webserver will listen for incoming
connections.

Port [8000]:

Paperless requires you to configure the current time zone correctly.
Otherwise, the dates of your documents may appear off by one day,
depending on where you are on earth.
Example: Europe/Berlin
See here for a list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Current time zone [Europe/London]:

Database backend: PostgreSQL, MariaDB, and SQLite are available. Use PostgreSQL
if unsure. If you're running on a low-power device such as Raspberry
Pi, use SQLite to save resources.

Database backend (postgres sqlite mariadb) [postgres]:

Paperless is able to use Apache Tika to support Office documents such as
Word, Excel, PowerPoint, and LibreOffice equivalents. This feature
requires more resources due to the required services.

Enable Apache Tika? (yes no) [no]:

Specify the default language that most of your documents are written in.
Use ISO 639-2, (T) variant language codes:
https://www.loc.gov/standards/iso639-2/php/code_list.php
Common values: eng (English) deu (German) nld (Dutch) fra (French)
This can be a combination of multiple languages such as deu+eng

OCR language [eng]:

Specify the user id and group id you wish to run paperless as.
Paperless will also change ownership on the data, media and consume
folder to the specified values, so it's a good idea to supply the user id
and group id of your Unix user account.
If unsure, leave default.

User ID [1000]:
Group ID [1000]:

2. Folder configuration
=======================

The target folder is used to store the configuration files of
paperless. You can move this folder around after installing paperless.
You will need this folder whenever you want to start, stop, update or
maintain your paperless instance.

Target folder [/home/alan/Temp/paperless-ngx]:

The consume folder is where paperless will search for new documents.
Point this to a folder where your scanner is able to put your scanned
documents.

CAUTION: You must specify an absolute path starting with / or a relative
path starting with ./ here. Examples:
  /mnt/consume
  ./consume

Consume folder [/home/alan/Temp/paperless-ngx/consume]:

The media folder is where paperless stores your documents.
Leave empty and docker will manage this folder for you.
Docker usually stores managed folders in /var/lib/docker/volumes.

CAUTION: If specified, you must specify an absolute path starting with /
or a relative path starting with ./ here.

Media folder []:

The data folder is where paperless stores other data, such as your
search index and other data.
As with the media folder, leave empty to have this managed by Docker.

CAUTION: If specified, you must specify an absolute path starting with /
or a relative path starting with ./ here.

Data folder []:

The database folder, where your database stores its data.
Leave empty to have this managed by Docker.

CAUTION: If specified, you must specify an absolute path starting with /
or a relative path starting with ./ here.

Database folder []:

3. Login credentials
====================

Specify initial login credentials. You can change these later.
A mail address is required, however it is not used in paperless. You don't
need to provide an actual mail address.

Paperless username [alan]:
Paperless password:
Paperless password (again):
Email [alan@localhost]:

Summary
=======

Target folder: /home/alan/Temp/paperless-ngx
Consume folder: /home/alan/Temp/paperless-ngx/consume
Media folder: Managed by Docker
Data folder: Managed by Docker
Database folder: Managed by Docker

URL:
Port: 8000
Database: postgres
Tika enabled: no
OCR language: eng
User id: 1000
Group id: 1000

Paperless username: alan
Paperless email: alan@localhost

Press any key to install.

Installing paperless...

--2025-12-23 19:22:16--  https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/docker-compose.postgres.yml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.111.133, 185.199.110.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1960 (1.9K) [text/plain]
Saving to: ‘docker-compose.yml’

docker-compose.yml                              100%[======================================================================================================>]   1.91K  --.-KB/s    in 0.002s

2025-12-23 19:22:16 (1.11 MB/s) - ‘docker-compose.yml’ saved [1960/1960]

--2025-12-23 19:22:16--  https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/.env
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.108.133, 185.199.110.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31 [text/plain]
Saving to: ‘.env’

.env                                            100%[======================================================================================================>]      31  --.-KB/s    in 0s

2025-12-23 19:22:16 (902 KB/s) - ‘.env’ saved [31/31]

>>>> Executing external compose provider "/usr/bin/podman-compose". Please refer to the documentation for details. <<<<

podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.9.3
podman pull docker.io/library/postgres:18
Trying to pull docker.io/library/postgres:18...
Getting image source signatures
Copying blob c3ff19dd627c done   |
Copying blob 6dd6fcdc9495 done   |
Copying blob 1733a4cd5954 done   |
Copying blob b004922a6f45 done   |
Copying blob 72fdf866b594 done   |
Copying blob bab3dfaacd57 done   |
Copying blob 854c622dacff done   |
Copying blob f106a4619ad3 done   |
Copying blob c063aa26ba0a done   |
Copying blob 1a285618a7ed done   |
Copying blob 807997f7ba63 done   |
Copying blob db5e628b821e done   |
Copying blob 1dc30afa2762 done   |
Copying config b5caf683a8 done   |
Writing manifest to image destination
b5caf683a8bb369ea3f8aee80ff184d4da0b975f403bfca4f0cb72957bdf35d6
exit code: 0
podman pull ghcr.io/paperless-ngx/paperless-ngx:latest
Trying to pull ghcr.io/paperless-ngx/paperless-ngx:latest...
Getting image source signatures
Copying blob ba354316e3b9 done   |
Copying blob 0e4bc2bd6656 done   |
Copying blob 0674d14a155c done   |
Copying blob 490b9a1c25e4 done   |
Copying blob 63dbeabf88c4 done   |
Copying blob b7ba6d2a1fc7 done   |
Copying blob 866b9758a946 done   |
Copying blob 700240a4a7f8 done   |
Copying blob fcf96b1d9757 done   |
Copying blob 59d35266b729 done   |
Copying blob 683c7415c6a0 done   |
Copying blob 0997fe2ebfdb done   |
Copying blob 0138eb94db84 done   |
Copying blob b7fd8f6927c1 done   |
Copying blob 878e6810aed1 done   |
Copying config 8516d4f730 done   |
Writing manifest to image destination
8516d4f730dd90943d63768ff8e2e5cc44f21abedd222cda9c8234bfabcca4a7
exit code: 0
podman pull docker.io/library/redis:8
Trying to pull docker.io/library/redis:8...
Getting image source signatures
Copying blob 2cedcff21aff done   |
Copying blob 4f4fb700ef54 skipped: already exists
Copying blob ae4ce04d0e1c done   |
Copying blob 30e994012175 done   |
Copying blob 60f52e32d520 done   |
Copying blob 1d9a95b931a8 done   |
Copying blob 0c16123e68fb done   |
Copying config 77e6be7eb2 done   |
Writing manifest to image destination
77e6be7eb290d24ebae56dd97ef9c769d9eb83114db2913dea86335549925751
exit code: 0
Starting DB first for initialization
>>>> Executing external compose provider "/usr/bin/podman-compose". Please refer to the documentation for details. <<<<

podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.9.3
** excluding:  {'webserver', 'broker'}
['podman', 'ps', '--filter', 'label=io.podman.compose.project=paperless-ngx', '-a', '--format', '{{ index .Labels "io.podman.compose.config-hash"}}']
** skipping:  paperless-ngx_broker_1
podman volume inspect paperless-ngx_pgdata || podman volume create paperless-ngx_pgdata
['podman', 'volume', 'inspect', 'paperless-ngx_pgdata']
Error: no such volume paperless-ngx_pgdata
['podman', 'volume', 'create', '--label', 'io.podman.compose.project=paperless-ngx', '--label', 'com.docker.compose.project=paperless-ngx', 'paperless-ngx_pgdata']
['podman', 'volume', 'inspect', 'paperless-ngx_pgdata']
['podman', 'network', 'exists', 'paperless-ngx_default']
['podman', 'network', 'create', '--label', 'io.podman.compose.project=paperless-ngx', '--label', 'com.docker.compose.project=paperless-ngx', 'paperless-ngx_default']
['podman', 'network', 'exists', 'paperless-ngx_default']
podman run --name=paperless-ngx_db_1 -d --label io.podman.compose.config-hash=bc6d006169736d5858e8a309ed2ce64408098a504810596bf2104a569bd5f465 --label io.podman.compose.project=paperless-ngx --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@paperless-ngx.service --label com.docker.compose.project=paperless-ngx --label com.docker.compose.project.working_dir=/home/alan/Temp/paperless-ngx --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=db -e POSTGRES_DB=paperless -e POSTGRES_USER=paperless -e POSTGRES_PASSWORD=paperless -v paperless-ngx_pgdata:/var/lib/postgresql --net paperless-ngx_default --network-alias db --restart unless-stopped docker.io/library/postgres:18
de4ddc1320b08a7caa39391bff5a3a4834df6062abbe6b625d0d28f1e2fe1c25
exit code: 0
** skipping:  paperless-ngx_webserver_1
>>>> Executing external compose provider "/usr/bin/podman-compose". Please refer to the documentation for details. <<<<

podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.9.3
podman stop -t 10 paperless-ngx_webserver_1
Error: no container with name or ID "paperless-ngx_webserver_1" found: no such container
exit code: 125
podman stop -t 10 -t 10 paperless-ngx_db_1
paperless-ngx_db_1
exit code: 0
podman stop -t 10 -t 10 -t 10 paperless-ngx_broker_1
Error: no container with name or ID "paperless-ngx_broker_1" found: no such container
exit code: 125
>>>> Executing external compose provider "/usr/bin/podman-compose". Please refer to the documentation for details. <<<<

podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.9.3
** excluding:  {'webserver'}
['podman', 'ps', '--filter', 'label=io.podman.compose.project=paperless-ngx', '-a', '--format', '{{ index .Labels "io.podman.compose.config-hash"}}']
podman volume inspect paperless-ngx_redisdata || podman volume create paperless-ngx_redisdata
['podman', 'volume', 'inspect', 'paperless-ngx_redisdata']
Error: no such volume paperless-ngx_redisdata
['podman', 'volume', 'create', '--label', 'io.podman.compose.project=paperless-ngx', '--label', 'com.docker.compose.project=paperless-ngx', 'paperless-ngx_redisdata']
['podman', 'volume', 'inspect', 'paperless-ngx_redisdata']
['podman', 'network', 'exists', 'paperless-ngx_default']
podman run --name=paperless-ngx_broker_1 -d --label io.podman.compose.config-hash=bc6d006169736d5858e8a309ed2ce64408098a504810596bf2104a569bd5f465 --label io.podman.compose.project=paperless-ngx --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@paperless-ngx.service --label com.docker.compose.project=paperless-ngx --label com.docker.compose.project.working_dir=/home/alan/Temp/paperless-ngx --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=broker -v paperless-ngx_redisdata:/data --net paperless-ngx_default --network-alias broker --restart unless-stopped docker.io/library/redis:8
cb8700018cd2a350d79d7746cecf21ebf01a78b795aab18447a4167a72b656a4
exit code: 0
podman volume inspect paperless-ngx_pgdata || podman volume create paperless-ngx_pgdata
['podman', 'volume', 'inspect', 'paperless-ngx_pgdata']
['podman', 'network', 'exists', 'paperless-ngx_default']
podman run --name=paperless-ngx_db_1 -d --label io.podman.compose.config-hash=bc6d006169736d5858e8a309ed2ce64408098a504810596bf2104a569bd5f465 --label io.podman.compose.project=paperless-ngx --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@paperless-ngx.service --label com.docker.compose.project=paperless-ngx --label com.docker.compose.project.working_dir=/home/alan/Temp/paperless-ngx --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=db -e POSTGRES_DB=paperless -e POSTGRES_USER=paperless -e POSTGRES_PASSWORD=paperless -v paperless-ngx_pgdata:/var/lib/postgresql --net paperless-ngx_default --network-alias db --restart unless-stopped docker.io/library/postgres:18
Error: creating container storage: the container name "paperless-ngx_db_1" is already in use by de4ddc1320b08a7caa39391bff5a3a4834df6062abbe6b625d0d28f1e2fe1c25. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.
exit code: 125
podman start paperless-ngx_db_1
paperless-ngx_db_1
exit code: 0
** skipping:  paperless-ngx_webserver_1
podman volume inspect paperless-ngx_data || podman volume create paperless-ngx_data
['podman', 'volume', 'inspect', 'paperless-ngx_data']
Error: no such volume paperless-ngx_data
['podman', 'volume', 'create', '--label', 'io.podman.compose.project=paperless-ngx', '--label', 'com.docker.compose.project=paperless-ngx', 'paperless-ngx_data']
['podman', 'volume', 'inspect', 'paperless-ngx_data']
podman volume inspect paperless-ngx_media || podman volume create paperless-ngx_media
['podman', 'volume', 'inspect', 'paperless-ngx_media']
Error: no such volume paperless-ngx_media
['podman', 'volume', 'create', '--label', 'io.podman.compose.project=paperless-ngx', '--label', 'com.docker.compose.project=paperless-ngx', 'paperless-ngx_media']
['podman', 'volume', 'inspect', 'paperless-ngx_media']
['podman', 'network', 'exists', 'paperless-ngx_default']
podman run --name=paperless-ngx_webserver_tmp34715 --rm -i --requires=paperless-ngx_db_1,paperless-ngx_broker_1 --label io.podman.compose.config-hash=bc6d006169736d5858e8a309ed2ce64408098a504810596bf2104a569bd5f465 --label io.podman.compose.project=paperless-ngx --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@paperless-ngx.service --label com.docker.compose.project=paperless-ngx --label com.docker.compose.project.working_dir=/home/alan/Temp/paperless-ngx --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=webserver --env-file /home/alan/Temp/paperless-ngx/docker-compose.env -e PAPERLESS_REDIS=redis://broker:6379 -e PAPERLESS_DBHOST=db -e DJANGO_SUPERUSER_PASSWORD=G1jihiqu11. -v paperless-ngx_data:/usr/src/paperless/data -v paperless-ngx_media:/usr/src/paperless/media -v /home/alan/Temp/paperless-ngx/export:/usr/src/paperless/export -v /home/alan/Temp/paperless-ngx/consume:/usr/src/paperless/consume --net paperless-ngx_default --network-alias webserver --tty ghcr.io/paperless-ngx/paperless-ngx:latest createsuperuser --noinput --username alan --email alan@localhost
[init-start] paperless-ngx docker container starting...
[init-start] paperless-ngx docker container starting init as root
[env-init] Checking for environment from files
[env-init] No *_FILE environment found
[init-redis-wait] Waiting for Redis to report ready
[init-tesseract-langs] Checking if additional teseract languages needed
[init-tesseract-langs] No additional installs requested
[init-db-wait] Waiting for PostgreSQL to start...
[init-user] No UID changes for paperless
[init-user] No GID changes for paperless
[init-folders] Running with root privileges, adjusting directories and permissions
mkdir: created directory '/tmp/paperless'
mkdir: created directory '/usr/src/paperless/data/index'
mkdir: created directory '/usr/src/paperless/media/documents'
mkdir: created directory '/usr/src/paperless/media/documents/originals'
mkdir: created directory '/usr/src/paperless/media/documents/thumbnails'
changed ownership of '/usr/src/paperless/export' from root:root to paperless:paperless
changed ownership of '/usr/src/paperless/data/index' from root:root to paperless:paperless
changed ownership of '/usr/src/paperless/media/documents' from root:root to paperless:paperless
changed ownership of '/usr/src/paperless/media/documents/thumbnails' from root:root to paperless:paperless
changed ownership of '/usr/src/paperless/media/documents/originals' from root:root to paperless:paperless
db:5432 - accepting connections
[init-db-wait] Connected to PostgreSQL
[init-db-wait] Database is ready
changed ownership of '/usr/src/paperless/consume' from root:root to paperless:paperless
changed ownership of '/tmp/paperless' from root:root to paperless:paperless
[init-migrations] Apply database migrations...
Waiting for Redis...
Connected to Redis broker.
[init-redis-wait] Redis ready
Operations to perform:
  Apply all migrations: account, admin, auditlog, auth, authtoken, contenttypes, django_celery_results, documents, guardian, mfa, paperless, paperless_mail, sessions, socialaccount
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying account.0001_initial... OK
  Applying account.0002_email_max_length... OK
  Applying account.0003_alter_emailaddress_create_unique_verified_email... OK
  Applying account.0004_alter_emailaddress_drop_unique_email... OK
  Applying account.0005_emailaddress_idx_upper_email... OK
  Applying account.0006_emailaddress_lower... OK
  Applying account.0007_emailaddress_idx_email... OK
  Applying account.0008_emailaddress_unique_primary_email_fixup... OK
  Applying account.0009_emailaddress_unique_primary_email... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying auditlog.0001_initial... OK
  Applying auditlog.0002_auto_support_long_primary_keys... OK
  Applying auditlog.0003_logentry_remote_addr... OK
  Applying auditlog.0004_logentry_detailed_object_repr... OK
  Applying auditlog.0005_logentry_additional_data_verbose_name... OK
  Applying auditlog.0006_object_pk_index... OK
  Applying auditlog.0007_object_pk_type... OK
  Applying auditlog.0008_action_index... OK
  Applying auditlog.0009_alter_logentry_additional_data... OK
  Applying auditlog.0010_alter_logentry_timestamp... OK
  Applying auditlog.0011_logentry_serialized_data... OK
  Applying auditlog.0012_add_logentry_action_access... OK
  Applying auditlog.0013_alter_logentry_timestamp... OK
  Applying auditlog.0014_logentry_cid... OK
  Applying auditlog.0015_alter_logentry_changes... OK
  Applying auditlog.0016_logentry_remote_port... OK
  Applying auditlog.0017_add_actor_email... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying authtoken.0001_initial... OK
  Applying authtoken.0002_auto_20160226_1747... OK
  Applying authtoken.0003_tokenproxy... OK
  Applying authtoken.0004_alter_tokenproxy_options... OK
  Applying django_celery_results.0001_initial... OK
  Applying django_celery_results.0002_add_task_name_args_kwargs... OK
  Applying django_celery_results.0003_auto_20181106_1101... OK
  Applying django_celery_results.0004_auto_20190516_0412... OK
  Applying django_celery_results.0005_taskresult_worker... OK
  Applying django_celery_results.0006_taskresult_date_created... OK
  Applying django_celery_results.0007_remove_taskresult_hidden... OK
  Applying django_celery_results.0008_chordcounter... OK
  Applying django_celery_results.0009_groupresult... OK
  Applying django_celery_results.0010_remove_duplicate_indices... OK
  Applying django_celery_results.0011_taskresult_periodic_task_name... OK
  Applying django_celery_results.0012_taskresult_date_started... OK
  Applying django_celery_results.0013_taskresult_django_cele_periodi_1993cf_idx... OK
  Applying django_celery_results.0014_alter_taskresult_status... OK
  Applying documents.0001_initial... OK
  Applying documents.0002_auto_20151226_1316... OK
  Applying documents.0003_sender... OK
  Applying documents.0004_auto_20160114_1844_squashed_0011_auto_20160303_1929... OK
  Applying documents.0012_auto_20160305_0040... OK
  Applying documents.0013_auto_20160325_2111... OK
  Applying documents.0014_document_checksum... OK
  Applying documents.0015_add_insensitive_to_match_squashed_0018_auto_20170715_1712... OK
  Applying documents.0019_add_consumer_user... OK
  Applying documents.0020_document_added... OK
  Applying documents.0021_document_storage_type... OK
  Applying documents.0022_auto_20181007_1420... OK
  Applying documents.0023_document_current_filename... OK
  Applying documents.1000_update_paperless_all... OK
  Applying documents.1001_auto_20201109_1636... OK
  Applying documents.1002_auto_20201111_1105... OK
  Applying documents.1003_mime_types... OK
  Applying documents.1004_sanity_check_schedule... OK
  Applying documents.1005_checksums... OK
  Applying documents.1006_auto_20201208_2209_squashed_1011_auto_20210101_2340... OK
  Applying paperless_mail.0001_initial_squashed_0009_mailrule_assign_tags... OK
  Applying paperless_mail.0010_auto_20220311_1602... OK
  Applying paperless_mail.0011_remove_mailrule_assign_tag_squashed_0024_alter_mailrule_name_and_more... OK
  Applying documents.1012_fix_archive_files... OK
  Applying documents.1013_migrate_tag_colour... OK
  Applying documents.1014_auto_20210228_1614... OK
  Applying documents.1015_remove_null_characters... OK
  Applying documents.1016_auto_20210317_1351_squashed_1020_merge_20220518_1839... OK
  Applying documents.1021_webp_thumbnail_conversion... OK
  Applying documents.1022_paperlesstask_squashed_1036_alter_savedviewfilterrule_rule_type... OK
  Applying documents.1037_webp_encrypted_thumbnail_conversion... OK
  Applying documents.1038_sharelink... OK
  Applying documents.1039_consumptiontemplate... OK
  Applying documents.1040_customfield_customfieldinstance_and_more... OK
  Applying documents.1041_alter_consumptiontemplate_sources... OK
  Applying documents.1042_consumptiontemplate_assign_custom_fields_and_more... OK
  Applying documents.1043_alter_savedviewfilterrule_rule_type... OK
  Applying documents.1044_workflow_workflowaction_workflowtrigger_and_more... OK
  Applying documents.1045_alter_customfieldinstance_value_monetary_squashed_1049_document_deleted_at_document_restored_at... OK
  Applying documents.1050_customfield_extra_data_and_more... OK
  Applying documents.1051_alter_correspondent_owner_alter_document_owner_and_more... OK
  Applying documents.1052_document_transaction_id... OK
  Applying documents.1053_document_page_count... OK
  Applying documents.1054_customfieldinstance_value_monetary_amount_and_more... OK
  Applying documents.1055_alter_storagepath_path... OK
  Applying documents.1056_customfieldinstance_deleted_at_and_more... OK
  Applying documents.1057_paperlesstask_owner... OK
  Applying documents.1058_workflowtrigger_schedule_date_custom_field_and_more... OK
  Applying documents.1059_workflowactionemail_workflowactionwebhook_and_more... OK
  Applying documents.1060_alter_customfieldinstance_value_select... OK
  Applying documents.1061_workflowactionwebhook_as_json... OK
  Applying documents.1062_alter_savedviewfilterrule_rule_type... OK
  Applying documents.1063_paperlesstask_type_alter_paperlesstask_task_name_and_more... OK
  Applying documents.1064_delete_log... OK
  Applying documents.1065_workflowaction_assign_custom_fields_values... OK
  Applying documents.1066_alter_workflowtrigger_schedule_offset_days... OK
  Applying documents.1067_alter_document_created... OK
  Applying documents.1068_alter_document_created... OK
  Applying documents.1069_workflowtrigger_filter_has_storage_path_and_more... OK
  Applying documents.1070_customfieldinstance_value_long_text_and_more... OK
  Applying documents.1071_tag_tn_ancestors_count_tag_tn_ancestors_pks_and_more... OK
  Applying documents.1072_workflowtrigger_filter_custom_field_query_and_more... OK
  Applying documents.1073_migrate_workflow_title_jinja... OK
  Applying documents.1074_workflowrun_deleted_at_workflowrun_restored_at_and_more... OK
  Applying guardian.0001_initial... OK
  Applying guardian.0002_generic_permissions_index... OK
  Applying guardian.0003_remove_groupobjectpermission_guardian_gr_content_ae6aec_idx_and_more... OK
  Applying mfa.0001_initial... OK
  Applying mfa.0002_authenticator_timestamps... OK
  Applying mfa.0003_authenticator_type_uniq... OK
  Applying paperless.0001_initial... OK
  Applying paperless.0002_applicationconfiguration_app_logo_and_more... OK
  Applying paperless.0003_alter_applicationconfiguration_max_image_pixels... OK
  Applying paperless.0004_applicationconfiguration_barcode_asn_prefix_and_more... OK
  Applying paperless_mail.0025_alter_mailaccount_owner_alter_mailrule_owner_and_more... OK
  Applying paperless_mail.0026_mailrule_enabled... OK
  Applying paperless_mail.0027_mailaccount_expiration_mailaccount_account_type_and_more... OK
  Applying paperless_mail.0028_alter_mailaccount_password_and_more... OK
  Applying paperless_mail.0029_mailrule_pdf_layout... OK
  Applying sessions.0001_initial... OK
  Applying socialaccount.0001_initial... OK
  Applying socialaccount.0002_token_max_lengths... OK
  Applying socialaccount.0003_extra_data_default_dict... OK
  Applying socialaccount.0004_app_provider_id_settings... OK
  Applying socialaccount.0005_socialtoken_nullable_app... OK
  Applying socialaccount.0006_alter_socialaccount_extra_data... OK
[init-index] No index version file found
[init-superuser] Not creating superuser
[init-index] Search index out of date. Updating...
[init-checks] Running Django checks
System check identified no issues (0 silenced).
[custom-init] /custom-cont-init.d doesn't exist, nothing to do
[init-complete] paperless-ngx docker container init completed in 24 seconds
[init-complete] Starting services
[svc-flower] Checking if we should start flower...
[svc-flower] Not starting flower
[INFO] Starting granian (main PID: 185)
[INFO] Listening at: http://:::8000
[INFO] Spawning worker-1 with PID: 213
celery beat v5.5.3 (immunity) is starting.
[2025-12-23 19:24:13,959] [INFO] [paperless.management.consumer] Using inotify to watch directory for changes: /usr/src/paperless/consume
[2025-12-23 19:24:14,798] [INFO] [paperless.asgi] [init] Paperless-ngx version: v2.20.3
Superuser created successfully.

 -------------- celery@9b72d2a26bd2 v5.5.3 (immunity)
--- ***** -----
-- ******* ---- Linux-6.8.0-87-generic-x86_64-with-glibc2.41 2025-12-23 19:24:15
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app:         paperless:0x75c204dad7f0
- ** ---------- .> transport:   redis://broker:6379//
- ** ---------- .> results:
- *** --- * --- .> concurrency: 1 (prefork)
-- ******* ---- .> task events: ON
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[tasks]
  . documents.bulk_edit.delete
  . documents.signals.handlers.process_cf_select_update
  . documents.tasks.bulk_update_documents
  . documents.tasks.check_scheduled_workflows
  . documents.tasks.consume_file
  . documents.tasks.empty_trash
  . documents.tasks.index_optimize
  . documents.tasks.sanity_check
  . documents.tasks.train_classifier
  . documents.tasks.update_document_content_maybe_archive_file
  . documents.workflows.webhooks.send_webhook
  . paperless_mail.mail.apply_mail_action
  . paperless_mail.mail.error_callback
  . paperless_mail.tasks.process_mail_accounts

__    -    ... __   -        _
LocalTime -> 2025-12-23 19:24:15
Configuration ->
    . broker -> redis://broker:6379//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> celery.beat.PersistentScheduler
    . db -> /usr/src/paperless/data/celerybeat-schedule.db
    . logfile -> [stderr]@%INFO
    . maxinterval -> 5.00 minutes (300s)
[2025-12-23 19:24:15,518] [INFO] [celery.beat] beat: Starting...
[2025-12-23 19:24:15,640] [INFO] [celery.worker.consumer.connection] Connected to redis://broker:6379//
[2025-12-23 19:24:15,667] [INFO] [celery.apps.worker] celery@9b72d2a26bd2 ready.
[INFO] Shutting down granian

worker: Warm shutdown (MainProcess)
exit code: 0
>>>> Executing external compose provider "/usr/bin/podman-compose". Please refer to the documentation for details. <<<<

podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.9.3
** excluding:  set()
['podman', 'ps', '--filter', 'label=io.podman.compose.project=paperless-ngx', '-a', '--format', '{{ index .Labels "io.podman.compose.config-hash"}}']
podman volume inspect paperless-ngx_redisdata || podman volume create paperless-ngx_redisdata
['podman', 'volume', 'inspect', 'paperless-ngx_redisdata']
['podman', 'network', 'exists', 'paperless-ngx_default']
podman run --name=paperless-ngx_broker_1 -d --label io.podman.compose.config-hash=bc6d006169736d5858e8a309ed2ce64408098a504810596bf2104a569bd5f465 --label io.podman.compose.project=paperless-ngx --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@paperless-ngx.service --label com.docker.compose.project=paperless-ngx --label com.docker.compose.project.working_dir=/home/alan/Temp/paperless-ngx --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=broker -v paperless-ngx_redisdata:/data --net paperless-ngx_default --network-alias broker --restart unless-stopped docker.io/library/redis:8
Error: creating container storage: the container name "paperless-ngx_broker_1" is already in use by cb8700018cd2a350d79d7746cecf21ebf01a78b795aab18447a4167a72b656a4. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.
exit code: 125
podman start paperless-ngx_broker_1
exit code: 0
podman volume inspect paperless-ngx_pgdata || podman volume create paperless-ngx_pgdata
['podman', 'volume', 'inspect', 'paperless-ngx_pgdata']
['podman', 'network', 'exists', 'paperless-ngx_default']
podman run --name=paperless-ngx_db_1 -d --label io.podman.compose.config-hash=bc6d006169736d5858e8a309ed2ce64408098a504810596bf2104a569bd5f465 --label io.podman.compose.project=paperless-ngx --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@paperless-ngx.service --label com.docker.compose.project=paperless-ngx --label com.docker.compose.project.working_dir=/home/alan/Temp/paperless-ngx --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=db -e POSTGRES_DB=paperless -e POSTGRES_USER=paperless -e POSTGRES_PASSWORD=paperless -v paperless-ngx_pgdata:/var/lib/postgresql --net paperless-ngx_default --network-alias db --restart unless-stopped docker.io/library/postgres:18
Error: creating container storage: the container name "paperless-ngx_db_1" is already in use by de4ddc1320b08a7caa39391bff5a3a4834df6062abbe6b625d0d28f1e2fe1c25. You have to remove that container to be able to reuse that name: that name is already in use, or use --replace to instruct Podman to do so.
exit code: 125
podman start paperless-ngx_db_1
exit code: 0
podman volume inspect paperless-ngx_data || podman volume create paperless-ngx_data
['podman', 'volume', 'inspect', 'paperless-ngx_data']
podman volume inspect paperless-ngx_media || podman volume create paperless-ngx_media
['podman', 'volume', 'inspect', 'paperless-ngx_media']
['podman', 'network', 'exists', 'paperless-ngx_default']
podman run --name=paperless-ngx_webserver_1 -d --requires=paperless-ngx_db_1,paperless-ngx_broker_1 --label io.podman.compose.config-hash=bc6d006169736d5858e8a309ed2ce64408098a504810596bf2104a569bd5f465 --label io.podman.compose.project=paperless-ngx --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@paperless-ngx.service --label com.docker.compose.project=paperless-ngx --label com.docker.compose.project.working_dir=/home/alan/Temp/paperless-ngx --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=webserver --env-file /home/alan/Temp/paperless-ngx/docker-compose.env -e PAPERLESS_REDIS=redis://broker:6379 -e PAPERLESS_DBHOST=db -v paperless-ngx_data:/usr/src/paperless/data -v paperless-ngx_media:/usr/src/paperless/media -v /home/alan/Temp/paperless-ngx/export:/usr/src/paperless/export -v /home/alan/Temp/paperless-ngx/consume:/usr/src/paperless/consume --net paperless-ngx_default --network-alias webserver -p 8000:8000 --restart unless-stopped ghcr.io/paperless-ngx/paperless-ngx:latest
1b5791455ffe178a4a8fa931982abb2daaf7965693d171c73b0102e464f5b9f9
exit code: 0
1 Like

I have been saying yes to tika. Here’s my output:

#############################################
###   paperless-ngx docker installation   ###
#############################################

This script will download, configure and start paperless-ngx.

1. Application configuration
============================

The URL paperless will be available at. This is required if the
installation will be accessible via the web, otherwise can be left blank.
Example: https://paperless.example.com

URL []:

The port on which the paperless webserver will listen for incoming
connections.

Port [8000]:

Paperless requires you to configure the current time zone correctly.
Otherwise, the dates of your documents may appear off by one day,
depending on where you are on earth.
Example: Europe/Berlin
See here for a list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Current time zone [Etc/UTC]:

Database backend: PostgreSQL, MariaDB, and SQLite are available. Use PostgreSQL
if unsure. If you're running on a low-power device such as Raspberry
Pi, use SQLite to save resources.

Database backend (postgres sqlite mariadb) [postgres]:

Paperless is able to use Apache Tika to support Office documents such as
Word, Excel, PowerPoint, and LibreOffice equivalents. This feature
requires more resources due to the required services.

Enable Apache Tika? (yes no) [no]: yes

Specify the default language that most of your documents are written in.
Use ISO 639-2, (T) variant language codes:
https://www.loc.gov/standards/iso639-2/php/code_list.php
Common values: eng (English) deu (German) nld (Dutch) fra (French)
This can be a combination of multiple languages such as deu+eng

OCR language [eng]:

Specify the user id and group id you wish to run paperless as.
Paperless will also change ownership on the data, media and consume
folder to the specified values, so it's a good idea to supply the user id
and group id of your Unix user account.
If unsure, leave default.

User ID [1000]:
Group ID [1000]:

2. Folder configuration
=======================

The target folder is used to store the configuration files of
paperless. You can move this folder around after installing paperless.
You will need this folder whenever you want to start, stop, update or
maintain your paperless instance.

Target folder [/home/<username>/paperlessngx/paperless-ngx]:

The consume folder is where paperless will search for new documents.
Point this to a folder where your scanner is able to put your scanned
documents.

CAUTION: You must specify an absolute path starting with / or a relative
path starting with ./ here. Examples:
  /mnt/consume
  ./consume

Consume folder [/home/<username>/paperlessngx/paperless-ngx/consume]:

The media folder is where paperless stores your documents.
Leave empty and docker will manage this folder for you.
Docker usually stores managed folders in /var/lib/docker/volumes.

CAUTION: If specified, you must specify an absolute path starting with /
or a relative path starting with ./ here.

Media folder []:

The data folder is where paperless stores other data, such as your
search index and other data.
As with the media folder, leave empty to have this managed by Docker.

CAUTION: If specified, you must specify an absolute path starting with /
or a relative path starting with ./ here.

Data folder []:

The database folder, where your database stores its data.
Leave empty to have this managed by Docker.

CAUTION: If specified, you must specify an absolute path starting with /
or a relative path starting with ./ here.

Database folder []:

3. Login credentials
====================

Specify initial login credentials. You can change these later.
A mail address is required, however it is not used in paperless. You don't
need to provide an actual mail address.

Paperless username [<username>]:
Paperless password:
Paperless password (again):
Email [<username>@localhost]:

Summary
=======

Target folder: /home/<username>/paperlessngx/paperless-ngx
Consume folder: /home/<username>/paperlessngx/paperless-ngx/consume
Media folder: Managed by Docker
Data folder: Managed by Docker
Database folder: Managed by Docker

URL:
Port: 8000
Database: postgres
Tika enabled: yes
OCR language: eng
User id: 1000
Group id: 1000

Paperless username: <username>
Paperless email: <username>@localhost

Press any key to install.

Installing paperless...

--2025-12-26 16:06:27--  https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/docker-compose.postgres-tika.yml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2836 (2.8K) [text/plain]
Saving to: ‘docker-compose.yml’

docker-compose.yml                                 100%[=============================================================================================================>]   2.77K  --.-KB/s    in 0s

2025-12-26 16:06:28 (15.6 MB/s) - ‘docker-compose.yml’ saved [2836/2836]

--2025-12-26 16:06:28--  https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/.env
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31 [text/plain]
Saving to: ‘.env’

.env                                               100%[=============================================================================================================>]      31  --.-KB/s    in 0s

2025-12-26 16:06:28 (403 KB/s) - ‘.env’ saved [31/31]

unable to get image 'docker.io/gotenberg/gotenberg:8.25': Error response from daemon: client version 1.43 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version

Oh, re-reading the thread, I think I see the issue.

You’re running 24.04, but your docker packages are from 22.04 (jammy).

You need to update docker.

What is the output of sudo apt install docker-compose-v2?

Unpacking docker-compose-v2 (2.37.1+ds1-0ubuntu2~24.04.1) ... dpkg: error processing archive /var/cache/apt/archives/docker-compose-v2_2.37.1+ds1-0ubuntu2~24.04.1_amd64.deb (--unpack): trying to overwrite '/usr/libexec/docker/cli-plugins/docker-compose', which is also in package docker-compose-plugin 5.0.0-1~ubuntu.22.04~jammy dpkg-deb: error: paste subprocess was killed by signal (Broken pipe) Errors were encountered while processing: /var/cache/apt/archives/docker-compose-v2_2.37.1+ds1-0ubuntu2~24.04.1_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1)

Hello, does this help?

Yes, looks like you have some crufty packages on your system.
I would remove all of the docker related packages from your system, and then follow the installation instructions again.

Because you have packages from Ubuntu 22.04 which are conflicting with the 24.04 packages. They need to be removed.

2 Likes