Node.js Hosting

Long-Running Processes, Not Lambdas

Deploy standard Node.js apps with git push.

Scale with gigalixir ps:scale.

Get the persistence of a real server without timeouts, cold starts, or execution limits.

Blue hexagonal nodes interconnected forming an abstract network with the word 'nodes' in lowercase letters at the center.

The "Persistent Process" Model

Modern Node.js hosting has largely shifted toward "Serverless" or "Edge" functions. While great for frontends, this model is hostile to robust backend architecture.

Serverless functions introduce cold starts, enforce hard execution timeouts (often 10-60 seconds), and sever connections aggressively.

Gigalixir rejects this constraint. We run your application as a standard, long-lived container.

Your process starts, stays running, and maintains its state until you deploy again.


Zero-Config Build Pipeline

You should not need to write a Dockerfile or configure a CI/CD pipeline to deploy a standard Node.js application.

We use industry-standard detection methods to identify your project and prepare it for production.

You focus on your package.json, and we handle the containerization and runtime environment.

Auto-Detected Toolchain

The build system reads the engines field in your package.json to determine exactly which version of Node.js and NPM or Yarn to install.

This ensures production runs on the exact same runtime version as your local development environment, eliminating "works on my machine" bugs.

Smart Dependency Caching

We automatically run npm install or yarn install during the build phase.

The node_modules directory is cached between deployments, so subsequent builds only download new or changed packages.

This significantly reduces deployment time for active projects.

Flexible Procfile Entry

Control exactly how your application launches using a standard Procfile.

Whether you run a compiled NestJS app (node dist/main.js), a standard Express server (npm start), or a background worker (node worker.js), you define the entry point explicitly.

You are not forced into a specific directory structure or export pattern.

Glowing digital document icon connected between two transparent server racks with purple light streams.

FAQs

The Questions We Get The Most at Gigalixir Support

Why should I use Gigalixir instead of Vercel or Netlify for Node.js?

Vercel and Netlify are optimized for frontend content and serverless functions.

They are excellent for static sites but impose strict limits on backend execution time (often 10 seconds) and lack support for persistent connections.

Gigalixir provides a traditional, long-running container environment. If you need WebSockets, background jobs, heavy processing, or a backend that stays online 24/7, Gigalixir is the correct architectural choice.

Can I run a Discord or Slack bot here?

Yes. Discord and Slack bots (especially those using the Gateway API) require a persistent WebSocket connection to receive events.

Serverless platforms cannot support this because they spin down when idle.

Gigalixir containers run continuously, maintaining the socket connection required for your bot to stay "online" and respond to user interactions instantly.

Do I need to build my frontend on Gigalixir?

You can, but Gigalixir is optimized for backend services.

If you have a decoupled architecture (e.g., a React SPA separate from an Express API), we often recommend hosting the static frontend on a CDN-based host and the API on Gigalixir.

However, if you are doing Server-Side Rendering (SSR) with frameworks like Next.js or Nuxt.js, Gigalixir works perfectly because the Node server stays running to handle the rendering requests.

How do I specify my Node version?

We respect the engines field in your package.json. Add a section like "engines": { "node": "18.x" } to your file.

Our buildpack will check this value and download the corresponding Node binary.

If you do not specify a version, we will default to a current stable release, but pinning a version is best practice for reproducibility.

How do I run background tasks?

You can run background logic in two ways.

For light tasks, you can run them inside your web process using setTimeout or cron libraries, since the process doesn't sleep.

For heavier work, you should define a separate worker entry in your Procfile (e.g., worker: npm run queue-worker) and scale it up.

This allows you to offload CPU-intensive work from your web server.

Still have questions?

Reach out directly to the Engineers who built Gigalixir to discuss your specific architecture, integration challenges, or compliance constraints here 👇

Ready to Get Started?
Choose Your Gigalixir Path

Free Tier

✓  1 App Replica (0.5 GB memory)
✓  Free Tier PostgreSQL Database
✓  Custom Domains & SSL
✓  Zero-downtime Deploys for secure database access.
Sign Up for a Free Gigalixir Account

Standard Tier

✓  SSH & Remote Console access
✓  No 30-day inactivity sleeps
✓  Clustering & Node Discovery
✓  HA Database & Read Replicas
Sign Up for a Standard Gigalixir Account

Trusted by Engineering Teams Everywhere

High-Performance Hosting for Modern Apps.

Stop fighting generic cloud infrastructure.

Whether you’re working with Elixir, Python, or Node.js, get the specialized support and performance your application deserves.