Nextcloud FPM not responding to port 9000 in Podman container

The Basics

  • Nextcloud Server version (e.g., 29.x.x):
    • 33-fpm
  • Reverse proxy and version _(e.g. nginx 1.27.2)
    • Caddy 2.11
  • Installation method (e.g. AlO, NCP, Bare Metal/Archive, etc.)
    • Podman containers running with Quadlets
  • Are you using CloudfIare, mod_security, or similar? (Yes / No)
    • No

Summary of the issue you are facing:

I’ve launched a container with the FPM version of Nextcloud, but it doesn’t seem to be responding to any requests. There don’t seem to be any errors in the logs.

I even cut the Caddy proxy out of the loop by running bash directly in the Nextcloud container. It doesn’t work either.

Steps to replicate it (hint: details matter!):

  1. Launch Nextcloud fpm in a container, along with a Postgres database in another container

  2. Run bash in the Nextcloud container

  3. Try and connect to port 9000

Log entries

Nextcloud

Please provide the log entries from your Nextcloud log that are generated during the time of problem (via the Copy raw option from Administration settings->Logging screen or from your nextcloud.log located in your data directory). Feel free to use a pastebin/gist service if necessary.

May 07 17:54:51 machinename systemd[1]: Starting nextcloud.service - Nextcloud...
May 07 17:54:52 machinename podman[89128]: 2026-05-07 17:54:52.056950087 +0000 UTC m=+0.075264534 container create 414a81a74517b4e9609741349ee445996e0e34a768f2eaedb946b6022cb0a4f0 (image=docker.io/library/nextcloud:33-fpm, name=nextcloud, PODMAN_SYSTEMD_UNIT=nextcloud.service)
May 07 17:54:52 machinename podman[89128]: 2026-05-07 17:54:52.022202398 +0000 UTC m=+0.040516860 image pull ab3c0c2cb0c87bf8f72f01d9225cac496c010b017b858c6be3dd93ee9028a5b1 docker.io/nextcloud:33-fpm
May 07 17:54:52 machinename podman[89128]: 2026-05-07 17:54:52.167641374 +0000 UTC m=+0.185955828 container init 414a81a74517b4e9609741349ee445996e0e34a768f2eaedb946b6022cb0a4f0 (image=docker.io/library/nextcloud:33-fpm, name=nextcloud, PODMAN_SYSTEMD_UNIT=nextcloud.service)
May 07 17:54:52 machinename podman[89128]: 2026-05-07 17:54:52.175877664 +0000 UTC m=+0.194192121 container start 414a81a74517b4e9609741349ee445996e0e34a768f2eaedb946b6022cb0a4f0 (image=docker.io/library/nextcloud:33-fpm, name=nextcloud, PODMAN_SYSTEMD_UNIT=nextcloud.service)
May 07 17:54:52 machinename systemd[1]: Started nextcloud.service - Nextcloud.
May 07 17:54:52 machinename nextcloud[89128]: 414a81a74517b4e9609741349ee445996e0e34a768f2eaedb946b6022cb0a4f0
May 07 17:54:52 machinename nextcloud[89168]: => Configuring PHP session handler...
May 07 17:54:52 machinename nextcloud[89168]: ==> Using default PHP session handler
May 07 17:54:52 machinename nextcloud[89168]: => Searching for hook scripts (*.sh) to run, located in the folder "/docker-entrypoint-hooks.d/before-starting"
May 07 17:54:52 machinename nextcloud[89168]: ==> Skipped: the "before-starting" folder is empty (or does not exist)
May 07 17:54:52 machinename nextcloud[89168]: [07-May-2026 17:54:52] NOTICE: fpm is running, pid 1
May 07 17:54:52 machinename nextcloud[89168]: [07-May-2026 17:54:52] NOTICE: ready to handle connections

Curl result

# podman exec -it 414a81a74517 bash
root@414a81a74517:/var/www/html# curl localhost:9000 -v
* Host localhost:9000 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
*   Trying [::1]:9000...
* Connected to localhost (::1) port 9000
* using HTTP/1.x
> GET / HTTP/1.1
> Host: localhost:9000
> User-Agent: curl/8.14.1
> Accept: */*
> 
* Request completely sent off
* Recv failure: Connection reset by peer
* closing connection #0
curl: (56) Recv failure: Connection reset by peer

Configuration

Nextcloud container config


[Unit]
Description=Nextcloud
After=postgres.container
Requires=postgres.container

[Container]
ContainerName=nextcloud
Image=docker.io/nextcloud:33-fpm
Volume=/opt/machinename/data/nextcloud/data:/var/www/html
Secret=postgres-pw,type=env,target=POSTGRES_PASSWORD
Secret=nextcloud-pw,type=env,target=NEXTCLOUD_ADMIN_PASSWORD
Environment=POSTGRES_DB=nextcloud
Environment=POSTGRES_HOST=postgres
Environment=POSTGRES_USER=postgres
Environment=NEXTCLOUD_ADMIN_USER=admin
Environment=POSTGRES_USER=postgres
Network=machine-net.network

[Install]
WantedBy=default.target

FPM != http. You can’t just run curl against it.

How, precisely, are you configuring Caddy to use FPM? Are you using php_fastcgi? Otherwise, if you just want a conventional reverse proxy scenario, use the non-fpm image.

Ah, I was confused because the documentation says “To use the fpm image, you need an additional web server, such as nginx, that can proxy http-request to the fpm-port of the container.” So I thought I just needed to proxy http-requests to the fpm-port.

Unfortunately, the documentation doesn’t include an example proxy configuration. It does mention an nginx config and says “An example can be found in the examples section here.” but if that’s true I certainly couldn’t find it.

My Caddy config is currently:

{
  acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
  debug
}

nextcloud.mysite.com {
  php_fastcgi * nextcloud:9000
}

… but all I get when I hit port 443 is:

< HTTP/2 200
< alt-svc: h3=“:443”; ma=2592000
< server: Caddy
< content-length: 0
< date: Fri, 08 May 2026 15:14:47 GMT

Hello @catsclaw,

welcome to the Nextcloud community! :handshake:

As often if you hit an issue chances exist other solved it already.. and in this case simple forum search would give you this wonderful guide Nextcloud docker compose setup with Caddy (2024) I think it’s easy to adopt for podman