Upgrading Nextcloud across several major versions

An old Nextcloud cannot jump straight to a current release, so each major version must be reached in turn with its own PHP, database and app checks. This page explains the path, the preparation, the sequence and what drives the effort.

On this page

How to upgrade Nextcloud across several major versions without skipping one

Nextcloud does not allow skipping major releases, so an installation several majors behind has to move one major version at a time. Each hop must be completed, tested and backed up before the next one begins. The starting point is often unclear: the team may not know which third-party apps are installed, whether those apps still support the current release, or when the last verified backup was taken. Before changing anything, record the installed Nextcloud version, the PHP version, the database engine and version, the web server, and every app with its version and source. This inventory is the first deliverable, because it determines how many hops are needed and which apps could block them.

The target version matters because Nextcloud publishes a new major release every four months and supports each one for one year through monthly maintenance releases. The version you land on therefore sets how long you have before the next forced upgrade. According to Nextcloud's maintenance and release schedule, Nextcloud 33 is supported until February 2027, Nextcloud 34 until June 2027, and Nextcloud 35 (Hub 26 Summer), released on 16 September 2026, reaches end of life in September 2027. Nextcloud 36 (Hub 27 Winter) is scheduled for 17 February 2027. Confirm these dates against the schedule on the day you plan, since they can change. Then ask a concrete question: how long must this installation stay supported after cutover, and which release meets that requirement?

For each hop, run the same loop. Check the system requirements for that target release, including the PHP, database and operating system minimums, and upgrade those components first while the server stays on the current Nextcloud version. Take a fresh backup and confirm it can be restored. Disable all third-party apps, run the upgrade step described in the administrator manual, and then re-enable each app only after its developer confirms compatibility with the new release. Test the result with a real user account: log in, sync a file with a desktop client, share a file, and confirm that background jobs are running. Record what passed and what failed before starting the next hop, so every step has a documented rollback point.

Two decisions shape the plan. First, run every hop first on a staging copy restored from a production backup, so app and database problems appear before users are affected. Second, decide who approves each cutover and who makes the call to roll back. If the organization needs a longer support period after the final hop, ask the vendor to explain the maintenance terms. Nextcloud's pricing page describes Standard as including one year of maintenance and Premium as adding a maintenance lifecycle of five or more years, so the choice of edition is part of the upgrade scope, not a separate purchase decision to make later.

What changes across the Nextcloud releases in the upgrade path

This table lists the release facts that shape a multi-version Nextcloud upgrade: the release rhythm, support windows, end-of-life dates and the platform requirements for Nextcloud 35. Read each row as a constraint on the path you choose. The main takeaway is that every version you pass through has a finite support window, so set the target release and the database, PHP and web server steps before you start the first upgrade.

ChangeImpactAction needed
Four-month release cycleNextcloud publishes a new major version every four months, so several majors can ship between your current release and your target.Check the release schedule on the day you plan, and pick a target that will still be supported when the work finishes.
One year of support per majorEach major version receives monthly maintenance releases for known critical bugs and security problems for one year only.Confirm the end-of-life date of your current version before scoping the path.
Nextcloud 33 end of life, February 2027Instances still running Nextcloud 33 stop receiving maintenance releases after this month.If you start on 33, plan the 33 step promptly and review the 32 to 33 upgrade page for version-specific removals.
Nextcloud 34 end of life, June 2027Instances still running Nextcloud 34 stop receiving maintenance releases after this month.If your path passes through 34, schedule that step well before June 2027.
Nextcloud 35 end of life, September 2027Nextcloud 35 was released on 16 September 2026 and is supported until September 2027.Review the 34 to 35 upgrade page for removals and app compatibility checks before the jump.
Nextcloud 36 scheduled dateNextcloud 36 (Hub 27 Winter) is scheduled for 17 February 2027.Confirm the date against the maintenance and release schedule before you choose the final target.
Nextcloud 35 databaseRecommended: MariaDB 11.8 or PostgreSQL 18. Supported: MariaDB 10.11 to 12.3, PostgreSQL 14 to 18, MySQL 8.4 or 9.7.Confirm your database version is in the supported range, and plan any database upgrade as a separate step before the Nextcloud jump.
Nextcloud 35 PHP and web serverRecommended: PHP 8.5. Supported: PHP 8.3 and 8.4. Web server: Apache 2.4 or nginx with php-fpm.Plan PHP and web server upgrades between major steps, and test each third-party app on the new PHP version.
Oracle DatabaseOracle Database is available only with an enterprise subscription.Confirm your licensing before choosing a path that keeps Oracle as the database.

