Unexpected 403 with Nextcloud dav

Hi there, im trying to get nextcloud to work served locally from /var/www/nextcloud, but i get a weird error.

1. Caddy version (caddy version):

2.3.0

2. How I run Caddy:

Bare metal on debian 10, with repository added to apt.

a. System environment:

Debian 10 vps

b. Command:

caddy start

as root

c. Service/unit/compose file:

paste full file contents here

d. My complete Caddyfile or JSON config:

sub.host.tld {

  # Logfile
  log {
    output file /var/opt/caddy/caddy.log
    format single_field common_log
    level info
  }

  # Certificates from certbot
  tls /etc/letsencrypt/live/sub.host.tld/cert.pem /etc/letsencrypt/live/sub.host.tld/privkey.pem

  root * /var/www/nextcloud
  file_server
  encode gzip

  php_fastcgi unix//run/php/php8.0-fpm.sock {
    env front_controller_active true
    env PATH /bin
  }

  # Custom http header
  header {
    Strict-Transport-Security "max-age=15768000;includeSubDomains;"
  }

  # Redirect dav stuff
  redir /.well-known/carddav /remote.php/dav 301
  redir /.well-known/caldav /remote.php/dav 301

  # Deny certain files/folders
  @forbidden {
        path /.htaccess
        path /data/*
        path /config/*
        path /db_structure
        path /.xml
        path /README
        path /3rdparty/*
        path /lib/*
        path /templates/*
        path /occ
        path /console.php
  }
  respond @forbidden 403
}

3. The problem I’m having:

I serve nextcloud from /var/www/nextcloud, not the docker image of it.
Nextcloud gives attitude because it cant reach the dav backend. If i try to go to sub.host.tld/remote.php/dav i get an “Access denied” in the browser and log shows 403.
All files in www/nextcloud are chowned by www-data.
I dont’t understand the 403 by any means, there are no @forbidden rules for remote.php or anything. Most of nextcloud is served well.

My best guess is that i messed up the config somewhere and that caddy is trying to serve /remote.php/dav as a folder and searches for /remote.php/dav/index.php instead of passing /dav to remote.php. Could that be?

4. Error messages and/or full log output:

IP - - [29/Apr/2021:11:17:03 +0200] “GET /remote.php/dav HTTP/2.0” 403 15

5. What I already tried:

Looking in similar configs and Caddyfiles in the wiki, none of them helpful for my case. Paste the default wiki nextcloud Caddyfile and try, but still not working. Messing with the @forbidden and try to serve files from root (which worked). But not remote.php/dav

6. Links to relevant resources:

Can anyone point me to the right direction?

Okay, i seem to have found a solution after a deep dive in this forum. I implemented a “temporary fix” from last april from this post since php_fastcgi routes everything through index.php, therefore preventing remote.php from being called with /dav. Will post config.

That should already work, the default behaviour of php_fastcgi does that already, since that topic was written:

Are you sure that Caddy can find the /remote.php file?

Turn on the debug mode global option, you should see additional logging about the results of the rewrites.

Also, try running with v2.4.0-beta.2, there may have been relevant fixes since (hard to keep track).

Full working config for me as of now:

example.com {

  import slog

  root * /var/www/nextcloud
  file_server

  encode gzip zstd

  php_fastcgi unix//var/run/php/php8.0-fpm.sock {
    env PATH /bin
    env front_controller_active true
  }

  header {
    # enable HSTS
    Strict-Transport-Security max-age=31536000;
  }

  redir /.well-known/carddav /remote.php/dav 301
  redir /.well-known/caldav /remote.php/dav 301

  # .htaccess / data / config / ... shouldn't be accessible from outside
        @forbidden {
                path    /.htaccess
                path    /data/*
                path    /config/*
                path    /db_structure
                path    /.xml
                path    /README
                path    /3rdparty/*
                path    /lib/*
                path    /templates/*
                path    /occ
                path    /console.php
        }
        respond @forbidden "@forbidden"

        @phpFiles {
            path_regexp phpfile ^/(remote|public|cron|core/ajax/update|status|ocs/v1|ocs/v2)\.php
        }
        rewrite @phpFiles {http.regexp.phpfile.0}
}

Will try 2.4 beta tomorrow and report

Thanks for your response. Just to make sure i tried again without the @phpFiles Matcher and rewrite and with 2.3 the remote.php/dav querie returns “Access denied.” If i put it back in the config, it works fine, no warning in dashboard and remote.php/dav returns
This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client..
Will try with 2.4 tomorrow, if it does not require compiling.

So this morning i’m testing with
v2.4.0-beta.2 h1:DUaK4qtL3T0/gAm0fVVkHgcMN04r4zGpfPUZWHRR8QU=
from github. Maybe i’m doing something wrong but i still need the filematcher for remote.php and rewrite rule for nextcloud to work.

Also the nextcloud desktop app can’t connect/auth to my server. I didn’t test the desktop app yesterday, so propably it wouldn’t have yesterday either. The error the desktop app shows is

Error accessing token endpoint
Error transferring https://sub.domain.tld/index.php/login/v2 - server replied: Forbidden

Browser access is working fine i can browse nextcloud, edit settings etc. The urls are like sub.domain.com/login/ or sub.domain.com/apps/dashboard etc.

Again, current config is

sub.domain.com {

  # logging
  import slog

  root * /var/www/nextcloud
  file_server

  encode gzip zstd

  php_fastcgi unix//var/run/php/php8.0-fpm.sock {
    env PATH /bin
    env front_controller_active true
  }

  header {
    # enable HSTS
    Strict-Transport-Security max-age=31536000;
  }

  redir /.well-known/carddav /remote.php/dav 301
  redir /.well-known/caldav /remote.php/dav 301

  # .htaccess / data / config / ... shouldn't be accessible from outside
        @forbidden {
          path    /.htaccess
          path    /data/*
          path    /config/*
          path    /db_structure
          path    /.xml
          path    /README
          path    /3rdparty/*
          path    /lib/*
          path    /templates/*
          path    /occ
          path    /console.php
        }
        respond @forbidden "@forbidden"

  # allow remote.php and others to be served by fpm
  @phpFiles {
    path_regexp phpfile ^/(remote|public|cron|core/ajax/update|status|ocs/v1|ocs/v2)\.php
  }
  rewrite @phpFiles {http.regexp.phpfile.0}

}

I don’t know why the brwoser app is working, but the desktop app isn’t. And since you said it it shouldn’t need the matcher for remote.php, i don’t know why that isn’t working either. Sorry.

I turned on debug log and i think this is the request from the desktop app:

{
  "level": "debug",
  "ts": 1619855138.0240307,
  "logger": "http.handlers.rewrite",
  "msg": "rewrote request",
  "request": {
    "remote_addr": "IP:50318",
    "proto": "HTTP/1.1",
    "method": "POST",
    "host": "sub.domain.com",
    "uri": "/index.php/login/v2",
    "headers": {
      "User-Agent": [
        "Computername (Desktop Client - Windows)"
      ],
      "Cookie": [
        "oc_sessionPassphrase=o9Qzt2hIbQddQ99ATjdyJHy5mes%2FZsntrW%2FF1QgYC4El8H8Cp5ks7p0eD3GBUnvYQnA03CGym9oVh1Fa0lI%2BaZ0thGJttFSmKpUKy0auprURpCs6kP5LB0M67eF5fxGy; oc8nqiyqfk0m=7r82ag6urt4jha6dpbu7crskg3; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true"
      ],
      "Accept-Encoding": [
        "gzip, deflate"
      ],
      "Content-Length": [
        "0"
      ],
      "Accept": [
        "*/*"
      ],
      "X-Request-Id": [
        "79921dc0-7e57-4207-a1d4-fdf2e2bf14a2"
      ],
      "Connection": [
        "Keep-Alive"
      ],
      "Accept-Language": [
        "de-DE,en,*"
      ]
    },
    "tls": {
      "resumed": false,
      "version": 772,
      "cipher_suite": 4865,
      "proto": "",
      "proto_mutual": true,
      "server_name": "sub.domain.com"
    }
  },
  "method": "POST",
  "uri": "/index.php"
}
{
  "level": "debug",
  "ts": 1619855138.024199,
  "logger": "http.reverse_proxy.transport.fastcgi",
  "msg": "roundtrip",
  "request": {
    "remote_addr": "IP:50318",
    "proto": "HTTP/1.1",
    "method": "POST",
    "host": "sub.domain.com",
    "uri": "/index.php",
    "headers": {
      "X-Forwarded-Proto": [
        "https"
      ],
      "Content-Length": [
        "0"
      ],
      "Accept": [
        "*/*"
      ],
      "X-Request-Id": [
        "79921dc0-7e57-4207-a1d4-fdf2e2bf14a2"
      ],
      "Accept-Language": [
        "de-DE,en,*"
      ],
      "User-Agent": [
        "Computername (Desktop Client - Windows)"
      ],
      "Cookie": [
        "oc_sessionPassphrase=o9Qzt2hIbQddQ99ATjdyJHy5mes%2FZsntrW%2FF1QgYC4El8H8Cp5ks7p0eD3GBUnvYQnA03CGym9oVh1Fa0lI%2BaZ0thGJttFSmKpUKy0auprURpCs6kP5LB0M67eF5fxGy; oc8nqiyqfk0m=7r82ag6urt4jha6dpbu7crskg3; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true"
      ],
      "Accept-Encoding": [
        "gzip, deflate"
      ],
      "X-Forwarded-For": [
        "IP"
      ]
    },
    "tls": {
      "resumed": false,
      "version": 772,
      "cipher_suite": 4865,
      "proto": "",
      "proto_mutual": true,
      "server_name": "sub.domain.com"
    }
  },
  "dial": "/var/run/php/php8.0-fpm.sock",
  "env": {
    "AUTH_TYPE": "",
    "CONTENT_LENGTH": "0",
    "CONTENT_TYPE": "",
    "DOCUMENT_ROOT": "/var/www/nextcloud",
    "DOCUMENT_URI": "/index.php",
    "GATEWAY_INTERFACE": "CGI/1.1",
    "HTTPS": "on",
    "HTTP_ACCEPT": "*/*",
    "HTTP_ACCEPT_ENCODING": "gzip, deflate",
    "HTTP_ACCEPT_LANGUAGE": "de-DE,en,*",
    "HTTP_CONTENT_LENGTH": "0",
    "HTTP_COOKIE": "oc_sessionPassphrase=o9Qzt2hIbQddQ99ATjdyJHy5mes%2FZsntrW%2FF1QgYC4El8H8Cp5ks7p0eD3GBUnvYQnA03CGym9oVh1Fa0lI%2BaZ0thGJttFSmKpUKy0auprURpCs6kP5LB0M67eF5fxGy; oc8nqiyqfk0m=7r82ag6urt4jha6dpbu7crskg3; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true",
    "HTTP_HOST": "sub.domain.com",
    "HTTP_USER_AGENT": "Computername (Desktop Client - Windows)",
    "HTTP_X_FORWARDED_FOR": "IP",
    "HTTP_X_FORWARDED_PROTO": "https",
    "HTTP_X_REQUEST_ID": "79921dc0-7e57-4207-a1d4-fdf2e2bf14a2",
    "PATH": "/bin",
    "PATH_INFO": "/login/v2",
    "PATH_TRANSLATED": "/var/www/nextcloud/login/v2",
    "QUERY_STRING": "",
    "REMOTE_ADDR": "IP",
    "REMOTE_HOST": "IP",
    "REMOTE_IDENT": "",
    "REMOTE_PORT": "50318",
    "REMOTE_USER": "",
    "REQUEST_METHOD": "POST",
    "REQUEST_SCHEME": "https",
    "REQUEST_URI": "/index.php/login/v2",
    "SCRIPT_FILENAME": "/var/www/nextcloud/index.php",
    "SCRIPT_NAME": "/index.php",
    "SERVER_NAME": "sub.domain.com",
    "SERVER_PROTOCOL": "HTTP/1.1",
    "SERVER_SOFTWARE": "Caddy/v2.4.0-beta.2",
    "SSL_CIPHER": "TLS_AES_128_GCM_SHA256",
    "SSL_PROTOCOL": "TLSv1.3",
    "front_controller_active": "true"
  }
}
{
  "level": "debug",
  "ts": 1619855138.0247207,
  "logger": "http.handlers.reverse_proxy",
  "msg": "upstream roundtrip",
  "upstream": "unix//var/run/php/php8.0-fpm.sock",
  "request": {
    "remote_addr": "IP:50318",
    "proto": "HTTP/1.1",
    "method": "POST",
    "host": "sub.domain.com",
    "uri": "/index.php",
    "headers": {
      "X-Forwarded-Proto": [
        "https"
      ],
      "Content-Length": [
        "0"
      ],
      "Accept": [
        "*/*"
      ],
      "X-Request-Id": [
        "79921dc0-7e57-4207-a1d4-fdf2e2bf14a2"
      ],
      "Accept-Language": [
        "de-DE,en,*"
      ],
      "User-Agent": [
        "Computername (Desktop Client - Windows)"
      ],
      "Cookie": [
        "oc_sessionPassphrase=o9Qzt2hIbQddQ99ATjdyJHy5mes%2FZsntrW%2FF1QgYC4El8H8Cp5ks7p0eD3GBUnvYQnA03CGym9oVh1Fa0lI%2BaZ0thGJttFSmKpUKy0auprURpCs6kP5LB0M67eF5fxGy; oc8nqiyqfk0m=7r82ag6urt4jha6dpbu7crskg3; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true"
      ],
      "Accept-Encoding": [
        "gzip, deflate"
      ],
      "X-Forwarded-For": [
        "IP"
      ]
    },
    "tls": {
      "resumed": false,
      "version": 772,
      "cipher_suite": 4865,
      "proto": "",
      "proto_mutual": true,
      "server_name": "sub.domain.com"
    }
  },
  "duration": 0.000608025,
  "headers": {
    "Status": [
      "403 Forbidden"
    ],
    "Content-Type": [
      "text/html; charset=UTF-8"
    ]
  },
  "status": 403
}

