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 guide refers to the existing machine as the source server and the newly launched machine as this server. Run the migration command on the new server; it does not need to be configured first.
The source must be a server or combined server + worker. The wizard
selects one of those roles for this server. A worker-only machine contains
temporary processing files rather than the complete API database, so it cannot
be used as the migration source.
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 a new server from the latest Marketplace image.
Do not run
config-openshot-cloudon the new server. The migration copies compatible configuration from the source and asks you to confirm the new server’s role and URLs.Keep the source running and reachable from the new server over its private network address.
Make sure the new server has enough disk space for the database dump, staged media, and a backup of its initial data.
Create an SSH key on the new server if needed, and add its public key to the
ubuntuaccount on the source server:# Run on the new server ssh-keygen -t ed25519 cat ~/.ssh/id_ed25519.pub
Append the displayed public key to
~ubuntu/.ssh/authorized_keyson the source server. The wizard will print the key and retry instructions if its first connection attempt fails.
Start the guided migration
Run the wizard on the new server:
sudo migrate-openshot-cloud
The command is available from any directory. The wizard asks for the source server’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
Safely move configuration, PostgreSQL data, and media to this server
================================================================
Source server private IP or hostname: 10.0.1.24
Working directory: /var/lib/openshot-cloud/migrations/20260808-195322
Connect to source server
------------------------
Connecting to ubuntu@10.0.1.24 ...
✓ SSH connection established
Source inventory
----------------
Operating system: Ubuntu 18.04.6 LTS
OpenShot version: 2.3.0
Role: both
Cloud provider: AWS (diagnostic)
PostgreSQL: 10.23
Settings: /home/ubuntu/api/api/settings/production-AWS.py
Database: openshot_cloud
Transfer database
-----------------
Creating a PostgreSQL dump on the source server ...
Transfer media
--------------
Synchronizing files and exports (safe to resume) ...
Configuration plan
------------------
Destination: api/settings/production-AWS.py
Role: both (copied from source)
CLOUD_PASSWORD: <redacted>
AWS_ACCESS_KEY_ID: <redacted>
AWS_REGION_NAME: us-east-1
Validate staged migration
-------------------------
✓ Database validation passed: users=8 projects=3 files=4 clips=3 effects=0 exports=0
✓ Media validation passed: media_references=4 local=4 cloud_backed=0 missing=0
Ready to update this server
---------------------------
Temporary database: openshot_migration_20260808_195322
Staged media: /var/lib/openshot-cloud/migrations/20260808-195322/video
Type MIGRATE to replace this server's database and media: MIGRATE
Migration complete
------------------
✓ This server was updated successfully
The exact output varies by OpenShot release, cloud provider, media layout, and selected settings. Provider-specific values that do not apply to the new server are listed and skipped.
Validation and promotion
The source server operates normally throughout staging. The wizard restores
its database into a temporary database on this server, applies current
migrations, and checks media references. It does not run integration tests
before promotion because both servers may still share an export queue. This
server’s active database and media are not replaced until validation succeeds
and you type MIGRATE (case-insensitive).
During promotion, this server’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 migrate-openshot-cloud --resume <migration-id>
Use --no-promote to stage and validate without updating this server.
See every supported migration option at any time with:
migrate-openshot-cloud --help
After promotion, give this server a queue that is not shared with the source. For AWS and Azure, update only the queue setting and restart OpenShot services with one command:
config-openshot-cloud --queue-name NEW-QUEUE-NAME
To change only this server’s canonical public API origin and restart the services for its configured role, run:
config-openshot-cloud --http-host https://api.example.com
The URL must be a complete origin (for example, https://api.example.com),
without a path, query string, or fragment. To see both focused configuration
options and examples, run:
config-openshot-cloud --help
Then run the API integration tests from /home/ubuntu/api:
python3 manage.py runtests
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 the new server
For a manual migration, run config-openshot-cloud on the new server first.
Configure its cloud credentials, queue, role, and URLs deliberately. Avoid
sharing a queue between the source and new servers while both are processing
jobs. This manual-only step is not needed by the guided migration.
Copy media
From the new server, pull the authoritative media directories from the source.
Replace SOURCE-SERVER with its private address:
cd /home/ubuntu/api
rsync -az --partial --info=progress2 \
ubuntu@SOURCE-SERVER:/home/ubuntu/api/video/files/ video/files/
rsync -az --partial --info=progress2 \
ubuntu@SOURCE-SERVER:/home/ubuntu/api/video/output/ video/output/
sudo chown -R ubuntu:www-data video/files video/output
If the source uses symbolic links to mounted storage, verify and copy the linked contents rather than recreating an absolute link that is invalid on the new server.
Export and import the database
As a compatibility fallback, create a Django data export on the source server:
cd /home/ubuntu/api
python3 manage.py dumpdata --exclude contenttypes > backup.json
rsync -az backup.json ubuntu@NEW-SERVER:/home/ubuntu/api/
On the new server, 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 the new server’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.