Render alternative for bots, workers and small web services
Render is a good platform with one catch for hobby projects: a free web service spins down after fifteen minutes without traffic and a background worker is never free. A Discord bot is a background worker. Here it runs free, always on, from the same repository.
Moving a Render service
- The repository is already on GitHub; connect it here.
- Copy the build and start commands from Render's settings into the app's page, or leave them blank and let the repository decide.
- Move environment variables across; the names stay the same.
- Deploy, then point your domain at the new address.
Bots and workers versus web services
A bot or a queue worker has no port and never spins down: that is the free tier. A web service gets an https address with its plan; on the free tier the address sleeps after idle time and wakes on the next request, much like Render's free plan, and a paid tier keeps it awake for nothing extra. A Render web service that is really a bot with a health endpoint bolted on can drop the endpoint.
Databases and files
Files under /data persist across deploys, which Render's free disk does not offer. A managed PostgreSQL, MySQL, MongoDB or Redis is one click and reachable over the private network only.
Frequently asked questions
Is there a render.yaml equivalent?
No blueprint file. The build and start commands, the branch and the environment live on the app's page, and the repository's own files drive detection.
Docker services?
A repository whose language the runtime table names deploys from source. Bring the app as source rather than as a Docker image.
How does the public address work?
Give the app a web address in the panel and it is served at https://name.fadehost.app behind the Cloudflare proxy with a certificate. It comes with the plan on every tier. On the free tier the address sleeps when nobody has used it for a while and wakes on the next request; on a paid tier it stays awake. Your own domain can point at it.
What happens on a deploy?
The repository is cloned at your branch, dependencies install, the build runs when there is one, the app starts. With auto-deploy on, every push does the same. The live console shows each step; a failed one is explained in plain words.