Why Nextcloud upgrades cannot skip a major version

Nextcloud does not allow skipping major releases, so an administrator on an old installation has to move through each major version in order. Start by recording the installed version and the target version, then list every major release between them. That list becomes the plan's backbone, because the PHP, database and app decisions for each step depend on which release is in front of you. Treat the number of hops as a planning input that is known before the first change, not a surprise found during the work. Any partner quoting this work should be able to show the version-by-version sequence in the written scope.

The reason is mechanical. Each major release ships database schema changes and upgrade steps written against the release before it. When the upgrade runs, those steps are applied in sequence, and each one assumes the state that the previous release would have left behind. If you jump from an older release straight to a newer one, the steps for the versions in between never run. The database and the application code then describe different systems, and the recovery is difficult because you are repairing a partly migrated schema with code that expects a state it never reached. Check the upgrade manual for each step rather than relying on memory of earlier releases.

Each intermediate release is also a rollback point, and that is the practical reason for the one-hop rule. A backup taken before a given major upgrade captures the database, the data directory and the configuration as they were on that version. If a step fails, you restore that backup, fix the blocker and retry the step, instead of trying to reverse schema changes by hand. Back up before every upgrade, not only before the first one, and test a restore on a separate system so you know the backup is usable. Record which backup belongs to which version so a restore never mixes data from one release with code from another.

Third-party apps need the same discipline. Disable each app until its maintainer confirms it works with the release you are moving to, because apps depend on internal interfaces that can change between majors. Keep an inventory with each app's version, source, maintainer and compatibility status for every target version. Re-enable apps one at a time after each step and confirm they work before moving on. Also check the support window: each major release is supported for about one year through monthly maintenance releases, so a deployment several majors behind may already be outside support. Confirm current dates on the maintenance and release schedule before fixing the target.

What a Nextcloud upgrade needs before the first step runs

Four preparation areas decide whether each major step can be rolled back and repeated. Each one has a named owner in the client team and an output that must exist before the first upgrade runs. Work through them together so the backups, app list, customization record and staging copy all describe the same installation.

Verified backup of files, database and configuration

Before any step runs, take a backup of the data directory, a database dump taken with the instance in maintenance mode, and a copy of the config directory, including config.php and any additional config files. A backup counts only after a restore has been tested on a separate host, so confirm that the instance can be rebuilt from it. Nextcloud requires a backup before every major upgrade, so this set is repeated at each step. The database administrator and the infrastructure owner should share this responsibility.

Inventory of third-party apps

List every installed app with its version, publisher and enabled state, using the occ app list output as the source. For each app, record its compatibility status for the target major version from the app store listing or the vendor, and name the person who will test it on staging. Nextcloud's guidance is to disable third-party apps until they are confirmed compatible, so this inventory decides which apps stay off during each step. The platform owner maintains the list, and business owners sign off on apps their teams depend on.

Record of customizations

Document every change made outside the standard install: reverse proxy rules in the web server or load balancer, custom themes and branding, external storage mounts, LDAP or SSO settings, background job setup, and any custom scripts. For each item, record where it lives, who built it and how to test it after an upgrade. These items are often missed during a rebuild because they sit outside the core configuration. The infrastructure team owns proxy and mount records, and the application owner owns theme and branding records.

Staging environment built from production

Build a staging instance from a copy of production data, configuration and app set, running the same PHP, database and web server versions as production. Keep it off the public network and disable outbound email and sync clients so test runs do not reach real users. Use it to run each upgrade step, test apps and customizations, and record how long each step takes. The platform team owns the environment, and a named application owner confirms that staging matches production before the first step runs.

