Upgrade | Migrate
To upgrade OpenShot Cloud API, launch a new instance from the latest Marketplace
image and migrate your existing data to it. The guided
migrate-openshot-cloud utility walks you through the process one step at a
time. It safely moves data from the old server, supports historical OpenShot
releases, checks the migrated system before it goes live, and leaves the old
server unchanged.
See Release Notes when deciding whether a new release contains an upgrade you need.
Migration terminology
The migration wizard uses two short names throughout the process:
Instance A is the old OpenShot Cloud server containing your existing database, videos, exports, and configuration.
Instance B is the newly launched and configured OpenShot Cloud server. Run the migration command from this instance.
Both instances must be a server or combined server + worker. A
worker-only instance contains temporary processing files rather than the
complete API database, so it cannot be used for this migration.
What gets migrated
The guided migration handles the related pieces together:
your users, projects, and editing data from the OpenShot database;
uploaded files and completed exports in
video/filesandvideo/output;EFS-style symbolic links by copying the linked directory contents;
compatible, configured API and cloud settings;
the public and internal API URLs, after confirmation;
optional
serverorserver + workerrole changes, including the corresponding Apache and Supervisor configuration.
Secrets are never printed in full. The preview reports whether credentials are configured while showing useful non-secret values such as usernames, regions, queues, buckets, paths, and URLs.
Before you begin
Launch instance B from the latest Marketplace image.
Configure B normally with
config-openshot-cloud. Its current role is preserved by default during migration.Keep A running and reachable from B over its private network address.
Make sure B has enough disk space for the database dump, staged media, and a backup of B’s initial data.
Create an SSH key on B if needed, and add its public key to the
ubuntuaccount on A:# Run on instance B ssh-keygen -t ed25519 cat ~/.ssh/id_ed25519.pub
Append the displayed public key to
~ubuntu/.ssh/authorized_keyson A. The wizard will print the key and retry instructions if its first connection attempt fails.
Start the guided migration
Run the wizard on instance B:
cd /home/ubuntu/api
sudo utilities/migrate-openshot-cloud
The wizard asks for A’s private IP address, verifies SSH, discovers the old layout, and explains each major operation before running it. A typical session looks like this:
OpenShot Cloud API Migration
Instance A private IP or hostname: 10.0.1.24
Connecting to ubuntu@10.0.1.24 ... connected
Source: Ubuntu 18.04.6 LTS
OpenShot: 2.3.0
Role: both
PostgreSQL: 10.23
Settings: /home/ubuntu/api/api/settings/production-AWS.py
Database: openshot_cloud
Creating a PostgreSQL dump on instance A ... done
Synchronizing video/files ... done
Synchronizing video/output ... done
Restoring temporary database ... done
Applying current Django migrations ... done
Integration tests passed.
Configuration plan for B:
Role: both (preserved from B)
CLOUD_USERNAME: cloud-admin
CLOUD_PASSWORD: <redacted>
AWS_ACCESS_KEY_ID: <redacted>
AWS_SECRET_ACCESS_KEY: <redacted>
AWS_REGION_NAME: us-east-1
CLOUD_HTTP_HOST: https://video.example.com
READY TO PROMOTE
Type MIGRATE to replace B's default database and media: MIGRATE
Migration complete.
The exact output varies by OpenShot release, cloud provider, media layout, and selected settings. Provider-specific values that do not apply to B are listed and skipped.
Validation and promotion
A performs normally throughout staging. The wizard restores its database into
a temporary database on B, applies current migrations, checks media references,
and runs the API integration suite there. B’s active database and media are not
replaced until validation succeeds and you type MIGRATE.
During promotion, B’s original database, media, and settings are backed up in:
/var/lib/openshot-cloud/migrations/<migration-id>/
If discovery, transfer, restore, or validation fails, the wizard stops and
prints the location of migration.log. Interrupted media transfers can be
continued without starting over:
sudo utilities/migrate-openshot-cloud --resume <migration-id>
Use --no-promote to stage and validate without replacing B. Use
--skip-integration-tests only when the isolated API and worker tests cannot
run in the destination environment.
Manual migration
Use this fallback only when the guided migration cannot handle a customized or damaged installation and its error message identifies work that must be done manually. Take independent backups before continuing. Manual migration does not provide the wizard’s temporary restore, compatibility checks, resumable state, or automatic rollback.
Configure instance B
Run config-openshot-cloud on B first. Configure its cloud credentials,
queue, role, and URLs deliberately. Avoid sharing a queue between A and B while
both are processing jobs.
Copy media
From B, pull the authoritative media directories from A. Replace
INSTANCE-A with its private address:
cd /home/ubuntu/api
rsync -az --partial --info=progress2 \
ubuntu@INSTANCE-A:/home/ubuntu/api/video/files/ video/files/
rsync -az --partial --info=progress2 \
ubuntu@INSTANCE-A:/home/ubuntu/api/video/output/ video/output/
sudo chown -R ubuntu:www-data video/files video/output
If A uses symbolic links to mounted storage, verify and copy the linked contents rather than recreating an absolute link that is invalid on B.
Export and import the database
As a compatibility fallback, create a Django data export on A:
cd /home/ubuntu/api
python3 manage.py dumpdata --exclude contenttypes > backup.json
rsync -az backup.json ubuntu@INSTANCE-B:/home/ubuntu/api/
On B, adapt older JSON schemas and load the result:
cd /home/ubuntu/api/utilities
python3 migrate_backup_json.py
cd /home/ubuntu/api
python3 manage.py loaddata -e authtoken.Token backup-fixed.json
For PostgreSQL-level backup and restore, use the commands appropriate for the exact PostgreSQL versions involved. Restore into a temporary database and test it before replacing B’s configured database.
Support
If the guided utility stops and the manual path is unclear, contact cloud-support@openshot.org with the OpenShot versions, the final error, and the redacted migration log. OpenShot Studios can also provide a quote for assisted migration or patching.