Linguagem Frankfurt, Alemanha

Faça deploy de Node.js na Nodion

Ligue um repositório com um package.json e a Nodion faz o build com o buildpack de Node.js: instala as dependências a partir do lockfile, executa o seu script build e inicia o servidor com o seu script start. É assim que funcionam o Express, o Fastify, o Hono e outros servidores Node.js, e também os projetos Bun. A aplicação é executada em Frankfurt, junto a uma base de dados PostgreSQL gerida, se precisar de uma.

Fazer deploy na Nodion ›

a partir de 1 EUR / mês

Até 15 € de crédito de boas-vindas no registo

Detetado por
package.json sem framework frontend estático
Arranque
script start, caso contrário node server.js, index.js ou app.js
Node.js
22, 24 (por omissão), 26
Região
EU Central (Frankfurt)

Faça deploy de Node.js passo a passo

  1. Escute em PORT A Nodion define PORT para o processo web e envia o tráfego para lá. Leia essa variável e ponha o servidor a escutar em 0.0.0.0. O Fastify escuta em localhost por omissão, por isso passe host: '0.0.0.0' a listen. server.js
    const express = require("express");
    
    const app = express();
    app.get("/", (req, res) => res.send("ok"));
    
    const port = process.env.PORT || 3000;
    app.listen(port, "0.0.0.0");
  2. Faça commit de um lockfile e de um script start Faça commit de package-lock.json, yarn.lock, pnpm-lock.yaml ou bun.lock; sem lockfile, o build falha. A Nodion executa o script start diretamente, por isso os hooks do npm como prestart não são executados. Sem script start, os frameworks conhecidos como o Nuxt têm o seu próprio comando predefinido; tudo o resto arranca com node server.js, index.js ou app.js e, em último caso, com node .. As dependências de desenvolvimento são removidas depois do build, por isso as ferramentas de que precisa em runtime, como tsx ou uma CLI de migrações, ficam em dependencies. package.json
    "scripts": {
      "start": "node server.js"
    }
  3. TypeScript: mantenha um ficheiro de entrada em JavaScript Se o package.json tiver um script build e não existir nenhum dos ficheiros server.js, app.js, index.js, src/server.js, src/index.js ou src/app.js, a Nodion trata o repositório como um site estático e não inicia o seu servidor. Um servidor TypeScript que o tsc compila para dist/ tem exatamente este aspeto. Adicione junto ao package.json um index.js que carregue o servidor compilado (o excerto precisa de "type": "module"; em CommonJS, escreva require("./dist/server.js")) e aponte o script start para o ficheiro compilado, por exemplo node dist/server.js, e não para uma ferramenta de desenvolvimento. index.js
    import "./dist/server.js";
  4. Crie a aplicação e defina as variáveis No dashboard, crie uma aplicação a partir do seu repositório GitHub, GitLab, Bitbucket ou Gitea e escolha o branch e a região EU Central. As variáveis que o seu script de build lê precisam da opção Build no separador Environment; todas as outras só existem em runtime. Marque as chaves de API como secretas.
  5. Associe o PostgreSQL e execute as migrações Crie uma base de dados PostgreSQL na mesma região e associe-a no separador Environment: a partir do próximo deploy, a sua aplicação lê DATABASE_URL. Uma linha release: num Procfile é executada uma vez por build, depois do build e antes de a nova versão arrancar; se falhar, a versão em execução continua online. Procfile
    release: npm run migrate
  6. Faça push para fazer deploy Cada push para o branch faz o build de uma nova release. O tráfego passa para ela assim que / responde com um estado 2xx ou 3xx. Se a sua API responder 404 em /, adicione uma rota como /health e defina-a como caminho do health check nas definições da aplicação.

A ter em conta

  • Vite no package.json significa site estáticoCom vite em dependencies ou devDependencies, a Nodion faz o build do repositório como site estático e publica apenas o resultado do build, mesmo que exista um server.js. O mesmo vale para Angular, Gatsby, Create React App e Eleventy. Para um servidor Node.js que também faz o build de um frontend Vite, use um Dockerfile.
  • BunCom um bun.lock, a Nodion instala as dependências e executa o build com o Bun. Mesmo assim, a aplicação arranca através do script start, por isso o script tem de chamar o Bun, por exemplo "start": "bun run index.ts"; sem script start, a Nodion inicia a aplicação com node. A regra do ficheiro de entrada acima também se aplica aos projetos Bun.
  • Workers de filasColoque web: node server.js e worker: node worker.js num Procfile; sem uma linha web:, a primeira entrada do Procfile que não seja release: passa a ser o comando predefinido. Depois, adicione no separador Processes um processo chamado worker sem porta. O Valkey na mesma região dá à sua fila um REDIS_URL.

