Skip to main content

Upgrading from OSS to Cloud Edition

If you're running the open-source edition of Kuploy and want to add multi-tenant billing, licensing, and quota enforcement, you can upgrade to the Cloud edition in-place.

Prerequisites​

Before upgrading:

  1. Get a license — Sign up at kuploy.app and create a license
  2. Create a Stripe account — Required for billing your users (see Cloud Billing Setup)
  3. Back up your database — Always back up before major changes
# Backup current database
kubectl exec -it postgresql-0 -n database -- pg_dump -U kuploy kuploy > backup-pre-upgrade.sql

Upgrade Steps​

1. Run the Upgrade​

# Upgrade from OSS to Cloud
python deploy.py --edition cloud --domain console.example.com

# Watch rollout
kubectl rollout status deployment/kuploy -n kuploy

The deployer will prompt you for Cloud-specific configuration:

  • STRIPE_SECRET_KEY — Your Stripe API secret key
  • STRIPE_WEBHOOK_SECRET — Stripe webhook signing secret
  • BETTER_AUTH_SECRET — Authentication secret (32+ characters)
  • LICENSE_KEY — Your license key from kuploy.app
  • PLATFORM_ADMIN_EMAIL — Email of the first platform admin

After the upgrade completes, link your instance to your license. See Licensing for claim code or manual configuration options.

3. Configure Billing​

Set up Stripe products and plans for your users. See Cloud Billing Setup for the full walkthrough.

4. Verify the Upgrade​

# Check the running image
kubectl get deployment kuploy -n kuploy -o jsonpath='{.spec.template.spec.containers[0].image}'

# Should show: ceduth/kuploy-cloud:latest

# Check pods are running
kubectl get pods -n kuploy

Database Migrations​

kuploy-cloud runs database migrations automatically on every container startup, before the app starts. The Docker entrypoint runs:

  1. Kuploy core migrations — schema changes for the base platform
  2. Cloud-server migrations — schema changes for billing, plans, and subscriptions

You do not need to run any manual migration commands. When you deploy a new version, the pod startup handles schema changes before accepting traffic.

Pre-upgrade checklist
  1. Back up your database (see Prerequisites above)
  2. Deploy the new image — migrations run automatically
  3. Watch the pod logs for Running cloud-server database migrations...
  4. If a migration fails, the container exits with code 1 — your previous pod keeps running
Don't apply schema changes by hand

kuploy-cloud shares one database with kuploy core, and the schema-push tooling shipped with these frameworks only knows about half of it — pointing it at a production database drops the other half. The startup migration runner is the only supported path, and it needs nothing from you.

What Changes​

AspectOSSCloud
Container imageceduth/kuploy:latestceduth/kuploy-cloud:latest
BillingNoneStripe-based subscription plans
LicenseNot requiredRequired (syncs with kuploy.app)
QuotasNonePer-organization + aggregate
Admin dashboardBasicFull (Stripe, SMTP, theme, admins)
AuthenticationBasicBetter Auth (OAuth, 2FA, teams)

Rollback​

If you need to roll back to the OSS edition:

python deploy.py --edition oss --domain console.example.com
caution

Rolling back removes Cloud-specific features. Organizations, billing subscriptions, and Cloud-specific data remain in the database but won't be active.