Criando e Executando um Projeto NestJS Localmente no macOS com ServBay
NestJS é um framework Node.js progressivo para construção de aplicações de servidor eficientes e escaláveis. Escrito em TypeScript e inspirado no Angular, o NestJS adota uma arquitetura modular e o padrão de injeção de dependências (DI). Ele oferece um conjunto potente de ferramentas e recursos para que os desenvolvedores construam aplicações complexas de maneira fácil, mantendo sempre a manutenção, o teste e o desacoplamento do código.
Principais Características e Benefícios do NestJS
- Arquitetura Modular: Organize seu código por módulos, tornando a estrutura do projeto mais clara e facilitando a manutenção.
- Injeção de Dependências: Sistema poderoso e simples de DI, que aumenta a testabilidade e manutenibilidade do código.
- Uso de TypeScript: Aproveita a tipagem estática, interfaces e outros recursos modernos do JavaScript, melhorando a produtividade e reduzindo erros em tempo de execução.
- Decorators Ricos: Utilize decoradores para definir controllers, serviços, módulos, etc., tornando o código mais conciso, declarativo e fácil de entender.
- Ecossistema Robusto: Uma comunidade ativa e muitos módulos/extensões de terceiros prontos para integrar TypeORM, Mongoose, GraphQL, WebSockets, cache, validação, entre outros.
- Baseado em Padrões: Construído sobre frameworks HTTP já consagrados como Express ou Fastify, garantindo performance e compatibilidade.
Com NestJS, é possível adotar as melhores práticas de desenvolvimento back-end (princípios SOLID, padrões de design) e construir rapidamente aplicações web, APIs e microsserviços de alto desempenho em nível corporativo.
Criando e Executando um Projeto NestJS com o ServBay
O ServBay fornece um ambiente local de desenvolvimento web integrado e poderoso para macOS, incluindo múltiplas versões do Node.js, bancos de dados populares e servidores web. Neste guia, utilizaremos o ambiente Node.js e o recurso “Sites” do ServBay para criar, rodar e configurar um projeto NestJS. Através do proxy reverso do ServBay, você acessa seu app NestJS local utilizando um domínio personalizado.
Pré-requisitos
Antes de começar, certifique-se de que as seguintes condições foram atendidas:
- ServBay Instalado: O ServBay já está instalado com sucesso no seu macOS.
- Node.js Habilitado: No painel do ServBay, na aba "Pacotes" (Packages), certifique-se de ativar e instalar a(s) versão(ões) de Node.js necessária(s). Caso ainda não tenha habilitado, veja o Guia de Uso do Node.js no ServBay.
Criando o Projeto NestJS
Instale o NestJS CLI Globalmente
Abra o Terminal e use o npm (instalado junto ao Node.js) para instalar globalmente o CLI do NestJS, ferramenta essencial para iniciar, desenvolver e manter aplicações NestJS.
bashnpm install -g @nestjs/cli1Inicialize o Projeto
Navegue até o diretório recomendado pelo ServBay para sites:
/Applications/ServBay/www. Esse é o local padrão para projetos hospedados pelo ServBay, facilitando a configuração posterior. Agora, crie um novo projeto utilizando o CLI do NestJS:bashcd /Applications/ServBay/www nest new servbay-nest-app1
2Após o comando, o NestJS CLI irá guiá-lo pelo processo de criação, incluindo escolha do gerenciador de pacotes (npm, yarn ou pnpm). Recomenda-se o npm para manter a consistência. O projeto será criado na pasta
/Applications/ServBay/www/servbay-nest-app.Instale as Dependências do Projeto
Acesse o diretório recém-criado
servbay-nest-appe instale os pacotes necessários:bashcd servbay-nest-app npm install1
2O comando
nest newjá executa onpm install, mas rodar novamente garante que tudo está atualizado e corretamente instalado.
Alterando a Resposta Raiz do Projeto NestJS (Opcional)
Para verificar se o projeto está rodando corretamente e acessível via ServBay, vamos alterar a resposta padrão da rota root do app.
Modifique o Arquivo
src/app.controller.tsAbra o arquivo
src/app.controller.tsno editor de sua preferência e edite o conteúdo conforme abaixo, para que a raíz (/) retorne "Hello ServBay!":typescriptimport { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; // Supondo que você manteve o AppService @Controller() export class AppController { constructor(private readonly appService: AppService) {} // Se manteve AppService @Get() getHello(): string { // return this.appService.getHello(); // Caso utilize o AppService return 'Hello ServBay!'; // Retorna a string diretamente } }1
2
3
4
5
6
7
8
9
10
11
12
13Esse código define um controller simples que responde à requisição HTTP GET na rota raiz com a string especificada.
Executando o Projeto no Modo de Desenvolvimento e Acessando Via ServBay
Projetos NestJS são geralmente executados em modo desenvolvimento por um servidor embutido, ouvindo em uma porta específica. No ServBay, criamos um site com proxy reverso apontando para a porta do app NestJS, e usamos um domínio personalizado para o acesso.
Inicie o Servidor de Desenvolvimento
Dentro do diretório do projeto
/Applications/ServBay/www/servbay-nest-app, utilize o comando abaixo para rodar o servidor em modo de desenvolvimento. Definimos a porta do app NestJS, por exemplo8585, via variável de ambientePORT:bashcd /Applications/ServBay/www/servbay-nest-app PORT=8585 npm run start:dev1
2O script
npm run start:devé padrão em projetos NestJS, rodando o código TypeScript viats-nodee monitorando alterações para recarregar automaticamente. O servidor irá escutar emlocalhost:8585.Configure o Proxy Reverso no ServBay
No painel do ServBay, acesse a aba "Sites" (Websites) e clique no botão de adicionar novo site (
+). Configure conforme abaixo:- Nome: Defina um nome fácil de identificar, por exemplo
My first NestJS dev site. - Domínio(s): O domínio local para acessar o projeto, ex:
servbay-nest-test.dev. O ServBay resolve automaticamente TLDs.devpara localhost, não sendo necessário editar o arquivo hosts. - Tipo: Selecione
Proxy Reverso (Reverse Proxy). - Endereço IP: Normalmente
127.0.0.1(loopback). - Porta: A porta escolhida para o NestJS, aqui
8585.
Salve a configuração. O ServBay irá atualizar automaticamente o web server (Caddy ou Nginx). Para detalhes, veja a documentação de como adicionar sites no ServBay.
- Nome: Defina um nome fácil de identificar, por exemplo
Acesse o Site em Modo de Desenvolvimento
Abra seu navegador e acesse o domínio que acabou de configurar:
https://servbay-nest-test.dev.Atenção:
- Por padrão, o ServBay gera e instala certificados SSL gratuitos para sites locais (emitidos pela CA do ServBay), permitindo acesso seguro via
https. Caso veja alertas de certificado, pode ser necessário confiar na "ServBay User CA". Veja Como usar SSL no ServBay. - Certifique-se de que o servidor NestJS (
PORT=8585 npm run start:dev) está rodando. Se parar, o domínio não responderá.
- Por padrão, o ServBay gera e instala certificados SSL gratuitos para sites locais (emitidos pela CA do ServBay), permitindo acesso seguro via
Build de Produção e Acesso via ServBay
Antes de disponibilizar a aplicação NestJS em produção (mesmo em simulação local), normalmente deve-se compilar o projeto.
Compile o Projeto para Produção
No diretório do projeto, execute:
bashcd /Applications/ServBay/www/servbay-nest-app npm run build1
2O comando compila todo o código TypeScript para a pasta
dist.Execute o Servidor em Produção
Após a build, utilize o comando abaixo para rodar o app NestJS em modo produção. Recomenda-se o uso do comando
nodepara executar o arquivo JS já compilado. Defina a porta, por exemplo8586, e a variável de ambienteNODE_ENV=production.bashcd /Applications/ServBay/www/servbay-nest-app PORT=8586 NODE_ENV=production node dist/main.js1
2Em produção, normalmente não há recarga automática.
Configure o Proxy Reverso para Produção no ServBay
No painel do ServBay, na aba "Sites", adicione ou edite uma configuração para apontar ao servidor de produção:
- Nome: Ex:
My first NestJS production site. - Domínio(s): Ex:
servbay-nest-test.prod. - Tipo:
Proxy Reverso (Reverse Proxy). - Endereço IP:
127.0.0.1. - Porta:
8586(igual à especificada no servidor).
Salve a configuração.
- Nome: Ex:
Acesse o Site em Produção
No navegador, digite
https://servbay-nest-test.prod. O site estará disponível com SSL via ServBay.
Conectando aos Bancos de Dados do ServBay
O ServBay possui suporte nativo a diversos bancos de dados: MariaDB (compatível MySQL), PostgreSQL, MongoDB e Redis. Ao desenvolver em NestJS, você pode facilmente conectar-se a esses bancos.
Importante: Antes de conectar, verifique no painel do ServBay, na aba "Pacotes", se o serviço do banco de dados desejado está ativado. Consulte o painel ou documentação para informações de portas, usuários e senhas padrão. Em ambiente de produção, altere as credenciais padrão e crie usuários específicos para segurança.
A seguir, exemplos de configuração das ORMs/libraries mais comuns em projetos NestJS, normalmente em AppModule ou módulos específicos de banco.
Conectando ao MongoDB
Usando
@nestjs/mongoose:bashnpm install @nestjs/mongoose mongoose1No módulo:
typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; // ... outros imports @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost:27017/servbay-nest-app'), // Porta padrão 27017 // ... outros módulos ], controllers: [], // ... providers: [], // ... }) export class AppModule {}1
2
3
4
5
6
7
8
9
10
11
12
13O ServBay utiliza a string padrão
mongodb://localhost:27017/. Use um cliente como MongoDB Compass oumongoshpara criar o bancoservbay-nest-appse necessário.Conectando ao Redis
Usando
@nestjs/redis:bashnpm install @nestjs/redis redis @types/redis1No módulo:
typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; // ... outros imports @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', // Porta padrão 6379 }), // ... outros módulos ], controllers: [], // ... providers: [], // ... }) export class AppModule {}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15O Redis no ServBay fica acessível em
localhost:6379.Conectando ao MariaDB (MySQL Compatível)
Usando
@nestjs/typeorm, lembrando que tantomariadbquantomysqlfuncionam:bashnpm install @nestjs/typeorm mysql2 typeorm1No módulo:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... outros imports @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', // ou 'mysql' host: 'localhost', port: 3306, // Padrão 3306 username: 'root', // Usuario padrão no ServBay password: 'password', // Senha padrão no ServBay database: 'servbay_nest_app', // Banco precisa ser criado antes entities: [], // Array das entidades synchronize: true, // Em DEV pode ser true, em produção cuidado }), // ... outros módulos ], controllers: [], // ... providers: [], // ... }) export class AppModule {}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Nota: O usuário root padrão do ServBay é
rootcom senhapassword. Use uma ferramenta (TablePlus, DBeaver ou MySQL CLI) para criar o bancoservbay_nest_app. Para segurança, troque a senha do root e utilize um usuário restrito.Conectando ao PostgreSQL
Usando
@nestjs/typeorm:bashnpm install @nestjs/typeorm pg typeorm1No módulo:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... outros imports @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, // Porta padrão 5432 username: 'servbay', // Exemplo, confira no painel/documentação password: 'password', // Exemplo, confira no painel/documentação database: 'servbay_nest_app', // Banco precisa ser criado antes entities: [], // Array das entidades synchronize: true, // Em DEV pode ser true, produção não recomendado }), // ... outros módulos ], controllers: [], // ... providers: [], // ... }) export class AppModule {}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Nota: Usuário/senha padrão do PostgreSQL no ServBay pode variar ("servbay" ou "postgres"). Confirme as credenciais exatas no painel/documentação do ServBay e crie o banco
servbay_nest_appse necessário. Em produção, altere as credenciais padrão.
Conclusão
Este guia mostrou como criar, executar e acessar projetos NestJS localmente no macOS usando o ServBay. Com o Node.js integrado, configuração facilitada de sites (principalmente via proxy reverso) e suporte a múltiplos bancos de dados, o ServBay simplifica totalmente o desenvolvimento e testes locais de aplicações NestJS. Você pode alternar facilmente entre ambientes de desenvolvimento e produção, acessando via domínios personalizados e HTTPS, além de conectar de maneira prática aos bancos poderosos que o ServBay disponibiliza.