O que a Nodion gere por si

  • Deploys sem downtime Faça push para o seu branch e a Nodion cria uma nova release. O tráfego só muda quando as novas instâncias passam no health check; se uma release falhar, a que está em execução mantém-se. Em vez disso, as aplicações com um volume local são reiniciadas, porque o disco pertence a uma única instância.
  • Bases de dados junto à aplicação PostgreSQL, pgvector, MySQL, Valkey e ClickHouse geridos, na mesma região. As bases de dados associadas chegam como DATABASE_URL, REDIS_URL ou CLICKHOUSE_URL.
  • Pré-visualizações por pull request Ative as pré-visualizações e cada pull request do seu repositório passa a ter uma aplicação própria, com URL próprio e bases de dados novas e vazias, criada automática ou manualmente. Os forks e os pull requests de bots são ignorados.
  • Workers, cron jobs e escalabilidade Execute workers como processos adicionais da mesma aplicação, agende tarefas no separador Cron e escale cada processo até 16 instâncias.
  • Etapa de release Com buildpacks, uma linha release: do Procfile é executada a cada novo build. As aplicações com Dockerfile, bem como os redeploys ou rollbacks para uma imagem anterior, usam um comando de release definido na própria aplicação, que também tem prioridade sobre a linha do Procfile. Nos sites estáticos, a etapa de release é executada numa imagem que contém apenas os ficheiros gerados pelo build.
  • Logs e métricas Logs de build, release e runtime, além de métricas de CPU, memória, disco e rede de cada instância, no dashboard.
  • Domínios e HTTPS Um hostname atribuído por omissão com HTTPS desde o primeiro deploy; os seus próprios domínios recebem certificados automaticamente.

Para saber mais

Node.js na Nodion: perguntas e respostas

Porque é que o meu servidor Node.js é construído como site estático?

A Nodion encontrou um script build mas nenhum dos ficheiros de entrada server.js, app.js ou index.js (também procurados em src/), ou então um framework frontend estático como o Vite no package.json. Adicione junto ao package.json um index.js que carregue o seu servidor compilado; com o Vite no mesmo package.json, use um Dockerfile.

Que versão do Node.js usa a minha aplicação?

Node.js 24, a menos que escolha outra. A Nodion lê .node-version, .nvmrc e engines.node, por esta ordem. Um intervalo resolve-se para a versão compatível mais recente, por isso "node": ">=20" fica com Node.js 26; escreva 24 no .nvmrc para ficar na 24.

Posso usar pnpm, Yarn ou Bun?

Sim. A Nodion escolhe o gestor de pacotes a partir do lockfile (pnpm-lock.yaml, yarn.lock, bun.lock ou package-lock.json) e instala exatamente as versões que ele indica. Os projetos Bun também precisam de um script start que chame bun.

Onde corre a minha aplicação Node.js?

Na região EU Central, em Frankfurt (Alemanha). O build, o registry, a aplicação e as respetivas bases de dados, volumes, buckets, logs e métricas ficam nessa região, e a API e o plano de controlo da Nodion estão alojados na Alemanha. A Nodion GmbH tem sede em Stuttgart.

Posso usar Node.js em conformidade com o RGPD?

A Nodion cria as condições para isso: a Nodion GmbH tem sede em Stuttgart (Alemanha); na região de Frankfurt, a aplicação, as bases de dados e os volumes são executados na Alemanha. O acordo de tratamento de dados (DPA, art. 28.º do RGPD) é celebrado eletronicamente no dashboard. A conformidade da sua utilização depende também da forma como configura e utiliza a aplicação.

Quanto custa executar Node.js na Nodion?

Uma instância da aplicação custa a partir de 1 EUR por mês. A configuração apresentada no quadro de custos custa 3.50 EUR por mês: Aplicação 2 EUR, PostgreSQL 1.50 EUR. Os preços não incluem IVA e a faturação é ao segundo. Pode escolher tamanhos maiores ou mais instâncias sempre que precisar.

Posso usar o meu próprio domínio na minha aplicação Node.js?

Sim. Cada aplicação recebe um hostname atribuído por omissão com HTTPS. Adicione o seu próprio domínio no separador Domains da aplicação; o certificado TLS é emitido e renovado automaticamente.

Dê uma cloud ao seu agente.

Ganhe até 15 € de crédito ao registar-se.

Continuar com o GitHub

ou com e-mail

Fique a par das novidades.

Novidades do produto, sem spam. Pode cancelar a subscrição a qualquer momento.