Files
nextcloud-selfhosted/migration.md

2.5 KiB

Migration Plan: Bare-Metal Nextcloud to Docker

Fresh Docker install with manual re-upload via Nextcloud client. Old setup: bare-metal Nextcloud (MySQL) at t-gstone.de/nextcloud. New setup: Docker-based Nextcloud (PostgreSQL) at nextcloud.t-gstone.de.

Before Migration

1. Export Calendars and Contacts from Old Instance

These live in the database and won't carry over automatically:

  • Calendars: Go to Calendar app > Settings (bottom-left) > click ... next to each calendar > Export (downloads .ics)
  • Contacts: Go to Contacts app > Settings (bottom-left) > click ... next to each address book > Export (downloads .vcf)

Also export any other DB-only app data you care about (Notes, Deck boards, Bookmarks, etc.).

2. Create DNS Record

Add an A record for nextcloud.t-gstone.de pointing to your VPS IP. Do this early so DNS propagates.

3. Deploy Fresh Docker Setup

# Clone repo on VPS, configure .env files
cp .env.example .env          # set DOMAIN and DATA_ROOT
cp nextcloud/.env.example nextcloud/.env  # set DB creds, admin user, redis password
cp gitea/.env.example gitea/.env
cp monitoring/.env.example monitoring/.env

# Deploy
./scripts/deploy.sh

Verify the fresh instance works at https://nextcloud.t-gstone.de.

4. Re-Upload Files via Nextcloud Client

  • Install the Nextcloud desktop client
  • Point it to https://nextcloud.t-gstone.de
  • Sync your files from your local machine

5. Re-Import Calendars and Contacts

  • Calendars: Calendar app > Settings > Import > select the .ics files
  • Contacts: Contacts app > Settings > Import > select the .vcf files

6. Verify

  • Files are complete and accessible
  • Calendars show all events
  • Contacts are intact
  • Sharing works
  • Mobile apps connect successfully

7. Decommission Old Instance

Once satisfied:

  1. Shut down old bare-metal Nextcloud
  2. Optionally redirect t-gstone.de/nextcloud to nextcloud.t-gstone.de
  3. Update all Nextcloud clients on your devices to the new URL
  4. Keep the old data/DB dump as a backup for a few weeks before deleting

What Won't Carry Over (DB-only data)

These are stored in the MySQL database, not in files. Export before shutting down the old instance if you need them:

  • Calendars / Contacts (CalDAV/CardDAV) — export as .ics/.vcf
  • Share links and shared folder structures
  • Notes, Deck boards, Bookmarks, Talk history
  • App settings and configurations
  • Activity log / file versioning metadata