Choosing the intermediate versions and the target release

Plan the hop list before any server is touched. Nextcloud does not allow skipping major releases, so the route from your current version to the target is a sequence of majors, each upgraded in its own cycle with a backup taken first. Start by reading the release schedule and listing every major between your installed version and the target, with the end-of-life date for each one. Nextcloud publishes a new major every four months and supports each for one year through monthly maintenance releases, so an old installation can easily require several steps. Record the PHP, database and web server requirements of each intermediate version as well, because those change from one major to the next and often determine the order of the work.

The target should be chosen with end-of-life dates in view. According to the published schedule, Nextcloud 33 is supported until February 2027, Nextcloud 34 until June 2027, and Nextcloud 35, released on 16 September 2026, reaches end of life in September 2027. Nextcloud 36 is scheduled for 17 February 2027. A target that is already close to its end-of-life date forces another full upgrade cycle within months, so count the time between your planned cutover and the next end-of-life date. Ask whether the upgrade window, app testing and sign-off will finish well before that date. Confirm each date on the current schedule, because the schedule can change after publication.

Support terms differ between the community release and the Nextcloud Enterprise tiers, and that difference affects how many hops you need to plan. The community release receives monthly maintenance for each major for one year, so a community target is only as long-lived as its own support window. Nextcloud Enterprise is sold in Standard, Premium and Ultimate tiers with a 100-user minimum. According to Nextcloud's pricing page, Standard includes one year of maintenance. Premium adds a maintenance lifecycle of five or more years, extended support hours and clustered instance support. Ultimate adds support up to 24/7 with response times down to one hour. If your organization needs a maintenance lifecycle longer than one year, that points toward Premium, so the decision should be made before the target is fixed. Confirm current tier terms with Nextcloud before deciding, because terms and minimums can change.

Turn these decisions into a written hop list that your change board can approve. For each step, record the source version, the target version, the end-of-life date, the required PHP and database versions, the web server, and the third-party apps that must be confirmed before the step runs. Take a restore point before each hop, not only before the first one. Assign owners for the tier decision, for app compatibility confirmation, and for signing off each intermediate version before the next one starts. Where a tier question remains open, put it to Nextcloud in writing and keep the plan flexible enough to add a hop if a dependency blocks an intermediate version.

The upgrade sequence for each major version hop

Each hop follows the same controlled cycle: back up, confirm requirements, update the runtime, upgrade one major version, restore apps and verify. Every hop leaves a tested rollback point so the next hop starts from known good state.

  1. Take a fresh backup before the hop

    Before touching the server, the administrator takes a new backup of the data directory, the database and the configuration, and confirms the backup can be restored. Nextcloud's upgrade documentation calls for a backup before every upgrade, so this step is never skipped, even when the previous hop finished cleanly. Done means a backup exists with a timestamp, covers files, database and config, and a restore test has been performed on a separate host or in a staging copy. Record the backup location and the Nextcloud version it was taken from.

  2. Confirm target version requirements

    The team checks the system requirements published for the target major version and compares them with the current PHP, database, web server and operating system. Each hop may drop a PHP version, a database version or an operating system release, so the minimums must be read for the specific target, not carried over from the last hop. The check is complete when every component is either already at or above the stated minimum or has a dated change request scheduled ahead of the hop. Ask the vendor or the official documentation to confirm any component not covered by the requirements page.

  3. Update PHP, database and web server

    The platform team upgrades the runtime components that the target version requires, such as PHP, the database server and the web server or php-fpm pool, while Nextcloud still runs the previous major version. The application is kept on the current release during this step so a runtime problem can be separated from an application problem. Verification means Nextcloud loads and the occ status command reports the expected PHP and database versions, with no new errors in the web server and Nextcloud logs. If the runtime change fails, roll back the runtime package to the recorded state before continuing.

  4. Disable third-party apps

    Before the core upgrade starts, the administrator disables every app that is not part of the core distribution, using the occ app commands or the admin app management page. Nextcloud's documentation advises disabling third-party apps until they are confirmed compatible with the target version. The list of disabled apps, with their versions, is saved so they can be re-enabled later in a known order. Done means the app list shows only core apps as enabled and the list is recorded. Users may lose features during the hop, so communicate the window in advance.

  5. Run the major upgrade

    The administrator runs the upgrade with the documented occ upgrade command, or with the web updater where the deployment supports it, and watches the output for migration errors. The command should be run as the web server user from the Nextcloud directory, with maintenance mode enabled. Completion is shown by the command reporting success and the server leaving maintenance mode, followed by a check that the version reported by occ status matches the single target major version. If the upgrade stops partway, restore from the backup taken in the first step instead of re-running migrations by hand.

  6. Re-enable apps one at a time

    Each disabled app is re-enabled individually, starting with the apps the team considers most important, and the server is checked after each one. An app is only kept enabled if its version is confirmed compatible with the new Nextcloud major version, either by the app's own documentation or by a test in staging. Apps that fail or have no compatible release stay disabled, and the owner is told what is missing. Done means every app is either enabled and confirmed, or documented as blocked with a planned fix.

  7. Run integrity and smoke tests

    The team runs the Nextcloud integrity check with occ, reviews the server log for new errors, and performs a short set of user tasks: log in, upload and download a file, share a file, sync a desktop client and open a shared document. These tests are run by an administrator and one or two named users on the target host. The hop passes when the integrity check reports no problems, the log shows no new fatal errors, and each test task succeeds. Record the results with the date and the version tested.

  8. Record a rollback point and repeat

    Once a hop passes, the team takes a backup labeled with the new version and stores the configuration, app list and runtime versions alongside it. This becomes the rollback point for the next hop. The cycle then repeats from the first step with the next major version, until the installation reaches the target release. Done means a labeled backup of the completed hop is stored and verified, and the next target version has been chosen from the release schedule. The final hop is followed by the same checks, extended to full application testing.

