HighT17
HighT17

Reputation: 23

Nextcloud: system cron not working - php_network_getaddresses: Name or service not known

i'm having problem with the background cron jobs. After searching and trying for a couple of days, i still haven't find a solution for my particular problem. So, you are my last resort ;)

Background info: I recently switched for the background jobs from Ajax to cron (hadn't seen, that this is the recommended option). I switched this option in the nextcloud Web frontend as well as in the # crontab settings. Since then, i get the error view in the frontend that something is not working. To get a better idea, i tried manually triggering cron with the following:

php -f /media/nextcloud/html/cron.php --define apc.enable_cli=1

After a couple of seconds, i get the following:

pi@raspi:/media/nextcloud/html $ sudo php -f /media/nextcloud/html/cron.php --define apc.enable_cli=1
{"reqId":"iGzJSzgY1veDYl1o9E6a","level":3,"time":"2025-01-07T09:52:24+00:00","remoteAddr":"","user":"--","app":"cron","method":"","url":"--","message":"Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for nextcloud_db failed: Name or service not known","userAgent":"--","version":"30.0.4.1","exception":{"Exception":"Doctrine\\DBAL\\Exception","Message":"Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for nextcloud_db failed: Name or service not known","Code":2002,"Trace":[{"file":"/media/nextcloud/html/3rdparty/doctrine/dbal/src/Connection.php","line":453,"function":"connect","class":"OC\\DB\\Connection","type":"->"},{"file":"/media/nextcloud/html/3rdparty/doctrine/dbal/src/Connection.php","line":411,"function":"getDatabasePlatformVersion","class":"Doctrine\\DBAL\\Connection","type":"->"},{"file":"/media/nextcloud/html/3rdparty/doctrine/dbal/src/Connection.php","line":318,"function":"detectDatabasePlatform","class":"Doctrine\\DBAL\\Connection","type":"->"},{"file":"/media/nextcloud/html/lib/private/DB/Connection.php","line":899,"function":"getDatabasePlatform","class":"Doctrine\\DBAL\\Connection","type":"->"},{"file":"/media/nextcloud/html/lib/private/DB/ConnectionAdapter.php","line":235,"function":"getDatabaseProvider","class":"OC\\DB\\Connection","type":"->"},{"file":"/media/nextcloud/html/lib/private/DB/QueryBuilder/QueryBuilder.php","line":96,"function":"getDatabaseProvider","class":"OC\\DB\\ConnectionAdapter","type":"->"},{"file":"/media/nextcloud/html/lib/private/AppConfig.php","line":1211,"function":"expr","class":"OC\\DB\\QueryBuilder\\QueryBuilder","type":"->"},{"file":"/media/nextcloud/html/lib/private/AppConfig.php","line":237,"function":"loadConfig","class":"OC\\AppConfig","type":"->"},{"file":"/media/nextcloud/html/lib/private/AppConfig.php","line":1351,"function":"searchValues","class":"OC\\AppConfig","type":"->"},{"file":"/media/nextcloud/html/lib/private/App/AppManager.php","line":126,"function":"getValues","class":"OC\\AppConfig","type":"->"},{"file":"/media/nextcloud/html/lib/private/App/AppManager.php","line":147,"function":"getInstalledAppsValues","class":"OC\\App\\AppManager","type":"->"},{"file":"/media/nextcloud/html/lib/private/legacy/OC_App.php","line":191,"function":"getInstalledApps","class":"OC\\App\\AppManager","type":"->"},{"file":"/media/nextcloud/html/lib/private/AppFramework/Bootstrap/Coordinator.php","line":48,"function":"getEnabledApps","class":"OC_App","type":"::"},{"file":"/media/nextcloud/html/lib/base.php","line":659,"function":"runInitialRegistration","class":"OC\\AppFramework\\Bootstrap\\Coordinator","type":"->"},{"file":"/media/nextcloud/html/lib/base.php","line":1134,"function":"init","class":"OC","type":"::"},{"file":"/media/nextcloud/html/cron.php","line":24,"args":["/media/nextcloud/html/lib/base.php"],"function":"require_once"}],"File":"/media/nextcloud/html/lib/private/DB/Connection.php","Line":233,"message":"Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for nextcloud_db failed: Name or service not known","exception":{},"CustomMessage":"Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for nextcloud_db failed: Name or service not known"}}
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for nextcloud_db failed: Name or service not known in /media/nextcloud/html/lib/private/DB/Connection.php:233
Stack trace:
#0 /media/nextcloud/html/3rdparty/doctrine/dbal/src/Connection.php(453): OC\DB\Connection->connect()
#1 /media/nextcloud/html/3rdparty/doctrine/dbal/src/Connection.php(411): Doctrine\DBAL\Connection->getDatabasePlatformVersion()
#2 /media/nextcloud/html/3rdparty/doctrine/dbal/src/Connection.php(318): Doctrine\DBAL\Connection->detectDatabasePlatform()
#3 /media/nextcloud/html/lib/private/DB/Connection.php(899): Doctrine\DBAL\Connection->getDatabasePlatform()
#4 /media/nextcloud/html/lib/private/DB/ConnectionAdapter.php(235): OC\DB\Connection->getDatabaseProvider()
#5 /media/nextcloud/html/lib/private/DB/QueryBuilder/QueryBuilder.php(96): OC\DB\ConnectionAdapter->getDatabaseProvider()
#6 /media/nextcloud/html/lib/private/AppConfig.php(1211): OC\DB\QueryBuilder\QueryBuilder->expr()
#7 /media/nextcloud/html/lib/private/AppConfig.php(237): OC\AppConfig->loadConfig()
#8 /media/nextcloud/html/lib/private/AppConfig.php(1351): OC\AppConfig->searchValues()
#9 /media/nextcloud/html/lib/private/App/AppManager.php(126): OC\AppConfig->getValues()
#10 /media/nextcloud/html/lib/private/App/AppManager.php(147): OC\App\AppManager->getInstalledAppsValues()
#11 /media/nextcloud/html/lib/private/legacy/OC_App.php(191): OC\App\AppManager->getInstalledApps()
#12 /media/nextcloud/html/lib/private/AppFramework/Bootstrap/Coordinator.php(48): OC_App::getEnabledApps()
#13 /media/nextcloud/html/lib/base.php(659): OC\AppFramework\Bootstrap\Coordinator->runInitialRegistration()
#14 /media/nextcloud/html/lib/base.php(1134): OC::init()
#15 /media/nextcloud/html/cron.php(24): require_once('...')
#16 {main}

This looks like a problem with the database, but my nextcloud is running for month without problems.

My nextcloud is on version 30.0.04. It runs in a docker container on a raspberry pi 5. As a proxy, i use traefik. For further context, this is my docker compose file:

version: "3.8"
services:
  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud
    ports:
      - 4646:80
    labels:
      - traefik.docker.network= traefik_web
      - traefik.enable=true
      - traefik.http.routers.nextcloud.entrypoints=https
      - traefik.http.routers.nextcloud.rule=Host(`<my.domain>`)
      - traefik.http.middlewares.nextcloud.headers.stsSeconds=15552000
      - traefik.http.middlewares.nextcloud.headers.stsPreload=true
      - traefik.http.middlewares.nextcloud_redirect.redirectregex.permanent=true
      - traefik.http.middlewares.nextcloud_redirect.redirectregex.regex=^https://(.*)/.well-known/(card|cal)dav
      - traefik.http.middlewares.nextcloud_redirect.redirectregex.replacement=https://$${1}/remote.php/dav/
    volumes:
      - /media/nextcloud/html:/var/www/html
    restart: unless-stopped
    environment:
      - MYSQL_HOST=<XXX>
      - MYSQL_PASSWORD=<XXX>
      - MYSQL_DATABASE=<XXX>
      - MYSQL_USER=<XXX>
      - TRUSTED_PROXIES=<XXX>
    depends_on:
      - nextcloud_db
    links:
      - nextcloud_db
    networks:
      - traefik_web
      #- nextcloud
    logging:
      options:
        max-size: 5m
        max-file: "3"
  nextcloud_db:
    image: yobasystems/alpine-mariadb
    container_name: nextcloud_db
    volumes:
      - /media/nextcloud/db:/var/lib/mysql
    restart: unless-stopped
    environment:
      - MYSQL_HOST=<XXX>
      - MYSQL_PASSWORD=<XXX>
      - MYSQL_DATABASE=<XXX>
      - MYSQL_USER=<XXX>
      - TRUSTED_PROXIES=<XXX>
      - MYSQL_ROOT_PASSWORD=<XXX>
    networks:
      - traefik_web
    logging:
      options:
        max-size: 5m
        max-file: "3"
networks:
  traefik_web:
    external: true

I checked the obvious one: The environment variables are the same in the config.php. But as i mentioned, the database in general works.

Do you have any idea? What am i missing?

Thanks in advance!

Upvotes: 0

Views: 55

Answers (1)

HighT17
HighT17

Reputation: 23

Someone else helped, i got it fixed :) Solution: The cron has to be run within the docker container (as correctly suggested from bluepuma77) AND for that to be working, the command has to reference the file in the docker container. So, from /media/nextcloud/html/cron.php, i had to switch the command to /var/www/html/cron.php.

Also worth mentioning: The complete command should be in the root crontab, the www-data user must be part of the command:

sudo crontab -e

*/5 * * * * docker exec --user www-data nextcloud php -f /var/www/html/cron.php --define apc.enable_cli=1

Upvotes: 1

Related Questions