Introdução: por que fazer deploy de uma aplicação TypeScript em VPS é a escolha certa
O desenvolvimento com TypeScript se tornou padrão da indústria graças à tipagem estática e à legibilidade aprimorada do código. No entanto, após concluir o desenvolvimento, surge uma questão crucial: como implantar corretamente a aplicação em um servidor de produção? Fazer deploy de uma aplicação TypeScript em uma VPS (Virtual Private Server) não é apenas copiar arquivos. É um processo que envolve compilar TypeScript para JavaScript, configurar o ambiente, gerenciar processos e garantir segurança.
Neste artigo, vamos detalhar um algoritmo passo a passo para fazer deploy de uma aplicação TypeScript em uma VPS. Você aprenderá como preparar o servidor, configurar a build, iniciar a aplicação com o gerenciador de processos PM2 e garantir sua disponibilidade através do Nginx. O material é voltado para desenvolvedores que já possuem uma aplicação básica em TypeScript (por exemplo, Express.js ou NestJS) e desejam implantá-la em um servidor remoto.
Passo 1: Preparação da VPS e instalação do software necessário
A primeira etapa do deploy de uma aplicação TypeScript em VPS é configurar o próprio servidor. Usaremos Ubuntu 22.04 LTS por ser o SO mais estável e popular para servidores web.
Após conectar-se ao servidor via SSH, execute os seguintes comandos:
# Atualização de pacotessudo apt update && sudo apt upgrade -y
# Instalação do Node.js (versão 18 ou superior)curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt install -y nodejs
# Verificação das versõesnode -vnpm -v
# Instalação do Gitsudo apt install git -y
# Instalação do gerenciador de processos PM2npm install -g pm2Observação: o TypeScript não precisa ser instalado globalmente no servidor. Ele será usado apenas na etapa de build do projeto, que pode ser executada tanto na máquina local quanto no servidor através de scripts de CI/CD.
Também é recomendável configurar um firewall básico:
sudo ufw allow OpenSSHsudo ufw allow 'Nginx Full'sudo ufw enablePasso 2: Clonagem do projeto e build do TypeScript
Agora que o servidor está pronto, vamos transferir o código da aplicação TypeScript. A maneira mais comum é clonar o repositório via Git.
# Clonagem do repositóriogit clone https://github.com/your-username/your-project.gitcd your-project
# Instalação das dependênciasnpm install
# Compilação do TypeScript para JavaScriptnpx tscPonto importante: certifique-se de que no arquivo tsconfig.json a pasta de saída esteja corretamente especificada. Geralmente é dist ou build:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"]}Após a compilação bem-sucedida, o código JavaScript pronto para execução estará na pasta dist. Verifique se a aplicação inicia corretamente:
node dist/index.jsPasso 3: Inicialização com PM2 e configuração de inicialização automática
A inicialização simples com node não é adequada para produção — se a conexão SSH for interrompida, o processo será encerrado. Para fazer deploy de uma aplicação TypeScript em VPS, usamos o PM2, que oferece:
- Reinicialização automática após falha
- Registro de logs de erros e stdout
- Clusterização (execução em múltiplos núcleos de CPU)
Crie um arquivo ecosystem.config.js na raiz do projeto:
module.exports = { apps: [{ name: 'my-ts-app', script: './dist/index.js', instances: 'max', exec_mode: 'cluster', env: { NODE_ENV: 'production', PORT: 3000 }, error_file: './logs/err.log', out_file: './logs/out.log', merge_logs: true }]};Inicie a aplicação com o PM2:
pm2 start ecosystem.config.jspm2 savepm2