How to test each hop and roll back when it fails

Each hop needs its own test run, executed on a staging copy before production and repeated after the upgrade, using the same accounts and data set each time. The set should cover login through the identity method you chose, whether that is local accounts, LDAP and Active Directory through the LDAP app, or OpenID Connect or SAML backends. It should also cover file sync from desktop and mobile clients, public and password-protected sharing links, calendar and contacts, external storage mounts, and background jobs, which you can confirm are running in the admin overview. Finally, test every app your organization depends on, following the workflow a real user would take. Write the expected result for each case before the hop starts, so pass or fail is decided in advance rather than under pressure.

Rollback means restoring the backup taken immediately before the failed hop, with files and database restored together from that same point in time. Put the previous PHP and web server configuration back at the same time, because the application code and the runtime it expects must match the restored data. The most damaging mistake is a partial restore, such as putting back the data directory while keeping the current database, or the reverse. File records, share entries and file cache rows then point to objects that no longer exist, and the errors can surface days later as missing files or broken shares. Treat the pair as one unit in your runbook. Confirm restore timing in your own environment by rehearsing a full restore on a copy, because duration depends on your data volume, storage and database engine, and no general figure applies.

Before each hop, decide the go or no-go conditions and who makes the call. Confirm that third-party apps are disabled, since Nextcloud requires this until each app is confirmed compatible with the target release, and re-enable them only after the core checks pass. Check the target release's system requirements for PHP, database and web server versions, and confirm that your desktop and mobile client versions still work against the new server, using the vendor's compatibility notes for each client. Make the rollback cutoff explicit: once users have written new data on the upgraded instance, returning to the old backup discards that work, so agree the cutoff with the business owner before the window opens. Record every failed test with its reproduction steps.

After the last hop, keep the backups from each step until the final release is verified in production and your retention policy allows deletion. Repeat the full test set on the final version as well, because an issue introduced in an earlier hop can appear only after later apps and settings are applied. Ask any partner or internal team quoting this work to show the test scripts, the rollback runbook and the rehearsal results they will deliver, and to state which tests are included in the fixed scope. Confirm with your own team who can execute a restore out of hours, how long they expect it to take in your environment, and whether that matches the outage window agreed with the business.

What makes a multi-version Nextcloud upgrade take longer