Here is the debug log for the /remote.php/dav request without the matcher and rewrite directive:

{
  "level": "debug",
  "ts": 1619856201.439723,
  "logger": "http.handlers.rewrite",
  "msg": "rewrote request",
  "request": {
    "remote_addr": "IP:50349",
    "proto": "HTTP/2.0",
    "method": "GET",
    "host": "sub.domain.com",
    "uri": "/remote.php/dav",
    "headers": {
      "Te": [
        "trailers"
      ],
      "User-Agent": [
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"
      ],
      "Dnt": [
        "1"
      ],
      "Upgrade-Insecure-Requests": [
        "1"
      ],
      "Cookie": [
        "oc_sessionPassphrase=kO1aaj79QDEsiYQ%2BBqKrHbcc79MxZwGS4GRulm1%2Bxk7FnAMcLj8PH6Pagx5G%2BtJSfAcXiUnZHdsVTqltQ%2BxPem0EezWpZ0L%2BcS0BuaXfDfIM7qK5XBT1JPe4bhHRJUbJ; oc8nqiyqfk0m=41u5uqu22atm7iako806uvaav9; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; nc_username=tllggrs; nc_token=zfaRSuiAL8qCWZF%2FeN0NEbU8ce2E32fR; nc_session_id=41u5uqu22atm7iako806uvaav9"
      ],
      "Cache-Control": [
        "max-age=0"
      ],
      "Accept": [
        "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
      ],
      "Accept-Language": [
        "de,en-US;q=0.7,en;q=0.3"
      ],
      "Accept-Encoding": [
        "gzip, deflate, br"
      ]
    },
    "tls": {
      "resumed": false,
      "version": 772,
      "cipher_suite": 4865,
      "proto": "h2",
      "proto_mutual": true,
      "server_name": "sub.domain.com"
    }
  },
  "method": "GET",
  "uri": "/remote.php"
}
{
  "level": "debug",
  "ts": 1619856201.4399064,
  "logger": "http.reverse_proxy.transport.fastcgi",
  "msg": "roundtrip",
  "request": {
    "remote_addr": "IP:50349",
    "proto": "HTTP/2.0",
    "method": "GET",
    "host": "sub.domain.com",
    "uri": "/remote.php",
    "headers": {
      "User-Agent": [
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"
      ],
      "Dnt": [
        "1"
      ],
      "Upgrade-Insecure-Requests": [
        "1"
      ],
      "Te": [
        "trailers"
      ],
      "X-Forwarded-For": [
        "IP"
      ],
      "X-Forwarded-Proto": [
        "https"
      ],
      "Accept": [
        "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
      ],
      "Accept-Language": [
        "de,en-US;q=0.7,en;q=0.3"
      ],
      "Accept-Encoding": [
        "gzip, deflate, br"
      ],
      "Cookie": [
        "oc_sessionPassphrase=kO1aaj79QDEsiYQ%2BBqKrHbcc79MxZwGS4GRulm1%2Bxk7FnAMcLj8PH6Pagx5G%2BtJSfAcXiUnZHdsVTqltQ%2BxPem0EezWpZ0L%2BcS0BuaXfDfIM7qK5XBT1JPe4bhHRJUbJ; oc8nqiyqfk0m=41u5uqu22atm7iako806uvaav9; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; nc_username=tllggrs; nc_token=zfaRSuiAL8qCWZF%2FeN0NEbU8ce2E32fR; nc_session_id=41u5uqu22atm7iako806uvaav9"
      ],
      "Cache-Control": [
        "max-age=0"
      ]
    },
    "tls": {
      "resumed": false,
      "version": 772,
      "cipher_suite": 4865,
      "proto": "h2",
      "proto_mutual": true,
      "server_name": "sub.domain.com"
    }
  },
  "dial": "/var/run/php/php8.0-fpm.sock",
  "env": {
    "AUTH_TYPE": "",
    "CONTENT_LENGTH": "",
    "CONTENT_TYPE": "",
    "DOCUMENT_ROOT": "/var/www/nextcloud",
    "DOCUMENT_URI": "/remote.php",
    "GATEWAY_INTERFACE": "CGI/1.1",
    "HTTPS": "on",
    "HTTP_ACCEPT": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "HTTP_ACCEPT_ENCODING": "gzip, deflate, br",
    "HTTP_ACCEPT_LANGUAGE": "de,en-US;q=0.7,en;q=0.3",
    "HTTP_CACHE_CONTROL": "max-age=0",
    "HTTP_COOKIE": "oc_sessionPassphrase=kO1aaj79QDEsiYQ%2BBqKrHbcc79MxZwGS4GRulm1%2Bxk7FnAMcLj8PH6Pagx5G%2BtJSfAcXiUnZHdsVTqltQ%2BxPem0EezWpZ0L%2BcS0BuaXfDfIM7qK5XBT1JPe4bhHRJUbJ; oc8nqiyqfk0m=41u5uqu22atm7iako806uvaav9; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; nc_username=tllggrs; nc_token=zfaRSuiAL8qCWZF%2FeN0NEbU8ce2E32fR; nc_session_id=41u5uqu22atm7iako806uvaav9",
    "HTTP_DNT": "1",
    "HTTP_HOST": "sub.domain.com",
    "HTTP_TE": "trailers",
    "HTTP_UPGRADE_INSECURE_REQUESTS": "1",
    "HTTP_USER_AGENT": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0",
    "HTTP_X_FORWARDED_FOR": "IP",
    "HTTP_X_FORWARDED_PROTO": "https",
    "PATH": "/bin",
    "PATH_INFO": "/dav",
    "PATH_TRANSLATED": "/var/www/nextcloud/dav",
    "QUERY_STRING": "",
    "REMOTE_ADDR": "IP",
    "REMOTE_HOST": "IP",
    "REMOTE_IDENT": "",
    "REMOTE_PORT": "50349",
    "REMOTE_USER": "",
    "REQUEST_METHOD": "GET",
    "REQUEST_SCHEME": "https",
    "REQUEST_URI": "/remote.php/dav",
    "SCRIPT_FILENAME": "/var/www/nextcloud/remote.php",
    "SCRIPT_NAME": "/remote.php",
    "SERVER_NAME": "sub.domain.com",
    "SERVER_PROTOCOL": "HTTP/2.0",
    "SERVER_SOFTWARE": "Caddy/v2.4.0-beta.2",
    "SSL_CIPHER": "TLS_AES_128_GCM_SHA256",
    "SSL_PROTOCOL": "TLSv1.3",
    "front_controller_active": "true"
  }
}
{
  "level": "debug",
  "ts": 1619856201.4403615,
  "logger": "http.handlers.reverse_proxy",
  "msg": "upstream roundtrip",
  "upstream": "unix//var/run/php/php8.0-fpm.sock",
  "request": {
    "remote_addr": "IP:50349",
    "proto": "HTTP/2.0",
    "method": "GET",
    "host": "sub.domain.com",
    "uri": "/remote.php",
    "headers": {
      "Accept": [
        "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
      ],
      "Accept-Language": [
        "de,en-US;q=0.7,en;q=0.3"
      ],
      "Accept-Encoding": [
        "gzip, deflate, br"
      ],
      "Cookie": [
        "oc_sessionPassphrase=kO1aaj79QDEsiYQ%2BBqKrHbcc79MxZwGS4GRulm1%2Bxk7FnAMcLj8PH6Pagx5G%2BtJSfAcXiUnZHdsVTqltQ%2BxPem0EezWpZ0L%2BcS0BuaXfDfIM7qK5XBT1JPe4bhHRJUbJ; oc8nqiyqfk0m=41u5uqu22atm7iako806uvaav9; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; nc_username=tllggrs; nc_token=zfaRSuiAL8qCWZF%2FeN0NEbU8ce2E32fR; nc_session_id=41u5uqu22atm7iako806uvaav9"
      ],
      "Cache-Control": [
        "max-age=0"
      ],
      "User-Agent": [
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"
      ],
      "Dnt": [
        "1"
      ],
      "Upgrade-Insecure-Requests": [
        "1"
      ],
      "Te": [
        "trailers"
      ],
      "X-Forwarded-For": [
        "IP"
      ],
      "X-Forwarded-Proto": [
        "https"
      ]
    },
    "tls": {
      "resumed": false,
      "version": 772,
      "cipher_suite": 4865,
      "proto": "h2",
      "proto_mutual": true,
      "server_name": "sub.domain.com"
    }
  },
  "duration": 0.000545987,
  "headers": {
    "Status": [
      "403 Forbidden"
    ],
    "Content-Type": [
      "text/html; charset=UTF-8"
    ]
  },
  "status": 403
}

