Migreren vanaf Render
Verhuis Render-services met hun Postgres, omgevingsvariabelen en domeinen.
Op Render is elk onderdeel van een applicatie een eigen service: web service, background worker, private service, cron job. Op
Nodion bouw je één image en draai je daaruit meerdere processen in één applicatie; cronjobs horen bij de app. Nodion leest geen
render.yaml, dus je zet de instellingen met de hand over.
Wat vervangt wat
| Render | Nodion |
|---|---|
| Web service | Applicatie met het proces web |
| Background worker | Nog een proces van de app, zoals worker |
| Private service | Proces met een poort, intern bereikbaar op <app>-<process>.app.internal (krijgt ook een publieke hostnaam, zie stap 3) |
| Cron job (eigen service) | Cronjob op de app |
| Static site | Buildpack voor statische sites |
| Build command en start command | Buildpack-detectie en Procfile, of het commando van het proces |
| Pre-deploy command | Release command of release:-regel in de Procfile |
| Render Postgres | Managed Postgres, gekoppeld als DATABASE_URL |
| Render Key Value | Valkey, gekoppeld als REDIS_URL |
| Persistent disk | Volume |
| Preview environments, service previews | Previewomgevingen |
1. Maak het project en de database aan
Maak een project aan en daarin een PostgreSQL-database in de regio waar de app moet draaien. De app en de database moeten in dezelfde regio staan. Kies een Postgres-versie die minstens zo nieuw is als op Render. Meer bij Databases.
2. Kopieer de database
De externe database-URL staat op de Info-pagina van de Render-database; Render staat externe verbindingen alleen via TLS toe
(Render-docs). Stop het schrijven vanuit je
services en maak daarna de dump zoals de documentatie over backups
van Render laat zien. -n public neemt alleen het schema public mee; laat het weg als je app andere schema's gebruikt.
bashpg_dump --dbname="RENDER_EXTERNAL_DATABASE_URL" -n public --no-owner \
--format=directory --jobs=4 --compress=0 -f render.dump/ Open in Nodion het tabblad Overview van de database en klik op Enable public access. Zodra het endpoint niet meer de status Provisioning heeft, kopieer je de verbindings-URL (altijd TLS) en voeg je je eigen IP toe onder Allowed sources. Herstel daarna de database:
bashpg_restore --verbose --no-owner --no-privileges --jobs=4 --format=directory \
--dbname="postgresql://nodion:PASSWORD@HOST:PORT/DATABASE?sslmode=require" \
render.dump/
Gebruik een pg_restore die minstens zo nieuw is als de nieuwste van de twee servers. Controleer de aantallen rijen op het tabblad Browse en zet
daarna de publieke toegang weer uit; de database blijft intern draaien.
3. Maak de applicatie en de processen aan
Maak een applicatie aan vanuit de Git-repository van de web service. Bouwde Render met een build- en startcommando, gebruik dan de strategie
Buildpacks (Buildpacks); een Procfile legt de commando's vast, anders gelden de standaardinstellingen van de taal.
Draaide de service op Docker, gebruik dan de strategie Dockerfile.
Render zet PORT standaard op 10000. Nodion zet PORT voor het proces web van buildpack-apps
(standaard 8080); als je app PORT uitleest, hoef je niets aan te passen. Staat 10000 vast in de code, vervang het dan. Bij Dockerfile-apps zet Nodion
geen PORT; de app luistert op de poort van het proces web.
Voeg elke background worker uit dezelfde repo onder Processes, New process toe als extra proces en vul het startcommando in. Een
private service wordt ook een proces, met een poort. Let op: elk proces met een poort krijgt naast zijn interne adres een publieke
standaardhostnaam; een service die alleen privé bereikbaar is, bestaat niet. Bescherm zo'n poort in de app (bijvoorbeeld met authenticatie). De Nodion-hostnamen
kun je alleen voor de hele app uitzetten, zodra een eigen domein actief is. Een worker die alleen een queue verwerkt, heeft geen poort nodig. Verplaats een
pre-deploy command naar een release:-regel in de Procfile (buildpacks) of naar het release command van de app (Settings,
in de kaart Preview environments, waar het veld verschijnt zodra previews zijn ingeschakeld, of release_command via de API). Het draait één keer per deploy, vóór web; mislukt
het, dan blijft de vorige release live.
4. Zet de omgevingsvariabelen over
Render documenteert geen export van omgevingsvariabelen in het dashboard; de Render API geeft de variabelen van een service terug, maar niet die uit environment groups
(Render API-referentie, GET /services/{serviceId}/env-vars;
voor environment groups zie de Render-docs). Verzamel ze als
KEY=value-regels, inclusief de waarden uit environment groups, en plak ze in Environment, Add many.
Stel secrets in met nodion env set KEY=value --secret, en waarden over meerdere regels via de CLI of API. Nodion heeft geen
secret files: sla de inhoud op als geheime variabele (--secret) en laat de app die uit de variabele lezen of het bestand
zelf bij het opstarten schrijven. Secrets horen niet in de image, zoals ook Render waarschuwt.
Verwijder daarna de overgenomen DATABASE_URL en REDIS_URL: een variabele die je zelf instelt, overschrijft de waarde van een gekoppelde
database. Koppel de databases met Attach database. Binnen Nodion loopt de verbinding zonder TLS
(sslmode=disable); als je code SSL afdwingt, zet dat dan uit voor deze URL, en hetzelfde voor rediss:// naar Valkey.
5. Zet de cronjobs over
Een Render-cronjob is een eigen service met een schema in UTC (Render-docs). Op Nodion voeg je hem toe op het tabblad Cron van de app waarvan hij de code nodig heeft: een schema met vijf velden in UTC, het commando, een timeout van maximaal 30 minuten, maximaal 8 jobs per app. Als een run nog bezig is, slaat Nodion de volgende geplande start over.
6. Deploy, verhuis het domein, zet Render uit
Deploy en controleer het tabblad Logs. Voeg daarna het domein toe op het tabblad Domains en maak de twee records aan die Nodion toont: TXT
_nodion-challenge.your-domain en een CNAME (een ALIAS op de apex) naar de standaardhostnaam van de app. Nodion biedt geen doel voor een
A-record, dus op de apex moet je DNS-provider ALIAS, ANAME of CNAME-flattening ondersteunen. Het certificaat volgt zodra de CNAME naar Nodion wijst;
reken op een paar minuten zonder geldig certificaat en verlaag de TTL vooraf.
Als alles op Nodion draait, verwijder dan de Render-services (Render CLI). Render bewaart geen backups van een verwijderde database, dus bewaar je dump.
bashrender services delete my-service --confirm Het verwijderen van de service verwijdert niet de database of een Key Value-instantie. Op betaalde instanties schrijft Render Key Value standaard naar schijf (Render-docs): een lege Valkey volstaat alleen voor caches of queues die je eerst laat leeglopen; heb je de keys nodig, zet ze dan over voordat je de instantie verwijdert. Verwijder daarna zelf de Render Postgres-database, met Delete Database onderaan de Info-pagina (Render-docs), en ook elke Key Value-instantie; de CLI-commando's voor beide staan in de Render CLI-referentie.
Wat anders werkt
- Er zijn geen environment groups en geen secret files; elke variabele hoort bij één app.
- Workers en private services zijn processen van een app, geen eigen services.
- Cronjobs draaien op een bestaande app met de actieve release van die app.
- De CLI haalt logs op, maar kan ze niet live volgen; bekijk ze live op het tabblad Logs.
Verder
Nodion vergeleken met Render, Prijzen, Applicaties en Databases.