This table lists the factors that lengthen a multi-version Nextcloud upgrade and how each one changes the work. Read each row as a question to answer about your installation before estimating effort. The main takeaway is that every extra major hop repeats the work in the other rows, so confirm your current version, app inventory and database before planning the sequence.

DriverEffect on effortWhat to check
Number of major hopsEach hop repeats the full cycle of backup, PHP and database checks, upgrade, app checks and testingYour current version and the one-major-at-a-time sequence to the target release
Third-party appsApps that lag behind a release block the next hop and often need updates or removal firstEach app's stated compatibility for every intermediate version, and whether the app is still maintained
File store and database sizeLarger data sets lengthen full backups, restore tests and the background data steps that run during upgradesTotal file store size, database size and how long a full backup and restore test takes in your environment
Custom integrations (LDAP, OIDC, SAML)Each hop is a point to retest LDAP, OIDC and SAML sign-in, so every configured backend adds test work per hopTest-user login on each backend, group membership sync and attribute mapping after every hop
Database engine and versionA database version outside the target release's supported range requires migration before or during the upgradeYour engine and version against the target release's supported list in the Nextcloud system requirements
Staging environment with production-sized dataWithout staging, each hop is first tested on production, which raises rollback risk and the length of any outageWhether a copy of production data and configuration can be restored and upgraded before production work starts

Questions buyers ask about the cost and effort of a Nextcloud upgrade

What drives the cost of a multi-version Nextcloud upgrade?

The cost follows the number of upgrade steps, the condition of the environment and the apps involved. Nextcloud does not allow skipping major releases, so an installation several versions behind needs one upgrade per major version, each with its own backup, verification and rollback point.

Main cost drivers:

  • The number of hops between your installed release and the target
  • PHP and database changes that each hop requires
  • The number and condition of third-party apps
  • The size of the data set that must be backed up and restored
  • The number of environments to move, such as production, staging and any clustered nodes

Labor is the largest component. New servers, database hosts or network changes are separate costs. Ask any quote to list each hop, app and environment. Pricing follows from the written scope.

How long does a Nextcloud upgrade across several versions take?

Duration depends mainly on how many major versions sit between your installed release and the target, and on how many apps must be tested at each step. Each major version is a separate cycle: prepare, back up, upgrade, check the apps, and confirm users can work before moving on.

Nextcloud publishes a new major version every four months, so an installation several releases behind has several cycles to complete. Change windows also set the pace, because they limit how many hops can run in a given period. DeployOpen does not publish durations in advance. Ask for a per-hop schedule with a testing gate for each hop, and confirm with your operations team which change windows are available.

Why does the number of third-party apps change the upgrade timeline?

Each third-party app has its own compatibility range, so every hop requires a check of the full app list. Nextcloud's upgrade guidance is to disable third-party apps until they are confirmed compatible with the new release.

An app that is abandoned, forked or built against an old interface can block a hop until it is replaced, patched or removed. Test time grows with the number of apps and with how much business process depends on each one. Before scoping, inventory every app with its version, owner and business function, then classify each as required, optional or retire. That inventory is usually the fastest way to see where the schedule risk sits.

What must our team provide before an upgrade partner starts work?

The client provides access, decisions and people. Without them, hops stall.

Typical client responsibilities:

  • Administrative access to the Nextcloud server, database, web server, PHP runtime, hosting platform and backup tooling
  • A named backup owner who confirms that backups exist, are restorable and are stored where policy requires
  • An owner for each third-party app who can confirm its purpose and accept a replacement or removal
  • Test users from each department who can check files, sharing, sync clients and any integrations after each hop
  • Approved change windows and an escalation contact for each window
  • A sign-off authority who accepts each hop and the final release

Confirm these roles in the written scope so that responsibilities are visible before the first hop.

Can our in-house team upgrade Nextcloud across several versions without outside help?

Yes, an in-house team can do the work if it has the skills, the time and the test coverage. The method is documented: upgrade one major version at a time, back up before every upgrade, and disable third-party apps until they are confirmed compatible.

