Unverified Commit 5ef467d6 authored by Maximilian Bosch's avatar Maximilian Bosch
Browse files

nixos/nextcloud: add nextcloud-update-db.service, nextcloud-cron isn't oneshot

This service performs operations that significantly increase the
performance of Nextcloud, can take a while. These are designed however
to not require maintenance mode and can be executed during normal
operation[1].

Make nextcloud-cron a simple unit instead of oneshot: otherwise we risk
that it'll be stopped by the startup timeout (oneshot executes ExecStart
while "activating") which can be an issue for very long running tasks or
if Nextcloud needs to catch up if one task was broken for a while.

[1] https://docs.nextcloud.com/server/29/admin_manual/maintenance/upgrade.html#long-running-migration-steps
parent 7e244f72
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -939,6 +939,7 @@ in {

        in {
          wantedBy = [ "multi-user.target" ];
          wants = [ "nextcloud-update-db.service" ];
          before = [ "phpfpm-nextcloud.service" ];
          after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
          requires = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
@@ -997,7 +998,7 @@ in {
          after = [ "nextcloud-setup.service" ];
          environment.NEXTCLOUD_CONFIG_DIR = "${datadir}/config";
          serviceConfig = {
            Type = "oneshot";
            Type = "exec";
            User = "nextcloud";
            ExecCondition = "${lib.getExe phpPackage} -f ${webroot}/occ status -e";
            ExecStart = "${lib.getExe phpPackage} -f ${webroot}/cron.php";
@@ -1013,6 +1014,20 @@ in {
          };
          startAt = cfg.autoUpdateApps.startAt;
        };
        nextcloud-update-db = {
          after = [ "nextcloud-setup.service" ];
          environment.NEXTCLOUD_CONFIG_DIR = "${datadir}/config";
          script = ''
            ${occ}/bin/nextcloud-occ db:add-missing-columns
            ${occ}/bin/nextcloud-occ db:add-missing-indices
            ${occ}/bin/nextcloud-occ db:add-missing-primary-keys
          '';
          serviceConfig = {
            Type = "exec";
            User = "nextcloud";
            ExecCondition = "${lib.getExe phpPackage} -f ${webroot}/occ status -e";
          };
        };
      };

      services.phpfpm = {