I see

"PATH_INFO": "/dav",
"PATH_TRANSLATED": "/var/www/nextcloud/dav",

and think that could be an issue because path translated doesn’t exist in that way. But i don’t know what to fix because fpm seems to get a hiccup between calling root/remote.php and root/dav. There is no dav folder in nextcloud 21 root folder, i checked.

That’s actually correct according to the fastcgi spec, believe it or not. Most sites don’t use that env anyways.

The one difference in your config vs others I’ve seen is that you added env PATH /bin. Are you sure you need that? I think that’s messing things up.

I added env PATH /bin because nextcloud asked me to in its settings overview when i had not. And it’s actually in caddys example file. Though for v1, it was referenced in one of the wiki articles.

I deleted it from the config and restarted, but sadly still no access to /remote.php/dav. And again, nextcloud is warning me of the unset PATH variable.

Well, i think i found a reason for the problem. I use php8.0-fpm but didn’t read the nextcloud docs thoroughly. Actually recommended is 7.4 for Nc21. I found forum posts from users upgrading to 8.0, so i figured why not, since it worked for them. Today i did a downgrade to 7.4 and everything is working now (at least i think :wink:).

Thanks for your patience.

1 Like

That makes sense. PHP 8 changed quite a lot of things that are tricky to maintain backwards compatibility with, so it’s quite possible that some trouble exists there.

This topic was automatically closed after 30 days. New replies are no longer allowed.