The difficulty is usually capacity and repetition, not the commands. Each hop needs preparation, a backup restore test, app checks and user validation, and the release cadence means the same cycle repeats. Teams that run the upgrade alongside daily operations often find that hops slip. Ask whether your team can staff a full cycle for each hop, whether it can keep a rollback path ready, and whether anyone has performed a major Nextcloud upgrade before. If the answers are uncertain, a fixed-scope engagement can cover the parts you want to hand over.

What does a fixed-scope Nextcloud upgrade quote actually include?

A fixed-scope quote lists the hops, environments, apps, deliverables, acceptance checks and client responsibilities, all agreed in writing before work starts. Most DeployOpen engagements are fixed-scope, so the scope document is the basis for the quote.

A useful quote states what is excluded as clearly as what is included. Typical exclusions are hardware, network changes, replacement or custom development for apps that cannot be upgraded, and support after the target release. Ask for each hop to be listed with its checks, the backup and restore test, the handover documentation and the acceptance criteria. DeployOpen does not publish a price list. Pricing follows from the written scope, so a clearer scope produces a more accurate quote.

Do we still need ongoing support after reaching the target Nextcloud release?

Usually yes, because support windows are short and the release cadence continues. Nextcloud supports each major version for one year through monthly maintenance releases that address known critical bugs and security problems.

According to Nextcloud's release schedule, Nextcloud 33 is supported until February 2027, Nextcloud 34 until June 2027, and Nextcloud 35 (released 16 September 2026) reaches end of life in September 2027. Nextcloud 36 is scheduled for 17 February 2027. A target release therefore needs a plan for the next hop. Ongoing support, upgrades and continuous testing are available as retainers. Decide before the project closes whether your team or a retainer will apply the monthly maintenance releases and plan the next hop.

Does Nextcloud Enterprise maintenance replace the upgrade work?

No. Vendor maintenance covers patches and support from Nextcloud GmbH. It does not perform your upgrade across versions, test your apps or move your data. Nextcloud sells Enterprise alongside the community version, with Standard, Premium and Ultimate tiers.

According to Nextcloud's pricing page, Standard includes 1-year maintenance, Premium adds a maintenance lifecycle of 5 or more years with extended support hours and clustered instance support, and Ultimate adds support up to 24/7 with response times down to 1 hour. Enterprise is sold per user with a 100-user minimum, and list prices start at 71.29 euros per user per year for Standard at 100 or more users. Confirm the subscription terms and your user count with Nextcloud before comparing them with the upgrade scope.

How DeployOpen scopes, delivers and supports a Nextcloud upgrade

DeployOpen treats a multi-version Nextcloud upgrade as a sequence of planned, separately verified steps inside your own infrastructure. Each hop moves one major version forward, with a backup taken before it, third-party apps checked for compatibility, and the database and PHP runtime aligned to the release requirements before the next step begins.

How we scope

  • Inventory the current version, PHP, database, operating system and web server before agreeing any upgrade path.
  • Map every intermediate major release, since Nextcloud does not allow skipping major versions during upgrades.
  • Review each installed third-party app for compatibility with every target release and list any that need replacing or removal.
  • Confirm the written scope covers each hop, backup checkpoints, test environments and the rollback approach agreed with your team.

How we build

  • Run each upgrade step first in a staging copy built from a current production backup, not directly on production.
  • Upgrade PHP and the database to the versions each intermediate Nextcloud release requires before moving the server forward.
  • Disable third-party apps before each hop and re-enable them only after confirming they are compatible with the new release.
  • Test logins, file sync, sharing, external storage and any directory or single sign-on integration after every major step.

How we hand over

  • Document the exact sequence of versions, runtime changes, app decisions and backup points used during the upgrade.
  • Provide a runbook for the next upgrade, covering pre-checks, backup restoration tests and post-upgrade verification.
  • Record known issues, deferred app removals and follow-up actions with named owners on your side.

How we support

  • Ask whether your team will need ongoing support, upgrades and continuous testing, which DeployOpen offers as a retainer.
  • Agree in writing how the retainer covers monthly maintenance releases and the next major version planned for your environment.
  • Confirm response expectations and maintenance windows with DeployOpen before the engagement starts, since these depend on the agreed scope.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.