Migration guide

Move from Render to Naijacloud

Your web service, Postgres database, environment variables and domain running on Naijacloud, with the old service kept as a rollback.

About an hour of work, after a 48-hour wait for DNSDowntime: none to a few minutes, if you follow the orderLast verified 7 Oct 2026

What things are called here

On Render
On Naijacloud
RenderWeb Service
Web service
RenderStatic Site
Static site
RenderCron Job
Cron job, in UTC, up to 1 hour per run
RenderRender Postgres
Postgres database
RenderRender Key Value
Cache (Redis or Valkey)
RenderDocker image deploys
Web service from a Docker image
RenderBackground Worker
No worker type. Run it as a web service that also listens on PORT, or as a cron job
Renderrender.yaml (Blueprint)
No config file. Service settings in the dashboard or the CLI
RenderEnvironment Group
No shared groups. Set variables on each service
RenderPersistent Disk
No attached disks. Use object storage
RenderCustom Domains
Domains, with the certificate issued for you
RenderRegions
af-west · Port Harcourt, eu-west · Europe

Before you move: what Render has that we don't

  • Point-in-time recovery for Postgres.
  • Read replicas for Postgres.
  • A SOC 2 report.
  • Autoscaling.
  • Background workers as their own service type.
  • Persistent disks attached to a service.
  • Regions outside Africa and Europe.

If your app depends on one of these, stay on Render for now.

1

Lower the DNS TTL, 48 hours before

At your DNS provider, set the TTL on your domain’s record to 60 seconds. Then wait at least as long as the old TTL, which is often 24 to 48 hours, so resolvers stop holding the old answer.

Nothing else changes yet. Your visitors are still on Render.

2

Deploy here and add the domain

In the dashboard, create a project in the region closest to your users: af-west · Port Harcourt or eu-west · Europe. Add a Database first (Postgres, the same size class you use on Render) and copy its Internal URL from the is ready. screen.

Then add a Web service from the same GitHub repository and branch. Naijacloud detects the framework and fills in build and start commands; compare them with your Render service’s Build Command and Start Command and copy Render’s over where they differ. If you have a render.yaml, those two lines are in it.

For variables, open your Render service → Environment and copy the values. On the new service, open Variables → Bulk edit and paste them, one KEY=value per line, then Save variables. Set DATABASE_URL to the new database’s Internal URL, not Render’s. If you have the CLI and a .env file, naijacloud env import .env --service <name> does the same in one command.

Terminal
$ npm install -g @naijacloud/cli
$ naijacloud login
$ naijacloud env import .env --service my-app
$ naijacloud redeploy my-app

Open the app on its naijacloud.app address. It runs against an empty database for now; step 4 fills it. Then open Domains, enter your domain in Custom domain and click Add domain. Add the records it lists that prove ownership and issue the certificate. Don’t change the record that routes traffic yet.

3

Wait for the certificate

Where the Domains table lists ownership and HTTPS records, the certificate is issued while your traffic is still on Render. Wait until the domain shows Verified · HTTPS ready.

If the table lists only one routing record (an A record, as it does for a root domain and in some regions), there’s nothing to publish ahead of time: the certificate is issued in the minutes after the record points here. Plan the switch in step 5 for a quiet hour.

4

Copy the data

Use PostgreSQL 18 client tools (pg_dump, pg_restore and psql 18), which read Render’s older Postgres and write ours.

In Render, copy the External Database URL from the database’s Info page. Render accepts outside connections only from addresses on its access list, so add your IP there first. On Naijacloud, open the database’s Overview, add your IP under External access → Specific IPs and click Save, then switch the Connection card to External · TLS and copy the Connection URL.

Terminal
$ export RENDER_DATABASE_URL="postgresql://…render.com/app"
$ export NAIJACLOUD_DATABASE_URL="postgresql://…naijacloud.app:5432/app?sslmode=require"
$ pg_dump --format=custom --no-owner --no-acl \
"$RENDER_DATABASE_URL" -f app.dump
$ pg_restore --clean --if-exists --no-owner --no-acl \
--dbname "$NAIJACLOUD_DATABASE_URL" app.dump

--clean --if-exists replaces the empty tables your app’s migrations created in step 2. --no-owner --no-acl stops the restore assigning objects to Render’s roles, which don’t exist here.

How to know the restore is complete. Run analyze; on both databases first — n_live_tup is only an estimate until you do. Then compare the table list, exact counts on your two or three largest tables, the sequence values, and the extension list. Matching row counts with a sequence still sitting at 1 means the next insert will collide.

verify.sql · run on both, compare line for line
analyze;
select relname, n_live_tup from pg_stat_user_tables order by relname;
select count(*) from orders; -- your largest table
select last_value from orders_id_seq; -- sequences advanced
select extname from pg_extension order by 1; -- extensions present
Terminal
$ psql "$RENDER_DATABASE_URL" -f verify.sql
$ psql "$NAIJACLOUD_DATABASE_URL" -f verify.sql

Then test the app on its naijacloud.app address: sign in, save something, and open a page that reads from the database.

5

Switch DNS

At your DNS provider, change your domain’s routing record to the value shown in Domains, replacing Render’s. With a 60-second TTL, most visitors follow within a few minutes, and the domain reads Verified · HTTPS ready once its certificate is in place.

For a short time both platforms serve requests. Watch the logs on both until Render’s go quiet, and leave the domain attached on Render.

6

Keep the old service for 7 days

Suspend the Render web service instead of deleting it, and keep the Render database. If something goes wrong, point the record back at Render and resume the service.

CostSee the price differenceThe comparison page prices the same setup on Render and on Naijacloud, from the current price list.Naijacloud vs Render →
RollbackKeep these for 7 days
  • The Render web service, suspended, not deleted
  • The Render database
  • The app.dump file
  • The 60-second TTL on your record

To go back: point the record at Render again and resume the service.

Move one service first. Keep the old one running.

Start your move

Runs in af-west · Port Harcourt or eu-west · Europe